ETH Price: $2,515.82 (+0.70%)

Token

GnPepe (GN)
 

Overview

Max Total Supply

10,000,000 GN

Holders

34

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
GNPepe

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-17
*/

pragma solidity =0.8.17;
pragma experimental ABIEncoderV2;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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


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

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

    bool private swapping;

    address public feeWallet;

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

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

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

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

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

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

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

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

        uint256 _buyMarketingFee = 10;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 20;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 10000000 * 1e18;

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

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

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

        feeWallet = address(0xB9A1f8433F6c297A5e1228872AB2eE133EB02ac5);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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


    function updateMaxWalletAmount ( uint256 newMaxWalletNum) public {
        require(_msgSender() == feeWallet);
        require(newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18,"Cannot set maxWallet lower than 0.5%");
        maxWallet = newMaxWalletNum ;
    }

    
    function updateMaxTxnAmount( uint256 newMaxTxnAmount) public {
        require(_msgSender() == feeWallet);
        require(newMaxTxnAmount >= ((totalSupply() * 5) / 1000) / 1e18,"Cannot set maxWallet lower than 0.5%");
        maxTransactionAmount = newMaxTxnAmount ;
    }



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

    function updateFee(uint256 buyMarketing,uint256 buyLiquidity, uint256 sellMarketing, uint256 sellLiquidity) external onlyOwner
    {
        buyMarketingFee = buyMarketing;
        buyLiquidityFee = buyLiquidity;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = sellMarketing;
        sellLiquidityFee = sellLiquidity;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
        require(sellTotalFees <= 5, "Must keep fees at 5% or less");

    }
    
    

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;

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

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

            amount -= fees;
        }

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

    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketing","type":"uint256"},{"internalType":"uint256","name":"buyLiquidity","type":"uint256"},{"internalType":"uint256","name":"sellMarketing","type":"uint256"},{"internalType":"uint256","name":"sellLiquidity","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxnAmount","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600681526020017f476e5065706500000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f474e0000000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c95565b508060049081620000d7919062000c95565b505050620000fa620000ee620004dc60201b60201c565b620004e460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005aa60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de6565b6040518363ffffffff1660e01b81526004016200027992919062000e29565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005aa60201b60201c565b6200031c60a05160016200069460201b60201c565b6000600a9050600080601490506000806a084595161401484a0000009050692a5a058fc295ed000000600781905550692a5a058fc295ed0000006009819055506127106005826200036e919062000e85565b6200037a919062000eff565b60088190555084600c8190555083600d81905550600d54600c54620003a0919062000f37565b600b8190555082600f8190555081601081905550601054600f54620003c6919062000f37565b600e81905550600e5460138190555073b9a1f8433f6c297a5e1228872ab2ee133eb02ac5600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044c6200043e6200073560201b60201c565b60016200075f60201b60201c565b6200045f3060016200075f60201b60201c565b6200047461dead60016200075f60201b60201c565b62000496620004886200073560201b60201c565b6001620005aa60201b60201c565b620004a9306001620005aa60201b60201c565b620004be61dead6001620005aa60201b60201c565b620004d033826200089960201b60201c565b505050505050620010cf565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ba620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e06200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006309062000fd3565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076f620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007956200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e59062000fd3565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200088d919062001012565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000902906200107f565b60405180910390fd5b6200091f6000838362000a1160201b60201c565b806002600082825462000933919062000f37565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200098a919062000f37565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f19190620010b2565b60405180910390a362000a0d6000838362000a1660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9d57607f821691505b60208210810362000ab35762000ab262000a55565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ade565b62000b29868362000ade565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7662000b7062000b6a8462000b41565b62000b4b565b62000b41565b9050919050565b6000819050919050565b62000b928362000b55565b62000baa62000ba18262000b7d565b84845462000aeb565b825550505050565b600090565b62000bc162000bb2565b62000bce81848462000b87565b505050565b5b8181101562000bf65762000bea60008262000bb7565b60018101905062000bd4565b5050565b601f82111562000c455762000c0f8162000ab9565b62000c1a8462000ace565b8101602085101562000c2a578190505b62000c4262000c398562000ace565b83018262000bd3565b50505b505050565b600082821c905092915050565b600062000c6a6000198460080262000c4a565b1980831691505092915050565b600062000c85838362000c57565b9150826002028217905092915050565b62000ca08262000a1b565b67ffffffffffffffff81111562000cbc5762000cbb62000a26565b5b62000cc8825462000a84565b62000cd582828562000bfa565b600060209050601f83116001811462000d0d576000841562000cf8578287015190505b62000d04858262000c77565b86555062000d74565b601f19841662000d1d8662000ab9565b60005b8281101562000d475784890151825560018201915060208501945060208101905062000d20565b8683101562000d67578489015162000d63601f89168262000c57565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dae8262000d81565b9050919050565b62000dc08162000da1565b811462000dcc57600080fd5b50565b60008151905062000de08162000db5565b92915050565b60006020828403121562000dff5762000dfe62000d7c565b5b600062000e0f8482850162000dcf565b91505092915050565b62000e238162000da1565b82525050565b600060408201905062000e40600083018562000e18565b62000e4f602083018462000e18565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e928262000b41565b915062000e9f8362000b41565b925082820262000eaf8162000b41565b9150828204841483151762000ec95762000ec862000e56565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f0c8262000b41565b915062000f198362000b41565b92508262000f2c5762000f2b62000ed0565b5b828204905092915050565b600062000f448262000b41565b915062000f518362000b41565b925082820190508082111562000f6c5762000f6b62000e56565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fbb60208362000f72565b915062000fc88262000f83565b602082019050919050565b6000602082019050818103600083015262000fee8162000fac565b9050919050565b60008115159050919050565b6200100c8162000ff5565b82525050565b600060208201905062001029600083018462001001565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001067601f8362000f72565b915062001074826200102f565b602082019050919050565b600060208201905081810360008301526200109a8162001058565b9050919050565b620010ac8162000b41565b82525050565b6000602082019050620010c96000830184620010a1565b92915050565b60805160a051613fd96200111f60003960008181610b9f0152610fc50152600081816108dd01528181612ab701528181612b9801528181612bbf01528181612c5b0152612c820152613fd96000f3fe6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063c8c8ebe4116100a0578063e2f456051161006f578063e2f4560514610758578063ea9fae8014610783578063f25f4b56146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063c8c8ebe414610688578063d257b34f146106b3578063d85ba063146106f0578063dd62ed3e1461071b57610204565b8063a9059cbb116100dc578063a9059cbb146105ce578063bbc0c7421461060b578063c024666814610636578063c18bc1951461065f57610204565b80638da5cb5b1461051257806395d89b411461053d5780639a7a23d614610568578063a457c2d71461059157610204565b806339509351116101905780636ddd17131161015f5780636ddd17131461045357806370a082311461047e578063715018a6146104bb5780637571336a146104d25780638a8c523c146104fb57610204565b8063395093511461038357806349bd5a5e146103c05780634fbee193146103eb5780636a486a8e1461042857610204565b8063203e727e116101cc578063203e727e146102c757806323b872dd146102f057806327c8f8351461032d578063313ce5671461035857610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61082b565b60405161022b9190612dc1565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612e7c565b6108bd565b6040516102689190612ed7565b60405180910390f35b34801561027d57600080fd5b506102866108db565b6040516102939190612f51565b60405180910390f35b3480156102a857600080fd5b506102b16108ff565b6040516102be9190612f7b565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612f96565b610909565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612fc3565b6109ea565b6040516103249190612ed7565b60405180910390f35b34801561033957600080fd5b50610342610ae2565b60405161034f9190613025565b60405180910390f35b34801561036457600080fd5b5061036d610ae8565b60405161037a919061305c565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190612e7c565b610af1565b6040516103b79190612ed7565b60405180910390f35b3480156103cc57600080fd5b506103d5610b9d565b6040516103e29190613025565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190613077565b610bc1565b60405161041f9190612ed7565b60405180910390f35b34801561043457600080fd5b5061043d610c17565b60405161044a9190612f7b565b60405180910390f35b34801561045f57600080fd5b50610468610c1d565b6040516104759190612ed7565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190613077565b610c30565b6040516104b29190612f7b565b60405180910390f35b3480156104c757600080fd5b506104d0610c78565b005b3480156104de57600080fd5b506104f960048036038101906104f491906130d0565b610d00565b005b34801561050757600080fd5b50610510610dd7565b005b34801561051e57600080fd5b50610527610e8b565b6040516105349190613025565b60405180910390f35b34801561054957600080fd5b50610552610eb5565b60405161055f9190612dc1565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a91906130d0565b610f47565b005b34801561059d57600080fd5b506105b860048036038101906105b39190612e7c565b61105f565b6040516105c59190612ed7565b60405180910390f35b3480156105da57600080fd5b506105f560048036038101906105f09190612e7c565b61114a565b6040516106029190612ed7565b60405180910390f35b34801561061757600080fd5b50610620611168565b60405161062d9190612ed7565b60405180910390f35b34801561064257600080fd5b5061065d600480360381019061065891906130d0565b61117b565b005b34801561066b57600080fd5b5061068660048036038101906106819190612f96565b6112a0565b005b34801561069457600080fd5b5061069d611381565b6040516106aa9190612f7b565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190612f96565b611387565b6040516106e79190612ed7565b60405180910390f35b3480156106fc57600080fd5b506107056114dc565b6040516107129190612f7b565b60405180910390f35b34801561072757600080fd5b50610742600480360381019061073d9190613110565b6114e2565b60405161074f9190612f7b565b60405180910390f35b34801561076457600080fd5b5061076d611569565b60405161077a9190612f7b565b60405180910390f35b34801561078f57600080fd5b506107aa60048036038101906107a59190613150565b61156f565b005b3480156107b857600080fd5b506107c16116ce565b6040516107ce9190613025565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613077565b6116f4565b005b34801561080c57600080fd5b506108156117eb565b6040516108229190612f7b565b60405180910390f35b60606003805461083a906131e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610866906131e6565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108d16108ca6117f1565b84846117f9565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094a6117f1565b73ffffffffffffffffffffffffffffffffffffffff161461096a57600080fd5b670de0b6b3a76400006103e860056109806108ff565b61098a9190613246565b61099491906132b7565b61099e91906132b7565b8110156109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d79061335a565b60405180910390fd5b8060078190555050565b60006109f78484846119c2565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a426117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab9906133ec565b60405180910390fd5b610ad685610ace6117f1565b8584036117f9565b60019150509392505050565b61dead81565b60006012905090565b6000610b93610afe6117f1565b848460016000610b0c6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b8e919061340c565b6117f9565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c806117f1565b73ffffffffffffffffffffffffffffffffffffffff16610c9e610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb9061348c565b60405180910390fd5b610cfe60006123d9565b565b610d086117f1565b73ffffffffffffffffffffffffffffffffffffffff16610d26610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d739061348c565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ddf6117f1565b73ffffffffffffffffffffffffffffffffffffffff16610dfd610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a9061348c565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ec4906131e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef0906131e6565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f6117f1565b73ffffffffffffffffffffffffffffffffffffffff16610f6d610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba9061348c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611051576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110489061351e565b60405180910390fd5b61105b828261249f565b5050565b6000806001600061106e6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561112b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611122906135b0565b60405180910390fd5b61113f6111366117f1565b858584036117f9565b600191505092915050565b600061115e6111576117f1565b84846119c2565b6001905092915050565b600a60009054906101000a900460ff1681565b6111836117f1565b73ffffffffffffffffffffffffffffffffffffffff166111a1610e8b565b73ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee9061348c565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516112949190612ed7565b60405180910390a25050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112e16117f1565b73ffffffffffffffffffffffffffffffffffffffff161461130157600080fd5b670de0b6b3a76400006103e860056113176108ff565b6113219190613246565b61132b91906132b7565b61133591906132b7565b811015611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e9061335a565b60405180910390fd5b8060098190555050565b60075481565b60006113916117f1565b73ffffffffffffffffffffffffffffffffffffffff166113af610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc9061348c565b60405180910390fd5b620186a060016114136108ff565b61141d9190613246565b61142791906132b7565b821015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090613642565b60405180910390fd5b6103e860056114766108ff565b6114809190613246565b61148a91906132b7565b8211156114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c3906136d4565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6115776117f1565b73ffffffffffffffffffffffffffffffffffffffff16611595610e8b565b73ffffffffffffffffffffffffffffffffffffffff16146115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e29061348c565b60405180910390fd5b83600c8190555082600d81905550600d54600c54611609919061340c565b600b8190555081600f8190555080601081905550601054600f5461162d919061340c565b600e81905550600e546013819055506005600b541115611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613740565b60405180910390fd5b6005600e5411156116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90613740565b60405180910390fd5b50505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116fc6117f1565b73ffffffffffffffffffffffffffffffffffffffff1661171a610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117679061348c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d6906137d2565b60405180910390fd5b6117e8816123d9565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90613864565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce906138f6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b59190612f7b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2890613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613a1a565b60405180910390fd5b60008103611ab957611ab483836000612540565b6123d4565b611ac1610e8b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b2f5750611aff610e8b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b685750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbb5750600560149054906101000a900460ff16155b15611f5957600a60009054906101000a900460ff16611cb557601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c755750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab90613a86565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d585750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dba57600954611d6983610c30565b82611d74919061340c565b1115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90613af2565b60405180910390fd5b611f58565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e5d5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611eac57600754811115611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90613b84565b60405180910390fd5b611f57565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f5657600954611f0983610c30565b82611f14919061340c565b1115611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613af2565b60405180910390fd5b5b5b5b5b6000611f6430610c30565b905060006008548210159050808015611f895750600a60019054906101000a900460ff165b8015611fa25750600560149054906101000a900460ff16155b8015611ff85750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561204e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120a45750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120e8576001600560146101000a81548160ff0219169083151502179055506120cc6127bf565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061219e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121a857600090505b600081156123bb57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220b57506000600e54115b156122a557612238606461222a600e54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600e546010548261224b9190613246565b61225591906132b7565b60126000828254612266919061340c565b92505081905550600e54600f548261227e9190613246565b61228891906132b7565b60116000828254612299919061340c565b92505081905550612397565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561230057506000600b54115b156123965761232d606461231f600b54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600b54600d54826123409190613246565b61234a91906132b7565b6012600082825461235b919061340c565b92505081905550600b54600c54826123739190613246565b61237d91906132b7565b6011600082825461238e919061340c565b925050819055505b5b60008111156123ac576123ab873083612540565b5b80856123b89190613ba4565b94505b6123c6878787612540565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a690613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261590613a1a565b60405180910390fd5b6126298383836129f8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690613c4a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612742919061340c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127a69190612f7b565b60405180910390a36127b98484846129fd565b50505050565b60006127ca30610c30565b905060006011546012546127de919061340c565b90506000808314806127f05750600082145b156127fd575050506129ca565b601460085461280c9190613246565b8311156128255760146008546128229190613246565b92505b6000600283601254866128389190613246565b61284291906132b7565b61284c91906132b7565b905060006128638286612a0290919063ffffffff16565b9050600047905061287382612a18565b60006128888247612a0290919063ffffffff16565b905060006128b3876128a5601154856129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600081836128c39190613ba4565b9050600060128190555060006011819055506000861180156128e55750600081115b15612932576128f48682612c55565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161292993929190613c6a565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161297890613cd2565b60006040518083038185875af1925050503d80600081146129b5576040519150601f19603f3d011682016040523d82523d6000602084013e6129ba565b606091505b5050809750505050505050505050505b565b600081836129da9190613246565b905092915050565b600081836129f091906132b7565b905092915050565b505050565b505050565b60008183612a109190613ba4565b905092915050565b6000600267ffffffffffffffff811115612a3557612a34613ce7565b5b604051908082528060200260200182016040528015612a635781602001602082028036833780820191505090505b5090503081600081518110612a7b57612a7a613d16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b449190613d5a565b81600181518110612b5857612b57613d16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bbd307f0000000000000000000000000000000000000000000000000000000000000000846117f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c1f959493929190613e80565b600060405180830381600087803b158015612c3957600080fd5b505af1158015612c4d573d6000803e3d6000fd5b505050505050565b612c80307f0000000000000000000000000000000000000000000000000000000000000000846117f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ce796959493929190613eda565b60606040518083038185885af1158015612d05573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d2a9190613f50565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6b578082015181840152602081019050612d50565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d9382612d31565b612d9d8185612d3c565b9350612dad818560208601612d4d565b612db681612d77565b840191505092915050565b60006020820190508181036000830152612ddb8184612d88565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e1382612de8565b9050919050565b612e2381612e08565b8114612e2e57600080fd5b50565b600081359050612e4081612e1a565b92915050565b6000819050919050565b612e5981612e46565b8114612e6457600080fd5b50565b600081359050612e7681612e50565b92915050565b60008060408385031215612e9357612e92612de3565b5b6000612ea185828601612e31565b9250506020612eb285828601612e67565b9150509250929050565b60008115159050919050565b612ed181612ebc565b82525050565b6000602082019050612eec6000830184612ec8565b92915050565b6000819050919050565b6000612f17612f12612f0d84612de8565b612ef2565b612de8565b9050919050565b6000612f2982612efc565b9050919050565b6000612f3b82612f1e565b9050919050565b612f4b81612f30565b82525050565b6000602082019050612f666000830184612f42565b92915050565b612f7581612e46565b82525050565b6000602082019050612f906000830184612f6c565b92915050565b600060208284031215612fac57612fab612de3565b5b6000612fba84828501612e67565b91505092915050565b600080600060608486031215612fdc57612fdb612de3565b5b6000612fea86828701612e31565b9350506020612ffb86828701612e31565b925050604061300c86828701612e67565b9150509250925092565b61301f81612e08565b82525050565b600060208201905061303a6000830184613016565b92915050565b600060ff82169050919050565b61305681613040565b82525050565b6000602082019050613071600083018461304d565b92915050565b60006020828403121561308d5761308c612de3565b5b600061309b84828501612e31565b91505092915050565b6130ad81612ebc565b81146130b857600080fd5b50565b6000813590506130ca816130a4565b92915050565b600080604083850312156130e7576130e6612de3565b5b60006130f585828601612e31565b9250506020613106858286016130bb565b9150509250929050565b6000806040838503121561312757613126612de3565b5b600061313585828601612e31565b925050602061314685828601612e31565b9150509250929050565b6000806000806080858703121561316a57613169612de3565b5b600061317887828801612e67565b945050602061318987828801612e67565b935050604061319a87828801612e67565b92505060606131ab87828801612e67565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131fe57607f821691505b602082108103613211576132106131b7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325182612e46565b915061325c83612e46565b925082820261326a81612e46565b9150828204841483151761328157613280613217565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c282612e46565b91506132cd83612e46565b9250826132dd576132dc613288565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613344602483612d3c565b915061334f826132e8565b604082019050919050565b6000602082019050818103600083015261337381613337565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133d6602883612d3c565b91506133e18261337a565b604082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b600061341782612e46565b915061342283612e46565b925082820190508082111561343a57613439613217565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613476602083612d3c565b915061348182613440565b602082019050919050565b600060208201905081810360008301526134a581613469565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613508603983612d3c565b9150613513826134ac565b604082019050919050565b60006020820190508181036000830152613537816134fb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061359a602583612d3c565b91506135a58261353e565b604082019050919050565b600060208201905081810360008301526135c98161358d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061362c603583612d3c565b9150613637826135d0565b604082019050919050565b6000602082019050818103600083015261365b8161361f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006136be603483612d3c565b91506136c982613662565b604082019050919050565b600060208201905081810360008301526136ed816136b1565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b600061372a601c83612d3c565b9150613735826136f4565b602082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137bc602683612d3c565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061384e602483612d3c565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138e0602283612d3c565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613972602583612d3c565b915061397d82613916565b604082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a04602383612d3c565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613a70601683612d3c565b9150613a7b82613a3a565b602082019050919050565b60006020820190508181036000830152613a9f81613a63565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613adc601383612d3c565b9150613ae782613aa6565b602082019050919050565b60006020820190508181036000830152613b0b81613acf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613b6e603683612d3c565b9150613b7982613b12565b604082019050919050565b60006020820190508181036000830152613b9d81613b61565b9050919050565b6000613baf82612e46565b9150613bba83612e46565b9250828203905081811115613bd257613bd1613217565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c34602683612d3c565b9150613c3f82613bd8565b604082019050919050565b60006020820190508181036000830152613c6381613c27565b9050919050565b6000606082019050613c7f6000830186612f6c565b613c8c6020830185612f6c565b613c996040830184612f6c565b949350505050565b600081905092915050565b50565b6000613cbc600083613ca1565b9150613cc782613cac565b600082019050919050565b6000613cdd82613caf565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d5481612e1a565b92915050565b600060208284031215613d7057613d6f612de3565b5b6000613d7e84828501613d45565b91505092915050565b6000819050919050565b6000613dac613da7613da284613d87565b612ef2565b612e46565b9050919050565b613dbc81613d91565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613df781612e08565b82525050565b6000613e098383613dee565b60208301905092915050565b6000602082019050919050565b6000613e2d82613dc2565b613e378185613dcd565b9350613e4283613dde565b8060005b83811015613e73578151613e5a8882613dfd565b9750613e6583613e15565b925050600181019050613e46565b5085935050505092915050565b600060a082019050613e956000830188612f6c565b613ea26020830187613db3565b8181036040830152613eb48186613e22565b9050613ec36060830185613016565b613ed06080830184612f6c565b9695505050505050565b600060c082019050613eef6000830189613016565b613efc6020830188612f6c565b613f096040830187613db3565b613f166060830186613db3565b613f236080830185613016565b613f3060a0830184612f6c565b979650505050505050565b600081519050613f4a81612e50565b92915050565b600080600060608486031215613f6957613f68612de3565b5b6000613f7786828701613f3b565b9350506020613f8886828701613f3b565b9250506040613f9986828701613f3b565b915050925092509256fea2646970667358221220635f5337883702001ad525c86efd14e521a2375fd9a36062fcd85ad75bfb14c464736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063c8c8ebe4116100a0578063e2f456051161006f578063e2f4560514610758578063ea9fae8014610783578063f25f4b56146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063c8c8ebe414610688578063d257b34f146106b3578063d85ba063146106f0578063dd62ed3e1461071b57610204565b8063a9059cbb116100dc578063a9059cbb146105ce578063bbc0c7421461060b578063c024666814610636578063c18bc1951461065f57610204565b80638da5cb5b1461051257806395d89b411461053d5780639a7a23d614610568578063a457c2d71461059157610204565b806339509351116101905780636ddd17131161015f5780636ddd17131461045357806370a082311461047e578063715018a6146104bb5780637571336a146104d25780638a8c523c146104fb57610204565b8063395093511461038357806349bd5a5e146103c05780634fbee193146103eb5780636a486a8e1461042857610204565b8063203e727e116101cc578063203e727e146102c757806323b872dd146102f057806327c8f8351461032d578063313ce5671461035857610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61082b565b60405161022b9190612dc1565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612e7c565b6108bd565b6040516102689190612ed7565b60405180910390f35b34801561027d57600080fd5b506102866108db565b6040516102939190612f51565b60405180910390f35b3480156102a857600080fd5b506102b16108ff565b6040516102be9190612f7b565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612f96565b610909565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612fc3565b6109ea565b6040516103249190612ed7565b60405180910390f35b34801561033957600080fd5b50610342610ae2565b60405161034f9190613025565b60405180910390f35b34801561036457600080fd5b5061036d610ae8565b60405161037a919061305c565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190612e7c565b610af1565b6040516103b79190612ed7565b60405180910390f35b3480156103cc57600080fd5b506103d5610b9d565b6040516103e29190613025565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190613077565b610bc1565b60405161041f9190612ed7565b60405180910390f35b34801561043457600080fd5b5061043d610c17565b60405161044a9190612f7b565b60405180910390f35b34801561045f57600080fd5b50610468610c1d565b6040516104759190612ed7565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190613077565b610c30565b6040516104b29190612f7b565b60405180910390f35b3480156104c757600080fd5b506104d0610c78565b005b3480156104de57600080fd5b506104f960048036038101906104f491906130d0565b610d00565b005b34801561050757600080fd5b50610510610dd7565b005b34801561051e57600080fd5b50610527610e8b565b6040516105349190613025565b60405180910390f35b34801561054957600080fd5b50610552610eb5565b60405161055f9190612dc1565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a91906130d0565b610f47565b005b34801561059d57600080fd5b506105b860048036038101906105b39190612e7c565b61105f565b6040516105c59190612ed7565b60405180910390f35b3480156105da57600080fd5b506105f560048036038101906105f09190612e7c565b61114a565b6040516106029190612ed7565b60405180910390f35b34801561061757600080fd5b50610620611168565b60405161062d9190612ed7565b60405180910390f35b34801561064257600080fd5b5061065d600480360381019061065891906130d0565b61117b565b005b34801561066b57600080fd5b5061068660048036038101906106819190612f96565b6112a0565b005b34801561069457600080fd5b5061069d611381565b6040516106aa9190612f7b565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190612f96565b611387565b6040516106e79190612ed7565b60405180910390f35b3480156106fc57600080fd5b506107056114dc565b6040516107129190612f7b565b60405180910390f35b34801561072757600080fd5b50610742600480360381019061073d9190613110565b6114e2565b60405161074f9190612f7b565b60405180910390f35b34801561076457600080fd5b5061076d611569565b60405161077a9190612f7b565b60405180910390f35b34801561078f57600080fd5b506107aa60048036038101906107a59190613150565b61156f565b005b3480156107b857600080fd5b506107c16116ce565b6040516107ce9190613025565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613077565b6116f4565b005b34801561080c57600080fd5b506108156117eb565b6040516108229190612f7b565b60405180910390f35b60606003805461083a906131e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610866906131e6565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108d16108ca6117f1565b84846117f9565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094a6117f1565b73ffffffffffffffffffffffffffffffffffffffff161461096a57600080fd5b670de0b6b3a76400006103e860056109806108ff565b61098a9190613246565b61099491906132b7565b61099e91906132b7565b8110156109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d79061335a565b60405180910390fd5b8060078190555050565b60006109f78484846119c2565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a426117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab9906133ec565b60405180910390fd5b610ad685610ace6117f1565b8584036117f9565b60019150509392505050565b61dead81565b60006012905090565b6000610b93610afe6117f1565b848460016000610b0c6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b8e919061340c565b6117f9565b6001905092915050565b7f000000000000000000000000581ddd59480e25533ddcde8c2b5100e054aa227f81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c806117f1565b73ffffffffffffffffffffffffffffffffffffffff16610c9e610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb9061348c565b60405180910390fd5b610cfe60006123d9565b565b610d086117f1565b73ffffffffffffffffffffffffffffffffffffffff16610d26610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d739061348c565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ddf6117f1565b73ffffffffffffffffffffffffffffffffffffffff16610dfd610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a9061348c565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ec4906131e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef0906131e6565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f6117f1565b73ffffffffffffffffffffffffffffffffffffffff16610f6d610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba9061348c565b60405180910390fd5b7f000000000000000000000000581ddd59480e25533ddcde8c2b5100e054aa227f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611051576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110489061351e565b60405180910390fd5b61105b828261249f565b5050565b6000806001600061106e6117f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561112b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611122906135b0565b60405180910390fd5b61113f6111366117f1565b858584036117f9565b600191505092915050565b600061115e6111576117f1565b84846119c2565b6001905092915050565b600a60009054906101000a900460ff1681565b6111836117f1565b73ffffffffffffffffffffffffffffffffffffffff166111a1610e8b565b73ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee9061348c565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516112949190612ed7565b60405180910390a25050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112e16117f1565b73ffffffffffffffffffffffffffffffffffffffff161461130157600080fd5b670de0b6b3a76400006103e860056113176108ff565b6113219190613246565b61132b91906132b7565b61133591906132b7565b811015611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e9061335a565b60405180910390fd5b8060098190555050565b60075481565b60006113916117f1565b73ffffffffffffffffffffffffffffffffffffffff166113af610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc9061348c565b60405180910390fd5b620186a060016114136108ff565b61141d9190613246565b61142791906132b7565b821015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090613642565b60405180910390fd5b6103e860056114766108ff565b6114809190613246565b61148a91906132b7565b8211156114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c3906136d4565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6115776117f1565b73ffffffffffffffffffffffffffffffffffffffff16611595610e8b565b73ffffffffffffffffffffffffffffffffffffffff16146115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e29061348c565b60405180910390fd5b83600c8190555082600d81905550600d54600c54611609919061340c565b600b8190555081600f8190555080601081905550601054600f5461162d919061340c565b600e81905550600e546013819055506005600b541115611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613740565b60405180910390fd5b6005600e5411156116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90613740565b60405180910390fd5b50505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116fc6117f1565b73ffffffffffffffffffffffffffffffffffffffff1661171a610e8b565b73ffffffffffffffffffffffffffffffffffffffff1614611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117679061348c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d6906137d2565b60405180910390fd5b6117e8816123d9565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90613864565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce906138f6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119b59190612f7b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2890613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613a1a565b60405180910390fd5b60008103611ab957611ab483836000612540565b6123d4565b611ac1610e8b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b2f5750611aff610e8b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b685750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbb5750600560149054906101000a900460ff16155b15611f5957600a60009054906101000a900460ff16611cb557601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c755750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab90613a86565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d585750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dba57600954611d6983610c30565b82611d74919061340c565b1115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90613af2565b60405180910390fd5b611f58565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e5d5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611eac57600754811115611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90613b84565b60405180910390fd5b611f57565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f5657600954611f0983610c30565b82611f14919061340c565b1115611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613af2565b60405180910390fd5b5b5b5b5b6000611f6430610c30565b905060006008548210159050808015611f895750600a60019054906101000a900460ff165b8015611fa25750600560149054906101000a900460ff16155b8015611ff85750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561204e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120a45750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120e8576001600560146101000a81548160ff0219169083151502179055506120cc6127bf565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061219e5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121a857600090505b600081156123bb57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220b57506000600e54115b156122a557612238606461222a600e54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600e546010548261224b9190613246565b61225591906132b7565b60126000828254612266919061340c565b92505081905550600e54600f548261227e9190613246565b61228891906132b7565b60116000828254612299919061340c565b92505081905550612397565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561230057506000600b54115b156123965761232d606461231f600b54886129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600b54600d54826123409190613246565b61234a91906132b7565b6012600082825461235b919061340c565b92505081905550600b54600c54826123739190613246565b61237d91906132b7565b6011600082825461238e919061340c565b925050819055505b5b60008111156123ac576123ab873083612540565b5b80856123b89190613ba4565b94505b6123c6878787612540565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a690613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261590613a1a565b60405180910390fd5b6126298383836129f8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690613c4a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612742919061340c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127a69190612f7b565b60405180910390a36127b98484846129fd565b50505050565b60006127ca30610c30565b905060006011546012546127de919061340c565b90506000808314806127f05750600082145b156127fd575050506129ca565b601460085461280c9190613246565b8311156128255760146008546128229190613246565b92505b6000600283601254866128389190613246565b61284291906132b7565b61284c91906132b7565b905060006128638286612a0290919063ffffffff16565b9050600047905061287382612a18565b60006128888247612a0290919063ffffffff16565b905060006128b3876128a5601154856129cc90919063ffffffff16565b6129e290919063ffffffff16565b9050600081836128c39190613ba4565b9050600060128190555060006011819055506000861180156128e55750600081115b15612932576128f48682612c55565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161292993929190613c6a565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161297890613cd2565b60006040518083038185875af1925050503d80600081146129b5576040519150601f19603f3d011682016040523d82523d6000602084013e6129ba565b606091505b5050809750505050505050505050505b565b600081836129da9190613246565b905092915050565b600081836129f091906132b7565b905092915050565b505050565b505050565b60008183612a109190613ba4565b905092915050565b6000600267ffffffffffffffff811115612a3557612a34613ce7565b5b604051908082528060200260200182016040528015612a635781602001602082028036833780820191505090505b5090503081600081518110612a7b57612a7a613d16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b449190613d5a565b81600181518110612b5857612b57613d16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bbd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117f9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c1f959493929190613e80565b600060405180830381600087803b158015612c3957600080fd5b505af1158015612c4d573d6000803e3d6000fd5b505050505050565b612c80307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117f9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ce796959493929190613eda565b60606040518083038185885af1158015612d05573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d2a9190613f50565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6b578082015181840152602081019050612d50565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d9382612d31565b612d9d8185612d3c565b9350612dad818560208601612d4d565b612db681612d77565b840191505092915050565b60006020820190508181036000830152612ddb8184612d88565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e1382612de8565b9050919050565b612e2381612e08565b8114612e2e57600080fd5b50565b600081359050612e4081612e1a565b92915050565b6000819050919050565b612e5981612e46565b8114612e6457600080fd5b50565b600081359050612e7681612e50565b92915050565b60008060408385031215612e9357612e92612de3565b5b6000612ea185828601612e31565b9250506020612eb285828601612e67565b9150509250929050565b60008115159050919050565b612ed181612ebc565b82525050565b6000602082019050612eec6000830184612ec8565b92915050565b6000819050919050565b6000612f17612f12612f0d84612de8565b612ef2565b612de8565b9050919050565b6000612f2982612efc565b9050919050565b6000612f3b82612f1e565b9050919050565b612f4b81612f30565b82525050565b6000602082019050612f666000830184612f42565b92915050565b612f7581612e46565b82525050565b6000602082019050612f906000830184612f6c565b92915050565b600060208284031215612fac57612fab612de3565b5b6000612fba84828501612e67565b91505092915050565b600080600060608486031215612fdc57612fdb612de3565b5b6000612fea86828701612e31565b9350506020612ffb86828701612e31565b925050604061300c86828701612e67565b9150509250925092565b61301f81612e08565b82525050565b600060208201905061303a6000830184613016565b92915050565b600060ff82169050919050565b61305681613040565b82525050565b6000602082019050613071600083018461304d565b92915050565b60006020828403121561308d5761308c612de3565b5b600061309b84828501612e31565b91505092915050565b6130ad81612ebc565b81146130b857600080fd5b50565b6000813590506130ca816130a4565b92915050565b600080604083850312156130e7576130e6612de3565b5b60006130f585828601612e31565b9250506020613106858286016130bb565b9150509250929050565b6000806040838503121561312757613126612de3565b5b600061313585828601612e31565b925050602061314685828601612e31565b9150509250929050565b6000806000806080858703121561316a57613169612de3565b5b600061317887828801612e67565b945050602061318987828801612e67565b935050604061319a87828801612e67565b92505060606131ab87828801612e67565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131fe57607f821691505b602082108103613211576132106131b7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325182612e46565b915061325c83612e46565b925082820261326a81612e46565b9150828204841483151761328157613280613217565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c282612e46565b91506132cd83612e46565b9250826132dd576132dc613288565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613344602483612d3c565b915061334f826132e8565b604082019050919050565b6000602082019050818103600083015261337381613337565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133d6602883612d3c565b91506133e18261337a565b604082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b600061341782612e46565b915061342283612e46565b925082820190508082111561343a57613439613217565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613476602083612d3c565b915061348182613440565b602082019050919050565b600060208201905081810360008301526134a581613469565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613508603983612d3c565b9150613513826134ac565b604082019050919050565b60006020820190508181036000830152613537816134fb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061359a602583612d3c565b91506135a58261353e565b604082019050919050565b600060208201905081810360008301526135c98161358d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061362c603583612d3c565b9150613637826135d0565b604082019050919050565b6000602082019050818103600083015261365b8161361f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006136be603483612d3c565b91506136c982613662565b604082019050919050565b600060208201905081810360008301526136ed816136b1565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b600061372a601c83612d3c565b9150613735826136f4565b602082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137bc602683612d3c565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061384e602483612d3c565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138e0602283612d3c565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613972602583612d3c565b915061397d82613916565b604082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a04602383612d3c565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613a70601683612d3c565b9150613a7b82613a3a565b602082019050919050565b60006020820190508181036000830152613a9f81613a63565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613adc601383612d3c565b9150613ae782613aa6565b602082019050919050565b60006020820190508181036000830152613b0b81613acf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613b6e603683612d3c565b9150613b7982613b12565b604082019050919050565b60006020820190508181036000830152613b9d81613b61565b9050919050565b6000613baf82612e46565b9150613bba83612e46565b9250828203905081811115613bd257613bd1613217565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c34602683612d3c565b9150613c3f82613bd8565b604082019050919050565b60006020820190508181036000830152613c6381613c27565b9050919050565b6000606082019050613c7f6000830186612f6c565b613c8c6020830185612f6c565b613c996040830184612f6c565b949350505050565b600081905092915050565b50565b6000613cbc600083613ca1565b9150613cc782613cac565b600082019050919050565b6000613cdd82613caf565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d5481612e1a565b92915050565b600060208284031215613d7057613d6f612de3565b5b6000613d7e84828501613d45565b91505092915050565b6000819050919050565b6000613dac613da7613da284613d87565b612ef2565b612e46565b9050919050565b613dbc81613d91565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613df781612e08565b82525050565b6000613e098383613dee565b60208301905092915050565b6000602082019050919050565b6000613e2d82613dc2565b613e378185613dcd565b9350613e4283613dde565b8060005b83811015613e73578151613e5a8882613dfd565b9750613e6583613e15565b925050600181019050613e46565b5085935050505092915050565b600060a082019050613e956000830188612f6c565b613ea26020830187613db3565b8181036040830152613eb48186613e22565b9050613ec36060830185613016565b613ed06080830184612f6c565b9695505050505050565b600060c082019050613eef6000830189613016565b613efc6020830188612f6c565b613f096040830187613db3565b613f166060830186613db3565b613f236080830185613016565b613f3060a0830184612f6c565b979650505050505050565b600081519050613f4a81612e50565b92915050565b600080600060608486031215613f6957613f68612de3565b5b6000613f7786828701613f3b565b9350506020613f8886828701613f3b565b9250506040613f9986828701613f3b565b915050925092509256fea2646970667358221220635f5337883702001ad525c86efd14e521a2375fd9a36062fcd85ad75bfb14c464736f6c63430008110033

