ETH Price: $3,048.26 (+1.28%)
Gas: 4 Gwei

Token

BabyWoofWork.io (BOOF)
 

Overview

Max Total Supply

1,000,000,000 BOOF

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.797938913064250983 BOOF

Value
$0.00
0xe57ea950510098304613a8618dbc7a7a658b1188
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:
BOOF

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity =0.8.16;
pragma experimental ABIEncoderV2;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

interface IERC20 {

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

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

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

interface IERC20Metadata is IERC20 {

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


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;

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

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

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

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

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("BabyWoofWork.io", "BOOF") {
        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 = 20;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 50;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1000000000 * 1e18;

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

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

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

        marketingWallet = address(0xC9A4d7e4E1a4424d0b24C0572a3729F84f8ca8d8);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 50, "Must keep fees at 50% 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 <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;

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

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

            amount -= fees;
        }

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

    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600f81526020017f42616279576f6f66576f726b2e696f00000000000000000000000000000000008152506040518060400160405280600481526020017f424f4f46000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c98565b508060049081620000d7919062000c98565b505050620000fa620000ee620004df60201b60201c565b620004e760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005ad60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de9565b6040518363ffffffff1660e01b81526004016200027992919062000e2c565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005ad60201b60201c565b6200031c60a05160016200069760201b60201c565b600060149050600080603290506000806b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006007819055506a18d0bf423c03d8de00000060098190555061271060058262000371919062000e88565b6200037d919062000f18565b60088190555084600c8190555083600d81905550600d54600c54620003a3919062000f50565b600b8190555082600f8190555081601081905550601054600f54620003c9919062000f50565b600e81905550600e5460138190555073c9a4d7e4e1a4424d0b24c0572a3729f84f8ca8d8600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044f620004416200073860201b60201c565b60016200076260201b60201c565b620004623060016200076260201b60201c565b6200047761dead60016200076260201b60201c565b620004996200048b6200073860201b60201c565b6001620005ad60201b60201c565b620004ac306001620005ad60201b60201c565b620004c161dead6001620005ad60201b60201c565b620004d333826200089c60201b60201c565b505050505050620010e8565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005bd620004df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e36200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200063c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006339062000fec565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000772620004df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007986200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062000fec565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089091906200102b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009059062001098565b60405180910390fd5b620009226000838362000a1460201b60201c565b806002600082825462000936919062000f50565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200098d919062000f50565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f49190620010cb565b60405180910390a362000a106000838362000a1960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000aa057607f821691505b60208210810362000ab65762000ab562000a58565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ae1565b62000b2c868362000ae1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7962000b7362000b6d8462000b44565b62000b4e565b62000b44565b9050919050565b6000819050919050565b62000b958362000b58565b62000bad62000ba48262000b80565b84845462000aee565b825550505050565b600090565b62000bc462000bb5565b62000bd181848462000b8a565b505050565b5b8181101562000bf95762000bed60008262000bba565b60018101905062000bd7565b5050565b601f82111562000c485762000c128162000abc565b62000c1d8462000ad1565b8101602085101562000c2d578190505b62000c4562000c3c8562000ad1565b83018262000bd6565b50505b505050565b600082821c905092915050565b600062000c6d6000198460080262000c4d565b1980831691505092915050565b600062000c88838362000c5a565b9150826002028217905092915050565b62000ca38262000a1e565b67ffffffffffffffff81111562000cbf5762000cbe62000a29565b5b62000ccb825462000a87565b62000cd882828562000bfd565b600060209050601f83116001811462000d10576000841562000cfb578287015190505b62000d07858262000c7a565b86555062000d77565b601f19841662000d208662000abc565b60005b8281101562000d4a5784890151825560018201915060208501945060208101905062000d23565b8683101562000d6a578489015162000d66601f89168262000c5a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000db18262000d84565b9050919050565b62000dc38162000da4565b811462000dcf57600080fd5b50565b60008151905062000de38162000db8565b92915050565b60006020828403121562000e025762000e0162000d7f565b5b600062000e128482850162000dd2565b91505092915050565b62000e268162000da4565b82525050565b600060408201905062000e43600083018562000e1b565b62000e52602083018462000e1b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e958262000b44565b915062000ea28362000b44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ede5762000edd62000e59565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f258262000b44565b915062000f328362000b44565b92508262000f455762000f4462000ee9565b5b828204905092915050565b600062000f5d8262000b44565b915062000f6a8362000b44565b925082820190508082111562000f855762000f8462000e59565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fd460208362000f8b565b915062000fe18262000f9c565b602082019050919050565b60006020820190508181036000830152620010078162000fc5565b9050919050565b60008115159050919050565b62001025816200100e565b82525050565b60006020820190506200104260008301846200101a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001080601f8362000f8b565b91506200108d8262001048565b602082019050919050565b60006020820190508181036000830152620010b38162001071565b9050919050565b620010c58162000b44565b82525050565b6000602082019050620010e26000830184620010ba565b92915050565b60805160a05161418f6200113860003960008181610bb101526112870152600081816109d001528181612b5801528181612c3901528181612c6001528181612cfc0152612d23015261418f6000f3fe6080604052600436106101fd5760003560e01c806375f0a8741161010d578063bbc0c742116100a0578063d85ba0631161006f578063d85ba06314610744578063dd62ed3e1461076f578063e2f45605146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063bbc0c74214610688578063c0246668146106b3578063c8c8ebe4146106dc578063d257b34f1461070757610204565b806396188399116100dc57806396188399146105bc5780639a7a23d6146105e5578063a457c2d71461060e578063a9059cbb1461064b57610204565b806375f0a874146105245780638a8c523c1461054f5780638da5cb5b1461056657806395d89b411461059157610204565b806339509351116101905780636a486a8e1161015f5780636a486a8e146104515780636ddd17131461047c57806370a08231146104a7578063715018a6146104e45780637571336a146104fb57610204565b8063395093511461038357806349bd5a5e146103c05780634fbee193146103eb57806366ca9b831461042857610204565b806318160ddd116101cc57806318160ddd146102c557806323b872dd146102f057806327c8f8351461032d578063313ce5671461035857610204565b806302dbd8f81461020957806306fdde0314610232578063095ea7b31461025d5780631694505e1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612e0d565b61082b565b005b34801561023e57600080fd5b5061024761091e565b6040516102549190612edd565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f9190612f5d565b6109b0565b6040516102919190612fb8565b60405180910390f35b3480156102a657600080fd5b506102af6109ce565b6040516102bc9190613032565b60405180910390f35b3480156102d157600080fd5b506102da6109f2565b6040516102e7919061305c565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613077565b6109fc565b6040516103249190612fb8565b60405180910390f35b34801561033957600080fd5b50610342610af4565b60405161034f91906130d9565b60405180910390f35b34801561036457600080fd5b5061036d610afa565b60405161037a9190613110565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190612f5d565b610b03565b6040516103b79190612fb8565b60405180910390f35b3480156103cc57600080fd5b506103d5610baf565b6040516103e291906130d9565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d919061312b565b610bd3565b60405161041f9190612fb8565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190612e0d565b610c29565b005b34801561045d57600080fd5b50610466610d13565b604051610473919061305c565b60405180910390f35b34801561048857600080fd5b50610491610d19565b60405161049e9190612fb8565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c9919061312b565b610d2c565b6040516104db919061305c565b60405180910390f35b3480156104f057600080fd5b506104f9610d74565b005b34801561050757600080fd5b50610522600480360381019061051d9190613184565b610dfc565b005b34801561053057600080fd5b50610539610ed3565b60405161054691906130d9565b60405180910390f35b34801561055b57600080fd5b50610564610ef9565b005b34801561057257600080fd5b5061057b610fad565b60405161058891906130d9565b60405180910390f35b34801561059d57600080fd5b506105a6610fd7565b6040516105b39190612edd565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612e0d565b611069565b005b3480156105f157600080fd5b5061060c60048036038101906106079190613184565b611209565b005b34801561061a57600080fd5b5061063560048036038101906106309190612f5d565b611321565b6040516106429190612fb8565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190612f5d565b61140c565b60405161067f9190612fb8565b60405180910390f35b34801561069457600080fd5b5061069d61142a565b6040516106aa9190612fb8565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190613184565b61143d565b005b3480156106e857600080fd5b506106f1611562565b6040516106fe919061305c565b60405180910390f35b34801561071357600080fd5b5061072e600480360381019061072991906131c4565b611568565b60405161073b9190612fb8565b60405180910390f35b34801561075057600080fd5b506107596116bd565b604051610766919061305c565b60405180910390f35b34801561077b57600080fd5b50610796600480360381019061079191906131f1565b6116c3565b6040516107a3919061305c565b60405180910390f35b3480156107b857600080fd5b506107c161174a565b6040516107ce919061305c565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f9919061312b565b611750565b005b34801561080c57600080fd5b50610815611847565b604051610822919061305c565b60405180910390f35b61083361184d565b73ffffffffffffffffffffffffffffffffffffffff16610851610fad565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e9061327d565b60405180910390fd5b81600f8190555080601081905550601054600f546108c591906132cc565b600e81905550600e546013819055506032600e54111561091a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109119061334c565b60405180910390fd5b5050565b60606003805461092d9061339b565b80601f01602080910402602001604051908101604052809291908181526020018280546109599061339b565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905090565b60006109c46109bd61184d565b8484611855565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610a09848484611a1e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5461184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb9061343e565b60405180910390fd5b610ae885610ae061184d565b858403611855565b60019150509392505050565b61dead81565b60006012905090565b6000610ba5610b1061184d565b848460016000610b1e61184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba091906132cc565b611855565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c3161184d565b73ffffffffffffffffffffffffffffffffffffffff16610c4f610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061327d565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610cc391906132cc565b600b819055506032600b541115610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d069061334c565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d7c61184d565b73ffffffffffffffffffffffffffffffffffffffff16610d9a610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de79061327d565b60405180910390fd5b610dfa600061247a565b565b610e0461184d565b73ffffffffffffffffffffffffffffffffffffffff16610e22610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f9061327d565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f0161184d565b73ffffffffffffffffffffffffffffffffffffffff16610f1f610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c9061327d565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fe69061339b565b80601f01602080910402602001604051908101604052809291908181526020018280546110129061339b565b801561105f5780601f106110345761010080835404028352916020019161105f565b820191906000526020600020905b81548152906001019060200180831161104257829003601f168201915b5050505050905090565b61107161184d565b73ffffffffffffffffffffffffffffffffffffffff1661108f610fad565b73ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc9061327d565b60405180910390fd5b670de0b6b3a76400006103e860056110fb6109f2565b611105919061345e565b61110f91906134e7565b61111991906134e7565b82101561115b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111529061358a565b60405180910390fd5b670de0b6b3a76400006103e860056111716109f2565b61117b919061345e565b61118591906134e7565b61118f91906134e7565b8110156111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c89061361c565b60405180910390fd5b670de0b6b3a7640000816111e5919061345e565b600981905550670de0b6b3a7640000826111ff919061345e565b6007819055505050565b61121161184d565b73ffffffffffffffffffffffffffffffffffffffff1661122f610fad565b73ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c9061327d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906136ae565b60405180910390fd5b61131d8282612540565b5050565b6000806001600061133061184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613740565b60405180910390fd5b6114016113f861184d565b85858403611855565b600191505092915050565b600061142061141961184d565b8484611a1e565b6001905092915050565b600a60009054906101000a900460ff1681565b61144561184d565b73ffffffffffffffffffffffffffffffffffffffff16611463610fad565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b09061327d565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115569190612fb8565b60405180910390a25050565b60075481565b600061157261184d565b73ffffffffffffffffffffffffffffffffffffffff16611590610fad565b73ffffffffffffffffffffffffffffffffffffffff16146115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd9061327d565b60405180910390fd5b620186a060016115f46109f2565b6115fe919061345e565b61160891906134e7565b82101561164a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611641906137d2565b60405180910390fd5b6103e860056116576109f2565b611661919061345e565b61166b91906134e7565b8211156116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613864565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b61175861184d565b73ffffffffffffffffffffffffffffffffffffffff16611776610fad565b73ffffffffffffffffffffffffffffffffffffffff16146117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c39061327d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906138f6565b60405180910390fd5b6118448161247a565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90613a1a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a11919061305c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613b3e565b60405180910390fd5b60008103611b1557611b10838360006125e1565b612475565b611b1d610fad565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8b5750611b5b610fad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c175750600560149054906101000a900460ff16155b15611ffa57600a60009054906101000a900460ff16611d1157601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd15750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0790613baa565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611db45750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5b57600754811115611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613c3c565b60405180910390fd5b600954611e0a83610d2c565b82611e1591906132cc565b1115611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d90613ca8565b60405180910390fd5b611ff9565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611efe5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4d57600754811115611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613d3a565b60405180910390fd5b611ff8565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ff757600954611faa83610d2c565b82611fb591906132cc565b1115611ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fed90613ca8565b60405180910390fd5b5b5b5b5b600061200530610d2c565b90506000600854821015905080801561202a5750600a60019054906101000a900460ff165b80156120435750600560149054906101000a900460ff16155b80156120995750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120ef5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121455750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612189576001600560146101000a81548160ff02191690831515021790555061216d612860565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061223f5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561224957600090505b6000811561245c57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122ac57506000600e54115b15612346576122d960646122cb600e5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600e54601054826122ec919061345e565b6122f691906134e7565b6012600082825461230791906132cc565b92505081905550600e54600f548261231f919061345e565b61232991906134e7565b6011600082825461233a91906132cc565b92505081905550612438565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a157506000600b54115b15612437576123ce60646123c0600b5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600b54600d54826123e1919061345e565b6123eb91906134e7565b601260008282546123fc91906132cc565b92505081905550600b54600c5482612414919061345e565b61241e91906134e7565b6011600082825461242f91906132cc565b925050819055505b5b600081111561244d5761244c8730836125e1565b5b80856124599190613d5a565b94505b6124678787876125e1565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b690613b3e565b60405180910390fd5b6126ca838383612a99565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613e00565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127e391906132cc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612847919061305c565b60405180910390a361285a848484612a9e565b50505050565b600061286b30610d2c565b9050600060115460125461287f91906132cc565b90506000808314806128915750600082145b1561289e57505050612a6b565b60146008546128ad919061345e565b8311156128c65760146008546128c3919061345e565b92505b6000600283601254866128d9919061345e565b6128e391906134e7565b6128ed91906134e7565b905060006129048286612aa390919063ffffffff16565b9050600047905061291482612ab9565b60006129298247612aa390919063ffffffff16565b905060006129548761294660115485612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600081836129649190613d5a565b9050600060128190555060006011819055506000861180156129865750600081115b156129d3576129958682612cf6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826012546040516129ca93929190613e20565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a1990613e88565b60006040518083038185875af1925050503d8060008114612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b5050809750505050505050505050505b565b60008183612a7b919061345e565b905092915050565b60008183612a9191906134e7565b905092915050565b505050565b505050565b60008183612ab19190613d5a565b905092915050565b6000600267ffffffffffffffff811115612ad657612ad5613e9d565b5b604051908082528060200260200182016040528015612b045781602001602082028036833780820191505090505b5090503081600081518110612b1c57612b1b613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be59190613f10565b81600181518110612bf957612bf8613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5e307f000000000000000000000000000000000000000000000000000000000000000084611855565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cc0959493929190614036565b600060405180830381600087803b158015612cda57600080fd5b505af1158015612cee573d6000803e3d6000fd5b505050505050565b612d21307f000000000000000000000000000000000000000000000000000000000000000084611855565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d8896959493929190614090565b60606040518083038185885af1158015612da6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dcb9190614106565b5050505050565b600080fd5b6000819050919050565b612dea81612dd7565b8114612df557600080fd5b50565b600081359050612e0781612de1565b92915050565b60008060408385031215612e2457612e23612dd2565b5b6000612e3285828601612df8565b9250506020612e4385828601612df8565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e87578082015181840152602081019050612e6c565b60008484015250505050565b6000601f19601f8301169050919050565b6000612eaf82612e4d565b612eb98185612e58565b9350612ec9818560208601612e69565b612ed281612e93565b840191505092915050565b60006020820190508181036000830152612ef78184612ea4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2a82612eff565b9050919050565b612f3a81612f1f565b8114612f4557600080fd5b50565b600081359050612f5781612f31565b92915050565b60008060408385031215612f7457612f73612dd2565b5b6000612f8285828601612f48565b9250506020612f9385828601612df8565b9150509250929050565b60008115159050919050565b612fb281612f9d565b82525050565b6000602082019050612fcd6000830184612fa9565b92915050565b6000819050919050565b6000612ff8612ff3612fee84612eff565b612fd3565b612eff565b9050919050565b600061300a82612fdd565b9050919050565b600061301c82612fff565b9050919050565b61302c81613011565b82525050565b60006020820190506130476000830184613023565b92915050565b61305681612dd7565b82525050565b6000602082019050613071600083018461304d565b92915050565b6000806000606084860312156130905761308f612dd2565b5b600061309e86828701612f48565b93505060206130af86828701612f48565b92505060406130c086828701612df8565b9150509250925092565b6130d381612f1f565b82525050565b60006020820190506130ee60008301846130ca565b92915050565b600060ff82169050919050565b61310a816130f4565b82525050565b60006020820190506131256000830184613101565b92915050565b60006020828403121561314157613140612dd2565b5b600061314f84828501612f48565b91505092915050565b61316181612f9d565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b6000806040838503121561319b5761319a612dd2565b5b60006131a985828601612f48565b92505060206131ba8582860161316f565b9150509250929050565b6000602082840312156131da576131d9612dd2565b5b60006131e884828501612df8565b91505092915050565b6000806040838503121561320857613207612dd2565b5b600061321685828601612f48565b925050602061322785828601612f48565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613267602083612e58565b915061327282613231565b602082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132d782612dd7565b91506132e283612dd7565b92508282019050808211156132fa576132f961329d565b5b92915050565b7f4d757374206b656570206665657320617420353025206f72206c657373000000600082015250565b6000613336601d83612e58565b915061334182613300565b602082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133b357607f821691505b6020821081036133c6576133c561336c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613428602883612e58565b9150613433826133cc565b604082019050919050565b600060208201905081810360008301526134578161341b565b9050919050565b600061346982612dd7565b915061347483612dd7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ad576134ac61329d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134f282612dd7565b91506134fd83612dd7565b92508261350d5761350c6134b8565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613574602183612e58565b915061357f82613518565b604082019050919050565b600060208201905081810360008301526135a381613567565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613606602483612e58565b9150613611826135aa565b604082019050919050565b60006020820190508181036000830152613635816135f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613698603983612e58565b91506136a38261363c565b604082019050919050565b600060208201905081810360008301526136c78161368b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061372a602583612e58565b9150613735826136ce565b604082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006137bc603583612e58565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061384e603483612e58565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138e0602683612e58565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613972602483612e58565b915061397d82613916565b604082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a04602283612e58565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a96602583612e58565b9150613aa182613a3a565b604082019050919050565b60006020820190508181036000830152613ac581613a89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b28602383612e58565b9150613b3382613acc565b604082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b94601683612e58565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c26603583612e58565b9150613c3182613bca565b604082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c92601383612e58565b9150613c9d82613c5c565b602082019050919050565b60006020820190508181036000830152613cc181613c85565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d24603683612e58565b9150613d2f82613cc8565b604082019050919050565b60006020820190508181036000830152613d5381613d17565b9050919050565b6000613d6582612dd7565b9150613d7083612dd7565b9250828203905081811115613d8857613d8761329d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dea602683612e58565b9150613df582613d8e565b604082019050919050565b60006020820190508181036000830152613e1981613ddd565b9050919050565b6000606082019050613e35600083018661304d565b613e42602083018561304d565b613e4f604083018461304d565b949350505050565b600081905092915050565b50565b6000613e72600083613e57565b9150613e7d82613e62565b600082019050919050565b6000613e9382613e65565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f0a81612f31565b92915050565b600060208284031215613f2657613f25612dd2565b5b6000613f3484828501613efb565b91505092915050565b6000819050919050565b6000613f62613f5d613f5884613f3d565b612fd3565b612dd7565b9050919050565b613f7281613f47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fad81612f1f565b82525050565b6000613fbf8383613fa4565b60208301905092915050565b6000602082019050919050565b6000613fe382613f78565b613fed8185613f83565b9350613ff883613f94565b8060005b838110156140295781516140108882613fb3565b975061401b83613fcb565b925050600181019050613ffc565b5085935050505092915050565b600060a08201905061404b600083018861304d565b6140586020830187613f69565b818103604083015261406a8186613fd8565b905061407960608301856130ca565b614086608083018461304d565b9695505050505050565b600060c0820190506140a560008301896130ca565b6140b2602083018861304d565b6140bf6040830187613f69565b6140cc6060830186613f69565b6140d960808301856130ca565b6140e660a083018461304d565b979650505050505050565b60008151905061410081612de1565b92915050565b60008060006060848603121561411f5761411e612dd2565b5b600061412d868287016140f1565b935050602061413e868287016140f1565b925050604061414f868287016140f1565b915050925092509256fea2646970667358221220cf22f1f202dd30321aa5615d239710b1249d02eb27543b4ff6fc1c1dc94fc6a564736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c806375f0a8741161010d578063bbc0c742116100a0578063d85ba0631161006f578063d85ba06314610744578063dd62ed3e1461076f578063e2f45605146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063bbc0c74214610688578063c0246668146106b3578063c8c8ebe4146106dc578063d257b34f1461070757610204565b806396188399116100dc57806396188399146105bc5780639a7a23d6146105e5578063a457c2d71461060e578063a9059cbb1461064b57610204565b806375f0a874146105245780638a8c523c1461054f5780638da5cb5b1461056657806395d89b411461059157610204565b806339509351116101905780636a486a8e1161015f5780636a486a8e146104515780636ddd17131461047c57806370a08231146104a7578063715018a6146104e45780637571336a146104fb57610204565b8063395093511461038357806349bd5a5e146103c05780634fbee193146103eb57806366ca9b831461042857610204565b806318160ddd116101cc57806318160ddd146102c557806323b872dd146102f057806327c8f8351461032d578063313ce5671461035857610204565b806302dbd8f81461020957806306fdde0314610232578063095ea7b31461025d5780631694505e1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612e0d565b61082b565b005b34801561023e57600080fd5b5061024761091e565b6040516102549190612edd565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f9190612f5d565b6109b0565b6040516102919190612fb8565b60405180910390f35b3480156102a657600080fd5b506102af6109ce565b6040516102bc9190613032565b60405180910390f35b3480156102d157600080fd5b506102da6109f2565b6040516102e7919061305c565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613077565b6109fc565b6040516103249190612fb8565b60405180910390f35b34801561033957600080fd5b50610342610af4565b60405161034f91906130d9565b60405180910390f35b34801561036457600080fd5b5061036d610afa565b60405161037a9190613110565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190612f5d565b610b03565b6040516103b79190612fb8565b60405180910390f35b3480156103cc57600080fd5b506103d5610baf565b6040516103e291906130d9565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d919061312b565b610bd3565b60405161041f9190612fb8565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190612e0d565b610c29565b005b34801561045d57600080fd5b50610466610d13565b604051610473919061305c565b60405180910390f35b34801561048857600080fd5b50610491610d19565b60405161049e9190612fb8565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c9919061312b565b610d2c565b6040516104db919061305c565b60405180910390f35b3480156104f057600080fd5b506104f9610d74565b005b34801561050757600080fd5b50610522600480360381019061051d9190613184565b610dfc565b005b34801561053057600080fd5b50610539610ed3565b60405161054691906130d9565b60405180910390f35b34801561055b57600080fd5b50610564610ef9565b005b34801561057257600080fd5b5061057b610fad565b60405161058891906130d9565b60405180910390f35b34801561059d57600080fd5b506105a6610fd7565b6040516105b39190612edd565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612e0d565b611069565b005b3480156105f157600080fd5b5061060c60048036038101906106079190613184565b611209565b005b34801561061a57600080fd5b5061063560048036038101906106309190612f5d565b611321565b6040516106429190612fb8565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190612f5d565b61140c565b60405161067f9190612fb8565b60405180910390f35b34801561069457600080fd5b5061069d61142a565b6040516106aa9190612fb8565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190613184565b61143d565b005b3480156106e857600080fd5b506106f1611562565b6040516106fe919061305c565b60405180910390f35b34801561071357600080fd5b5061072e600480360381019061072991906131c4565b611568565b60405161073b9190612fb8565b60405180910390f35b34801561075057600080fd5b506107596116bd565b604051610766919061305c565b60405180910390f35b34801561077b57600080fd5b50610796600480360381019061079191906131f1565b6116c3565b6040516107a3919061305c565b60405180910390f35b3480156107b857600080fd5b506107c161174a565b6040516107ce919061305c565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f9919061312b565b611750565b005b34801561080c57600080fd5b50610815611847565b604051610822919061305c565b60405180910390f35b61083361184d565b73ffffffffffffffffffffffffffffffffffffffff16610851610fad565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e9061327d565b60405180910390fd5b81600f8190555080601081905550601054600f546108c591906132cc565b600e81905550600e546013819055506032600e54111561091a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109119061334c565b60405180910390fd5b5050565b60606003805461092d9061339b565b80601f01602080910402602001604051908101604052809291908181526020018280546109599061339b565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905090565b60006109c46109bd61184d565b8484611855565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610a09848484611a1e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5461184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb9061343e565b60405180910390fd5b610ae885610ae061184d565b858403611855565b60019150509392505050565b61dead81565b60006012905090565b6000610ba5610b1061184d565b848460016000610b1e61184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba091906132cc565b611855565b6001905092915050565b7f00000000000000000000000063b704b7cbf9a38e1543e35fc281e7d56b8de75b81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c3161184d565b73ffffffffffffffffffffffffffffffffffffffff16610c4f610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061327d565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610cc391906132cc565b600b819055506032600b541115610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d069061334c565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d7c61184d565b73ffffffffffffffffffffffffffffffffffffffff16610d9a610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de79061327d565b60405180910390fd5b610dfa600061247a565b565b610e0461184d565b73ffffffffffffffffffffffffffffffffffffffff16610e22610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f9061327d565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f0161184d565b73ffffffffffffffffffffffffffffffffffffffff16610f1f610fad565b73ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c9061327d565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fe69061339b565b80601f01602080910402602001604051908101604052809291908181526020018280546110129061339b565b801561105f5780601f106110345761010080835404028352916020019161105f565b820191906000526020600020905b81548152906001019060200180831161104257829003601f168201915b5050505050905090565b61107161184d565b73ffffffffffffffffffffffffffffffffffffffff1661108f610fad565b73ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc9061327d565b60405180910390fd5b670de0b6b3a76400006103e860056110fb6109f2565b611105919061345e565b61110f91906134e7565b61111991906134e7565b82101561115b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111529061358a565b60405180910390fd5b670de0b6b3a76400006103e860056111716109f2565b61117b919061345e565b61118591906134e7565b61118f91906134e7565b8110156111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c89061361c565b60405180910390fd5b670de0b6b3a7640000816111e5919061345e565b600981905550670de0b6b3a7640000826111ff919061345e565b6007819055505050565b61121161184d565b73ffffffffffffffffffffffffffffffffffffffff1661122f610fad565b73ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c9061327d565b60405180910390fd5b7f00000000000000000000000063b704b7cbf9a38e1543e35fc281e7d56b8de75b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906136ae565b60405180910390fd5b61131d8282612540565b5050565b6000806001600061133061184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613740565b60405180910390fd5b6114016113f861184d565b85858403611855565b600191505092915050565b600061142061141961184d565b8484611a1e565b6001905092915050565b600a60009054906101000a900460ff1681565b61144561184d565b73ffffffffffffffffffffffffffffffffffffffff16611463610fad565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b09061327d565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115569190612fb8565b60405180910390a25050565b60075481565b600061157261184d565b73ffffffffffffffffffffffffffffffffffffffff16611590610fad565b73ffffffffffffffffffffffffffffffffffffffff16146115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd9061327d565b60405180910390fd5b620186a060016115f46109f2565b6115fe919061345e565b61160891906134e7565b82101561164a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611641906137d2565b60405180910390fd5b6103e860056116576109f2565b611661919061345e565b61166b91906134e7565b8211156116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613864565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b61175861184d565b73ffffffffffffffffffffffffffffffffffffffff16611776610fad565b73ffffffffffffffffffffffffffffffffffffffff16146117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c39061327d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906138f6565b60405180910390fd5b6118448161247a565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90613a1a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a11919061305c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613b3e565b60405180910390fd5b60008103611b1557611b10838360006125e1565b612475565b611b1d610fad565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8b5750611b5b610fad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c175750600560149054906101000a900460ff16155b15611ffa57600a60009054906101000a900460ff16611d1157601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd15750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0790613baa565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611db45750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5b57600754811115611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613c3c565b60405180910390fd5b600954611e0a83610d2c565b82611e1591906132cc565b1115611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d90613ca8565b60405180910390fd5b611ff9565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611efe5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4d57600754811115611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613d3a565b60405180910390fd5b611ff8565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ff757600954611faa83610d2c565b82611fb591906132cc565b1115611ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fed90613ca8565b60405180910390fd5b5b5b5b5b600061200530610d2c565b90506000600854821015905080801561202a5750600a60019054906101000a900460ff165b80156120435750600560149054906101000a900460ff16155b80156120995750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120ef5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121455750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612189576001600560146101000a81548160ff02191690831515021790555061216d612860565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061223f5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561224957600090505b6000811561245c57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122ac57506000600e54115b15612346576122d960646122cb600e5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600e54601054826122ec919061345e565b6122f691906134e7565b6012600082825461230791906132cc565b92505081905550600e54600f548261231f919061345e565b61232991906134e7565b6011600082825461233a91906132cc565b92505081905550612438565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a157506000600b54115b15612437576123ce60646123c0600b5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600b54600d54826123e1919061345e565b6123eb91906134e7565b601260008282546123fc91906132cc565b92505081905550600b54600c5482612414919061345e565b61241e91906134e7565b6011600082825461242f91906132cc565b925050819055505b5b600081111561244d5761244c8730836125e1565b5b80856124599190613d5a565b94505b6124678787876125e1565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b690613b3e565b60405180910390fd5b6126ca838383612a99565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613e00565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127e391906132cc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612847919061305c565b60405180910390a361285a848484612a9e565b50505050565b600061286b30610d2c565b9050600060115460125461287f91906132cc565b90506000808314806128915750600082145b1561289e57505050612a6b565b60146008546128ad919061345e565b8311156128c65760146008546128c3919061345e565b92505b6000600283601254866128d9919061345e565b6128e391906134e7565b6128ed91906134e7565b905060006129048286612aa390919063ffffffff16565b9050600047905061291482612ab9565b60006129298247612aa390919063ffffffff16565b905060006129548761294660115485612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600081836129649190613d5a565b9050600060128190555060006011819055506000861180156129865750600081115b156129d3576129958682612cf6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826012546040516129ca93929190613e20565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a1990613e88565b60006040518083038185875af1925050503d8060008114612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b5050809750505050505050505050505b565b60008183612a7b919061345e565b905092915050565b60008183612a9191906134e7565b905092915050565b505050565b505050565b60008183612ab19190613d5a565b905092915050565b6000600267ffffffffffffffff811115612ad657612ad5613e9d565b5b604051908082528060200260200182016040528015612b045781602001602082028036833780820191505090505b5090503081600081518110612b1c57612b1b613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be59190613f10565b81600181518110612bf957612bf8613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611855565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cc0959493929190614036565b600060405180830381600087803b158015612cda57600080fd5b505af1158015612cee573d6000803e3d6000fd5b505050505050565b612d21307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611855565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d8896959493929190614090565b60606040518083038185885af1158015612da6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dcb9190614106565b5050505050565b600080fd5b6000819050919050565b612dea81612dd7565b8114612df557600080fd5b50565b600081359050612e0781612de1565b92915050565b60008060408385031215612e2457612e23612dd2565b5b6000612e3285828601612df8565b9250506020612e4385828601612df8565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e87578082015181840152602081019050612e6c565b60008484015250505050565b6000601f19601f8301169050919050565b6000612eaf82612e4d565b612eb98185612e58565b9350612ec9818560208601612e69565b612ed281612e93565b840191505092915050565b60006020820190508181036000830152612ef78184612ea4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2a82612eff565b9050919050565b612f3a81612f1f565b8114612f4557600080fd5b50565b600081359050612f5781612f31565b92915050565b60008060408385031215612f7457612f73612dd2565b5b6000612f8285828601612f48565b9250506020612f9385828601612df8565b9150509250929050565b60008115159050919050565b612fb281612f9d565b82525050565b6000602082019050612fcd6000830184612fa9565b92915050565b6000819050919050565b6000612ff8612ff3612fee84612eff565b612fd3565b612eff565b9050919050565b600061300a82612fdd565b9050919050565b600061301c82612fff565b9050919050565b61302c81613011565b82525050565b60006020820190506130476000830184613023565b92915050565b61305681612dd7565b82525050565b6000602082019050613071600083018461304d565b92915050565b6000806000606084860312156130905761308f612dd2565b5b600061309e86828701612f48565b93505060206130af86828701612f48565b92505060406130c086828701612df8565b9150509250925092565b6130d381612f1f565b82525050565b60006020820190506130ee60008301846130ca565b92915050565b600060ff82169050919050565b61310a816130f4565b82525050565b60006020820190506131256000830184613101565b92915050565b60006020828403121561314157613140612dd2565b5b600061314f84828501612f48565b91505092915050565b61316181612f9d565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b6000806040838503121561319b5761319a612dd2565b5b60006131a985828601612f48565b92505060206131ba8582860161316f565b9150509250929050565b6000602082840312156131da576131d9612dd2565b5b60006131e884828501612df8565b91505092915050565b6000806040838503121561320857613207612dd2565b5b600061321685828601612f48565b925050602061322785828601612f48565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613267602083612e58565b915061327282613231565b602082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132d782612dd7565b91506132e283612dd7565b92508282019050808211156132fa576132f961329d565b5b92915050565b7f4d757374206b656570206665657320617420353025206f72206c657373000000600082015250565b6000613336601d83612e58565b915061334182613300565b602082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133b357607f821691505b6020821081036133c6576133c561336c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613428602883612e58565b9150613433826133cc565b604082019050919050565b600060208201905081810360008301526134578161341b565b9050919050565b600061346982612dd7565b915061347483612dd7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ad576134ac61329d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134f282612dd7565b91506134fd83612dd7565b92508261350d5761350c6134b8565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613574602183612e58565b915061357f82613518565b604082019050919050565b600060208201905081810360008301526135a381613567565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613606602483612e58565b9150613611826135aa565b604082019050919050565b60006020820190508181036000830152613635816135f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613698603983612e58565b91506136a38261363c565b604082019050919050565b600060208201905081810360008301526136c78161368b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061372a602583612e58565b9150613735826136ce565b604082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006137bc603583612e58565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061384e603483612e58565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138e0602683612e58565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613972602483612e58565b915061397d82613916565b604082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a04602283612e58565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a96602583612e58565b9150613aa182613a3a565b604082019050919050565b60006020820190508181036000830152613ac581613a89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b28602383612e58565b9150613b3382613acc565b604082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b94601683612e58565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c26603583612e58565b9150613c3182613bca565b604082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c92601383612e58565b9150613c9d82613c5c565b602082019050919050565b60006020820190508181036000830152613cc181613c85565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d24603683612e58565b9150613d2f82613cc8565b604082019050919050565b60006020820190508181036000830152613d5381613d17565b9050919050565b6000613d6582612dd7565b9150613d7083612dd7565b9250828203905081811115613d8857613d8761329d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dea602683612e58565b9150613df582613d8e565b604082019050919050565b60006020820190508181036000830152613e1981613ddd565b9050919050565b6000606082019050613e35600083018661304d565b613e42602083018561304d565b613e4f604083018461304d565b949350505050565b600081905092915050565b50565b6000613e72600083613e57565b9150613e7d82613e62565b600082019050919050565b6000613e9382613e65565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f0a81612f31565b92915050565b600060208284031215613f2657613f25612dd2565b5b6000613f3484828501613efb565b91505092915050565b6000819050919050565b6000613f62613f5d613f5884613f3d565b612fd3565b612dd7565b9050919050565b613f7281613f47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fad81612f1f565b82525050565b6000613fbf8383613fa4565b60208301905092915050565b6000602082019050919050565b6000613fe382613f78565b613fed8185613f83565b9350613ff883613f94565b8060005b838110156140295781516140108882613fb3565b975061401b83613fcb565b925050600181019050613ffc565b5085935050505092915050565b600060a08201905061404b600083018861304d565b6140586020830187613f69565b818103604083015261406a8186613fd8565b905061407960608301856130ca565b614086608083018461304d565b9695505050505050565b600060c0820190506140a560008301896130ca565b6140b2602083018861304d565b6140bf6040830187613f69565b6140cc6060830186613f69565b6140d960808301856130ca565b6140e660a083018461304d565b979650505050505050565b60008151905061410081612de1565b92915050565b60008060006060848603121561411f5761411e612dd2565b5b600061412d868287016140f1565b935050602061413e868287016140f1565b925050604061414f868287016140f1565b915050925092509256fea2646970667358221220cf22f1f202dd30321aa5615d239710b1249d02eb27543b4ff6fc1c1dc94fc6a564736f6c63430008100033

Deployed Bytecode Sourcemap

14145:12239:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19137:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2681:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3595:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14219:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3002:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3772:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14322:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2901:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4272:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14277:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20223:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18794:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14760:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14608:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3118:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;806:112;;;;;;;;;;;;;:::i;:::-;;18619:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14414:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17482:112;;;;;;;;;;;;;:::i;:::-;;583:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2789:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18107:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19715:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4495:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3253:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14568:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19525:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14453:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17602:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14648:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3436:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14495:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;926:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14535:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19137:380;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19281:13:::1;19262:16;:32;;;;19324:13;19305:16;:32;;;;19383:16;;19364;;:35;;;;:::i;:::-;19348:13;:51;;;;19424:13;;19410:11;:27;;;;19473:2;19456:13;;:19;;19448:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19137:380:::0;;:::o;2681:100::-;2735:13;2768:5;2761:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2681:100;:::o;3595:169::-;3678:4;3695:39;3704:12;:10;:12::i;:::-;3718:7;3727:6;3695:8;:39::i;:::-;3752:4;3745:11;;3595:169;;;;:::o;14219:51::-;;;:::o;3002:108::-;3063:7;3090:12;;3083:19;;3002:108;:::o;3772:492::-;3912:4;3929:36;3939:6;3947:9;3958:6;3929:9;:36::i;:::-;3978:24;4005:11;:19;4017:6;4005:19;;;;;;;;;;;;;;;:33;4025:12;:10;:12::i;:::-;4005:33;;;;;;;;;;;;;;;;3978:60;;4077:6;4057:16;:26;;4049:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4164:57;4173:6;4181:12;:10;:12::i;:::-;4214:6;4195:16;:25;4164:8;:57::i;:::-;4252:4;4245:11;;;3772:492;;;;;:::o;14322:53::-;14368:6;14322:53;:::o;2901:93::-;2959:5;2984:2;2977:9;;2901:93;:::o;4272:215::-;4360:4;4377:80;4386:12;:10;:12::i;:::-;4400:7;4446:10;4409:11;:25;4421:12;:10;:12::i;:::-;4409:25;;;;;;;;;;;;;;;:34;4435:7;4409:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4377:8;:80::i;:::-;4475:4;4468:11;;4272:215;;;;:::o;14277:38::-;;;:::o;20223:126::-;20289:4;20313:19;:28;20333:7;20313:28;;;;;;;;;;;;;;;;;;;;;;;;;20306:35;;20223:126;;;:::o;18794:335::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18936:13:::1;18918:15;:31;;;;18978:13;18960:15;:31;;;;19035:15;;19017;;:33;;;;:::i;:::-;19002:12;:48;;;;19085:2;19069:12;;:18;;19061:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18794:335:::0;;:::o;14760:28::-;;;;:::o;14608:31::-;;;;;;;;;;;;;:::o;3118:127::-;3192:7;3219:9;:18;3229:7;3219:18;;;;;;;;;;;;;;;;3212:25;;3118:127;;;:::o;806:112::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;880:30:::1;907:1;880:18;:30::i;:::-;806:112::o:0;18619:167::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18774:4:::1;18732:31;:39;18764:6;18732:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18619:167:::0;;:::o;14414:30::-;;;;;;;;;;;;;:::o;17482:112::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17553:4:::1;17537:13;;:20;;;;;;;;;;;;;;;;;;17582:4;17568:11;;:18;;;;;;;;;;;;;;;;;;17482:112::o:0;583:87::-;629:7;656:6;;;;;;;;;;;649:13;;583:87;:::o;2789:104::-;2845:13;2878:7;2871:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2789:104;:::o;18107:504::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18284:4:::1;18276;18271:1;18255:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18254:26;;;;:::i;:::-;18253:35;;;;:::i;:::-;18240:9;:48;;18218:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18432:4;18424;18419:1;18403:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18402:26;;;;:::i;:::-;18401:35;;;;:::i;:::-;18382:15;:54;;18360:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18542:6;18523:15;:26;;;;:::i;:::-;18511:9;:38;;;;18596:6;18583:9;:20;;;;:::i;:::-;18560;:43;;;;18107:504:::0;;:::o;19715:304::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19859:13:::1;19851:21;;:4;:21;;::::0;19829:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19970:41;19999:4;20005:5;19970:28;:41::i;:::-;19715:304:::0;;:::o;4495:413::-;4588:4;4605:24;4632:11;:25;4644:12;:10;:12::i;:::-;4632:25;;;;;;;;;;;;;;;:34;4658:7;4632:34;;;;;;;;;;;;;;;;4605:61;;4705:15;4685:16;:35;;4677:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4798:67;4807:12;:10;:12::i;:::-;4821:7;4849:15;4830:16;:34;4798:8;:67::i;:::-;4896:4;4889:11;;;4495:413;;;;:::o;3253:175::-;3339:4;3356:42;3366:12;:10;:12::i;:::-;3380:9;3391:6;3356:9;:42::i;:::-;3416:4;3409:11;;3253:175;;;;:::o;14568:33::-;;;;;;;;;;;;;:::o;19525:182::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19641:8:::1;19610:19;:28;19630:7;19610:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19681:7;19665:34;;;19690:8;19665:34;;;;;;:::i;:::-;;;;;;;;19525:182:::0;;:::o;14453:35::-;;;;:::o;17602:497::-;17710:4;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17789:6:::1;17784:1;17768:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17767:28;;;;:::i;:::-;17754:9;:41;;17732:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17944:4;17939:1;17923:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17922:26;;;;:::i;:::-;17909:9;:39;;17887:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18060:9;18039:18;:30;;;;18087:4;18080:11;;17602:497:::0;;;:::o;14648:27::-;;;;:::o;3436:151::-;3525:7;3552:11;:18;3564:5;3552:18;;;;;;;;;;;;;;;:27;3571:7;3552:27;;;;;;;;;;;;;;;;3545:34;;3436:151;;;;:::o;14495:33::-;;;;:::o;926:201::-;729:12;:10;:12::i;:::-;718:23;;:7;:5;:7::i;:::-;:23;;;710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1035:1:::1;1015:22;;:8;:22;;::::0;1007:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1091:28;1110:8;1091:18;:28::i;:::-;926:201:::0;:::o;14535:24::-;;;;:::o;129:98::-;182:7;209:10;202:17;;129:98;:::o;6064:380::-;6217:1;6200:19;;:5;:19;;;6192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6298:1;6279:21;;:7;:21;;;6271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6382:6;6352:11;:18;6364:5;6352:18;;;;;;;;;;;;;;;:27;6371:7;6352:27;;;;;;;;;;;;;;;:36;;;;6420:7;6404:32;;6413:5;6404:32;;;6429:6;6404:32;;;;;;:::i;:::-;;;;;;;;6064:380;;;:::o;20357:3667::-;20505:1;20489:18;;:4;:18;;;20481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20582:1;20568:16;;:2;:16;;;20560:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20651:1;20641:6;:11;20637:93;;20669:28;20685:4;20691:2;20695:1;20669:15;:28::i;:::-;20712:7;;20637:93;20780:7;:5;:7::i;:::-;20772:15;;:4;:15;;;;:49;;;;;20814:7;:5;:7::i;:::-;20808:13;;:2;:13;;;;20772:49;:86;;;;;20856:1;20842:16;;:2;:16;;;;20772:86;:128;;;;;20893:6;20879:21;;:2;:21;;;;20772:128;:158;;;;;20922:8;;;;;;;;;;;20921:9;20772:158;20750:1684;;;20970:13;;;;;;;;;;;20965:223;;21042:19;:25;21062:4;21042:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21071:19;:23;21091:2;21071:23;;;;;;;;;;;;;;;;;;;;;;;;;21042:52;21008:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;20965:223;21262:25;:31;21288:4;21262:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21319:31;:35;21351:2;21319:35;;;;;;;;;;;;;;;;;;;;;;;;;21318:36;21262:92;21236:1183;;;21441:20;;21431:6;:30;;21397:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21649:9;;21632:13;21642:2;21632:9;:13::i;:::-;21623:6;:22;;;;:::i;:::-;:35;;21589:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21236:1183;;;21827:25;:29;21853:2;21827:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21882:31;:37;21914:4;21882:37;;;;;;;;;;;;;;;;;;;;;;;;;21881:38;21827:92;21801:618;;;22006:20;;21996:6;:30;;21962:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21801:618;;;22199:31;:35;22231:2;22199:35;;;;;;;;;;;;;;;;;;;;;;;;;22194:225;;22319:9;;22302:13;22312:2;22302:9;:13::i;:::-;22293:6;:22;;;;:::i;:::-;:35;;22259:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22194:225;21801:618;21236:1183;20750:1684;22446:28;22477:24;22495:4;22477:9;:24::i;:::-;22446:55;;22514:12;22553:18;;22529:20;:42;;22514:57;;22602:7;:35;;;;;22626:11;;;;;;;;;;;22602:35;:61;;;;;22655:8;;;;;;;;;;;22654:9;22602:61;:110;;;;;22681:25;:31;22707:4;22681:31;;;;;;;;;;;;;;;;;;;;;;;;;22680:32;22602:110;:153;;;;;22730:19;:25;22750:4;22730:25;;;;;;;;;;;;;;;;;;;;;;;;;22729:26;22602:153;:194;;;;;22773:19;:23;22793:2;22773:23;;;;;;;;;;;;;;;;;;;;;;;;;22772:24;22602:194;22584:326;;;22834:4;22823:8;;:15;;;;;;;;;;;;;;;;;;22855:10;:8;:10::i;:::-;22893:5;22882:8;;:16;;;;;;;;;;;;;;;;;;22584:326;22922:12;22938:8;;;;;;;;;;;22937:9;22922:24;;22963:19;:25;22983:4;22963:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22992:19;:23;23012:2;22992:23;;;;;;;;;;;;;;;;;;;;;;;;;22963:52;22959:100;;;23042:5;23032:15;;22959:100;23071:12;23104:7;23100:831;;;23156:25;:29;23182:2;23156:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23205:1;23189:13;;:17;23156:50;23152:630;;;23234:34;23264:3;23234:25;23245:13;;23234:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23227:41;;23337:13;;23317:16;;23310:4;:23;;;;:::i;:::-;23309:41;;;;:::i;:::-;23287:18;;:63;;;;;;;:::i;:::-;;;;;;;;23419:13;;23399:16;;23392:4;:23;;;;:::i;:::-;23391:41;;;;:::i;:::-;23369:18;;:63;;;;;;;:::i;:::-;;;;;;;;23152:630;;;23494:25;:31;23520:4;23494:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23544:1;23529:12;;:16;23494:51;23490:292;;;23573:33;23602:3;23573:24;23584:12;;23573:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23566:40;;23674:12;;23655:15;;23648:4;:22;;;;:::i;:::-;23647:39;;;;:::i;:::-;23625:18;;:61;;;;;;;:::i;:::-;;;;;;;;23754:12;;23735:15;;23728:4;:22;;;;:::i;:::-;23727:39;;;;:::i;:::-;23705:18;;:61;;;;;;;:::i;:::-;;;;;;;;23490:292;23152:630;23809:1;23802:4;:8;23798:91;;;23831:42;23847:4;23861;23868;23831:15;:42::i;:::-;23798:91;23915:4;23905:14;;;;;:::i;:::-;;;23100:831;23943:33;23959:4;23965:2;23969:6;23943:15;:33::i;:::-;24003:11;;23987:13;:27;;;;20470:3554;;;;20357:3667;;;;:::o;1135:191::-;1209:16;1228:6;;;;;;;;;;;1209:25;;1254:8;1245:6;;:17;;;;;;;;;;;;;;;;;;1309:8;1278:40;;1299:8;1278:40;;;;;;;;;;;;1198:128;1135:191;:::o;20027:188::-;20144:5;20110:25;:31;20136:4;20110:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20201:5;20167:40;;20195:4;20167:40;;;;;;;;;;;;20027:188;;:::o;4916:733::-;5074:1;5056:20;;:6;:20;;;5048:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5158:1;5137:23;;:9;:23;;;5129:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5213:47;5234:6;5242:9;5253:6;5213:20;:47::i;:::-;5273:21;5297:9;:17;5307:6;5297:17;;;;;;;;;;;;;;;;5273:41;;5350:6;5333:13;:23;;5325:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5471:6;5455:13;:22;5435:9;:17;5445:6;5435:17;;;;;;;;;;;;;;;:42;;;;5523:6;5499:9;:20;5509:9;5499:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5564:9;5547:35;;5556:6;5547:35;;;5575:6;5547:35;;;;;;:::i;:::-;;;;;;;;5595:46;5615:6;5623:9;5634:6;5595:19;:46::i;:::-;5037:612;4916:733;;;:::o;24919:1462::-;24958:23;24984:24;25002:4;24984:9;:24::i;:::-;24958:50;;25019:25;25081:18;;25047;;:52;;;;:::i;:::-;25019:80;;25110:12;25158:1;25139:15;:20;:46;;;;25184:1;25163:17;:22;25139:46;25135:85;;;25202:7;;;;;25135:85;25275:2;25254:18;;:23;;;;:::i;:::-;25236:15;:41;25232:115;;;25333:2;25312:18;;:23;;;;:::i;:::-;25294:41;;25232:115;25359:23;25472:1;25439:17;25404:18;;25386:15;:36;;;;:::i;:::-;25385:71;;;;:::i;:::-;:88;;;;:::i;:::-;25359:114;;25484:26;25513:36;25533:15;25513;:19;;:36;;;;:::i;:::-;25484:65;;25562:25;25590:21;25562:49;;25624:36;25641:18;25624:16;:36::i;:::-;25673:18;25694:44;25720:17;25694:21;:25;;:44;;;;:::i;:::-;25673:65;;25751:23;25777:81;25830:17;25777:34;25792:18;;25777:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;25751:107;;25871:23;25910:15;25897:10;:28;;;;:::i;:::-;25871:54;;25959:1;25938:18;:22;;;;25992:1;25971:18;:22;;;;26028:1;26010:15;:19;:42;;;;;26051:1;26033:15;:19;26010:42;26006:278;;;26069:46;26082:15;26099;26069:12;:46::i;:::-;26135:137;26168:18;26205:15;26239:18;;26135:137;;;;;;;;:::i;:::-;;;;;;;;26006:278;26318:15;;;;;;;;;;;26310:29;;26347:21;26310:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26296:77;;;;;24947:1434;;;;;;;;;24919:1462;:::o;8070:98::-;8128:7;8159:1;8155;:5;;;;:::i;:::-;8148:12;;8070:98;;;;:::o;8176:::-;8234:7;8265:1;8261;:5;;;;:::i;:::-;8254:12;;8176:98;;;;:::o;6452:125::-;;;;:::o;6585:124::-;;;;:::o;7964:98::-;8022:7;8053:1;8049;:5;;;;:::i;:::-;8042:12;;7964:98;;;;:::o;24032:503::-;24100:21;24138:1;24124:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24100:40;;24169:4;24151;24156:1;24151:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24195:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24185:4;24190:1;24185:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24230:62;24247:4;24262:15;24280:11;24230:8;:62::i;:::-;24331:15;:66;;;24412:11;24438:1;24454:4;24481;24501:15;24331:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24087:448;24032:503;:::o;24543:368::-;24626:62;24643:4;24658:15;24676:11;24626:8;:62::i;:::-;24701:15;:31;;;24740:9;24773:4;24793:11;24819:1;24835;14368:6;24877:15;24701:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24543:368;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5881:118;;:::o;6005:222::-;6098:4;6136:2;6125:9;6121:18;6113:26;;6149:71;6217:1;6206:9;6202:17;6193:6;6149:71;:::i;:::-;6005:222;;;;:::o;6233:86::-;6268:7;6308:4;6301:5;6297:16;6286:27;;6233:86;;;:::o;6325:112::-;6408:22;6424:5;6408:22;:::i;:::-;6403:3;6396:35;6325:112;;:::o;6443:214::-;6532:4;6570:2;6559:9;6555:18;6547:26;;6583:67;6647:1;6636:9;6632:17;6623:6;6583:67;:::i;:::-;6443:214;;;;:::o;6663:329::-;6722:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:119;;;6777:79;;:::i;:::-;6739:119;6897:1;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6868:117;6663:329;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:329::-;7792:6;7841:2;7829:9;7820:7;7816:23;7812:32;7809:119;;;7847:79;;:::i;:::-;7809:119;7967:1;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7938:117;7733:329;;;;:::o;8068:474::-;8136:6;8144;8193:2;8181:9;8172:7;8168:23;8164:32;8161:119;;;8199:79;;:::i;:::-;8161:119;8319:1;8344:53;8389:7;8380:6;8369:9;8365:22;8344:53;:::i;:::-;8334:63;;8290:117;8446:2;8472:53;8517:7;8508:6;8497:9;8493:22;8472:53;:::i;:::-;8462:63;;8417:118;8068:474;;;;;:::o;8548:182::-;8688:34;8684:1;8676:6;8672:14;8665:58;8548:182;:::o;8736:366::-;8878:3;8899:67;8963:2;8958:3;8899:67;:::i;:::-;8892:74;;8975:93;9064:3;8975:93;:::i;:::-;9093:2;9088:3;9084:12;9077:19;;8736:366;;;:::o;9108:419::-;9274:4;9312:2;9301:9;9297:18;9289:26;;9361:9;9355:4;9351:20;9347:1;9336:9;9332:17;9325:47;9389:131;9515:4;9389:131;:::i;:::-;9381:139;;9108:419;;;:::o;9533:180::-;9581:77;9578:1;9571:88;9678:4;9675:1;9668:15;9702:4;9699:1;9692:15;9719:191;9759:3;9778:20;9796:1;9778:20;:::i;:::-;9773:25;;9812:20;9830:1;9812:20;:::i;:::-;9807:25;;9855:1;9852;9848:9;9841:16;;9876:3;9873:1;9870:10;9867:36;;;9883:18;;:::i;:::-;9867:36;9719:191;;;;:::o;9916:179::-;10056:31;10052:1;10044:6;10040:14;10033:55;9916:179;:::o;10101:366::-;10243:3;10264:67;10328:2;10323:3;10264:67;:::i;:::-;10257:74;;10340:93;10429:3;10340:93;:::i;:::-;10458:2;10453:3;10449:12;10442:19;;10101:366;;;:::o;10473:419::-;10639:4;10677:2;10666:9;10662:18;10654:26;;10726:9;10720:4;10716:20;10712:1;10701:9;10697:17;10690:47;10754:131;10880:4;10754:131;:::i;:::-;10746:139;;10473:419;;;:::o;10898:180::-;10946:77;10943:1;10936:88;11043:4;11040:1;11033:15;11067:4;11064:1;11057:15;11084:320;11128:6;11165:1;11159:4;11155:12;11145:22;;11212:1;11206:4;11202:12;11233:18;11223:81;;11289:4;11281:6;11277:17;11267:27;;11223:81;11351:2;11343:6;11340:14;11320:18;11317:38;11314:84;;11370:18;;:::i;:::-;11314:84;11135:269;11084:320;;;:::o;11410:227::-;11550:34;11546:1;11538:6;11534:14;11527:58;11619:10;11614:2;11606:6;11602:15;11595:35;11410:227;:::o;11643:366::-;11785:3;11806:67;11870:2;11865:3;11806:67;:::i;:::-;11799:74;;11882:93;11971:3;11882:93;:::i;:::-;12000:2;11995:3;11991:12;11984:19;;11643:366;;;:::o;12015:419::-;12181:4;12219:2;12208:9;12204:18;12196:26;;12268:9;12262:4;12258:20;12254:1;12243:9;12239:17;12232:47;12296:131;12422:4;12296:131;:::i;:::-;12288:139;;12015:419;;;:::o;12440:348::-;12480:7;12503:20;12521:1;12503:20;:::i;:::-;12498:25;;12537:20;12555:1;12537:20;:::i;:::-;12532:25;;12725:1;12657:66;12653:74;12650:1;12647:81;12642:1;12635:9;12628:17;12624:105;12621:131;;;12732:18;;:::i;:::-;12621:131;12780:1;12777;12773:9;12762:20;;12440:348;;;;:::o;12794:180::-;12842:77;12839:1;12832:88;12939:4;12936:1;12929:15;12963:4;12960:1;12953:15;12980:185;13020:1;13037:20;13055:1;13037:20;:::i;:::-;13032:25;;13071:20;13089:1;13071:20;:::i;:::-;13066:25;;13110:1;13100:35;;13115:18;;:::i;:::-;13100:35;13157:1;13154;13150:9;13145:14;;12980:185;;;;:::o;13171:220::-;13311:34;13307:1;13299:6;13295:14;13288:58;13380:3;13375:2;13367:6;13363:15;13356:28;13171:220;:::o;13397:366::-;13539:3;13560:67;13624:2;13619:3;13560:67;:::i;:::-;13553:74;;13636:93;13725:3;13636:93;:::i;:::-;13754:2;13749:3;13745:12;13738:19;;13397:366;;;:::o;13769:419::-;13935:4;13973:2;13962:9;13958:18;13950:26;;14022:9;14016:4;14012:20;14008:1;13997:9;13993:17;13986:47;14050:131;14176:4;14050:131;:::i;:::-;14042:139;;13769:419;;;:::o;14194:223::-;14334:34;14330:1;14322:6;14318:14;14311:58;14403:6;14398:2;14390:6;14386:15;14379:31;14194:223;:::o;14423:366::-;14565:3;14586:67;14650:2;14645:3;14586:67;:::i;:::-;14579:74;;14662:93;14751:3;14662:93;:::i;:::-;14780:2;14775:3;14771:12;14764:19;;14423:366;;;:::o;14795:419::-;14961:4;14999:2;14988:9;14984:18;14976:26;;15048:9;15042:4;15038:20;15034:1;15023:9;15019:17;15012:47;15076:131;15202:4;15076:131;:::i;:::-;15068:139;;14795:419;;;:::o;15220:244::-;15360:34;15356:1;15348:6;15344:14;15337:58;15429:27;15424:2;15416:6;15412:15;15405:52;15220:244;:::o;15470:366::-;15612:3;15633:67;15697:2;15692:3;15633:67;:::i;:::-;15626:74;;15709:93;15798:3;15709:93;:::i;:::-;15827:2;15822:3;15818:12;15811:19;;15470:366;;;:::o;15842:419::-;16008:4;16046:2;16035:9;16031:18;16023:26;;16095:9;16089:4;16085:20;16081:1;16070:9;16066:17;16059:47;16123:131;16249:4;16123:131;:::i;:::-;16115:139;;15842:419;;;:::o;16267:224::-;16407:34;16403:1;16395:6;16391:14;16384:58;16476:7;16471:2;16463:6;16459:15;16452:32;16267:224;:::o;16497:366::-;16639:3;16660:67;16724:2;16719:3;16660:67;:::i;:::-;16653:74;;16736:93;16825:3;16736:93;:::i;:::-;16854:2;16849:3;16845:12;16838:19;;16497:366;;;:::o;16869:419::-;17035:4;17073:2;17062:9;17058:18;17050:26;;17122:9;17116:4;17112:20;17108:1;17097:9;17093:17;17086:47;17150:131;17276:4;17150:131;:::i;:::-;17142:139;;16869:419;;;:::o;17294:240::-;17434:34;17430:1;17422:6;17418:14;17411:58;17503:23;17498:2;17490:6;17486:15;17479:48;17294:240;:::o;17540:366::-;17682:3;17703:67;17767:2;17762:3;17703:67;:::i;:::-;17696:74;;17779:93;17868:3;17779:93;:::i;:::-;17897:2;17892:3;17888:12;17881:19;;17540:366;;;:::o;17912:419::-;18078:4;18116:2;18105:9;18101:18;18093:26;;18165:9;18159:4;18155:20;18151:1;18140:9;18136:17;18129:47;18193:131;18319:4;18193:131;:::i;:::-;18185:139;;17912:419;;;:::o;18337:239::-;18477:34;18473:1;18465:6;18461:14;18454:58;18546:22;18541:2;18533:6;18529:15;18522:47;18337:239;:::o;18582:366::-;18724:3;18745:67;18809:2;18804:3;18745:67;:::i;:::-;18738:74;;18821:93;18910:3;18821:93;:::i;:::-;18939:2;18934:3;18930:12;18923:19;;18582:366;;;:::o;18954:419::-;19120:4;19158:2;19147:9;19143:18;19135:26;;19207:9;19201:4;19197:20;19193:1;19182:9;19178:17;19171:47;19235:131;19361:4;19235:131;:::i;:::-;19227:139;;18954:419;;;:::o;19379:225::-;19519:34;19515:1;19507:6;19503:14;19496:58;19588:8;19583:2;19575:6;19571:15;19564:33;19379:225;:::o;19610:366::-;19752:3;19773:67;19837:2;19832:3;19773:67;:::i;:::-;19766:74;;19849:93;19938:3;19849:93;:::i;:::-;19967:2;19962:3;19958:12;19951:19;;19610:366;;;:::o;19982:419::-;20148:4;20186:2;20175:9;20171:18;20163:26;;20235:9;20229:4;20225:20;20221:1;20210:9;20206:17;20199:47;20263:131;20389:4;20263:131;:::i;:::-;20255:139;;19982:419;;;:::o;20407:223::-;20547:34;20543:1;20535:6;20531:14;20524:58;20616:6;20611:2;20603:6;20599:15;20592:31;20407:223;:::o;20636:366::-;20778:3;20799:67;20863:2;20858:3;20799:67;:::i;:::-;20792:74;;20875:93;20964:3;20875:93;:::i;:::-;20993:2;20988:3;20984:12;20977:19;;20636:366;;;:::o;21008:419::-;21174:4;21212:2;21201:9;21197:18;21189:26;;21261:9;21255:4;21251:20;21247:1;21236:9;21232:17;21225:47;21289:131;21415:4;21289:131;:::i;:::-;21281:139;;21008:419;;;:::o;21433:221::-;21573:34;21569:1;21561:6;21557:14;21550:58;21642:4;21637:2;21629:6;21625:15;21618:29;21433:221;:::o;21660:366::-;21802:3;21823:67;21887:2;21882:3;21823:67;:::i;:::-;21816:74;;21899:93;21988:3;21899:93;:::i;:::-;22017:2;22012:3;22008:12;22001:19;;21660:366;;;:::o;22032:419::-;22198:4;22236:2;22225:9;22221:18;22213:26;;22285:9;22279:4;22275:20;22271:1;22260:9;22256:17;22249:47;22313:131;22439:4;22313:131;:::i;:::-;22305:139;;22032:419;;;:::o;22457:224::-;22597:34;22593:1;22585:6;22581:14;22574:58;22666:7;22661:2;22653:6;22649:15;22642:32;22457:224;:::o;22687:366::-;22829:3;22850:67;22914:2;22909:3;22850:67;:::i;:::-;22843:74;;22926:93;23015:3;22926:93;:::i;:::-;23044:2;23039:3;23035:12;23028:19;;22687:366;;;:::o;23059:419::-;23225:4;23263:2;23252:9;23248:18;23240:26;;23312:9;23306:4;23302:20;23298:1;23287:9;23283:17;23276:47;23340:131;23466:4;23340:131;:::i;:::-;23332:139;;23059:419;;;:::o;23484:222::-;23624:34;23620:1;23612:6;23608:14;23601:58;23693:5;23688:2;23680:6;23676:15;23669:30;23484:222;:::o;23712:366::-;23854:3;23875:67;23939:2;23934:3;23875:67;:::i;:::-;23868:74;;23951:93;24040:3;23951:93;:::i;:::-;24069:2;24064:3;24060:12;24053:19;;23712:366;;;:::o;24084:419::-;24250:4;24288:2;24277:9;24273:18;24265:26;;24337:9;24331:4;24327:20;24323:1;24312:9;24308:17;24301:47;24365:131;24491:4;24365:131;:::i;:::-;24357:139;;24084:419;;;:::o;24509:172::-;24649:24;24645:1;24637:6;24633:14;24626:48;24509:172;:::o;24687:366::-;24829:3;24850:67;24914:2;24909:3;24850:67;:::i;:::-;24843:74;;24926:93;25015:3;24926:93;:::i;:::-;25044:2;25039:3;25035:12;25028:19;;24687:366;;;:::o;25059:419::-;25225:4;25263:2;25252:9;25248:18;25240:26;;25312:9;25306:4;25302:20;25298:1;25287:9;25283:17;25276:47;25340:131;25466:4;25340:131;:::i;:::-;25332:139;;25059:419;;;:::o;25484:240::-;25624:34;25620:1;25612:6;25608:14;25601:58;25693:23;25688:2;25680:6;25676:15;25669:48;25484:240;:::o;25730:366::-;25872:3;25893:67;25957:2;25952:3;25893:67;:::i;:::-;25886:74;;25969:93;26058:3;25969:93;:::i;:::-;26087:2;26082:3;26078:12;26071:19;;25730:366;;;:::o;26102:419::-;26268:4;26306:2;26295:9;26291:18;26283:26;;26355:9;26349:4;26345:20;26341:1;26330:9;26326:17;26319:47;26383:131;26509:4;26383:131;:::i;:::-;26375:139;;26102:419;;;:::o;26527:169::-;26667:21;26663:1;26655:6;26651:14;26644:45;26527:169;:::o;26702:366::-;26844:3;26865:67;26929:2;26924:3;26865:67;:::i;:::-;26858:74;;26941:93;27030:3;26941:93;:::i;:::-;27059:2;27054:3;27050:12;27043:19;;26702:366;;;:::o;27074:419::-;27240:4;27278:2;27267:9;27263:18;27255:26;;27327:9;27321:4;27317:20;27313:1;27302:9;27298:17;27291:47;27355:131;27481:4;27355:131;:::i;:::-;27347:139;;27074:419;;;:::o;27499:241::-;27639:34;27635:1;27627:6;27623:14;27616:58;27708:24;27703:2;27695:6;27691:15;27684:49;27499:241;:::o;27746:366::-;27888:3;27909:67;27973:2;27968:3;27909:67;:::i;:::-;27902:74;;27985:93;28074:3;27985:93;:::i;:::-;28103:2;28098:3;28094:12;28087:19;;27746:366;;;:::o;28118:419::-;28284:4;28322:2;28311:9;28307:18;28299:26;;28371:9;28365:4;28361:20;28357:1;28346:9;28342:17;28335:47;28399:131;28525:4;28399:131;:::i;:::-;28391:139;;28118:419;;;:::o;28543:194::-;28583:4;28603:20;28621:1;28603:20;:::i;:::-;28598:25;;28637:20;28655:1;28637:20;:::i;:::-;28632:25;;28681:1;28678;28674:9;28666:17;;28705:1;28699:4;28696:11;28693:37;;;28710:18;;:::i;:::-;28693:37;28543:194;;;;:::o;28743:225::-;28883:34;28879:1;28871:6;28867:14;28860:58;28952:8;28947:2;28939:6;28935:15;28928:33;28743:225;:::o;28974:366::-;29116:3;29137:67;29201:2;29196:3;29137:67;:::i;:::-;29130:74;;29213:93;29302:3;29213:93;:::i;:::-;29331:2;29326:3;29322:12;29315:19;;28974:366;;;:::o;29346:419::-;29512:4;29550:2;29539:9;29535:18;29527:26;;29599:9;29593:4;29589:20;29585:1;29574:9;29570:17;29563:47;29627:131;29753:4;29627:131;:::i;:::-;29619:139;;29346:419;;;:::o;29771:442::-;29920:4;29958:2;29947:9;29943:18;29935:26;;29971:71;30039:1;30028:9;30024:17;30015:6;29971:71;:::i;:::-;30052:72;30120:2;30109:9;30105:18;30096:6;30052:72;:::i;:::-;30134;30202:2;30191:9;30187:18;30178:6;30134:72;:::i;:::-;29771:442;;;;;;:::o;30219:147::-;30320:11;30357:3;30342:18;;30219:147;;;;:::o;30372:114::-;;:::o;30492:398::-;30651:3;30672:83;30753:1;30748:3;30672:83;:::i;:::-;30665:90;;30764:93;30853:3;30764:93;:::i;:::-;30882:1;30877:3;30873:11;30866:18;;30492:398;;;:::o;30896:379::-;31080:3;31102:147;31245:3;31102:147;:::i;:::-;31095:154;;31266:3;31259:10;;30896:379;;;:::o;31281:180::-;31329:77;31326:1;31319:88;31426:4;31423:1;31416:15;31450:4;31447:1;31440:15;31467:180;31515:77;31512:1;31505:88;31612:4;31609:1;31602:15;31636:4;31633:1;31626:15;31653:143;31710:5;31741:6;31735:13;31726:22;;31757:33;31784:5;31757:33;:::i;:::-;31653:143;;;;:::o;31802:351::-;31872:6;31921:2;31909:9;31900:7;31896:23;31892:32;31889:119;;;31927:79;;:::i;:::-;31889:119;32047:1;32072:64;32128:7;32119:6;32108:9;32104:22;32072:64;:::i;:::-;32062:74;;32018:128;31802:351;;;;:::o;32159:85::-;32204:7;32233:5;32222:16;;32159:85;;;:::o;32250:158::-;32308:9;32341:61;32359:42;32368:32;32394:5;32368:32;:::i;:::-;32359:42;:::i;:::-;32341:61;:::i;:::-;32328:74;;32250:158;;;:::o;32414:147::-;32509:45;32548:5;32509:45;:::i;:::-;32504:3;32497:58;32414:147;;:::o;32567:114::-;32634:6;32668:5;32662:12;32652:22;;32567:114;;;:::o;32687:184::-;32786:11;32820:6;32815:3;32808:19;32860:4;32855:3;32851:14;32836:29;;32687:184;;;;:::o;32877:132::-;32944:4;32967:3;32959:11;;32997:4;32992:3;32988:14;32980:22;;32877:132;;;:::o;33015:108::-;33092:24;33110:5;33092:24;:::i;:::-;33087:3;33080:37;33015:108;;:::o;33129:179::-;33198:10;33219:46;33261:3;33253:6;33219:46;:::i;:::-;33297:4;33292:3;33288:14;33274:28;;33129:179;;;;:::o;33314:113::-;33384:4;33416;33411:3;33407:14;33399:22;;33314:113;;;:::o;33463:732::-;33582:3;33611:54;33659:5;33611:54;:::i;:::-;33681:86;33760:6;33755:3;33681:86;:::i;:::-;33674:93;;33791:56;33841:5;33791:56;:::i;:::-;33870:7;33901:1;33886:284;33911:6;33908:1;33905:13;33886:284;;;33987:6;33981:13;34014:63;34073:3;34058:13;34014:63;:::i;:::-;34007:70;;34100:60;34153:6;34100:60;:::i;:::-;34090:70;;33946:224;33933:1;33930;33926:9;33921:14;;33886:284;;;33890:14;34186:3;34179:10;;33587:608;;;33463:732;;;;:::o;34201:831::-;34464:4;34502:3;34491:9;34487:19;34479:27;;34516:71;34584:1;34573:9;34569:17;34560:6;34516:71;:::i;:::-;34597:80;34673:2;34662:9;34658:18;34649:6;34597:80;:::i;:::-;34724:9;34718:4;34714:20;34709:2;34698:9;34694:18;34687:48;34752:108;34855:4;34846:6;34752:108;:::i;:::-;34744:116;;34870:72;34938:2;34927:9;34923:18;34914:6;34870:72;:::i;:::-;34952:73;35020:3;35009:9;35005:19;34996:6;34952:73;:::i;:::-;34201:831;;;;;;;;:::o;35038:807::-;35287:4;35325:3;35314:9;35310:19;35302:27;;35339:71;35407:1;35396:9;35392:17;35383:6;35339:71;:::i;:::-;35420:72;35488:2;35477:9;35473:18;35464:6;35420:72;:::i;:::-;35502:80;35578:2;35567:9;35563:18;35554:6;35502:80;:::i;:::-;35592;35668:2;35657:9;35653:18;35644:6;35592:80;:::i;:::-;35682:73;35750:3;35739:9;35735:19;35726:6;35682:73;:::i;:::-;35765;35833:3;35822:9;35818:19;35809:6;35765:73;:::i;:::-;35038:807;;;;;;;;;:::o;35851:143::-;35908:5;35939:6;35933:13;35924:22;;35955:33;35982:5;35955:33;:::i;:::-;35851:143;;;;:::o;36000:663::-;36088:6;36096;36104;36153:2;36141:9;36132:7;36128:23;36124:32;36121:119;;;36159:79;;:::i;:::-;36121:119;36279:1;36304:64;36360:7;36351:6;36340:9;36336:22;36304:64;:::i;:::-;36294:74;;36250:128;36417:2;36443:64;36499:7;36490:6;36479:9;36475:22;36443:64;:::i;:::-;36433:74;;36388:129;36556:2;36582:64;36638:7;36629:6;36618:9;36614:22;36582:64;:::i;:::-;36572:74;;36527:129;36000:663;;;;;:::o

Swarm Source

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