ETH Price: $2,277.28 (-3.66%)

Token

War Game Betting Token (WAR)
 

Overview

Max Total Supply

9,999,998.4 WAR

Holders

73

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
24,740.71819536 WAR

Value
$0.00
0x194a8d4f7bc75e569ca971025ba433762b3d3b11
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
WarGame

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-28
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

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

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

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

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

/**
 * @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 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) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @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.
 */
abstract 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() {
        _transferOwnership(_msgSender());
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

/**
 * @title WarGame
 * @dev Betting token for War Game
 */
contract WarGame is Ownable, ERC20 {

    IUniswapV2Router02 public router;
    IUniswapV2Factory public factory;
    IUniswapV2Pair public pair;

    uint private constant INITIAL_SUPPLY = 10_000_000 * 10**8;

    // Percent of the initial supply that will go to the LP
    uint constant LP_BPS = 9500;

    // Percent of the initial supply that will go to marketing
    uint constant MARKETING_BPS = 10_000 - LP_BPS;

    //
    // The tax to deduct, in basis points
    //
    uint public buyTaxBps = 500;
    uint public sellTaxBps = 500;
    //
    bool isSellingCollectedTaxes;

    event AntiBotEngaged();
    event AntiBotDisengaged();
    event StealthLaunchEngaged();

    address public cardGameContract;

    bool public isLaunched;

    address public myWallet;
    address public marketingWallet;
    address public revenueWallet;

    bool public engagedOnce;
    bool public disengagedOnce;

    constructor() ERC20("War Game Betting Token", "WAR", 8) {
        if (isGoerli()) {
            router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (isSepolia()) {
            router = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008);
        } else {
            require(block.chainid == 1, "expected mainnet");
            router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        }
        factory = IUniswapV2Factory(router.factory());

        // Approve infinite spending by DEX, to sell tokens collected via tax.
        allowance[address(this)][address(router)] = type(uint).max;
        emit Approval(address(this), address(router), type(uint).max);

        isLaunched = false;
    }

    modifier lockTheSwap() {
        isSellingCollectedTaxes = true;
        _;
        isSellingCollectedTaxes = false;
    }

    modifier onlyTestnet() {
        require(isTestnet(), "not testnet");
        _;
    }

    receive() external payable {}

    fallback() external payable {}

    function burn(uint amount) external {
        _burn(msg.sender, amount);
    }

    /**
     * @dev Allow minting on testnet so I don't have to deal with
     * buying from Uniswap.
     * @param amount the number of tokens to mint
     */
    function mint(uint amount) external onlyTestnet {
        _mint(address(msg.sender), amount);
    }

    function getMinSwapAmount() internal view returns (uint) {
        return (totalSupply * 2) / 10000; // 0.02%
    }

    function isGoerli() public view returns (bool) {
        return block.chainid == 5;
    }

    function isSepolia() public view returns (bool) {
        return block.chainid == 11155111;
    }

    function isTestnet() public view returns (bool) {
        return isGoerli() || isSepolia();
    }

    function enableAntiBotMode() public onlyOwner {
        require(!engagedOnce, "this is a one shot function");
        engagedOnce = true;
        buyTaxBps = 1000;
        sellTaxBps = 1000;
        emit AntiBotEngaged();
    }

    function disableAntiBotMode() public onlyOwner {
        require(!disengagedOnce, "this is a one shot function");
        disengagedOnce = true;
        buyTaxBps = 500;
        sellTaxBps = 500;
        emit AntiBotDisengaged();
    }

    /**
     * @dev Does the same thing as a max approve for the war game
     * contract, but takes as input a secret that the bot uses to
     * verify ownership by a Telegram user.
     * @param secret The secret that the bot is expecting.
     * @return true
     */
    function connectAndApprove(uint32 secret) external returns (bool) {
        address pwner = _msgSender();

        allowance[pwner][cardGameContract] = type(uint).max;
        emit Approval(pwner, cardGameContract, type(uint).max);

        return true;
    }

    function setCardGameContract(address a) public onlyOwner {
        require(a != address(0), "null address");
        cardGameContract = a;
    }

    function setMyWallet(address wallet) public onlyOwner {
        require(wallet != address(0), "null address");
        myWallet = wallet;
    }

    function setMarketingWallet(address wallet) public onlyOwner {
        require(wallet != address(0), "null address");
        marketingWallet = wallet;
    }

    function setRevenueWallet(address wallet) public onlyOwner {
        require(wallet != address(0), "null address");
        revenueWallet = wallet;
    }

    function stealthLaunch() external payable onlyOwner {
        require(!isLaunched, "already launched");
        require(myWallet != address(0), "null address");
        require(marketingWallet != address(0), "null address");
        require(revenueWallet != address(0), "null address");
        require(cardGameContract != address(0), "null address");
        isLaunched = true;

        _mint(address(this), INITIAL_SUPPLY * LP_BPS / 10_000);

        router.addLiquidityETH{ value: msg.value }(
            address(this),
            balanceOf[address(this)],
            0,
            0,
            owner(),
            block.timestamp);

        pair = IUniswapV2Pair(factory.getPair(address(this), router.WETH()));

        _mint(marketingWallet, INITIAL_SUPPLY * MARKETING_BPS / 10_000);

        require(totalSupply == INITIAL_SUPPLY, "numbers don't add up");

        // So I don't have to deal with Uniswap when testing
        if (isTestnet()) {
            _mint(address(msg.sender), 10_000 * 10**decimals);
        }

        emit StealthLaunchEngaged();
    }

    /**
     * @dev Calculate the amount of tax to apply to a transaction.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity of tokens being sent
     * @return the amount of tokens to withhold for taxes
     */
    function calcTax(address from, address to, uint amount) internal view returns (uint) {
        if (from == owner() || to == owner() || from == address(this)) {
            // For adding liquidity at the beginning
            //
            // Also for this contract selling the collected tax.
            return 0;
        } else if (from == address(pair)) {
            // Buy from DEX, or adding liquidity.
            return amount * buyTaxBps / 10_000;
        } else if (to == address(pair)) {
            // Sell from DEX, or removing liquidity.
            return amount * sellTaxBps / 10_000;
        } else {
            // Sending to other wallets (e.g. OTC) is tax-free.
            return 0;
        }
    }

    /**
     * @dev Sell the balance accumulated from taxes.
     */
    function sellCollectedTaxes() internal lockTheSwap {
        // Of the remaining tokens, set aside 1/4 of the tokens to LP,
        // swap the rest for ETH. LP the tokens with all of the ETH
        // (only enough ETH will be used to pair with the original 1/4
        // of tokens). Send the remaining ETH (about half the original
        // balance) to my wallet.

        uint tokensForLiq = balanceOf[address(this)] / 5;
        uint tokensToSwap = balanceOf[address(this)] - tokensForLiq;

        // Sell
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokensToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint EthforLP = address(this).balance / 4;

        router.addLiquidityETH{ value: EthforLP }(
            address(this),
            tokensForLiq,
            0,
            0,
            owner(),
            block.timestamp);

        myWallet.call{value: address(this).balance}("");
    }

    /**
     * @dev Transfer tokens from the caller to another address.
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transfer(address to, uint amount) public override returns (bool) {
        return transferFrom(msg.sender, to, amount);
    }

    /**
     * @dev Transfer tokens from one address to another. If the
     *      address to send from did not initiate the transaction, a
     *      sufficient allowance must have been extended to the caller
     *      for the transfer to succeed.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transferFrom(
        address from,
        address to,
        uint amount
    ) public override returns (bool) {
        if (from != msg.sender) {
            // This is a typical transferFrom

            uint allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

            if (allowed != type(uint).max) allowance[from][msg.sender] = allowed - amount;
        }

        // Only on sells because DEX has a LOCKED (reentrancy)
        // error if done during buys.
        //
        // isSellingCollectedTaxes prevents an infinite loop.
        if (balanceOf[address(this)] > getMinSwapAmount() && !isSellingCollectedTaxes && from != address(pair) && from != address(this)) {
            sellCollectedTaxes();
        }

        uint tax = calcTax(from, to, amount);
        uint afterTaxAmount = amount - tax;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint value.
        unchecked {
            balanceOf[to] += afterTaxAmount;
        }

        emit Transfer(from, to, afterTaxAmount);

        if (tax > 0) {
            // Use 1/5 of tax for revenue


            unchecked {
                balanceOf[address(this)] += tax;
            }

            // Any transfer to the contract can be viewed as tax
            emit Transfer(from, address(this), tax);
        }

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"AntiBotDisengaged","type":"event"},{"anonymous":false,"inputs":[],"name":"AntiBotEngaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":[],"name":"StealthLaunchEngaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cardGameContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"secret","type":"uint32"}],"name":"connectAndApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disengagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"engagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGoerli","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSepolia","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTestnet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"myWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"setCardGameContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stealthLaunch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"","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":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526101f4600a556101f4600b553480156200001d57600080fd5b506040518060400160405280601681526020017f5761722047616d652042657474696e6720546f6b656e000000000000000000008152506040518060400160405280600381526020017f57415200000000000000000000000000000000000000000000000000000000008152506008620000ac620000a0620004e060201b60201c565b620004e860201b60201c565b8260019081620000bd9190620008ce565b508160029081620000cf9190620008ce565b508060ff1660808160ff16815250504660a08181525050620000f6620005ac60201b60201c565b60c08181525050505050620001106200063c60201b60201c565b156200017157737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200027f565b620001816200064760201b60201c565b15620001e25773c532a74256d3db42d0bf7a0400fefdbad7694008600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200027e565b6001461462000228576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021f9062000a16565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000313919062000aa2565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051620004b7919062000ae5565b60405180910390a36000600c60156101000a81548160ff02191690831515021790555062000c53565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051620005e0919062000bb1565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200062195949392919062000bf6565b60405160208183030381529060405280519060200120905090565b600060054614905090565b600062aa36a74614905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006d657607f821691505b602082108103620006ec57620006eb6200068e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000717565b62000762868362000717565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007af620007a9620007a3846200077a565b62000784565b6200077a565b9050919050565b6000819050919050565b620007cb836200078e565b620007e3620007da82620007b6565b84845462000724565b825550505050565b600090565b620007fa620007eb565b62000807818484620007c0565b505050565b5b818110156200082f5762000823600082620007f0565b6001810190506200080d565b5050565b601f8211156200087e576200084881620006f2565b620008538462000707565b8101602085101562000863578190505b6200087b620008728562000707565b8301826200080c565b50505b505050565b600082821c905092915050565b6000620008a36000198460080262000883565b1980831691505092915050565b6000620008be838362000890565b9150826002028217905092915050565b620008d98262000654565b67ffffffffffffffff811115620008f557620008f46200065f565b5b620009018254620006bd565b6200090e82828562000833565b600060209050601f83116001811462000946576000841562000931578287015190505b6200093d8582620008b0565b865550620009ad565b601f1984166200095686620006f2565b60005b82811015620009805784890151825560018201915060208501945060208101905062000959565b86831015620009a057848901516200099c601f89168262000890565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f6578706563746564206d61696e6e657400000000000000000000000000000000600082015250565b6000620009fe601083620009b5565b915062000a0b82620009c6565b602082019050919050565b6000602082019050818103600083015262000a3181620009ef565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a6a8262000a3d565b9050919050565b62000a7c8162000a5d565b811462000a8857600080fd5b50565b60008151905062000a9c8162000a71565b92915050565b60006020828403121562000abb5762000aba62000a38565b5b600062000acb8482850162000a8b565b91505092915050565b62000adf816200077a565b82525050565b600060208201905062000afc600083018462000ad4565b92915050565b600081905092915050565b60008190508160005260206000209050919050565b6000815462000b3181620006bd565b62000b3d818662000b02565b9450600182166000811462000b5b576001811462000b715762000ba8565b60ff198316865281151582028601935062000ba8565b62000b7c8562000b0d565b60005b8381101562000ba05781548189015260018201915060208101905062000b7f565b838801955050505b50505092915050565b600062000bbf828462000b22565b915081905092915050565b6000819050919050565b62000bdf8162000bca565b82525050565b62000bf08162000a5d565b82525050565b600060a08201905062000c0d600083018862000bd4565b62000c1c602083018762000bd4565b62000c2b604083018662000bd4565b62000c3a606083018562000ad4565b62000c49608083018462000be5565b9695505050505050565b60805160a05160c051613e5362000c8a600039600061174c01526000611718015260008181610f9a01526116f20152613e536000f3fe60806040526004361061023f5760003560e01c80637f50ce171161012e578063c473413a116100ab578063f2fde38b1161006f578063f2fde38b14610854578063f887ea401461087d578063f98eb6e1146108a8578063fb235f34146108bf578063fea9e942146108e857610246565b8063c473413a1461075b578063cffd129c14610786578063d505accf146107b1578063dd62ed3e146107da578063eec1c69f1461081757610246565b8063a8aa1b31116100f2578063a8aa1b3114610672578063a9059cbb1461069d578063b3e5cb45146106da578063b880b69a14610705578063c45a01551461073057610246565b80637f50ce171461059d5780638da5cb5b146105c857806392108c86146105f357806395d89b411461061e578063a0712d681461064957610246565b80633644e515116101bc578063715018a611610180578063715018a6146104c857806371f7e654146104df57806375f0a8741461050a5780637d5ea21b146105355780637ecebe001461056057610246565b80633644e515146103e357806342966c681461040e57806344478425146104375780635d098b381461046257806370a082311461048b57610246565b806323b872dd1161020357806323b872dd1461030e578063270fd20a1461034b5780632ca1b45d14610376578063307aebc91461038d578063313ce567146103b857610246565b806306fdde031461024857806307df7a0d14610273578063095ea7b31461027d57806318160ddd146102ba5780631adf3e37146102e557610246565b3661024657005b005b34801561025457600080fd5b5061025d610911565b60405161026a9190612c60565b60405180910390f35b61027b61099f565b005b34801561028957600080fd5b506102a4600480360381019061029f9190612d1b565b611006565b6040516102b19190612d76565b60405180910390f35b3480156102c657600080fd5b506102cf6110f8565b6040516102dc9190612da0565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190612dbb565b6110fe565b005b34801561031a57600080fd5b5061033560048036038101906103309190612de8565b6111b9565b6040516103429190612d76565b60405180910390f35b34801561035757600080fd5b50610360611617565b60405161036d9190612d76565b60405180910390f35b34801561038257600080fd5b5061038b61162a565b005b34801561039957600080fd5b506103a26116dd565b6040516103af9190612d76565b60405180910390f35b3480156103c457600080fd5b506103cd6116f0565b6040516103da9190612e57565b60405180910390f35b3480156103ef57600080fd5b506103f8611714565b6040516104059190612e8b565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190612ea6565b611771565b005b34801561044357600080fd5b5061044c61177e565b6040516104599190612ee2565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612dbb565b6117a4565b005b34801561049757600080fd5b506104b260048036038101906104ad9190612dbb565b61185f565b6040516104bf9190612da0565b60405180910390f35b3480156104d457600080fd5b506104dd611877565b005b3480156104eb57600080fd5b506104f461188b565b6040516105019190612ee2565b60405180910390f35b34801561051657600080fd5b5061051f6118b1565b60405161052c9190612ee2565b60405180910390f35b34801561054157600080fd5b5061054a6118d7565b6040516105579190612d76565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612dbb565b6118ea565b6040516105949190612da0565b60405180910390f35b3480156105a957600080fd5b506105b2611902565b6040516105bf9190612d76565b60405180910390f35b3480156105d457600080fd5b506105dd61190f565b6040516105ea9190612ee2565b60405180910390f35b3480156105ff57600080fd5b50610608611938565b6040516106159190612d76565b60405180910390f35b34801561062a57600080fd5b50610633611956565b6040516106409190612c60565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612ea6565b6119e4565b005b34801561067e57600080fd5b50610687611a38565b6040516106949190612f5c565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190612d1b565b611a5e565b6040516106d19190612d76565b60405180910390f35b3480156106e657600080fd5b506106ef611a73565b6040516106fc9190612d76565b60405180910390f35b34801561071157600080fd5b5061071a611a7e565b6040516107279190612ee2565b60405180910390f35b34801561073c57600080fd5b50610745611aa4565b6040516107529190612f98565b60405180910390f35b34801561076757600080fd5b50610770611aca565b60405161077d9190612da0565b60405180910390f35b34801561079257600080fd5b5061079b611ad0565b6040516107a89190612da0565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d3919061300b565b611ad6565b005b3480156107e657600080fd5b5061080160048036038101906107fc91906130ad565b611dcf565b60405161080e9190612da0565b60405180910390f35b34801561082357600080fd5b5061083e60048036038101906108399190613129565b611df4565b60405161084b9190612d76565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190612dbb565b611f75565b005b34801561088957600080fd5b50610892611ff8565b60405161089f9190613177565b60405180910390f35b3480156108b457600080fd5b506108bd61201e565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190612dbb565b6120d1565b005b3480156108f457600080fd5b5061090f600480360381019061090a9190612dbb565b61218c565b005b6001805461091e906131c1565b80601f016020809104026020016040519081016040528092919081815260200182805461094a906131c1565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b505050505081565b6109a7612247565b600c60159054906101000a900460ff16156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee9061323e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f906132aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b10906132aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba1906132aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c32906132aa565b60405180910390fd5b6001600c60156101000a81548160ff021916908315150217905550610c813061271061251c66038d7ea4c68000610c7291906132f9565b610c7c919061336a565b6122c5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600080610d0c61190f565b426040518863ffffffff1660e01b8152600401610d2e969594939291906133d6565b60606040518083038185885af1158015610d4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d71919061344c565b505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4491906134b4565b6040518363ffffffff1660e01b8152600401610e619291906134e1565b602060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea291906134b4565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f3c600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661271061251c612710610f1b919061350a565b66038d7ea4c68000610f2d91906132f9565b610f37919061336a565b6122c5565b66038d7ea4c6800060035414610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e9061358a565b60405180910390fd5b610f8f611938565b15610fd857610fd7337f0000000000000000000000000000000000000000000000000000000000000000600a610fc591906136dd565b612710610fd291906132f9565b6122c5565b5b7f0887e4063f397b46bca5f33853dd1a946a3b32547bf9cb3b3063bd9db9d8bdfe60405160405180910390a1565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110e69190612da0565b60405180910390a36001905092915050565b60035481565b611106612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c906132aa565b60405180910390fd5b80600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611325576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113235782816112a2919061350a565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b61132d612395565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156113875750600c60009054906101000a900460ff16155b80156113e15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561141957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611427576114266123b8565b5b60006114348585856127f5565b905060008184611444919061350a565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611495919061350a565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115469190612da0565b60405180910390a3600082111561160a5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116019190612da0565b60405180910390a35b6001925050509392505050565b600f60159054906101000a900460ff1681565b611632612247565b600f60149054906101000a900460ff1615611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613774565b60405180910390fd5b6001600f60146101000a81548160ff0219169083151502179055506103e8600a819055506103e8600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b600c60159054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000461461174a576117456129a8565b61176c565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b61177b3382612a34565b50565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117ac612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361181b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611812906132aa565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915090505481565b61187f612247565b6118896000612b04565b565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60149054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b600062aa36a74614905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611942611a73565b806119515750611950611902565b5b905090565b60028054611963906131c1565b80601f016020809104026020016040519081016040528092919081815260200182805461198f906131c1565b80156119dc5780601f106119b1576101008083540402835291602001916119dc565b820191906000526020600020905b8154815290600101906020018083116119bf57829003601f168201915b505050505081565b6119ec611938565b611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22906137e0565b60405180910390fd5b611a3533826122c5565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a6b3384846111b9565b905092915050565b600060054614905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b42841015611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b109061384c565b60405180910390fd5b60006001611b25611714565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001611bad9695949392919061386c565b60405160208183030381529060405280519060200120604051602001611bd4929190613945565b6040516020818303038152906040528051906020012085858560405160008152602001604052604051611c0a949392919061397c565b6020604051602081039080840390855afa158015611c2c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611ca057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613a0d565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611dbe9190612da0565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600080611dff612bc8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051611f639190612da0565b60405180910390a36001915050919050565b611f7d612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390613a9f565b60405180910390fd5b611ff581612b04565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612026612247565b600f60159054906101000a900460ff1615612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90613774565b60405180910390fd5b6001600f60156101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b6120d9612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f906132aa565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612194612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa906132aa565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61224f612bc8565b73ffffffffffffffffffffffffffffffffffffffff1661226d61190f565b73ffffffffffffffffffffffffffffffffffffffff16146122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90613b0b565b60405180910390fd5b565b80600360008282546122d79190613b2b565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123899190612da0565b60405180910390a35050565b600061271060026003546123a991906132f9565b6123b3919061336a565b905090565b6001600c60006101000a81548160ff02191690831515021790555060006005600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612421919061336a565b9050600081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612470919061350a565b90506000600267ffffffffffffffff81111561248f5761248e613b5f565b5b6040519080825280602002602001820160405280156124bd5781602001602082028036833780820191505090505b50905030816000815181106124d5576124d4613b8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a091906134b4565b816001815181106125b4576125b3613b8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612652959493929190613c7b565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b505050506000600447612693919061336a565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230876000806126e161190f565b426040518863ffffffff1660e01b8152600401612703969594939291906133d6565b60606040518083038185885af1158015612721573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612746919061344c565b505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161278f90613d06565b60006040518083038185875af1925050503d80600081146127cc576040519150601f19603f3d011682016040523d82523d6000602084013e6127d1565b606091505b505050505050506000600c60006101000a81548160ff021916908315150217905550565b60006127ff61190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061286a575061283b61190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806128a057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156128ae57600090506129a1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361292557612710600a548361291491906132f9565b61291e919061336a565b90506129a1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361299c57612710600b548361298b91906132f9565b612995919061336a565b90506129a1565b600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60016040516129da9190613db3565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001612a19959493929190613dca565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a83919061350a565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612af89190612da0565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c0a578082015181840152602081019050612bef565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c3282612bd0565b612c3c8185612bdb565b9350612c4c818560208601612bec565b612c5581612c16565b840191505092915050565b60006020820190508181036000830152612c7a8184612c27565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb282612c87565b9050919050565b612cc281612ca7565b8114612ccd57600080fd5b50565b600081359050612cdf81612cb9565b92915050565b6000819050919050565b612cf881612ce5565b8114612d0357600080fd5b50565b600081359050612d1581612cef565b92915050565b60008060408385031215612d3257612d31612c82565b5b6000612d4085828601612cd0565b9250506020612d5185828601612d06565b9150509250929050565b60008115159050919050565b612d7081612d5b565b82525050565b6000602082019050612d8b6000830184612d67565b92915050565b612d9a81612ce5565b82525050565b6000602082019050612db56000830184612d91565b92915050565b600060208284031215612dd157612dd0612c82565b5b6000612ddf84828501612cd0565b91505092915050565b600080600060608486031215612e0157612e00612c82565b5b6000612e0f86828701612cd0565b9350506020612e2086828701612cd0565b9250506040612e3186828701612d06565b9150509250925092565b600060ff82169050919050565b612e5181612e3b565b82525050565b6000602082019050612e6c6000830184612e48565b92915050565b6000819050919050565b612e8581612e72565b82525050565b6000602082019050612ea06000830184612e7c565b92915050565b600060208284031215612ebc57612ebb612c82565b5b6000612eca84828501612d06565b91505092915050565b612edc81612ca7565b82525050565b6000602082019050612ef76000830184612ed3565b92915050565b6000819050919050565b6000612f22612f1d612f1884612c87565b612efd565b612c87565b9050919050565b6000612f3482612f07565b9050919050565b6000612f4682612f29565b9050919050565b612f5681612f3b565b82525050565b6000602082019050612f716000830184612f4d565b92915050565b6000612f8282612f29565b9050919050565b612f9281612f77565b82525050565b6000602082019050612fad6000830184612f89565b92915050565b612fbc81612e3b565b8114612fc757600080fd5b50565b600081359050612fd981612fb3565b92915050565b612fe881612e72565b8114612ff357600080fd5b50565b60008135905061300581612fdf565b92915050565b600080600080600080600060e0888a03121561302a57613029612c82565b5b60006130388a828b01612cd0565b97505060206130498a828b01612cd0565b965050604061305a8a828b01612d06565b955050606061306b8a828b01612d06565b945050608061307c8a828b01612fca565b93505060a061308d8a828b01612ff6565b92505060c061309e8a828b01612ff6565b91505092959891949750929550565b600080604083850312156130c4576130c3612c82565b5b60006130d285828601612cd0565b92505060206130e385828601612cd0565b9150509250929050565b600063ffffffff82169050919050565b613106816130ed565b811461311157600080fd5b50565b600081359050613123816130fd565b92915050565b60006020828403121561313f5761313e612c82565b5b600061314d84828501613114565b91505092915050565b600061316182612f29565b9050919050565b61317181613156565b82525050565b600060208201905061318c6000830184613168565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131d957607f821691505b6020821081036131ec576131eb613192565b5b50919050565b7f616c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000613228601083612bdb565b9150613233826131f2565b602082019050919050565b600060208201905081810360008301526132578161321b565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000613294600c83612bdb565b915061329f8261325e565b602082019050919050565b600060208201905081810360008301526132c381613287565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330482612ce5565b915061330f83612ce5565b925082820261331d81612ce5565b91508282048414831517613334576133336132ca565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061337582612ce5565b915061338083612ce5565b9250826133905761338f61333b565b5b828204905092915050565b6000819050919050565b60006133c06133bb6133b68461339b565b612efd565b612ce5565b9050919050565b6133d0816133a5565b82525050565b600060c0820190506133eb6000830189612ed3565b6133f86020830188612d91565b61340560408301876133c7565b61341260608301866133c7565b61341f6080830185612ed3565b61342c60a0830184612d91565b979650505050505050565b60008151905061344681612cef565b92915050565b60008060006060848603121561346557613464612c82565b5b600061347386828701613437565b935050602061348486828701613437565b925050604061349586828701613437565b9150509250925092565b6000815190506134ae81612cb9565b92915050565b6000602082840312156134ca576134c9612c82565b5b60006134d88482850161349f565b91505092915050565b60006040820190506134f66000830185612ed3565b6135036020830184612ed3565b9392505050565b600061351582612ce5565b915061352083612ce5565b9250828203905081811115613538576135376132ca565b5b92915050565b7f6e756d6265727320646f6e277420616464207570000000000000000000000000600082015250565b6000613574601483612bdb565b915061357f8261353e565b602082019050919050565b600060208201905081810360008301526135a381613567565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613601578086048111156135dd576135dc6132ca565b5b60018516156135ec5780820291505b80810290506135fa856135aa565b94506135c1565b94509492505050565b60008261361a57600190506136d6565b8161362857600090506136d6565b816001811461363e576002811461364857613677565b60019150506136d6565b60ff84111561365a576136596132ca565b5b8360020a915084821115613671576136706132ca565b5b506136d6565b5060208310610133831016604e8410600b84101617156136ac5782820a9050838111156136a7576136a66132ca565b5b6136d6565b6136b984848460016135b7565b925090508184048111156136d0576136cf6132ca565b5b81810290505b9392505050565b60006136e882612ce5565b91506136f383612e3b565b92506137207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461360a565b905092915050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b600061375e601b83612bdb565b915061376982613728565b602082019050919050565b6000602082019050818103600083015261378d81613751565b9050919050565b7f6e6f7420746573746e6574000000000000000000000000000000000000000000600082015250565b60006137ca600b83612bdb565b91506137d582613794565b602082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b6000613836601783612bdb565b915061384182613800565b602082019050919050565b6000602082019050818103600083015261386581613829565b9050919050565b600060c0820190506138816000830189612e7c565b61388e6020830188612ed3565b61389b6040830187612ed3565b6138a86060830186612d91565b6138b56080830185612d91565b6138c260a0830184612d91565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061390e6002836138cd565b9150613919826138d8565b600282019050919050565b6000819050919050565b61393f61393a82612e72565b613924565b82525050565b600061395082613901565b915061395c828561392e565b60208201915061396c828461392e565b6020820191508190509392505050565b60006080820190506139916000830187612e7c565b61399e6020830186612e48565b6139ab6040830185612e7c565b6139b86060830184612e7c565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b60006139f7600e83612bdb565b9150613a02826139c1565b602082019050919050565b60006020820190508181036000830152613a26816139ea565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a89602683612bdb565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613af5602083612bdb565b9150613b0082613abf565b602082019050919050565b60006020820190508181036000830152613b2481613ae8565b9050919050565b6000613b3682612ce5565b9150613b4183612ce5565b9250828201905080821115613b5957613b586132ca565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bf281612ca7565b82525050565b6000613c048383613be9565b60208301905092915050565b6000602082019050919050565b6000613c2882613bbd565b613c328185613bc8565b9350613c3d83613bd9565b8060005b83811015613c6e578151613c558882613bf8565b9750613c6083613c10565b925050600181019050613c41565b5085935050505092915050565b600060a082019050613c906000830188612d91565b613c9d60208301876133c7565b8181036040830152613caf8186613c1d565b9050613cbe6060830185612ed3565b613ccb6080830184612d91565b9695505050505050565b600081905092915050565b50565b6000613cf0600083613cd5565b9150613cfb82613ce0565b600082019050919050565b6000613d1182613ce3565b9150819050919050565b60008190508160005260206000209050919050565b60008154613d3d816131c1565b613d478186613cd5565b94506001821660008114613d625760018114613d7757613daa565b60ff1983168652811515820286019350613daa565b613d8085613d1b565b60005b83811015613da257815481890152600182019150602081019050613d83565b838801955050505b50505092915050565b6000613dbf8284613d30565b915081905092915050565b600060a082019050613ddf6000830188612e7c565b613dec6020830187612e7c565b613df96040830186612e7c565b613e066060830185612d91565b613e136080830184612ed3565b969550505050505056fea2646970667358221220c41e87eaa50f47c711bfc15d02250704f958891fb4ecb69f1d6688886664b7a164736f6c63430008130033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80637f50ce171161012e578063c473413a116100ab578063f2fde38b1161006f578063f2fde38b14610854578063f887ea401461087d578063f98eb6e1146108a8578063fb235f34146108bf578063fea9e942146108e857610246565b8063c473413a1461075b578063cffd129c14610786578063d505accf146107b1578063dd62ed3e146107da578063eec1c69f1461081757610246565b8063a8aa1b31116100f2578063a8aa1b3114610672578063a9059cbb1461069d578063b3e5cb45146106da578063b880b69a14610705578063c45a01551461073057610246565b80637f50ce171461059d5780638da5cb5b146105c857806392108c86146105f357806395d89b411461061e578063a0712d681461064957610246565b80633644e515116101bc578063715018a611610180578063715018a6146104c857806371f7e654146104df57806375f0a8741461050a5780637d5ea21b146105355780637ecebe001461056057610246565b80633644e515146103e357806342966c681461040e57806344478425146104375780635d098b381461046257806370a082311461048b57610246565b806323b872dd1161020357806323b872dd1461030e578063270fd20a1461034b5780632ca1b45d14610376578063307aebc91461038d578063313ce567146103b857610246565b806306fdde031461024857806307df7a0d14610273578063095ea7b31461027d57806318160ddd146102ba5780631adf3e37146102e557610246565b3661024657005b005b34801561025457600080fd5b5061025d610911565b60405161026a9190612c60565b60405180910390f35b61027b61099f565b005b34801561028957600080fd5b506102a4600480360381019061029f9190612d1b565b611006565b6040516102b19190612d76565b60405180910390f35b3480156102c657600080fd5b506102cf6110f8565b6040516102dc9190612da0565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190612dbb565b6110fe565b005b34801561031a57600080fd5b5061033560048036038101906103309190612de8565b6111b9565b6040516103429190612d76565b60405180910390f35b34801561035757600080fd5b50610360611617565b60405161036d9190612d76565b60405180910390f35b34801561038257600080fd5b5061038b61162a565b005b34801561039957600080fd5b506103a26116dd565b6040516103af9190612d76565b60405180910390f35b3480156103c457600080fd5b506103cd6116f0565b6040516103da9190612e57565b60405180910390f35b3480156103ef57600080fd5b506103f8611714565b6040516104059190612e8b565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190612ea6565b611771565b005b34801561044357600080fd5b5061044c61177e565b6040516104599190612ee2565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612dbb565b6117a4565b005b34801561049757600080fd5b506104b260048036038101906104ad9190612dbb565b61185f565b6040516104bf9190612da0565b60405180910390f35b3480156104d457600080fd5b506104dd611877565b005b3480156104eb57600080fd5b506104f461188b565b6040516105019190612ee2565b60405180910390f35b34801561051657600080fd5b5061051f6118b1565b60405161052c9190612ee2565b60405180910390f35b34801561054157600080fd5b5061054a6118d7565b6040516105579190612d76565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612dbb565b6118ea565b6040516105949190612da0565b60405180910390f35b3480156105a957600080fd5b506105b2611902565b6040516105bf9190612d76565b60405180910390f35b3480156105d457600080fd5b506105dd61190f565b6040516105ea9190612ee2565b60405180910390f35b3480156105ff57600080fd5b50610608611938565b6040516106159190612d76565b60405180910390f35b34801561062a57600080fd5b50610633611956565b6040516106409190612c60565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612ea6565b6119e4565b005b34801561067e57600080fd5b50610687611a38565b6040516106949190612f5c565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190612d1b565b611a5e565b6040516106d19190612d76565b60405180910390f35b3480156106e657600080fd5b506106ef611a73565b6040516106fc9190612d76565b60405180910390f35b34801561071157600080fd5b5061071a611a7e565b6040516107279190612ee2565b60405180910390f35b34801561073c57600080fd5b50610745611aa4565b6040516107529190612f98565b60405180910390f35b34801561076757600080fd5b50610770611aca565b60405161077d9190612da0565b60405180910390f35b34801561079257600080fd5b5061079b611ad0565b6040516107a89190612da0565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d3919061300b565b611ad6565b005b3480156107e657600080fd5b5061080160048036038101906107fc91906130ad565b611dcf565b60405161080e9190612da0565b60405180910390f35b34801561082357600080fd5b5061083e60048036038101906108399190613129565b611df4565b60405161084b9190612d76565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190612dbb565b611f75565b005b34801561088957600080fd5b50610892611ff8565b60405161089f9190613177565b60405180910390f35b3480156108b457600080fd5b506108bd61201e565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190612dbb565b6120d1565b005b3480156108f457600080fd5b5061090f600480360381019061090a9190612dbb565b61218c565b005b6001805461091e906131c1565b80601f016020809104026020016040519081016040528092919081815260200182805461094a906131c1565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b505050505081565b6109a7612247565b600c60159054906101000a900460ff16156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee9061323e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f906132aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b10906132aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba1906132aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c32906132aa565b60405180910390fd5b6001600c60156101000a81548160ff021916908315150217905550610c813061271061251c66038d7ea4c68000610c7291906132f9565b610c7c919061336a565b6122c5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600080610d0c61190f565b426040518863ffffffff1660e01b8152600401610d2e969594939291906133d6565b60606040518083038185885af1158015610d4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d71919061344c565b505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4491906134b4565b6040518363ffffffff1660e01b8152600401610e619291906134e1565b602060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea291906134b4565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f3c600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661271061251c612710610f1b919061350a565b66038d7ea4c68000610f2d91906132f9565b610f37919061336a565b6122c5565b66038d7ea4c6800060035414610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e9061358a565b60405180910390fd5b610f8f611938565b15610fd857610fd7337f0000000000000000000000000000000000000000000000000000000000000008600a610fc591906136dd565b612710610fd291906132f9565b6122c5565b5b7f0887e4063f397b46bca5f33853dd1a946a3b32547bf9cb3b3063bd9db9d8bdfe60405160405180910390a1565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110e69190612da0565b60405180910390a36001905092915050565b60035481565b611106612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c906132aa565b60405180910390fd5b80600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611325576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113235782816112a2919061350a565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b61132d612395565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156113875750600c60009054906101000a900460ff16155b80156113e15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561141957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611427576114266123b8565b5b60006114348585856127f5565b905060008184611444919061350a565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611495919061350a565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115469190612da0565b60405180910390a3600082111561160a5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116019190612da0565b60405180910390a35b6001925050509392505050565b600f60159054906101000a900460ff1681565b611632612247565b600f60149054906101000a900460ff1615611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613774565b60405180910390fd5b6001600f60146101000a81548160ff0219169083151502179055506103e8600a819055506103e8600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b600c60159054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000881565b60007f0000000000000000000000000000000000000000000000000000000000000001461461174a576117456129a8565b61176c565b7f80374a466a182b408c4badf934e6b7550191df5fdad10c7d5d454d063044b8f65b905090565b61177b3382612a34565b50565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117ac612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361181b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611812906132aa565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915090505481565b61187f612247565b6118896000612b04565b565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60149054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b600062aa36a74614905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611942611a73565b806119515750611950611902565b5b905090565b60028054611963906131c1565b80601f016020809104026020016040519081016040528092919081815260200182805461198f906131c1565b80156119dc5780601f106119b1576101008083540402835291602001916119dc565b820191906000526020600020905b8154815290600101906020018083116119bf57829003601f168201915b505050505081565b6119ec611938565b611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22906137e0565b60405180910390fd5b611a3533826122c5565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a6b3384846111b9565b905092915050565b600060054614905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b42841015611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b109061384c565b60405180910390fd5b60006001611b25611714565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001611bad9695949392919061386c565b60405160208183030381529060405280519060200120604051602001611bd4929190613945565b6040516020818303038152906040528051906020012085858560405160008152602001604052604051611c0a949392919061397c565b6020604051602081039080840390855afa158015611c2c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611ca057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613a0d565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611dbe9190612da0565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600080611dff612bc8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051611f639190612da0565b60405180910390a36001915050919050565b611f7d612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390613a9f565b60405180910390fd5b611ff581612b04565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612026612247565b600f60159054906101000a900460ff1615612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90613774565b60405180910390fd5b6001600f60156101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b6120d9612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f906132aa565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612194612247565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa906132aa565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61224f612bc8565b73ffffffffffffffffffffffffffffffffffffffff1661226d61190f565b73ffffffffffffffffffffffffffffffffffffffff16146122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90613b0b565b60405180910390fd5b565b80600360008282546122d79190613b2b565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123899190612da0565b60405180910390a35050565b600061271060026003546123a991906132f9565b6123b3919061336a565b905090565b6001600c60006101000a81548160ff02191690831515021790555060006005600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612421919061336a565b9050600081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612470919061350a565b90506000600267ffffffffffffffff81111561248f5761248e613b5f565b5b6040519080825280602002602001820160405280156124bd5781602001602082028036833780820191505090505b50905030816000815181106124d5576124d4613b8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a091906134b4565b816001815181106125b4576125b3613b8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612652959493929190613c7b565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b505050506000600447612693919061336a565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230876000806126e161190f565b426040518863ffffffff1660e01b8152600401612703969594939291906133d6565b60606040518083038185885af1158015612721573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612746919061344c565b505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161278f90613d06565b60006040518083038185875af1925050503d80600081146127cc576040519150601f19603f3d011682016040523d82523d6000602084013e6127d1565b606091505b505050505050506000600c60006101000a81548160ff021916908315150217905550565b60006127ff61190f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061286a575061283b61190f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806128a057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156128ae57600090506129a1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361292557612710600a548361291491906132f9565b61291e919061336a565b90506129a1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361299c57612710600b548361298b91906132f9565b612995919061336a565b90506129a1565b600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60016040516129da9190613db3565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001612a19959493929190613dca565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a83919061350a565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612af89190612da0565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c0a578082015181840152602081019050612bef565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c3282612bd0565b612c3c8185612bdb565b9350612c4c818560208601612bec565b612c5581612c16565b840191505092915050565b60006020820190508181036000830152612c7a8184612c27565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb282612c87565b9050919050565b612cc281612ca7565b8114612ccd57600080fd5b50565b600081359050612cdf81612cb9565b92915050565b6000819050919050565b612cf881612ce5565b8114612d0357600080fd5b50565b600081359050612d1581612cef565b92915050565b60008060408385031215612d3257612d31612c82565b5b6000612d4085828601612cd0565b9250506020612d5185828601612d06565b9150509250929050565b60008115159050919050565b612d7081612d5b565b82525050565b6000602082019050612d8b6000830184612d67565b92915050565b612d9a81612ce5565b82525050565b6000602082019050612db56000830184612d91565b92915050565b600060208284031215612dd157612dd0612c82565b5b6000612ddf84828501612cd0565b91505092915050565b600080600060608486031215612e0157612e00612c82565b5b6000612e0f86828701612cd0565b9350506020612e2086828701612cd0565b9250506040612e3186828701612d06565b9150509250925092565b600060ff82169050919050565b612e5181612e3b565b82525050565b6000602082019050612e6c6000830184612e48565b92915050565b6000819050919050565b612e8581612e72565b82525050565b6000602082019050612ea06000830184612e7c565b92915050565b600060208284031215612ebc57612ebb612c82565b5b6000612eca84828501612d06565b91505092915050565b612edc81612ca7565b82525050565b6000602082019050612ef76000830184612ed3565b92915050565b6000819050919050565b6000612f22612f1d612f1884612c87565b612efd565b612c87565b9050919050565b6000612f3482612f07565b9050919050565b6000612f4682612f29565b9050919050565b612f5681612f3b565b82525050565b6000602082019050612f716000830184612f4d565b92915050565b6000612f8282612f29565b9050919050565b612f9281612f77565b82525050565b6000602082019050612fad6000830184612f89565b92915050565b612fbc81612e3b565b8114612fc757600080fd5b50565b600081359050612fd981612fb3565b92915050565b612fe881612e72565b8114612ff357600080fd5b50565b60008135905061300581612fdf565b92915050565b600080600080600080600060e0888a03121561302a57613029612c82565b5b60006130388a828b01612cd0565b97505060206130498a828b01612cd0565b965050604061305a8a828b01612d06565b955050606061306b8a828b01612d06565b945050608061307c8a828b01612fca565b93505060a061308d8a828b01612ff6565b92505060c061309e8a828b01612ff6565b91505092959891949750929550565b600080604083850312156130c4576130c3612c82565b5b60006130d285828601612cd0565b92505060206130e385828601612cd0565b9150509250929050565b600063ffffffff82169050919050565b613106816130ed565b811461311157600080fd5b50565b600081359050613123816130fd565b92915050565b60006020828403121561313f5761313e612c82565b5b600061314d84828501613114565b91505092915050565b600061316182612f29565b9050919050565b61317181613156565b82525050565b600060208201905061318c6000830184613168565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131d957607f821691505b6020821081036131ec576131eb613192565b5b50919050565b7f616c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000613228601083612bdb565b9150613233826131f2565b602082019050919050565b600060208201905081810360008301526132578161321b565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000613294600c83612bdb565b915061329f8261325e565b602082019050919050565b600060208201905081810360008301526132c381613287565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330482612ce5565b915061330f83612ce5565b925082820261331d81612ce5565b91508282048414831517613334576133336132ca565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061337582612ce5565b915061338083612ce5565b9250826133905761338f61333b565b5b828204905092915050565b6000819050919050565b60006133c06133bb6133b68461339b565b612efd565b612ce5565b9050919050565b6133d0816133a5565b82525050565b600060c0820190506133eb6000830189612ed3565b6133f86020830188612d91565b61340560408301876133c7565b61341260608301866133c7565b61341f6080830185612ed3565b61342c60a0830184612d91565b979650505050505050565b60008151905061344681612cef565b92915050565b60008060006060848603121561346557613464612c82565b5b600061347386828701613437565b935050602061348486828701613437565b925050604061349586828701613437565b9150509250925092565b6000815190506134ae81612cb9565b92915050565b6000602082840312156134ca576134c9612c82565b5b60006134d88482850161349f565b91505092915050565b60006040820190506134f66000830185612ed3565b6135036020830184612ed3565b9392505050565b600061351582612ce5565b915061352083612ce5565b9250828203905081811115613538576135376132ca565b5b92915050565b7f6e756d6265727320646f6e277420616464207570000000000000000000000000600082015250565b6000613574601483612bdb565b915061357f8261353e565b602082019050919050565b600060208201905081810360008301526135a381613567565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613601578086048111156135dd576135dc6132ca565b5b60018516156135ec5780820291505b80810290506135fa856135aa565b94506135c1565b94509492505050565b60008261361a57600190506136d6565b8161362857600090506136d6565b816001811461363e576002811461364857613677565b60019150506136d6565b60ff84111561365a576136596132ca565b5b8360020a915084821115613671576136706132ca565b5b506136d6565b5060208310610133831016604e8410600b84101617156136ac5782820a9050838111156136a7576136a66132ca565b5b6136d6565b6136b984848460016135b7565b925090508184048111156136d0576136cf6132ca565b5b81810290505b9392505050565b60006136e882612ce5565b91506136f383612e3b565b92506137207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461360a565b905092915050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b600061375e601b83612bdb565b915061376982613728565b602082019050919050565b6000602082019050818103600083015261378d81613751565b9050919050565b7f6e6f7420746573746e6574000000000000000000000000000000000000000000600082015250565b60006137ca600b83612bdb565b91506137d582613794565b602082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b6000613836601783612bdb565b915061384182613800565b602082019050919050565b6000602082019050818103600083015261386581613829565b9050919050565b600060c0820190506138816000830189612e7c565b61388e6020830188612ed3565b61389b6040830187612ed3565b6138a86060830186612d91565b6138b56080830185612d91565b6138c260a0830184612d91565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061390e6002836138cd565b9150613919826138d8565b600282019050919050565b6000819050919050565b61393f61393a82612e72565b613924565b82525050565b600061395082613901565b915061395c828561392e565b60208201915061396c828461392e565b6020820191508190509392505050565b60006080820190506139916000830187612e7c565b61399e6020830186612e48565b6139ab6040830185612e7c565b6139b86060830184612e7c565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b60006139f7600e83612bdb565b9150613a02826139c1565b602082019050919050565b60006020820190508181036000830152613a26816139ea565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a89602683612bdb565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613af5602083612bdb565b9150613b0082613abf565b602082019050919050565b60006020820190508181036000830152613b2481613ae8565b9050919050565b6000613b3682612ce5565b9150613b4183612ce5565b9250828201905080821115613b5957613b586132ca565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bf281612ca7565b82525050565b6000613c048383613be9565b60208301905092915050565b6000602082019050919050565b6000613c2882613bbd565b613c328185613bc8565b9350613c3d83613bd9565b8060005b83811015613c6e578151613c558882613bf8565b9750613c6083613c10565b925050600181019050613c41565b5085935050505092915050565b600060a082019050613c906000830188612d91565b613c9d60208301876133c7565b8181036040830152613caf8186613c1d565b9050613cbe6060830185612ed3565b613ccb6080830184612d91565b9695505050505050565b600081905092915050565b50565b6000613cf0600083613cd5565b9150613cfb82613ce0565b600082019050919050565b6000613d1182613ce3565b9150819050919050565b60008190508160005260206000209050919050565b60008154613d3d816131c1565b613d478186613cd5565b94506001821660008114613d625760018114613d7757613daa565b60ff1983168652811515820286019350613daa565b613d8085613d1b565b60005b83811015613da257815481890152600182019150602081019050613d83565b838801955050505b50505092915050565b6000613dbf8284613d30565b915081905092915050565b600060a082019050613ddf6000830188612e7c565b613dec6020830187612e7c565b613df96040830186612e7c565b613e066060830185612d91565b613e136080830184612ed3565b969550505050505056fea2646970667358221220c41e87eaa50f47c711bfc15d02250704f958891fb4ecb69f1d6688886664b7a164736f6c63430008130033

Deployed Bytecode Sourcemap

18053:10164:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;632:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22584:1104;;;:::i;:::-;;2109:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;915:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21943:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26738:1476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18967:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20901:233;;;;;;;;;;;;;:::i;:::-;;18802:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;688:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5069:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20101:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18900:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22252:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;950:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9208:103;;;;;;;;;;;;;:::i;:::-;;18762:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18863:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18937:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1376:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20687:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8560:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20794:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;659:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20354:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18175:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26158:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20588:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18833:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18136:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18550:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18584:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3534:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1003:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21669:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9466:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18097:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21142:241;;;;;;;;;;;;;:::i;:::-;;22420:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22098:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;632:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22584:1104::-;8446:13;:11;:13::i;:::-;22656:10:::1;;;;;;;;;;;22655:11;22647:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;22726:1;22706:22;;:8;;;;;;;;;;;:22;;::::0;22698:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22791:1;22764:29;;:15;;;;;;;;;;;:29;;::::0;22756:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22854:1;22829:27;;:13;;;;;;;;;;;:27;;::::0;22821:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22920:1;22892:30;;:16;;;;;;;;;;;:30;;::::0;22884:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22963:4;22950:10;;:17;;;;;;;;;;;;;;;;;;22980:54;22994:4;23027:6;18360:4;18249:18;23001:23;;;;:::i;:::-;:32;;;;:::i;:::-;22980:5;:54::i;:::-;23047:6;;;;;;;;;;;:22;;;23078:9;23112:4;23132:9;:24;23150:4;23132:24;;;;;;;;;;;;;;;;23171:1;23187::::0;23203:7:::1;:5;:7::i;:::-;23225:15;23047:194;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23276:7;;;;;;;;;;;:15;;;23300:4;23307:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23276:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23254:4;;:68;;;;;;;;;;;;;;;;;;23335:63;23341:15;;;;;;;;;;;23391:6;18360:4;18467:6;:15;;;;:::i;:::-;18249:18;23358:30;;;;:::i;:::-;:39;;;;:::i;:::-;23335:5;:63::i;:::-;18249:18;23419:11;;:29;23411:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23552:11;:9;:11::i;:::-;23548:93;;;23580:49;23594:10;23620:8;23616:2;:12;;;;:::i;:::-;23607:6;:21;;;;:::i;:::-;23580:5;:49::i;:::-;23548:93;23658:22;;;;;;;;;;22584:1104::o:0;2109:217::-;2183:4;2233:6;2200:9;:21;2210:10;2200:21;;;;;;;;;;;;;;;:30;2222:7;2200:30;;;;;;;;;;;;;;;:39;;;;2278:7;2257:37;;2266:10;2257:37;;;2287:6;2257:37;;;;;;:::i;:::-;;;;;;;;2314:4;2307:11;;2109:217;;;;:::o;915:26::-;;;;:::o;21943:147::-;8446:13;:11;:13::i;:::-;22032:1:::1;22019:15;;:1;:15;;::::0;22011:40:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22081:1;22062:16;;:20;;;;;;;;;;;;;;;;;;21943:147:::0;:::o;26738:1476::-;26858:4;26887:10;26879:18;;:4;:18;;;26875:272;;26963:12;26978:9;:15;26988:4;26978:15;;;;;;;;;;;;;;;:27;26994:10;26978:27;;;;;;;;;;;;;;;;26963:42;;27073:14;27062:7;:25;27058:77;;27129:6;27119:7;:16;;;;:::i;:::-;27089:9;:15;27099:4;27089:15;;;;;;;;;;;;;;;:27;27105:10;27089:27;;;;;;;;;;;;;;;:46;;;;27058:77;26899:248;26875:272;27368:18;:16;:18::i;:::-;27341:9;:24;27359:4;27341:24;;;;;;;;;;;;;;;;:45;:73;;;;;27391:23;;;;;;;;;;;27390:24;27341:73;:98;;;;;27434:4;;;;;;;;;;;27418:21;;:4;:21;;;;27341:98;:123;;;;;27459:4;27443:21;;:4;:21;;;;27341:123;27337:176;;;27481:20;:18;:20::i;:::-;27337:176;27525:8;27536:25;27544:4;27550:2;27554:6;27536:7;:25::i;:::-;27525:36;;27572:19;27603:3;27594:6;:12;;;;:::i;:::-;27572:34;;27638:6;27619:9;:15;27629:4;27619:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;27809:14;27792:9;:13;27802:2;27792:13;;;;;;;;;;;;;;;;:31;;;;;;;;;;;27867:2;27852:34;;27861:4;27852:34;;;27871:14;27852:34;;;;;;:::i;:::-;;;;;;;;27909:1;27903:3;:7;27899:284;;;28031:3;28003:9;:24;28021:4;28003:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;28160:4;28137:34;;28146:4;28137:34;;;28167:3;28137:34;;;;;;:::i;:::-;;;;;;;;27899:284;28202:4;28195:11;;;;26738:1476;;;;;:::o;18967:26::-;;;;;;;;;;;;;:::o;20901:233::-;8446:13;:11;:13::i;:::-;20967:11:::1;;;;;;;;;;;20966:12;20958:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21035:4;21021:11;;:18;;;;;;;;;;;;;;;;;;21062:4;21050:9;:16;;;;21090:4;21077:10;:17;;;;21110:16;;;;;;;;;;20901:233::o:0;18802:22::-;;;;;;;;;;;;;:::o;688:31::-;;;:::o;5069:179::-;5126:7;5170:16;5153:13;:33;:87;;5216:24;:22;:24::i;:::-;5153:87;;;5189:24;5153:87;5146:94;;5069:179;:::o;20101:80::-;20148:25;20154:10;20166:6;20148:5;:25::i;:::-;20101:80;:::o;18900:28::-;;;;;;;;;;;;;:::o;22252:160::-;8446:13;:11;:13::i;:::-;22350:1:::1;22332:20;;:6;:20;;::::0;22324:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22398:6;22380:15;;:24;;;;;;;;;;;;;;;;;;22252:160:::0;:::o;950:44::-;;;;;;;;;;;;;;;;;:::o;9208:103::-;8446:13;:11;:13::i;:::-;9273:30:::1;9300:1;9273:18;:30::i;:::-;9208:103::o:0;18762:31::-;;;;;;;;;;;;;:::o;18863:30::-;;;;;;;;;;;;;:::o;18937:23::-;;;;;;;;;;;;;:::o;1376:41::-;;;;;;;;;;;;;;;;;:::o;20687:99::-;20729:4;20770:8;20753:13;:25;20746:32;;20687:99;:::o;8560:87::-;8606:7;8633:6;;;;;;;;;;;8626:13;;8560:87;:::o;20794:99::-;20836:4;20860:10;:8;:10::i;:::-;:25;;;;20874:11;:9;:11::i;:::-;20860:25;20853:32;;20794:99;:::o;659:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20354:101::-;19971:11;:9;:11::i;:::-;19963:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;20413:34:::1;20427:10;20440:6;20413:5;:34::i;:::-;20354:101:::0;:::o;18175:26::-;;;;;;;;;;;;;:::o;26158:136::-;26226:4;26250:36;26263:10;26275:2;26279:6;26250:12;:36::i;:::-;26243:43;;26158:136;;;;:::o;20588:91::-;20629:4;20670:1;20653:13;:18;20646:25;;20588:91;:::o;18833:23::-;;;;;;;;;;;;;:::o;18136:32::-;;;;;;;;;;;;;:::o;18550:27::-;;;;:::o;18584:28::-;;;;:::o;3534:1527::-;3762:15;3750:8;:27;;3742:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;3975:24;4002:827;4142:18;:16;:18::i;:::-;4272:167;4474:5;4514:7;4556:5;4596:6;:13;4603:5;4596:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;4646:8;4227:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4187:525;;;;;;4062:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4030:724;;;;;;4773:1;4793;4813;4002:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3975:854;;4882:1;4854:30;;:16;:30;;;;:59;;;;;4908:5;4888:25;;:16;:25;;;4854:59;4846:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;4988:5;4949:9;:27;4959:16;4949:27;;;;;;;;;;;;;;;:36;4977:7;4949:36;;;;;;;;;;;;;;;:44;;;;3950:1055;5038:7;5022:31;;5031:5;5022:31;;;5047:5;5022:31;;;;;;:::i;:::-;;;;;;;;3534:1527;;;;;;;:::o;1003:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21669:266::-;21729:4;21746:13;21762:12;:10;:12::i;:::-;21746:28;;21824:14;21787:9;:16;21797:5;21787:16;;;;;;;;;;;;;;;:34;21804:16;;;;;;;;;;;21787:34;;;;;;;;;;;;;;;:51;;;;21870:16;;;;;;;;;;;21854:49;;21863:5;21854:49;;;21888:14;21854:49;;;;;;:::i;:::-;;;;;;;;21923:4;21916:11;;;21669:266;;;:::o;9466:201::-;8446:13;:11;:13::i;:::-;9575:1:::1;9555:22;;:8;:22;;::::0;9547:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9631:28;9650:8;9631:18;:28::i;:::-;9466:201:::0;:::o;18097:32::-;;;;;;;;;;;;;:::o;21142:241::-;8446:13;:11;:13::i;:::-;21209:14:::1;;;;;;;;;;;21208:15;21200:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;21283:4;21266:14;;:21;;;;;;;;;;;;;;;;;;21310:3;21298:9;:15;;;;21337:3;21324:10;:16;;;;21356:19;;;;;;;;;;21142:241::o:0;22420:156::-;8446:13;:11;:13::i;:::-;22516:1:::1;22498:20;;:6;:20;;::::0;22490:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22562:6;22546:13;;:22;;;;;;;;;;;;;;;;;;22420:156:::0;:::o;22098:146::-;8446:13;:11;:13::i;:::-;22189:1:::1;22171:20;;:6;:20;;::::0;22163:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22230:6;22219:8;;:17;;;;;;;;;;;;;;;;;;22098:146:::0;:::o;8725:132::-;8800:12;:10;:12::i;:::-;8789:23;;:7;:5;:7::i;:::-;:23;;;8781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8725:132::o;5913:335::-;5999:6;5984:11;;:21;;;;;;;:::i;:::-;;;;;;;;6173:6;6156:9;:13;6166:2;6156:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;6229:2;6208:32;;6225:1;6208:32;;;6233:6;6208:32;;;;;;:::i;:::-;;;;;;;;5913:335;;:::o;20463:117::-;20514:4;20558:5;20553:1;20539:11;;:15;;;;:::i;:::-;20538:25;;;;:::i;:::-;20531:32;;20463:117;:::o;24774:1155::-;19855:4;19829:23;;:30;;;;;;;;;;;;;;;;;;25158:17:::1;25205:1;25178:9;:24;25196:4;25178:24;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;25158:48;;25217:17;25264:12;25237:9;:24;25255:4;25237:24;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;25217:59;;25306:21;25344:1;25330:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25306:40;;25375:4;25357;25362:1;25357:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;25401:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25391:4;25396:1;25391:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;25425:6;;;;;;;;;;;:57;;;25497:12;25524:1;25540:4;25567;25587:15;25425:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25626:13;25666:1;25642:21;:25;;;;:::i;:::-;25626:41;;25680:6;;;;;;;;;;;:22;;;25711:8;25744:4;25764:12;25791:1;25807::::0;25823:7:::1;:5;:7::i;:::-;25845:15;25680:181;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25874:8;;;;;;;;;;;:13;;25895:21;25874:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24825:1104;;;;19908:5:::0;19882:23;;:31;;;;;;;;;;;;;;;;;;24774:1155::o;23959:735::-;24038:4;24067:7;:5;:7::i;:::-;24059:15;;:4;:15;;;:32;;;;24084:7;:5;:7::i;:::-;24078:13;;:2;:13;;;24059:32;:57;;;;24111:4;24095:21;;:4;:21;;;24059:57;24055:632;;;24276:1;24269:8;;;;24055:632;24315:4;;;;;;;;;;;24299:21;;:4;:21;;;24295:392;;24416:6;24404:9;;24395:6;:18;;;;:::i;:::-;:27;;;;:::i;:::-;24388:34;;;;24295:392;24458:4;;;;;;;;;;;24444:19;;:2;:19;;;24440:247;;24563:6;24550:10;;24541:6;:19;;;;:::i;:::-;:28;;;;:::i;:::-;24534:35;;;;24440:247;24674:1;24667:8;;23959:735;;;;;;:::o;5256:457::-;5321:7;5422:95;5556:4;5540:22;;;;;;:::i;:::-;;;;;;;;5585:14;5622:13;5666:4;5389:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5361:344;;;;;;5341:364;;5256:457;:::o;6256:338::-;6348:6;6329:9;:15;6339:4;6329:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;6517:6;6502:11;;:21;;;;;;;;;;;6575:1;6552:34;;6561:4;6552:34;;;6579:6;6552:34;;;;;;:::i;:::-;;;;;;;;6256:338;;:::o;9827:191::-;9901:16;9920:6;;;;;;;;;;;9901:25;;9946:8;9937:6;;:17;;;;;;;;;;;;;;;;;;10001:8;9970:40;;9991:8;9970:40;;;;;;;;;;;;9890:128;9827:191;:::o;7269:98::-;7322:7;7349:10;7342:17;;7269:98;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:77::-;5225:7;5254:5;5243:16;;5188:77;;;:::o;5271:118::-;5358:24;5376:5;5358:24;:::i;:::-;5353:3;5346:37;5271:118;;:::o;5395:222::-;5488:4;5526:2;5515:9;5511:18;5503:26;;5539:71;5607:1;5596:9;5592:17;5583:6;5539:71;:::i;:::-;5395:222;;;;:::o;5623:329::-;5682:6;5731:2;5719:9;5710:7;5706:23;5702:32;5699:119;;;5737:79;;:::i;:::-;5699:119;5857:1;5882:53;5927:7;5918:6;5907:9;5903:22;5882:53;:::i;:::-;5872:63;;5828:117;5623:329;;;;:::o;5958:118::-;6045:24;6063:5;6045:24;:::i;:::-;6040:3;6033:37;5958:118;;:::o;6082:222::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:71;6294:1;6283:9;6279:17;6270:6;6226:71;:::i;:::-;6082:222;;;;:::o;6310:60::-;6338:3;6359:5;6352:12;;6310:60;;;:::o;6376:142::-;6426:9;6459:53;6477:34;6486:24;6504:5;6486:24;:::i;:::-;6477:34;:::i;:::-;6459:53;:::i;:::-;6446:66;;6376:142;;;:::o;6524:126::-;6574:9;6607:37;6638:5;6607:37;:::i;:::-;6594:50;;6524:126;;;:::o;6656:148::-;6728:9;6761:37;6792:5;6761:37;:::i;:::-;6748:50;;6656:148;;;:::o;6810:175::-;6919:59;6972:5;6919:59;:::i;:::-;6914:3;6907:72;6810:175;;:::o;6991:266::-;7106:4;7144:2;7133:9;7129:18;7121:26;;7157:93;7247:1;7236:9;7232:17;7223:6;7157:93;:::i;:::-;6991:266;;;;:::o;7263:151::-;7338:9;7371:37;7402:5;7371:37;:::i;:::-;7358:50;;7263:151;;;:::o;7420:181::-;7532:62;7588:5;7532:62;:::i;:::-;7527:3;7520:75;7420:181;;:::o;7607:272::-;7725:4;7763:2;7752:9;7748:18;7740:26;;7776:96;7869:1;7858:9;7854:17;7845:6;7776:96;:::i;:::-;7607:272;;;;:::o;7885:118::-;7956:22;7972:5;7956:22;:::i;:::-;7949:5;7946:33;7936:61;;7993:1;7990;7983:12;7936:61;7885:118;:::o;8009:135::-;8053:5;8091:6;8078:20;8069:29;;8107:31;8132:5;8107:31;:::i;:::-;8009:135;;;;:::o;8150:122::-;8223:24;8241:5;8223:24;:::i;:::-;8216:5;8213:35;8203:63;;8262:1;8259;8252:12;8203:63;8150:122;:::o;8278:139::-;8324:5;8362:6;8349:20;8340:29;;8378:33;8405:5;8378:33;:::i;:::-;8278:139;;;;:::o;8423:1199::-;8534:6;8542;8550;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8758:1;8783:53;8828:7;8819:6;8808:9;8804:22;8783:53;:::i;:::-;8773:63;;8729:117;8885:2;8911:53;8956:7;8947:6;8936:9;8932:22;8911:53;:::i;:::-;8901:63;;8856:118;9013:2;9039:53;9084:7;9075:6;9064:9;9060:22;9039:53;:::i;:::-;9029:63;;8984:118;9141:2;9167:53;9212:7;9203:6;9192:9;9188:22;9167:53;:::i;:::-;9157:63;;9112:118;9269:3;9296:51;9339:7;9330:6;9319:9;9315:22;9296:51;:::i;:::-;9286:61;;9240:117;9396:3;9423:53;9468:7;9459:6;9448:9;9444:22;9423:53;:::i;:::-;9413:63;;9367:119;9525:3;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9496:119;8423:1199;;;;;;;;;;:::o;9628:474::-;9696:6;9704;9753:2;9741:9;9732:7;9728:23;9724:32;9721:119;;;9759:79;;:::i;:::-;9721:119;9879:1;9904:53;9949:7;9940:6;9929:9;9925:22;9904:53;:::i;:::-;9894:63;;9850:117;10006:2;10032:53;10077:7;10068:6;10057:9;10053:22;10032:53;:::i;:::-;10022:63;;9977:118;9628:474;;;;;:::o;10108:93::-;10144:7;10184:10;10177:5;10173:22;10162:33;;10108:93;;;:::o;10207:120::-;10279:23;10296:5;10279:23;:::i;:::-;10272:5;10269:34;10259:62;;10317:1;10314;10307:12;10259:62;10207:120;:::o;10333:137::-;10378:5;10416:6;10403:20;10394:29;;10432:32;10458:5;10432:32;:::i;:::-;10333:137;;;;:::o;10476:327::-;10534:6;10583:2;10571:9;10562:7;10558:23;10554:32;10551:119;;;10589:79;;:::i;:::-;10551:119;10709:1;10734:52;10778:7;10769:6;10758:9;10754:22;10734:52;:::i;:::-;10724:62;;10680:116;10476:327;;;;:::o;10809:153::-;10886:9;10919:37;10950:5;10919:37;:::i;:::-;10906:50;;10809:153;;;:::o;10968:185::-;11082:64;11140:5;11082:64;:::i;:::-;11077:3;11070:77;10968:185;;:::o;11159:276::-;11279:4;11317:2;11306:9;11302:18;11294:26;;11330:98;11425:1;11414:9;11410:17;11401:6;11330:98;:::i;:::-;11159:276;;;;:::o;11441:180::-;11489:77;11486:1;11479:88;11586:4;11583:1;11576:15;11610:4;11607:1;11600:15;11627:320;11671:6;11708:1;11702:4;11698:12;11688:22;;11755:1;11749:4;11745:12;11776:18;11766:81;;11832:4;11824:6;11820:17;11810:27;;11766:81;11894:2;11886:6;11883:14;11863:18;11860:38;11857:84;;11913:18;;:::i;:::-;11857:84;11678:269;11627:320;;;:::o;11953:166::-;12093:18;12089:1;12081:6;12077:14;12070:42;11953:166;:::o;12125:366::-;12267:3;12288:67;12352:2;12347:3;12288:67;:::i;:::-;12281:74;;12364:93;12453:3;12364:93;:::i;:::-;12482:2;12477:3;12473:12;12466:19;;12125:366;;;:::o;12497:419::-;12663:4;12701:2;12690:9;12686:18;12678:26;;12750:9;12744:4;12740:20;12736:1;12725:9;12721:17;12714:47;12778:131;12904:4;12778:131;:::i;:::-;12770:139;;12497:419;;;:::o;12922:162::-;13062:14;13058:1;13050:6;13046:14;13039:38;12922:162;:::o;13090:366::-;13232:3;13253:67;13317:2;13312:3;13253:67;:::i;:::-;13246:74;;13329:93;13418:3;13329:93;:::i;:::-;13447:2;13442:3;13438:12;13431:19;;13090:366;;;:::o;13462:419::-;13628:4;13666:2;13655:9;13651:18;13643:26;;13715:9;13709:4;13705:20;13701:1;13690:9;13686:17;13679:47;13743:131;13869:4;13743:131;:::i;:::-;13735:139;;13462:419;;;:::o;13887:180::-;13935:77;13932:1;13925:88;14032:4;14029:1;14022:15;14056:4;14053:1;14046:15;14073:410;14113:7;14136:20;14154:1;14136:20;:::i;:::-;14131:25;;14170:20;14188:1;14170:20;:::i;:::-;14165:25;;14225:1;14222;14218:9;14247:30;14265:11;14247:30;:::i;:::-;14236:41;;14426:1;14417:7;14413:15;14410:1;14407:22;14387:1;14380:9;14360:83;14337:139;;14456:18;;:::i;:::-;14337:139;14121:362;14073:410;;;;:::o;14489:180::-;14537:77;14534:1;14527:88;14634:4;14631:1;14624:15;14658:4;14655:1;14648:15;14675:185;14715:1;14732:20;14750:1;14732:20;:::i;:::-;14727:25;;14766:20;14784:1;14766:20;:::i;:::-;14761:25;;14805:1;14795:35;;14810:18;;:::i;:::-;14795:35;14852:1;14849;14845:9;14840:14;;14675:185;;;;:::o;14866:85::-;14911:7;14940:5;14929:16;;14866:85;;;:::o;14957:158::-;15015:9;15048:61;15066:42;15075:32;15101:5;15075:32;:::i;:::-;15066:42;:::i;:::-;15048:61;:::i;:::-;15035:74;;14957:158;;;:::o;15121:147::-;15216:45;15255:5;15216:45;:::i;:::-;15211:3;15204:58;15121:147;;:::o;15274:807::-;15523:4;15561:3;15550:9;15546:19;15538:27;;15575:71;15643:1;15632:9;15628:17;15619:6;15575:71;:::i;:::-;15656:72;15724:2;15713:9;15709:18;15700:6;15656:72;:::i;:::-;15738:80;15814:2;15803:9;15799:18;15790:6;15738:80;:::i;:::-;15828;15904:2;15893:9;15889:18;15880:6;15828:80;:::i;:::-;15918:73;15986:3;15975:9;15971:19;15962:6;15918:73;:::i;:::-;16001;16069:3;16058:9;16054:19;16045:6;16001:73;:::i;:::-;15274:807;;;;;;;;;:::o;16087:143::-;16144:5;16175:6;16169:13;16160:22;;16191:33;16218:5;16191:33;:::i;:::-;16087:143;;;;:::o;16236:663::-;16324:6;16332;16340;16389:2;16377:9;16368:7;16364:23;16360:32;16357:119;;;16395:79;;:::i;:::-;16357:119;16515:1;16540:64;16596:7;16587:6;16576:9;16572:22;16540:64;:::i;:::-;16530:74;;16486:128;16653:2;16679:64;16735:7;16726:6;16715:9;16711:22;16679:64;:::i;:::-;16669:74;;16624:129;16792:2;16818:64;16874:7;16865:6;16854:9;16850:22;16818:64;:::i;:::-;16808:74;;16763:129;16236:663;;;;;:::o;16905:143::-;16962:5;16993:6;16987:13;16978:22;;17009:33;17036:5;17009:33;:::i;:::-;16905:143;;;;:::o;17054:351::-;17124:6;17173:2;17161:9;17152:7;17148:23;17144:32;17141:119;;;17179:79;;:::i;:::-;17141:119;17299:1;17324:64;17380:7;17371:6;17360:9;17356:22;17324:64;:::i;:::-;17314:74;;17270:128;17054:351;;;;:::o;17411:332::-;17532:4;17570:2;17559:9;17555:18;17547:26;;17583:71;17651:1;17640:9;17636:17;17627:6;17583:71;:::i;:::-;17664:72;17732:2;17721:9;17717:18;17708:6;17664:72;:::i;:::-;17411:332;;;;;:::o;17749:194::-;17789:4;17809:20;17827:1;17809:20;:::i;:::-;17804:25;;17843:20;17861:1;17843:20;:::i;:::-;17838:25;;17887:1;17884;17880:9;17872:17;;17911:1;17905:4;17902:11;17899:37;;;17916:18;;:::i;:::-;17899:37;17749:194;;;;:::o;17949:170::-;18089:22;18085:1;18077:6;18073:14;18066:46;17949:170;:::o;18125:366::-;18267:3;18288:67;18352:2;18347:3;18288:67;:::i;:::-;18281:74;;18364:93;18453:3;18364:93;:::i;:::-;18482:2;18477:3;18473:12;18466:19;;18125:366;;;:::o;18497:419::-;18663:4;18701:2;18690:9;18686:18;18678:26;;18750:9;18744:4;18740:20;18736:1;18725:9;18721:17;18714:47;18778:131;18904:4;18778:131;:::i;:::-;18770:139;;18497:419;;;:::o;18922:102::-;18964:8;19011:5;19008:1;19004:13;18983:34;;18922:102;;;:::o;19030:848::-;19091:5;19098:4;19122:6;19113:15;;19146:5;19137:14;;19160:712;19181:1;19171:8;19168:15;19160:712;;;19276:4;19271:3;19267:14;19261:4;19258:24;19255:50;;;19285:18;;:::i;:::-;19255:50;19335:1;19325:8;19321:16;19318:451;;;19750:4;19743:5;19739:16;19730:25;;19318:451;19800:4;19794;19790:15;19782:23;;19830:32;19853:8;19830:32;:::i;:::-;19818:44;;19160:712;;;19030:848;;;;;;;:::o;19884:1073::-;19938:5;20129:8;20119:40;;20150:1;20141:10;;20152:5;;20119:40;20178:4;20168:36;;20195:1;20186:10;;20197:5;;20168:36;20264:4;20312:1;20307:27;;;;20348:1;20343:191;;;;20257:277;;20307:27;20325:1;20316:10;;20327:5;;;20343:191;20388:3;20378:8;20375:17;20372:43;;;20395:18;;:::i;:::-;20372:43;20444:8;20441:1;20437:16;20428:25;;20479:3;20472:5;20469:14;20466:40;;;20486:18;;:::i;:::-;20466:40;20519:5;;;20257:277;;20643:2;20633:8;20630:16;20624:3;20618:4;20615:13;20611:36;20593:2;20583:8;20580:16;20575:2;20569:4;20566:12;20562:35;20546:111;20543:246;;;20699:8;20693:4;20689:19;20680:28;;20734:3;20727:5;20724:14;20721:40;;;20741:18;;:::i;:::-;20721:40;20774:5;;20543:246;20814:42;20852:3;20842:8;20836:4;20833:1;20814:42;:::i;:::-;20799:57;;;;20888:4;20883:3;20879:14;20872:5;20869:25;20866:51;;;20897:18;;:::i;:::-;20866:51;20946:4;20939:5;20935:16;20926:25;;19884:1073;;;;;;:::o;20963:281::-;21021:5;21045:23;21063:4;21045:23;:::i;:::-;21037:31;;21089:25;21105:8;21089:25;:::i;:::-;21077:37;;21133:104;21170:66;21160:8;21154:4;21133:104;:::i;:::-;21124:113;;20963:281;;;;:::o;21250:177::-;21390:29;21386:1;21378:6;21374:14;21367:53;21250:177;:::o;21433:366::-;21575:3;21596:67;21660:2;21655:3;21596:67;:::i;:::-;21589:74;;21672:93;21761:3;21672:93;:::i;:::-;21790:2;21785:3;21781:12;21774:19;;21433:366;;;:::o;21805:419::-;21971:4;22009:2;21998:9;21994:18;21986:26;;22058:9;22052:4;22048:20;22044:1;22033:9;22029:17;22022:47;22086:131;22212:4;22086:131;:::i;:::-;22078:139;;21805:419;;;:::o;22230:161::-;22370:13;22366:1;22358:6;22354:14;22347:37;22230:161;:::o;22397:366::-;22539:3;22560:67;22624:2;22619:3;22560:67;:::i;:::-;22553:74;;22636:93;22725:3;22636:93;:::i;:::-;22754:2;22749:3;22745:12;22738:19;;22397:366;;;:::o;22769:419::-;22935:4;22973:2;22962:9;22958:18;22950:26;;23022:9;23016:4;23012:20;23008:1;22997:9;22993:17;22986:47;23050:131;23176:4;23050:131;:::i;:::-;23042:139;;22769:419;;;:::o;23194:173::-;23334:25;23330:1;23322:6;23318:14;23311:49;23194:173;:::o;23373:366::-;23515:3;23536:67;23600:2;23595:3;23536:67;:::i;:::-;23529:74;;23612:93;23701:3;23612:93;:::i;:::-;23730:2;23725:3;23721:12;23714:19;;23373:366;;;:::o;23745:419::-;23911:4;23949:2;23938:9;23934:18;23926:26;;23998:9;23992:4;23988:20;23984:1;23973:9;23969:17;23962:47;24026:131;24152:4;24026:131;:::i;:::-;24018:139;;23745:419;;;:::o;24170:775::-;24403:4;24441:3;24430:9;24426:19;24418:27;;24455:71;24523:1;24512:9;24508:17;24499:6;24455:71;:::i;:::-;24536:72;24604:2;24593:9;24589:18;24580:6;24536:72;:::i;:::-;24618;24686:2;24675:9;24671:18;24662:6;24618:72;:::i;:::-;24700;24768:2;24757:9;24753:18;24744:6;24700:72;:::i;:::-;24782:73;24850:3;24839:9;24835:19;24826:6;24782:73;:::i;:::-;24865;24933:3;24922:9;24918:19;24909:6;24865:73;:::i;:::-;24170:775;;;;;;;;;:::o;24951:148::-;25053:11;25090:3;25075:18;;24951:148;;;;:::o;25105:214::-;25245:66;25241:1;25233:6;25229:14;25222:90;25105:214;:::o;25325:400::-;25485:3;25506:84;25588:1;25583:3;25506:84;:::i;:::-;25499:91;;25599:93;25688:3;25599:93;:::i;:::-;25717:1;25712:3;25708:11;25701:18;;25325:400;;;:::o;25731:79::-;25770:7;25799:5;25788:16;;25731:79;;;:::o;25816:157::-;25921:45;25941:24;25959:5;25941:24;:::i;:::-;25921:45;:::i;:::-;25916:3;25909:58;25816:157;;:::o;25979:663::-;26220:3;26242:148;26386:3;26242:148;:::i;:::-;26235:155;;26400:75;26471:3;26462:6;26400:75;:::i;:::-;26500:2;26495:3;26491:12;26484:19;;26513:75;26584:3;26575:6;26513:75;:::i;:::-;26613:2;26608:3;26604:12;26597:19;;26633:3;26626:10;;25979:663;;;;;:::o;26648:545::-;26821:4;26859:3;26848:9;26844:19;26836:27;;26873:71;26941:1;26930:9;26926:17;26917:6;26873:71;:::i;:::-;26954:68;27018:2;27007:9;27003:18;26994:6;26954:68;:::i;:::-;27032:72;27100:2;27089:9;27085:18;27076:6;27032:72;:::i;:::-;27114;27182:2;27171:9;27167:18;27158:6;27114:72;:::i;:::-;26648:545;;;;;;;:::o;27199:164::-;27339:16;27335:1;27327:6;27323:14;27316:40;27199:164;:::o;27369:366::-;27511:3;27532:67;27596:2;27591:3;27532:67;:::i;:::-;27525:74;;27608:93;27697:3;27608:93;:::i;:::-;27726:2;27721:3;27717:12;27710:19;;27369:366;;;:::o;27741:419::-;27907:4;27945:2;27934:9;27930:18;27922:26;;27994:9;27988:4;27984:20;27980:1;27969:9;27965:17;27958:47;28022:131;28148:4;28022:131;:::i;:::-;28014:139;;27741:419;;;:::o;28166:225::-;28306:34;28302:1;28294:6;28290:14;28283:58;28375:8;28370:2;28362:6;28358:15;28351:33;28166:225;:::o;28397:366::-;28539:3;28560:67;28624:2;28619:3;28560:67;:::i;:::-;28553:74;;28636:93;28725:3;28636:93;:::i;:::-;28754:2;28749:3;28745:12;28738:19;;28397:366;;;:::o;28769:419::-;28935:4;28973:2;28962:9;28958:18;28950:26;;29022:9;29016:4;29012:20;29008:1;28997:9;28993:17;28986:47;29050:131;29176:4;29050:131;:::i;:::-;29042:139;;28769:419;;;:::o;29194:182::-;29334:34;29330:1;29322:6;29318:14;29311:58;29194:182;:::o;29382:366::-;29524:3;29545:67;29609:2;29604:3;29545:67;:::i;:::-;29538:74;;29621:93;29710:3;29621:93;:::i;:::-;29739:2;29734:3;29730:12;29723:19;;29382:366;;;:::o;29754:419::-;29920:4;29958:2;29947:9;29943:18;29935:26;;30007:9;30001:4;29997:20;29993:1;29982:9;29978:17;29971:47;30035:131;30161:4;30035:131;:::i;:::-;30027:139;;29754:419;;;:::o;30179:191::-;30219:3;30238:20;30256:1;30238:20;:::i;:::-;30233:25;;30272:20;30290:1;30272:20;:::i;:::-;30267:25;;30315:1;30312;30308:9;30301:16;;30336:3;30333:1;30330:10;30327:36;;;30343:18;;:::i;:::-;30327:36;30179:191;;;;:::o;30376:180::-;30424:77;30421:1;30414:88;30521:4;30518:1;30511:15;30545:4;30542:1;30535:15;30562:180;30610:77;30607:1;30600:88;30707:4;30704:1;30697:15;30731:4;30728:1;30721:15;30748:114;30815:6;30849:5;30843:12;30833:22;;30748:114;;;:::o;30868:184::-;30967:11;31001:6;30996:3;30989:19;31041:4;31036:3;31032:14;31017:29;;30868:184;;;;:::o;31058:132::-;31125:4;31148:3;31140:11;;31178:4;31173:3;31169:14;31161:22;;31058:132;;;:::o;31196:108::-;31273:24;31291:5;31273:24;:::i;:::-;31268:3;31261:37;31196:108;;:::o;31310:179::-;31379:10;31400:46;31442:3;31434:6;31400:46;:::i;:::-;31478:4;31473:3;31469:14;31455:28;;31310:179;;;;:::o;31495:113::-;31565:4;31597;31592:3;31588:14;31580:22;;31495:113;;;:::o;31644:732::-;31763:3;31792:54;31840:5;31792:54;:::i;:::-;31862:86;31941:6;31936:3;31862:86;:::i;:::-;31855:93;;31972:56;32022:5;31972:56;:::i;:::-;32051:7;32082:1;32067:284;32092:6;32089:1;32086:13;32067:284;;;32168:6;32162:13;32195:63;32254:3;32239:13;32195:63;:::i;:::-;32188:70;;32281:60;32334:6;32281:60;:::i;:::-;32271:70;;32127:224;32114:1;32111;32107:9;32102:14;;32067:284;;;32071:14;32367:3;32360:10;;31768:608;;;31644:732;;;;:::o;32382:831::-;32645:4;32683:3;32672:9;32668:19;32660:27;;32697:71;32765:1;32754:9;32750:17;32741:6;32697:71;:::i;:::-;32778:80;32854:2;32843:9;32839:18;32830:6;32778:80;:::i;:::-;32905:9;32899:4;32895:20;32890:2;32879:9;32875:18;32868:48;32933:108;33036:4;33027:6;32933:108;:::i;:::-;32925:116;;33051:72;33119:2;33108:9;33104:18;33095:6;33051:72;:::i;:::-;33133:73;33201:3;33190:9;33186:19;33177:6;33133:73;:::i;:::-;32382:831;;;;;;;;:::o;33219:147::-;33320:11;33357:3;33342:18;;33219:147;;;;:::o;33372:114::-;;:::o;33492:398::-;33651:3;33672:83;33753:1;33748:3;33672:83;:::i;:::-;33665:90;;33764:93;33853:3;33764:93;:::i;:::-;33882:1;33877:3;33873:11;33866:18;;33492:398;;;:::o;33896:379::-;34080:3;34102:147;34245:3;34102:147;:::i;:::-;34095:154;;34266:3;34259:10;;33896:379;;;:::o;34281:144::-;34333:4;34356:3;34348:11;;34379:3;34376:1;34369:14;34413:4;34410:1;34400:18;34392:26;;34281:144;;;:::o;34453:878::-;34558:3;34595:5;34589:12;34624:36;34650:9;34624:36;:::i;:::-;34676:88;34757:6;34752:3;34676:88;:::i;:::-;34669:95;;34795:1;34784:9;34780:17;34811:1;34806:166;;;;34986:1;34981:344;;;;34773:552;;34806:166;34890:4;34886:9;34875;34871:25;34866:3;34859:38;34952:6;34945:14;34938:22;34930:6;34926:35;34921:3;34917:45;34910:52;;34806:166;;34981:344;35048:41;35083:5;35048:41;:::i;:::-;35111:1;35125:154;35139:6;35136:1;35133:13;35125:154;;;35213:7;35207:14;35203:1;35198:3;35194:11;35187:35;35263:1;35254:7;35250:15;35239:26;;35161:4;35158:1;35154:12;35149:17;;35125:154;;;35308:6;35303:3;35299:16;35292:23;;34988:337;;34773:552;;34562:769;;34453:878;;;;:::o;35337:273::-;35468:3;35490:94;35580:3;35571:6;35490:94;:::i;:::-;35483:101;;35601:3;35594:10;;35337:273;;;;:::o;35616:664::-;35821:4;35859:3;35848:9;35844:19;35836:27;;35873:71;35941:1;35930:9;35926:17;35917:6;35873:71;:::i;:::-;35954:72;36022:2;36011:9;36007:18;35998:6;35954:72;:::i;:::-;36036;36104:2;36093:9;36089:18;36080:6;36036:72;:::i;:::-;36118;36186:2;36175:9;36171:18;36162:6;36118:72;:::i;:::-;36200:73;36268:3;36257:9;36253:19;36244:6;36200:73;:::i;:::-;35616:664;;;;;;;;:::o

Swarm Source

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