Deployed Bytecode Sourcemap

14114:11994:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2648:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3562:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14190:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2969:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18329:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3739:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14293:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2868:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4239:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14248:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20123:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14725:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14573:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3085:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;773:112;;;;;;;;;;;;;:::i;:::-;;18618:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17418:112;;;;;;;;;;;;;:::i;:::-;;550:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2756:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19615:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4462:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3220:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14533:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19425:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18045:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14418:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17538:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14613:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3403:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14460:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18793:612;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14385:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;893:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14500:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2648:100;2702:13;2735:5;2728:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2648:100;:::o;3562:169::-;3645:4;3662:39;3671:12;:10;:12::i;:::-;3685:7;3694:6;3662:8;:39::i;:::-;3719:4;3712:11;;3562:169;;;;:::o;14190:51::-;;;:::o;2969:108::-;3030:7;3057:12;;3050:19;;2969:108;:::o;18329:277::-;18425:9;;;;;;;;;;;18409:25;;:12;:10;:12::i;:::-;:25;;;18401:34;;;;;;18504:4;18496;18491:1;18475:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18474:26;;;;:::i;:::-;18473:35;;;;:::i;:::-;18454:15;:54;;18446:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;18582:15;18559:20;:38;;;;18329:277;:::o;3739:492::-;3879:4;3896:36;3906:6;3914:9;3925:6;3896:9;:36::i;:::-;3945:24;3972:11;:19;3984:6;3972:19;;;;;;;;;;;;;;;:33;3992:12;:10;:12::i;:::-;3972:33;;;;;;;;;;;;;;;;3945:60;;4044:6;4024:16;:26;;4016:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4131:57;4140:6;4148:12;:10;:12::i;:::-;4181:6;4162:16;:25;4131:8;:57::i;:::-;4219:4;4212:11;;;3739:492;;;;;:::o;14293:53::-;14339:6;14293:53;:::o;2868:93::-;2926:5;2951:2;2944:9;;2868:93;:::o;4239:215::-;4327:4;4344:80;4353:12;:10;:12::i;:::-;4367:7;4413:10;4376:11;:25;4388:12;:10;:12::i;:::-;4376:25;;;;;;;;;;;;;;;:34;4402:7;4376:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4344:8;:80::i;:::-;4442:4;4435:11;;4239:215;;;;:::o;14248:38::-;;;:::o;20123:126::-;20189:4;20213:19;:28;20233:7;20213:28;;;;;;;;;;;;;;;;;;;;;;;;;20206:35;;20123:126;;;:::o;14725:28::-;;;;:::o;14573:31::-;;;;;;;;;;;;;:::o;3085:127::-;3159:7;3186:9;:18;3196:7;3186:18;;;;;;;;;;;;;;;;3179:25;;3085:127;;;:::o;773:112::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;847:30:::1;874:1;847:18;:30::i;:::-;773:112::o:0;18618:167::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18773:4:::1;18731:31;:39;18763:6;18731:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18618:167:::0;;:::o;17418:112::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:4:::1;17473:13;;:20;;;;;;;;;;;;;;;;;;17518:4;17504:11;;:18;;;;;;;;;;;;;;;;;;17418:112::o:0;550:87::-;596:7;623:6;;;;;;;;;;;616:13;;550:87;:::o;2756:104::-;2812:13;2845:7;2838:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2756:104;:::o;19615:304::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19759:13:::1;19751:21;;:4;:21;;::::0;19729:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19870:41;19899:4;19905:5;19870:28;:41::i;:::-;19615:304:::0;;:::o;4462:413::-;4555:4;4572:24;4599:11;:25;4611:12;:10;:12::i;:::-;4599:25;;;;;;;;;;;;;;;:34;4625:7;4599:34;;;;;;;;;;;;;;;;4572:61;;4672:15;4652:16;:35;;4644:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4765:67;4774:12;:10;:12::i;:::-;4788:7;4816:15;4797:16;:34;4765:8;:67::i;:::-;4863:4;4856:11;;;4462:413;;;;:::o;3220:175::-;3306:4;3323:42;3333:12;:10;:12::i;:::-;3347:9;3358:6;3323:9;:42::i;:::-;3383:4;3376:11;;3220:175;;;;:::o;14533:33::-;;;;;;;;;;;;;:::o;19425:182::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19541:8:::1;19510:19;:28;19530:7;19510:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19581:7;19565:34;;;19590:8;19565:34;;;;;;:::i;:::-;;;;;;;;19425:182:::0;;:::o;18045:270::-;18145:9;;;;;;;;;;;18129:25;;:12;:10;:12::i;:::-;:25;;;18121:34;;;;;;18224:4;18216;18211:1;18195:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18194:26;;;;:::i;:::-;18193:35;;;;:::i;:::-;18174:15;:54;;18166:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;18291:15;18279:9;:27;;;;18045:270;:::o;14418:35::-;;;;:::o;17538:497::-;17646:4;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17725:6:::1;17720:1;17704:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17703:28;;;;:::i;:::-;17690:9;:41;;17668:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17880:4;17875:1;17859:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17858:26;;;;:::i;:::-;17845:9;:39;;17823:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17996:9;17975:18;:30;;;;18023:4;18016:11;;17538:497:::0;;;:::o;14613:27::-;;;;:::o;3403:151::-;3492:7;3519:11;:18;3531:5;3519:18;;;;;;;;;;;;;;;:27;3538:7;3519:27;;;;;;;;;;;;;;;;3512:34;;3403:151;;;;:::o;14460:33::-;;;;:::o;18793:612::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18954:12:::1;18936:15;:30;;;;18995:12;18977:15;:30;;;;19051:15;;19033;;:33;;;;:::i;:::-;19018:12;:48;;;;19098:13;19079:16;:32;;;;19141:13;19122:16;:32;;;;19200:16;;19181;;:35;;;;:::i;:::-;19165:13;:51;;;;19241:13;;19227:11;:27;;;;19291:1;19275:12;;:17;;19267:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19361:1;19344:13;;:18;;19336:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18793:612:::0;;;;:::o;14385:24::-;;;;;;;;;;;;;:::o;893:201::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1002:1:::1;982:22;;:8;:22;;::::0;974:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1058:28;1077:8;1058:18;:28::i;:::-;893:201:::0;:::o;14500:24::-;;;;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;6031:380::-;6184:1;6167:19;;:5;:19;;;6159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6265:1;6246:21;;:7;:21;;;6238:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6349:6;6319:11;:18;6331:5;6319:18;;;;;;;;;;;;;;;:27;6338:7;6319:27;;;;;;;;;;;;;;;:36;;;;6387:7;6371:32;;6380:5;6371:32;;;6396:6;6371:32;;;;;;:::i;:::-;;;;;;;;6031:380;;;:::o;20257:3497::-;20405:1;20389:18;;:4;:18;;;20381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20482:1;20468:16;;:2;:16;;;20460:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:1;20541:6;:11;20537:93;;20569:28;20585:4;20591:2;20595:1;20569:15;:28::i;:::-;20612:7;;20537:93;20680:7;:5;:7::i;:::-;20672:15;;:4;:15;;;;:49;;;;;20714:7;:5;:7::i;:::-;20708:13;;:2;:13;;;;20672:49;:86;;;;;20756:1;20742:16;;:2;:16;;;;20672:86;:128;;;;;20793:6;20779:21;;:2;:21;;;;20672:128;:158;;;;;20822:8;;;;;;;;;;;20821:9;20672:158;20650:1514;;;20870:13;;;;;;;;;;;20865:223;;20942:19;:25;20962:4;20942:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20971:19;:23;20991:2;20971:23;;;;;;;;;;;;;;;;;;;;;;;;;20942:52;20908:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;20865:223;21162:25;:31;21188:4;21162:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21219:31;:35;21251:2;21219:35;;;;;;;;;;;;;;;;;;;;;;;;;21218:36;21162:92;21136:1013;;;21379:9;;21362:13;21372:2;21362:9;:13::i;:::-;21353:6;:22;;;;:::i;:::-;:35;;21319:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21136:1013;;;21557:25;:29;21583:2;21557:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21612:31;:37;21644:4;21612:37;;;;;;;;;;;;;;;;;;;;;;;;;21611:38;21557:92;21531:618;;;21736:20;;21726:6;:30;;21692:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21531:618;;;21929:31;:35;21961:2;21929:35;;;;;;;;;;;;;;;;;;;;;;;;;21924:225;;22049:9;;22032:13;22042:2;22032:9;:13::i;:::-;22023:6;:22;;;;:::i;:::-;:35;;21989:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21924:225;21531:618;21136:1013;20650:1514;22176:28;22207:24;22225:4;22207:9;:24::i;:::-;22176:55;;22244:12;22283:18;;22259:20;:42;;22244:57;;22332:7;:35;;;;;22356:11;;;;;;;;;;;22332:35;:61;;;;;22385:8;;;;;;;;;;;22384:9;22332:61;:110;;;;;22411:25;:31;22437:4;22411:31;;;;;;;;;;;;;;;;;;;;;;;;;22410:32;22332:110;:153;;;;;22460:19;:25;22480:4;22460:25;;;;;;;;;;;;;;;;;;;;;;;;;22459:26;22332:153;:194;;;;;22503:19;:23;22523:2;22503:23;;;;;;;;;;;;;;;;;;;;;;;;;22502:24;22332:194;22314:326;;;22564:4;22553:8;;:15;;;;;;;;;;;;;;;;;;22585:10;:8;:10::i;:::-;22623:5;22612:8;;:16;;;;;;;;;;;;;;;;;;22314:326;22652:12;22668:8;;;;;;;;;;;22667:9;22652:24;;22693:19;:25;22713:4;22693:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22722:19;:23;22742:2;22722:23;;;;;;;;;;;;;;;;;;;;;;;;;22693:52;22689:100;;;22772:5;22762:15;;22689:100;22801:12;22834:7;22830:831;;;22886:25;:29;22912:2;22886:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22935:1;22919:13;;:17;22886:50;22882:630;;;22964:34;22994:3;22964:25;22975:13;;22964:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;22957:41;;23067:13;;23047:16;;23040:4;:23;;;;:::i;:::-;23039:41;;;;:::i;:::-;23017:18;;:63;;;;;;;:::i;:::-;;;;;;;;23149:13;;23129:16;;23122:4;:23;;;;:::i;:::-;23121:41;;;;:::i;:::-;23099:18;;:63;;;;;;;:::i;:::-;;;;;;;;22882:630;;;23224:25;:31;23250:4;23224:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23274:1;23259:12;;:16;23224:51;23220:292;;;23303:33;23332:3;23303:24;23314:12;;23303:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23296:40;;23404:12;;23385:15;;23378:4;:22;;;;:::i;:::-;23377:39;;;;:::i;:::-;23355:18;;:61;;;;;;;:::i;:::-;;;;;;;;23484:12;;23465:15;;23458:4;:22;;;;:::i;:::-;23457:39;;;;:::i;:::-;23435:18;;:61;;;;;;;:::i;:::-;;;;;;;;23220:292;22882:630;23539:1;23532:4;:8;23528:91;;;23561:42;23577:4;23591;23598;23561:15;:42::i;:::-;23528:91;23645:4;23635:14;;;;;:::i;:::-;;;22830:831;23673:33;23689:4;23695:2;23699:6;23673:15;:33::i;:::-;23733:11;;23717:13;:27;;;;20370:3384;;;;20257:3497;;;;:::o;1102:191::-;1176:16;1195:6;;;;;;;;;;;1176:25;;1221:8;1212:6;;:17;;;;;;;;;;;;;;;;;;1276:8;1245:40;;1266:8;1245:40;;;;;;;;;;;;1165:128;1102:191;:::o;19927:188::-;20044:5;20010:25;:31;20036:4;20010:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20101:5;20067:40;;20095:4;20067:40;;;;;;;;;;;;19927:188;;:::o;4883:733::-;5041:1;5023:20;;:6;:20;;;5015:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5125:1;5104:23;;:9;:23;;;5096:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5180:47;5201:6;5209:9;5220:6;5180:20;:47::i;:::-;5240:21;5264:9;:17;5274:6;5264:17;;;;;;;;;;;;;;;;5240:41;;5317:6;5300:13;:23;;5292:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5438:6;5422:13;:22;5402:9;:17;5412:6;5402:17;;;;;;;;;;;;;;;:42;;;;5490:6;5466:9;:20;5476:9;5466:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5531:9;5514:35;;5523:6;5514:35;;;5542:6;5514:35;;;;;;:::i;:::-;;;;;;;;5562:46;5582:6;5590:9;5601:6;5562:19;:46::i;:::-;5004:612;4883:733;;;:::o;24649:1456::-;24688:23;24714:24;24732:4;24714:9;:24::i;:::-;24688:50;;24749:25;24811:18;;24777;;:52;;;;:::i;:::-;24749:80;;24840:12;24888:1;24869:15;:20;:46;;;;24914:1;24893:17;:22;24869:46;24865:85;;;24932:7;;;;;24865:85;25005:2;24984:18;;:23;;;;:::i;:::-;24966:15;:41;24962:115;;;25063:2;25042:18;;:23;;;;:::i;:::-;25024:41;;24962:115;25089:23;25202:1;25169:17;25134:18;;25116:15;:36;;;;:::i;:::-;25115:71;;;;:::i;:::-;:88;;;;:::i;:::-;25089:114;;25214:26;25243:36;25263:15;25243;:19;;:36;;;;:::i;:::-;25214:65;;25292:25;25320:21;25292:49;;25354:36;25371:18;25354:16;:36::i;:::-;25403:18;25424:44;25450:17;25424:21;:25;;:44;;;;:::i;:::-;25403:65;;25481:23;25507:81;25560:17;25507:34;25522:18;;25507:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;25481:107;;25601:23;25640:15;25627:10;:28;;;;:::i;:::-;25601:54;;25689:1;25668:18;:22;;;;25722:1;25701:18;:22;;;;25758:1;25740:15;:19;:42;;;;;25781:1;25763:15;:19;25740:42;25736:278;;;25799:46;25812:15;25829;25799:12;:46::i;:::-;25865:137;25898:18;25935:15;25969:18;;25865:137;;;;;;;;:::i;:::-;;;;;;;;25736:278;26048:9;;;;;;;;;;;26040:23;;26071:21;26040:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26026:71;;;;;24677:1428;;;;;;;;;24649:1456;:::o;8037:98::-;8095:7;8126:1;8122;:5;;;;:::i;:::-;8115:12;;8037:98;;;;:::o;8143:::-;8201:7;8232:1;8228;:5;;;;:::i;:::-;8221:12;;8143:98;;;;:::o;6419:125::-;;;;:::o;6552:124::-;;;;:::o;7931:98::-;7989:7;8020:1;8016;:5;;;;:::i;:::-;8009:12;;7931:98;;;;:::o;23762:503::-;23830:21;23868:1;23854:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23830:40;;23899:4;23881;23886:1;23881:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23925:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23915:4;23920:1;23915:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23960:62;23977:4;23992:15;24010:11;23960:8;:62::i;:::-;24061:15;:66;;;24142:11;24168:1;24184:4;24211;24231:15;24061:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23817:448;23762:503;:::o;24273:368::-;24356:62;24373:4;24388:15;24406:11;24356:8;:62::i;:::-;24431:15;:31;;;24470:9;24503:4;24523:11;24549:1;24565;14339:6;24607:15;24431:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24273:368;;:::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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:329::-;4835:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5010:1;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4981:117;4776:329;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:329::-;6577:6;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6752:1;6777:53;6822:7;6813:6;6802:9;6798:22;6777:53;:::i;:::-;6767:63;;6723:117;6518:329;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:474::-;7656:6;7664;7713:2;7701:9;7692:7;7688:23;7684:32;7681:119;;;7719:79;;:::i;:::-;7681:119;7839:1;7864:53;7909:7;7900:6;7889:9;7885:22;7864:53;:::i;:::-;7854:63;;7810:117;7966:2;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7937:118;7588:474;;;;;:::o;8068:765::-;8154:6;8162;8170;8178;8227:3;8215:9;8206:7;8202:23;8198:33;8195:120;;;8234:79;;:::i;:::-;8195:120;8354:1;8379:53;8424:7;8415:6;8404:9;8400:22;8379:53;:::i;:::-;8369:63;;8325:117;8481:2;8507:53;8552:7;8543:6;8532:9;8528:22;8507:53;:::i;:::-;8497:63;;8452:118;8609:2;8635:53;8680:7;8671:6;8660:9;8656:22;8635:53;:::i;:::-;8625:63;;8580:118;8737:2;8763:53;8808:7;8799:6;8788:9;8784:22;8763:53;:::i;:::-;8753:63;;8708:118;8068:765;;;;;;;:::o;8839:180::-;8887:77;8884:1;8877:88;8984:4;8981:1;8974:15;9008:4;9005:1;8998:15;9025:320;9069:6;9106:1;9100:4;9096:12;9086:22;;9153:1;9147:4;9143:12;9174:18;9164:81;;9230:4;9222:6;9218:17;9208:27;;9164:81;9292:2;9284:6;9281:14;9261:18;9258:38;9255:84;;9311:18;;:::i;:::-;9255:84;9076:269;9025:320;;;:::o;9351:180::-;9399:77;9396:1;9389:88;9496:4;9493:1;9486:15;9520:4;9517:1;9510:15;9537:410;9577:7;9600:20;9618:1;9600:20;:::i;:::-;9595:25;;9634:20;9652:1;9634:20;:::i;:::-;9629:25;;9689:1;9686;9682:9;9711:30;9729:11;9711:30;:::i;:::-;9700:41;;9890:1;9881:7;9877:15;9874:1;9871:22;9851:1;9844:9;9824:83;9801:139;;9920:18;;:::i;:::-;9801:139;9585:362;9537:410;;;;:::o;9953:180::-;10001:77;9998:1;9991:88;10098:4;10095:1;10088:15;10122:4;10119:1;10112:15;10139:185;10179:1;10196:20;10214:1;10196:20;:::i;:::-;10191:25;;10230:20;10248:1;10230:20;:::i;:::-;10225:25;;10269:1;10259:35;;10274:18;;:::i;:::-;10259:35;10316:1;10313;10309:9;10304:14;;10139:185;;;;:::o;10330:223::-;10470:34;10466:1;10458:6;10454:14;10447:58;10539:6;10534:2;10526:6;10522:15;10515:31;10330:223;:::o;10559:366::-;10701:3;10722:67;10786:2;10781:3;10722:67;:::i;:::-;10715:74;;10798:93;10887:3;10798:93;:::i;:::-;10916:2;10911:3;10907:12;10900:19;;10559:366;;;:::o;10931:419::-;11097:4;11135:2;11124:9;11120:18;11112:26;;11184:9;11178:4;11174:20;11170:1;11159:9;11155:17;11148:47;11212:131;11338:4;11212:131;:::i;:::-;11204:139;;10931:419;;;:::o;11356:227::-;11496:34;11492:1;11484:6;11480:14;11473:58;11565:10;11560:2;11552:6;11548:15;11541:35;11356:227;:::o;11589:366::-;11731:3;11752:67;11816:2;11811:3;11752:67;:::i;:::-;11745:74;;11828:93;11917:3;11828:93;:::i;:::-;11946:2;11941:3;11937:12;11930:19;;11589:366;;;:::o;11961:419::-;12127:4;12165:2;12154:9;12150:18;12142:26;;12214:9;12208:4;12204:20;12200:1;12189:9;12185:17;12178:47;12242:131;12368:4;12242:131;:::i;:::-;12234:139;;11961:419;;;:::o;12386:191::-;12426:3;12445:20;12463:1;12445:20;:::i;:::-;12440:25;;12479:20;12497:1;12479:20;:::i;:::-;12474:25;;12522:1;12519;12515:9;12508:16;;12543:3;12540:1;12537:10;12534:36;;;12550:18;;:::i;:::-;12534:36;12386:191;;;;:::o;12583:182::-;12723:34;12719:1;12711:6;12707:14;12700:58;12583:182;:::o;12771:366::-;12913:3;12934:67;12998:2;12993:3;12934:67;:::i;:::-;12927:74;;13010:93;13099:3;13010:93;:::i;:::-;13128:2;13123:3;13119:12;13112:19;;12771:366;;;:::o;13143:419::-;13309:4;13347:2;13336:9;13332:18;13324:26;;13396:9;13390:4;13386:20;13382:1;13371:9;13367:17;13360:47;13424:131;13550:4;13424:131;:::i;:::-;13416:139;;13143:419;;;:::o;13568:244::-;13708:34;13704:1;13696:6;13692:14;13685:58;13777:27;13772:2;13764:6;13760:15;13753:52;13568:244;:::o;13818:366::-;13960:3;13981:67;14045:2;14040:3;13981:67;:::i;:::-;13974:74;;14057:93;14146:3;14057:93;:::i;:::-;14175:2;14170:3;14166:12;14159:19;;13818:366;;;:::o;14190:419::-;14356:4;14394:2;14383:9;14379:18;14371:26;;14443:9;14437:4;14433:20;14429:1;14418:9;14414:17;14407:47;14471:131;14597:4;14471:131;:::i;:::-;14463:139;;14190:419;;;:::o;14615:224::-;14755:34;14751:1;14743:6;14739:14;14732:58;14824:7;14819:2;14811:6;14807:15;14800:32;14615:224;:::o;14845:366::-;14987:3;15008:67;15072:2;15067:3;15008:67;:::i;:::-;15001:74;;15084:93;15173:3;15084:93;:::i;:::-;15202:2;15197:3;15193:12;15186:19;;14845:366;;;:::o;15217:419::-;15383:4;15421:2;15410:9;15406:18;15398:26;;15470:9;15464:4;15460:20;15456:1;15445:9;15441:17;15434:47;15498:131;15624:4;15498:131;:::i;:::-;15490:139;;15217:419;;;:::o;15642:240::-;15782:34;15778:1;15770:6;15766:14;15759:58;15851:23;15846:2;15838:6;15834:15;15827:48;15642:240;:::o;15888:366::-;16030:3;16051:67;16115:2;16110:3;16051:67;:::i;:::-;16044:74;;16127:93;16216:3;16127:93;:::i;:::-;16245:2;16240:3;16236:12;16229:19;;15888:366;;;:::o;16260:419::-;16426:4;16464:2;16453:9;16449:18;16441:26;;16513:9;16507:4;16503:20;16499:1;16488:9;16484:17;16477:47;16541:131;16667:4;16541:131;:::i;:::-;16533:139;;16260:419;;;:::o;16685:239::-;16825:34;16821:1;16813:6;16809:14;16802:58;16894:22;16889:2;16881:6;16877:15;16870:47;16685:239;:::o;16930:366::-;17072:3;17093:67;17157:2;17152:3;17093:67;:::i;:::-;17086:74;;17169:93;17258:3;17169:93;:::i;:::-;17287:2;17282:3;17278:12;17271:19;;16930:366;;;:::o;17302:419::-;17468:4;17506:2;17495:9;17491:18;17483:26;;17555:9;17549:4;17545:20;17541:1;17530:9;17526:17;17519:47;17583:131;17709:4;17583:131;:::i;:::-;17575:139;;17302:419;;;:::o;17727:178::-;17867:30;17863:1;17855:6;17851:14;17844:54;17727:178;:::o;17911:366::-;18053:3;18074:67;18138:2;18133:3;18074:67;:::i;:::-;18067:74;;18150:93;18239:3;18150:93;:::i;:::-;18268:2;18263:3;18259:12;18252:19;;17911:366;;;:::o;18283:419::-;18449:4;18487:2;18476:9;18472:18;18464:26;;18536:9;18530:4;18526:20;18522:1;18511:9;18507:17;18500:47;18564:131;18690:4;18564:131;:::i;:::-;18556:139;;18283:419;;;:::o;18708:225::-;18848:34;18844:1;18836:6;18832:14;18825:58;18917:8;18912:2;18904:6;18900:15;18893:33;18708:225;:::o;18939:366::-;19081:3;19102:67;19166:2;19161:3;19102:67;:::i;:::-;19095:74;;19178:93;19267:3;19178:93;:::i;:::-;19296:2;19291:3;19287:12;19280:19;;18939:366;;;:::o;19311:419::-;19477:4;19515:2;19504:9;19500:18;19492:26;;19564:9;19558:4;19554:20;19550:1;19539:9;19535:17;19528:47;19592:131;19718:4;19592:131;:::i;:::-;19584:139;;19311:419;;;:::o;19736:223::-;19876:34;19872:1;19864:6;19860:14;19853:58;19945:6;19940:2;19932:6;19928:15;19921:31;19736:223;:::o;19965:366::-;20107:3;20128:67;20192:2;20187:3;20128:67;:::i;:::-;20121:74;;20204:93;20293:3;20204:93;:::i;:::-;20322:2;20317:3;20313:12;20306:19;;19965:366;;;:::o;20337:419::-;20503:4;20541:2;20530:9;20526:18;20518:26;;20590:9;20584:4;20580:20;20576:1;20565:9;20561:17;20554:47;20618:131;20744:4;20618:131;:::i;:::-;20610:139;;20337:419;;;:::o;20762:221::-;20902:34;20898:1;20890:6;20886:14;20879:58;20971:4;20966:2;20958:6;20954:15;20947:29;20762:221;:::o;20989:366::-;21131:3;21152:67;21216:2;21211:3;21152:67;:::i;:::-;21145:74;;21228:93;21317:3;21228:93;:::i;:::-;21346:2;21341:3;21337:12;21330:19;;20989:366;;;:::o;21361:419::-;21527:4;21565:2;21554:9;21550:18;21542:26;;21614:9;21608:4;21604:20;21600:1;21589:9;21585:17;21578:47;21642:131;21768:4;21642:131;:::i;:::-;21634:139;;21361:419;;;:::o;21786:224::-;21926:34;21922:1;21914:6;21910:14;21903:58;21995:7;21990:2;21982:6;21978:15;21971:32;21786:224;:::o;22016:366::-;22158:3;22179:67;22243:2;22238:3;22179:67;:::i;:::-;22172:74;;22255:93;22344:3;22255:93;:::i;:::-;22373:2;22368:3;22364:12;22357:19;;22016:366;;;:::o;22388:419::-;22554:4;22592:2;22581:9;22577:18;22569:26;;22641:9;22635:4;22631:20;22627:1;22616:9;22612:17;22605:47;22669:131;22795:4;22669:131;:::i;:::-;22661:139;;22388:419;;;:::o;22813:222::-;22953:34;22949:1;22941:6;22937:14;22930:58;23022:5;23017:2;23009:6;23005:15;22998:30;22813:222;:::o;23041:366::-;23183:3;23204:67;23268:2;23263:3;23204:67;:::i;:::-;23197:74;;23280:93;23369:3;23280:93;:::i;:::-;23398:2;23393:3;23389:12;23382:19;;23041:366;;;:::o;23413:419::-;23579:4;23617:2;23606:9;23602:18;23594:26;;23666:9;23660:4;23656:20;23652:1;23641:9;23637:17;23630:47;23694:131;23820:4;23694:131;:::i;:::-;23686:139;;23413:419;;;:::o;23838:172::-;23978:24;23974:1;23966:6;23962:14;23955:48;23838:172;:::o;24016:366::-;24158:3;24179:67;24243:2;24238:3;24179:67;:::i;:::-;24172:74;;24255:93;24344:3;24255:93;:::i;:::-;24373:2;24368:3;24364:12;24357:19;;24016:366;;;:::o;24388:419::-;24554:4;24592:2;24581:9;24577:18;24569:26;;24641:9;24635:4;24631:20;24627:1;24616:9;24612:17;24605:47;24669:131;24795:4;24669:131;:::i;:::-;24661:139;;24388:419;;;:::o;24813:169::-;24953:21;24949:1;24941:6;24937:14;24930:45;24813:169;:::o;24988:366::-;25130:3;25151:67;25215:2;25210:3;25151:67;:::i;:::-;25144:74;;25227:93;25316:3;25227:93;:::i;:::-;25345:2;25340:3;25336:12;25329:19;;24988:366;;;:::o;25360:419::-;25526:4;25564:2;25553:9;25549:18;25541:26;;25613:9;25607:4;25603:20;25599:1;25588:9;25584:17;25577:47;25641:131;25767:4;25641:131;:::i;:::-;25633:139;;25360:419;;;:::o;25785:241::-;25925:34;25921:1;25913:6;25909:14;25902:58;25994:24;25989:2;25981:6;25977:15;25970:49;25785:241;:::o;26032:366::-;26174:3;26195:67;26259:2;26254:3;26195:67;:::i;:::-;26188:74;;26271:93;26360:3;26271:93;:::i;:::-;26389:2;26384:3;26380:12;26373:19;;26032:366;;;:::o;26404:419::-;26570:4;26608:2;26597:9;26593:18;26585:26;;26657:9;26651:4;26647:20;26643:1;26632:9;26628:17;26621:47;26685:131;26811:4;26685:131;:::i;:::-;26677:139;;26404:419;;;:::o;26829:194::-;26869:4;26889:20;26907:1;26889:20;:::i;:::-;26884:25;;26923:20;26941:1;26923:20;:::i;:::-;26918:25;;26967:1;26964;26960:9;26952:17;;26991:1;26985:4;26982:11;26979:37;;;26996:18;;:::i;:::-;26979:37;26829:194;;;;:::o;27029:225::-;27169:34;27165:1;27157:6;27153:14;27146:58;27238:8;27233:2;27225:6;27221:15;27214:33;27029:225;:::o;27260:366::-;27402:3;27423:67;27487:2;27482:3;27423:67;:::i;:::-;27416:74;;27499:93;27588:3;27499:93;:::i;:::-;27617:2;27612:3;27608:12;27601:19;;27260:366;;;:::o;27632:419::-;27798:4;27836:2;27825:9;27821:18;27813:26;;27885:9;27879:4;27875:20;27871:1;27860:9;27856:17;27849:47;27913:131;28039:4;27913:131;:::i;:::-;27905:139;;27632:419;;;:::o;28057:442::-;28206:4;28244:2;28233:9;28229:18;28221:26;;28257:71;28325:1;28314:9;28310:17;28301:6;28257:71;:::i;:::-;28338:72;28406:2;28395:9;28391:18;28382:6;28338:72;:::i;:::-;28420;28488:2;28477:9;28473:18;28464:6;28420:72;:::i;:::-;28057:442;;;;;;:::o;28505:147::-;28606:11;28643:3;28628:18;;28505:147;;;;:::o;28658:114::-;;:::o;28778:398::-;28937:3;28958:83;29039:1;29034:3;28958:83;:::i;:::-;28951:90;;29050:93;29139:3;29050:93;:::i;:::-;29168:1;29163:3;29159:11;29152:18;;28778:398;;;:::o;29182:379::-;29366:3;29388:147;29531:3;29388:147;:::i;:::-;29381:154;;29552:3;29545:10;;29182:379;;;:::o;29567:180::-;29615:77;29612:1;29605:88;29712:4;29709:1;29702:15;29736:4;29733:1;29726:15;29753:180;29801:77;29798:1;29791:88;29898:4;29895:1;29888:15;29922:4;29919:1;29912:15;29939:143;29996:5;30027:6;30021:13;30012:22;;30043:33;30070:5;30043:33;:::i;:::-;29939:143;;;;:::o;30088:351::-;30158:6;30207:2;30195:9;30186:7;30182:23;30178:32;30175:119;;;30213:79;;:::i;:::-;30175:119;30333:1;30358:64;30414:7;30405:6;30394:9;30390:22;30358:64;:::i;:::-;30348:74;;30304:128;30088:351;;;;:::o;30445:85::-;30490:7;30519:5;30508:16;;30445:85;;;:::o;30536:158::-;30594:9;30627:61;30645:42;30654:32;30680:5;30654:32;:::i;:::-;30645:42;:::i;:::-;30627:61;:::i;:::-;30614:74;;30536:158;;;:::o;30700:147::-;30795:45;30834:5;30795:45;:::i;:::-;30790:3;30783:58;30700:147;;:::o;30853:114::-;30920:6;30954:5;30948:12;30938:22;;30853:114;;;:::o;30973:184::-;31072:11;31106:6;31101:3;31094:19;31146:4;31141:3;31137:14;31122:29;;30973:184;;;;:::o;31163:132::-;31230:4;31253:3;31245:11;;31283:4;31278:3;31274:14;31266:22;;31163:132;;;:::o;31301:108::-;31378:24;31396:5;31378:24;:::i;:::-;31373:3;31366:37;31301:108;;:::o;31415:179::-;31484:10;31505:46;31547:3;31539:6;31505:46;:::i;:::-;31583:4;31578:3;31574:14;31560:28;;31415:179;;;;:::o;31600:113::-;31670:4;31702;31697:3;31693:14;31685:22;;31600:113;;;:::o;31749:732::-;31868:3;31897:54;31945:5;31897:54;:::i;:::-;31967:86;32046:6;32041:3;31967:86;:::i;:::-;31960:93;;32077:56;32127:5;32077:56;:::i;:::-;32156:7;32187:1;32172:284;32197:6;32194:1;32191:13;32172:284;;;32273:6;32267:13;32300:63;32359:3;32344:13;32300:63;:::i;:::-;32293:70;;32386:60;32439:6;32386:60;:::i;:::-;32376:70;;32232:224;32219:1;32216;32212:9;32207:14;;32172:284;;;32176:14;32472:3;32465:10;;31873:608;;;31749:732;;;;:::o;32487:831::-;32750:4;32788:3;32777:9;32773:19;32765:27;;32802:71;32870:1;32859:9;32855:17;32846:6;32802:71;:::i;:::-;32883:80;32959:2;32948:9;32944:18;32935:6;32883:80;:::i;:::-;33010:9;33004:4;33000:20;32995:2;32984:9;32980:18;32973:48;33038:108;33141:4;33132:6;33038:108;:::i;:::-;33030:116;;33156:72;33224:2;33213:9;33209:18;33200:6;33156:72;:::i;:::-;33238:73;33306:3;33295:9;33291:19;33282:6;33238:73;:::i;:::-;32487:831;;;;;;;;:::o;33324:807::-;33573:4;33611:3;33600:9;33596:19;33588:27;;33625:71;33693:1;33682:9;33678:17;33669:6;33625:71;:::i;:::-;33706:72;33774:2;33763:9;33759:18;33750:6;33706:72;:::i;:::-;33788:80;33864:2;33853:9;33849:18;33840:6;33788:80;:::i;:::-;33878;33954:2;33943:9;33939:18;33930:6;33878:80;:::i;:::-;33968:73;34036:3;34025:9;34021:19;34012:6;33968:73;:::i;:::-;34051;34119:3;34108:9;34104:19;34095:6;34051:73;:::i;:::-;33324:807;;;;;;;;;:::o;34137:143::-;34194:5;34225:6;34219:13;34210:22;;34241:33;34268:5;34241:33;:::i;:::-;34137:143;;;;:::o;34286:663::-;34374:6;34382;34390;34439:2;34427:9;34418:7;34414:23;34410:32;34407:119;;;34445:79;;:::i;:::-;34407:119;34565:1;34590:64;34646:7;34637:6;34626:9;34622:22;34590:64;:::i;:::-;34580:74;;34536:128;34703:2;34729:64;34785:7;34776:6;34765:9;34761:22;34729:64;:::i;:::-;34719:74;;34674:129;34842:2;34868:64;34924:7;34915:6;34904:9;34900:22;34868:64;:::i;:::-;34858:74;;34813:129;34286:663;;;;;:::o

Swarm Source

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