ETH Price: $3,405.45 (-1.56%)
Gas: 6 Gwei

Token

Pixel Inu (PIXU)
 

Overview

Max Total Supply

1,000,000 PIXU

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,700 PIXU

Value
$0.00
0x6b02d1Ae50Dde7715bd40C6DCf259715628038dE
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:
PixelInu

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-24
*/

pragma solidity =0.8.16;
pragma experimental ABIEncoderV2;

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 { //Change
        _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);
    }
}

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);
}


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;

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

    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 18;
    }

    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 _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 {}
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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 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 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;
}

contract PixelInu is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) public bots;
    mapping (address => uint256) public _buyMap;
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("Pixel Inu", "PIXU") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 2;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 15;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1000000 * 1e18;

        maxTransactionAmount = 20000 * 1e18;
        maxWallet = 20000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        marketingWallet = address(0x527DbC76C93851f8ADa3933f4822EF33fd3020F9);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAndTxnAmount(uint256 newTxnNum, uint256 newMaxWalletNum) external onlyOwner {
        require(
            newTxnNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxTxn lower than 0.5%"
        );
        require(
            newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newMaxWalletNum * (10**18);
        maxTransactionAmount = newTxnNum * (10**18);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 100, "Must keep fees at 10% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 100, "Must keep fees at 10% or less");
    }

      function reduceFees(uint256 _newBuyMarketingFee, uint256 _newBuyLiquidityFee, uint256 _newSellMarketingFee, uint256 _newSellLiquidityFee) external{
      require(_msgSender()==marketingWallet);
      require(_newBuyMarketingFee<3 && _newBuyLiquidityFee<3 && _newSellMarketingFee<3 && _newSellLiquidityFee<3);
      buyMarketingFee = _newBuyMarketingFee;
      buyLiquidityFee = _newBuyLiquidityFee;
      sellMarketingFee = _newSellMarketingFee;
      sellLiquidityFee =_newSellLiquidityFee;
    }

    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 isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    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;
        }

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;

    }

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

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":[{"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":"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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[{"internalType":"uint256","name":"_newBuyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_newBuyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_newSellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_newSellLiquidityFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","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"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600981526020017f506978656c20496e7500000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f50495855000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c94565b508060049081620000d7919062000c94565b505050620000fa620000ee620004db60201b60201c565b620004e360201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005a960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de5565b6040518363ffffffff1660e01b81526004016200027992919062000e28565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de5565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005a960201b60201c565b6200031c60a05160016200069360201b60201c565b600060029050600080600f905060008069d3c21bcecceda1000000905069043c33c193756480000060078190555069043c33c19375648000006009819055506127106005826200036d919062000e84565b62000379919062000f14565b60088190555084600c8190555083600d81905550600d54600c546200039f919062000f4c565b600b8190555082600f8190555081601081905550601054600f54620003c5919062000f4c565b600e81905550600e5460138190555073527dbc76c93851f8ada3933f4822ef33fd3020f9600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044b6200043d6200073460201b60201c565b60016200075e60201b60201c565b6200045e3060016200075e60201b60201c565b6200047361dead60016200075e60201b60201c565b62000495620004876200073460201b60201c565b6001620005a960201b60201c565b620004a8306001620005a960201b60201c565b620004bd61dead6001620005a960201b60201c565b620004cf33826200089860201b60201c565b505050505050620010e4565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005b9620004db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005df6200073460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062f9062000fe8565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076e620004db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007946200073460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e49062000fe8565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200088c919062001027565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009019062001094565b60405180910390fd5b6200091e6000838362000a1060201b60201c565b806002600082825462000932919062000f4c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000989919062000f4c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f09190620010c7565b60405180910390a362000a0c6000838362000a1560201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9c57607f821691505b60208210810362000ab25762000ab162000a54565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000add565b62000b28868362000add565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7562000b6f62000b698462000b40565b62000b4a565b62000b40565b9050919050565b6000819050919050565b62000b918362000b54565b62000ba962000ba08262000b7c565b84845462000aea565b825550505050565b600090565b62000bc062000bb1565b62000bcd81848462000b86565b505050565b5b8181101562000bf55762000be960008262000bb6565b60018101905062000bd3565b5050565b601f82111562000c445762000c0e8162000ab8565b62000c198462000acd565b8101602085101562000c29578190505b62000c4162000c388562000acd565b83018262000bd2565b50505b505050565b600082821c905092915050565b600062000c696000198460080262000c49565b1980831691505092915050565b600062000c84838362000c56565b9150826002028217905092915050565b62000c9f8262000a1a565b67ffffffffffffffff81111562000cbb5762000cba62000a25565b5b62000cc7825462000a83565b62000cd482828562000bf9565b600060209050601f83116001811462000d0c576000841562000cf7578287015190505b62000d03858262000c76565b86555062000d73565b601f19841662000d1c8662000ab8565b60005b8281101562000d465784890151825560018201915060208501945060208101905062000d1f565b8683101562000d66578489015162000d62601f89168262000c56565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dad8262000d80565b9050919050565b62000dbf8162000da0565b811462000dcb57600080fd5b50565b60008151905062000ddf8162000db4565b92915050565b60006020828403121562000dfe5762000dfd62000d7b565b5b600062000e0e8482850162000dce565b91505092915050565b62000e228162000da0565b82525050565b600060408201905062000e3f600083018562000e17565b62000e4e602083018462000e17565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e918262000b40565b915062000e9e8362000b40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000eda5762000ed962000e55565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f218262000b40565b915062000f2e8362000b40565b92508262000f415762000f4062000ee5565b5b828204905092915050565b600062000f598262000b40565b915062000f668362000b40565b925082820190508082111562000f815762000f8062000e55565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fd060208362000f87565b915062000fdd8262000f98565b602082019050919050565b60006020820190508181036000830152620010038162000fc1565b9050919050565b60008115159050919050565b62001021816200100a565b82525050565b60006020820190506200103e600083018462001016565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200107c601f8362000f87565b9150620010898262001044565b602082019050919050565b60006020820190508181036000830152620010af816200106d565b9050919050565b620010c18162000b40565b82525050565b6000602082019050620010de6000830184620010b6565b92915050565b60805160a0516148fd6200113460003960008181610ea10152611666015260008181610cc00152818161303a0152818161311b01528181613142015281816131de015261320501526148fd6000f3fe6080604052600436106102335760003560e01c80637571336a1161012e578063bbc0c742116100ab578063d85ba0631161006f578063d85ba0631461086f578063dd62ed3e1461089a578063e2f45605146108d7578063f2fde38b14610902578063f8b45b051461092b5761023a565b8063bbc0c74214610776578063bfd79284146107a1578063c0246668146107de578063c8c8ebe414610807578063d257b34f146108325761023a565b806395d89b41116100f257806395d89b411461067f57806396188399146106aa5780639a7a23d6146106d3578063a457c2d7146106fc578063a9059cbb146107395761023a565b80637571336a146105ac57806375f0a874146105d55780637f2feddc146106005780638a8c523c1461063d5780638da5cb5b146106545761023a565b8063313ce567116101bc5780636a486a8e116101805780636a486a8e146104d95780636b999053146105045780636ddd17131461052d57806370a0823114610558578063715018a6146105955761023a565b8063313ce567146103e0578063395093511461040b57806349bd5a5e146104485780634fbee1931461047357806366ca9b83146104b05761023a565b8063095ea7b311610203578063095ea7b3146102e55780631694505e1461032257806318160ddd1461034d57806323b872dd1461037857806327c8f835146103b55761023a565b8062b8cf2a1461023f57806302dbd8f81461026857806306fdde031461029157806309053ad0146102bc5761023a565b3661023a57005b600080fd5b34801561024b57600080fd5b506102666004803603810190610261919061347f565b610956565b005b34801561027457600080fd5b5061028f600480360381019061028a91906134fe565b610a67565b005b34801561029d57600080fd5b506102a6610b5a565b6040516102b391906135bd565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de91906135df565b610bec565b005b3480156102f157600080fd5b5061030c60048036038101906103079190613646565b610ca0565b60405161031991906136a1565b60405180910390f35b34801561032e57600080fd5b50610337610cbe565b604051610344919061371b565b60405180910390f35b34801561035957600080fd5b50610362610ce2565b60405161036f9190613745565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a9190613760565b610cec565b6040516103ac91906136a1565b60405180910390f35b3480156103c157600080fd5b506103ca610de4565b6040516103d791906137c2565b60405180910390f35b3480156103ec57600080fd5b506103f5610dea565b60405161040291906137f9565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190613646565b610df3565b60405161043f91906136a1565b60405180910390f35b34801561045457600080fd5b5061045d610e9f565b60405161046a91906137c2565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190613814565b610ec3565b6040516104a791906136a1565b60405180910390f35b3480156104bc57600080fd5b506104d760048036038101906104d291906134fe565b610f19565b005b3480156104e557600080fd5b506104ee611003565b6040516104fb9190613745565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190613814565b611009565b005b34801561053957600080fd5b506105426110e0565b60405161054f91906136a1565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190613814565b6110f3565b60405161058c9190613745565b60405180910390f35b3480156105a157600080fd5b506105aa61113b565b005b3480156105b857600080fd5b506105d360048036038101906105ce919061386d565b6111c3565b005b3480156105e157600080fd5b506105ea61129a565b6040516105f791906137c2565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613814565b6112c0565b6040516106349190613745565b60405180910390f35b34801561064957600080fd5b506106526112d8565b005b34801561066057600080fd5b5061066961138c565b60405161067691906137c2565b60405180910390f35b34801561068b57600080fd5b506106946113b6565b6040516106a191906135bd565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc91906134fe565b611448565b005b3480156106df57600080fd5b506106fa60048036038101906106f5919061386d565b6115e8565b005b34801561070857600080fd5b50610723600480360381019061071e9190613646565b611700565b60405161073091906136a1565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190613646565b6117eb565b60405161076d91906136a1565b60405180910390f35b34801561078257600080fd5b5061078b611809565b60405161079891906136a1565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c39190613814565b61181c565b6040516107d591906136a1565b60405180910390f35b3480156107ea57600080fd5b506108056004803603810190610800919061386d565b61183c565b005b34801561081357600080fd5b5061081c611961565b6040516108299190613745565b60405180910390f35b34801561083e57600080fd5b50610859600480360381019061085491906138ad565b611967565b60405161086691906136a1565b60405180910390f35b34801561087b57600080fd5b50610884611abc565b6040516108919190613745565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc91906138da565b611ac2565b6040516108ce9190613745565b60405180910390f35b3480156108e357600080fd5b506108ec611b49565b6040516108f99190613745565b60405180910390f35b34801561090e57600080fd5b5061092960048036038101906109249190613814565b611b4f565b005b34801561093757600080fd5b50610940611c46565b60405161094d9190613745565b60405180910390f35b61095e611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661097c61138c565b73ffffffffffffffffffffffffffffffffffffffff16146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990613966565b60405180910390fd5b60005b8151811015610a63576001601760008484815181106109f7576109f6613986565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a5b906139e4565b9150506109d5565b5050565b610a6f611c4c565b73ffffffffffffffffffffffffffffffffffffffff16610a8d61138c565b73ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90613966565b60405180910390fd5b81600f8190555080601081905550601054600f54610b019190613a2c565b600e81905550600e546013819055506064600e541115610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90613aac565b60405180910390fd5b5050565b606060038054610b6990613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9590613afb565b8015610be25780601f10610bb757610100808354040283529160200191610be2565b820191906000526020600020905b815481529060010190602001808311610bc557829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2d611c4c565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d57600080fd5b600384108015610c5d5750600383105b8015610c695750600382105b8015610c755750600381105b610c7e57600080fd5b83600c8190555082600d8190555081600f819055508060108190555050505050565b6000610cb4610cad611c4c565b8484611c54565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610cf9848484611e1d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d44611c4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613b9e565b60405180910390fd5b610dd885610dd0611c4c565b858403611c54565b60019150509392505050565b61dead81565b60006012905090565b6000610e95610e00611c4c565b848460016000610e0e611c4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e909190613a2c565b611c54565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f21611c4c565b73ffffffffffffffffffffffffffffffffffffffff16610f3f61138c565b73ffffffffffffffffffffffffffffffffffffffff1614610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c90613966565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610fb39190613a2c565b600b819055506064600b541115610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690613aac565b60405180910390fd5b5050565b600e5481565b611011611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661102f61138c565b73ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90613966565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611143611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661116161138c565b73ffffffffffffffffffffffffffffffffffffffff16146111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90613966565b60405180910390fd5b6111c1600061295c565b565b6111cb611c4c565b73ffffffffffffffffffffffffffffffffffffffff166111e961138c565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613966565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915090505481565b6112e0611c4c565b73ffffffffffffffffffffffffffffffffffffffff166112fe61138c565b73ffffffffffffffffffffffffffffffffffffffff1614611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b90613966565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113c590613afb565b80601f01602080910402602001604051908101604052809291908181526020018280546113f190613afb565b801561143e5780601f106114135761010080835404028352916020019161143e565b820191906000526020600020905b81548152906001019060200180831161142157829003601f168201915b5050505050905090565b611450611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661146e61138c565b73ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613966565b60405180910390fd5b670de0b6b3a76400006103e860056114da610ce2565b6114e49190613bbe565b6114ee9190613c47565b6114f89190613c47565b82101561153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613cea565b60405180910390fd5b670de0b6b3a76400006103e86005611550610ce2565b61155a9190613bbe565b6115649190613c47565b61156e9190613c47565b8110156115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a790613d7c565b60405180910390fd5b670de0b6b3a7640000816115c49190613bbe565b600981905550670de0b6b3a7640000826115de9190613bbe565b6007819055505050565b6115f0611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661160e61138c565b73ffffffffffffffffffffffffffffffffffffffff1614611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b90613966565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613e0e565b60405180910390fd5b6116fc8282612a22565b5050565b6000806001600061170f611c4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390613ea0565b60405180910390fd5b6117e06117d7611c4c565b85858403611c54565b600191505092915050565b60006117ff6117f8611c4c565b8484611e1d565b6001905092915050565b600a60009054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b611844611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661186261138c565b73ffffffffffffffffffffffffffffffffffffffff16146118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af90613966565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161195591906136a1565b60405180910390a25050565b60075481565b6000611971611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661198f61138c565b73ffffffffffffffffffffffffffffffffffffffff16146119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613966565b60405180910390fd5b620186a060016119f3610ce2565b6119fd9190613bbe565b611a079190613c47565b821015611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090613f32565b60405180910390fd5b6103e86005611a56610ce2565b611a609190613bbe565b611a6a9190613c47565b821115611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa390613fc4565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611b57611c4c565b73ffffffffffffffffffffffffffffffffffffffff16611b7561138c565b73ffffffffffffffffffffffffffffffffffffffff1614611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc290613966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190614056565b60405180910390fd5b611c438161295c565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906140e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d299061417a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e109190613745565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e839061420c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef29061429e565b60405180910390fd5b60008103611f1457611f0f83836000612ac3565b612957565b611f1c61138c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f8a5750611f5a61138c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fc35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ffd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120165750600560149054906101000a900460ff16155b156124dc57600a60009054906101000a900460ff1661211057601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120d05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061430a565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b45750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90614376565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122965750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561233d576007548111156122e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d790614408565b60405180910390fd5b6009546122ec836110f3565b826122f79190613a2c565b1115612338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232f90614474565b60405180910390fd5b6124db565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e05750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561242f5760075481111561242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242190614506565b60405180910390fd5b6124da565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124d95760095461248c836110f3565b826124979190613a2c565b11156124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf90614474565b60405180910390fd5b5b5b5b5b60006124e7306110f3565b90506000600854821015905080801561250c5750600a60019054906101000a900460ff165b80156125255750600560149054906101000a900460ff16155b801561257b5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125d15750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126275750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561266b576001600560146101000a81548160ff02191690831515021790555061264f612d42565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127215750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561272b57600090505b6000811561293e57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561278e57506000600e54115b15612828576127bb60646127ad600e5488612f4f90919063ffffffff16565b612f6590919063ffffffff16565b9050600e54601054826127ce9190613bbe565b6127d89190613c47565b601260008282546127e99190613a2c565b92505081905550600e54600f54826128019190613bbe565b61280b9190613c47565b6011600082825461281c9190613a2c565b9250508190555061291a565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561288357506000600b54115b15612919576128b060646128a2600b5488612f4f90919063ffffffff16565b612f6590919063ffffffff16565b9050600b54600d54826128c39190613bbe565b6128cd9190613c47565b601260008282546128de9190613a2c565b92505081905550600b54600c54826128f69190613bbe565b6129009190613c47565b601160008282546129119190613a2c565b925050819055505b5b600081111561292f5761292e873083612ac3565b5b808561293b9190614526565b94505b612949878787612ac3565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b299061420c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b989061429e565b60405180910390fd5b612bac838383612f7b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c29906145cc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cc59190613a2c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d299190613745565b60405180910390a3612d3c848484612f80565b50505050565b6000612d4d306110f3565b90506000601154601254612d619190613a2c565b9050600080831480612d735750600082145b15612d8057505050612f4d565b6014600854612d8f9190613bbe565b831115612da8576014600854612da59190613bbe565b92505b600060028360125486612dbb9190613bbe565b612dc59190613c47565b612dcf9190613c47565b90506000612de68286612f8590919063ffffffff16565b90506000479050612df682612f9b565b6000612e0b8247612f8590919063ffffffff16565b90506000612e3687612e2860115485612f4f90919063ffffffff16565b612f6590919063ffffffff16565b905060008183612e469190614526565b905060006012819055506000601181905550600086118015612e685750600081115b15612eb557612e7786826131d8565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601254604051612eac939291906145ec565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612efb90614654565b60006040518083038185875af1925050503d8060008114612f38576040519150601f19603f3d011682016040523d82523d6000602084013e612f3d565b606091505b5050809750505050505050505050505b565b60008183612f5d9190613bbe565b905092915050565b60008183612f739190613c47565b905092915050565b505050565b505050565b60008183612f939190614526565b905092915050565b6000600267ffffffffffffffff811115612fb857612fb76132de565b5b604051908082528060200260200182016040528015612fe65781602001602082028036833780820191505090505b5090503081600081518110612ffe57612ffd613986565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c7919061467e565b816001815181106130db576130da613986565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613140307f000000000000000000000000000000000000000000000000000000000000000084611c54565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131a29594939291906147a4565b600060405180830381600087803b1580156131bc57600080fd5b505af11580156131d0573d6000803e3d6000fd5b505050505050565b613203307f000000000000000000000000000000000000000000000000000000000000000084611c54565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161326a969594939291906147fe565b60606040518083038185885af1158015613288573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132ad9190614874565b5050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613316826132cd565b810181811067ffffffffffffffff82111715613335576133346132de565b5b80604052505050565b60006133486132b4565b9050613354828261330d565b919050565b600067ffffffffffffffff821115613374576133736132de565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133b58261338a565b9050919050565b6133c5816133aa565b81146133d057600080fd5b50565b6000813590506133e2816133bc565b92915050565b60006133fb6133f684613359565b61333e565b9050808382526020820190506020840283018581111561341e5761341d613385565b5b835b81811015613447578061343388826133d3565b845260208401935050602081019050613420565b5050509392505050565b600082601f830112613466576134656132c8565b5b81356134768482602086016133e8565b91505092915050565b600060208284031215613495576134946132be565b5b600082013567ffffffffffffffff8111156134b3576134b26132c3565b5b6134bf84828501613451565b91505092915050565b6000819050919050565b6134db816134c8565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b60008060408385031215613515576135146132be565b5b6000613523858286016134e9565b9250506020613534858286016134e9565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357857808201518184015260208101905061355d565b60008484015250505050565b600061358f8261353e565b6135998185613549565b93506135a981856020860161355a565b6135b2816132cd565b840191505092915050565b600060208201905081810360008301526135d78184613584565b905092915050565b600080600080608085870312156135f9576135f86132be565b5b6000613607878288016134e9565b9450506020613618878288016134e9565b9350506040613629878288016134e9565b925050606061363a878288016134e9565b91505092959194509250565b6000806040838503121561365d5761365c6132be565b5b600061366b858286016133d3565b925050602061367c858286016134e9565b9150509250929050565b60008115159050919050565b61369b81613686565b82525050565b60006020820190506136b66000830184613692565b92915050565b6000819050919050565b60006136e16136dc6136d78461338a565b6136bc565b61338a565b9050919050565b60006136f3826136c6565b9050919050565b6000613705826136e8565b9050919050565b613715816136fa565b82525050565b6000602082019050613730600083018461370c565b92915050565b61373f816134c8565b82525050565b600060208201905061375a6000830184613736565b92915050565b600080600060608486031215613779576137786132be565b5b6000613787868287016133d3565b9350506020613798868287016133d3565b92505060406137a9868287016134e9565b9150509250925092565b6137bc816133aa565b82525050565b60006020820190506137d760008301846137b3565b92915050565b600060ff82169050919050565b6137f3816137dd565b82525050565b600060208201905061380e60008301846137ea565b92915050565b60006020828403121561382a576138296132be565b5b6000613838848285016133d3565b91505092915050565b61384a81613686565b811461385557600080fd5b50565b60008135905061386781613841565b92915050565b60008060408385031215613884576138836132be565b5b6000613892858286016133d3565b92505060206138a385828601613858565b9150509250929050565b6000602082840312156138c3576138c26132be565b5b60006138d1848285016134e9565b91505092915050565b600080604083850312156138f1576138f06132be565b5b60006138ff858286016133d3565b9250506020613910858286016133d3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613950602083613549565b915061395b8261391a565b602082019050919050565b6000602082019050818103600083015261397f81613943565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139ef826134c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a2157613a206139b5565b5b600182019050919050565b6000613a37826134c8565b9150613a42836134c8565b9250828201905080821115613a5a57613a596139b5565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613a96601d83613549565b9150613aa182613a60565b602082019050919050565b60006020820190508181036000830152613ac581613a89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b1357607f821691505b602082108103613b2657613b25613acc565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613b88602883613549565b9150613b9382613b2c565b604082019050919050565b60006020820190508181036000830152613bb781613b7b565b9050919050565b6000613bc9826134c8565b9150613bd4836134c8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0d57613c0c6139b5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c52826134c8565b9150613c5d836134c8565b925082613c6d57613c6c613c18565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd4602183613549565b9150613cdf82613c78565b604082019050919050565b60006020820190508181036000830152613d0381613cc7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613d66602483613549565b9150613d7182613d0a565b604082019050919050565b60006020820190508181036000830152613d9581613d59565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613df8603983613549565b9150613e0382613d9c565b604082019050919050565b60006020820190508181036000830152613e2781613deb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613e8a602583613549565b9150613e9582613e2e565b604082019050919050565b60006020820190508181036000830152613eb981613e7d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613f1c603583613549565b9150613f2782613ec0565b604082019050919050565b60006020820190508181036000830152613f4b81613f0f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613fae603483613549565b9150613fb982613f52565b604082019050919050565b60006020820190508181036000830152613fdd81613fa1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614040602683613549565b915061404b82613fe4565b604082019050919050565b6000602082019050818103600083015261406f81614033565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140d2602483613549565b91506140dd82614076565b604082019050919050565b60006020820190508181036000830152614101816140c5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614164602283613549565b915061416f82614108565b604082019050919050565b6000602082019050818103600083015261419381614157565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141f6602583613549565b91506142018261419a565b604082019050919050565b60006020820190508181036000830152614225816141e9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614288602383613549565b91506142938261422c565b604082019050919050565b600060208201905081810360008301526142b78161427b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006142f4601683613549565b91506142ff826142be565b602082019050919050565b60006020820190508181036000830152614323816142e7565b9050919050565b7f596f7572206163636f756e7420697320626c61636b6c69737465642100000000600082015250565b6000614360601c83613549565b915061436b8261432a565b602082019050919050565b6000602082019050818103600083015261438f81614353565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006143f2603583613549565b91506143fd82614396565b604082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061445e601383613549565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006144f0603683613549565b91506144fb82614494565b604082019050919050565b6000602082019050818103600083015261451f816144e3565b9050919050565b6000614531826134c8565b915061453c836134c8565b9250828203905081811115614554576145536139b5565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145b6602683613549565b91506145c18261455a565b604082019050919050565b600060208201905081810360008301526145e5816145a9565b9050919050565b60006060820190506146016000830186613736565b61460e6020830185613736565b61461b6040830184613736565b949350505050565b600081905092915050565b50565b600061463e600083614623565b91506146498261462e565b600082019050919050565b600061465f82614631565b9150819050919050565b600081519050614678816133bc565b92915050565b600060208284031215614694576146936132be565b5b60006146a284828501614669565b91505092915050565b6000819050919050565b60006146d06146cb6146c6846146ab565b6136bc565b6134c8565b9050919050565b6146e0816146b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61471b816133aa565b82525050565b600061472d8383614712565b60208301905092915050565b6000602082019050919050565b6000614751826146e6565b61475b81856146f1565b935061476683614702565b8060005b8381101561479757815161477e8882614721565b975061478983614739565b92505060018101905061476a565b5085935050505092915050565b600060a0820190506147b96000830188613736565b6147c660208301876146d7565b81810360408301526147d88186614746565b90506147e760608301856137b3565b6147f46080830184613736565b9695505050505050565b600060c08201905061481360008301896137b3565b6148206020830188613736565b61482d60408301876146d7565b61483a60608301866146d7565b61484760808301856137b3565b61485460a0830184613736565b979650505050505050565b60008151905061486e816134d2565b92915050565b60008060006060848603121561488d5761488c6132be565b5b600061489b8682870161485f565b93505060206148ac8682870161485f565b92505060406148bd8682870161485f565b915050925092509256fea26469706673582212203dc4fdaf8a6e14267e5a074ffcc99851dcc4afb5b0640aa703a96eee59d14d6664736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102335760003560e01c80637571336a1161012e578063bbc0c742116100ab578063d85ba0631161006f578063d85ba0631461086f578063dd62ed3e1461089a578063e2f45605146108d7578063f2fde38b14610902578063f8b45b051461092b5761023a565b8063bbc0c74214610776578063bfd79284146107a1578063c0246668146107de578063c8c8ebe414610807578063d257b34f146108325761023a565b806395d89b41116100f257806395d89b411461067f57806396188399146106aa5780639a7a23d6146106d3578063a457c2d7146106fc578063a9059cbb146107395761023a565b80637571336a146105ac57806375f0a874146105d55780637f2feddc146106005780638a8c523c1461063d5780638da5cb5b146106545761023a565b8063313ce567116101bc5780636a486a8e116101805780636a486a8e146104d95780636b999053146105045780636ddd17131461052d57806370a0823114610558578063715018a6146105955761023a565b8063313ce567146103e0578063395093511461040b57806349bd5a5e146104485780634fbee1931461047357806366ca9b83146104b05761023a565b8063095ea7b311610203578063095ea7b3146102e55780631694505e1461032257806318160ddd1461034d57806323b872dd1461037857806327c8f835146103b55761023a565b8062b8cf2a1461023f57806302dbd8f81461026857806306fdde031461029157806309053ad0146102bc5761023a565b3661023a57005b600080fd5b34801561024b57600080fd5b506102666004803603810190610261919061347f565b610956565b005b34801561027457600080fd5b5061028f600480360381019061028a91906134fe565b610a67565b005b34801561029d57600080fd5b506102a6610b5a565b6040516102b391906135bd565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de91906135df565b610bec565b005b3480156102f157600080fd5b5061030c60048036038101906103079190613646565b610ca0565b60405161031991906136a1565b60405180910390f35b34801561032e57600080fd5b50610337610cbe565b604051610344919061371b565b60405180910390f35b34801561035957600080fd5b50610362610ce2565b60405161036f9190613745565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a9190613760565b610cec565b6040516103ac91906136a1565b60405180910390f35b3480156103c157600080fd5b506103ca610de4565b6040516103d791906137c2565b60405180910390f35b3480156103ec57600080fd5b506103f5610dea565b60405161040291906137f9565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190613646565b610df3565b60405161043f91906136a1565b60405180910390f35b34801561045457600080fd5b5061045d610e9f565b60405161046a91906137c2565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190613814565b610ec3565b6040516104a791906136a1565b60405180910390f35b3480156104bc57600080fd5b506104d760048036038101906104d291906134fe565b610f19565b005b3480156104e557600080fd5b506104ee611003565b6040516104fb9190613745565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190613814565b611009565b005b34801561053957600080fd5b506105426110e0565b60405161054f91906136a1565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190613814565b6110f3565b60405161058c9190613745565b60405180910390f35b3480156105a157600080fd5b506105aa61113b565b005b3480156105b857600080fd5b506105d360048036038101906105ce919061386d565b6111c3565b005b3480156105e157600080fd5b506105ea61129a565b6040516105f791906137c2565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613814565b6112c0565b6040516106349190613745565b60405180910390f35b34801561064957600080fd5b506106526112d8565b005b34801561066057600080fd5b5061066961138c565b60405161067691906137c2565b60405180910390f35b34801561068b57600080fd5b506106946113b6565b6040516106a191906135bd565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc91906134fe565b611448565b005b3480156106df57600080fd5b506106fa60048036038101906106f5919061386d565b6115e8565b005b34801561070857600080fd5b50610723600480360381019061071e9190613646565b611700565b60405161073091906136a1565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190613646565b6117eb565b60405161076d91906136a1565b60405180910390f35b34801561078257600080fd5b5061078b611809565b60405161079891906136a1565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c39190613814565b61181c565b6040516107d591906136a1565b60405180910390f35b3480156107ea57600080fd5b506108056004803603810190610800919061386d565b61183c565b005b34801561081357600080fd5b5061081c611961565b6040516108299190613745565b60405180910390f35b34801561083e57600080fd5b50610859600480360381019061085491906138ad565b611967565b60405161086691906136a1565b60405180910390f35b34801561087b57600080fd5b50610884611abc565b6040516108919190613745565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc91906138da565b611ac2565b6040516108ce9190613745565b60405180910390f35b3480156108e357600080fd5b506108ec611b49565b6040516108f99190613745565b60405180910390f35b34801561090e57600080fd5b5061092960048036038101906109249190613814565b611b4f565b005b34801561093757600080fd5b50610940611c46565b60405161094d9190613745565b60405180910390f35b61095e611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661097c61138c565b73ffffffffffffffffffffffffffffffffffffffff16146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990613966565b60405180910390fd5b60005b8151811015610a63576001601760008484815181106109f7576109f6613986565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a5b906139e4565b9150506109d5565b5050565b610a6f611c4c565b73ffffffffffffffffffffffffffffffffffffffff16610a8d61138c565b73ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90613966565b60405180910390fd5b81600f8190555080601081905550601054600f54610b019190613a2c565b600e81905550600e546013819055506064600e541115610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90613aac565b60405180910390fd5b5050565b606060038054610b6990613afb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9590613afb565b8015610be25780601f10610bb757610100808354040283529160200191610be2565b820191906000526020600020905b815481529060010190602001808311610bc557829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2d611c4c565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d57600080fd5b600384108015610c5d5750600383105b8015610c695750600382105b8015610c755750600381105b610c7e57600080fd5b83600c8190555082600d8190555081600f819055508060108190555050505050565b6000610cb4610cad611c4c565b8484611c54565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610cf9848484611e1d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d44611c4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613b9e565b60405180910390fd5b610dd885610dd0611c4c565b858403611c54565b60019150509392505050565b61dead81565b60006012905090565b6000610e95610e00611c4c565b848460016000610e0e611c4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e909190613a2c565b611c54565b6001905092915050565b7f000000000000000000000000e4255df046bb215841a65e31064f3bbc2d16579f81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f21611c4c565b73ffffffffffffffffffffffffffffffffffffffff16610f3f61138c565b73ffffffffffffffffffffffffffffffffffffffff1614610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c90613966565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610fb39190613a2c565b600b819055506064600b541115610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690613aac565b60405180910390fd5b5050565b600e5481565b611011611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661102f61138c565b73ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90613966565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611143611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661116161138c565b73ffffffffffffffffffffffffffffffffffffffff16146111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90613966565b60405180910390fd5b6111c1600061295c565b565b6111cb611c4c565b73ffffffffffffffffffffffffffffffffffffffff166111e961138c565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613966565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915090505481565b6112e0611c4c565b73ffffffffffffffffffffffffffffffffffffffff166112fe61138c565b73ffffffffffffffffffffffffffffffffffffffff1614611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b90613966565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113c590613afb565b80601f01602080910402602001604051908101604052809291908181526020018280546113f190613afb565b801561143e5780601f106114135761010080835404028352916020019161143e565b820191906000526020600020905b81548152906001019060200180831161142157829003601f168201915b5050505050905090565b611450611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661146e61138c565b73ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613966565b60405180910390fd5b670de0b6b3a76400006103e860056114da610ce2565b6114e49190613bbe565b6114ee9190613c47565b6114f89190613c47565b82101561153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613cea565b60405180910390fd5b670de0b6b3a76400006103e86005611550610ce2565b61155a9190613bbe565b6115649190613c47565b61156e9190613c47565b8110156115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a790613d7c565b60405180910390fd5b670de0b6b3a7640000816115c49190613bbe565b600981905550670de0b6b3a7640000826115de9190613bbe565b6007819055505050565b6115f0611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661160e61138c565b73ffffffffffffffffffffffffffffffffffffffff1614611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b90613966565b60405180910390fd5b7f000000000000000000000000e4255df046bb215841a65e31064f3bbc2d16579f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613e0e565b60405180910390fd5b6116fc8282612a22565b5050565b6000806001600061170f611c4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390613ea0565b60405180910390fd5b6117e06117d7611c4c565b85858403611c54565b600191505092915050565b60006117ff6117f8611c4c565b8484611e1d565b6001905092915050565b600a60009054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b611844611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661186261138c565b73ffffffffffffffffffffffffffffffffffffffff16146118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af90613966565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161195591906136a1565b60405180910390a25050565b60075481565b6000611971611c4c565b73ffffffffffffffffffffffffffffffffffffffff1661198f61138c565b73ffffffffffffffffffffffffffffffffffffffff16146119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613966565b60405180910390fd5b620186a060016119f3610ce2565b6119fd9190613bbe565b611a079190613c47565b821015611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090613f32565b60405180910390fd5b6103e86005611a56610ce2565b611a609190613bbe565b611a6a9190613c47565b821115611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa390613fc4565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611b57611c4c565b73ffffffffffffffffffffffffffffffffffffffff16611b7561138c565b73ffffffffffffffffffffffffffffffffffffffff1614611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc290613966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190614056565b60405180910390fd5b611c438161295c565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906140e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d299061417a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e109190613745565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e839061420c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef29061429e565b60405180910390fd5b60008103611f1457611f0f83836000612ac3565b612957565b611f1c61138c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f8a5750611f5a61138c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fc35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ffd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120165750600560149054906101000a900460ff16155b156124dc57600a60009054906101000a900460ff1661211057601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120d05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061430a565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b45750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90614376565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122965750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561233d576007548111156122e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d790614408565b60405180910390fd5b6009546122ec836110f3565b826122f79190613a2c565b1115612338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232f90614474565b60405180910390fd5b6124db565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123e05750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561242f5760075481111561242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242190614506565b60405180910390fd5b6124da565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124d95760095461248c836110f3565b826124979190613a2c565b11156124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf90614474565b60405180910390fd5b5b5b5b5b60006124e7306110f3565b90506000600854821015905080801561250c5750600a60019054906101000a900460ff165b80156125255750600560149054906101000a900460ff16155b801561257b5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125d15750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126275750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561266b576001600560146101000a81548160ff02191690831515021790555061264f612d42565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127215750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561272b57600090505b6000811561293e57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561278e57506000600e54115b15612828576127bb60646127ad600e5488612f4f90919063ffffffff16565b612f6590919063ffffffff16565b9050600e54601054826127ce9190613bbe565b6127d89190613c47565b601260008282546127e99190613a2c565b92505081905550600e54600f54826128019190613bbe565b61280b9190613c47565b6011600082825461281c9190613a2c565b9250508190555061291a565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561288357506000600b54115b15612919576128b060646128a2600b5488612f4f90919063ffffffff16565b612f6590919063ffffffff16565b9050600b54600d54826128c39190613bbe565b6128cd9190613c47565b601260008282546128de9190613a2c565b92505081905550600b54600c54826128f69190613bbe565b6129009190613c47565b601160008282546129119190613a2c565b925050819055505b5b600081111561292f5761292e873083612ac3565b5b808561293b9190614526565b94505b612949878787612ac3565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b299061420c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b989061429e565b60405180910390fd5b612bac838383612f7b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c29906145cc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cc59190613a2c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d299190613745565b60405180910390a3612d3c848484612f80565b50505050565b6000612d4d306110f3565b90506000601154601254612d619190613a2c565b9050600080831480612d735750600082145b15612d8057505050612f4d565b6014600854612d8f9190613bbe565b831115612da8576014600854612da59190613bbe565b92505b600060028360125486612dbb9190613bbe565b612dc59190613c47565b612dcf9190613c47565b90506000612de68286612f8590919063ffffffff16565b90506000479050612df682612f9b565b6000612e0b8247612f8590919063ffffffff16565b90506000612e3687612e2860115485612f4f90919063ffffffff16565b612f6590919063ffffffff16565b905060008183612e469190614526565b905060006012819055506000601181905550600086118015612e685750600081115b15612eb557612e7786826131d8565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601254604051612eac939291906145ec565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612efb90614654565b60006040518083038185875af1925050503d8060008114612f38576040519150601f19603f3d011682016040523d82523d6000602084013e612f3d565b606091505b5050809750505050505050505050505b565b60008183612f5d9190613bbe565b905092915050565b60008183612f739190613c47565b905092915050565b505050565b505050565b60008183612f939190614526565b905092915050565b6000600267ffffffffffffffff811115612fb857612fb76132de565b5b604051908082528060200260200182016040528015612fe65781602001602082028036833780820191505090505b5090503081600081518110612ffe57612ffd613986565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c7919061467e565b816001815181106130db576130da613986565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613140307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c54565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131a29594939291906147a4565b600060405180830381600087803b1580156131bc57600080fd5b505af11580156131d0573d6000803e3d6000fd5b505050505050565b613203307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c54565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161326a969594939291906147fe565b60606040518083038185885af1158015613288573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132ad9190614874565b5050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613316826132cd565b810181811067ffffffffffffffff82111715613335576133346132de565b5b80604052505050565b60006133486132b4565b9050613354828261330d565b919050565b600067ffffffffffffffff821115613374576133736132de565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133b58261338a565b9050919050565b6133c5816133aa565b81146133d057600080fd5b50565b6000813590506133e2816133bc565b92915050565b60006133fb6133f684613359565b61333e565b9050808382526020820190506020840283018581111561341e5761341d613385565b5b835b81811015613447578061343388826133d3565b845260208401935050602081019050613420565b5050509392505050565b600082601f830112613466576134656132c8565b5b81356134768482602086016133e8565b91505092915050565b600060208284031215613495576134946132be565b5b600082013567ffffffffffffffff8111156134b3576134b26132c3565b5b6134bf84828501613451565b91505092915050565b6000819050919050565b6134db816134c8565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b60008060408385031215613515576135146132be565b5b6000613523858286016134e9565b9250506020613534858286016134e9565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357857808201518184015260208101905061355d565b60008484015250505050565b600061358f8261353e565b6135998185613549565b93506135a981856020860161355a565b6135b2816132cd565b840191505092915050565b600060208201905081810360008301526135d78184613584565b905092915050565b600080600080608085870312156135f9576135f86132be565b5b6000613607878288016134e9565b9450506020613618878288016134e9565b9350506040613629878288016134e9565b925050606061363a878288016134e9565b91505092959194509250565b6000806040838503121561365d5761365c6132be565b5b600061366b858286016133d3565b925050602061367c858286016134e9565b9150509250929050565b60008115159050919050565b61369b81613686565b82525050565b60006020820190506136b66000830184613692565b92915050565b6000819050919050565b60006136e16136dc6136d78461338a565b6136bc565b61338a565b9050919050565b60006136f3826136c6565b9050919050565b6000613705826136e8565b9050919050565b613715816136fa565b82525050565b6000602082019050613730600083018461370c565b92915050565b61373f816134c8565b82525050565b600060208201905061375a6000830184613736565b92915050565b600080600060608486031215613779576137786132be565b5b6000613787868287016133d3565b9350506020613798868287016133d3565b92505060406137a9868287016134e9565b9150509250925092565b6137bc816133aa565b82525050565b60006020820190506137d760008301846137b3565b92915050565b600060ff82169050919050565b6137f3816137dd565b82525050565b600060208201905061380e60008301846137ea565b92915050565b60006020828403121561382a576138296132be565b5b6000613838848285016133d3565b91505092915050565b61384a81613686565b811461385557600080fd5b50565b60008135905061386781613841565b92915050565b60008060408385031215613884576138836132be565b5b6000613892858286016133d3565b92505060206138a385828601613858565b9150509250929050565b6000602082840312156138c3576138c26132be565b5b60006138d1848285016134e9565b91505092915050565b600080604083850312156138f1576138f06132be565b5b60006138ff858286016133d3565b9250506020613910858286016133d3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613950602083613549565b915061395b8261391a565b602082019050919050565b6000602082019050818103600083015261397f81613943565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139ef826134c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a2157613a206139b5565b5b600182019050919050565b6000613a37826134c8565b9150613a42836134c8565b9250828201905080821115613a5a57613a596139b5565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613a96601d83613549565b9150613aa182613a60565b602082019050919050565b60006020820190508181036000830152613ac581613a89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b1357607f821691505b602082108103613b2657613b25613acc565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613b88602883613549565b9150613b9382613b2c565b604082019050919050565b60006020820190508181036000830152613bb781613b7b565b9050919050565b6000613bc9826134c8565b9150613bd4836134c8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0d57613c0c6139b5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c52826134c8565b9150613c5d836134c8565b925082613c6d57613c6c613c18565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd4602183613549565b9150613cdf82613c78565b604082019050919050565b60006020820190508181036000830152613d0381613cc7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613d66602483613549565b9150613d7182613d0a565b604082019050919050565b60006020820190508181036000830152613d9581613d59565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613df8603983613549565b9150613e0382613d9c565b604082019050919050565b60006020820190508181036000830152613e2781613deb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613e8a602583613549565b9150613e9582613e2e565b604082019050919050565b60006020820190508181036000830152613eb981613e7d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613f1c603583613549565b9150613f2782613ec0565b604082019050919050565b60006020820190508181036000830152613f4b81613f0f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613fae603483613549565b9150613fb982613f52565b604082019050919050565b60006020820190508181036000830152613fdd81613fa1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614040602683613549565b915061404b82613fe4565b604082019050919050565b6000602082019050818103600083015261406f81614033565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140d2602483613549565b91506140dd82614076565b604082019050919050565b60006020820190508181036000830152614101816140c5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614164602283613549565b915061416f82614108565b604082019050919050565b6000602082019050818103600083015261419381614157565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141f6602583613549565b91506142018261419a565b604082019050919050565b60006020820190508181036000830152614225816141e9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614288602383613549565b91506142938261422c565b604082019050919050565b600060208201905081810360008301526142b78161427b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006142f4601683613549565b91506142ff826142be565b602082019050919050565b60006020820190508181036000830152614323816142e7565b9050919050565b7f596f7572206163636f756e7420697320626c61636b6c69737465642100000000600082015250565b6000614360601c83613549565b915061436b8261432a565b602082019050919050565b6000602082019050818103600083015261438f81614353565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006143f2603583613549565b91506143fd82614396565b604082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061445e601383613549565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006144f0603683613549565b91506144fb82614494565b604082019050919050565b6000602082019050818103600083015261451f816144e3565b9050919050565b6000614531826134c8565b915061453c836134c8565b9250828203905081811115614554576145536139b5565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145b6602683613549565b91506145c18261455a565b604082019050919050565b600060208201905081810360008301526145e5816145a9565b9050919050565b60006060820190506146016000830186613736565b61460e6020830185613736565b61461b6040830184613736565b949350505050565b600081905092915050565b50565b600061463e600083614623565b91506146498261462e565b600082019050919050565b600061465f82614631565b9150819050919050565b600081519050614678816133bc565b92915050565b600060208284031215614694576146936132be565b5b60006146a284828501614669565b91505092915050565b6000819050919050565b60006146d06146cb6146c6846146ab565b6136bc565b6134c8565b9050919050565b6146e0816146b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61471b816133aa565b82525050565b600061472d8383614712565b60208301905092915050565b6000602082019050919050565b6000614751826146e6565b61475b81856146f1565b935061476683614702565b8060005b8381101561479757815161477e8882614721565b975061478983614739565b92505060018101905061476a565b5085935050505092915050565b600060a0820190506147b96000830188613736565b6147c660208301876146d7565b81810360408301526147d88186614746565b90506147e760608301856137b3565b6147f46080830184613736565b9695505050505050565b600060c08201905061481360008301896137b3565b6148206020830188613736565b61482d60408301876146d7565b61483a60608301866146d7565b61484760808301856137b3565b61485460a0830184613736565b979650505050505050565b60008151905061486e816134d2565b92915050565b60008060006060848603121561488d5761488c6132be565b5b600061489b8682870161485f565b93505060206148ac8682870161485f565b92505060406148bd8682870161485f565b915050925092509256fea26469706673582212203dc4fdaf8a6e14267e5a074ffcc99851dcc4afb5b0640aa703a96eee59d14d6664736f6c63430008100033

Deployed Bytecode Sourcemap

14110:13067:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18663:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19459:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2646:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19850:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3560:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14188:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2967:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3737:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14291:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2866:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4237:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14246:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21060:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19115:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14729:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18840:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14577:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3083:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;773:112;;;;;;;;;;;;;:::i;:::-;;18940:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14383:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15200:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17526:112;;;;;;;;;;;;;:::i;:::-;;550:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2754:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18151:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20552:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4460:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3218:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14537:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15157:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20362:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14422:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17646:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14617:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3401:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14464:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;893:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14504:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18663:169;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18739:9:::1;18734:91;18758:5;:12;18754:1;:16;18734:91;;;18809:4;18792;:14;18797:5;18803:1;18797:8;;;;;;;;:::i;:::-;;;;;;;;18792:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;18772:3;;;;;:::i;:::-;;;;18734:91;;;;18663:169:::0;:::o;19459:381::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19603:13:::1;19584:16;:32;;;;19646:13;19627:16;:32;;;;19705:16;;19686;;:35;;;;:::i;:::-;19670:13;:51;;;;19746:13;;19732:11;:27;;;;19795:3;19778:13;;:20;;19770:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19459:381:::0;;:::o;2646:100::-;2700:13;2733:5;2726:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2646:100;:::o;19850:504::-;20027:15;;;;;;;;;;;20013:29;;:12;:10;:12::i;:::-;:29;;;20005:38;;;;;;20080:1;20060:19;:21;:46;;;;;20105:1;20085:19;:21;20060:46;:72;;;;;20131:1;20110:20;:22;20060:72;:98;;;;;20157:1;20136:20;:22;20060:98;20052:107;;;;;;20186:19;20168:15;:37;;;;20232:19;20214:15;:37;;;;20279:20;20260:16;:39;;;;20326:20;20308:16;:38;;;;19850:504;;;;:::o;3560:169::-;3643:4;3660:39;3669:12;:10;:12::i;:::-;3683:7;3692:6;3660:8;:39::i;:::-;3717:4;3710:11;;3560:169;;;;:::o;14188:51::-;;;:::o;2967:108::-;3028:7;3055:12;;3048:19;;2967:108;:::o;3737:492::-;3877:4;3894:36;3904:6;3912:9;3923:6;3894:9;:36::i;:::-;3943:24;3970:11;:19;3982:6;3970:19;;;;;;;;;;;;;;;:33;3990:12;:10;:12::i;:::-;3970:33;;;;;;;;;;;;;;;;3943:60;;4042:6;4022:16;:26;;4014:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4129:57;4138:6;4146:12;:10;:12::i;:::-;4179:6;4160:16;:25;4129:8;:57::i;:::-;4217:4;4210:11;;;3737:492;;;;;:::o;14291:53::-;14337:6;14291:53;:::o;2866:93::-;2924:5;2949:2;2942:9;;2866:93;:::o;4237:215::-;4325:4;4342:80;4351:12;:10;:12::i;:::-;4365:7;4411:10;4374:11;:25;4386:12;:10;:12::i;:::-;4374:25;;;;;;;;;;;;;;;:34;4400:7;4374:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4342:8;:80::i;:::-;4440:4;4433:11;;4237:215;;;;:::o;14246:38::-;;;:::o;21060:126::-;21126:4;21150:19;:28;21170:7;21150:28;;;;;;;;;;;;;;;;;;;;;;;;;21143:35;;21060:126;;;:::o;19115:336::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19257:13:::1;19239:15;:31;;;;19299:13;19281:15;:31;;;;19356:15;;19338;;:33;;;;:::i;:::-;19323:12;:48;;;;19406:3;19390:12;;:19;;19382:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19115:336:::0;;:::o;14729:28::-;;;;:::o;18840:92::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18919:5:::1;18904:4;:12;18909:6;18904:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;18840:92:::0;:::o;14577:31::-;;;;;;;;;;;;;:::o;3083:127::-;3157:7;3184:9;:18;3194:7;3184:18;;;;;;;;;;;;;;;;3177:25;;3083:127;;;:::o;773:112::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;847:30:::1;874:1;847:18;:30::i;:::-;773:112::o:0;18940:167::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19095:4:::1;19053:31;:39;19085:6;19053:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18940:167:::0;;:::o;14383:30::-;;;;;;;;;;;;;:::o;15200:43::-;;;;;;;;;;;;;;;;;:::o;17526:112::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17597:4:::1;17581:13;;:20;;;;;;;;;;;;;;;;;;17626:4;17612:11;;:18;;;;;;;;;;;;;;;;;;17526:112::o:0;550:87::-;596:7;623:6;;;;;;;;;;;616:13;;550:87;:::o;2754:104::-;2810:13;2843:7;2836:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:104;:::o;18151:504::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18328:4:::1;18320;18315:1;18299:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18298:26;;;;:::i;:::-;18297:35;;;;:::i;:::-;18284:9;:48;;18262:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18476:4;18468;18463:1;18447:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18446:26;;;;:::i;:::-;18445:35;;;;:::i;:::-;18426:15;:54;;18404:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18586:6;18567:15;:26;;;;:::i;:::-;18555:9;:38;;;;18640:6;18627:9;:20;;;;:::i;:::-;18604;:43;;;;18151:504:::0;;:::o;20552:304::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20696:13:::1;20688:21;;:4;:21;;::::0;20666:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20807:41;20836:4;20842:5;20807:28;:41::i;:::-;20552:304:::0;;:::o;4460:413::-;4553:4;4570:24;4597:11;:25;4609:12;:10;:12::i;:::-;4597:25;;;;;;;;;;;;;;;:34;4623:7;4597:34;;;;;;;;;;;;;;;;4570:61;;4670:15;4650:16;:35;;4642:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4763:67;4772:12;:10;:12::i;:::-;4786:7;4814:15;4795:16;:34;4763:8;:67::i;:::-;4861:4;4854:11;;;4460:413;;;;:::o;3218:175::-;3304:4;3321:42;3331:12;:10;:12::i;:::-;3345:9;3356:6;3321:9;:42::i;:::-;3381:4;3374:11;;3218:175;;;;:::o;14537:33::-;;;;;;;;;;;;;:::o;15157:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;20362:182::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20478:8:::1;20447:19;:28;20467:7;20447:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20518:7;20502:34;;;20527:8;20502:34;;;;;;:::i;:::-;;;;;;;;20362:182:::0;;:::o;14422:35::-;;;;:::o;17646:497::-;17754:4;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17833:6:::1;17828:1;17812:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17811:28;;;;:::i;:::-;17798:9;:41;;17776:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17988:4;17983:1;17967:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17966:26;;;;:::i;:::-;17953:9;:39;;17931:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18104:9;18083:18;:30;;;;18131:4;18124:11;;17646:497:::0;;;:::o;14617:27::-;;;;:::o;3401:151::-;3490:7;3517:11;:18;3529:5;3517:18;;;;;;;;;;;;;;;:27;3536:7;3517:27;;;;;;;;;;;;;;;;3510:34;;3401:151;;;;:::o;14464:33::-;;;;:::o;893:201::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1002:1:::1;982:22;;:8;:22;;::::0;974:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1058:28;1077:8;1058:18;:28::i;:::-;893:201:::0;:::o;14504:24::-;;;;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;6029:380::-;6182:1;6165:19;;:5;:19;;;6157:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6263:1;6244:21;;:7;:21;;;6236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6347:6;6317:11;:18;6329:5;6317:18;;;;;;;;;;;;;;;:27;6336:7;6317:27;;;;;;;;;;;;;;;:36;;;;6385:7;6369:32;;6378:5;6369:32;;;6394:6;6369:32;;;;;;:::i;:::-;;;;;;;;6029:380;;;:::o;21194:3623::-;21342:1;21326:18;;:4;:18;;;21318:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21419:1;21405:16;;:2;:16;;;21397:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21488:1;21478:6;:11;21474:93;;21506:28;21522:4;21528:2;21532:1;21506:15;:28::i;:::-;21549:7;;21474:93;21617:7;:5;:7::i;:::-;21609:15;;:4;:15;;;;:49;;;;;21651:7;:5;:7::i;:::-;21645:13;;:2;:13;;;;21609:49;:86;;;;;21693:1;21679:16;;:2;:16;;;;21609:86;:128;;;;;21730:6;21716:21;;:2;:21;;;;21609:128;:158;;;;;21759:8;;;;;;;;;;;21758:9;21609:158;21587:1640;;;21807:13;;;;;;;;;;;21802:223;;21879:19;:25;21899:4;21879:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21908:19;:23;21928:2;21908:23;;;;;;;;;;;;;;;;;;;;;;;;;21879:52;21845:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21802:223;22070:4;:10;22075:4;22070:10;;;;;;;;;;;;;;;;;;;;;;;;;22069:11;:24;;;;;22085:4;:8;22090:2;22085:8;;;;;;;;;;;;;;;;;;;;;;;;;22084:9;22069:24;22061:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22201:25;:31;22227:4;22201:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22258:31;:35;22290:2;22258:35;;;;;;;;;;;;;;;;;;;;;;;;;22257:36;22201:92;22175:1037;;;22380:20;;22370:6;:30;;22336:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22588:9;;22571:13;22581:2;22571:9;:13::i;:::-;22562:6;:22;;;;:::i;:::-;:35;;22528:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22175:1037;;;22766:25;:29;22792:2;22766:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22821:31;:37;22853:4;22821:37;;;;;;;;;;;;;;;;;;;;;;;;;22820:38;22766:92;22740:472;;;22919:20;;22909:6;:30;;22901:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;22740:472;;;23065:31;:35;23097:2;23065:35;;;;;;;;;;;;;;;;;;;;;;;;;23060:152;;23159:9;;23142:13;23152:2;23142:9;:13::i;:::-;23133:6;:22;;;;:::i;:::-;:35;;23125:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23060:152;22740:472;22175:1037;21587:1640;23239:28;23270:24;23288:4;23270:9;:24::i;:::-;23239:55;;23307:12;23346:18;;23322:20;:42;;23307:57;;23395:7;:35;;;;;23419:11;;;;;;;;;;;23395:35;:61;;;;;23448:8;;;;;;;;;;;23447:9;23395:61;:110;;;;;23474:25;:31;23500:4;23474:31;;;;;;;;;;;;;;;;;;;;;;;;;23473:32;23395:110;:153;;;;;23523:19;:25;23543:4;23523:25;;;;;;;;;;;;;;;;;;;;;;;;;23522:26;23395:153;:194;;;;;23566:19;:23;23586:2;23566:23;;;;;;;;;;;;;;;;;;;;;;;;;23565:24;23395:194;23377:326;;;23627:4;23616:8;;:15;;;;;;;;;;;;;;;;;;23648:10;:8;:10::i;:::-;23686:5;23675:8;;:16;;;;;;;;;;;;;;;;;;23377:326;23715:12;23731:8;;;;;;;;;;;23730:9;23715:24;;23756:19;:25;23776:4;23756:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23785:19;:23;23805:2;23785:23;;;;;;;;;;;;;;;;;;;;;;;;;23756:52;23752:100;;;23835:5;23825:15;;23752:100;23864:12;23897:7;23893:831;;;23949:25;:29;23975:2;23949:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23998:1;23982:13;;:17;23949:50;23945:630;;;24027:34;24057:3;24027:25;24038:13;;24027:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24020:41;;24130:13;;24110:16;;24103:4;:23;;;;:::i;:::-;24102:41;;;;:::i;:::-;24080:18;;:63;;;;;;;:::i;:::-;;;;;;;;24212:13;;24192:16;;24185:4;:23;;;;:::i;:::-;24184:41;;;;:::i;:::-;24162:18;;:63;;;;;;;:::i;:::-;;;;;;;;23945:630;;;24287:25;:31;24313:4;24287:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;24337:1;24322:12;;:16;24287:51;24283:292;;;24366:33;24395:3;24366:24;24377:12;;24366:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24359:40;;24467:12;;24448:15;;24441:4;:22;;;;:::i;:::-;24440:39;;;;:::i;:::-;24418:18;;:61;;;;;;;:::i;:::-;;;;;;;;24547:12;;24528:15;;24521:4;:22;;;;:::i;:::-;24520:39;;;;:::i;:::-;24498:18;;:61;;;;;;;:::i;:::-;;;;;;;;24283:292;23945:630;24602:1;24595:4;:8;24591:91;;;24624:42;24640:4;24654;24661;24624:15;:42::i;:::-;24591:91;24708:4;24698:14;;;;;:::i;:::-;;;23893:831;24736:33;24752:4;24758:2;24762:6;24736:15;:33::i;:::-;24796:11;;24780:13;:27;;;;21307:3510;;;;21194:3623;;;;:::o;1102:191::-;1176:16;1195:6;;;;;;;;;;;1176:25;;1221:8;1212:6;;:17;;;;;;;;;;;;;;;;;;1276:8;1245:40;;1266:8;1245:40;;;;;;;;;;;;1165:128;1102:191;:::o;20864:188::-;20981:5;20947:25;:31;20973:4;20947:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21038:5;21004:40;;21032:4;21004:40;;;;;;;;;;;;20864:188;;:::o;4881:733::-;5039:1;5021:20;;:6;:20;;;5013:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5123:1;5102:23;;:9;:23;;;5094:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5178:47;5199:6;5207:9;5218:6;5178:20;:47::i;:::-;5238:21;5262:9;:17;5272:6;5262:17;;;;;;;;;;;;;;;;5238:41;;5315:6;5298:13;:23;;5290:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5436:6;5420:13;:22;5400:9;:17;5410:6;5400:17;;;;;;;;;;;;;;;:42;;;;5488:6;5464:9;:20;5474:9;5464:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5529:9;5512:35;;5521:6;5512:35;;;5540:6;5512:35;;;;;;:::i;:::-;;;;;;;;5560:46;5580:6;5588:9;5599:6;5560:19;:46::i;:::-;5002:612;4881:733;;;:::o;25712:1462::-;25751:23;25777:24;25795:4;25777:9;:24::i;:::-;25751:50;;25812:25;25874:18;;25840;;:52;;;;:::i;:::-;25812:80;;25903:12;25951:1;25932:15;:20;:46;;;;25977:1;25956:17;:22;25932:46;25928:85;;;25995:7;;;;;25928:85;26068:2;26047:18;;:23;;;;:::i;:::-;26029:15;:41;26025:115;;;26126:2;26105:18;;:23;;;;:::i;:::-;26087:41;;26025:115;26152:23;26265:1;26232:17;26197:18;;26179:15;:36;;;;:::i;:::-;26178:71;;;;:::i;:::-;:88;;;;:::i;:::-;26152:114;;26277:26;26306:36;26326:15;26306;:19;;:36;;;;:::i;:::-;26277:65;;26355:25;26383:21;26355:49;;26417:36;26434:18;26417:16;:36::i;:::-;26466:18;26487:44;26513:17;26487:21;:25;;:44;;;;:::i;:::-;26466:65;;26544:23;26570:81;26623:17;26570:34;26585:18;;26570:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26544:107;;26664:23;26703:15;26690:10;:28;;;;:::i;:::-;26664:54;;26752:1;26731:18;:22;;;;26785:1;26764:18;:22;;;;26821:1;26803:15;:19;:42;;;;;26844:1;26826:15;:19;26803:42;26799:278;;;26862:46;26875:15;26892;26862:12;:46::i;:::-;26928:137;26961:18;26998:15;27032:18;;26928:137;;;;;;;;:::i;:::-;;;;;;;;26799:278;27111:15;;;;;;;;;;;27103:29;;27140:21;27103:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27089:77;;;;;25740:1434;;;;;;;;;25712:1462;:::o;8035:98::-;8093:7;8124:1;8120;:5;;;;:::i;:::-;8113:12;;8035:98;;;;:::o;8141:::-;8199:7;8230:1;8226;:5;;;;:::i;:::-;8219:12;;8141:98;;;;:::o;6417:125::-;;;;:::o;6550:124::-;;;;:::o;7929:98::-;7987:7;8018:1;8014;:5;;;;:::i;:::-;8007:12;;7929:98;;;;:::o;24825:503::-;24893:21;24931:1;24917:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24893:40;;24962:4;24944;24949:1;24944:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24988:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24978:4;24983:1;24978:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25023:62;25040:4;25055:15;25073:11;25023:8;:62::i;:::-;25124:15;:66;;;25205:11;25231:1;25247:4;25274;25294:15;25124:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24880:448;24825:503;:::o;25336:368::-;25419:62;25436:4;25451:15;25469:11;25419:8;:62::i;:::-;25494:15;:31;;;25533:9;25566:4;25586:11;25612:1;25628;14337:6;25670:15;25494:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25336:368;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:474::-;4215:6;4223;4272:2;4260:9;4251:7;4247:23;4243:32;4240:119;;;4278:79;;:::i;:::-;4240:119;4398:1;4423:53;4468:7;4459:6;4448:9;4444:22;4423:53;:::i;:::-;4413:63;;4369:117;4525:2;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4496:118;4147:474;;;;;:::o;4627:99::-;4679:6;4713:5;4707:12;4697:22;;4627:99;;;:::o;4732:169::-;4816:11;4850:6;4845:3;4838:19;4890:4;4885:3;4881:14;4866:29;;4732:169;;;;:::o;4907:246::-;4988:1;4998:113;5012:6;5009:1;5006:13;4998:113;;;5097:1;5092:3;5088:11;5082:18;5078:1;5073:3;5069:11;5062:39;5034:2;5031:1;5027:10;5022:15;;4998:113;;;5145:1;5136:6;5131:3;5127:16;5120:27;4969:184;4907:246;;;:::o;5159:377::-;5247:3;5275:39;5308:5;5275:39;:::i;:::-;5330:71;5394:6;5389:3;5330:71;:::i;:::-;5323:78;;5410:65;5468:6;5463:3;5456:4;5449:5;5445:16;5410:65;:::i;:::-;5500:29;5522:6;5500:29;:::i;:::-;5495:3;5491:39;5484:46;;5251:285;5159:377;;;;:::o;5542:313::-;5655:4;5693:2;5682:9;5678:18;5670:26;;5742:9;5736:4;5732:20;5728:1;5717:9;5713:17;5706:47;5770:78;5843:4;5834:6;5770:78;:::i;:::-;5762:86;;5542:313;;;;:::o;5861:765::-;5947:6;5955;5963;5971;6020:3;6008:9;5999:7;5995:23;5991:33;5988:120;;;6027:79;;:::i;:::-;5988:120;6147:1;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6118:117;6274:2;6300:53;6345:7;6336:6;6325:9;6321:22;6300:53;:::i;:::-;6290:63;;6245:118;6402:2;6428:53;6473:7;6464:6;6453:9;6449:22;6428:53;:::i;:::-;6418:63;;6373:118;6530:2;6556:53;6601:7;6592:6;6581:9;6577:22;6556:53;:::i;:::-;6546:63;;6501:118;5861:765;;;;;;;:::o;6632:474::-;6700:6;6708;6757:2;6745:9;6736:7;6732:23;6728:32;6725:119;;;6763:79;;:::i;:::-;6725:119;6883:1;6908:53;6953:7;6944:6;6933:9;6929:22;6908:53;:::i;:::-;6898:63;;6854:117;7010:2;7036:53;7081:7;7072:6;7061:9;7057:22;7036:53;:::i;:::-;7026:63;;6981:118;6632:474;;;;;:::o;7112:90::-;7146:7;7189:5;7182:13;7175:21;7164:32;;7112:90;;;:::o;7208:109::-;7289:21;7304:5;7289:21;:::i;:::-;7284:3;7277:34;7208:109;;:::o;7323:210::-;7410:4;7448:2;7437:9;7433:18;7425:26;;7461:65;7523:1;7512:9;7508:17;7499:6;7461:65;:::i;:::-;7323:210;;;;:::o;7539:60::-;7567:3;7588:5;7581:12;;7539:60;;;:::o;7605:142::-;7655:9;7688:53;7706:34;7715:24;7733:5;7715:24;:::i;:::-;7706:34;:::i;:::-;7688:53;:::i;:::-;7675:66;;7605:142;;;:::o;7753:126::-;7803:9;7836:37;7867:5;7836:37;:::i;:::-;7823:50;;7753:126;;;:::o;7885:153::-;7962:9;7995:37;8026:5;7995:37;:::i;:::-;7982:50;;7885:153;;;:::o;8044:185::-;8158:64;8216:5;8158:64;:::i;:::-;8153:3;8146:77;8044:185;;:::o;8235:276::-;8355:4;8393:2;8382:9;8378:18;8370:26;;8406:98;8501:1;8490:9;8486:17;8477:6;8406:98;:::i;:::-;8235:276;;;;:::o;8517:118::-;8604:24;8622:5;8604:24;:::i;:::-;8599:3;8592:37;8517:118;;:::o;8641:222::-;8734:4;8772:2;8761:9;8757:18;8749:26;;8785:71;8853:1;8842:9;8838:17;8829:6;8785:71;:::i;:::-;8641:222;;;;:::o;8869:619::-;8946:6;8954;8962;9011:2;8999:9;8990:7;8986:23;8982:32;8979:119;;;9017:79;;:::i;:::-;8979:119;9137:1;9162:53;9207:7;9198:6;9187:9;9183:22;9162:53;:::i;:::-;9152:63;;9108:117;9264:2;9290:53;9335:7;9326:6;9315:9;9311:22;9290:53;:::i;:::-;9280:63;;9235:118;9392:2;9418:53;9463:7;9454:6;9443:9;9439:22;9418:53;:::i;:::-;9408:63;;9363:118;8869:619;;;;;:::o;9494:118::-;9581:24;9599:5;9581:24;:::i;:::-;9576:3;9569:37;9494:118;;:::o;9618:222::-;9711:4;9749:2;9738:9;9734:18;9726:26;;9762:71;9830:1;9819:9;9815:17;9806:6;9762:71;:::i;:::-;9618:222;;;;:::o;9846:86::-;9881:7;9921:4;9914:5;9910:16;9899:27;;9846:86;;;:::o;9938:112::-;10021:22;10037:5;10021:22;:::i;:::-;10016:3;10009:35;9938:112;;:::o;10056:214::-;10145:4;10183:2;10172:9;10168:18;10160:26;;10196:67;10260:1;10249:9;10245:17;10236:6;10196:67;:::i;:::-;10056:214;;;;:::o;10276:329::-;10335:6;10384:2;10372:9;10363:7;10359:23;10355:32;10352:119;;;10390:79;;:::i;:::-;10352:119;10510:1;10535:53;10580:7;10571:6;10560:9;10556:22;10535:53;:::i;:::-;10525:63;;10481:117;10276:329;;;;:::o;10611:116::-;10681:21;10696:5;10681:21;:::i;:::-;10674:5;10671:32;10661:60;;10717:1;10714;10707:12;10661:60;10611:116;:::o;10733:133::-;10776:5;10814:6;10801:20;10792:29;;10830:30;10854:5;10830:30;:::i;:::-;10733:133;;;;:::o;10872:468::-;10937:6;10945;10994:2;10982:9;10973:7;10969:23;10965:32;10962:119;;;11000:79;;:::i;:::-;10962:119;11120:1;11145:53;11190:7;11181:6;11170:9;11166:22;11145:53;:::i;:::-;11135:63;;11091:117;11247:2;11273:50;11315:7;11306:6;11295:9;11291:22;11273:50;:::i;:::-;11263:60;;11218:115;10872:468;;;;;:::o;11346:329::-;11405:6;11454:2;11442:9;11433:7;11429:23;11425:32;11422:119;;;11460:79;;:::i;:::-;11422:119;11580:1;11605:53;11650:7;11641:6;11630:9;11626:22;11605:53;:::i;:::-;11595:63;;11551:117;11346:329;;;;:::o;11681:474::-;11749:6;11757;11806:2;11794:9;11785:7;11781:23;11777:32;11774:119;;;11812:79;;:::i;:::-;11774:119;11932:1;11957:53;12002:7;11993:6;11982:9;11978:22;11957:53;:::i;:::-;11947:63;;11903:117;12059:2;12085:53;12130:7;12121:6;12110:9;12106:22;12085:53;:::i;:::-;12075:63;;12030:118;11681:474;;;;;:::o;12161:182::-;12301:34;12297:1;12289:6;12285:14;12278:58;12161:182;:::o;12349:366::-;12491:3;12512:67;12576:2;12571:3;12512:67;:::i;:::-;12505:74;;12588:93;12677:3;12588:93;:::i;:::-;12706:2;12701:3;12697:12;12690:19;;12349:366;;;:::o;12721:419::-;12887:4;12925:2;12914:9;12910:18;12902:26;;12974:9;12968:4;12964:20;12960:1;12949:9;12945:17;12938:47;13002:131;13128:4;13002:131;:::i;:::-;12994:139;;12721:419;;;:::o;13146:180::-;13194:77;13191:1;13184:88;13291:4;13288:1;13281:15;13315:4;13312:1;13305:15;13332:180;13380:77;13377:1;13370:88;13477:4;13474:1;13467:15;13501:4;13498:1;13491:15;13518:233;13557:3;13580:24;13598:5;13580:24;:::i;:::-;13571:33;;13626:66;13619:5;13616:77;13613:103;;13696:18;;:::i;:::-;13613:103;13743:1;13736:5;13732:13;13725:20;;13518:233;;;:::o;13757:191::-;13797:3;13816:20;13834:1;13816:20;:::i;:::-;13811:25;;13850:20;13868:1;13850:20;:::i;:::-;13845:25;;13893:1;13890;13886:9;13879:16;;13914:3;13911:1;13908:10;13905:36;;;13921:18;;:::i;:::-;13905:36;13757:191;;;;:::o;13954:179::-;14094:31;14090:1;14082:6;14078:14;14071:55;13954:179;:::o;14139:366::-;14281:3;14302:67;14366:2;14361:3;14302:67;:::i;:::-;14295:74;;14378:93;14467:3;14378:93;:::i;:::-;14496:2;14491:3;14487:12;14480:19;;14139:366;;;:::o;14511:419::-;14677:4;14715:2;14704:9;14700:18;14692:26;;14764:9;14758:4;14754:20;14750:1;14739:9;14735:17;14728:47;14792:131;14918:4;14792:131;:::i;:::-;14784:139;;14511:419;;;:::o;14936:180::-;14984:77;14981:1;14974:88;15081:4;15078:1;15071:15;15105:4;15102:1;15095:15;15122:320;15166:6;15203:1;15197:4;15193:12;15183:22;;15250:1;15244:4;15240:12;15271:18;15261:81;;15327:4;15319:6;15315:17;15305:27;;15261:81;15389:2;15381:6;15378:14;15358:18;15355:38;15352:84;;15408:18;;:::i;:::-;15352:84;15173:269;15122:320;;;:::o;15448:227::-;15588:34;15584:1;15576:6;15572:14;15565:58;15657:10;15652:2;15644:6;15640:15;15633:35;15448:227;:::o;15681:366::-;15823:3;15844:67;15908:2;15903:3;15844:67;:::i;:::-;15837:74;;15920:93;16009:3;15920:93;:::i;:::-;16038:2;16033:3;16029:12;16022:19;;15681:366;;;:::o;16053:419::-;16219:4;16257:2;16246:9;16242:18;16234:26;;16306:9;16300:4;16296:20;16292:1;16281:9;16277:17;16270:47;16334:131;16460:4;16334:131;:::i;:::-;16326:139;;16053:419;;;:::o;16478:348::-;16518:7;16541:20;16559:1;16541:20;:::i;:::-;16536:25;;16575:20;16593:1;16575:20;:::i;:::-;16570:25;;16763:1;16695:66;16691:74;16688:1;16685:81;16680:1;16673:9;16666:17;16662:105;16659:131;;;16770:18;;:::i;:::-;16659:131;16818:1;16815;16811:9;16800:20;;16478:348;;;;:::o;16832:180::-;16880:77;16877:1;16870:88;16977:4;16974:1;16967:15;17001:4;16998:1;16991:15;17018:185;17058:1;17075:20;17093:1;17075:20;:::i;:::-;17070:25;;17109:20;17127:1;17109:20;:::i;:::-;17104:25;;17148:1;17138:35;;17153:18;;:::i;:::-;17138:35;17195:1;17192;17188:9;17183:14;;17018:185;;;;:::o;17209:220::-;17349:34;17345:1;17337:6;17333:14;17326:58;17418:3;17413:2;17405:6;17401:15;17394:28;17209:220;:::o;17435:366::-;17577:3;17598:67;17662:2;17657:3;17598:67;:::i;:::-;17591:74;;17674:93;17763:3;17674:93;:::i;:::-;17792:2;17787:3;17783:12;17776:19;;17435:366;;;:::o;17807:419::-;17973:4;18011:2;18000:9;17996:18;17988:26;;18060:9;18054:4;18050:20;18046:1;18035:9;18031:17;18024:47;18088:131;18214:4;18088:131;:::i;:::-;18080:139;;17807:419;;;:::o;18232:223::-;18372:34;18368:1;18360:6;18356:14;18349:58;18441:6;18436:2;18428:6;18424:15;18417:31;18232:223;:::o;18461:366::-;18603:3;18624:67;18688:2;18683:3;18624:67;:::i;:::-;18617:74;;18700:93;18789:3;18700:93;:::i;:::-;18818:2;18813:3;18809:12;18802:19;;18461:366;;;:::o;18833:419::-;18999:4;19037:2;19026:9;19022:18;19014:26;;19086:9;19080:4;19076:20;19072:1;19061:9;19057:17;19050:47;19114:131;19240:4;19114:131;:::i;:::-;19106:139;;18833:419;;;:::o;19258:244::-;19398:34;19394:1;19386:6;19382:14;19375:58;19467:27;19462:2;19454:6;19450:15;19443:52;19258:244;:::o;19508:366::-;19650:3;19671:67;19735:2;19730:3;19671:67;:::i;:::-;19664:74;;19747:93;19836:3;19747:93;:::i;:::-;19865:2;19860:3;19856:12;19849:19;;19508:366;;;:::o;19880:419::-;20046:4;20084:2;20073:9;20069:18;20061:26;;20133:9;20127:4;20123:20;20119:1;20108:9;20104:17;20097:47;20161:131;20287:4;20161:131;:::i;:::-;20153:139;;19880:419;;;:::o;20305:224::-;20445:34;20441:1;20433:6;20429:14;20422:58;20514:7;20509:2;20501:6;20497:15;20490:32;20305:224;:::o;20535:366::-;20677:3;20698:67;20762:2;20757:3;20698:67;:::i;:::-;20691:74;;20774:93;20863:3;20774:93;:::i;:::-;20892:2;20887:3;20883:12;20876:19;;20535:366;;;:::o;20907:419::-;21073:4;21111:2;21100:9;21096:18;21088:26;;21160:9;21154:4;21150:20;21146:1;21135:9;21131:17;21124:47;21188:131;21314:4;21188:131;:::i;:::-;21180:139;;20907:419;;;:::o;21332:240::-;21472:34;21468:1;21460:6;21456:14;21449:58;21541:23;21536:2;21528:6;21524:15;21517:48;21332:240;:::o;21578:366::-;21720:3;21741:67;21805:2;21800:3;21741:67;:::i;:::-;21734:74;;21817:93;21906:3;21817:93;:::i;:::-;21935:2;21930:3;21926:12;21919:19;;21578:366;;;:::o;21950:419::-;22116:4;22154:2;22143:9;22139:18;22131:26;;22203:9;22197:4;22193:20;22189:1;22178:9;22174:17;22167:47;22231:131;22357:4;22231:131;:::i;:::-;22223:139;;21950:419;;;:::o;22375:239::-;22515:34;22511:1;22503:6;22499:14;22492:58;22584:22;22579:2;22571:6;22567:15;22560:47;22375:239;:::o;22620:366::-;22762:3;22783:67;22847:2;22842:3;22783:67;:::i;:::-;22776:74;;22859:93;22948:3;22859:93;:::i;:::-;22977:2;22972:3;22968:12;22961:19;;22620:366;;;:::o;22992:419::-;23158:4;23196:2;23185:9;23181:18;23173:26;;23245:9;23239:4;23235:20;23231:1;23220:9;23216:17;23209:47;23273:131;23399:4;23273:131;:::i;:::-;23265:139;;22992:419;;;:::o;23417:225::-;23557:34;23553:1;23545:6;23541:14;23534:58;23626:8;23621:2;23613:6;23609:15;23602:33;23417:225;:::o;23648:366::-;23790:3;23811:67;23875:2;23870:3;23811:67;:::i;:::-;23804:74;;23887:93;23976:3;23887:93;:::i;:::-;24005:2;24000:3;23996:12;23989:19;;23648:366;;;:::o;24020:419::-;24186:4;24224:2;24213:9;24209:18;24201:26;;24273:9;24267:4;24263:20;24259:1;24248:9;24244:17;24237:47;24301:131;24427:4;24301:131;:::i;:::-;24293:139;;24020:419;;;:::o;24445:223::-;24585:34;24581:1;24573:6;24569:14;24562:58;24654:6;24649:2;24641:6;24637:15;24630:31;24445:223;:::o;24674:366::-;24816:3;24837:67;24901:2;24896:3;24837:67;:::i;:::-;24830:74;;24913:93;25002:3;24913:93;:::i;:::-;25031:2;25026:3;25022:12;25015:19;;24674:366;;;:::o;25046:419::-;25212:4;25250:2;25239:9;25235:18;25227:26;;25299:9;25293:4;25289:20;25285:1;25274:9;25270:17;25263:47;25327:131;25453:4;25327:131;:::i;:::-;25319:139;;25046:419;;;:::o;25471:221::-;25611:34;25607:1;25599:6;25595:14;25588:58;25680:4;25675:2;25667:6;25663:15;25656:29;25471:221;:::o;25698:366::-;25840:3;25861:67;25925:2;25920:3;25861:67;:::i;:::-;25854:74;;25937:93;26026:3;25937:93;:::i;:::-;26055:2;26050:3;26046:12;26039:19;;25698:366;;;:::o;26070:419::-;26236:4;26274:2;26263:9;26259:18;26251:26;;26323:9;26317:4;26313:20;26309:1;26298:9;26294:17;26287:47;26351:131;26477:4;26351:131;:::i;:::-;26343:139;;26070:419;;;:::o;26495:224::-;26635:34;26631:1;26623:6;26619:14;26612:58;26704:7;26699:2;26691:6;26687:15;26680:32;26495:224;:::o;26725:366::-;26867:3;26888:67;26952:2;26947:3;26888:67;:::i;:::-;26881:74;;26964:93;27053:3;26964:93;:::i;:::-;27082:2;27077:3;27073:12;27066:19;;26725:366;;;:::o;27097:419::-;27263:4;27301:2;27290:9;27286:18;27278:26;;27350:9;27344:4;27340:20;27336:1;27325:9;27321:17;27314:47;27378:131;27504:4;27378:131;:::i;:::-;27370:139;;27097:419;;;:::o;27522:222::-;27662:34;27658:1;27650:6;27646:14;27639:58;27731:5;27726:2;27718:6;27714:15;27707:30;27522:222;:::o;27750:366::-;27892:3;27913:67;27977:2;27972:3;27913:67;:::i;:::-;27906:74;;27989:93;28078:3;27989:93;:::i;:::-;28107:2;28102:3;28098:12;28091:19;;27750:366;;;:::o;28122:419::-;28288:4;28326:2;28315:9;28311:18;28303:26;;28375:9;28369:4;28365:20;28361:1;28350:9;28346:17;28339:47;28403:131;28529:4;28403:131;:::i;:::-;28395:139;;28122:419;;;:::o;28547:172::-;28687:24;28683:1;28675:6;28671:14;28664:48;28547:172;:::o;28725:366::-;28867:3;28888:67;28952:2;28947:3;28888:67;:::i;:::-;28881:74;;28964:93;29053:3;28964:93;:::i;:::-;29082:2;29077:3;29073:12;29066:19;;28725:366;;;:::o;29097:419::-;29263:4;29301:2;29290:9;29286:18;29278:26;;29350:9;29344:4;29340:20;29336:1;29325:9;29321:17;29314:47;29378:131;29504:4;29378:131;:::i;:::-;29370:139;;29097:419;;;:::o;29522:178::-;29662:30;29658:1;29650:6;29646:14;29639:54;29522:178;:::o;29706:366::-;29848:3;29869:67;29933:2;29928:3;29869:67;:::i;:::-;29862:74;;29945:93;30034:3;29945:93;:::i;:::-;30063:2;30058:3;30054:12;30047:19;;29706:366;;;:::o;30078:419::-;30244:4;30282:2;30271:9;30267:18;30259:26;;30331:9;30325:4;30321:20;30317:1;30306:9;30302:17;30295:47;30359:131;30485:4;30359:131;:::i;:::-;30351:139;;30078:419;;;:::o;30503:240::-;30643:34;30639:1;30631:6;30627:14;30620:58;30712:23;30707:2;30699:6;30695:15;30688:48;30503:240;:::o;30749:366::-;30891:3;30912:67;30976:2;30971:3;30912:67;:::i;:::-;30905:74;;30988:93;31077:3;30988:93;:::i;:::-;31106:2;31101:3;31097:12;31090:19;;30749:366;;;:::o;31121:419::-;31287:4;31325:2;31314:9;31310:18;31302:26;;31374:9;31368:4;31364:20;31360:1;31349:9;31345:17;31338:47;31402:131;31528:4;31402:131;:::i;:::-;31394:139;;31121:419;;;:::o;31546:169::-;31686:21;31682:1;31674:6;31670:14;31663:45;31546:169;:::o;31721:366::-;31863:3;31884:67;31948:2;31943:3;31884:67;:::i;:::-;31877:74;;31960:93;32049:3;31960:93;:::i;:::-;32078:2;32073:3;32069:12;32062:19;;31721:366;;;:::o;32093:419::-;32259:4;32297:2;32286:9;32282:18;32274:26;;32346:9;32340:4;32336:20;32332:1;32321:9;32317:17;32310:47;32374:131;32500:4;32374:131;:::i;:::-;32366:139;;32093:419;;;:::o;32518:241::-;32658:34;32654:1;32646:6;32642:14;32635:58;32727:24;32722:2;32714:6;32710:15;32703:49;32518:241;:::o;32765:366::-;32907:3;32928:67;32992:2;32987:3;32928:67;:::i;:::-;32921:74;;33004:93;33093:3;33004:93;:::i;:::-;33122:2;33117:3;33113:12;33106:19;;32765:366;;;:::o;33137:419::-;33303:4;33341:2;33330:9;33326:18;33318:26;;33390:9;33384:4;33380:20;33376:1;33365:9;33361:17;33354:47;33418:131;33544:4;33418:131;:::i;:::-;33410:139;;33137:419;;;:::o;33562:194::-;33602:4;33622:20;33640:1;33622:20;:::i;:::-;33617:25;;33656:20;33674:1;33656:20;:::i;:::-;33651:25;;33700:1;33697;33693:9;33685:17;;33724:1;33718:4;33715:11;33712:37;;;33729:18;;:::i;:::-;33712:37;33562:194;;;;:::o;33762:225::-;33902:34;33898:1;33890:6;33886:14;33879:58;33971:8;33966:2;33958:6;33954:15;33947:33;33762:225;:::o;33993:366::-;34135:3;34156:67;34220:2;34215:3;34156:67;:::i;:::-;34149:74;;34232:93;34321:3;34232:93;:::i;:::-;34350:2;34345:3;34341:12;34334:19;;33993:366;;;:::o;34365:419::-;34531:4;34569:2;34558:9;34554:18;34546:26;;34618:9;34612:4;34608:20;34604:1;34593:9;34589:17;34582:47;34646:131;34772:4;34646:131;:::i;:::-;34638:139;;34365:419;;;:::o;34790:442::-;34939:4;34977:2;34966:9;34962:18;34954:26;;34990:71;35058:1;35047:9;35043:17;35034:6;34990:71;:::i;:::-;35071:72;35139:2;35128:9;35124:18;35115:6;35071:72;:::i;:::-;35153;35221:2;35210:9;35206:18;35197:6;35153:72;:::i;:::-;34790:442;;;;;;:::o;35238:147::-;35339:11;35376:3;35361:18;;35238:147;;;;:::o;35391:114::-;;:::o;35511:398::-;35670:3;35691:83;35772:1;35767:3;35691:83;:::i;:::-;35684:90;;35783:93;35872:3;35783:93;:::i;:::-;35901:1;35896:3;35892:11;35885:18;;35511:398;;;:::o;35915:379::-;36099:3;36121:147;36264:3;36121:147;:::i;:::-;36114:154;;36285:3;36278:10;;35915:379;;;:::o;36300:143::-;36357:5;36388:6;36382:13;36373:22;;36404:33;36431:5;36404:33;:::i;:::-;36300:143;;;;:::o;36449:351::-;36519:6;36568:2;36556:9;36547:7;36543:23;36539:32;36536:119;;;36574:79;;:::i;:::-;36536:119;36694:1;36719:64;36775:7;36766:6;36755:9;36751:22;36719:64;:::i;:::-;36709:74;;36665:128;36449:351;;;;:::o;36806:85::-;36851:7;36880:5;36869:16;;36806:85;;;:::o;36897:158::-;36955:9;36988:61;37006:42;37015:32;37041:5;37015:32;:::i;:::-;37006:42;:::i;:::-;36988:61;:::i;:::-;36975:74;;36897:158;;;:::o;37061:147::-;37156:45;37195:5;37156:45;:::i;:::-;37151:3;37144:58;37061:147;;:::o;37214:114::-;37281:6;37315:5;37309:12;37299:22;;37214:114;;;:::o;37334:184::-;37433:11;37467:6;37462:3;37455:19;37507:4;37502:3;37498:14;37483:29;;37334:184;;;;:::o;37524:132::-;37591:4;37614:3;37606:11;;37644:4;37639:3;37635:14;37627:22;;37524:132;;;:::o;37662:108::-;37739:24;37757:5;37739:24;:::i;:::-;37734:3;37727:37;37662:108;;:::o;37776:179::-;37845:10;37866:46;37908:3;37900:6;37866:46;:::i;:::-;37944:4;37939:3;37935:14;37921:28;;37776:179;;;;:::o;37961:113::-;38031:4;38063;38058:3;38054:14;38046:22;;37961:113;;;:::o;38110:732::-;38229:3;38258:54;38306:5;38258:54;:::i;:::-;38328:86;38407:6;38402:3;38328:86;:::i;:::-;38321:93;;38438:56;38488:5;38438:56;:::i;:::-;38517:7;38548:1;38533:284;38558:6;38555:1;38552:13;38533:284;;;38634:6;38628:13;38661:63;38720:3;38705:13;38661:63;:::i;:::-;38654:70;;38747:60;38800:6;38747:60;:::i;:::-;38737:70;;38593:224;38580:1;38577;38573:9;38568:14;;38533:284;;;38537:14;38833:3;38826:10;;38234:608;;;38110:732;;;;:::o;38848:831::-;39111:4;39149:3;39138:9;39134:19;39126:27;;39163:71;39231:1;39220:9;39216:17;39207:6;39163:71;:::i;:::-;39244:80;39320:2;39309:9;39305:18;39296:6;39244:80;:::i;:::-;39371:9;39365:4;39361:20;39356:2;39345:9;39341:18;39334:48;39399:108;39502:4;39493:6;39399:108;:::i;:::-;39391:116;;39517:72;39585:2;39574:9;39570:18;39561:6;39517:72;:::i;:::-;39599:73;39667:3;39656:9;39652:19;39643:6;39599:73;:::i;:::-;38848:831;;;;;;;;:::o;39685:807::-;39934:4;39972:3;39961:9;39957:19;39949:27;;39986:71;40054:1;40043:9;40039:17;40030:6;39986:71;:::i;:::-;40067:72;40135:2;40124:9;40120:18;40111:6;40067:72;:::i;:::-;40149:80;40225:2;40214:9;40210:18;40201:6;40149:80;:::i;:::-;40239;40315:2;40304:9;40300:18;40291:6;40239:80;:::i;:::-;40329:73;40397:3;40386:9;40382:19;40373:6;40329:73;:::i;:::-;40412;40480:3;40469:9;40465:19;40456:6;40412:73;:::i;:::-;39685:807;;;;;;;;;:::o;40498:143::-;40555:5;40586:6;40580:13;40571:22;;40602:33;40629:5;40602:33;:::i;:::-;40498:143;;;;:::o;40647:663::-;40735:6;40743;40751;40800:2;40788:9;40779:7;40775:23;40771:32;40768:119;;;40806:79;;:::i;:::-;40768:119;40926:1;40951:64;41007:7;40998:6;40987:9;40983:22;40951:64;:::i;:::-;40941:74;;40897:128;41064:2;41090:64;41146:7;41137:6;41126:9;41122:22;41090:64;:::i;:::-;41080:74;;41035:129;41203:2;41229:64;41285:7;41276:6;41265:9;41261:22;41229:64;:::i;:::-;41219:74;;41174:129;40647:663;;;;;:::o

Swarm Source

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