ETH Price: $3,265.32 (-0.50%)
Gas: 3 Gwei

Token

Catcoin (CATS)
 

Overview

Max Total Supply

9,000,000,000,000 CATS

Holders

318

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

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

OVERVIEW

Catcoin is a community-driven project that aims to establish a strong presence in the crypto world and build a humble community around it, with the ultimate goal of helping out cats in need.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Catcoin

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.16;

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

library SafeMath {

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

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

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

abstract contract Ownable is Context {
    address internal _owner;
    address private _previousOwner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

interface IUniswapV2Pair 
{
    function factory() external view returns (address);
}

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract Catcoin is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    address public _burnAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;
    string private _name;
    string private _symbol;
    uint256 private _decimals;

    // Buy tax
    uint256 private _buyTaxFee = 0;
    uint256 private _buyLiquidityFee = 7;

    // Sell tax
    uint256 private _sellTaxFee = 2;
    uint256 private _sellLiquidityFee = 7;

    uint256 public _taxFee = _buyTaxFee;
    uint256 public _liquidityFee = _buyLiquidityFee;

    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousLiquidityFee = _liquidityFee;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public numTokensSellToAddToLiquidity;
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    constructor() {
        _name = "Catcoin";
        _symbol = "CATS";
        _decimals = 0;
        _tTotal = 9e12;
        _rTotal = (MAX - (MAX % _tTotal));
        numTokensSellToAddToLiquidity = 2e9;

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        emit Transfer(address(0), owner(), _tTotal);
    }

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

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

    function decimals() public view returns (uint256) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , ,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setSellFeePercent(
        uint256 tFee,
        uint256 lFee
            ) external onlyOwner {
        _sellTaxFee = tFee;
        _sellLiquidityFee = lFee;
        _taxFee = _sellTaxFee;
        _liquidityFee = _sellLiquidityFee;
        uint256 sFee = _taxFee.add(_liquidityFee);
        require(sFee <= 9, "ERC20: Sell fees cannot be more than 9%");

    }

    function setBuyFeePercent(
        uint256 tFee,
        uint256 lFee
            ) external onlyOwner {
        _buyTaxFee = tFee;
        _buyLiquidityFee = lFee;
        _taxFee = _buyTaxFee;
        _liquidityFee = _buyLiquidityFee;
        uint256 bFee = _taxFee.add(_liquidityFee);
        require(bFee <= 7, "ERC20: Buy fees cannot be more than 7%");

    }
    
    function setNumTokensSellToAddToLiquidity(uint256 amount)
        external
        onlyOwner
    {
        numTokensSellToAddToLiquidity = amount;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tLiquidity,
            _getRate()
        );
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tLiquidity
        );
    }

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity)
        private
    {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(
            currentRate
        );
        _rOwned[address(this)] = _rOwned[address(this)].add(
            rLiquidity
        );
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(
                tLiquidity
            );
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**2);
    }

    function calculateLiquidityFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul((_liquidityFee)).div(10**2);
    }

    function removeAllFee() private {
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;

        _taxFee = 0;
        _liquidityFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair) {
                // Buy
                _taxFee = _buyTaxFee;
                _liquidityFee = _buyLiquidityFee;
            } else if (to == uniswapV2Pair) {
                // Sell
                _taxFee = _sellTaxFee;
                _liquidityFee = _sellLiquidityFee;
            } else {
                // Transfer
                _taxFee = 0;
                _liquidityFee = 0;
            }
        }
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half); 
        uint256 newBalance = address(this).balance.sub(initialBalance);
        addLiquidity(otherHalf, newBalance);
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            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, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function withdrawStuckETH() external onlyOwner{
        require (address(this).balance > 0, "Can't withdraw negative or zero");
        payable(owner()).transfer(address(this).balance);
    }

    function removeStuckToken(address _address) external onlyOwner {
        require(_address != address(this), "Can't withdraw tokens destined for liquidity");
        require(IERC20(_address).balanceOf(address(this)) > 0, "Can't withdraw 0");

        IERC20(_address).transfer(owner(), IERC20(_address).balanceOf(address(this)));
    }  
}

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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","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":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tFee","type":"uint256"},{"internalType":"uint256","name":"lFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tFee","type":"uint256"},{"internalType":"uint256","name":"lFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f55600760105560026011556007601255600f546013556010546014556013546015556014546016556001601860156101000a81548160ff0219169083151502179055503480156200009b57600080fd5b50620000ac6200050f60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36040518060400160405280600781526020017f436174636f696e00000000000000000000000000000000000000000000000000815250600c9081620001ac9190620007ba565b506040518060400160405280600481526020017f4341545300000000000000000000000000000000000000000000000000000000815250600d9081620001f39190620007ba565b506000600e8190555065082f79cd90006009819055506009546000196200021b9190620008d0565b6000196200022a919062000937565b600a819055506377359400601981905550600a5460026000620002526200050f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031b9190620009dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a99190620009dc565b6040518363ffffffff1660e01b8152600401620003c892919062000a1f565b6020604051808303816000875af1158015620003e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040e9190620009dc565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200049f6200051760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095460405162000500919062000a5d565b60405180910390a35062000a7a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005c257607f821691505b602082108103620005d857620005d76200057a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000603565b6200064e868362000603565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200069b620006956200068f8462000666565b62000670565b62000666565b9050919050565b6000819050919050565b620006b7836200067a565b620006cf620006c682620006a2565b84845462000610565b825550505050565b600090565b620006e6620006d7565b620006f3818484620006ac565b505050565b5b818110156200071b576200070f600082620006dc565b600181019050620006f9565b5050565b601f8211156200076a576200073481620005de565b6200073f84620005f3565b810160208510156200074f578190505b620007676200075e85620005f3565b830182620006f8565b50505b505050565b600082821c905092915050565b60006200078f600019846008026200076f565b1980831691505092915050565b6000620007aa83836200077c565b9150826002028217905092915050565b620007c58262000540565b67ffffffffffffffff811115620007e157620007e06200054b565b5b620007ed8254620005a9565b620007fa8282856200071f565b600060209050601f8311600181146200083257600084156200081d578287015190505b6200082985826200079c565b86555062000899565b601f1984166200084286620005de565b60005b828110156200086c5784890151825560018201915060208501945060208101905062000845565b868310156200088c578489015162000888601f8916826200077c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008dd8262000666565b9150620008ea8362000666565b925082620008fd57620008fc620008a1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009448262000666565b9150620009518362000666565b92508282039050818111156200096c576200096b62000908565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009a48262000977565b9050919050565b620009b68162000997565b8114620009c257600080fd5b50565b600081519050620009d681620009ab565b92915050565b600060208284031215620009f557620009f462000972565b5b600062000a0584828501620009c5565b91505092915050565b62000a198162000997565b82525050565b600060408201905062000a36600083018562000a0e565b62000a45602083018462000a0e565b9392505050565b62000a578162000666565b82525050565b600060208201905062000a74600083018462000a4c565b92915050565b6154448062000a8a6000396000f3fe6080604052600436106102295760003560e01c80636bc87c3a11610123578063be291dc6116100ab578063ea2f0b371161006f578063ea2f0b3714610864578063f0f165af1461088d578063f2fde38b146108b6578063f5648a4f146108df578063f9dfdaeb146108f657610230565b8063be291dc614610781578063c49b9a80146107aa578063d12a7688146107d3578063dd62ed3e146107fe578063e083e9221461083b57610230565b80638da5cb5b116100f25780638da5cb5b1461068657806395d89b41146106b1578063a457c2d7146106dc578063a9059cbb14610719578063bd3900c01461075657610230565b80636bc87c3a146105ca57806370a08231146105f5578063715018a61461063257806388f820201461064957610230565b80633685d419116101b15780634549b039116101755780634549b039146104d157806349bd5a5e1461050e5780634a74bb021461053957806352390c02146105645780635342acb41461058d57610230565b80633685d419146103ee57806339509351146104175780633b124fe7146104545780633bd5d1731461047f578063437823ec146104a857610230565b806318160ddd116101f857806318160ddd146102f3578063220f66961461031e57806323b872dd146103495780632d83811914610386578063313ce567146103c357610230565b806306fdde0314610235578063095ea7b31461026057806313114a9d1461029d5780631694505e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a61091f565b604051610257919061417b565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190614236565b6109b1565b6040516102949190614291565b60405180910390f35b3480156102a957600080fd5b506102b26109cf565b6040516102bf91906142bb565b60405180910390f35b3480156102d457600080fd5b506102dd6109d9565b6040516102ea9190614335565b60405180910390f35b3480156102ff57600080fd5b506103086109ff565b60405161031591906142bb565b60405180910390f35b34801561032a57600080fd5b50610333610a09565b6040516103409190614291565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190614350565b610a1c565b60405161037d9190614291565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a891906143a3565b610af5565b6040516103ba91906142bb565b60405180910390f35b3480156103cf57600080fd5b506103d8610b63565b6040516103e591906142bb565b60405180910390f35b3480156103fa57600080fd5b50610415600480360381019061041091906143d0565b610b6d565b005b34801561042357600080fd5b5061043e60048036038101906104399190614236565b610ea2565b60405161044b9190614291565b60405180910390f35b34801561046057600080fd5b50610469610f55565b60405161047691906142bb565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906143a3565b610f5b565b005b3480156104b457600080fd5b506104cf60048036038101906104ca91906143d0565b6110d6565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190614429565b6111ad565b60405161050591906142bb565b60405180910390f35b34801561051a57600080fd5b50610523611231565b6040516105309190614478565b60405180910390f35b34801561054557600080fd5b5061054e611257565b60405161055b9190614291565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906143d0565b61126a565b005b34801561059957600080fd5b506105b460048036038101906105af91906143d0565b611505565b6040516105c19190614291565b60405180910390f35b3480156105d657600080fd5b506105df61155b565b6040516105ec91906142bb565b60405180910390f35b34801561060157600080fd5b5061061c600480360381019061061791906143d0565b611561565b60405161062991906142bb565b60405180910390f35b34801561063e57600080fd5b5061064761164c565b005b34801561065557600080fd5b50610670600480360381019061066b91906143d0565b611786565b60405161067d9190614291565b60405180910390f35b34801561069257600080fd5b5061069b6117dc565b6040516106a89190614478565b60405180910390f35b3480156106bd57600080fd5b506106c6611805565b6040516106d3919061417b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190614236565b611897565b6040516107109190614291565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614236565b611964565b60405161074d9190614291565b60405180910390f35b34801561076257600080fd5b5061076b611982565b6040516107789190614478565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190614493565b6119a8565b005b3480156107b657600080fd5b506107d160048036038101906107cc91906144d3565b611aa8565b005b3480156107df57600080fd5b506107e8611b78565b6040516107f591906142bb565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614500565b611b7e565b60405161083291906142bb565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d91906143d0565b611c05565b005b34801561087057600080fd5b5061088b600480360381019061088691906143d0565b611ead565b005b34801561089957600080fd5b506108b460048036038101906108af91906143a3565b611f84565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906143d0565b61200a565b005b3480156108eb57600080fd5b506108f46121b2565b005b34801561090257600080fd5b5061091d60048036038101906109189190614493565b6122c1565b005b6060600c805461092e9061456f565b80601f016020809104026020016040519081016040528092919081815260200182805461095a9061456f565b80156109a75780601f1061097c576101008083540402835291602001916109a7565b820191906000526020600020905b81548152906001019060200180831161098a57829003601f168201915b5050505050905090565b60006109c56109be6123c1565b84846123c9565b6001905092915050565b6000600b54905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601860149054906101000a900460ff1681565b6000610a29848484612592565b610aea84610a356123c1565b610ae5856040518060600160405280602881526020016153c260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a9b6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b600190509392505050565b6000600a54821115610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390614612565b60405180910390fd5b6000610b46612973565b9050610b5b818461299e90919063ffffffff16565b915050919050565b6000600e54905090565b610b756123c1565b73ffffffffffffffffffffffffffffffffffffffff16610b936117dc565b73ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be09061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906146ea565b60405180910390fd5b60005b600780549050811015610e9e578173ffffffffffffffffffffffffffffffffffffffff1660078281548110610cb057610caf61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e8b5760076001600780549050610d0a9190614768565b81548110610d1b57610d1a61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610d5a57610d5961470a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610e5157610e5061479c565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610e9e565b8080610e96906147cb565b915050610c78565b5050565b6000610f4b610eaf6123c1565b84610f468560046000610ec06123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b6123c9565b6001905092915050565b60135481565b6000610f656123c1565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90614885565b60405180910390fd5b6000610fff836129ca565b5050505050905061105881600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b081600a54612a2690919063ffffffff16565b600a819055506110cb83600b546129b490919063ffffffff16565b600b81905550505050565b6110de6123c1565b73ffffffffffffffffffffffffffffffffffffffff166110fc6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111499061467e565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb906148f1565b60405180910390fd5b81611214576000611204846129ca565b505050505090508091505061122b565b600061121f846129ca565b50505050915050809150505b92915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b6112726123c1565b73ffffffffffffffffffffffffffffffffffffffff166112906117dc565b73ffffffffffffffffffffffffffffffffffffffff16146112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd9061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061495d565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561144757611403600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115fc57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611647565b611644600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b90505b919050565b6116546123c1565b73ffffffffffffffffffffffffffffffffffffffff166116726117dc565b73ffffffffffffffffffffffffffffffffffffffff16146116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d80546118149061456f565b80601f01602080910402602001604051908101604052809291908181526020018280546118409061456f565b801561188d5780601f106118625761010080835404028352916020019161188d565b820191906000526020600020905b81548152906001019060200180831161187057829003601f168201915b5050505050905090565b600061195a6118a46123c1565b84611955856040518060600160405280602581526020016153ea60259139600460006118ce6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b6001905092915050565b60006119786119716123c1565b8484612592565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119b06123c1565b73ffffffffffffffffffffffffffffffffffffffff166119ce6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b9061467e565b60405180910390fd5b81601181905550806012819055506011546013819055506012546014819055506000611a5d6014546013546129b490919063ffffffff16565b90506009811115611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a906149ef565b60405180910390fd5b505050565b611ab06123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ace6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b9061467e565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b6d9190614291565b60405180910390a150565b60195481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c0d6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611c2b6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061467e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690614a81565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d2a9190614478565b602060405180830381865afa158015611d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6b9190614ab6565b11611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290614b2f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611dcf6117dc565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e089190614478565b602060405180830381865afa158015611e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e499190614ab6565b6040518363ffffffff1660e01b8152600401611e66929190614b4f565b6020604051808303816000875af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea99190614b8d565b5050565b611eb56123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ed36117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f209061467e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f8c6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611faa6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff79061467e565b60405180910390fd5b8060198190555050565b6120126123c1565b73ffffffffffffffffffffffffffffffffffffffff166120306117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614c2c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121ba6123c1565b73ffffffffffffffffffffffffffffffffffffffff166121d86117dc565b73ffffffffffffffffffffffffffffffffffffffff161461222e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122259061467e565b60405180910390fd5b60004711612271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226890614c98565b60405180910390fd5b6122796117dc565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156122be573d6000803e3d6000fd5b50565b6122c96123c1565b73ffffffffffffffffffffffffffffffffffffffff166122e76117dc565b73ffffffffffffffffffffffffffffffffffffffff161461233d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123349061467e565b60405180910390fd5b81600f8190555080601081905550600f5460138190555060105460148190555060006123766014546013546129b490919063ffffffff16565b905060078111156123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b390614d2a565b60405180910390fd5b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f90614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614e4e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161258591906142bb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614ee0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614f72565b60405180910390fd5b600081116126b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126aa90615004565b60405180910390fd5b60006126be30611561565b9050600060195482101590508080156126e45750601860149054906101000a900460ff16155b801561273e5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127565750601860159054906101000a900460ff165b1561276a57601954915061276982612a3c565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128115750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281f576000905061290a565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361288b57600f54601381905550601054601481905550612909565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036128f757601154601381905550601254601481905550612908565b600060138190555060006014819055505b5b5b61291686868684612b12565b505050505050565b6000838311158290612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d919061417b565b60405180910390fd5b5082840390509392505050565b6000806000612980612e23565b91509150612997818361299e90919063ffffffff16565b9250505090565b600081836129ac9190615053565b905092915050565b600081836129c29190615084565b905092915050565b60008060008060008060008060006129e18a6130d6565b92509250925060008060006129ff8d86866129fa612973565b613130565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008183612a349190614768565b905092915050565b6001601860146101000a81548160ff0219169083151502179055506000612a6d60028361299e90919063ffffffff16565b90506000612a848284612a2690919063ffffffff16565b90506000479050612a94836131b9565b6000612aa98247612a2690919063ffffffff16565b9050612ab583826133fc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612ae8939291906150b8565b60405180910390a1505050506000601860146101000a81548160ff02191690831515021790555050565b80612b2057612b1f6134dc565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bc35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bd857612bd3848484613500565b612e0f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c7b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c9057612c8b848484613760565b612e0e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d345750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d4957612d448484846139c0565b612e0d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612deb5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0057612dfb848484613b8b565b612e0c565b612e0b8484846139c0565b5b5b5b5b80612e1d57612e1c613e80565b5b50505050565b6000806000600a5490506000600954905060005b60078054905081101561309957826002600060078481548110612e5d57612e5c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612f4b5750816003600060078481548110612ee357612ee261470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612f6257600a54600954945094505050506130d2565b612ff26002600060078481548110612f7d57612f7c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612a2690919063ffffffff16565b9250613084600360006007848154811061300f5761300e61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612a2690919063ffffffff16565b91508080613091906147cb565b915050612e37565b506130b1600954600a5461299e90919063ffffffff16565b8210156130c957600a546009549350935050506130d2565b81819350935050505b9091565b6000806000806130e585613e94565b905060006130f286613ec5565b9050600061311b8261310d858a612a2690919063ffffffff16565b612a2690919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806131498589613ef690919063ffffffff16565b905060006131608689613ef690919063ffffffff16565b905060006131778789613ef690919063ffffffff16565b905060006131a0826131928587612a2690919063ffffffff16565b612a2690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156131d6576131d56150ef565b5b6040519080825280602002602001820160405280156132045781602001602082028036833780820191505090505b509050308160008151811061321c5761321b61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e79190615133565b816001815181106132fb576132fa61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061336230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133c6959493929190615259565b600060405180830381600087803b1580156133e057600080fd5b505af11580156133f4573d6000803e3d6000fd5b505050505050565b61342930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613492969594939291906152b3565b60606040518083038185885af11580156134b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134d59190615314565b5050505050565b60135460158190555060145460168190555060006013819055506000601481905550565b600080600080600080613512876129ca565b95509550955095509550955061357087600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e681613f0c565b6136f084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161374d91906142bb565b60405180910390a3505050505050505050565b600080600080600080613772876129ca565b9550955095509550955095506137d086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394681613f0c565b61395084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139ad91906142bb565b60405180910390a3505050505050505050565b6000806000806000806139d2876129ca565b955095509550955095509550613a3086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1181613f0c565b613b1b84836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613b7891906142bb565b60405180910390a3505050505050505050565b600080600080600080613b9d876129ca565b955095509550955095509550613bfb87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dba85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0681613f0c565b613e1084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e6d91906142bb565b60405180910390a3505050505050505050565b601554601381905550601654601481905550565b6000613ebe6064613eb060135485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b6000613eef6064613ee160145485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b60008183613f049190615367565b905092915050565b6000613f16612973565b90506000613f2d8284613ef690919063ffffffff16565b9050613f8181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ac5761406883600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6140c682600a54612a2690919063ffffffff16565b600a819055506140e181600b546129b490919063ffffffff16565b600b819055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561412557808201518184015260208101905061410a565b60008484015250505050565b6000601f19601f8301169050919050565b600061414d826140eb565b61415781856140f6565b9350614167818560208601614107565b61417081614131565b840191505092915050565b600060208201905081810360008301526141958184614142565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141cd826141a2565b9050919050565b6141dd816141c2565b81146141e857600080fd5b50565b6000813590506141fa816141d4565b92915050565b6000819050919050565b61421381614200565b811461421e57600080fd5b50565b6000813590506142308161420a565b92915050565b6000806040838503121561424d5761424c61419d565b5b600061425b858286016141eb565b925050602061426c85828601614221565b9150509250929050565b60008115159050919050565b61428b81614276565b82525050565b60006020820190506142a66000830184614282565b92915050565b6142b581614200565b82525050565b60006020820190506142d060008301846142ac565b92915050565b6000819050919050565b60006142fb6142f66142f1846141a2565b6142d6565b6141a2565b9050919050565b600061430d826142e0565b9050919050565b600061431f82614302565b9050919050565b61432f81614314565b82525050565b600060208201905061434a6000830184614326565b92915050565b6000806000606084860312156143695761436861419d565b5b6000614377868287016141eb565b9350506020614388868287016141eb565b925050604061439986828701614221565b9150509250925092565b6000602082840312156143b9576143b861419d565b5b60006143c784828501614221565b91505092915050565b6000602082840312156143e6576143e561419d565b5b60006143f4848285016141eb565b91505092915050565b61440681614276565b811461441157600080fd5b50565b600081359050614423816143fd565b92915050565b600080604083850312156144405761443f61419d565b5b600061444e85828601614221565b925050602061445f85828601614414565b9150509250929050565b614472816141c2565b82525050565b600060208201905061448d6000830184614469565b92915050565b600080604083850312156144aa576144a961419d565b5b60006144b885828601614221565b92505060206144c985828601614221565b9150509250929050565b6000602082840312156144e9576144e861419d565b5b60006144f784828501614414565b91505092915050565b600080604083850312156145175761451661419d565b5b6000614525858286016141eb565b9250506020614536858286016141eb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061458757607f821691505b60208210810361459a57614599614540565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006145fc602a836140f6565b9150614607826145a0565b604082019050919050565b6000602082019050818103600083015261462b816145ef565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146686020836140f6565b915061467382614632565b602082019050919050565b600060208201905081810360008301526146978161465b565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006146d4601b836140f6565b91506146df8261469e565b602082019050919050565b60006020820190508181036000830152614703816146c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061477382614200565b915061477e83614200565b925082820390508181111561479657614795614739565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006147d682614200565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361480857614807614739565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b600061486f602c836140f6565b915061487a82614813565b604082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006148db601f836140f6565b91506148e6826148a5565b602082019050919050565b6000602082019050818103600083015261490a816148ce565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614947601b836140f6565b915061495282614911565b602082019050919050565b600060208201905081810360008301526149768161493a565b9050919050565b7f45524332303a2053656c6c20666565732063616e6e6f74206265206d6f72652060008201527f7468616e20392500000000000000000000000000000000000000000000000000602082015250565b60006149d96027836140f6565b91506149e48261497d565b604082019050919050565b60006020820190508181036000830152614a08816149cc565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e6564206660008201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b6000614a6b602c836140f6565b9150614a7682614a0f565b604082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b600081519050614ab08161420a565b92915050565b600060208284031215614acc57614acb61419d565b5b6000614ada84828501614aa1565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b6000614b196010836140f6565b9150614b2482614ae3565b602082019050919050565b60006020820190508181036000830152614b4881614b0c565b9050919050565b6000604082019050614b646000830185614469565b614b7160208301846142ac565b9392505050565b600081519050614b87816143fd565b92915050565b600060208284031215614ba357614ba261419d565b5b6000614bb184828501614b78565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c166026836140f6565b9150614c2182614bba565b604082019050919050565b60006020820190508181036000830152614c4581614c09565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f00600082015250565b6000614c82601f836140f6565b9150614c8d82614c4c565b602082019050919050565b60006020820190508181036000830152614cb181614c75565b9050919050565b7f45524332303a2042757920666565732063616e6e6f74206265206d6f7265207460008201527f68616e2037250000000000000000000000000000000000000000000000000000602082015250565b6000614d146026836140f6565b9150614d1f82614cb8565b604082019050919050565b60006020820190508181036000830152614d4381614d07565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614da66024836140f6565b9150614db182614d4a565b604082019050919050565b60006020820190508181036000830152614dd581614d99565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e386022836140f6565b9150614e4382614ddc565b604082019050919050565b60006020820190508181036000830152614e6781614e2b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614eca6025836140f6565b9150614ed582614e6e565b604082019050919050565b60006020820190508181036000830152614ef981614ebd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f5c6023836140f6565b9150614f6782614f00565b604082019050919050565b60006020820190508181036000830152614f8b81614f4f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614fee6029836140f6565b9150614ff982614f92565b604082019050919050565b6000602082019050818103600083015261501d81614fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061505e82614200565b915061506983614200565b92508261507957615078615024565b5b828204905092915050565b600061508f82614200565b915061509a83614200565b92508282019050808211156150b2576150b1614739565b5b92915050565b60006060820190506150cd60008301866142ac565b6150da60208301856142ac565b6150e760408301846142ac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061512d816141d4565b92915050565b6000602082840312156151495761514861419d565b5b60006151578482850161511e565b91505092915050565b6000819050919050565b600061518561518061517b84615160565b6142d6565b614200565b9050919050565b6151958161516a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151d0816141c2565b82525050565b60006151e283836151c7565b60208301905092915050565b6000602082019050919050565b60006152068261519b565b61521081856151a6565b935061521b836151b7565b8060005b8381101561524c57815161523388826151d6565b975061523e836151ee565b92505060018101905061521f565b5085935050505092915050565b600060a08201905061526e60008301886142ac565b61527b602083018761518c565b818103604083015261528d81866151fb565b905061529c6060830185614469565b6152a960808301846142ac565b9695505050505050565b600060c0820190506152c86000830189614469565b6152d560208301886142ac565b6152e2604083018761518c565b6152ef606083018661518c565b6152fc6080830185614469565b61530960a08301846142ac565b979650505050505050565b60008060006060848603121561532d5761532c61419d565b5b600061533b86828701614aa1565b935050602061534c86828701614aa1565b925050604061535d86828701614aa1565b9150509250925092565b600061537282614200565b915061537d83614200565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153b6576153b5614739565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f6a7209013c4f74e7a7caac5a06d94769b83e8066f4fa08c54a297bdda2202964736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80636bc87c3a11610123578063be291dc6116100ab578063ea2f0b371161006f578063ea2f0b3714610864578063f0f165af1461088d578063f2fde38b146108b6578063f5648a4f146108df578063f9dfdaeb146108f657610230565b8063be291dc614610781578063c49b9a80146107aa578063d12a7688146107d3578063dd62ed3e146107fe578063e083e9221461083b57610230565b80638da5cb5b116100f25780638da5cb5b1461068657806395d89b41146106b1578063a457c2d7146106dc578063a9059cbb14610719578063bd3900c01461075657610230565b80636bc87c3a146105ca57806370a08231146105f5578063715018a61461063257806388f820201461064957610230565b80633685d419116101b15780634549b039116101755780634549b039146104d157806349bd5a5e1461050e5780634a74bb021461053957806352390c02146105645780635342acb41461058d57610230565b80633685d419146103ee57806339509351146104175780633b124fe7146104545780633bd5d1731461047f578063437823ec146104a857610230565b806318160ddd116101f857806318160ddd146102f3578063220f66961461031e57806323b872dd146103495780632d83811914610386578063313ce567146103c357610230565b806306fdde0314610235578063095ea7b31461026057806313114a9d1461029d5780631694505e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a61091f565b604051610257919061417b565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190614236565b6109b1565b6040516102949190614291565b60405180910390f35b3480156102a957600080fd5b506102b26109cf565b6040516102bf91906142bb565b60405180910390f35b3480156102d457600080fd5b506102dd6109d9565b6040516102ea9190614335565b60405180910390f35b3480156102ff57600080fd5b506103086109ff565b60405161031591906142bb565b60405180910390f35b34801561032a57600080fd5b50610333610a09565b6040516103409190614291565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190614350565b610a1c565b60405161037d9190614291565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a891906143a3565b610af5565b6040516103ba91906142bb565b60405180910390f35b3480156103cf57600080fd5b506103d8610b63565b6040516103e591906142bb565b60405180910390f35b3480156103fa57600080fd5b50610415600480360381019061041091906143d0565b610b6d565b005b34801561042357600080fd5b5061043e60048036038101906104399190614236565b610ea2565b60405161044b9190614291565b60405180910390f35b34801561046057600080fd5b50610469610f55565b60405161047691906142bb565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906143a3565b610f5b565b005b3480156104b457600080fd5b506104cf60048036038101906104ca91906143d0565b6110d6565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190614429565b6111ad565b60405161050591906142bb565b60405180910390f35b34801561051a57600080fd5b50610523611231565b6040516105309190614478565b60405180910390f35b34801561054557600080fd5b5061054e611257565b60405161055b9190614291565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906143d0565b61126a565b005b34801561059957600080fd5b506105b460048036038101906105af91906143d0565b611505565b6040516105c19190614291565b60405180910390f35b3480156105d657600080fd5b506105df61155b565b6040516105ec91906142bb565b60405180910390f35b34801561060157600080fd5b5061061c600480360381019061061791906143d0565b611561565b60405161062991906142bb565b60405180910390f35b34801561063e57600080fd5b5061064761164c565b005b34801561065557600080fd5b50610670600480360381019061066b91906143d0565b611786565b60405161067d9190614291565b60405180910390f35b34801561069257600080fd5b5061069b6117dc565b6040516106a89190614478565b60405180910390f35b3480156106bd57600080fd5b506106c6611805565b6040516106d3919061417b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190614236565b611897565b6040516107109190614291565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614236565b611964565b60405161074d9190614291565b60405180910390f35b34801561076257600080fd5b5061076b611982565b6040516107789190614478565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190614493565b6119a8565b005b3480156107b657600080fd5b506107d160048036038101906107cc91906144d3565b611aa8565b005b3480156107df57600080fd5b506107e8611b78565b6040516107f591906142bb565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614500565b611b7e565b60405161083291906142bb565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d91906143d0565b611c05565b005b34801561087057600080fd5b5061088b600480360381019061088691906143d0565b611ead565b005b34801561089957600080fd5b506108b460048036038101906108af91906143a3565b611f84565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906143d0565b61200a565b005b3480156108eb57600080fd5b506108f46121b2565b005b34801561090257600080fd5b5061091d60048036038101906109189190614493565b6122c1565b005b6060600c805461092e9061456f565b80601f016020809104026020016040519081016040528092919081815260200182805461095a9061456f565b80156109a75780601f1061097c576101008083540402835291602001916109a7565b820191906000526020600020905b81548152906001019060200180831161098a57829003601f168201915b5050505050905090565b60006109c56109be6123c1565b84846123c9565b6001905092915050565b6000600b54905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601860149054906101000a900460ff1681565b6000610a29848484612592565b610aea84610a356123c1565b610ae5856040518060600160405280602881526020016153c260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a9b6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b600190509392505050565b6000600a54821115610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390614612565b60405180910390fd5b6000610b46612973565b9050610b5b818461299e90919063ffffffff16565b915050919050565b6000600e54905090565b610b756123c1565b73ffffffffffffffffffffffffffffffffffffffff16610b936117dc565b73ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be09061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906146ea565b60405180910390fd5b60005b600780549050811015610e9e578173ffffffffffffffffffffffffffffffffffffffff1660078281548110610cb057610caf61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e8b5760076001600780549050610d0a9190614768565b81548110610d1b57610d1a61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610d5a57610d5961470a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610e5157610e5061479c565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610e9e565b8080610e96906147cb565b915050610c78565b5050565b6000610f4b610eaf6123c1565b84610f468560046000610ec06123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b6123c9565b6001905092915050565b60135481565b6000610f656123c1565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90614885565b60405180910390fd5b6000610fff836129ca565b5050505050905061105881600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b081600a54612a2690919063ffffffff16565b600a819055506110cb83600b546129b490919063ffffffff16565b600b81905550505050565b6110de6123c1565b73ffffffffffffffffffffffffffffffffffffffff166110fc6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111499061467e565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb906148f1565b60405180910390fd5b81611214576000611204846129ca565b505050505090508091505061122b565b600061121f846129ca565b50505050915050809150505b92915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b6112726123c1565b73ffffffffffffffffffffffffffffffffffffffff166112906117dc565b73ffffffffffffffffffffffffffffffffffffffff16146112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd9061467e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061495d565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561144757611403600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115fc57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611647565b611644600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af5565b90505b919050565b6116546123c1565b73ffffffffffffffffffffffffffffffffffffffff166116726117dc565b73ffffffffffffffffffffffffffffffffffffffff16146116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d80546118149061456f565b80601f01602080910402602001604051908101604052809291908181526020018280546118409061456f565b801561188d5780601f106118625761010080835404028352916020019161188d565b820191906000526020600020905b81548152906001019060200180831161187057829003601f168201915b5050505050905090565b600061195a6118a46123c1565b84611955856040518060600160405280602581526020016153ea60259139600460006118ce6123c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9092919063ffffffff16565b6123c9565b6001905092915050565b60006119786119716123c1565b8484612592565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119b06123c1565b73ffffffffffffffffffffffffffffffffffffffff166119ce6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b9061467e565b60405180910390fd5b81601181905550806012819055506011546013819055506012546014819055506000611a5d6014546013546129b490919063ffffffff16565b90506009811115611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a906149ef565b60405180910390fd5b505050565b611ab06123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ace6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b9061467e565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b6d9190614291565b60405180910390a150565b60195481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c0d6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611c2b6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061467e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690614a81565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d2a9190614478565b602060405180830381865afa158015611d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6b9190614ab6565b11611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290614b2f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611dcf6117dc565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e089190614478565b602060405180830381865afa158015611e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e499190614ab6565b6040518363ffffffff1660e01b8152600401611e66929190614b4f565b6020604051808303816000875af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea99190614b8d565b5050565b611eb56123c1565b73ffffffffffffffffffffffffffffffffffffffff16611ed36117dc565b73ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f209061467e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f8c6123c1565b73ffffffffffffffffffffffffffffffffffffffff16611faa6117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff79061467e565b60405180910390fd5b8060198190555050565b6120126123c1565b73ffffffffffffffffffffffffffffffffffffffff166120306117dc565b73ffffffffffffffffffffffffffffffffffffffff1614612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d9061467e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614c2c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121ba6123c1565b73ffffffffffffffffffffffffffffffffffffffff166121d86117dc565b73ffffffffffffffffffffffffffffffffffffffff161461222e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122259061467e565b60405180910390fd5b60004711612271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226890614c98565b60405180910390fd5b6122796117dc565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156122be573d6000803e3d6000fd5b50565b6122c96123c1565b73ffffffffffffffffffffffffffffffffffffffff166122e76117dc565b73ffffffffffffffffffffffffffffffffffffffff161461233d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123349061467e565b60405180910390fd5b81600f8190555080601081905550600f5460138190555060105460148190555060006123766014546013546129b490919063ffffffff16565b905060078111156123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b390614d2a565b60405180910390fd5b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f90614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614e4e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161258591906142bb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614ee0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614f72565b60405180910390fd5b600081116126b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126aa90615004565b60405180910390fd5b60006126be30611561565b9050600060195482101590508080156126e45750601860149054906101000a900460ff16155b801561273e5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127565750601860159054906101000a900460ff165b1561276a57601954915061276982612a3c565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128115750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281f576000905061290a565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361288b57600f54601381905550601054601481905550612909565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036128f757601154601381905550601254601481905550612908565b600060138190555060006014819055505b5b5b61291686868684612b12565b505050505050565b6000838311158290612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d919061417b565b60405180910390fd5b5082840390509392505050565b6000806000612980612e23565b91509150612997818361299e90919063ffffffff16565b9250505090565b600081836129ac9190615053565b905092915050565b600081836129c29190615084565b905092915050565b60008060008060008060008060006129e18a6130d6565b92509250925060008060006129ff8d86866129fa612973565b613130565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008183612a349190614768565b905092915050565b6001601860146101000a81548160ff0219169083151502179055506000612a6d60028361299e90919063ffffffff16565b90506000612a848284612a2690919063ffffffff16565b90506000479050612a94836131b9565b6000612aa98247612a2690919063ffffffff16565b9050612ab583826133fc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612ae8939291906150b8565b60405180910390a1505050506000601860146101000a81548160ff02191690831515021790555050565b80612b2057612b1f6134dc565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bc35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bd857612bd3848484613500565b612e0f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c7b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c9057612c8b848484613760565b612e0e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d345750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d4957612d448484846139c0565b612e0d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612deb5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0057612dfb848484613b8b565b612e0c565b612e0b8484846139c0565b5b5b5b5b80612e1d57612e1c613e80565b5b50505050565b6000806000600a5490506000600954905060005b60078054905081101561309957826002600060078481548110612e5d57612e5c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612f4b5750816003600060078481548110612ee357612ee261470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612f6257600a54600954945094505050506130d2565b612ff26002600060078481548110612f7d57612f7c61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612a2690919063ffffffff16565b9250613084600360006007848154811061300f5761300e61470a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612a2690919063ffffffff16565b91508080613091906147cb565b915050612e37565b506130b1600954600a5461299e90919063ffffffff16565b8210156130c957600a546009549350935050506130d2565b81819350935050505b9091565b6000806000806130e585613e94565b905060006130f286613ec5565b9050600061311b8261310d858a612a2690919063ffffffff16565b612a2690919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806131498589613ef690919063ffffffff16565b905060006131608689613ef690919063ffffffff16565b905060006131778789613ef690919063ffffffff16565b905060006131a0826131928587612a2690919063ffffffff16565b612a2690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156131d6576131d56150ef565b5b6040519080825280602002602001820160405280156132045781602001602082028036833780820191505090505b509050308160008151811061321c5761321b61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e79190615133565b816001815181106132fb576132fa61470a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061336230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133c6959493929190615259565b600060405180830381600087803b1580156133e057600080fd5b505af11580156133f4573d6000803e3d6000fd5b505050505050565b61342930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c9565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613492969594939291906152b3565b60606040518083038185885af11580156134b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134d59190615314565b5050505050565b60135460158190555060145460168190555060006013819055506000601481905550565b600080600080600080613512876129ca565b95509550955095509550955061357087600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e681613f0c565b6136f084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161374d91906142bb565b60405180910390a3505050505050505050565b600080600080600080613772876129ca565b9550955095509550955095506137d086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394681613f0c565b61395084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139ad91906142bb565b60405180910390a3505050505050505050565b6000806000806000806139d2876129ca565b955095509550955095509550613a3086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1181613f0c565b613b1b84836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613b7891906142bb565b60405180910390a3505050505050505050565b600080600080600080613b9d876129ca565b955095509550955095509550613bfb87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2583600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dba85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0681613f0c565b613e1084836140b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e6d91906142bb565b60405180910390a3505050505050505050565b601554601381905550601654601481905550565b6000613ebe6064613eb060135485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b6000613eef6064613ee160145485613ef690919063ffffffff16565b61299e90919063ffffffff16565b9050919050565b60008183613f049190615367565b905092915050565b6000613f16612973565b90506000613f2d8284613ef690919063ffffffff16565b9050613f8181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ac5761406883600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6140c682600a54612a2690919063ffffffff16565b600a819055506140e181600b546129b490919063ffffffff16565b600b819055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561412557808201518184015260208101905061410a565b60008484015250505050565b6000601f19601f8301169050919050565b600061414d826140eb565b61415781856140f6565b9350614167818560208601614107565b61417081614131565b840191505092915050565b600060208201905081810360008301526141958184614142565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141cd826141a2565b9050919050565b6141dd816141c2565b81146141e857600080fd5b50565b6000813590506141fa816141d4565b92915050565b6000819050919050565b61421381614200565b811461421e57600080fd5b50565b6000813590506142308161420a565b92915050565b6000806040838503121561424d5761424c61419d565b5b600061425b858286016141eb565b925050602061426c85828601614221565b9150509250929050565b60008115159050919050565b61428b81614276565b82525050565b60006020820190506142a66000830184614282565b92915050565b6142b581614200565b82525050565b60006020820190506142d060008301846142ac565b92915050565b6000819050919050565b60006142fb6142f66142f1846141a2565b6142d6565b6141a2565b9050919050565b600061430d826142e0565b9050919050565b600061431f82614302565b9050919050565b61432f81614314565b82525050565b600060208201905061434a6000830184614326565b92915050565b6000806000606084860312156143695761436861419d565b5b6000614377868287016141eb565b9350506020614388868287016141eb565b925050604061439986828701614221565b9150509250925092565b6000602082840312156143b9576143b861419d565b5b60006143c784828501614221565b91505092915050565b6000602082840312156143e6576143e561419d565b5b60006143f4848285016141eb565b91505092915050565b61440681614276565b811461441157600080fd5b50565b600081359050614423816143fd565b92915050565b600080604083850312156144405761443f61419d565b5b600061444e85828601614221565b925050602061445f85828601614414565b9150509250929050565b614472816141c2565b82525050565b600060208201905061448d6000830184614469565b92915050565b600080604083850312156144aa576144a961419d565b5b60006144b885828601614221565b92505060206144c985828601614221565b9150509250929050565b6000602082840312156144e9576144e861419d565b5b60006144f784828501614414565b91505092915050565b600080604083850312156145175761451661419d565b5b6000614525858286016141eb565b9250506020614536858286016141eb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061458757607f821691505b60208210810361459a57614599614540565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006145fc602a836140f6565b9150614607826145a0565b604082019050919050565b6000602082019050818103600083015261462b816145ef565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146686020836140f6565b915061467382614632565b602082019050919050565b600060208201905081810360008301526146978161465b565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006146d4601b836140f6565b91506146df8261469e565b602082019050919050565b60006020820190508181036000830152614703816146c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061477382614200565b915061477e83614200565b925082820390508181111561479657614795614739565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006147d682614200565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361480857614807614739565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b600061486f602c836140f6565b915061487a82614813565b604082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006148db601f836140f6565b91506148e6826148a5565b602082019050919050565b6000602082019050818103600083015261490a816148ce565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614947601b836140f6565b915061495282614911565b602082019050919050565b600060208201905081810360008301526149768161493a565b9050919050565b7f45524332303a2053656c6c20666565732063616e6e6f74206265206d6f72652060008201527f7468616e20392500000000000000000000000000000000000000000000000000602082015250565b60006149d96027836140f6565b91506149e48261497d565b604082019050919050565b60006020820190508181036000830152614a08816149cc565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e6564206660008201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b6000614a6b602c836140f6565b9150614a7682614a0f565b604082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b600081519050614ab08161420a565b92915050565b600060208284031215614acc57614acb61419d565b5b6000614ada84828501614aa1565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b6000614b196010836140f6565b9150614b2482614ae3565b602082019050919050565b60006020820190508181036000830152614b4881614b0c565b9050919050565b6000604082019050614b646000830185614469565b614b7160208301846142ac565b9392505050565b600081519050614b87816143fd565b92915050565b600060208284031215614ba357614ba261419d565b5b6000614bb184828501614b78565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c166026836140f6565b9150614c2182614bba565b604082019050919050565b60006020820190508181036000830152614c4581614c09565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f00600082015250565b6000614c82601f836140f6565b9150614c8d82614c4c565b602082019050919050565b60006020820190508181036000830152614cb181614c75565b9050919050565b7f45524332303a2042757920666565732063616e6e6f74206265206d6f7265207460008201527f68616e2037250000000000000000000000000000000000000000000000000000602082015250565b6000614d146026836140f6565b9150614d1f82614cb8565b604082019050919050565b60006020820190508181036000830152614d4381614d07565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614da66024836140f6565b9150614db182614d4a565b604082019050919050565b60006020820190508181036000830152614dd581614d99565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e386022836140f6565b9150614e4382614ddc565b604082019050919050565b60006020820190508181036000830152614e6781614e2b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614eca6025836140f6565b9150614ed582614e6e565b604082019050919050565b60006020820190508181036000830152614ef981614ebd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f5c6023836140f6565b9150614f6782614f00565b604082019050919050565b60006020820190508181036000830152614f8b81614f4f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614fee6029836140f6565b9150614ff982614f92565b604082019050919050565b6000602082019050818103600083015261501d81614fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061505e82614200565b915061506983614200565b92508261507957615078615024565b5b828204905092915050565b600061508f82614200565b915061509a83614200565b92508282019050808211156150b2576150b1614739565b5b92915050565b60006060820190506150cd60008301866142ac565b6150da60208301856142ac565b6150e760408301846142ac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061512d816141d4565b92915050565b6000602082840312156151495761514861419d565b5b60006151578482850161511e565b91505092915050565b6000819050919050565b600061518561518061517b84615160565b6142d6565b614200565b9050919050565b6151958161516a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151d0816141c2565b82525050565b60006151e283836151c7565b60208301905092915050565b6000602082019050919050565b60006152068261519b565b61521081856151a6565b935061521b836151b7565b8060005b8381101561524c57815161523388826151d6565b975061523e836151ee565b92505060018101905061521f565b5085935050505092915050565b600060a08201905061526e60008301886142ac565b61527b602083018761518c565b818103604083015261528d81866151fb565b905061529c6060830185614469565b6152a960808301846142ac565b9695505050505050565b600060c0820190506152c86000830189614469565b6152d560208301886142ac565b6152e2604083018761518c565b6152ef606083018661518c565b6152fc6080830185614469565b61530960a08301846142ac565b979650505050505050565b60008060006060848603121561532d5761532c61419d565b5b600061533b86828701614aa1565b935050602061534c86828701614aa1565b925050604061535d86828701614aa1565b9150509250925092565b600061537282614200565b915061537d83614200565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153b6576153b5614739565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f6a7209013c4f74e7a7caac5a06d94769b83e8066f4fa08c54a297bdda2202964736f6c63430008100033

Deployed Bytecode Sourcemap

4362:19879:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6778:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7765:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9264:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5486:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7057:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5569:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7966:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10272:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6964:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10942:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8420:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5278:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9359:419;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12192:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9786:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5534:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5604:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10602:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17412:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5320:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7160:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2756:148;;;;;;;;;;;;;:::i;:::-;;9136:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2533:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6869;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8728:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7366:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4768:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12429:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13370:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5651:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7573:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23897:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12311:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13205:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2912:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23695:194;;;;;;;;;;;;;:::i;:::-;;12818:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6778:83;6815:13;6848:5;6841:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6778:83;:::o;7765:193::-;7867:4;7889:39;7898:12;:10;:12::i;:::-;7912:7;7921:6;7889:8;:39::i;:::-;7946:4;7939:11;;7765:193;;;;:::o;9264:87::-;9306:7;9333:10;;9326:17;;9264:87;:::o;5486:41::-;;;;;;;;;;;;;:::o;7057:95::-;7110:7;7137;;7130:14;;7057:95;:::o;5569:28::-;;;;;;;;;;;;;:::o;7966:446::-;8098:4;8115:36;8125:6;8133:9;8144:6;8115:9;:36::i;:::-;8162:220;8185:6;8206:12;:10;:12::i;:::-;8233:138;8289:6;8233:138;;;;;;;;;;;;;;;;;:11;:19;8245:6;8233:19;;;;;;;;;;;;;;;:33;8253:12;:10;:12::i;:::-;8233:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8162:8;:220::i;:::-;8400:4;8393:11;;7966:446;;;;;:::o;10272:322::-;10366:7;10424;;10413;:18;;10391:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10512:19;10534:10;:8;:10::i;:::-;10512:32;;10562:24;10574:11;10562:7;:11;;:24;;;;:::i;:::-;10555:31;;;10272:322;;;:::o;6964:85::-;7005:7;7032:9;;7025:16;;6964:85;:::o;10942:477::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11022:11:::1;:20;11034:7;11022:20;;;;;;;;;;;;;;;;;;;;;;;;;11014:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11090:9;11085:327;11109:9;:16;;;;11105:1;:20;11085:327;;;11167:7;11151:23;;:9;11161:1;11151:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;11147:254:::1;;11210:9;11239:1;11220:9;:16;;;;:20;;;;:::i;:::-;11210:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11195:9;11205:1;11195:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11279:1;11260:7;:16;11268:7;11260:16;;;;;;;;;;;;;;;:20;;;;11322:5;11299:11;:20;11311:7;11299:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11346:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;11380:5;;11147:254;11127:3;;;;;:::i;:::-;;;;11085:327;;;;10942:477:::0;:::o;8420:300::-;8535:4;8557:133;8580:12;:10;:12::i;:::-;8607:7;8629:50;8668:10;8629:11;:25;8641:12;:10;:12::i;:::-;8629:25;;;;;;;;;;;;;;;:34;8655:7;8629:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8557:8;:133::i;:::-;8708:4;8701:11;;8420:300;;;;:::o;5278:35::-;;;;:::o;9359:419::-;9411:14;9428:12;:10;:12::i;:::-;9411:29;;9474:11;:19;9486:6;9474:19;;;;;;;;;;;;;;;;;;;;;;;;;9473:20;9451:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;9577:15;9606:19;9617:7;9606:10;:19::i;:::-;9576:49;;;;;;;9654:28;9674:7;9654;:15;9662:6;9654:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;9636:7;:15;9644:6;9636:15;;;;;;;;;;;;;;;:46;;;;9703:20;9715:7;9703;;:11;;:20;;;;:::i;:::-;9693:7;:30;;;;9747:23;9762:7;9747:10;;:14;;:23;;;;:::i;:::-;9734:10;:36;;;;9400:378;;9359:419;:::o;12192:111::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12291:4:::1;12261:18;:27;12280:7;12261:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12192:111:::0;:::o;9786:478::-;9904:7;9948;;9937;:18;;9929:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10007:17;10002:255;;10042:15;10071:19;10082:7;10071:10;:19::i;:::-;10041:49;;;;;;;10112:7;10105:14;;;;;10002:255;10155:23;10189:19;10200:7;10189:10;:19::i;:::-;10152:56;;;;;;;10230:15;10223:22;;;9786:478;;;;;:::o;5534:28::-;;;;;;;;;;;;;:::o;5604:40::-;;;;;;;;;;;;;:::o;10602:332::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10683:11:::1;:20;10695:7;10683:20;;;;;;;;;;;;;;;;;;;;;;;;;10682:21;10674:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10769:1;10750:7;:16;10758:7;10750:16;;;;;;;;;;;;;;;;:20;10746:109;;;10806:37;10826:7;:16;10834:7;10826:16;;;;;;;;;;;;;;;;10806:19;:37::i;:::-;10787:7;:16;10795:7;10787:16;;;;;;;;;;;;;;;:56;;;;10746:109;10888:4;10865:11;:20;10877:7;10865:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10903:9;10918:7;10903:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10602:332:::0;:::o;17412:124::-;17477:4;17501:18;:27;17520:7;17501:27;;;;;;;;;;;;;;;;;;;;;;;;;17494:34;;17412:124;;;:::o;5320:47::-;;;;:::o;7160:198::-;7226:7;7250:11;:20;7262:7;7250:20;;;;;;;;;;;;;;;;;;;;;;;;;7246:49;;;7279:7;:16;7287:7;7279:16;;;;;;;;;;;;;;;;7272:23;;;;7246:49;7313:37;7333:7;:16;7341:7;7333:16;;;;;;;;;;;;;;;;7313:19;:37::i;:::-;7306:44;;7160:198;;;;:::o;2756:148::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2863:1:::1;2826:40;;2847:6;::::0;::::1;;;;;;;;2826:40;;;;;;;;;;;;2894:1;2877:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2756:148::o:0;9136:120::-;9204:4;9228:11;:20;9240:7;9228:20;;;;;;;;;;;;;;;;;;;;;;;;;9221:27;;9136:120;;;:::o;2533:87::-;2579:7;2606:6;;;;;;;;;;;2599:13;;2533:87;:::o;6869:::-;6908:13;6941:7;6934:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6869:87;:::o;8728:400::-;8848:4;8870:228;8893:12;:10;:12::i;:::-;8920:7;8942:145;8999:15;8942:145;;;;;;;;;;;;;;;;;:11;:25;8954:12;:10;:12::i;:::-;8942:25;;;;;;;;;;;;;;;:34;8968:7;8942:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;8870:8;:228::i;:::-;9116:4;9109:11;;8728:400;;;;:::o;7366:199::-;7471:4;7493:42;7503:12;:10;:12::i;:::-;7517:9;7528:6;7493:9;:42::i;:::-;7553:4;7546:11;;7366:199;;;;:::o;4768:72::-;;;;;;;;;;;;;:::o;12429:381::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12561:4:::1;12547:11;:18;;;;12596:4;12576:17;:24;;;;12621:11;;12611:7;:21;;;;12659:17;;12643:13;:33;;;;12687:12;12702:26;12714:13;;12702:7;;:11;;:26;;;;:::i;:::-;12687:41;;12755:1;12747:4;:9;;12739:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12536:274;12429:381:::0;;:::o;13370:173::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13473:8:::1;13449:21;;:32;;;;;;;;;;;;;;;;;;13497:38;13526:8;13497:38;;;;;;:::i;:::-;;;;;;;;13370:173:::0;:::o;5651:44::-;;;;:::o;7573:184::-;7690:7;7722:11;:18;7734:5;7722:18;;;;;;;;;;;;;;;:27;7741:7;7722:27;;;;;;;;;;;;;;;;7715:34;;7573:184;;;;:::o;23897:339::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23999:4:::1;23979:25;;:8;:25;;::::0;23971:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24116:1;24079:8;24072:26;;;24107:4;24072:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;24064:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;24158:8;24151:25;;;24177:7;:5;:7::i;:::-;24193:8;24186:26;;;24221:4;24186:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24151:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23897:339:::0;:::o;12311:110::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12408:5:::1;12378:18;:27;12397:7;12378:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12311:110:::0;:::o;13205:157::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13348:6:::1;13316:29;:38;;;;13205:157:::0;:::o;2912:281::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3035:1:::1;3015:22;;:8;:22;;::::0;2993:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3148:8;3119:38;;3140:6;::::0;::::1;;;;;;;;3119:38;;;;;;;;;;;;3177:8;3168:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2912:281:::0;:::o;23695:194::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23785:1:::1;23761:21;:25;23752:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23841:7;:5;:7::i;:::-;23833:25;;:48;23859:21;23833:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23695:194::o:0;12818:375::-;2679:12;:10;:12::i;:::-;2668:23;;:7;:5;:7::i;:::-;:23;;;2660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12948:4:::1;12935:10;:17;;;;12982:4;12963:16;:23;;;;13007:10;;12997:7;:20;;;;13044:16;;13028:13;:32;;;;13071:12;13086:26;13098:13;;13086:7;;:11;;:26;;;;:::i;:::-;13071:41;;13139:1;13131:4;:9;;13123:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12924:269;12818:375:::0;;:::o;1955:98::-;2008:7;2035:10;2028:17;;1955:98;:::o;17544:371::-;17688:1;17671:19;;:5;:19;;;17663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17769:1;17750:21;;:7;:21;;;17742:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17853:6;17823:11;:18;17835:5;17823:18;;;;;;;;;;;;;;;:27;17842:7;17823:27;;;;;;;;;;;;;;;:36;;;;17891:7;17875:32;;17884:5;17875:32;;;17900:6;17875:32;;;;;;:::i;:::-;;;;;;;;17544:371;;;:::o;17923:1475::-;18061:1;18045:18;;:4;:18;;;18037:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18138:1;18124:16;;:2;:16;;;18116:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18208:1;18199:6;:10;18191:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18268:28;18299:24;18317:4;18299:9;:24::i;:::-;18268:55;;18336:24;18400:29;;18363:20;:66;;18336:93;;18458:19;:53;;;;;18495:16;;;;;;;;;;;18494:17;18458:53;:91;;;;;18536:13;;;;;;;;;;;18528:21;;:4;:21;;;;18458:91;:129;;;;;18566:21;;;;;;;;;;;18458:129;18440:289;;;18637:29;;18614:52;;18681:36;18696:20;18681:14;:36::i;:::-;18440:289;18741:12;18756:4;18741:19;;18775:18;:24;18794:4;18775:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;18803:18;:22;18822:2;18803:22;;;;;;;;;;;;;;;;;;;;;;;;;18775:50;18771:568;;;18852:5;18842:15;;18771:568;;;18902:13;;;;;;;;;;;18894:21;;:4;:21;;;18890:438;;18970:10;;18960:7;:20;;;;19015:16;;18999:13;:32;;;;18890:438;;;19063:13;;;;;;;;;;;19057:19;;:2;:19;;;19053:275;;19132:11;;19122:7;:21;;;;19178:17;;19162:13;:33;;;;19053:275;;;19275:1;19265:7;:11;;;;19311:1;19295:13;:17;;;;19053:275;18890:438;18771:568;19349:41;19364:4;19370:2;19374:6;19382:7;19349:14;:41::i;:::-;18026:1372;;;17923:1475;;;:::o;1428:240::-;1548:7;1606:1;1601;:6;;1609:12;1593:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1648:1;1644;:5;1637:12;;1428:240;;;;;:::o;15531:164::-;15573:7;15594:15;15611;15630:19;:17;:19::i;:::-;15593:56;;;;15667:20;15679:7;15667;:11;;:20;;;;:::i;:::-;15660:27;;;;15531:164;:::o;1216:98::-;1274:7;1305:1;1301;:5;;;;:::i;:::-;1294:12;;1216:98;;;;:::o;898:::-;956:7;987:1;983;:5;;;;:::i;:::-;976:12;;898:98;;;;:::o;13799:742::-;13899:7;13921;13943;13965;13987;14009;14059:23;14097:12;14124:18;14156:20;14168:7;14156:11;:20::i;:::-;14044:132;;;;;;14188:15;14205:23;14230:12;14246:113;14272:7;14294:4;14313:10;14338;:8;:10::i;:::-;14246:11;:113::i;:::-;14187:172;;;;;;14392:7;14414:15;14444:4;14463:15;14493:4;14512:10;14370:163;;;;;;;;;;;;;;;;;;13799:742;;;;;;;:::o;1004:98::-;1062:7;1093:1;1089;:5;;;;:::i;:::-;1082:12;;1004:98;;;;:::o;19406:465::-;6013:4;5994:16;;:23;;;;;;;;;;;;;;;;;;19491:12:::1;19506:27;19531:1;19506:20;:24;;:27;;;;:::i;:::-;19491:42;;19544:17;19564:30;19589:4;19564:20;:24;;:30;;;;:::i;:::-;19544:50;;19605:22;19630:21;19605:46;;19662:22;19679:4;19662:16;:22::i;:::-;19696:18;19717:41;19743:14;19717:21;:25;;:41;;;;:::i;:::-;19696:62;;19769:35;19782:9;19793:10;19769:12;:35::i;:::-;19820:43;19835:4;19841:10;19853:9;19820:43;;;;;;;;:::i;:::-;;;;;;;;19480:391;;;;6059:5:::0;6040:16;;:24;;;;;;;;;;;;;;;;;;19406:465;:::o;20816:838::-;20972:7;20967:28;;20981:14;:12;:14::i;:::-;20967:28;21012:11;:19;21024:6;21012:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;21036:11;:22;21048:9;21036:22;;;;;;;;;;;;;;;;;;;;;;;;;21035:23;21012:46;21008:597;;;21075:48;21097:6;21105:9;21116:6;21075:21;:48::i;:::-;21008:597;;;21146:11;:19;21158:6;21146:19;;;;;;;;;;;;;;;;;;;;;;;;;21145:20;:46;;;;;21169:11;:22;21181:9;21169:22;;;;;;;;;;;;;;;;;;;;;;;;;21145:46;21141:464;;;21208:46;21228:6;21236:9;21247:6;21208:19;:46::i;:::-;21141:464;;;21277:11;:19;21289:6;21277:19;;;;;;;;;;;;;;;;;;;;;;;;;21276:20;:47;;;;;21301:11;:22;21313:9;21301:22;;;;;;;;;;;;;;;;;;;;;;;;;21300:23;21276:47;21272:333;;;21340:44;21358:6;21366:9;21377:6;21340:17;:44::i;:::-;21272:333;;;21406:11;:19;21418:6;21406:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;21429:11;:22;21441:9;21429:22;;;;;;;;;;;;;;;;;;;;;;;;;21406:45;21402:203;;;21468:48;21490:6;21498:9;21509:6;21468:21;:48::i;:::-;21402:203;;;21549:44;21567:6;21575:9;21586:6;21549:17;:44::i;:::-;21402:203;21272:333;21141:464;21008:597;21622:7;21617:29;;21631:15;:13;:15::i;:::-;21617:29;20816:838;;;;:::o;15703:605::-;15754:7;15763;15783:15;15801:7;;15783:25;;15819:15;15837:7;;15819:25;;15860:9;15855:338;15879:9;:16;;;;15875:1;:20;15855:338;;;15963:7;15939;:21;15947:9;15957:1;15947:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15939:21;;;;;;;;;;;;;;;;:31;:83;;;;16015:7;15991;:21;15999:9;16009:1;15999:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15991:21;;;;;;;;;;;;;;;;:31;15939:83;15917:146;;;16046:7;;16055;;16038:25;;;;;;;;;15917:146;16088:34;16100:7;:21;16108:9;16118:1;16108:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16100:21;;;;;;;;;;;;;;;;16088:7;:11;;:34;;;;:::i;:::-;16078:44;;16147:34;16159:7;:21;16167:9;16177:1;16167:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16159:21;;;;;;;;;;;;;;;;16147:7;:11;;:34;;;;:::i;:::-;16137:44;;15897:3;;;;;:::i;:::-;;;;15855:338;;;;16217:20;16229:7;;16217;;:11;;:20;;;;:::i;:::-;16207:7;:30;16203:61;;;16247:7;;16256;;16239:25;;;;;;;;16203:61;16283:7;16292;16275:25;;;;;;15703:605;;;:::o;14549:412::-;14650:7;14672;14694;14729:12;14744:24;14760:7;14744:15;:24::i;:::-;14729:39;;14779:18;14800:30;14822:7;14800:21;:30::i;:::-;14779:51;;14841:23;14867:33;14889:10;14867:17;14879:4;14867:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;14841:59;;14919:15;14936:4;14942:10;14911:42;;;;;;;;;14549:412;;;;;:::o;14969:554::-;15168:7;15190;15212;15247:15;15265:24;15277:11;15265:7;:11;;:24;;;;:::i;:::-;15247:42;;15300:12;15315:21;15324:11;15315:4;:8;;:21;;;;:::i;:::-;15300:36;;15347:18;15368:27;15383:11;15368:10;:14;;:27;;;;:::i;:::-;15347:48;;15406:23;15432:33;15454:10;15432:17;15444:4;15432:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;15406:59;;15484:7;15493:15;15510:4;15476:39;;;;;;;;;;14969:554;;;;;;;;:::o;19879:499::-;19945:21;19983:1;19969:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19945:40;;20014:4;19996;20001:1;19996:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20040:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20030:4;20035:1;20030:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;20073:62;20090:4;20105:15;;;;;;;;;;;20123:11;20073:8;:62::i;:::-;20146:15;;;;;;;;;;;:66;;;20227:11;20253:1;20297:4;20324;20344:15;20146:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19934:444;19879:499;:::o;20386:422::-;20467:62;20484:4;20499:15;;;;;;;;;;;20517:11;20467:8;:62::i;:::-;20540:15;;;;;;;;;;;:31;;;20579:9;20612:4;20632:11;20658:1;20701;20752:6;20774:15;20540:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20386:422;;:::o;17095:176::-;17156:7;;17138:15;:25;;;;17198:13;;17174:21;:37;;;;17234:1;17224:7;:11;;;;17262:1;17246:13;:17;;;;17095:176::o;23001:686::-;23152:15;23182:23;23220:12;23247:23;23285:12;23312:18;23344:19;23355:7;23344:10;:19::i;:::-;23137:226;;;;;;;;;;;;23392:28;23412:7;23392;:15;23400:6;23392:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23374:7;:15;23382:6;23374:15;;;;;;;;;;;;;;;:46;;;;23449:28;23469:7;23449;:15;23457:6;23449:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23431:7;:15;23439:6;23431:15;;;;;;;;;;;;;;;:46;;;;23509:39;23532:15;23509:7;:18;23517:9;23509:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23488:7;:18;23496:9;23488:18;;;;;;;;;;;;;;;:60;;;;23559:26;23574:10;23559:14;:26::i;:::-;23596:23;23608:4;23614;23596:11;:23::i;:::-;23652:9;23635:44;;23644:6;23635:44;;;23663:15;23635:44;;;;;;:::i;:::-;;;;;;;;23126:561;;;;;;23001:686;;;:::o;22295:698::-;22444:15;22474:23;22512:12;22539:23;22577:12;22604:18;22636:19;22647:7;22636:10;:19::i;:::-;22429:226;;;;;;;;;;;;22684:28;22704:7;22684;:15;22692:6;22684:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22666:7;:15;22674:6;22666:15;;;;;;;;;;;;;;;:46;;;;22744:39;22767:15;22744:7;:18;22752:9;22744:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22723:7;:18;22731:9;22723:18;;;;;;;;;;;;;;;:60;;;;22815:39;22838:15;22815:7;:18;22823:9;22815:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22794:7;:18;22802:9;22794:18;;;;;;;;;;;;;;;:60;;;;22865:26;22880:10;22865:14;:26::i;:::-;22902:23;22914:4;22920;22902:11;:23::i;:::-;22958:9;22941:44;;22950:6;22941:44;;;22969:15;22941:44;;;;;;:::i;:::-;;;;;;;;22418:575;;;;;;22295:698;;;:::o;21662:625::-;21809:15;21839:23;21877:12;21904:23;21942:12;21969:18;22001:19;22012:7;22001:10;:19::i;:::-;21794:226;;;;;;;;;;;;22049:28;22069:7;22049;:15;22057:6;22049:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22031:7;:15;22039:6;22031:15;;;;;;;;;;;;;;;:46;;;;22109:39;22132:15;22109:7;:18;22117:9;22109:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22088:7;:18;22096:9;22088:18;;;;;;;;;;;;;;;:60;;;;22159:26;22174:10;22159:14;:26::i;:::-;22196:23;22208:4;22214;22196:11;:23::i;:::-;22252:9;22235:44;;22244:6;22235:44;;;22263:15;22235:44;;;;;;:::i;:::-;;;;;;;;21783:504;;;;;;21662:625;;;:::o;11427:757::-;11578:15;11608:23;11646:12;11673:23;11711:12;11738:18;11770:19;11781:7;11770:10;:19::i;:::-;11563:226;;;;;;;;;;;;11818:28;11838:7;11818;:15;11826:6;11818:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11800:7;:15;11808:6;11800:15;;;;;;;;;;;;;;;:46;;;;11875:28;11895:7;11875;:15;11883:6;11875:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11857:7;:15;11865:6;11857:15;;;;;;;;;;;;;;;:46;;;;11935:39;11958:15;11935:7;:18;11943:9;11935:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11914:7;:18;11922:9;11914:18;;;;;;;;;;;;;;;:60;;;;12006:39;12029:15;12006:7;:18;12014:9;12006:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11985:7;:18;11993:9;11985:18;;;;;;;;;;;;;;;:60;;;;12056:26;12071:10;12056:14;:26::i;:::-;12093:23;12105:4;12111;12093:11;:23::i;:::-;12149:9;12132:44;;12141:6;12132:44;;;12160:15;12132:44;;;;;;:::i;:::-;;;;;;;;11552:632;;;;;;11427:757;;;:::o;17279:125::-;17333:15;;17323:7;:25;;;;17375:21;;17359:13;:37;;;;17279:125::o;16773:130::-;16837:7;16864:31;16889:5;16864:20;16876:7;;16864;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;16857:38;;16773:130;;;:::o;16911:176::-;17008:7;17040:39;17073:5;17040:28;17053:13;;17040:7;:11;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;17033:46;;16911:176;;;:::o;1110:98::-;1168:7;1199:1;1195;:5;;;;:::i;:::-;1188:12;;1110:98;;;;:::o;16316:449::-;16393:19;16415:10;:8;:10::i;:::-;16393:32;;16436:18;16457:51;16486:11;16457:10;:14;;:51;;;;:::i;:::-;16436:72;;16544:62;16585:10;16544:7;:22;16560:4;16544:22;;;;;;;;;;;;;;;;:26;;:62;;;;:::i;:::-;16519:7;:22;16535:4;16519:22;;;;;;;;;;;;;;;:87;;;;16621:11;:26;16641:4;16621:26;;;;;;;;;;;;;;;;;;;;;;;;;16617:140;;;16687:70;16732:10;16687:7;:22;16703:4;16687:22;;;;;;;;;;;;;;;;:26;;:70;;;;:::i;:::-;16662:7;:22;16678:4;16662:22;;;;;;;;;;;;;;;:95;;;;16617:140;16382:383;;16316:449;:::o;13644:147::-;13722:17;13734:4;13722:7;;:11;;:17;;;;:::i;:::-;13712:7;:27;;;;13763:20;13778:4;13763:10;;:14;;:20;;;;:::i;:::-;13750:10;:33;;;;13644:147;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:329::-;5455:6;5504:2;5492:9;5483:7;5479:23;5475:32;5472:119;;;5510:79;;:::i;:::-;5472:119;5630:1;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5601:117;5396:329;;;;:::o;5731:::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:116::-;6136:21;6151:5;6136:21;:::i;:::-;6129:5;6126:32;6116:60;;6172:1;6169;6162:12;6116:60;6066:116;:::o;6188:133::-;6231:5;6269:6;6256:20;6247:29;;6285:30;6309:5;6285:30;:::i;:::-;6188:133;;;;:::o;6327:468::-;6392:6;6400;6449:2;6437:9;6428:7;6424:23;6420:32;6417:119;;;6455:79;;:::i;:::-;6417:119;6575:1;6600:53;6645:7;6636:6;6625:9;6621:22;6600:53;:::i;:::-;6590:63;;6546:117;6702:2;6728:50;6770:7;6761:6;6750:9;6746:22;6728:50;:::i;:::-;6718:60;;6673:115;6327:468;;;;;:::o;6801:118::-;6888:24;6906:5;6888:24;:::i;:::-;6883:3;6876:37;6801:118;;:::o;6925:222::-;7018:4;7056:2;7045:9;7041:18;7033:26;;7069:71;7137:1;7126:9;7122:17;7113:6;7069:71;:::i;:::-;6925:222;;;;:::o;7153:474::-;7221:6;7229;7278:2;7266:9;7257:7;7253:23;7249:32;7246:119;;;7284:79;;:::i;:::-;7246:119;7404:1;7429:53;7474:7;7465:6;7454:9;7450:22;7429:53;:::i;:::-;7419:63;;7375:117;7531:2;7557:53;7602:7;7593:6;7582:9;7578:22;7557:53;:::i;:::-;7547:63;;7502:118;7153:474;;;;;:::o;7633:323::-;7689:6;7738:2;7726:9;7717:7;7713:23;7709:32;7706:119;;;7744:79;;:::i;:::-;7706:119;7864:1;7889:50;7931:7;7922:6;7911:9;7907:22;7889:50;:::i;:::-;7879:60;;7835:114;7633:323;;;;:::o;7962:474::-;8030:6;8038;8087:2;8075:9;8066:7;8062:23;8058:32;8055:119;;;8093:79;;:::i;:::-;8055:119;8213:1;8238:53;8283:7;8274:6;8263:9;8259:22;8238:53;:::i;:::-;8228:63;;8184:117;8340:2;8366:53;8411:7;8402:6;8391:9;8387:22;8366:53;:::i;:::-;8356:63;;8311:118;7962:474;;;;;:::o;8442:180::-;8490:77;8487:1;8480:88;8587:4;8584:1;8577:15;8611:4;8608:1;8601:15;8628:320;8672:6;8709:1;8703:4;8699:12;8689:22;;8756:1;8750:4;8746:12;8777:18;8767:81;;8833:4;8825:6;8821:17;8811:27;;8767:81;8895:2;8887:6;8884:14;8864:18;8861:38;8858:84;;8914:18;;:::i;:::-;8858:84;8679:269;8628:320;;;:::o;8954:229::-;9094:34;9090:1;9082:6;9078:14;9071:58;9163:12;9158:2;9150:6;9146:15;9139:37;8954:229;:::o;9189:366::-;9331:3;9352:67;9416:2;9411:3;9352:67;:::i;:::-;9345:74;;9428:93;9517:3;9428:93;:::i;:::-;9546:2;9541:3;9537:12;9530:19;;9189:366;;;:::o;9561:419::-;9727:4;9765:2;9754:9;9750:18;9742:26;;9814:9;9808:4;9804:20;9800:1;9789:9;9785:17;9778:47;9842:131;9968:4;9842:131;:::i;:::-;9834:139;;9561:419;;;:::o;9986:182::-;10126:34;10122:1;10114:6;10110:14;10103:58;9986:182;:::o;10174:366::-;10316:3;10337:67;10401:2;10396:3;10337:67;:::i;:::-;10330:74;;10413:93;10502:3;10413:93;:::i;:::-;10531:2;10526:3;10522:12;10515:19;;10174:366;;;:::o;10546:419::-;10712:4;10750:2;10739:9;10735:18;10727:26;;10799:9;10793:4;10789:20;10785:1;10774:9;10770:17;10763:47;10827:131;10953:4;10827:131;:::i;:::-;10819:139;;10546:419;;;:::o;10971:177::-;11111:29;11107:1;11099:6;11095:14;11088:53;10971:177;:::o;11154:366::-;11296:3;11317:67;11381:2;11376:3;11317:67;:::i;:::-;11310:74;;11393:93;11482:3;11393:93;:::i;:::-;11511:2;11506:3;11502:12;11495:19;;11154:366;;;:::o;11526:419::-;11692:4;11730:2;11719:9;11715:18;11707:26;;11779:9;11773:4;11769:20;11765:1;11754:9;11750:17;11743:47;11807:131;11933:4;11807:131;:::i;:::-;11799:139;;11526:419;;;:::o;11951:180::-;11999:77;11996:1;11989:88;12096:4;12093:1;12086:15;12120:4;12117:1;12110:15;12137:180;12185:77;12182:1;12175:88;12282:4;12279:1;12272:15;12306:4;12303:1;12296:15;12323:194;12363:4;12383:20;12401:1;12383:20;:::i;:::-;12378:25;;12417:20;12435:1;12417:20;:::i;:::-;12412:25;;12461:1;12458;12454:9;12446:17;;12485:1;12479:4;12476:11;12473:37;;;12490:18;;:::i;:::-;12473:37;12323:194;;;;:::o;12523:180::-;12571:77;12568:1;12561:88;12668:4;12665:1;12658:15;12692:4;12689:1;12682:15;12709:233;12748:3;12771:24;12789:5;12771:24;:::i;:::-;12762:33;;12817:66;12810:5;12807:77;12804:103;;12887:18;;:::i;:::-;12804:103;12934:1;12927:5;12923:13;12916:20;;12709:233;;;:::o;12948:231::-;13088:34;13084:1;13076:6;13072:14;13065:58;13157:14;13152:2;13144:6;13140:15;13133:39;12948:231;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:181::-;14122:33;14118:1;14110:6;14106:14;14099:57;13982:181;:::o;14169:366::-;14311:3;14332:67;14396:2;14391:3;14332:67;:::i;:::-;14325:74;;14408:93;14497:3;14408:93;:::i;:::-;14526:2;14521:3;14517:12;14510:19;;14169:366;;;:::o;14541:419::-;14707:4;14745:2;14734:9;14730:18;14722:26;;14794:9;14788:4;14784:20;14780:1;14769:9;14765:17;14758:47;14822:131;14948:4;14822:131;:::i;:::-;14814:139;;14541:419;;;:::o;14966:177::-;15106:29;15102:1;15094:6;15090:14;15083:53;14966:177;:::o;15149:366::-;15291:3;15312:67;15376:2;15371:3;15312:67;:::i;:::-;15305:74;;15388:93;15477:3;15388:93;:::i;:::-;15506:2;15501:3;15497:12;15490:19;;15149:366;;;:::o;15521:419::-;15687:4;15725:2;15714:9;15710:18;15702:26;;15774:9;15768:4;15764:20;15760:1;15749:9;15745:17;15738:47;15802:131;15928:4;15802:131;:::i;:::-;15794:139;;15521:419;;;:::o;15946:226::-;16086:34;16082:1;16074:6;16070:14;16063:58;16155:9;16150:2;16142:6;16138:15;16131:34;15946:226;:::o;16178:366::-;16320:3;16341:67;16405:2;16400:3;16341:67;:::i;:::-;16334:74;;16417:93;16506:3;16417:93;:::i;:::-;16535:2;16530:3;16526:12;16519:19;;16178:366;;;:::o;16550:419::-;16716:4;16754:2;16743:9;16739:18;16731:26;;16803:9;16797:4;16793:20;16789:1;16778:9;16774:17;16767:47;16831:131;16957:4;16831:131;:::i;:::-;16823:139;;16550:419;;;:::o;16975:231::-;17115:34;17111:1;17103:6;17099:14;17092:58;17184:14;17179:2;17171:6;17167:15;17160:39;16975:231;:::o;17212:366::-;17354:3;17375:67;17439:2;17434:3;17375:67;:::i;:::-;17368:74;;17451:93;17540:3;17451:93;:::i;:::-;17569:2;17564:3;17560:12;17553:19;;17212:366;;;:::o;17584:419::-;17750:4;17788:2;17777:9;17773:18;17765:26;;17837:9;17831:4;17827:20;17823:1;17812:9;17808:17;17801:47;17865:131;17991:4;17865:131;:::i;:::-;17857:139;;17584:419;;;:::o;18009:143::-;18066:5;18097:6;18091:13;18082:22;;18113:33;18140:5;18113:33;:::i;:::-;18009:143;;;;:::o;18158:351::-;18228:6;18277:2;18265:9;18256:7;18252:23;18248:32;18245:119;;;18283:79;;:::i;:::-;18245:119;18403:1;18428:64;18484:7;18475:6;18464:9;18460:22;18428:64;:::i;:::-;18418:74;;18374:128;18158:351;;;;:::o;18515:166::-;18655:18;18651:1;18643:6;18639:14;18632:42;18515:166;:::o;18687:366::-;18829:3;18850:67;18914:2;18909:3;18850:67;:::i;:::-;18843:74;;18926:93;19015:3;18926:93;:::i;:::-;19044:2;19039:3;19035:12;19028:19;;18687:366;;;:::o;19059:419::-;19225:4;19263:2;19252:9;19248:18;19240:26;;19312:9;19306:4;19302:20;19298:1;19287:9;19283:17;19276:47;19340:131;19466:4;19340:131;:::i;:::-;19332:139;;19059:419;;;:::o;19484:332::-;19605:4;19643:2;19632:9;19628:18;19620:26;;19656:71;19724:1;19713:9;19709:17;19700:6;19656:71;:::i;:::-;19737:72;19805:2;19794:9;19790:18;19781:6;19737:72;:::i;:::-;19484:332;;;;;:::o;19822:137::-;19876:5;19907:6;19901:13;19892:22;;19923:30;19947:5;19923:30;:::i;:::-;19822:137;;;;:::o;19965:345::-;20032:6;20081:2;20069:9;20060:7;20056:23;20052:32;20049:119;;;20087:79;;:::i;:::-;20049:119;20207:1;20232:61;20285:7;20276:6;20265:9;20261:22;20232:61;:::i;:::-;20222:71;;20178:125;19965:345;;;;:::o;20316:225::-;20456:34;20452:1;20444:6;20440:14;20433:58;20525:8;20520:2;20512:6;20508:15;20501:33;20316:225;:::o;20547:366::-;20689:3;20710:67;20774:2;20769:3;20710:67;:::i;:::-;20703:74;;20786:93;20875:3;20786:93;:::i;:::-;20904:2;20899:3;20895:12;20888:19;;20547:366;;;:::o;20919:419::-;21085:4;21123:2;21112:9;21108:18;21100:26;;21172:9;21166:4;21162:20;21158:1;21147:9;21143:17;21136:47;21200:131;21326:4;21200:131;:::i;:::-;21192:139;;20919:419;;;:::o;21344:181::-;21484:33;21480:1;21472:6;21468:14;21461:57;21344:181;:::o;21531:366::-;21673:3;21694:67;21758:2;21753:3;21694:67;:::i;:::-;21687:74;;21770:93;21859:3;21770:93;:::i;:::-;21888:2;21883:3;21879:12;21872:19;;21531:366;;;:::o;21903:419::-;22069:4;22107:2;22096:9;22092:18;22084:26;;22156:9;22150:4;22146:20;22142:1;22131:9;22127:17;22120:47;22184:131;22310:4;22184:131;:::i;:::-;22176:139;;21903:419;;;:::o;22328:225::-;22468:34;22464:1;22456:6;22452:14;22445:58;22537:8;22532:2;22524:6;22520:15;22513:33;22328:225;:::o;22559:366::-;22701:3;22722:67;22786:2;22781:3;22722:67;:::i;:::-;22715:74;;22798:93;22887:3;22798:93;:::i;:::-;22916:2;22911:3;22907:12;22900:19;;22559:366;;;:::o;22931:419::-;23097:4;23135:2;23124:9;23120:18;23112:26;;23184:9;23178:4;23174:20;23170:1;23159:9;23155:17;23148:47;23212:131;23338:4;23212:131;:::i;:::-;23204:139;;22931:419;;;:::o;23356:223::-;23496:34;23492:1;23484:6;23480:14;23473:58;23565:6;23560:2;23552:6;23548:15;23541:31;23356:223;:::o;23585:366::-;23727:3;23748:67;23812:2;23807:3;23748:67;:::i;:::-;23741:74;;23824:93;23913:3;23824:93;:::i;:::-;23942:2;23937:3;23933:12;23926:19;;23585:366;;;:::o;23957:419::-;24123:4;24161:2;24150:9;24146:18;24138:26;;24210:9;24204:4;24200:20;24196:1;24185:9;24181:17;24174:47;24238:131;24364:4;24238:131;:::i;:::-;24230:139;;23957:419;;;:::o;24382:221::-;24522:34;24518:1;24510:6;24506:14;24499:58;24591:4;24586:2;24578:6;24574:15;24567:29;24382:221;:::o;24609:366::-;24751:3;24772:67;24836:2;24831:3;24772:67;:::i;:::-;24765:74;;24848:93;24937:3;24848:93;:::i;:::-;24966:2;24961:3;24957:12;24950:19;;24609:366;;;:::o;24981:419::-;25147:4;25185:2;25174:9;25170:18;25162:26;;25234:9;25228:4;25224:20;25220:1;25209:9;25205:17;25198:47;25262:131;25388:4;25262:131;:::i;:::-;25254:139;;24981:419;;;:::o;25406:224::-;25546:34;25542:1;25534:6;25530:14;25523:58;25615:7;25610:2;25602:6;25598:15;25591:32;25406:224;:::o;25636:366::-;25778:3;25799:67;25863:2;25858:3;25799:67;:::i;:::-;25792:74;;25875:93;25964:3;25875:93;:::i;:::-;25993:2;25988:3;25984:12;25977:19;;25636:366;;;:::o;26008:419::-;26174:4;26212:2;26201:9;26197:18;26189:26;;26261:9;26255:4;26251:20;26247:1;26236:9;26232:17;26225:47;26289:131;26415:4;26289:131;:::i;:::-;26281:139;;26008:419;;;:::o;26433:222::-;26573:34;26569:1;26561:6;26557:14;26550:58;26642:5;26637:2;26629:6;26625:15;26618:30;26433:222;:::o;26661:366::-;26803:3;26824:67;26888:2;26883:3;26824:67;:::i;:::-;26817:74;;26900:93;26989:3;26900:93;:::i;:::-;27018:2;27013:3;27009:12;27002:19;;26661:366;;;:::o;27033:419::-;27199:4;27237:2;27226:9;27222:18;27214:26;;27286:9;27280:4;27276:20;27272:1;27261:9;27257:17;27250:47;27314:131;27440:4;27314:131;:::i;:::-;27306:139;;27033:419;;;:::o;27458:228::-;27598:34;27594:1;27586:6;27582:14;27575:58;27667:11;27662:2;27654:6;27650:15;27643:36;27458:228;:::o;27692:366::-;27834:3;27855:67;27919:2;27914:3;27855:67;:::i;:::-;27848:74;;27931:93;28020:3;27931:93;:::i;:::-;28049:2;28044:3;28040:12;28033:19;;27692:366;;;:::o;28064:419::-;28230:4;28268:2;28257:9;28253:18;28245:26;;28317:9;28311:4;28307:20;28303:1;28292:9;28288:17;28281:47;28345:131;28471:4;28345:131;:::i;:::-;28337:139;;28064:419;;;:::o;28489:180::-;28537:77;28534:1;28527:88;28634:4;28631:1;28624:15;28658:4;28655:1;28648:15;28675:185;28715:1;28732:20;28750:1;28732:20;:::i;:::-;28727:25;;28766:20;28784:1;28766:20;:::i;:::-;28761:25;;28805:1;28795:35;;28810:18;;:::i;:::-;28795:35;28852:1;28849;28845:9;28840:14;;28675:185;;;;:::o;28866:191::-;28906:3;28925:20;28943:1;28925:20;:::i;:::-;28920:25;;28959:20;28977:1;28959:20;:::i;:::-;28954:25;;29002:1;28999;28995:9;28988:16;;29023:3;29020:1;29017:10;29014:36;;;29030:18;;:::i;:::-;29014:36;28866:191;;;;:::o;29063:442::-;29212:4;29250:2;29239:9;29235:18;29227:26;;29263:71;29331:1;29320:9;29316:17;29307:6;29263:71;:::i;:::-;29344:72;29412:2;29401:9;29397:18;29388:6;29344:72;:::i;:::-;29426;29494:2;29483:9;29479:18;29470:6;29426:72;:::i;:::-;29063:442;;;;;;:::o;29511:180::-;29559:77;29556:1;29549:88;29656:4;29653:1;29646:15;29680:4;29677:1;29670:15;29697:143;29754:5;29785:6;29779:13;29770:22;;29801:33;29828:5;29801:33;:::i;:::-;29697:143;;;;:::o;29846:351::-;29916:6;29965:2;29953:9;29944:7;29940:23;29936:32;29933:119;;;29971:79;;:::i;:::-;29933:119;30091:1;30116:64;30172:7;30163:6;30152:9;30148:22;30116:64;:::i;:::-;30106:74;;30062:128;29846:351;;;;:::o;30203:85::-;30248:7;30277:5;30266:16;;30203:85;;;:::o;30294:158::-;30352:9;30385:61;30403:42;30412:32;30438:5;30412:32;:::i;:::-;30403:42;:::i;:::-;30385:61;:::i;:::-;30372:74;;30294:158;;;:::o;30458:147::-;30553:45;30592:5;30553:45;:::i;:::-;30548:3;30541:58;30458:147;;:::o;30611:114::-;30678:6;30712:5;30706:12;30696:22;;30611:114;;;:::o;30731:184::-;30830:11;30864:6;30859:3;30852:19;30904:4;30899:3;30895:14;30880:29;;30731:184;;;;:::o;30921:132::-;30988:4;31011:3;31003:11;;31041:4;31036:3;31032:14;31024:22;;30921:132;;;:::o;31059:108::-;31136:24;31154:5;31136:24;:::i;:::-;31131:3;31124:37;31059:108;;:::o;31173:179::-;31242:10;31263:46;31305:3;31297:6;31263:46;:::i;:::-;31341:4;31336:3;31332:14;31318:28;;31173:179;;;;:::o;31358:113::-;31428:4;31460;31455:3;31451:14;31443:22;;31358:113;;;:::o;31507:732::-;31626:3;31655:54;31703:5;31655:54;:::i;:::-;31725:86;31804:6;31799:3;31725:86;:::i;:::-;31718:93;;31835:56;31885:5;31835:56;:::i;:::-;31914:7;31945:1;31930:284;31955:6;31952:1;31949:13;31930:284;;;32031:6;32025:13;32058:63;32117:3;32102:13;32058:63;:::i;:::-;32051:70;;32144:60;32197:6;32144:60;:::i;:::-;32134:70;;31990:224;31977:1;31974;31970:9;31965:14;;31930:284;;;31934:14;32230:3;32223:10;;31631:608;;;31507:732;;;;:::o;32245:831::-;32508:4;32546:3;32535:9;32531:19;32523:27;;32560:71;32628:1;32617:9;32613:17;32604:6;32560:71;:::i;:::-;32641:80;32717:2;32706:9;32702:18;32693:6;32641:80;:::i;:::-;32768:9;32762:4;32758:20;32753:2;32742:9;32738:18;32731:48;32796:108;32899:4;32890:6;32796:108;:::i;:::-;32788:116;;32914:72;32982:2;32971:9;32967:18;32958:6;32914:72;:::i;:::-;32996:73;33064:3;33053:9;33049:19;33040:6;32996:73;:::i;:::-;32245:831;;;;;;;;:::o;33082:807::-;33331:4;33369:3;33358:9;33354:19;33346:27;;33383:71;33451:1;33440:9;33436:17;33427:6;33383:71;:::i;:::-;33464:72;33532:2;33521:9;33517:18;33508:6;33464:72;:::i;:::-;33546:80;33622:2;33611:9;33607:18;33598:6;33546:80;:::i;:::-;33636;33712:2;33701:9;33697:18;33688:6;33636:80;:::i;:::-;33726:73;33794:3;33783:9;33779:19;33770:6;33726:73;:::i;:::-;33809;33877:3;33866:9;33862:19;33853:6;33809:73;:::i;:::-;33082:807;;;;;;;;;:::o;33895:663::-;33983:6;33991;33999;34048:2;34036:9;34027:7;34023:23;34019:32;34016:119;;;34054:79;;:::i;:::-;34016:119;34174:1;34199:64;34255:7;34246:6;34235:9;34231:22;34199:64;:::i;:::-;34189:74;;34145:128;34312:2;34338:64;34394:7;34385:6;34374:9;34370:22;34338:64;:::i;:::-;34328:74;;34283:129;34451:2;34477:64;34533:7;34524:6;34513:9;34509:22;34477:64;:::i;:::-;34467:74;;34422:129;33895:663;;;;;:::o;34564:348::-;34604:7;34627:20;34645:1;34627:20;:::i;:::-;34622:25;;34661:20;34679:1;34661:20;:::i;:::-;34656:25;;34849:1;34781:66;34777:74;34774:1;34771:81;34766:1;34759:9;34752:17;34748:105;34745:131;;;34856:18;;:::i;:::-;34745:131;34904:1;34901;34897:9;34886:20;;34564:348;;;;:::o

Swarm Source

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