ETH Price: $2,370.19 (-2.14%)

Token

2048 (2048)
 

Overview

Max Total Supply

2,048 2048

Holders

19

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
ERC2048

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-08
*/

// SPDX-License-Identifier: MIT

/*
    2048 - The Original
    
    2048 Supply
    No decimals
    Ultra deflationary
    A single token cannot be split into parts. 
    On 2048, you can only transact/buy/sell Full tokens.

    The unique trading experience of the OG 2048 Tokens with ultra deflationary mechanics
*/

pragma solidity 0.8.23;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    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,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(string memory name_, string memory symbol_, uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract ERC2048 is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private isSwapping;

    address private treasuryWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    uint256 public lpBurnFrequency = 4 hours;
    uint256 public lastLpBurnTime;

    bool public limitsInEffect = true;
    bool public tradingActive = false;

    uint256 private launchedAt;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellBurnFee;

    uint256 public sellCounter;
    uint256 public sellAmountCounter;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(uint256 => uint256) private swapInBlock;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event AutoNukeLP();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event MarketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("2048", "2048", 0) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uint256 _buyTreasuryFee = 20;
        uint256 _buyBurnFee = 0;

        uint256 _sellTreasuryFee = 20;
        uint256 _sellBurnFee = 0;

        buyTreasuryFee = _buyTreasuryFee;
        buyBurnFee = _buyBurnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;

        sellTreasuryFee = _sellTreasuryFee;
        sellBurnFee = _sellBurnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;

        uint256 totalSupply = 2048;

        maxTransactionAmount = 20; // 0.5%
        swapTokensAtAmount = 1;
        maxSwapTokens = 64;

        treasuryWallet =0x9FD911B7814F3523A0921B983208C4Fa0d65B3cb;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(treasuryWallet), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(treasuryWallet), true);

        _mint(_msgSender(), totalSupply);
    }

    receive() external payable {}

    function addLiquidity() external payable onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _addLiquidity(balanceOf(address(this)), msg.value);
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function wlContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;
        _isExcludedFromFees[_whitelist] = isWL;
    }

    function excludeFromMaxTransaction(
        address excludedAddress,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[excludedAddress] = isExcluded;
    }

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxSwapTokens(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        maxSwapTokens = newAmount;
        return true;
    }

    function updateBuyFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;
        require(buyTotalFees <= 25);
    }

    function updateSellFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;
        require(sellTotalFees <= 25);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(
        address newMarketingWallet
    ) external onlyOwner {
        emit MarketingWalletUpdated(newMarketingWallet, treasuryWallet);
        treasuryWallet = newMarketingWallet;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 blockNumber = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !isSwapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !isSwapping &&
            (swapInBlock[blockNumber] <= 2) &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwapping = true;

            swapBack();

            ++swapInBlock[blockNumber];

            isSwapping = false;
        }

        if (
            !isSwapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !isSwapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 toTreasury = 0;
        uint256 toBurn = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        // cause there are no decimals, fees will be taken only on txs of 50 tokens and more
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                toBurn = (fees * sellBurnFee) / sellTotalFees;
                toTreasury = fees - toBurn;

                // on every 2/4/8/16/32/64 sells, if LP balance is > 8192/4096/2048/1024/512/256, take 1 token as burn tax no matter the amount being sold
                // will be triggered only if burn amount from fees is 0 for the current trade and the trade is taxable
                sellCounter++;
                uint256 lpBalance = balanceOf(uniswapV2Pair);
                if (toBurn == 0) {
                    if (
                        (lpBalance > 8192 && sellCounter >= 2) ||
                        (lpBalance > 4096 && sellCounter >= 4) ||
                        (lpBalance > 2048 && sellCounter >= 8) ||
                        (lpBalance > 1024 && sellCounter >= 16) ||
                        (lpBalance > 512 && sellCounter >= 32) ||
                        (lpBalance > 256 && sellCounter >= 64)
                    ) {
                        sellCounter = 0;
                        toBurn = 1;
                        fees += 1;
                    }
                }

                sellAmountCounter += amount;
            }
            // on buy
            else if (buyTotalFees > 0 && automatedMarketMakerPairs[from]) {
                fees = (amount * buyTotalFees) / 100;
                toBurn = (fees * buyBurnFee) / buyTotalFees;
                toTreasury = fees - toBurn;
            }

            if (toTreasury > 0) {
                super._transfer(from, address(this), toTreasury);
            }

            if (toBurn > 0) {
                super._transfer(from, address(0xdead), toBurn);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > maxSwapTokens) {
            contractBalance = maxSwapTokens;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        (success, ) = address(treasuryWallet).call{
            value: address(this).balance
        }("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function autoBurnLiquidityPairTokens() internal {
        uint256 liquidityPairBalance = balanceOf(uniswapV2Pair);

        if (liquidityPairBalance > 256) {
            if (sellAmountCounter < 1024) {
                if (block.timestamp < lastLpBurnTime + lpBurnFrequency) {
                    return;
                } else {
                    lastLpBurnTime = block.timestamp;
                }
            } else {
                sellAmountCounter = 0;
            }

            super._transfer(uniswapV2Pair, address(0xdead), 1);

            IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
            pair.sync();
            emit AutoNukeLP();
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmountCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSwapTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"wlContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052613840600b556001600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055503480156200004a575f80fd5b506040518060400160405280600481526020017f32303438000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f32303438000000000000000000000000000000000000000000000000000000008152505f8260039081620000c9919062000a5c565b508160049081620000db919062000a5c565b508060055f6101000a81548160ff021916908360ff160217905550505050620001196200010d6200036b60201b60201c565b6200037260201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001448160016200043760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f601490505f80601490505f8360108190555082601181905550601154601054620001a4919062000b6d565b600f819055508160138190555080601481905550601454601354620001ca919062000b6d565b6012819055505f6108009050601460088190555060016009819055506040600a81905550739fd911b7814f3523a0921b983208c4fa0d65b3cb60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000264620002566200051e60201b60201c565b60016200054760201b60201c565b620002773060016200054760201b60201c565b6200028c61dead60016200054760201b60201c565b620002c060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200054760201b60201c565b620002e2620002d46200051e60201b60201c565b60016200043760201b60201c565b620002f53060016200043760201b60201c565b6200030a61dead60016200043760201b60201c565b6200033e60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200043760201b60201c565b6200035f620003526200036b60201b60201c565b826200067e60201b60201c565b50505050505062000cf6565b5f33905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620004476200036b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200046d6200051e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004bd9062000c05565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005576200036b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200057d6200051e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005cd9062000c05565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000672919062000c41565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e69062000caa565b60405180910390fd5b620007025f8383620007ee60201b60201c565b8060025f82825462000715919062000b6d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000769919062000b6d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007cf919062000cdb565b60405180910390a3620007ea5f8383620007f360201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200087457607f821691505b6020821081036200088a57620008896200082f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008b1565b620008fa8683620008b1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009446200093e620009388462000912565b6200091b565b62000912565b9050919050565b5f819050919050565b6200095f8362000924565b620009776200096e826200094b565b848454620008bd565b825550505050565b5f90565b6200098d6200097f565b6200099a81848462000954565b505050565b5b81811015620009c157620009b55f8262000983565b600181019050620009a0565b5050565b601f82111562000a1057620009da8162000890565b620009e584620008a2565b81016020851015620009f5578190505b62000a0d62000a0485620008a2565b8301826200099f565b50505b505050565b5f82821c905092915050565b5f62000a325f198460080262000a15565b1980831691505092915050565b5f62000a4c838362000a21565b9150826002028217905092915050565b62000a6782620007f8565b67ffffffffffffffff81111562000a835762000a8262000802565b5b62000a8f82546200085c565b62000a9c828285620009c5565b5f60209050601f83116001811462000ad2575f841562000abd578287015190505b62000ac9858262000a3f565b86555062000b38565b601f19841662000ae28662000890565b5f5b8281101562000b0b5784890151825560018201915060208501945060208101905062000ae4565b8683101562000b2b578489015162000b27601f89168262000a21565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000b798262000912565b915062000b868362000912565b925082820190508082111562000ba15762000ba062000b40565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000bed60208362000ba7565b915062000bfa8262000bb7565b602082019050919050565b5f6020820190508181035f83015262000c1e8162000bdf565b9050919050565b5f8115159050919050565b62000c3b8162000c25565b82525050565b5f60208201905062000c565f83018462000c30565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c92601f8362000ba7565b915062000c9f8262000c5c565b602082019050919050565b5f6020820190508181035f83015262000cc38162000c84565b9050919050565b62000cd58162000912565b82525050565b5f60208201905062000cf05f83018462000cca565b92915050565b60805161453d62000d405f395f8181610c0401528181611acf01528181611b7801528181612cff01528181612d2601528181613310015281816133ef0152613416015261453d5ff3fe608060405260043610610280575f3560e01c80638a8c523c1161014e578063b431dd28116100c0578063d85ba06311610079578063d85ba06314610999578063dd62ed3e146109c3578063e2f45605146109ff578063e71dc3f514610a29578063e8078d9414610a53578063f2fde38b14610a5d57610287565b8063b431dd281461087d578063b62496f5146108a5578063bbc0c742146108e1578063c02466681461090b578063c8c8ebe414610933578063d257b34f1461095d57610287565b8063a457c2d711610112578063a457c2d71461075f578063a4c82a001461079b578063a4d0047d146107c5578063a9059cbb146107ef578063aacebbe31461082b578063adb873bd1461085357610287565b80638a8c523c146106915780638da5cb5b146106a757806395d89b41146106d15780639a7a23d6146106fb5780639b66731b1461072357610287565b806339509351116101f25780636b2fb124116101ab5780636b2fb1241461059957806370a08231146105c3578063715018a6146105ff578063751039fc146106155780637571336a1461063f57806378d527221461066757610287565b8063395093511461048d57806349bd5a5e146104c95780634a62bb65146104f35780635c068a8c1461051d57806366ca9b83146105475780636a486a8e1461056f57610287565b806318160ddd1161024457806318160ddd1461037f57806323b872dd146103a957806327c8f835146103e55780632c3e486c1461040f578063313ce5671461043957806336a1efe41461046357610287565b806302dbd8f81461028b57806306fdde03146102b3578063095ea7b3146102dd57806310d5de53146103195780631694505e1461035557610287565b3661028757005b5f80fd5b348015610296575f80fd5b506102b160048036038101906102ac91906134dd565b610a85565b005b3480156102be575f80fd5b506102c7610b38565b6040516102d491906135a5565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe919061361f565b610bc8565b6040516103109190613677565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a9190613690565b610be5565b60405161034c9190613677565b60405180910390f35b348015610360575f80fd5b50610369610c02565b6040516103769190613716565b60405180910390f35b34801561038a575f80fd5b50610393610c26565b6040516103a0919061373e565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613757565b610c2f565b6040516103dc9190613677565b60405180910390f35b3480156103f0575f80fd5b506103f9610d21565b60405161040691906137b6565b60405180910390f35b34801561041a575f80fd5b50610423610d27565b604051610430919061373e565b60405180910390f35b348015610444575f80fd5b5061044d610d2d565b60405161045a91906137ea565b60405180910390f35b34801561046e575f80fd5b50610477610d42565b604051610484919061373e565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae919061361f565b610d48565b6040516104c09190613677565b60405180910390f35b3480156104d4575f80fd5b506104dd610def565b6040516104ea91906137b6565b60405180910390f35b3480156104fe575f80fd5b50610507610e14565b6040516105149190613677565b60405180910390f35b348015610528575f80fd5b50610531610e26565b60405161053e919061373e565b60405180910390f35b348015610552575f80fd5b5061056d600480360381019061056891906134dd565b610e2c565b005b34801561057a575f80fd5b50610583610edf565b604051610590919061373e565b60405180910390f35b3480156105a4575f80fd5b506105ad610ee5565b6040516105ba919061373e565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e49190613690565b610eeb565b6040516105f6919061373e565b60405180910390f35b34801561060a575f80fd5b50610613610f30565b005b348015610620575f80fd5b50610629610fb7565b6040516106369190613677565b60405180910390f35b34801561064a575f80fd5b506106656004803603810190610660919061382d565b611054565b005b348015610672575f80fd5b5061067b611128565b604051610688919061373e565b60405180910390f35b34801561069c575f80fd5b506106a561112e565b005b3480156106b2575f80fd5b506106bb6111ce565b6040516106c891906137b6565b60405180910390f35b3480156106dc575f80fd5b506106e56111f7565b6040516106f291906135a5565b60405180910390f35b348015610706575f80fd5b50610721600480360381019061071c919061382d565b611287565b005b34801561072e575f80fd5b506107496004803603810190610744919061386b565b6113a0565b6040516107569190613677565b60405180910390f35b34801561076a575f80fd5b506107856004803603810190610780919061361f565b611447565b6040516107929190613677565b60405180910390f35b3480156107a6575f80fd5b506107af61152d565b6040516107bc919061373e565b60405180910390f35b3480156107d0575f80fd5b506107d9611533565b6040516107e6919061373e565b60405180910390f35b3480156107fa575f80fd5b506108156004803603810190610810919061361f565b611539565b6040516108229190613677565b60405180910390f35b348015610836575f80fd5b50610851600480360381019061084c9190613690565b611556565b005b34801561085e575f80fd5b50610867611690565b604051610874919061373e565b60405180910390f35b348015610888575f80fd5b506108a3600480360381019061089e919061382d565b611696565b005b3480156108b0575f80fd5b506108cb60048036038101906108c69190613690565b6117be565b6040516108d89190613677565b60405180910390f35b3480156108ec575f80fd5b506108f56117db565b6040516109029190613677565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c919061382d565b6117ee565b005b34801561093e575f80fd5b50610947611910565b604051610954919061373e565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e919061386b565b611916565b6040516109909190613677565b60405180910390f35b3480156109a4575f80fd5b506109ad6119bd565b6040516109ba919061373e565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e49190613896565b6119c3565b6040516109f6919061373e565b60405180910390f35b348015610a0a575f80fd5b50610a13611a45565b604051610a20919061373e565b60405180910390f35b348015610a34575f80fd5b50610a3d611a4b565b604051610a4a919061373e565b60405180910390f35b610a5b611a51565b005b348015610a68575f80fd5b50610a836004803603810190610a7e9190613690565b611d0b565b005b610a8d611e01565b73ffffffffffffffffffffffffffffffffffffffff16610aab6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061391e565b60405180910390fd5b8160138190555080601481905550601454601354610b1f9190613969565b60128190555060196012541115610b34575f80fd5b5050565b606060038054610b47906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b73906139c9565b8015610bbe5780601f10610b9557610100808354040283529160200191610bbe565b820191905f5260205f20905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b5f610bdb610bd4611e01565b8484611e08565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610c3b848484611fcb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c82611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890613a69565b60405180910390fd5b610d1585610d0d611e01565b858403611e08565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610de5610d54611e01565b848460015f610d61611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610de09190613969565b611e08565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e34611e01565b73ffffffffffffffffffffffffffffffffffffffff16610e526111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f9061391e565b60405180910390fd5b8160108190555080601181905550601154601054610ec69190613969565b600f819055506019600f541115610edb575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f38611e01565b73ffffffffffffffffffffffffffffffffffffffff16610f566111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061391e565b60405180910390fd5b610fb55f612b96565b565b5f610fc0611e01565b73ffffffffffffffffffffffffffffffffffffffff16610fde6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b9061391e565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61105c611e01565b73ffffffffffffffffffffffffffffffffffffffff1661107a6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c79061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611136611e01565b73ffffffffffffffffffffffffffffffffffffffff166111546111ce565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a19061391e565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611206906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054611232906139c9565b801561127d5780601f106112545761010080835404028352916020019161127d565b820191905f5260205f20905b81548152906001019060200180831161126057829003601f168201915b5050505050905090565b61128f611e01565b73ffffffffffffffffffffffffffffffffffffffff166112ad6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa9061391e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613af7565b60405180910390fd5b61139c8282612c5b565b5050565b5f6113a9611e01565b73ffffffffffffffffffffffffffffffffffffffff166113c76111ce565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061391e565b60405180910390fd5b6001821015801561142f575060808211155b611437575f80fd5b81600a8190555060019050919050565b5f8060015f611454611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613b85565b60405180910390fd5b611522611519611e01565b85858403611e08565b600191505092915050565b600c5481565b60155481565b5f61154c611545611e01565b8484611fcb565b6001905092915050565b61155e611e01565b73ffffffffffffffffffffffffffffffffffffffff1661157c6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c99061391e565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b61169e611e01565b73ffffffffffffffffffffffffffffffffffffffff166116bc6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117099061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6117f6611e01565b73ffffffffffffffffffffffffffffffffffffffff166118146111ce565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118619061391e565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119049190613677565b60405180910390a25050565b60085481565b5f61191f611e01565b73ffffffffffffffffffffffffffffffffffffffff1661193d6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a9061391e565b60405180910390fd5b600182101580156119a5575060808211155b6119ad575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611a59611e01565b73ffffffffffffffffffffffffffffffffffffffff16611a776111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac49061391e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613bb7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c039190613bb7565b6040518363ffffffff1660e01b8152600401611c20929190613be2565b6020604051808303815f875af1158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c609190613bb7565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ccb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611054565b611cf760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c5b565b611d09611d0330610eeb565b34612cf9565b565b611d13611e01565b73ffffffffffffffffffffffffffffffffffffffff16611d316111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e9061391e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90613c79565b60405180910390fd5b611dfe81612b96565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613d07565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90613d95565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe919061373e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613eb1565b60405180910390fd5b5f81036120be576120b983835f612dd7565b612b91565b5f439050600d5f9054906101000a900460ff16156125a6576120de6111ce565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561214c575061211c6111ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561218457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121be575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121d75750600660149054906101000a900460ff16155b156125a557600d60019054906101000a900460ff166122cb5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061228b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613f19565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612368575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240f576008548211156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613fa7565b60405180910390fd5b6008546123be84610eeb565b836123c99190613969565b111561240a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124019061400f565b60405180910390fd5b6125a4565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124ac575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124fb576008548211156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed9061409d565b60405180910390fd5b6125a3565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125a25760085461255584610eeb565b836125609190613969565b11156125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125989061400f565b60405180910390fd5b5b5b5b5b5b5f6125b030610eeb565b90505f60095482101590508080156125d55750600660149054906101000a900460ff16155b80156125f35750600260185f8581526020019081526020015f205411155b80156126465750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612699575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126ec575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612753576001600660146101000a81548160ff02191690831515021790555061271461304c565b60185f8481526020019081526020015f205f8154612731906140bb565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156127b65750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612809575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561281757612816613114565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128c6575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128cf575f90505b5f805f8315612b7e57601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292f57505f601254115b15612aa0576064601254896129449190614102565b61294e9190614170565b9250601254601454846129619190614102565b61296b9190614170565b9050808361297991906141a0565b915060155f81548092919061298d906140bb565b91905055505f6129bd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b90505f8203612a8257612000811180156129da5750600260155410155b806129f55750611000811180156129f45750600460155410155b5b80612a10575061080081118015612a0f5750600860155410155b5b80612a2b575061040081118015612a2a5750601060155410155b5b80612a46575061020081118015612a455750602060155410155b5b80612a61575061010081118015612a605750604060155410155b5b15612a81575f60158190555060019150600184612a7e9190613969565b93505b5b8860165f828254612a939190613969565b9250508190555050612b45565b5f600f54118015612af75750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b44576064600f5489612b0c9190614102565b612b169190614170565b9250600f5460115484612b299190614102565b612b339190614170565b90508083612b4191906141a0565b91505b5b5f821115612b5957612b588a3084612dd7565b5b5f811115612b6f57612b6e8a61dead83612dd7565b5b8288612b7b91906141a0565b97505b612b898a8a8a612dd7565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612d24307f000000000000000000000000000000000000000000000000000000000000000084611e08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d6d6111ce565b426040518863ffffffff1660e01b8152600401612d8f9695949392919061420c565b60606040518083038185885af1158015612dab573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612dd0919061427f565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c90613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaa90613eb1565b60405180910390fd5b612ebe838383613269565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f389061433f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612fcf9190613969565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613033919061373e565b60405180910390a361304684848461326e565b50505050565b5f61305630610eeb565b90505f808203613067575050613112565b600a5482111561307757600a5491505b5f82905061308481613273565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130c99061438a565b5f6040518083038185875af1925050503d805f8114613103576040519150601f19603f3d011682016040523d82523d5f602084013e613108565b606091505b5050809250505050505b565b5f61313f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b905061010081111561326557610400601654101561318057600b54600c546131679190613969565b4210156131745750613267565b42600c81905550613188565b5f6016819055505b6131b760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612dd7565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613221575f80fd5b505af1158015613233573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff81111561328f5761328e61439e565b5b6040519080825280602002602001820160405280156132bd5781602001602082028036833780820191505090505b50905030815f815181106132d4576132d36143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613377573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061339b9190613bb7565b816001815181106133af576133ae6143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613414307f000000000000000000000000000000000000000000000000000000000000000084611e08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134759594939291906144af565b5f604051808303815f87803b15801561348c575f80fd5b505af115801561349e573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6134bc816134aa565b81146134c6575f80fd5b50565b5f813590506134d7816134b3565b92915050565b5f80604083850312156134f3576134f26134a6565b5b5f613500858286016134c9565b9250506020613511858286016134c9565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613552578082015181840152602081019050613537565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135778261351b565b6135818185613525565b9350613591818560208601613535565b61359a8161355d565b840191505092915050565b5f6020820190508181035f8301526135bd818461356d565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135ee826135c5565b9050919050565b6135fe816135e4565b8114613608575f80fd5b50565b5f81359050613619816135f5565b92915050565b5f8060408385031215613635576136346134a6565b5b5f6136428582860161360b565b9250506020613653858286016134c9565b9150509250929050565b5f8115159050919050565b6136718161365d565b82525050565b5f60208201905061368a5f830184613668565b92915050565b5f602082840312156136a5576136a46134a6565b5b5f6136b28482850161360b565b91505092915050565b5f819050919050565b5f6136de6136d96136d4846135c5565b6136bb565b6135c5565b9050919050565b5f6136ef826136c4565b9050919050565b5f613700826136e5565b9050919050565b613710816136f6565b82525050565b5f6020820190506137295f830184613707565b92915050565b613738816134aa565b82525050565b5f6020820190506137515f83018461372f565b92915050565b5f805f6060848603121561376e5761376d6134a6565b5b5f61377b8682870161360b565b935050602061378c8682870161360b565b925050604061379d868287016134c9565b9150509250925092565b6137b0816135e4565b82525050565b5f6020820190506137c95f8301846137a7565b92915050565b5f60ff82169050919050565b6137e4816137cf565b82525050565b5f6020820190506137fd5f8301846137db565b92915050565b61380c8161365d565b8114613816575f80fd5b50565b5f8135905061382781613803565b92915050565b5f8060408385031215613843576138426134a6565b5b5f6138508582860161360b565b925050602061386185828601613819565b9150509250929050565b5f602082840312156138805761387f6134a6565b5b5f61388d848285016134c9565b91505092915050565b5f80604083850312156138ac576138ab6134a6565b5b5f6138b98582860161360b565b92505060206138ca8582860161360b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613908602083613525565b9150613913826138d4565b602082019050919050565b5f6020820190508181035f830152613935816138fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613973826134aa565b915061397e836134aa565b92508282019050808211156139965761399561393c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139e057607f821691505b6020821081036139f3576139f261399c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a53602883613525565b9150613a5e826139f9565b604082019050919050565b5f6020820190508181035f830152613a8081613a47565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613ae1603983613525565b9150613aec82613a87565b604082019050919050565b5f6020820190508181035f830152613b0e81613ad5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b6f602583613525565b9150613b7a82613b15565b604082019050919050565b5f6020820190508181035f830152613b9c81613b63565b9050919050565b5f81519050613bb1816135f5565b92915050565b5f60208284031215613bcc57613bcb6134a6565b5b5f613bd984828501613ba3565b91505092915050565b5f604082019050613bf55f8301856137a7565b613c0260208301846137a7565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c63602683613525565b9150613c6e82613c09565b604082019050919050565b5f6020820190508181035f830152613c9081613c57565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cf1602483613525565b9150613cfc82613c97565b604082019050919050565b5f6020820190508181035f830152613d1e81613ce5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d7f602283613525565b9150613d8a82613d25565b604082019050919050565b5f6020820190508181035f830152613dac81613d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e0d602583613525565b9150613e1882613db3565b604082019050919050565b5f6020820190508181035f830152613e3a81613e01565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e9b602383613525565b9150613ea682613e41565b604082019050919050565b5f6020820190508181035f830152613ec881613e8f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613f03601683613525565b9150613f0e82613ecf565b602082019050919050565b5f6020820190508181035f830152613f3081613ef7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f91603583613525565b9150613f9c82613f37565b604082019050919050565b5f6020820190508181035f830152613fbe81613f85565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613ff9601383613525565b915061400482613fc5565b602082019050919050565b5f6020820190508181035f83015261402681613fed565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614087603683613525565b91506140928261402d565b604082019050919050565b5f6020820190508181035f8301526140b48161407b565b9050919050565b5f6140c5826134aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140f7576140f661393c565b5b600182019050919050565b5f61410c826134aa565b9150614117836134aa565b9250828202614125816134aa565b9150828204841483151761413c5761413b61393c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61417a826134aa565b9150614185836134aa565b92508261419557614194614143565b5b828204905092915050565b5f6141aa826134aa565b91506141b5836134aa565b92508282039050818111156141cd576141cc61393c565b5b92915050565b5f819050919050565b5f6141f66141f16141ec846141d3565b6136bb565b6134aa565b9050919050565b614206816141dc565b82525050565b5f60c08201905061421f5f8301896137a7565b61422c602083018861372f565b61423960408301876141fd565b61424660608301866141fd565b61425360808301856137a7565b61426060a083018461372f565b979650505050505050565b5f81519050614279816134b3565b92915050565b5f805f60608486031215614296576142956134a6565b5b5f6142a38682870161426b565b93505060206142b48682870161426b565b92505060406142c58682870161426b565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614329602683613525565b9150614334826142cf565b604082019050919050565b5f6020820190508181035f8301526143568161431d565b9050919050565b5f81905092915050565b50565b5f6143755f8361435d565b915061438082614367565b5f82019050919050565b5f6143948261436a565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61442a816135e4565b82525050565b5f61443b8383614421565b60208301905092915050565b5f602082019050919050565b5f61445d826143f8565b6144678185614402565b935061447283614412565b805f5b838110156144a25781516144898882614430565b975061449483614447565b925050600181019050614475565b5085935050505092915050565b5f60a0820190506144c25f83018861372f565b6144cf60208301876141fd565b81810360408301526144e18186614453565b90506144f060608301856137a7565b6144fd608083018461372f565b969550505050505056fea264697066735822122040d61f35baeef4849ec35fe3030a2e1f7df1e1b5184a78382fa55e8d72b427c764736f6c63430008170033

Deployed Bytecode

0x608060405260043610610280575f3560e01c80638a8c523c1161014e578063b431dd28116100c0578063d85ba06311610079578063d85ba06314610999578063dd62ed3e146109c3578063e2f45605146109ff578063e71dc3f514610a29578063e8078d9414610a53578063f2fde38b14610a5d57610287565b8063b431dd281461087d578063b62496f5146108a5578063bbc0c742146108e1578063c02466681461090b578063c8c8ebe414610933578063d257b34f1461095d57610287565b8063a457c2d711610112578063a457c2d71461075f578063a4c82a001461079b578063a4d0047d146107c5578063a9059cbb146107ef578063aacebbe31461082b578063adb873bd1461085357610287565b80638a8c523c146106915780638da5cb5b146106a757806395d89b41146106d15780639a7a23d6146106fb5780639b66731b1461072357610287565b806339509351116101f25780636b2fb124116101ab5780636b2fb1241461059957806370a08231146105c3578063715018a6146105ff578063751039fc146106155780637571336a1461063f57806378d527221461066757610287565b8063395093511461048d57806349bd5a5e146104c95780634a62bb65146104f35780635c068a8c1461051d57806366ca9b83146105475780636a486a8e1461056f57610287565b806318160ddd1161024457806318160ddd1461037f57806323b872dd146103a957806327c8f835146103e55780632c3e486c1461040f578063313ce5671461043957806336a1efe41461046357610287565b806302dbd8f81461028b57806306fdde03146102b3578063095ea7b3146102dd57806310d5de53146103195780631694505e1461035557610287565b3661028757005b5f80fd5b348015610296575f80fd5b506102b160048036038101906102ac91906134dd565b610a85565b005b3480156102be575f80fd5b506102c7610b38565b6040516102d491906135a5565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe919061361f565b610bc8565b6040516103109190613677565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a9190613690565b610be5565b60405161034c9190613677565b60405180910390f35b348015610360575f80fd5b50610369610c02565b6040516103769190613716565b60405180910390f35b34801561038a575f80fd5b50610393610c26565b6040516103a0919061373e565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613757565b610c2f565b6040516103dc9190613677565b60405180910390f35b3480156103f0575f80fd5b506103f9610d21565b60405161040691906137b6565b60405180910390f35b34801561041a575f80fd5b50610423610d27565b604051610430919061373e565b60405180910390f35b348015610444575f80fd5b5061044d610d2d565b60405161045a91906137ea565b60405180910390f35b34801561046e575f80fd5b50610477610d42565b604051610484919061373e565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae919061361f565b610d48565b6040516104c09190613677565b60405180910390f35b3480156104d4575f80fd5b506104dd610def565b6040516104ea91906137b6565b60405180910390f35b3480156104fe575f80fd5b50610507610e14565b6040516105149190613677565b60405180910390f35b348015610528575f80fd5b50610531610e26565b60405161053e919061373e565b60405180910390f35b348015610552575f80fd5b5061056d600480360381019061056891906134dd565b610e2c565b005b34801561057a575f80fd5b50610583610edf565b604051610590919061373e565b60405180910390f35b3480156105a4575f80fd5b506105ad610ee5565b6040516105ba919061373e565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e49190613690565b610eeb565b6040516105f6919061373e565b60405180910390f35b34801561060a575f80fd5b50610613610f30565b005b348015610620575f80fd5b50610629610fb7565b6040516106369190613677565b60405180910390f35b34801561064a575f80fd5b506106656004803603810190610660919061382d565b611054565b005b348015610672575f80fd5b5061067b611128565b604051610688919061373e565b60405180910390f35b34801561069c575f80fd5b506106a561112e565b005b3480156106b2575f80fd5b506106bb6111ce565b6040516106c891906137b6565b60405180910390f35b3480156106dc575f80fd5b506106e56111f7565b6040516106f291906135a5565b60405180910390f35b348015610706575f80fd5b50610721600480360381019061071c919061382d565b611287565b005b34801561072e575f80fd5b506107496004803603810190610744919061386b565b6113a0565b6040516107569190613677565b60405180910390f35b34801561076a575f80fd5b506107856004803603810190610780919061361f565b611447565b6040516107929190613677565b60405180910390f35b3480156107a6575f80fd5b506107af61152d565b6040516107bc919061373e565b60405180910390f35b3480156107d0575f80fd5b506107d9611533565b6040516107e6919061373e565b60405180910390f35b3480156107fa575f80fd5b506108156004803603810190610810919061361f565b611539565b6040516108229190613677565b60405180910390f35b348015610836575f80fd5b50610851600480360381019061084c9190613690565b611556565b005b34801561085e575f80fd5b50610867611690565b604051610874919061373e565b60405180910390f35b348015610888575f80fd5b506108a3600480360381019061089e919061382d565b611696565b005b3480156108b0575f80fd5b506108cb60048036038101906108c69190613690565b6117be565b6040516108d89190613677565b60405180910390f35b3480156108ec575f80fd5b506108f56117db565b6040516109029190613677565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c919061382d565b6117ee565b005b34801561093e575f80fd5b50610947611910565b604051610954919061373e565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e919061386b565b611916565b6040516109909190613677565b60405180910390f35b3480156109a4575f80fd5b506109ad6119bd565b6040516109ba919061373e565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e49190613896565b6119c3565b6040516109f6919061373e565b60405180910390f35b348015610a0a575f80fd5b50610a13611a45565b604051610a20919061373e565b60405180910390f35b348015610a34575f80fd5b50610a3d611a4b565b604051610a4a919061373e565b60405180910390f35b610a5b611a51565b005b348015610a68575f80fd5b50610a836004803603810190610a7e9190613690565b611d0b565b005b610a8d611e01565b73ffffffffffffffffffffffffffffffffffffffff16610aab6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061391e565b60405180910390fd5b8160138190555080601481905550601454601354610b1f9190613969565b60128190555060196012541115610b34575f80fd5b5050565b606060038054610b47906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b73906139c9565b8015610bbe5780601f10610b9557610100808354040283529160200191610bbe565b820191905f5260205f20905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b5f610bdb610bd4611e01565b8484611e08565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f610c3b848484611fcb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c82611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890613a69565b60405180910390fd5b610d1585610d0d611e01565b858403611e08565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610de5610d54611e01565b848460015f610d61611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610de09190613969565b611e08565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e34611e01565b73ffffffffffffffffffffffffffffffffffffffff16610e526111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f9061391e565b60405180910390fd5b8160108190555080601181905550601154601054610ec69190613969565b600f819055506019600f541115610edb575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f38611e01565b73ffffffffffffffffffffffffffffffffffffffff16610f566111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061391e565b60405180910390fd5b610fb55f612b96565b565b5f610fc0611e01565b73ffffffffffffffffffffffffffffffffffffffff16610fde6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b9061391e565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61105c611e01565b73ffffffffffffffffffffffffffffffffffffffff1661107a6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c79061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611136611e01565b73ffffffffffffffffffffffffffffffffffffffff166111546111ce565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a19061391e565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611206906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054611232906139c9565b801561127d5780601f106112545761010080835404028352916020019161127d565b820191905f5260205f20905b81548152906001019060200180831161126057829003601f168201915b5050505050905090565b61128f611e01565b73ffffffffffffffffffffffffffffffffffffffff166112ad6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa9061391e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613af7565b60405180910390fd5b61139c8282612c5b565b5050565b5f6113a9611e01565b73ffffffffffffffffffffffffffffffffffffffff166113c76111ce565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061391e565b60405180910390fd5b6001821015801561142f575060808211155b611437575f80fd5b81600a8190555060019050919050565b5f8060015f611454611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613b85565b60405180910390fd5b611522611519611e01565b85858403611e08565b600191505092915050565b600c5481565b60155481565b5f61154c611545611e01565b8484611fcb565b6001905092915050565b61155e611e01565b73ffffffffffffffffffffffffffffffffffffffff1661157c6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c99061391e565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b61169e611e01565b73ffffffffffffffffffffffffffffffffffffffff166116bc6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117099061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6117f6611e01565b73ffffffffffffffffffffffffffffffffffffffff166118146111ce565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118619061391e565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119049190613677565b60405180910390a25050565b60085481565b5f61191f611e01565b73ffffffffffffffffffffffffffffffffffffffff1661193d6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a9061391e565b60405180910390fd5b600182101580156119a5575060808211155b6119ad575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611a59611e01565b73ffffffffffffffffffffffffffffffffffffffff16611a776111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac49061391e565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613bb7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c039190613bb7565b6040518363ffffffff1660e01b8152600401611c20929190613be2565b6020604051808303815f875af1158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c609190613bb7565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ccb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611054565b611cf760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c5b565b611d09611d0330610eeb565b34612cf9565b565b611d13611e01565b73ffffffffffffffffffffffffffffffffffffffff16611d316111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e9061391e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90613c79565b60405180910390fd5b611dfe81612b96565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613d07565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90613d95565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe919061373e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613eb1565b60405180910390fd5b5f81036120be576120b983835f612dd7565b612b91565b5f439050600d5f9054906101000a900460ff16156125a6576120de6111ce565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561214c575061211c6111ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561218457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121be575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121d75750600660149054906101000a900460ff16155b156125a557600d60019054906101000a900460ff166122cb5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061228b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613f19565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612368575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240f576008548211156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613fa7565b60405180910390fd5b6008546123be84610eeb565b836123c99190613969565b111561240a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124019061400f565b60405180910390fd5b6125a4565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124ac575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124fb576008548211156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed9061409d565b60405180910390fd5b6125a3565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125a25760085461255584610eeb565b836125609190613969565b11156125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125989061400f565b60405180910390fd5b5b5b5b5b5b5f6125b030610eeb565b90505f60095482101590508080156125d55750600660149054906101000a900460ff16155b80156125f35750600260185f8581526020019081526020015f205411155b80156126465750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612699575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126ec575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612753576001600660146101000a81548160ff02191690831515021790555061271461304c565b60185f8481526020019081526020015f205f8154612731906140bb565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156127b65750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612809575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561281757612816613114565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128c6575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128cf575f90505b5f805f8315612b7e57601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292f57505f601254115b15612aa0576064601254896129449190614102565b61294e9190614170565b9250601254601454846129619190614102565b61296b9190614170565b9050808361297991906141a0565b915060155f81548092919061298d906140bb565b91905055505f6129bd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b90505f8203612a8257612000811180156129da5750600260155410155b806129f55750611000811180156129f45750600460155410155b5b80612a10575061080081118015612a0f5750600860155410155b5b80612a2b575061040081118015612a2a5750601060155410155b5b80612a46575061020081118015612a455750602060155410155b5b80612a61575061010081118015612a605750604060155410155b5b15612a81575f60158190555060019150600184612a7e9190613969565b93505b5b8860165f828254612a939190613969565b9250508190555050612b45565b5f600f54118015612af75750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b44576064600f5489612b0c9190614102565b612b169190614170565b9250600f5460115484612b299190614102565b612b339190614170565b90508083612b4191906141a0565b91505b5b5f821115612b5957612b588a3084612dd7565b5b5f811115612b6f57612b6e8a61dead83612dd7565b5b8288612b7b91906141a0565b97505b612b898a8a8a612dd7565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612d24307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e08565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d6d6111ce565b426040518863ffffffff1660e01b8152600401612d8f9695949392919061420c565b60606040518083038185885af1158015612dab573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612dd0919061427f565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c90613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaa90613eb1565b60405180910390fd5b612ebe838383613269565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f389061433f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612fcf9190613969565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613033919061373e565b60405180910390a361304684848461326e565b50505050565b5f61305630610eeb565b90505f808203613067575050613112565b600a5482111561307757600a5491505b5f82905061308481613273565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130c99061438a565b5f6040518083038185875af1925050503d805f8114613103576040519150601f19603f3d011682016040523d82523d5f602084013e613108565b606091505b5050809250505050505b565b5f61313f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b905061010081111561326557610400601654101561318057600b54600c546131679190613969565b4210156131745750613267565b42600c81905550613188565b5f6016819055505b6131b760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612dd7565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613221575f80fd5b505af1158015613233573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff81111561328f5761328e61439e565b5b6040519080825280602002602001820160405280156132bd5781602001602082028036833780820191505090505b50905030815f815181106132d4576132d36143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613377573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061339b9190613bb7565b816001815181106133af576133ae6143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613414307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e08565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134759594939291906144af565b5f604051808303815f87803b15801561348c575f80fd5b505af115801561349e573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6134bc816134aa565b81146134c6575f80fd5b50565b5f813590506134d7816134b3565b92915050565b5f80604083850312156134f3576134f26134a6565b5b5f613500858286016134c9565b9250506020613511858286016134c9565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613552578082015181840152602081019050613537565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135778261351b565b6135818185613525565b9350613591818560208601613535565b61359a8161355d565b840191505092915050565b5f6020820190508181035f8301526135bd818461356d565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135ee826135c5565b9050919050565b6135fe816135e4565b8114613608575f80fd5b50565b5f81359050613619816135f5565b92915050565b5f8060408385031215613635576136346134a6565b5b5f6136428582860161360b565b9250506020613653858286016134c9565b9150509250929050565b5f8115159050919050565b6136718161365d565b82525050565b5f60208201905061368a5f830184613668565b92915050565b5f602082840312156136a5576136a46134a6565b5b5f6136b28482850161360b565b91505092915050565b5f819050919050565b5f6136de6136d96136d4846135c5565b6136bb565b6135c5565b9050919050565b5f6136ef826136c4565b9050919050565b5f613700826136e5565b9050919050565b613710816136f6565b82525050565b5f6020820190506137295f830184613707565b92915050565b613738816134aa565b82525050565b5f6020820190506137515f83018461372f565b92915050565b5f805f6060848603121561376e5761376d6134a6565b5b5f61377b8682870161360b565b935050602061378c8682870161360b565b925050604061379d868287016134c9565b9150509250925092565b6137b0816135e4565b82525050565b5f6020820190506137c95f8301846137a7565b92915050565b5f60ff82169050919050565b6137e4816137cf565b82525050565b5f6020820190506137fd5f8301846137db565b92915050565b61380c8161365d565b8114613816575f80fd5b50565b5f8135905061382781613803565b92915050565b5f8060408385031215613843576138426134a6565b5b5f6138508582860161360b565b925050602061386185828601613819565b9150509250929050565b5f602082840312156138805761387f6134a6565b5b5f61388d848285016134c9565b91505092915050565b5f80604083850312156138ac576138ab6134a6565b5b5f6138b98582860161360b565b92505060206138ca8582860161360b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613908602083613525565b9150613913826138d4565b602082019050919050565b5f6020820190508181035f830152613935816138fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613973826134aa565b915061397e836134aa565b92508282019050808211156139965761399561393c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139e057607f821691505b6020821081036139f3576139f261399c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a53602883613525565b9150613a5e826139f9565b604082019050919050565b5f6020820190508181035f830152613a8081613a47565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613ae1603983613525565b9150613aec82613a87565b604082019050919050565b5f6020820190508181035f830152613b0e81613ad5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b6f602583613525565b9150613b7a82613b15565b604082019050919050565b5f6020820190508181035f830152613b9c81613b63565b9050919050565b5f81519050613bb1816135f5565b92915050565b5f60208284031215613bcc57613bcb6134a6565b5b5f613bd984828501613ba3565b91505092915050565b5f604082019050613bf55f8301856137a7565b613c0260208301846137a7565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c63602683613525565b9150613c6e82613c09565b604082019050919050565b5f6020820190508181035f830152613c9081613c57565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cf1602483613525565b9150613cfc82613c97565b604082019050919050565b5f6020820190508181035f830152613d1e81613ce5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d7f602283613525565b9150613d8a82613d25565b604082019050919050565b5f6020820190508181035f830152613dac81613d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e0d602583613525565b9150613e1882613db3565b604082019050919050565b5f6020820190508181035f830152613e3a81613e01565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e9b602383613525565b9150613ea682613e41565b604082019050919050565b5f6020820190508181035f830152613ec881613e8f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613f03601683613525565b9150613f0e82613ecf565b602082019050919050565b5f6020820190508181035f830152613f3081613ef7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f91603583613525565b9150613f9c82613f37565b604082019050919050565b5f6020820190508181035f830152613fbe81613f85565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613ff9601383613525565b915061400482613fc5565b602082019050919050565b5f6020820190508181035f83015261402681613fed565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614087603683613525565b91506140928261402d565b604082019050919050565b5f6020820190508181035f8301526140b48161407b565b9050919050565b5f6140c5826134aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140f7576140f661393c565b5b600182019050919050565b5f61410c826134aa565b9150614117836134aa565b9250828202614125816134aa565b9150828204841483151761413c5761413b61393c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61417a826134aa565b9150614185836134aa565b92508261419557614194614143565b5b828204905092915050565b5f6141aa826134aa565b91506141b5836134aa565b92508282039050818111156141cd576141cc61393c565b5b92915050565b5f819050919050565b5f6141f66141f16141ec846141d3565b6136bb565b6134aa565b9050919050565b614206816141dc565b82525050565b5f60c08201905061421f5f8301896137a7565b61422c602083018861372f565b61423960408301876141fd565b61424660608301866141fd565b61425360808301856137a7565b61426060a083018461372f565b979650505050505050565b5f81519050614279816134b3565b92915050565b5f805f60608486031215614296576142956134a6565b5b5f6142a38682870161426b565b93505060206142b48682870161426b565b92505060406142c58682870161426b565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614329602683613525565b9150614334826142cf565b604082019050919050565b5f6020820190508181035f8301526143568161431d565b9050919050565b5f81905092915050565b50565b5f6143755f8361435d565b915061438082614367565b5f82019050919050565b5f6143948261436a565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61442a816135e4565b82525050565b5f61443b8383614421565b60208301905092915050565b5f602082019050919050565b5f61445d826143f8565b6144678185614402565b935061447283614412565b805f5b838110156144a25781516144898882614430565b975061449483614447565b925050600181019050614475565b5085935050505092915050565b5f60a0820190506144c25f83018861372f565b6144cf60208301876141fd565b81810360408301526144e18186614453565b90506144f060608301856137a7565b6144fd608083018461372f565b969550505050505056fea264697066735822122040d61f35baeef4849ec35fe3030a2e1f7df1e1b5184a78382fa55e8d72b427c764736f6c63430008170033

Deployed Bytecode Sourcemap

13202:13237:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18288:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8259:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9246:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14189:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13244:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8587:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9448:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13337:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13589:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8479:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13552:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9985:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13302:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13674:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13825:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18002:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13895:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13930:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8703:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7219:103;;;;;;;;;;;;;:::i;:::-;;17010:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17333:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14035:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16883:119;;;;;;;;;;;;;:::i;:::-;;6996:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8367:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18771:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17776:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10283:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13636:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14002:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8854:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19281:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13967:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17139:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14261:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13714:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18581:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13470:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17540:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13791:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9062:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13512:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13861:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16089:415;;;:::i;:::-;;7330:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18288:285;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18425:12:::1;18407:15;:30;;;;18462:8;18448:11;:22;;;;18515:11;;18497:15;;:29;;;;:::i;:::-;18481:13;:45;;;;18562:2;18545:13;;:19;;18537:28;;;::::0;::::1;;18288:285:::0;;:::o;8259:100::-;8313:13;8346:5;8339:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8259:100;:::o;9246:194::-;9354:4;9371:39;9380:12;:10;:12::i;:::-;9394:7;9403:6;9371:8;:39::i;:::-;9428:4;9421:11;;9246:194;;;;:::o;14189:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;13244:51::-;;;:::o;8587:108::-;8648:7;8675:12;;8668:19;;8587:108;:::o;9448:529::-;9588:4;9605:36;9615:6;9623:9;9634:6;9605:9;:36::i;:::-;9654:24;9681:11;:19;9693:6;9681:19;;;;;;;;;;;;;;;:33;9701:12;:10;:12::i;:::-;9681:33;;;;;;;;;;;;;;;;9654:60;;9767:6;9747:16;:26;;9725:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;9877:57;9886:6;9894:12;:10;:12::i;:::-;9927:6;9908:16;:25;9877:8;:57::i;:::-;9965:4;9958:11;;;9448:529;;;;;:::o;13337:53::-;13383:6;13337:53;:::o;13589:40::-;;;;:::o;8479:100::-;8537:5;8562:9;;;;;;;;;;;8555:16;;8479:100;:::o;13552:28::-;;;;:::o;9985:290::-;10098:4;10115:130;10138:12;:10;:12::i;:::-;10165:7;10224:10;10187:11;:25;10199:12;:10;:12::i;:::-;10187:25;;;;;;;;;;;;;;;:34;10213:7;10187:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10115:8;:130::i;:::-;10263:4;10256:11;;9985:290;;;;:::o;13302:28::-;;;;;;;;;;;;;:::o;13674:33::-;;;;;;;;;;;;;:::o;13825:29::-;;;;:::o;18002:278::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18137:12:::1;18120:14;:29;;;;18173:8;18160:10;:21;;;;18224:10;;18207:14;;:27;;;;:::i;:::-;18192:12;:42;;;;18269:2;18253:12;;:18;;18245:27;;;::::0;::::1;;18002:278:::0;;:::o;13895:28::-;;;;:::o;13930:30::-;;;;:::o;8703:143::-;8793:7;8820:9;:18;8830:7;8820:18;;;;;;;;;;;;;;;;8813:25;;8703:143;;;:::o;7219:103::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7284:30:::1;7311:1;7284:18;:30::i;:::-;7219:103::o:0;17010:121::-;17062:4;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17096:5:::1;17079:14;;:22;;;;;;;;;;;;;;;;;;17119:4;17112:11;;17010:121:::0;:::o;17333:199::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17514:10:::1;17463:31;:48;17495:15;17463:48;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;17333:199:::0;;:::o;14035:32::-;;;;:::o;16883:119::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16954:4:::1;16938:13;;:20;;;;;;;;;;;;;;;;;;16982:12;16969:10;:25;;;;16883:119::o:0;6996:87::-;7042:7;7069:6;;;;;;;;;;;7062:13;;6996:87;:::o;8367:104::-;8423:13;8456:7;8449:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8367:104;:::o;18771:306::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18917:13:::1;;;;;;;;;;;18909:21;;:4;:21;;::::0;18887:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19028:41;19057:4;19063:5;19028:28;:41::i;:::-;18771:306:::0;;:::o;17776:218::-;17868:4;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17906:1:::1;17893:9;:14;;:34;;;;;17924:3;17911:9;:16;;17893:34;17885:43;;;::::0;::::1;;17955:9;17939:13;:25;;;;17982:4;17975:11;;17776:218:::0;;;:::o;10283:475::-;10401:4;10418:24;10445:11;:25;10457:12;:10;:12::i;:::-;10445:25;;;;;;;;;;;;;;;:34;10471:7;10445:34;;;;;;;;;;;;;;;;10418:61;;10532:15;10512:16;:35;;10490:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;10648:67;10657:12;:10;:12::i;:::-;10671:7;10699:15;10680:16;:34;10648:8;:67::i;:::-;10746:4;10739:11;;;10283:475;;;;:::o;13636:29::-;;;;:::o;14002:26::-;;;;:::o;8854:200::-;8965:4;8982:42;8992:12;:10;:12::i;:::-;9006:9;9017:6;8982:9;:42::i;:::-;9042:4;9035:11;;8854:200;;;;:::o;19281:222::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19434:14:::1;;;;;;;;;;;19391:58;;19414:18;19391:58;;;;;;;;;;;;19477:18;19460:14;;:35;;;;;;;;;;;;;;;;;;19281:222:::0;:::o;13967:26::-;;;;:::o;17139:186::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17264:4:::1;17218:31;:43;17250:10;17218:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;17313:4;17279:19;:31;17299:10;17279:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;17139:186:::0;;:::o;14261:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;13714:33::-;;;;;;;;;;;;;:::o;18581:182::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18697:8:::1;18666:19;:28;18686:7;18666:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18737:7;18721:34;;;18746:8;18721:34;;;;;;:::i;:::-;;;;;;;;18581:182:::0;;:::o;13470:35::-;;;;:::o;17540:228::-;17637:4;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17675:1:::1;17662:9;:14;;:34;;;;;17693:3;17680:9;:16;;17662:34;17654:43;;;::::0;::::1;;17729:9;17708:18;:30;;;;17756:4;17749:11;;17540:228:::0;;;:::o;13791:27::-;;;;:::o;9062:176::-;9176:7;9203:11;:18;9215:5;9203:18;;;;;;;;;;;;;;;:27;9222:7;9203:27;;;;;;;;;;;;;;;;9196:34;;9062:176;;;;:::o;13512:33::-;;;;:::o;13861:25::-;;;;:::o;16089:415::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16185:15:::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16167:55;;;16245:4;16265:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16167:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16151:13;;:147;;;;;;;;;;;;;;;;;;16309:55;16343:13;;;;;;;;;;;16359:4;16309:25;:55::i;:::-;16375:58;16412:13;;;;;;;;;;;16428:4;16375:28;:58::i;:::-;16446:50;16460:24;16478:4;16460:9;:24::i;:::-;16486:9;16446:13;:50::i;:::-;16089:415::o:0;7330:238::-;7142:12;:10;:12::i;:::-;7131:23;;:7;:5;:7::i;:::-;:23;;;7123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7453:1:::1;7433:22;;:8;:22;;::::0;7411:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7532:28;7551:8;7532:18;:28::i;:::-;7330:238:::0;:::o;6517:98::-;6570:7;6597:10;6590:17;;6517:98;:::o;12550:380::-;12703:1;12686:19;;:5;:19;;;12678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12784:1;12765:21;;:7;:21;;;12757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12868:6;12838:11;:18;12850:5;12838:18;;;;;;;;;;;;;;;:27;12857:7;12838:27;;;;;;;;;;;;;;;:36;;;;12906:7;12890:32;;12899:5;12890:32;;;12915:6;12890:32;;;;;;:::i;:::-;;;;;;;;12550:380;;;:::o;19511:5212::-;19659:1;19643:18;;:4;:18;;;19635:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19736:1;19722:16;;:2;:16;;;19714:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19805:1;19795:6;:11;19791:93;;19823:28;19839:4;19845:2;19849:1;19823:15;:28::i;:::-;19866:7;;19791:93;19896:19;19918:12;19896:34;;19947:14;;;;;;;;;;;19943:1661;;;20008:7;:5;:7::i;:::-;20000:15;;:4;:15;;;;:49;;;;;20042:7;:5;:7::i;:::-;20036:13;;:2;:13;;;;20000:49;:86;;;;;20084:1;20070:16;;:2;:16;;;;20000:86;:128;;;;;20121:6;20107:21;;:2;:21;;;;20000:128;:160;;;;;20150:10;;;;;;;;;;;20149:11;20000:160;19978:1615;;;20200:13;;;;;;;;;;;20195:223;;20272:19;:25;20292:4;20272:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20301:19;:23;20321:2;20301:23;;;;;;;;;;;;;;;;;;;;;;;;;20272:52;20238:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;20195:223;20464:25;:31;20490:4;20464:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;20521:31;:35;20553:2;20521:35;;;;;;;;;;;;;;;;;;;;;;;;;20520:36;20464:92;20438:1140;;;20643:20;;20633:6;:30;;20599:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;20851:20;;20834:13;20844:2;20834:9;:13::i;:::-;20825:6;:22;;;;:::i;:::-;:46;;20791:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;20438:1140;;;21011:25;:29;21037:2;21011:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21066:31;:37;21098:4;21066:37;;;;;;;;;;;;;;;;;;;;;;;;;21065:38;21011:92;20985:593;;;21190:20;;21180:6;:30;;21146:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;20985:593;;;21347:31;:35;21379:2;21347:35;;;;;;;;;;;;;;;;;;;;;;;;;21342:236;;21467:20;;21450:13;21460:2;21450:9;:13::i;:::-;21441:6;:22;;;;:::i;:::-;:46;;21407:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;21342:236;20985:593;20438:1140;19978:1615;19943:1661;21616:28;21647:24;21665:4;21647:9;:24::i;:::-;21616:55;;21682:12;21721:18;;21697:20;:42;;21682:57;;21770:7;:35;;;;;21795:10;;;;;;;;;;;21794:11;21770:35;:83;;;;;21851:1;21823:11;:24;21835:11;21823:24;;;;;;;;;;;;:29;;21770:83;:132;;;;;21871:25;:31;21897:4;21871:31;;;;;;;;;;;;;;;;;;;;;;;;;21870:32;21770:132;:175;;;;;21920:19;:25;21940:4;21920:25;;;;;;;;;;;;;;;;;;;;;;;;;21919:26;21770:175;:216;;;;;21963:19;:23;21983:2;21963:23;;;;;;;;;;;;;;;;;;;;;;;;;21962:24;21770:216;21752:395;;;22026:4;22013:10;;:17;;;;;;;;;;;;;;;;;;22047:10;:8;:10::i;:::-;22076:11;:24;22088:11;22076:24;;;;;;;;;;;;22074:26;;;;;:::i;:::-;;;;;;;;22130:5;22117:10;;:18;;;;;;;;;;;;;;;;;;21752:395;22178:10;;;;;;;;;;;22177:11;:57;;;;;22205:25;:29;22231:2;22205:29;;;;;;;;;;;;;;;;;;;;;;;;;22177:57;:100;;;;;22252:19;:25;22272:4;22252:25;;;;;;;;;;;;;;;;;;;;;;;;;22251:26;22177:100;22159:186;;;22304:29;:27;:29::i;:::-;22159:186;22357:12;22373:10;;;;;;;;;;;22372:11;22357:26;;22400:19;:25;22420:4;22400:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22429:19;:23;22449:2;22429:23;;;;;;;;;;;;;;;;;;;;;;;;;22400:52;22396:100;;;22479:5;22469:15;;22396:100;22508:12;22535:18;22568:14;22769:7;22765:1905;;;22821:25;:29;22847:2;22821:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22870:1;22854:13;;:17;22821:50;22817:1579;;;22926:3;22909:13;;22900:6;:22;;;;:::i;:::-;22899:30;;;;:::i;:::-;22892:37;;22980:13;;22965:11;;22958:4;:18;;;;:::i;:::-;22957:36;;;;:::i;:::-;22948:45;;23032:6;23025:4;:13;;;;:::i;:::-;23012:26;;23335:11;;:13;;;;;;;;;:::i;:::-;;;;;;23367:17;23387:24;23397:13;;;;;;;;;;;23387:9;:24::i;:::-;23367:44;;23444:1;23434:6;:11;23430:626;;23513:4;23501:9;:16;:36;;;;;23536:1;23521:11;;:16;;23501:36;23500:105;;;;23580:4;23568:9;:16;:36;;;;;23603:1;23588:11;;:16;;23568:36;23500:105;:172;;;;23647:4;23635:9;:16;:36;;;;;23670:1;23655:11;;:16;;23635:36;23500:172;:240;;;;23714:4;23702:9;:16;:37;;;;;23737:2;23722:11;;:17;;23702:37;23500:240;:307;;;;23782:3;23770:9;:15;:36;;;;;23804:2;23789:11;;:17;;23770:36;23500:307;:374;;;;23849:3;23837:9;:15;:36;;;;;23871:2;23856:11;;:17;;23837:36;23500:374;23470:567;;;23939:1;23925:11;:15;;;;23976:1;23967:10;;24012:1;24004:9;;;;;:::i;:::-;;;23470:567;23430:626;24097:6;24076:17;;:27;;;;;;;:::i;:::-;;;;;;;;22873:1246;22817:1579;;;24180:1;24165:12;;:16;:51;;;;;24185:25;:31;24211:4;24185:31;;;;;;;;;;;;;;;;;;;;;;;;;24165:51;24161:235;;;24270:3;24254:12;;24245:6;:21;;;;:::i;:::-;24244:29;;;;:::i;:::-;24237:36;;24323:12;;24309:10;;24302:4;:17;;;;:::i;:::-;24301:34;;;;:::i;:::-;24292:43;;24374:6;24367:4;:13;;;;:::i;:::-;24354:26;;24161:235;22817:1579;24429:1;24416:10;:14;24412:103;;;24451:48;24467:4;24481;24488:10;24451:15;:48::i;:::-;24412:103;24544:1;24535:6;:10;24531:97;;;24566:46;24582:4;24596:6;24605;24566:15;:46::i;:::-;24531:97;24654:4;24644:14;;;;;:::i;:::-;;;22765:1905;24682:33;24698:4;24704:2;24708:6;24682:15;:33::i;:::-;19624:5099;;;;;;;19511:5212;;;;:::o;7576:191::-;7650:16;7669:6;;;;;;;;;;;7650:25;;7695:8;7686:6;;:17;;;;;;;;;;;;;;;;;;7750:8;7719:40;;7740:8;7719:40;;;;;;;;;;;;7639:128;7576:191;:::o;19085:188::-;19202:5;19168:25;:31;19194:4;19168:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19259:5;19225:40;;19253:4;19225:40;;;;;;;;;;;;19085:188;;:::o;16512:363::-;16594:62;16611:4;16626:15;16644:11;16594:8;:62::i;:::-;16669:15;:31;;;16708:9;16741:4;16761:11;16787:1;16803;16819:7;:5;:7::i;:::-;16841:15;16669:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16512:363;;:::o;10766:770::-;10924:1;10906:20;;:6;:20;;;10898:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11008:1;10987:23;;:9;:23;;;10979:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11063:47;11084:6;11092:9;11103:6;11063:20;:47::i;:::-;11123:21;11147:9;:17;11157:6;11147:17;;;;;;;;;;;;;;;;11123:41;;11214:6;11197:13;:23;;11175:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;11358:6;11342:13;:22;11322:9;:17;11332:6;11322:17;;;;;;;;;;;;;;;:42;;;;11410:6;11386:9;:20;11396:9;11386:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;11451:9;11434:35;;11443:6;11434:35;;;11462:6;11434:35;;;;;;:::i;:::-;;;;;;;;11482:46;11502:6;11510:9;11521:6;11482:19;:46::i;:::-;10887:649;10766:770;;;:::o;24731:517::-;24770:23;24796:24;24814:4;24796:9;:24::i;:::-;24770:50;;24831:12;24879:1;24860:15;:20;24856:59;;24897:7;;;;24856:59;24949:13;;24931:15;:31;24927:95;;;24997:13;;24979:31;;24927:95;25034:26;25063:15;25034:44;;25091:36;25108:18;25091:16;:36::i;:::-;25162:14;;;;;;;;;;;25154:28;;25204:21;25154:86;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25140:100;;;;;24759:489;;;24731:517;:::o;25739:697::-;25798:28;25829:24;25839:13;;;;;;;;;;;25829:9;:24::i;:::-;25798:55;;25893:3;25870:20;:26;25866:563;;;25937:4;25917:17;;:24;25913:312;;;26001:15;;25984:14;;:32;;;;:::i;:::-;25966:15;:50;25962:186;;;26041:7;;;25962:186;26113:15;26096:14;:32;;;;25913:312;;;26208:1;26188:17;:21;;;;25913:312;26241:50;26257:13;;;;;;;;;;;26280:6;26289:1;26241:15;:50::i;:::-;26308:19;26345:13;;;;;;;;;;;26308:51;;26374:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26405:12;;;;;;;;;;25898:531;25866:563;25787:649;25739:697;:::o;12938:125::-;;;;:::o;13071:124::-;;;;:::o;25256:475::-;25322:21;25360:1;25346:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25322:40;;25391:4;25373;25378:1;25373:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25417:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25407:4;25412:1;25407:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25452:62;25469:4;25484:15;25502:11;25452:8;:62::i;:::-;25527:15;:66;;;25608:11;25634:1;25650:4;25677;25697:15;25527:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25311:420;25256:475;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:152::-;4683:9;4716:37;4747:5;4716:37;:::i;:::-;4703:50;;4607:152;;;:::o;4765:183::-;4878:63;4935:5;4878:63;:::i;:::-;4873:3;4866:76;4765:183;;:::o;4954:274::-;5073:4;5111:2;5100:9;5096:18;5088:26;;5124:97;5218:1;5207:9;5203:17;5194:6;5124:97;:::i;:::-;4954:274;;;;:::o;5234:118::-;5321:24;5339:5;5321:24;:::i;:::-;5316:3;5309:37;5234:118;;:::o;5358:222::-;5451:4;5489:2;5478:9;5474:18;5466:26;;5502:71;5570:1;5559:9;5555:17;5546:6;5502:71;:::i;:::-;5358:222;;;;:::o;5586:619::-;5663:6;5671;5679;5728:2;5716:9;5707:7;5703:23;5699:32;5696:119;;;5734:79;;:::i;:::-;5696:119;5854:1;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5825:117;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5586:619;;;;;:::o;6211:118::-;6298:24;6316:5;6298:24;:::i;:::-;6293:3;6286:37;6211:118;;:::o;6335:222::-;6428:4;6466:2;6455:9;6451:18;6443:26;;6479:71;6547:1;6536:9;6532:17;6523:6;6479:71;:::i;:::-;6335:222;;;;:::o;6563:86::-;6598:7;6638:4;6631:5;6627:16;6616:27;;6563:86;;;:::o;6655:112::-;6738:22;6754:5;6738:22;:::i;:::-;6733:3;6726:35;6655:112;;:::o;6773:214::-;6862:4;6900:2;6889:9;6885:18;6877:26;;6913:67;6977:1;6966:9;6962:17;6953:6;6913:67;:::i;:::-;6773:214;;;;:::o;6993:116::-;7063:21;7078:5;7063:21;:::i;:::-;7056:5;7053:32;7043:60;;7099:1;7096;7089:12;7043:60;6993:116;:::o;7115:133::-;7158:5;7196:6;7183:20;7174:29;;7212:30;7236:5;7212:30;:::i;:::-;7115:133;;;;:::o;7254:468::-;7319:6;7327;7376:2;7364:9;7355:7;7351:23;7347:32;7344:119;;;7382:79;;:::i;:::-;7344:119;7502:1;7527:53;7572:7;7563:6;7552:9;7548:22;7527:53;:::i;:::-;7517:63;;7473:117;7629:2;7655:50;7697:7;7688:6;7677:9;7673:22;7655:50;:::i;:::-;7645:60;;7600:115;7254:468;;;;;:::o;7728:329::-;7787:6;7836:2;7824:9;7815:7;7811:23;7807:32;7804:119;;;7842:79;;:::i;:::-;7804:119;7962:1;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7933:117;7728:329;;;;:::o;8063:474::-;8131:6;8139;8188:2;8176:9;8167:7;8163:23;8159:32;8156:119;;;8194:79;;:::i;:::-;8156:119;8314:1;8339:53;8384:7;8375:6;8364:9;8360:22;8339:53;:::i;:::-;8329:63;;8285:117;8441:2;8467:53;8512:7;8503:6;8492:9;8488:22;8467:53;:::i;:::-;8457:63;;8412:118;8063:474;;;;;:::o;8543:182::-;8683:34;8679:1;8671:6;8667:14;8660:58;8543:182;:::o;8731:366::-;8873:3;8894:67;8958:2;8953:3;8894:67;:::i;:::-;8887:74;;8970:93;9059:3;8970:93;:::i;:::-;9088:2;9083:3;9079:12;9072:19;;8731:366;;;:::o;9103:419::-;9269:4;9307:2;9296:9;9292:18;9284:26;;9356:9;9350:4;9346:20;9342:1;9331:9;9327:17;9320:47;9384:131;9510:4;9384:131;:::i;:::-;9376:139;;9103:419;;;:::o;9528:180::-;9576:77;9573:1;9566:88;9673:4;9670:1;9663:15;9697:4;9694:1;9687:15;9714:191;9754:3;9773:20;9791:1;9773:20;:::i;:::-;9768:25;;9807:20;9825:1;9807:20;:::i;:::-;9802:25;;9850:1;9847;9843:9;9836:16;;9871:3;9868:1;9865:10;9862:36;;;9878:18;;:::i;:::-;9862:36;9714:191;;;;:::o;9911:180::-;9959:77;9956:1;9949:88;10056:4;10053:1;10046:15;10080:4;10077:1;10070:15;10097:320;10141:6;10178:1;10172:4;10168:12;10158:22;;10225:1;10219:4;10215:12;10246:18;10236:81;;10302:4;10294:6;10290:17;10280:27;;10236:81;10364:2;10356:6;10353:14;10333:18;10330:38;10327:84;;10383:18;;:::i;:::-;10327:84;10148:269;10097:320;;;:::o;10423:227::-;10563:34;10559:1;10551:6;10547:14;10540:58;10632:10;10627:2;10619:6;10615:15;10608:35;10423:227;:::o;10656:366::-;10798:3;10819:67;10883:2;10878:3;10819:67;:::i;:::-;10812:74;;10895:93;10984:3;10895:93;:::i;:::-;11013:2;11008:3;11004:12;10997:19;;10656:366;;;:::o;11028:419::-;11194:4;11232:2;11221:9;11217:18;11209:26;;11281:9;11275:4;11271:20;11267:1;11256:9;11252:17;11245:47;11309:131;11435:4;11309:131;:::i;:::-;11301:139;;11028:419;;;:::o;11453:244::-;11593:34;11589:1;11581:6;11577:14;11570:58;11662:27;11657:2;11649:6;11645:15;11638:52;11453:244;:::o;11703:366::-;11845:3;11866:67;11930:2;11925:3;11866:67;:::i;:::-;11859:74;;11942:93;12031:3;11942:93;:::i;:::-;12060:2;12055:3;12051:12;12044:19;;11703:366;;;:::o;12075:419::-;12241:4;12279:2;12268:9;12264:18;12256:26;;12328:9;12322:4;12318:20;12314:1;12303:9;12299:17;12292:47;12356:131;12482:4;12356:131;:::i;:::-;12348:139;;12075:419;;;:::o;12500:224::-;12640:34;12636:1;12628:6;12624:14;12617:58;12709:7;12704:2;12696:6;12692:15;12685:32;12500:224;:::o;12730:366::-;12872:3;12893:67;12957:2;12952:3;12893:67;:::i;:::-;12886:74;;12969:93;13058:3;12969:93;:::i;:::-;13087:2;13082:3;13078:12;13071:19;;12730:366;;;:::o;13102:419::-;13268:4;13306:2;13295:9;13291:18;13283:26;;13355:9;13349:4;13345:20;13341:1;13330:9;13326:17;13319:47;13383:131;13509:4;13383:131;:::i;:::-;13375:139;;13102:419;;;:::o;13527:143::-;13584:5;13615:6;13609:13;13600:22;;13631:33;13658:5;13631:33;:::i;:::-;13527:143;;;;:::o;13676:351::-;13746:6;13795:2;13783:9;13774:7;13770:23;13766:32;13763:119;;;13801:79;;:::i;:::-;13763:119;13921:1;13946:64;14002:7;13993:6;13982:9;13978:22;13946:64;:::i;:::-;13936:74;;13892:128;13676:351;;;;:::o;14033:332::-;14154:4;14192:2;14181:9;14177:18;14169:26;;14205:71;14273:1;14262:9;14258:17;14249:6;14205:71;:::i;:::-;14286:72;14354:2;14343:9;14339:18;14330:6;14286:72;:::i;:::-;14033:332;;;;;:::o;14371:225::-;14511:34;14507:1;14499:6;14495:14;14488:58;14580:8;14575:2;14567:6;14563:15;14556:33;14371:225;:::o;14602:366::-;14744:3;14765:67;14829:2;14824:3;14765:67;:::i;:::-;14758:74;;14841:93;14930:3;14841:93;:::i;:::-;14959:2;14954:3;14950:12;14943:19;;14602:366;;;:::o;14974:419::-;15140:4;15178:2;15167:9;15163:18;15155:26;;15227:9;15221:4;15217:20;15213:1;15202:9;15198:17;15191:47;15255:131;15381:4;15255:131;:::i;:::-;15247:139;;14974:419;;;:::o;15399:223::-;15539:34;15535:1;15527:6;15523:14;15516:58;15608:6;15603:2;15595:6;15591:15;15584:31;15399:223;:::o;15628:366::-;15770:3;15791:67;15855:2;15850:3;15791:67;:::i;:::-;15784:74;;15867:93;15956:3;15867:93;:::i;:::-;15985:2;15980:3;15976:12;15969:19;;15628:366;;;:::o;16000:419::-;16166:4;16204:2;16193:9;16189:18;16181:26;;16253:9;16247:4;16243:20;16239:1;16228:9;16224:17;16217:47;16281:131;16407:4;16281:131;:::i;:::-;16273:139;;16000:419;;;:::o;16425:221::-;16565:34;16561:1;16553:6;16549:14;16542:58;16634:4;16629:2;16621:6;16617:15;16610:29;16425:221;:::o;16652:366::-;16794:3;16815:67;16879:2;16874:3;16815:67;:::i;:::-;16808:74;;16891:93;16980:3;16891:93;:::i;:::-;17009:2;17004:3;17000:12;16993:19;;16652:366;;;:::o;17024:419::-;17190:4;17228:2;17217:9;17213:18;17205:26;;17277:9;17271:4;17267:20;17263:1;17252:9;17248:17;17241:47;17305:131;17431:4;17305:131;:::i;:::-;17297:139;;17024:419;;;:::o;17449:224::-;17589:34;17585:1;17577:6;17573:14;17566:58;17658:7;17653:2;17645:6;17641:15;17634:32;17449:224;:::o;17679:366::-;17821:3;17842:67;17906:2;17901:3;17842:67;:::i;:::-;17835:74;;17918:93;18007:3;17918:93;:::i;:::-;18036:2;18031:3;18027:12;18020:19;;17679:366;;;:::o;18051:419::-;18217:4;18255:2;18244:9;18240:18;18232:26;;18304:9;18298:4;18294:20;18290:1;18279:9;18275:17;18268:47;18332:131;18458:4;18332:131;:::i;:::-;18324:139;;18051:419;;;:::o;18476:222::-;18616:34;18612:1;18604:6;18600:14;18593:58;18685:5;18680:2;18672:6;18668:15;18661:30;18476:222;:::o;18704:366::-;18846:3;18867:67;18931:2;18926:3;18867:67;:::i;:::-;18860:74;;18943:93;19032:3;18943:93;:::i;:::-;19061:2;19056:3;19052:12;19045:19;;18704:366;;;:::o;19076:419::-;19242:4;19280:2;19269:9;19265:18;19257:26;;19329:9;19323:4;19319:20;19315:1;19304:9;19300:17;19293:47;19357:131;19483:4;19357:131;:::i;:::-;19349:139;;19076:419;;;:::o;19501:172::-;19641:24;19637:1;19629:6;19625:14;19618:48;19501:172;:::o;19679:366::-;19821:3;19842:67;19906:2;19901:3;19842:67;:::i;:::-;19835:74;;19918:93;20007:3;19918:93;:::i;:::-;20036:2;20031:3;20027:12;20020:19;;19679:366;;;:::o;20051:419::-;20217:4;20255:2;20244:9;20240:18;20232:26;;20304:9;20298:4;20294:20;20290:1;20279:9;20275:17;20268:47;20332:131;20458:4;20332:131;:::i;:::-;20324:139;;20051:419;;;:::o;20476:240::-;20616:34;20612:1;20604:6;20600:14;20593:58;20685:23;20680:2;20672:6;20668:15;20661:48;20476:240;:::o;20722:366::-;20864:3;20885:67;20949:2;20944:3;20885:67;:::i;:::-;20878:74;;20961:93;21050:3;20961:93;:::i;:::-;21079:2;21074:3;21070:12;21063:19;;20722:366;;;:::o;21094:419::-;21260:4;21298:2;21287:9;21283:18;21275:26;;21347:9;21341:4;21337:20;21333:1;21322:9;21318:17;21311:47;21375:131;21501:4;21375:131;:::i;:::-;21367:139;;21094:419;;;:::o;21519:169::-;21659:21;21655:1;21647:6;21643:14;21636:45;21519:169;:::o;21694:366::-;21836:3;21857:67;21921:2;21916:3;21857:67;:::i;:::-;21850:74;;21933:93;22022:3;21933:93;:::i;:::-;22051:2;22046:3;22042:12;22035:19;;21694:366;;;:::o;22066:419::-;22232:4;22270:2;22259:9;22255:18;22247:26;;22319:9;22313:4;22309:20;22305:1;22294:9;22290:17;22283:47;22347:131;22473:4;22347:131;:::i;:::-;22339:139;;22066:419;;;:::o;22491:241::-;22631:34;22627:1;22619:6;22615:14;22608:58;22700:24;22695:2;22687:6;22683:15;22676:49;22491:241;:::o;22738:366::-;22880:3;22901:67;22965:2;22960:3;22901:67;:::i;:::-;22894:74;;22977:93;23066:3;22977:93;:::i;:::-;23095:2;23090:3;23086:12;23079:19;;22738:366;;;:::o;23110:419::-;23276:4;23314:2;23303:9;23299:18;23291:26;;23363:9;23357:4;23353:20;23349:1;23338:9;23334:17;23327:47;23391:131;23517:4;23391:131;:::i;:::-;23383:139;;23110:419;;;:::o;23535:233::-;23574:3;23597:24;23615:5;23597:24;:::i;:::-;23588:33;;23643:66;23636:5;23633:77;23630:103;;23713:18;;:::i;:::-;23630:103;23760:1;23753:5;23749:13;23742:20;;23535:233;;;:::o;23774:410::-;23814:7;23837:20;23855:1;23837:20;:::i;:::-;23832:25;;23871:20;23889:1;23871:20;:::i;:::-;23866:25;;23926:1;23923;23919:9;23948:30;23966:11;23948:30;:::i;:::-;23937:41;;24127:1;24118:7;24114:15;24111:1;24108:22;24088:1;24081:9;24061:83;24038:139;;24157:18;;:::i;:::-;24038:139;23822:362;23774:410;;;;:::o;24190:180::-;24238:77;24235:1;24228:88;24335:4;24332:1;24325:15;24359:4;24356:1;24349:15;24376:185;24416:1;24433:20;24451:1;24433:20;:::i;:::-;24428:25;;24467:20;24485:1;24467:20;:::i;:::-;24462:25;;24506:1;24496:35;;24511:18;;:::i;:::-;24496:35;24553:1;24550;24546:9;24541:14;;24376:185;;;;:::o;24567:194::-;24607:4;24627:20;24645:1;24627:20;:::i;:::-;24622:25;;24661:20;24679:1;24661:20;:::i;:::-;24656:25;;24705:1;24702;24698:9;24690:17;;24729:1;24723:4;24720:11;24717:37;;;24734:18;;:::i;:::-;24717:37;24567:194;;;;:::o;24767:85::-;24812:7;24841:5;24830:16;;24767:85;;;:::o;24858:158::-;24916:9;24949:61;24967:42;24976:32;25002:5;24976:32;:::i;:::-;24967:42;:::i;:::-;24949:61;:::i;:::-;24936:74;;24858:158;;;:::o;25022:147::-;25117:45;25156:5;25117:45;:::i;:::-;25112:3;25105:58;25022:147;;:::o;25175:807::-;25424:4;25462:3;25451:9;25447:19;25439:27;;25476:71;25544:1;25533:9;25529:17;25520:6;25476:71;:::i;:::-;25557:72;25625:2;25614:9;25610:18;25601:6;25557:72;:::i;:::-;25639:80;25715:2;25704:9;25700:18;25691:6;25639:80;:::i;:::-;25729;25805:2;25794:9;25790:18;25781:6;25729:80;:::i;:::-;25819:73;25887:3;25876:9;25872:19;25863:6;25819:73;:::i;:::-;25902;25970:3;25959:9;25955:19;25946:6;25902:73;:::i;:::-;25175:807;;;;;;;;;:::o;25988:143::-;26045:5;26076:6;26070:13;26061:22;;26092:33;26119:5;26092:33;:::i;:::-;25988:143;;;;:::o;26137:663::-;26225:6;26233;26241;26290:2;26278:9;26269:7;26265:23;26261:32;26258:119;;;26296:79;;:::i;:::-;26258:119;26416:1;26441:64;26497:7;26488:6;26477:9;26473:22;26441:64;:::i;:::-;26431:74;;26387:128;26554:2;26580:64;26636:7;26627:6;26616:9;26612:22;26580:64;:::i;:::-;26570:74;;26525:129;26693:2;26719:64;26775:7;26766:6;26755:9;26751:22;26719:64;:::i;:::-;26709:74;;26664:129;26137:663;;;;;:::o;26806:225::-;26946:34;26942:1;26934:6;26930:14;26923:58;27015:8;27010:2;27002:6;26998:15;26991:33;26806:225;:::o;27037:366::-;27179:3;27200:67;27264:2;27259:3;27200:67;:::i;:::-;27193:74;;27276:93;27365:3;27276:93;:::i;:::-;27394:2;27389:3;27385:12;27378:19;;27037:366;;;:::o;27409:419::-;27575:4;27613:2;27602:9;27598:18;27590:26;;27662:9;27656:4;27652:20;27648:1;27637:9;27633:17;27626:47;27690:131;27816:4;27690:131;:::i;:::-;27682:139;;27409:419;;;:::o;27834:147::-;27935:11;27972:3;27957:18;;27834:147;;;;:::o;27987:114::-;;:::o;28107:398::-;28266:3;28287:83;28368:1;28363:3;28287:83;:::i;:::-;28280:90;;28379:93;28468:3;28379:93;:::i;:::-;28497:1;28492:3;28488:11;28481:18;;28107:398;;;:::o;28511:379::-;28695:3;28717:147;28860:3;28717:147;:::i;:::-;28710:154;;28881:3;28874:10;;28511:379;;;:::o;28896:180::-;28944:77;28941:1;28934:88;29041:4;29038:1;29031:15;29065:4;29062:1;29055:15;29082:180;29130:77;29127:1;29120:88;29227:4;29224:1;29217:15;29251:4;29248:1;29241:15;29268:114;29335:6;29369:5;29363:12;29353:22;;29268:114;;;:::o;29388:184::-;29487:11;29521:6;29516:3;29509:19;29561:4;29556:3;29552:14;29537:29;;29388:184;;;;:::o;29578:132::-;29645:4;29668:3;29660:11;;29698:4;29693:3;29689:14;29681:22;;29578:132;;;:::o;29716:108::-;29793:24;29811:5;29793:24;:::i;:::-;29788:3;29781:37;29716:108;;:::o;29830:179::-;29899:10;29920:46;29962:3;29954:6;29920:46;:::i;:::-;29998:4;29993:3;29989:14;29975:28;;29830:179;;;;:::o;30015:113::-;30085:4;30117;30112:3;30108:14;30100:22;;30015:113;;;:::o;30164:732::-;30283:3;30312:54;30360:5;30312:54;:::i;:::-;30382:86;30461:6;30456:3;30382:86;:::i;:::-;30375:93;;30492:56;30542:5;30492:56;:::i;:::-;30571:7;30602:1;30587:284;30612:6;30609:1;30606:13;30587:284;;;30688:6;30682:13;30715:63;30774:3;30759:13;30715:63;:::i;:::-;30708:70;;30801:60;30854:6;30801:60;:::i;:::-;30791:70;;30647:224;30634:1;30631;30627:9;30622:14;;30587:284;;;30591:14;30887:3;30880:10;;30288:608;;;30164:732;;;;:::o;30902:831::-;31165:4;31203:3;31192:9;31188:19;31180:27;;31217:71;31285:1;31274:9;31270:17;31261:6;31217:71;:::i;:::-;31298:80;31374:2;31363:9;31359:18;31350:6;31298:80;:::i;:::-;31425:9;31419:4;31415:20;31410:2;31399:9;31395:18;31388:48;31453:108;31556:4;31547:6;31453:108;:::i;:::-;31445:116;;31571:72;31639:2;31628:9;31624:18;31615:6;31571:72;:::i;:::-;31653:73;31721:3;31710:9;31706:19;31697:6;31653:73;:::i;:::-;30902:831;;;;;;;;:::o

Swarm Source

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