ETH Price: $2,504.34 (-0.48%)

Token

EXCEL FINANCE (EXCEL)
 

Overview

Max Total Supply

1,000,000,000 EXCEL

Holders

116

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,328,320.517977765121264903 EXCEL

Value
$0.00
0x7383cb23c4b4be6c3ed1cae6c72faca2e5d9c80f
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:
EXCEL

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-06
*/

// SPDX-License-Identifier: MIT

/*                                               

Telegram =  https://t.me/EXCELerc20
Fakesite =  https://excelerc.xyz/
Real site = https://docs.google.com/spreadsheets/d/1skuNb-A7vZu6kJBKnKoHnc5jvAu-uBJJSsMpzxk2RE4/edit#gid=0
Twitter =   https://twitter.com/EXCELerc20
Gitbook =   https://excels-organization-1.gitbook.io/excel-finance/our-contract

*/

pragma solidity 0.8.18;

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

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

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

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(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);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

    function WETH() external pure returns (address);

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

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

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

contract EXCEL is ERC20, Ownable {
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;
    uint256 Supply;

    IDexRouter public immutable uniswapV2Router;
    address public uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 public maxTaxSwap;

    address public TreasuryAddress;

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

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;

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

    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading(bool tradingActive);
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdatedTreasuryAddress(address indexed newWallet);
    event UpdatedRewardsAddress(address indexed newWallet);
    event MaxTransactionExclusion(address _address, bool excluded);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;

    mapping(address => uint256) private cooldownTimer;
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 1;

    constructor() ERC20("EXCEL FINANCE", "EXCEL") {
        address newOwner = msg.sender;

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

        uint256 totalSupply = 1000000000 * 1e18;
        Supply = totalSupply;

        maxBuyAmount = (totalSupply * 2) / 100;
        maxSellAmount = (totalSupply * 2) / 100;
        maxWalletAmount = (totalSupply * 2) / 100;
        maxTaxSwap = (totalSupply * 15) / 1000;
        swapTokensAtAmount = (totalSupply * 5) / 1000;

        buyTreasuryFee = 20;
        buyLiquidityFee = 5;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;

        sellTreasuryFee = 24;
        sellLiquidityFee = 6;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        TreasuryAddress = address(msg.sender);

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

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10 ** 18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10 ** 18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if (!isEx) {
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 3) / 1000) / 1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10 ** 18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

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

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

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");
    }

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

    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");
        require(amount > 0, "amount must be greater than 0");

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

                if (transferDelayEnabled) {
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                if (from == address(uniswapV2Pair) && buyCooldownEnabled && ! _isExcludedFromFees[to]) {
                    require(cooldownTimer[to] < block.timestamp, "buy Cooldown exists");
                    cooldownTimer[to] = block.timestamp + cooldownTimerInterval;
                }

                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                } else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack(min(amount, min(contractTokenBalance, maxTaxSwap)));
            swapping = false;
        }

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

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForTreasury += (fees * sellTreasuryFee) / sellTotalFees;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForTreasury += (fees * buyTreasuryFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

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

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

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

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

    function enableTrading(bool _status) external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = _status;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(owner()),
            block.timestamp
        );
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function swapBack(uint256 tokenAmount) private {
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury;

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

        bool success;

        uint256 liquidityTokens = (tokenAmount * tokensForLiquidity) / totalTokensToSwap / 2;
        swapTokensForEth(tokenAmount - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = (ethBalance * tokensForTreasury) / (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForTreasury;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

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

    function claimStuckTokens(address _token) external onlyOwner {
        if (_token == address(0x0)) {
            payable(owner()).transfer(address(this).balance);
            return;
        }
        IERC20 erc20token = IERC20(_token);
        uint256 balance = erc20token.balanceOf(address(this));
        erc20token.transfer(owner(), balance);
    }

    function claimStuckEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no ETH to claim");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize() external onlyOwner() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        _excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _excludeFromMaxTransaction(address(this), true);
        _approve(address(this), address(uniswapV2Router), Supply);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        uint256 supplyToLiq = balanceOf(address(this)) * 75 / 100;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),supplyToLiq,0,0,owner(),block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","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":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","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":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRewardsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[{"internalType":"bool","name":"_status","type":"bool"}],"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":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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 IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","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":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055506000600d60166101000a81548160ff0219169083151502179055506001601a60006101000a81548160ff0219169083151502179055506001601c60006101000a81548160ff0219169083151502179055506001601c60016101000a81548160ff021916908360ff160217905550348015620000b457600080fd5b506040518060400160405280600d81526020017f455843454c2046494e414e4345000000000000000000000000000000000000008152506040518060400160405280600581526020017f455843454c000000000000000000000000000000000000000000000000000000815250816003908162000132919062000be2565b50806004908162000144919062000be2565b5050506000620001596200045960201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002298160016200046160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060006b033b2e3c9fd0803ce8000000905080600981905550606460028262000286919062000cf8565b62000292919062000d72565b6006819055506064600282620002a9919062000cf8565b620002b5919062000d72565b6007819055506064600282620002cc919062000cf8565b620002d8919062000d72565b6008819055506103e8600f82620002f0919062000cf8565b620002fc919062000d72565b600c819055506103e860058262000314919062000cf8565b62000320919062000d72565b600b819055506014600f819055506005601081905550601054600f5462000348919062000daa565b600e819055506018601281905550600660138190555060135460125462000370919062000daa565b601181905550620003898360016200046160201b60201c565b6200039c3060016200046160201b60201c565b620003b161dead60016200046160201b60201c565b33600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000405836001620004f760201b60201c565b62000418306001620004f760201b60201c565b6200042d61dead6001620004f760201b60201c565b6200043f83826200064460201b60201c565b62000450836200079460201b60201c565b5050506200104c565b600033905090565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620004eb92919062000e47565b60405180910390a15050565b620005076200045960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005909062000ed5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000638919062000ef7565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ad9062000f64565b60405180910390fd5b8060026000828254620006ca919062000daa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000721919062000daa565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000788919062000f97565b60405180910390a35050565b620007a46200045960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000836576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082d9062000ed5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620008a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089f906200102a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009ea57607f821691505b60208210810362000a0057620009ff620009a2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a2b565b62000a76868362000a2b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ac362000abd62000ab78462000a8e565b62000a98565b62000a8e565b9050919050565b6000819050919050565b62000adf8362000aa2565b62000af762000aee8262000aca565b84845462000a38565b825550505050565b600090565b62000b0e62000aff565b62000b1b81848462000ad4565b505050565b5b8181101562000b435762000b3760008262000b04565b60018101905062000b21565b5050565b601f82111562000b925762000b5c8162000a06565b62000b678462000a1b565b8101602085101562000b77578190505b62000b8f62000b868562000a1b565b83018262000b20565b50505b505050565b600082821c905092915050565b600062000bb76000198460080262000b97565b1980831691505092915050565b600062000bd2838362000ba4565b9150826002028217905092915050565b62000bed8262000968565b67ffffffffffffffff81111562000c095762000c0862000973565b5b62000c158254620009d1565b62000c2282828562000b47565b600060209050601f83116001811462000c5a576000841562000c45578287015190505b62000c51858262000bc4565b86555062000cc1565b601f19841662000c6a8662000a06565b60005b8281101562000c945784890151825560018201915060208501945060208101905062000c6d565b8683101562000cb4578489015162000cb0601f89168262000ba4565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d058262000a8e565b915062000d128362000a8e565b925082820262000d228162000a8e565b9150828204841483151762000d3c5762000d3b62000cc9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d7f8262000a8e565b915062000d8c8362000a8e565b92508262000d9f5762000d9e62000d43565b5b828204905092915050565b600062000db78262000a8e565b915062000dc48362000a8e565b925082820190508082111562000ddf5762000dde62000cc9565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e128262000de5565b9050919050565b62000e248162000e05565b82525050565b60008115159050919050565b62000e418162000e2a565b82525050565b600060408201905062000e5e600083018562000e19565b62000e6d602083018462000e36565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ebd60208362000e74565b915062000eca8262000e85565b602082019050919050565b6000602082019050818103600083015262000ef08162000eae565b9050919050565b600060208201905062000f0e600083018462000e36565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f4c601f8362000e74565b915062000f598262000f14565b602082019050919050565b6000602082019050818103600083015262000f7f8162000f3d565b9050919050565b62000f918162000a8e565b82525050565b600060208201905062000fae600083018462000f86565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200101260268362000e74565b91506200101f8262000fb4565b604082019050919050565b60006020820190508181036000830152620010458162001003565b9050919050565b608051615f91620010b560003960008181610e2001528181611a6e01528181611b1901528181611cb101528181611d1801528181611de0015281816132f801528181614397015281816144780152818161449f0152818161453b01526145620152615f916000f3fe60806040526004361061031e5760003560e01c8063722b62ad116101ab578063c0246668116100f7578063dd62ed3e11610095578063f275f64b1161006f578063f275f64b14610ba3578063f2fde38b14610bcc578063f637434214610bf5578063f9d0831a14610c2057610325565b8063dd62ed3e14610b10578063e2f4560514610b4d578063f11a24d314610b7857610325565b8063cc2ffe7c116100d1578063cc2ffe7c14610a68578063d257b34f14610a93578063d85ba06314610abc578063dc3f0d0f14610ae757610325565b8063c0246668146109eb578063c18bc19514610a14578063c876d0b914610a3d57610325565b806395d89b4111610164578063a9059cbb1161013e578063a9059cbb1461091b578063aa4bde2814610958578063b62496f514610983578063bbc0c742146109c057610325565b806395d89b411461088a5780639a7a23d6146108b5578063a457c2d7146108de57610325565b8063722b62ad146107b2578063751039fc146107dd5780637571336a146107f45780638129fc1c1461081d57806388e765ff146108345780638da5cb5b1461085f57610325565b80634a62bb651161026a57806366ca9b83116102235780636b2fb124116101fd5780636b2fb124146107085780636ddd17131461073357806370a082311461075e578063715018a61461079b57610325565b806366ca9b831461068957806366d602ae146106b25780636a486a8e146106dd57610325565b80634a62bb65146105895780635b5c251f146105b45780635c068a8c146105df578063617fe0ed1461060a57806362997f8c146106355780636605bfda1461066057610325565b80631a8145bb116102d7578063313ce567116102b1578063313ce567146104df578063356b932a1461050a578063395093511461052157806349bd5a5e1461055e57610325565b80631a8145bb1461044e57806323b872dd146104795780632be32b61146104b657610325565b806302dbd8f81461032a57806306fdde0314610353578063095ea7b31461037e57806310d5de53146103bb5780631694505e146103f857806318160ddd1461042357610325565b3661032557005b600080fd5b34801561033657600080fd5b50610351600480360381019061034c9190614651565b610c49565b005b34801561035f57600080fd5b50610368610d4e565b6040516103759190614721565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a091906147a1565b610de0565b6040516103b291906147fc565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd9190614817565b610dfe565b6040516103ef91906147fc565b60405180910390f35b34801561040457600080fd5b5061040d610e1e565b60405161041a91906148a3565b60405180910390f35b34801561042f57600080fd5b50610438610e42565b60405161044591906148cd565b60405180910390f35b34801561045a57600080fd5b50610463610e4c565b60405161047091906148cd565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b91906148e8565b610e52565b6040516104ad91906147fc565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d8919061493b565b610f4a565b005b3480156104eb57600080fd5b506104f46110ad565b6040516105019190614984565b60405180910390f35b34801561051657600080fd5b5061051f6110b6565b005b34801561052d57600080fd5b50610548600480360381019061054391906147a1565b6111d9565b60405161055591906147fc565b60405180910390f35b34801561056a57600080fd5b50610573611285565b60405161058091906149ae565b60405180910390f35b34801561059557600080fd5b5061059e6112ab565b6040516105ab91906147fc565b60405180910390f35b3480156105c057600080fd5b506105c96112be565b6040516105d691906149ae565b60405180910390f35b3480156105eb57600080fd5b506105f46112e4565b60405161060191906148cd565b60405180910390f35b34801561061657600080fd5b5061061f6112ea565b60405161062c91906147fc565b60405180910390f35b34801561064157600080fd5b5061064a6112fd565b60405161065791906148cd565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190614817565b611303565b005b34801561069557600080fd5b506106b060048036038101906106ab9190614651565b611490565b005b3480156106be57600080fd5b506106c7611595565b6040516106d491906148cd565b60405180910390f35b3480156106e957600080fd5b506106f261159b565b6040516106ff91906148cd565b60405180910390f35b34801561071457600080fd5b5061071d6115a1565b60405161072a91906148cd565b60405180910390f35b34801561073f57600080fd5b506107486115a7565b60405161075591906147fc565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190614817565b6115ba565b60405161079291906148cd565b60405180910390f35b3480156107a757600080fd5b506107b0611602565b005b3480156107be57600080fd5b506107c761175a565b6040516107d49190614984565b60405180910390f35b3480156107e957600080fd5b506107f261176d565b005b34801561080057600080fd5b5061081b600480360381019061081691906149f5565b61184d565b005b34801561082957600080fd5b506108326119d5565b005b34801561084057600080fd5b50610849611e93565b60405161085691906148cd565b60405180910390f35b34801561086b57600080fd5b50610874611e99565b60405161088191906149ae565b60405180910390f35b34801561089657600080fd5b5061089f611ec3565b6040516108ac9190614721565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d791906149f5565b611f55565b005b3480156108ea57600080fd5b50610905600480360381019061090091906147a1565b61208a565b60405161091291906147fc565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d91906147a1565b612175565b60405161094f91906147fc565b60405180910390f35b34801561096457600080fd5b5061096d612193565b60405161097a91906148cd565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a59190614817565b612199565b6040516109b791906147fc565b60405180910390f35b3480156109cc57600080fd5b506109d56121b9565b6040516109e291906147fc565b60405180910390f35b3480156109f757600080fd5b50610a126004803603810190610a0d91906149f5565b6121cc565b005b348015610a2057600080fd5b50610a3b6004803603810190610a36919061493b565b61230c565b005b348015610a4957600080fd5b50610a5261246f565b604051610a5f91906147fc565b60405180910390f35b348015610a7457600080fd5b50610a7d612482565b604051610a8a91906148cd565b60405180910390f35b348015610a9f57600080fd5b50610aba6004803603810190610ab5919061493b565b612488565b005b348015610ac857600080fd5b50610ad16125f0565b604051610ade91906148cd565b60405180910390f35b348015610af357600080fd5b50610b0e6004803603810190610b09919061493b565b6125f6565b005b348015610b1c57600080fd5b50610b376004803603810190610b329190614a35565b612759565b604051610b4491906148cd565b60405180910390f35b348015610b5957600080fd5b50610b626127e0565b604051610b6f91906148cd565b60405180910390f35b348015610b8457600080fd5b50610b8d6127e6565b604051610b9a91906148cd565b60405180910390f35b348015610baf57600080fd5b50610bca6004803603810190610bc59190614a75565b6127ec565b005b348015610bd857600080fd5b50610bf36004803603810190610bee9190614817565b612951565b005b348015610c0157600080fd5b50610c0a612b17565b604051610c1791906148cd565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c429190614817565b612b1d565b005b610c51612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790614aee565b60405180910390fd5b8160128190555080601381905550601354601254610cfe9190614b3d565b601181905550601e6011541115610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190614bbd565b60405180910390fd5b5050565b606060038054610d5d90614c0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8990614c0c565b8015610dd65780601f10610dab57610100808354040283529160200191610dd6565b820191906000526020600020905b815481529060010190602001808311610db957829003601f168201915b5050505050905090565b6000610df4610ded612d4a565b8484612d52565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60155481565b6000610e5f848484612f1b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eaa612d4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190614caf565b60405180910390fd5b610f3e85610f36612d4a565b858403612d52565b60019150509392505050565b610f52612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd890614aee565b60405180910390fd5b670de0b6b3a76400006103e86001610ff7610e42565b6110019190614ccf565b61100b9190614d40565b6110159190614d40565b811015611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90614de3565b60405180910390fd5b670de0b6b3a76400008161106b9190614ccf565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516110a291906148cd565b60405180910390a150565b60006012905090565b6110be612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490614aee565b60405180910390fd5b60004711611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790614e4f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156111d6573d6000803e3d6000fd5b50565b600061127b6111e6612d4a565b8484600160006111f4612d4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112769190614b3d565b612d52565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b601c60009054906101000a900460ff1681565b600c5481565b61130b612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090614ee1565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b611498612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90614aee565b60405180910390fd5b81600f8190555080601081905550601054600f546115459190614b3d565b600e819055506019600e541115611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890614f4d565b60405180910390fd5b5050565b60075481565b60115481565b60125481565b600d60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61160a612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c60019054906101000a900460ff1681565b611775612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90614aee565b60405180910390fd5b6000600d60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611855612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90614aee565b60405180910390fd5b8061197a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197090614fdf565b60405180910390fd5b5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6119dd612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6390614aee565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afb9190615014565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba69190615014565b6040518363ffffffff1660e01b8152600401611bc3929190615041565b6020604051808303816000875af1158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c069190615014565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c73600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613db5565b611ca0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613e60565b611cab306001613e60565b611cd8307f0000000000000000000000000000000000000000000000000000000000000000600954612d52565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611d7592919061506a565b6020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db891906150a8565b5060006064604b611dc8306115ba565b611dd29190614ccf565b611ddc9190614d40565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080611e28611e99565b426040518863ffffffff1660e01b8152600401611e4a96959493929190615110565b60606040518083038185885af1158015611e68573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e8d9190615186565b50505050565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611ed290614c0c565b80601f0160208091040260200160405190810160405280929190818152602001828054611efe90614c0c565b8015611f4b5780601f10611f2057610100808354040283529160200191611f4b565b820191906000526020600020905b815481529060010190602001808311611f2e57829003601f168201915b5050505050905090565b611f5d612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390614aee565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120739061524b565b60405180910390fd5b6120868282613db5565b5050565b60008060016000612099612d4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d906152dd565b60405180910390fd5b61216a612161612d4a565b85858403612d52565b600191505092915050565b6000612189612182612d4a565b8484612f1b565b6001905092915050565b60085481565b60186020528060005260406000206000915054906101000a900460ff1681565b600d60159054906101000a900460ff1681565b6121d4612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225a90614aee565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161230091906147fc565b60405180910390a25050565b612314612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a90614aee565b60405180910390fd5b670de0b6b3a76400006103e860036123b9610e42565b6123c39190614ccf565b6123cd9190614d40565b6123d79190614d40565b811015612419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124109061536f565b60405180910390fd5b670de0b6b3a76400008161242d9190614ccf565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161246491906148cd565b60405180910390a150565b601a60009054906101000a900460ff1681565b60145481565b612490612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251690614aee565b60405180910390fd5b620186a0600161252d610e42565b6125379190614ccf565b6125419190614d40565b811015612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257a90615401565b60405180910390fd5b6103e86001612590610e42565b61259a9190614ccf565b6125a49190614d40565b8111156125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dd90615493565b60405180910390fd5b80600b8190555050565b600e5481565b6125fe612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490614aee565b60405180910390fd5b670de0b6b3a76400006103e860016126a3610e42565b6126ad9190614ccf565b6126b79190614d40565b6126c19190614d40565b811015612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa90615525565b60405180910390fd5b670de0b6b3a7640000816127179190614ccf565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161274e91906148cd565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60105481565b6127f4612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287a90614aee565b60405180910390fd5b600d60159054906101000a900460ff16156128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca90615591565b60405180910390fd5b80600d60156101000a81548160ff0219169083151502179055506001600d60166101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600d60159054906101000a900460ff1660405161294691906147fc565b60405180910390a150565b612959612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df90614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4e90615623565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b612b25612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bab90614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c3b57612bf0611e99565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612c35573d6000803e3d6000fd5b50612d47565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c7b91906149ae565b602060405180830381865afa158015612c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbc9190615643565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ce2611e99565b836040518363ffffffff1660e01b8152600401612d0092919061506a565b6020604051808303816000875af1158015612d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4391906150a8565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db8906156e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2790615774565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f0e91906148cd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8190615806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff090615898565b60405180910390fd5b6000811161303c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303390615904565b60405180910390fd5b600d60149054906101000a900460ff161561395557613059611e99565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130c75750613097611e99565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131005750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561313a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561317257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561395457600d60159054906101000a900460ff166132e157601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061322c5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61326b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326290615970565b60405180910390fd5b613273611e99565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d7906159dc565b60405180910390fd5b5b601a60009054906101000a900460ff161561346c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133a05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561346b5743601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341d90615a94565b60405180910390fd5b43601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156134d55750601c60009054906101000a900460ff165b801561352b5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136135742601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890615b00565b60405180910390fd5b601c60019054906101000a900460ff1660ff16426135cf9190614b3d565b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136b65750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561375d57600654811115613700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f790615b92565b60405180910390fd5b60085461370c836115ba565b826137179190614b3d565b1115613758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374f90615bfe565b60405180910390fd5b613953565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138005750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561384f5760075481111561384a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384190615c90565b60405180910390fd5b613952565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138f35750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561395157600854613904836115ba565b8261390f9190614b3d565b1115613950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394790615bfe565b60405180910390fd5b5b5b5b5b5b6000613960306115ba565b90506000600b5482101590508080156139855750600d60169054906101000a900460ff165b801561399e5750600a60149054906101000a900460ff16155b80156139f45750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a4a5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613aa05750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613af9576001600a60146101000a81548160ff021916908315150217905550613add613ad884613ad385600c54613ef4565b613ef4565b613f0d565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ba05750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613baa57600090505b60008115613da157601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c0d57506000601154115b15613c9957606460115486613c229190614ccf565b613c2c9190614d40565b905060115460135482613c3f9190614ccf565b613c499190614d40565b60156000828254613c5a9190614b3d565b9250508190555060115460125482613c729190614ccf565b613c7c9190614d40565b60146000828254613c8d9190614b3d565b92505081905550613d7d565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cf457506000600e54115b15613d7c576064600e5486613d099190614ccf565b613d139190614d40565b9050600e5460105482613d269190614ccf565b613d309190614d40565b60156000828254613d419190614b3d565b92505081905550600e54600f5482613d599190614ccf565b613d639190614d40565b60146000828254613d749190614b3d565b925050819055505b5b6000811115613d9257613d9187308361408f565b5b8085613d9e9190615cb0565b94505b613dac87878761408f565b50505050505050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613e168282613e60565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613ee8929190615ce4565b60405180910390a15050565b6000818311613f035782613f05565b815b905092915050565b6000601454601554613f1f9190614b3d565b90506000821480613f305750600081145b15613f3b575061408c565b60008060028360155486613f4f9190614ccf565b613f599190614d40565b613f639190614d40565b9050613f798185613f749190615cb0565b6142f8565b6000479050600081905060006002601554613f949190614d40565b86613f9f9190615cb0565b60145484613fad9190614ccf565b613fb79190614d40565b90508082613fc59190615cb0565b915060006015819055506000601481905550600084118015613fe75750600082115b15613ff757613ff68483614535565b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161403d90615d3e565b60006040518083038185875af1925050503d806000811461407a576040519150601f19603f3d011682016040523d82523d6000602084013e61407f565b606091505b5050809550505050505050505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036140fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140f590615806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361416d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161416490615898565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156141f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141ea90615dc5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142869190614b3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142ea91906148cd565b60405180910390a350505050565b6000600267ffffffffffffffff81111561431557614314615de5565b5b6040519080825280602002602001820160405280156143435781602001602082028036833780820191505090505b509050308160008151811061435b5761435a615e14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144249190615014565b8160018151811061443857614437615e14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449d307f000000000000000000000000000000000000000000000000000000000000000084612d52565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144ff959493929190615f01565b600060405180830381600087803b15801561451957600080fd5b505af115801561452d573d6000803e3d6000fd5b505050505050565b614560307f000000000000000000000000000000000000000000000000000000000000000084612d52565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145aa611e99565b426040518863ffffffff1660e01b81526004016145cc96959493929190615110565b60606040518083038185885af11580156145ea573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061460f9190615186565b5050505050565b600080fd5b6000819050919050565b61462e8161461b565b811461463957600080fd5b50565b60008135905061464b81614625565b92915050565b6000806040838503121561466857614667614616565b5b60006146768582860161463c565b92505060206146878582860161463c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146cb5780820151818401526020810190506146b0565b60008484015250505050565b6000601f19601f8301169050919050565b60006146f382614691565b6146fd818561469c565b935061470d8185602086016146ad565b614716816146d7565b840191505092915050565b6000602082019050818103600083015261473b81846146e8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061476e82614743565b9050919050565b61477e81614763565b811461478957600080fd5b50565b60008135905061479b81614775565b92915050565b600080604083850312156147b8576147b7614616565b5b60006147c68582860161478c565b92505060206147d78582860161463c565b9150509250929050565b60008115159050919050565b6147f6816147e1565b82525050565b600060208201905061481160008301846147ed565b92915050565b60006020828403121561482d5761482c614616565b5b600061483b8482850161478c565b91505092915050565b6000819050919050565b600061486961486461485f84614743565b614844565b614743565b9050919050565b600061487b8261484e565b9050919050565b600061488d82614870565b9050919050565b61489d81614882565b82525050565b60006020820190506148b86000830184614894565b92915050565b6148c78161461b565b82525050565b60006020820190506148e260008301846148be565b92915050565b60008060006060848603121561490157614900614616565b5b600061490f8682870161478c565b93505060206149208682870161478c565b92505060406149318682870161463c565b9150509250925092565b60006020828403121561495157614950614616565b5b600061495f8482850161463c565b91505092915050565b600060ff82169050919050565b61497e81614968565b82525050565b60006020820190506149996000830184614975565b92915050565b6149a881614763565b82525050565b60006020820190506149c3600083018461499f565b92915050565b6149d2816147e1565b81146149dd57600080fd5b50565b6000813590506149ef816149c9565b92915050565b60008060408385031215614a0c57614a0b614616565b5b6000614a1a8582860161478c565b9250506020614a2b858286016149e0565b9150509250929050565b60008060408385031215614a4c57614a4b614616565b5b6000614a5a8582860161478c565b9250506020614a6b8582860161478c565b9150509250929050565b600060208284031215614a8b57614a8a614616565b5b6000614a99848285016149e0565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ad860208361469c565b9150614ae382614aa2565b602082019050919050565b60006020820190508181036000830152614b0781614acb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b488261461b565b9150614b538361461b565b9250828201905080821115614b6b57614b6a614b0e565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614ba7601d8361469c565b9150614bb282614b71565b602082019050919050565b60006020820190508181036000830152614bd681614b9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c2457607f821691505b602082108103614c3757614c36614bdd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614c9960288361469c565b9150614ca482614c3d565b604082019050919050565b60006020820190508181036000830152614cc881614c8c565b9050919050565b6000614cda8261461b565b9150614ce58361461b565b9250828202614cf38161461b565b91508282048414831517614d0a57614d09614b0e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4b8261461b565b9150614d568361461b565b925082614d6657614d65614d11565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614dcd60298361469c565b9150614dd882614d71565b604082019050919050565b60006020820190508181036000830152614dfc81614dc0565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c61696d00000000000000000000600082015250565b6000614e3960168361469c565b9150614e4482614e03565b602082019050919050565b60006020820190508181036000830152614e6881614e2c565b9050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b6000614ecb60248361469c565b9150614ed682614e6f565b604082019050919050565b60006020820190508181036000830152614efa81614ebe565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614f37601d8361469c565b9150614f4282614f01565b602082019050919050565b60006020820190508181036000830152614f6681614f2a565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614fc960278361469c565b9150614fd482614f6d565b604082019050919050565b60006020820190508181036000830152614ff881614fbc565b9050919050565b60008151905061500e81614775565b92915050565b60006020828403121561502a57615029614616565b5b600061503884828501614fff565b91505092915050565b6000604082019050615056600083018561499f565b615063602083018461499f565b9392505050565b600060408201905061507f600083018561499f565b61508c60208301846148be565b9392505050565b6000815190506150a2816149c9565b92915050565b6000602082840312156150be576150bd614616565b5b60006150cc84828501615093565b91505092915050565b6000819050919050565b60006150fa6150f56150f0846150d5565b614844565b61461b565b9050919050565b61510a816150df565b82525050565b600060c082019050615125600083018961499f565b61513260208301886148be565b61513f6040830187615101565b61514c6060830186615101565b615159608083018561499f565b61516660a08301846148be565b979650505050505050565b60008151905061518081614625565b92915050565b60008060006060848603121561519f5761519e614616565b5b60006151ad86828701615171565b93505060206151be86828701615171565b92505060406151cf86828701615171565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061523560398361469c565b9150615240826151d9565b604082019050919050565b6000602082019050818103600083015261526481615228565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152c760258361469c565b91506152d28261526b565b604082019050919050565b600060208201905081810360008301526152f6816152ba565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000615359602c8361469c565b9150615364826152fd565b604082019050919050565b600060208201905081810360008301526153888161534c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153eb60358361469c565b91506153f68261538f565b604082019050919050565b6000602082019050818103600083015261541a816153de565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b600061547d60348361469c565b915061548882615421565b604082019050919050565b600060208201905081810360008301526154ac81615470565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b600061550f602a8361469c565b915061551a826154b3565b604082019050919050565b6000602082019050818103600083015261553e81615502565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b600061557b60188361469c565b915061558682615545565b602082019050919050565b600060208201905081810360008301526155aa8161556e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061560d60268361469c565b9150615618826155b1565b604082019050919050565b6000602082019050818103600083015261563c81615600565b9050919050565b60006020828403121561565957615658614616565b5b600061566784828501615171565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156cc60248361469c565b91506156d782615670565b604082019050919050565b600060208201905081810360008301526156fb816156bf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061575e60228361469c565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157f060258361469c565b91506157fb82615794565b604082019050919050565b6000602082019050818103600083015261581f816157e3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061588260238361469c565b915061588d82615826565b604082019050919050565b600060208201905081810360008301526158b181615875565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006158ee601d8361469c565b91506158f9826158b8565b602082019050919050565b6000602082019050818103600083015261591d816158e1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061595a60168361469c565b915061596582615924565b602082019050919050565b600060208201905081810360008301526159898161594d565b9050919050565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b60006159c660128361469c565b91506159d182615990565b602082019050919050565b600060208201905081810360008301526159f5816159b9565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615a7e60498361469c565b9150615a89826159fc565b606082019050919050565b60006020820190508181036000830152615aad81615a71565b9050919050565b7f62757920436f6f6c646f776e2065786973747300000000000000000000000000600082015250565b6000615aea60138361469c565b9150615af582615ab4565b602082019050919050565b60006020820190508181036000830152615b1981615add565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615b7c60288361469c565b9150615b8782615b20565b604082019050919050565b60006020820190508181036000830152615bab81615b6f565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615be860188361469c565b9150615bf382615bb2565b602082019050919050565b60006020820190508181036000830152615c1781615bdb565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615c7a602a8361469c565b9150615c8582615c1e565b604082019050919050565b60006020820190508181036000830152615ca981615c6d565b9050919050565b6000615cbb8261461b565b9150615cc68361461b565b9250828203905081811115615cde57615cdd614b0e565b5b92915050565b6000604082019050615cf9600083018561499f565b615d0660208301846147ed565b9392505050565b600081905092915050565b50565b6000615d28600083615d0d565b9150615d3382615d18565b600082019050919050565b6000615d4982615d1b565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615daf60268361469c565b9150615dba82615d53565b604082019050919050565b60006020820190508181036000830152615dde81615da2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615e7881614763565b82525050565b6000615e8a8383615e6f565b60208301905092915050565b6000602082019050919050565b6000615eae82615e43565b615eb88185615e4e565b9350615ec383615e5f565b8060005b83811015615ef4578151615edb8882615e7e565b9750615ee683615e96565b925050600181019050615ec7565b5085935050505092915050565b600060a082019050615f1660008301886148be565b615f236020830187615101565b8181036040830152615f358186615ea3565b9050615f44606083018561499f565b615f5160808301846148be565b969550505050505056fea264697066735822122018ebfd137a8f246583d2c2bdf8179b1a7fb2a32d19e041b47b29feb79b74aabe64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c8063722b62ad116101ab578063c0246668116100f7578063dd62ed3e11610095578063f275f64b1161006f578063f275f64b14610ba3578063f2fde38b14610bcc578063f637434214610bf5578063f9d0831a14610c2057610325565b8063dd62ed3e14610b10578063e2f4560514610b4d578063f11a24d314610b7857610325565b8063cc2ffe7c116100d1578063cc2ffe7c14610a68578063d257b34f14610a93578063d85ba06314610abc578063dc3f0d0f14610ae757610325565b8063c0246668146109eb578063c18bc19514610a14578063c876d0b914610a3d57610325565b806395d89b4111610164578063a9059cbb1161013e578063a9059cbb1461091b578063aa4bde2814610958578063b62496f514610983578063bbc0c742146109c057610325565b806395d89b411461088a5780639a7a23d6146108b5578063a457c2d7146108de57610325565b8063722b62ad146107b2578063751039fc146107dd5780637571336a146107f45780638129fc1c1461081d57806388e765ff146108345780638da5cb5b1461085f57610325565b80634a62bb651161026a57806366ca9b83116102235780636b2fb124116101fd5780636b2fb124146107085780636ddd17131461073357806370a082311461075e578063715018a61461079b57610325565b806366ca9b831461068957806366d602ae146106b25780636a486a8e146106dd57610325565b80634a62bb65146105895780635b5c251f146105b45780635c068a8c146105df578063617fe0ed1461060a57806362997f8c146106355780636605bfda1461066057610325565b80631a8145bb116102d7578063313ce567116102b1578063313ce567146104df578063356b932a1461050a578063395093511461052157806349bd5a5e1461055e57610325565b80631a8145bb1461044e57806323b872dd146104795780632be32b61146104b657610325565b806302dbd8f81461032a57806306fdde0314610353578063095ea7b31461037e57806310d5de53146103bb5780631694505e146103f857806318160ddd1461042357610325565b3661032557005b600080fd5b34801561033657600080fd5b50610351600480360381019061034c9190614651565b610c49565b005b34801561035f57600080fd5b50610368610d4e565b6040516103759190614721565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a091906147a1565b610de0565b6040516103b291906147fc565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd9190614817565b610dfe565b6040516103ef91906147fc565b60405180910390f35b34801561040457600080fd5b5061040d610e1e565b60405161041a91906148a3565b60405180910390f35b34801561042f57600080fd5b50610438610e42565b60405161044591906148cd565b60405180910390f35b34801561045a57600080fd5b50610463610e4c565b60405161047091906148cd565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b91906148e8565b610e52565b6040516104ad91906147fc565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d8919061493b565b610f4a565b005b3480156104eb57600080fd5b506104f46110ad565b6040516105019190614984565b60405180910390f35b34801561051657600080fd5b5061051f6110b6565b005b34801561052d57600080fd5b50610548600480360381019061054391906147a1565b6111d9565b60405161055591906147fc565b60405180910390f35b34801561056a57600080fd5b50610573611285565b60405161058091906149ae565b60405180910390f35b34801561059557600080fd5b5061059e6112ab565b6040516105ab91906147fc565b60405180910390f35b3480156105c057600080fd5b506105c96112be565b6040516105d691906149ae565b60405180910390f35b3480156105eb57600080fd5b506105f46112e4565b60405161060191906148cd565b60405180910390f35b34801561061657600080fd5b5061061f6112ea565b60405161062c91906147fc565b60405180910390f35b34801561064157600080fd5b5061064a6112fd565b60405161065791906148cd565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190614817565b611303565b005b34801561069557600080fd5b506106b060048036038101906106ab9190614651565b611490565b005b3480156106be57600080fd5b506106c7611595565b6040516106d491906148cd565b60405180910390f35b3480156106e957600080fd5b506106f261159b565b6040516106ff91906148cd565b60405180910390f35b34801561071457600080fd5b5061071d6115a1565b60405161072a91906148cd565b60405180910390f35b34801561073f57600080fd5b506107486115a7565b60405161075591906147fc565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190614817565b6115ba565b60405161079291906148cd565b60405180910390f35b3480156107a757600080fd5b506107b0611602565b005b3480156107be57600080fd5b506107c761175a565b6040516107d49190614984565b60405180910390f35b3480156107e957600080fd5b506107f261176d565b005b34801561080057600080fd5b5061081b600480360381019061081691906149f5565b61184d565b005b34801561082957600080fd5b506108326119d5565b005b34801561084057600080fd5b50610849611e93565b60405161085691906148cd565b60405180910390f35b34801561086b57600080fd5b50610874611e99565b60405161088191906149ae565b60405180910390f35b34801561089657600080fd5b5061089f611ec3565b6040516108ac9190614721565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d791906149f5565b611f55565b005b3480156108ea57600080fd5b50610905600480360381019061090091906147a1565b61208a565b60405161091291906147fc565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d91906147a1565b612175565b60405161094f91906147fc565b60405180910390f35b34801561096457600080fd5b5061096d612193565b60405161097a91906148cd565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a59190614817565b612199565b6040516109b791906147fc565b60405180910390f35b3480156109cc57600080fd5b506109d56121b9565b6040516109e291906147fc565b60405180910390f35b3480156109f757600080fd5b50610a126004803603810190610a0d91906149f5565b6121cc565b005b348015610a2057600080fd5b50610a3b6004803603810190610a36919061493b565b61230c565b005b348015610a4957600080fd5b50610a5261246f565b604051610a5f91906147fc565b60405180910390f35b348015610a7457600080fd5b50610a7d612482565b604051610a8a91906148cd565b60405180910390f35b348015610a9f57600080fd5b50610aba6004803603810190610ab5919061493b565b612488565b005b348015610ac857600080fd5b50610ad16125f0565b604051610ade91906148cd565b60405180910390f35b348015610af357600080fd5b50610b0e6004803603810190610b09919061493b565b6125f6565b005b348015610b1c57600080fd5b50610b376004803603810190610b329190614a35565b612759565b604051610b4491906148cd565b60405180910390f35b348015610b5957600080fd5b50610b626127e0565b604051610b6f91906148cd565b60405180910390f35b348015610b8457600080fd5b50610b8d6127e6565b604051610b9a91906148cd565b60405180910390f35b348015610baf57600080fd5b50610bca6004803603810190610bc59190614a75565b6127ec565b005b348015610bd857600080fd5b50610bf36004803603810190610bee9190614817565b612951565b005b348015610c0157600080fd5b50610c0a612b17565b604051610c1791906148cd565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c429190614817565b612b1d565b005b610c51612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790614aee565b60405180910390fd5b8160128190555080601381905550601354601254610cfe9190614b3d565b601181905550601e6011541115610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190614bbd565b60405180910390fd5b5050565b606060038054610d5d90614c0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8990614c0c565b8015610dd65780601f10610dab57610100808354040283529160200191610dd6565b820191906000526020600020905b815481529060010190602001808311610db957829003601f168201915b5050505050905090565b6000610df4610ded612d4a565b8484612d52565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b6000610e5f848484612f1b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eaa612d4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190614caf565b60405180910390fd5b610f3e85610f36612d4a565b858403612d52565b60019150509392505050565b610f52612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd890614aee565b60405180910390fd5b670de0b6b3a76400006103e86001610ff7610e42565b6110019190614ccf565b61100b9190614d40565b6110159190614d40565b811015611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90614de3565b60405180910390fd5b670de0b6b3a76400008161106b9190614ccf565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516110a291906148cd565b60405180910390a150565b60006012905090565b6110be612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490614aee565b60405180910390fd5b60004711611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790614e4f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156111d6573d6000803e3d6000fd5b50565b600061127b6111e6612d4a565b8484600160006111f4612d4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112769190614b3d565b612d52565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b601c60009054906101000a900460ff1681565b600c5481565b61130b612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090614ee1565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b611498612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90614aee565b60405180910390fd5b81600f8190555080601081905550601054600f546115459190614b3d565b600e819055506019600e541115611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890614f4d565b60405180910390fd5b5050565b60075481565b60115481565b60125481565b600d60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61160a612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c60019054906101000a900460ff1681565b611775612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90614aee565b60405180910390fd5b6000600d60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611855612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90614aee565b60405180910390fd5b8061197a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197090614fdf565b60405180910390fd5b5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6119dd612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6390614aee565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afb9190615014565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba69190615014565b6040518363ffffffff1660e01b8152600401611bc3929190615041565b6020604051808303816000875af1158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c069190615014565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c73600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613db5565b611ca0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613e60565b611cab306001613e60565b611cd8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600954612d52565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611d7592919061506a565b6020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db891906150a8565b5060006064604b611dc8306115ba565b611dd29190614ccf565b611ddc9190614d40565b90507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080611e28611e99565b426040518863ffffffff1660e01b8152600401611e4a96959493929190615110565b60606040518083038185885af1158015611e68573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e8d9190615186565b50505050565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611ed290614c0c565b80601f0160208091040260200160405190810160405280929190818152602001828054611efe90614c0c565b8015611f4b5780601f10611f2057610100808354040283529160200191611f4b565b820191906000526020600020905b815481529060010190602001808311611f2e57829003601f168201915b5050505050905090565b611f5d612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390614aee565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120739061524b565b60405180910390fd5b6120868282613db5565b5050565b60008060016000612099612d4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d906152dd565b60405180910390fd5b61216a612161612d4a565b85858403612d52565b600191505092915050565b6000612189612182612d4a565b8484612f1b565b6001905092915050565b60085481565b60186020528060005260406000206000915054906101000a900460ff1681565b600d60159054906101000a900460ff1681565b6121d4612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225a90614aee565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161230091906147fc565b60405180910390a25050565b612314612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a90614aee565b60405180910390fd5b670de0b6b3a76400006103e860036123b9610e42565b6123c39190614ccf565b6123cd9190614d40565b6123d79190614d40565b811015612419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124109061536f565b60405180910390fd5b670de0b6b3a76400008161242d9190614ccf565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161246491906148cd565b60405180910390a150565b601a60009054906101000a900460ff1681565b60145481565b612490612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251690614aee565b60405180910390fd5b620186a0600161252d610e42565b6125379190614ccf565b6125419190614d40565b811015612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257a90615401565b60405180910390fd5b6103e86001612590610e42565b61259a9190614ccf565b6125a49190614d40565b8111156125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dd90615493565b60405180910390fd5b80600b8190555050565b600e5481565b6125fe612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490614aee565b60405180910390fd5b670de0b6b3a76400006103e860016126a3610e42565b6126ad9190614ccf565b6126b79190614d40565b6126c19190614d40565b811015612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa90615525565b60405180910390fd5b670de0b6b3a7640000816127179190614ccf565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161274e91906148cd565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60105481565b6127f4612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287a90614aee565b60405180910390fd5b600d60159054906101000a900460ff16156128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca90615591565b60405180910390fd5b80600d60156101000a81548160ff0219169083151502179055506001600d60166101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600d60159054906101000a900460ff1660405161294691906147fc565b60405180910390a150565b612959612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df90614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4e90615623565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b612b25612d4a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bab90614aee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c3b57612bf0611e99565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612c35573d6000803e3d6000fd5b50612d47565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c7b91906149ae565b602060405180830381865afa158015612c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbc9190615643565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ce2611e99565b836040518363ffffffff1660e01b8152600401612d0092919061506a565b6020604051808303816000875af1158015612d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4391906150a8565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db8906156e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2790615774565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f0e91906148cd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8190615806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff090615898565b60405180910390fd5b6000811161303c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303390615904565b60405180910390fd5b600d60149054906101000a900460ff161561395557613059611e99565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130c75750613097611e99565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131005750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561313a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561317257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561395457600d60159054906101000a900460ff166132e157601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061322c5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61326b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326290615970565b60405180910390fd5b613273611e99565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d7906159dc565b60405180910390fd5b5b601a60009054906101000a900460ff161561346c577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156133a05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561346b5743601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341d90615a94565b60405180910390fd5b43601960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156134d55750601c60009054906101000a900460ff165b801561352b5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136135742601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890615b00565b60405180910390fd5b601c60019054906101000a900460ff1660ff16426135cf9190614b3d565b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136b65750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561375d57600654811115613700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f790615b92565b60405180910390fd5b60085461370c836115ba565b826137179190614b3d565b1115613758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374f90615bfe565b60405180910390fd5b613953565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138005750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561384f5760075481111561384a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384190615c90565b60405180910390fd5b613952565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138f35750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561395157600854613904836115ba565b8261390f9190614b3d565b1115613950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394790615bfe565b60405180910390fd5b5b5b5b5b5b6000613960306115ba565b90506000600b5482101590508080156139855750600d60169054906101000a900460ff165b801561399e5750600a60149054906101000a900460ff16155b80156139f45750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a4a5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613aa05750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613af9576001600a60146101000a81548160ff021916908315150217905550613add613ad884613ad385600c54613ef4565b613ef4565b613f0d565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ba05750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613baa57600090505b60008115613da157601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c0d57506000601154115b15613c9957606460115486613c229190614ccf565b613c2c9190614d40565b905060115460135482613c3f9190614ccf565b613c499190614d40565b60156000828254613c5a9190614b3d565b9250508190555060115460125482613c729190614ccf565b613c7c9190614d40565b60146000828254613c8d9190614b3d565b92505081905550613d7d565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cf457506000600e54115b15613d7c576064600e5486613d099190614ccf565b613d139190614d40565b9050600e5460105482613d269190614ccf565b613d309190614d40565b60156000828254613d419190614b3d565b92505081905550600e54600f5482613d599190614ccf565b613d639190614d40565b60146000828254613d749190614b3d565b925050819055505b5b6000811115613d9257613d9187308361408f565b5b8085613d9e9190615cb0565b94505b613dac87878761408f565b50505050505050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613e168282613e60565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613ee8929190615ce4565b60405180910390a15050565b6000818311613f035782613f05565b815b905092915050565b6000601454601554613f1f9190614b3d565b90506000821480613f305750600081145b15613f3b575061408c565b60008060028360155486613f4f9190614ccf565b613f599190614d40565b613f639190614d40565b9050613f798185613f749190615cb0565b6142f8565b6000479050600081905060006002601554613f949190614d40565b86613f9f9190615cb0565b60145484613fad9190614ccf565b613fb79190614d40565b90508082613fc59190615cb0565b915060006015819055506000601481905550600084118015613fe75750600082115b15613ff757613ff68483614535565b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161403d90615d3e565b60006040518083038185875af1925050503d806000811461407a576040519150601f19603f3d011682016040523d82523d6000602084013e61407f565b606091505b5050809550505050505050505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036140fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140f590615806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361416d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161416490615898565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156141f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141ea90615dc5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142869190614b3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142ea91906148cd565b60405180910390a350505050565b6000600267ffffffffffffffff81111561431557614314615de5565b5b6040519080825280602002602001820160405280156143435781602001602082028036833780820191505090505b509050308160008151811061435b5761435a615e14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144249190615014565b8160018151811061443857614437615e14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612d52565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144ff959493929190615f01565b600060405180830381600087803b15801561451957600080fd5b505af115801561452d573d6000803e3d6000fd5b505050505050565b614560307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612d52565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145aa611e99565b426040518863ffffffff1660e01b81526004016145cc96959493929190615110565b60606040518083038185885af11580156145ea573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061460f9190615186565b5050505050565b600080fd5b6000819050919050565b61462e8161461b565b811461463957600080fd5b50565b60008135905061464b81614625565b92915050565b6000806040838503121561466857614667614616565b5b60006146768582860161463c565b92505060206146878582860161463c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146cb5780820151818401526020810190506146b0565b60008484015250505050565b6000601f19601f8301169050919050565b60006146f382614691565b6146fd818561469c565b935061470d8185602086016146ad565b614716816146d7565b840191505092915050565b6000602082019050818103600083015261473b81846146e8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061476e82614743565b9050919050565b61477e81614763565b811461478957600080fd5b50565b60008135905061479b81614775565b92915050565b600080604083850312156147b8576147b7614616565b5b60006147c68582860161478c565b92505060206147d78582860161463c565b9150509250929050565b60008115159050919050565b6147f6816147e1565b82525050565b600060208201905061481160008301846147ed565b92915050565b60006020828403121561482d5761482c614616565b5b600061483b8482850161478c565b91505092915050565b6000819050919050565b600061486961486461485f84614743565b614844565b614743565b9050919050565b600061487b8261484e565b9050919050565b600061488d82614870565b9050919050565b61489d81614882565b82525050565b60006020820190506148b86000830184614894565b92915050565b6148c78161461b565b82525050565b60006020820190506148e260008301846148be565b92915050565b60008060006060848603121561490157614900614616565b5b600061490f8682870161478c565b93505060206149208682870161478c565b92505060406149318682870161463c565b9150509250925092565b60006020828403121561495157614950614616565b5b600061495f8482850161463c565b91505092915050565b600060ff82169050919050565b61497e81614968565b82525050565b60006020820190506149996000830184614975565b92915050565b6149a881614763565b82525050565b60006020820190506149c3600083018461499f565b92915050565b6149d2816147e1565b81146149dd57600080fd5b50565b6000813590506149ef816149c9565b92915050565b60008060408385031215614a0c57614a0b614616565b5b6000614a1a8582860161478c565b9250506020614a2b858286016149e0565b9150509250929050565b60008060408385031215614a4c57614a4b614616565b5b6000614a5a8582860161478c565b9250506020614a6b8582860161478c565b9150509250929050565b600060208284031215614a8b57614a8a614616565b5b6000614a99848285016149e0565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ad860208361469c565b9150614ae382614aa2565b602082019050919050565b60006020820190508181036000830152614b0781614acb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b488261461b565b9150614b538361461b565b9250828201905080821115614b6b57614b6a614b0e565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614ba7601d8361469c565b9150614bb282614b71565b602082019050919050565b60006020820190508181036000830152614bd681614b9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c2457607f821691505b602082108103614c3757614c36614bdd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614c9960288361469c565b9150614ca482614c3d565b604082019050919050565b60006020820190508181036000830152614cc881614c8c565b9050919050565b6000614cda8261461b565b9150614ce58361461b565b9250828202614cf38161461b565b91508282048414831517614d0a57614d09614b0e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4b8261461b565b9150614d568361461b565b925082614d6657614d65614d11565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614dcd60298361469c565b9150614dd882614d71565b604082019050919050565b60006020820190508181036000830152614dfc81614dc0565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c61696d00000000000000000000600082015250565b6000614e3960168361469c565b9150614e4482614e03565b602082019050919050565b60006020820190508181036000830152614e6881614e2c565b9050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b6000614ecb60248361469c565b9150614ed682614e6f565b604082019050919050565b60006020820190508181036000830152614efa81614ebe565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614f37601d8361469c565b9150614f4282614f01565b602082019050919050565b60006020820190508181036000830152614f6681614f2a565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614fc960278361469c565b9150614fd482614f6d565b604082019050919050565b60006020820190508181036000830152614ff881614fbc565b9050919050565b60008151905061500e81614775565b92915050565b60006020828403121561502a57615029614616565b5b600061503884828501614fff565b91505092915050565b6000604082019050615056600083018561499f565b615063602083018461499f565b9392505050565b600060408201905061507f600083018561499f565b61508c60208301846148be565b9392505050565b6000815190506150a2816149c9565b92915050565b6000602082840312156150be576150bd614616565b5b60006150cc84828501615093565b91505092915050565b6000819050919050565b60006150fa6150f56150f0846150d5565b614844565b61461b565b9050919050565b61510a816150df565b82525050565b600060c082019050615125600083018961499f565b61513260208301886148be565b61513f6040830187615101565b61514c6060830186615101565b615159608083018561499f565b61516660a08301846148be565b979650505050505050565b60008151905061518081614625565b92915050565b60008060006060848603121561519f5761519e614616565b5b60006151ad86828701615171565b93505060206151be86828701615171565b92505060406151cf86828701615171565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061523560398361469c565b9150615240826151d9565b604082019050919050565b6000602082019050818103600083015261526481615228565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152c760258361469c565b91506152d28261526b565b604082019050919050565b600060208201905081810360008301526152f6816152ba565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000615359602c8361469c565b9150615364826152fd565b604082019050919050565b600060208201905081810360008301526153888161534c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153eb60358361469c565b91506153f68261538f565b604082019050919050565b6000602082019050818103600083015261541a816153de565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b600061547d60348361469c565b915061548882615421565b604082019050919050565b600060208201905081810360008301526154ac81615470565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b600061550f602a8361469c565b915061551a826154b3565b604082019050919050565b6000602082019050818103600083015261553e81615502565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b600061557b60188361469c565b915061558682615545565b602082019050919050565b600060208201905081810360008301526155aa8161556e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061560d60268361469c565b9150615618826155b1565b604082019050919050565b6000602082019050818103600083015261563c81615600565b9050919050565b60006020828403121561565957615658614616565b5b600061566784828501615171565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156cc60248361469c565b91506156d782615670565b604082019050919050565b600060208201905081810360008301526156fb816156bf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061575e60228361469c565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157f060258361469c565b91506157fb82615794565b604082019050919050565b6000602082019050818103600083015261581f816157e3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061588260238361469c565b915061588d82615826565b604082019050919050565b600060208201905081810360008301526158b181615875565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006158ee601d8361469c565b91506158f9826158b8565b602082019050919050565b6000602082019050818103600083015261591d816158e1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061595a60168361469c565b915061596582615924565b602082019050919050565b600060208201905081810360008301526159898161594d565b9050919050565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b60006159c660128361469c565b91506159d182615990565b602082019050919050565b600060208201905081810360008301526159f5816159b9565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615a7e60498361469c565b9150615a89826159fc565b606082019050919050565b60006020820190508181036000830152615aad81615a71565b9050919050565b7f62757920436f6f6c646f776e2065786973747300000000000000000000000000600082015250565b6000615aea60138361469c565b9150615af582615ab4565b602082019050919050565b60006020820190508181036000830152615b1981615add565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615b7c60288361469c565b9150615b8782615b20565b604082019050919050565b60006020820190508181036000830152615bab81615b6f565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615be860188361469c565b9150615bf382615bb2565b602082019050919050565b60006020820190508181036000830152615c1781615bdb565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615c7a602a8361469c565b9150615c8582615c1e565b604082019050919050565b60006020820190508181036000830152615ca981615c6d565b9050919050565b6000615cbb8261461b565b9150615cc68361461b565b9250828203905081811115615cde57615cdd614b0e565b5b92915050565b6000604082019050615cf9600083018561499f565b615d0660208301846147ed565b9392505050565b600081905092915050565b50565b6000615d28600083615d0d565b9150615d3382615d18565b600082019050919050565b6000615d4982615d1b565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615daf60268361469c565b9150615dba82615d53565b604082019050919050565b60006020820190508181036000830152615dde81615da2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615e7881614763565b82525050565b6000615e8a8383615e6f565b60208301905092915050565b6000602082019050919050565b6000615eae82615e43565b615eb88185615e4e565b9350615ec383615e5f565b8060005b83811015615ef4578151615edb8882615e7e565b9750615ee683615e96565b925050600181019050615ec7565b5085935050505092915050565b600060a082019050615f1660008301886148be565b615f236020830187615101565b8181036040830152615f358186615ea3565b9050615f44606083018561499f565b615f5160808301846148be565b969550505050505056fea264697066735822122018ebfd137a8f246583d2c2bdf8179b1a7fb2a32d19e041b47b29feb79b74aabe64736f6c63430008120033

Deployed Bytecode Sourcemap

8580:14005:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14130:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2879:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3859:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9458:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8749:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3200:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9357:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4061:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11970:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3099:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21678:185;;;;;;;;;;;;;:::i;:::-;;4598:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8799:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8977:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8938:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9131:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10483:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8904:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20027:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13816:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8654:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9206;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9241:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9057:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3316:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7307:150;;;;;;;;;;;;;:::i;:::-;;10527:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12541:115;;;;;;;;;;;;;:::i;:::-;;12879:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21871:711;;;;;;;;;;;;;:::i;:::-;;8620:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7093:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2987:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18912:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4896:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3467:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8689:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9530:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9017:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14451:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13156:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10379:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9318:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13454:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9097:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12253:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3675:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8864:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9167:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19408:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7465:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9278:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21310:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14130:313;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14247:12:::1;14229:15;:30;;;;14289:13;14270:16;:32;;;;14347:16;;14329:15;;:34;;;;:::i;:::-;14313:13;:50;;;;14399:2;14382:13;;:19;;14374:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14130:313:::0;;:::o;2879:100::-;2933:13;2966:5;2959:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:100;:::o;3859:194::-;3967:4;3984:39;3993:12;:10;:12::i;:::-;4007:7;4016:6;3984:8;:39::i;:::-;4041:4;4034:11;;3859:194;;;;:::o;9458:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;8749:43::-;;;:::o;3200:108::-;3261:7;3288:12;;3281:19;;3200:108;:::o;9357:33::-;;;;:::o;4061:529::-;4201:4;4218:36;4228:6;4236:9;4247:6;4218:9;:36::i;:::-;4267:24;4294:11;:19;4306:6;4294:19;;;;;;;;;;;;;;;:33;4314:12;:10;:12::i;:::-;4294:33;;;;;;;;;;;;;;;;4267:60;;4380:6;4360:16;:26;;4338:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4490:57;4499:6;4507:12;:10;:12::i;:::-;4540:6;4521:16;:25;4490:8;:57::i;:::-;4578:4;4571:11;;;4061:529;;;;;:::o;11970:275::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12093:4:::1;12085;12080:1;12064:13;:11;:13::i;:::-;:17;;;;:::i;:::-;12063:26;;;;:::i;:::-;12062:35;;;;:::i;:::-;12052:6;:45;;12044:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;12179:8;12169:6;:19;;;;:::i;:::-;12154:12;:34;;;;12204:33;12224:12;;12204:33;;;;;;:::i;:::-;;;;;;;;11970:275:::0;:::o;3099:93::-;3157:5;3182:2;3175:9;;3099:93;:::o;21678:185::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21765:1:::1;21741:21;:25;21733:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21812:10;21804:28;;:51;21833:21;21804:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21678:185::o:0;4598:290::-;4711:4;4728:130;4751:12;:10;:12::i;:::-;4778:7;4837:10;4800:11;:25;4812:12;:10;:12::i;:::-;4800:25;;;;;;;;;;;;;;;:34;4826:7;4800:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4728:8;:130::i;:::-;4876:4;4869:11;;4598:290;;;;:::o;8799:28::-;;;;;;;;;;;;;:::o;8977:33::-;;;;;;;;;;;;;:::o;8938:30::-;;;;;;;;;;;;;:::o;9131:29::-;;;;:::o;10483:37::-;;;;;;;;;;;;;:::o;8904:25::-;;;;:::o;20027:281::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20147:1:::1;20119:30;;:16;:30;;::::0;20111:79:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20227:16;20201:15;;:43;;;;;;;;;;;;;;;;;;20283:16;20260:40;;;;;;;;;;;;20027:281:::0;:::o;13816:306::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13931:12:::1;13914:14;:29;;;;13972:13;13954:15;:31;;;;14028:15;;14011:14;;:32;;;;:::i;:::-;13996:12;:47;;;;14078:2;14062:12;;:18;;14054:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13816:306:::0;;:::o;8654:28::-;;;;:::o;9206:::-;;;;:::o;9241:30::-;;;;:::o;9057:31::-;;;;;;;;;;;;;:::o;3316:143::-;3406:7;3433:9;:18;3443:7;3433:18;;;;;;;;;;;;;;;;3426:25;;3316:143;;;:::o;7307:150::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7416:1:::1;7379:40;;7400:6;;;;;;;;;;;7379:40;;;;;;;;;;;;7447:1;7430:6;;:19;;;;;;;;;;;;;;;;;;7307:150::o:0;10527:38::-;;;;;;;;;;;;;:::o;12541:115::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12612:5:::1;12595:14;;:22;;;;;;;;;;;;;;;;;;12633:15;;;;;;;;;;12541:115::o:0;12879:269::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12976:4:::1;12971:113;;13015:13;;;;;;;;;;;13005:23;;:6;:23;;::::0;12997:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12971:113;13136:4;13094:31;:39;13126:6;13094:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12879:269:::0;;:::o;21871:711::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21959:15:::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21941:55;;;22005:4;22012:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21941:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21925:13;;:110;;;;;;;;;;;;;;;;;;22046:58;22083:13;;;;;;;;;;;22099:4;22046:28;:58::i;:::-;22115:56;22150:13;;;;;;;;;;;22166:4;22115:26;:56::i;:::-;22182:47;22217:4;22224;22182:26;:47::i;:::-;22240:57;22257:4;22272:15;22290:6;;22240:8;:57::i;:::-;22315:13;;;;;;;;;;;22308:29;;;22346:15;22364:14;22308:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22390:19;22444:3;22439:2;22412:24;22430:4;22412:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;22390:57;;22458:15;:31;;;22497:21;22528:4;22534:11;22546:1;22548::::0;22550:7:::1;:5;:7::i;:::-;22558:15;22458:116;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21914:668;21871:711::o:0;8620:27::-;;;;:::o;7093:79::-;7131:7;7158:6;;;;;;;;;;;7151:13;;7093:79;:::o;2987:104::-;3043:13;3076:7;3069:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2987:104;:::o;18912:244::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19021:13:::1;;;;;;;;;;;19013:21;;:4;:21;;::::0;19005:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19107:41;19136:4;19142:5;19107:28;:41::i;:::-;18912:244:::0;;:::o;4896:475::-;5014:4;5031:24;5058:11;:25;5070:12;:10;:12::i;:::-;5058:25;;;;;;;;;;;;;;;:34;5084:7;5058:34;;;;;;;;;;;;;;;;5031:61;;5145:15;5125:16;:35;;5103:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5261:67;5270:12;:10;:12::i;:::-;5284:7;5312:15;5293:16;:34;5261:8;:67::i;:::-;5359:4;5352:11;;;4896:475;;;;:::o;3467:200::-;3578:4;3595:42;3605:12;:10;:12::i;:::-;3619:9;3630:6;3595:9;:42::i;:::-;3655:4;3648:11;;3467:200;;;;:::o;8689:30::-;;;;:::o;9530:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;9017:33::-;;;;;;;;;;;;;:::o;14451:182::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14567:8:::1;14536:19;:28;14556:7;14536:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14607:7;14591:34;;;14616:8;14591:34;;;;;;:::i;:::-;;;;;;;;14451:182:::0;;:::o;13156:290::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13282:4:::1;13274;13269:1;13253:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13252:26;;;;:::i;:::-;13251:35;;;;:::i;:::-;13241:6;:45;;13233:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;13374:8;13364:6;:19;;;;:::i;:::-;13346:15;:37;;;;13399:39;13422:15;;13399:39;;;;;;:::i;:::-;;;;;;;;13156:290:::0;:::o;10379:39::-;;;;;;;;;;;;;:::o;9318:32::-;;;;:::o;13454:354::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13580:6:::1;13575:1;13559:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13558:28;;;;:::i;:::-;13545:9;:41;;13537:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;13698:4;13693:1;13677:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13676:26;;;;:::i;:::-;13663:9;:39;;13655:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;13791:9;13770:18;:30;;;;13454:354:::0;:::o;9097:27::-;;;;:::o;12253:280::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12377:4:::1;12369;12364:1;12348:13;:11;:13::i;:::-;:17;;;;:::i;:::-;12347:26;;;;:::i;:::-;12346:35;;;;:::i;:::-;12336:6;:45;;12328:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;12465:8;12455:6;:19;;;;:::i;:::-;12439:13;:35;;;;12490;12511:13;;12490:35;;;;;;:::i;:::-;;;;;;;;12253:280:::0;:::o;3675:176::-;3789:7;3816:11;:18;3828:5;3816:18;;;;;;;;;;;;;;;:27;3835:7;3816:27;;;;;;;;;;;;;;;;3809:34;;3675:176;;;;:::o;8864:33::-;;;;:::o;9167:30::-;;;;:::o;19408:234::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19484:13:::1;;;;;;;;;;;19483:14;19475:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19553:7;19537:13;;:23;;;;;;;;;;;;;;;;;;19585:4;19571:11;;:18;;;;;;;;;;;;;;;;;;19605:29;19620:13;;;;;;;;;;;19605:29;;;;;;:::i;:::-;;;;;;;;19408:234:::0;:::o;7465:281::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7588:1:::1;7568:22;;:8;:22;;::::0;7546:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7701:8;7672:38;;7693:6;;;;;;;;;;;7672:38;;;;;;;;;;;;7730:8;7721:6;;:17;;;;;;;;;;;;;;;;;;7465:281:::0;:::o;9278:31::-;;;;:::o;21310:360::-;7230:12;:10;:12::i;:::-;7220:22;;:6;;;;;;;;;;;:22;;;7212:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21404:3:::1;21386:22;;:6;:22;;::::0;21382:124:::1;;21433:7;:5;:7::i;:::-;21425:25;;:48;21451:21;21425:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21488:7;;21382:124;21516:17;21543:6;21516:34;;21561:15;21579:10;:20;;;21608:4;21579:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21561:53;;21625:10;:19;;;21645:7;:5;:7::i;:::-;21654;21625:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21371:299;;7290:1;21310:360:::0;:::o;461:98::-;514:7;541:10;534:17;;461:98;:::o;6362:380::-;6515:1;6498:19;;:5;:19;;;6490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6596:1;6577:21;;:7;:21;;;6569:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6680:6;6650:11;:18;6662:5;6650:18;;;;;;;;;;;;;;;:27;6669:7;6650:27;;;;;;;;;;;;;;;:36;;;;6718:7;6702:32;;6711:5;6702:32;;;6727:6;6702:32;;;;;;:::i;:::-;;;;;;;;6362:380;;;:::o;14641:3674::-;14755:1;14739:18;;:4;:18;;;14731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14832:1;14818:16;;:2;:16;;;14810:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14902:1;14893:6;:10;14885:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14954:14;;;;;;;;;;;14950:1924;;;14997:7;:5;:7::i;:::-;14989:15;;:4;:15;;;;:32;;;;;15014:7;:5;:7::i;:::-;15008:13;;:2;:13;;;;14989:32;:52;;;;;15039:1;15025:16;;:2;:16;;;;14989:52;:77;;;;;15059:6;15045:21;;:2;:21;;;;14989:77;:102;;;;;15086:4;15070:21;;:4;:21;;;;14989:102;14985:1878;;;15117:13;;;;;;;;;;;15112:243;;15163:31;:37;15195:4;15163:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15204:31;:35;15236:2;15204:35;;;;;;;;;;;;;;;;;;;;;;;;;15163:76;15155:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15305:7;:5;:7::i;:::-;15297:15;;:4;:15;;;15289:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15112:243;15379:20;;;;;;;;;;;15375:408;;;15442:15;15428:30;;:2;:30;;;;:62;;;;;15476:13;;;;;;;;;;;15462:28;;:2;:28;;;;15428:62;15424:340;;;15569:12;15527:28;:39;15556:9;15527:39;;;;;;;;;;;;;;;;:54;15519:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;15728:12;15686:28;:39;15715:9;15686:39;;;;;;;;;;;;;;;:54;;;;15424:340;15375:408;15823:13;;;;;;;;;;;15807:30;;:4;:30;;;:52;;;;;15841:18;;;;;;;;;;;15807:52;:81;;;;;15865:19;:23;15885:2;15865:23;;;;;;;;;;;;;;;;;;;;;;;;;15863:25;15807:81;15803:279;;;15941:15;15921:13;:17;15935:2;15921:17;;;;;;;;;;;;;;;;:35;15913:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16041:21;;;;;;;;;;;16023:39;;:15;:39;;;;:::i;:::-;16003:13;:17;16017:2;16003:17;;;;;;;;;;;;;;;:59;;;;15803:279;16106:25;:31;16132:4;16106:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16142:31;:35;16174:2;16142:35;;;;;;;;;;;;;;;;;;;;;;;;;16141:36;16106:71;16102:746;;;16220:12;;16210:6;:22;;16202:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16334:15;;16317:13;16327:2;16317:9;:13::i;:::-;16308:6;:22;;;;:::i;:::-;:41;;16300:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16102:746;;;16443:25;:29;16469:2;16443:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16477:31;:37;16509:4;16477:37;;;;;;;;;;;;;;;;;;;;;;;;;16476:38;16443:71;16439:409;;;16557:13;;16547:6;:23;;16539:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16439:409;;;16648:31;:35;16680:2;16648:35;;;;;;;;;;;;;;;;;;;;;;;;;16647:36;:78;;;;;16688:31;:37;16720:4;16688:37;;;;;;;;;;;;;;;;;;;;;;;;;16687:38;16647:78;16643:205;;;16784:15;;16767:13;16777:2;16767:9;:13::i;:::-;16758:6;:22;;;;:::i;:::-;:41;;16750:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16643:205;16439:409;16102:746;14985:1878;14950:1924;16886:28;16917:24;16935:4;16917:9;:24::i;:::-;16886:55;;16954:12;16993:18;;16969:20;:42;;16954:57;;17028:7;:22;;;;;17039:11;;;;;;;;;;;17028:22;:35;;;;;17055:8;;;;;;;;;;;17054:9;17028:35;:71;;;;;17068:25;:31;17094:4;17068:31;;;;;;;;;;;;;;;;;;;;;;;;;17067:32;17028:71;:101;;;;;17104:19;:25;17124:4;17104:25;;;;;;;;;;;;;;;;;;;;;;;;;17103:26;17028:101;:129;;;;;17134:19;:23;17154:2;17134:23;;;;;;;;;;;;;;;;;;;;;;;;;17133:24;17028:129;17024:283;;;17185:4;17174:8;;:15;;;;;;;;;;;;;;;;;;17204:60;17213:50;17217:6;17225:37;17229:20;17251:10;;17225:3;:37::i;:::-;17213:3;:50::i;:::-;17204:8;:60::i;:::-;17290:5;17279:8;;:16;;;;;;;;;;;;;;;;;;17024:283;17319:12;17334:4;17319:19;;17353;:25;17373:4;17353:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17382:19;:23;17402:2;17382:23;;;;;;;;;;;;;;;;;;;;;;;;;17353:52;17349:100;;;17432:5;17422:15;;17349:100;17461:12;17494:7;17490:772;;;17522:25;:29;17548:2;17522:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17571:1;17555:13;;:17;17522:50;17518:595;;;17627:3;17610:13;;17601:6;:22;;;;:::i;:::-;17600:30;;;;:::i;:::-;17593:37;;17699:13;;17679:16;;17672:4;:23;;;;:::i;:::-;17671:41;;;;:::i;:::-;17649:18;;:63;;;;;;;:::i;:::-;;;;;;;;17779:13;;17760:15;;17753:4;:22;;;;:::i;:::-;17752:40;;;;:::i;:::-;17731:17;;:61;;;;;;;:::i;:::-;;;;;;;;17518:595;;;17831:25;:31;17857:4;17831:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17881:1;17866:12;;:16;17831:51;17827:286;;;17936:3;17920:12;;17911:6;:21;;;;:::i;:::-;17910:29;;;;:::i;:::-;17903:36;;18007:12;;17988:15;;17981:4;:22;;;;:::i;:::-;17980:39;;;;:::i;:::-;17958:18;;:61;;;;;;;:::i;:::-;;;;;;;;18085:12;;18067:14;;18060:4;:21;;;;:::i;:::-;18059:38;;;;:::i;:::-;18038:17;;:59;;;;;;;:::i;:::-;;;;;;;;17827:286;17518:595;18140:1;18133:4;:8;18129:91;;;18162:42;18178:4;18192;18199;18162:15;:42::i;:::-;18129:91;18246:4;18236:14;;;;;:::i;:::-;;;17490:772;18274:33;18290:4;18296:2;18300:6;18274:15;:33::i;:::-;14720:3595;;;;14641:3674;;;:::o;19164:236::-;19281:5;19247:25;:31;19273:4;19247:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19297;19324:4;19330:5;19297:26;:39::i;:::-;19386:5;19352:40;;19380:4;19352:40;;;;;;;;;;;;19164:236;;:::o;12664:207::-;12794:10;12752:31;:39;12784:6;12752:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12820:43;12844:6;12852:10;12820:43;;;;;;;:::i;:::-;;;;;;;;12664:207;;:::o;18323:98::-;18380:7;18407:1;18405;:3;18404:9;;18412:1;18404:9;;;18410:1;18404:9;18397:16;;18323:98;;;;:::o;20316:986::-;20374:25;20423:17;;20402:18;;:38;;;;:::i;:::-;20374:66;;20472:1;20457:11;:16;:42;;;;20498:1;20477:17;:22;20457:42;20453:81;;;20516:7;;;20453:81;20546:12;20571:23;20654:1;20634:17;20612:18;;20598:11;:32;;;;:::i;:::-;20597:54;;;;:::i;:::-;:58;;;;:::i;:::-;20571:84;;20666:47;20697:15;20683:11;:29;;;;:::i;:::-;20666:16;:47::i;:::-;20726:18;20747:21;20726:42;;20779:23;20805:10;20779:36;;20828:22;20931:1;20910:18;;:22;;;;:::i;:::-;20889:17;:44;;;;:::i;:::-;20867:17;;20854:10;:30;;;;:::i;:::-;20853:81;;;;:::i;:::-;20828:106;;20966:14;20947:33;;;;;:::i;:::-;;;21014:1;20993:18;:22;;;;21046:1;21026:17;:21;;;;21082:1;21064:15;:19;:42;;;;;21105:1;21087:15;:19;21064:42;21060:121;;;21123:46;21136:15;21153;21123:12;:46::i;:::-;21060:121;21215:15;;;;;;;;;;;21207:29;;21258:21;21207:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21193:101;;;;;20363:939;;;;;;20316:986;;:::o;5379:651::-;5537:1;5519:20;;:6;:20;;;5511:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5621:1;5600:23;;:9;:23;;;5592:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5676:21;5700:9;:17;5710:6;5700:17;;;;;;;;;;;;;;;;5676:41;;5767:6;5750:13;:23;;5728:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5911:6;5895:13;:22;5875:9;:17;5885:6;5875:17;;;;;;;;;;;;;;;:42;;;;5963:6;5939:9;:20;5949:9;5939:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6004:9;5987:35;;5996:6;5987:35;;;6015:6;5987:35;;;;;;:::i;:::-;;;;;;;;5500:530;5379:651;;;:::o;18429:475::-;18495:21;18533:1;18519:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18495:40;;18564:4;18546;18551:1;18546:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18590:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18580:4;18585:1;18580:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18625:62;18642:4;18657:15;18675:11;18625:8;:62::i;:::-;18700:15;:66;;;18781:11;18807:1;18823:4;18850;18870:15;18700:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18484:420;18429:475;:::o;19650:369::-;19731:62;19748:4;19763:15;19781:11;19731:8;:62::i;:::-;19804:15;:31;;;19843:9;19876:4;19896:11;19922:1;19938;19962:7;:5;:7::i;:::-;19985:15;19804:207;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19650:369;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:144::-;4675:9;4708:37;4739:5;4708:37;:::i;:::-;4695:50;;4607:144;;;:::o;4757:167::-;4862:55;4911:5;4862:55;:::i;:::-;4857:3;4850:68;4757:167;;:::o;4930:258::-;5041:4;5079:2;5068:9;5064:18;5056:26;;5092:89;5178:1;5167:9;5163:17;5154:6;5092:89;:::i;:::-;4930:258;;;;:::o;5194:118::-;5281:24;5299:5;5281:24;:::i;:::-;5276:3;5269:37;5194:118;;:::o;5318:222::-;5411:4;5449:2;5438:9;5434:18;5426:26;;5462:71;5530:1;5519:9;5515:17;5506:6;5462:71;:::i;:::-;5318:222;;;;:::o;5546:619::-;5623:6;5631;5639;5688:2;5676:9;5667:7;5663:23;5659:32;5656:119;;;5694:79;;:::i;:::-;5656:119;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;5546:619;;;;;:::o;6171:329::-;6230:6;6279:2;6267:9;6258:7;6254:23;6250:32;6247:119;;;6285:79;;:::i;:::-;6247:119;6405:1;6430:53;6475:7;6466:6;6455:9;6451:22;6430:53;:::i;:::-;6420:63;;6376:117;6171:329;;;;:::o;6506:86::-;6541:7;6581:4;6574:5;6570:16;6559:27;;6506:86;;;:::o;6598:112::-;6681:22;6697:5;6681:22;:::i;:::-;6676:3;6669:35;6598:112;;:::o;6716:214::-;6805:4;6843:2;6832:9;6828:18;6820:26;;6856:67;6920:1;6909:9;6905:17;6896:6;6856:67;:::i;:::-;6716:214;;;;:::o;6936:118::-;7023:24;7041:5;7023:24;:::i;:::-;7018:3;7011:37;6936:118;;:::o;7060:222::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:71;7272:1;7261:9;7257:17;7248:6;7204:71;:::i;:::-;7060:222;;;;:::o;7288:116::-;7358:21;7373:5;7358:21;:::i;:::-;7351:5;7348:32;7338:60;;7394:1;7391;7384:12;7338:60;7288:116;:::o;7410:133::-;7453:5;7491:6;7478:20;7469:29;;7507:30;7531:5;7507:30;:::i;:::-;7410:133;;;;:::o;7549:468::-;7614:6;7622;7671:2;7659:9;7650:7;7646:23;7642:32;7639:119;;;7677:79;;:::i;:::-;7639:119;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7924:2;7950:50;7992:7;7983:6;7972:9;7968:22;7950:50;:::i;:::-;7940:60;;7895:115;7549:468;;;;;:::o;8023:474::-;8091:6;8099;8148:2;8136:9;8127:7;8123:23;8119:32;8116:119;;;8154:79;;:::i;:::-;8116:119;8274:1;8299:53;8344:7;8335:6;8324:9;8320:22;8299:53;:::i;:::-;8289:63;;8245:117;8401:2;8427:53;8472:7;8463:6;8452:9;8448:22;8427:53;:::i;:::-;8417:63;;8372:118;8023:474;;;;;:::o;8503:323::-;8559:6;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8734:1;8759:50;8801:7;8792:6;8781:9;8777:22;8759:50;:::i;:::-;8749:60;;8705:114;8503:323;;;;:::o;8832:182::-;8972:34;8968:1;8960:6;8956:14;8949:58;8832:182;:::o;9020:366::-;9162:3;9183:67;9247:2;9242:3;9183:67;:::i;:::-;9176:74;;9259:93;9348:3;9259:93;:::i;:::-;9377:2;9372:3;9368:12;9361:19;;9020:366;;;:::o;9392:419::-;9558:4;9596:2;9585:9;9581:18;9573:26;;9645:9;9639:4;9635:20;9631:1;9620:9;9616:17;9609:47;9673:131;9799:4;9673:131;:::i;:::-;9665:139;;9392:419;;;:::o;9817:180::-;9865:77;9862:1;9855:88;9962:4;9959:1;9952:15;9986:4;9983:1;9976:15;10003:191;10043:3;10062:20;10080:1;10062:20;:::i;:::-;10057:25;;10096:20;10114:1;10096:20;:::i;:::-;10091:25;;10139:1;10136;10132:9;10125:16;;10160:3;10157:1;10154:10;10151:36;;;10167:18;;:::i;:::-;10151:36;10003:191;;;;:::o;10200:179::-;10340:31;10336:1;10328:6;10324:14;10317:55;10200:179;:::o;10385:366::-;10527:3;10548:67;10612:2;10607:3;10548:67;:::i;:::-;10541:74;;10624:93;10713:3;10624:93;:::i;:::-;10742:2;10737:3;10733:12;10726:19;;10385:366;;;:::o;10757:419::-;10923:4;10961:2;10950:9;10946:18;10938:26;;11010:9;11004:4;11000:20;10996:1;10985:9;10981:17;10974:47;11038:131;11164:4;11038:131;:::i;:::-;11030:139;;10757:419;;;:::o;11182:180::-;11230:77;11227:1;11220:88;11327:4;11324:1;11317:15;11351:4;11348:1;11341:15;11368:320;11412:6;11449:1;11443:4;11439:12;11429:22;;11496:1;11490:4;11486:12;11517:18;11507:81;;11573:4;11565:6;11561:17;11551:27;;11507:81;11635:2;11627:6;11624:14;11604:18;11601:38;11598:84;;11654:18;;:::i;:::-;11598:84;11419:269;11368:320;;;:::o;11694:227::-;11834:34;11830:1;11822:6;11818:14;11811:58;11903:10;11898:2;11890:6;11886:15;11879:35;11694:227;:::o;11927:366::-;12069:3;12090:67;12154:2;12149:3;12090:67;:::i;:::-;12083:74;;12166:93;12255:3;12166:93;:::i;:::-;12284:2;12279:3;12275:12;12268:19;;11927:366;;;:::o;12299:419::-;12465:4;12503:2;12492:9;12488:18;12480:26;;12552:9;12546:4;12542:20;12538:1;12527:9;12523:17;12516:47;12580:131;12706:4;12580:131;:::i;:::-;12572:139;;12299:419;;;:::o;12724:410::-;12764:7;12787:20;12805:1;12787:20;:::i;:::-;12782:25;;12821:20;12839:1;12821:20;:::i;:::-;12816:25;;12876:1;12873;12869:9;12898:30;12916:11;12898:30;:::i;:::-;12887:41;;13077:1;13068:7;13064:15;13061:1;13058:22;13038:1;13031:9;13011:83;12988:139;;13107:18;;:::i;:::-;12988:139;12772:362;12724:410;;;;:::o;13140:180::-;13188:77;13185:1;13178:88;13285:4;13282:1;13275:15;13309:4;13306:1;13299:15;13326:185;13366:1;13383:20;13401:1;13383:20;:::i;:::-;13378:25;;13417:20;13435:1;13417:20;:::i;:::-;13412:25;;13456:1;13446:35;;13461:18;;:::i;:::-;13446:35;13503:1;13500;13496:9;13491:14;;13326:185;;;;:::o;13517:228::-;13657:34;13653:1;13645:6;13641:14;13634:58;13726:11;13721:2;13713:6;13709:15;13702:36;13517:228;:::o;13751:366::-;13893:3;13914:67;13978:2;13973:3;13914:67;:::i;:::-;13907:74;;13990:93;14079:3;13990:93;:::i;:::-;14108:2;14103:3;14099:12;14092:19;;13751:366;;;:::o;14123:419::-;14289:4;14327:2;14316:9;14312:18;14304:26;;14376:9;14370:4;14366:20;14362:1;14351:9;14347:17;14340:47;14404:131;14530:4;14404:131;:::i;:::-;14396:139;;14123:419;;;:::o;14548:172::-;14688:24;14684:1;14676:6;14672:14;14665:48;14548:172;:::o;14726:366::-;14868:3;14889:67;14953:2;14948:3;14889:67;:::i;:::-;14882:74;;14965:93;15054:3;14965:93;:::i;:::-;15083:2;15078:3;15074:12;15067:19;;14726:366;;;:::o;15098:419::-;15264:4;15302:2;15291:9;15287:18;15279:26;;15351:9;15345:4;15341:20;15337:1;15326:9;15322:17;15315:47;15379:131;15505:4;15379:131;:::i;:::-;15371:139;;15098:419;;;:::o;15523:223::-;15663:34;15659:1;15651:6;15647:14;15640:58;15732:6;15727:2;15719:6;15715:15;15708:31;15523:223;:::o;15752:366::-;15894:3;15915:67;15979:2;15974:3;15915:67;:::i;:::-;15908:74;;15991:93;16080:3;15991:93;:::i;:::-;16109:2;16104:3;16100:12;16093:19;;15752:366;;;:::o;16124:419::-;16290:4;16328:2;16317:9;16313:18;16305:26;;16377:9;16371:4;16367:20;16363:1;16352:9;16348:17;16341:47;16405:131;16531:4;16405:131;:::i;:::-;16397:139;;16124:419;;;:::o;16549:179::-;16689:31;16685:1;16677:6;16673:14;16666:55;16549:179;:::o;16734:366::-;16876:3;16897:67;16961:2;16956:3;16897:67;:::i;:::-;16890:74;;16973:93;17062:3;16973:93;:::i;:::-;17091:2;17086:3;17082:12;17075:19;;16734:366;;;:::o;17106:419::-;17272:4;17310:2;17299:9;17295:18;17287:26;;17359:9;17353:4;17349:20;17345:1;17334:9;17330:17;17323:47;17387:131;17513:4;17387:131;:::i;:::-;17379:139;;17106:419;;;:::o;17531:226::-;17671:34;17667:1;17659:6;17655:14;17648:58;17740:9;17735:2;17727:6;17723:15;17716:34;17531:226;:::o;17763:366::-;17905:3;17926:67;17990:2;17985:3;17926:67;:::i;:::-;17919:74;;18002:93;18091:3;18002:93;:::i;:::-;18120:2;18115:3;18111:12;18104:19;;17763:366;;;:::o;18135:419::-;18301:4;18339:2;18328:9;18324:18;18316:26;;18388:9;18382:4;18378:20;18374:1;18363:9;18359:17;18352:47;18416:131;18542:4;18416:131;:::i;:::-;18408:139;;18135:419;;;:::o;18560:143::-;18617:5;18648:6;18642:13;18633:22;;18664:33;18691:5;18664:33;:::i;:::-;18560:143;;;;:::o;18709:351::-;18779:6;18828:2;18816:9;18807:7;18803:23;18799:32;18796:119;;;18834:79;;:::i;:::-;18796:119;18954:1;18979:64;19035:7;19026:6;19015:9;19011:22;18979:64;:::i;:::-;18969:74;;18925:128;18709:351;;;;:::o;19066:332::-;19187:4;19225:2;19214:9;19210:18;19202:26;;19238:71;19306:1;19295:9;19291:17;19282:6;19238:71;:::i;:::-;19319:72;19387:2;19376:9;19372:18;19363:6;19319:72;:::i;:::-;19066:332;;;;;:::o;19404:::-;19525:4;19563:2;19552:9;19548:18;19540:26;;19576:71;19644:1;19633:9;19629:17;19620:6;19576:71;:::i;:::-;19657:72;19725:2;19714:9;19710:18;19701:6;19657:72;:::i;:::-;19404:332;;;;;:::o;19742:137::-;19796:5;19827:6;19821:13;19812:22;;19843:30;19867:5;19843:30;:::i;:::-;19742:137;;;;:::o;19885:345::-;19952:6;20001:2;19989:9;19980:7;19976:23;19972:32;19969:119;;;20007:79;;:::i;:::-;19969:119;20127:1;20152:61;20205:7;20196:6;20185:9;20181:22;20152:61;:::i;:::-;20142:71;;20098:125;19885:345;;;;:::o;20236:85::-;20281:7;20310:5;20299:16;;20236:85;;;:::o;20327:158::-;20385:9;20418:61;20436:42;20445:32;20471:5;20445:32;:::i;:::-;20436:42;:::i;:::-;20418:61;:::i;:::-;20405:74;;20327:158;;;:::o;20491:147::-;20586:45;20625:5;20586:45;:::i;:::-;20581:3;20574:58;20491:147;;:::o;20644:807::-;20893:4;20931:3;20920:9;20916:19;20908:27;;20945:71;21013:1;21002:9;20998:17;20989:6;20945:71;:::i;:::-;21026:72;21094:2;21083:9;21079:18;21070:6;21026:72;:::i;:::-;21108:80;21184:2;21173:9;21169:18;21160:6;21108:80;:::i;:::-;21198;21274:2;21263:9;21259:18;21250:6;21198:80;:::i;:::-;21288:73;21356:3;21345:9;21341:19;21332:6;21288:73;:::i;:::-;21371;21439:3;21428:9;21424:19;21415:6;21371:73;:::i;:::-;20644:807;;;;;;;;;:::o;21457:143::-;21514:5;21545:6;21539:13;21530:22;;21561:33;21588:5;21561:33;:::i;:::-;21457:143;;;;:::o;21606:663::-;21694:6;21702;21710;21759:2;21747:9;21738:7;21734:23;21730:32;21727:119;;;21765:79;;:::i;:::-;21727:119;21885:1;21910:64;21966:7;21957:6;21946:9;21942:22;21910:64;:::i;:::-;21900:74;;21856:128;22023:2;22049:64;22105:7;22096:6;22085:9;22081:22;22049:64;:::i;:::-;22039:74;;21994:129;22162:2;22188:64;22244:7;22235:6;22224:9;22220:22;22188:64;:::i;:::-;22178:74;;22133:129;21606:663;;;;;:::o;22275:244::-;22415:34;22411:1;22403:6;22399:14;22392:58;22484:27;22479:2;22471:6;22467:15;22460:52;22275:244;:::o;22525:366::-;22667:3;22688:67;22752:2;22747:3;22688:67;:::i;:::-;22681:74;;22764:93;22853:3;22764:93;:::i;:::-;22882:2;22877:3;22873:12;22866:19;;22525:366;;;:::o;22897:419::-;23063:4;23101:2;23090:9;23086:18;23078:26;;23150:9;23144:4;23140:20;23136:1;23125:9;23121:17;23114:47;23178:131;23304:4;23178:131;:::i;:::-;23170:139;;22897:419;;;:::o;23322:224::-;23462:34;23458:1;23450:6;23446:14;23439:58;23531:7;23526:2;23518:6;23514:15;23507:32;23322:224;:::o;23552:366::-;23694:3;23715:67;23779:2;23774:3;23715:67;:::i;:::-;23708:74;;23791:93;23880:3;23791:93;:::i;:::-;23909:2;23904:3;23900:12;23893:19;;23552:366;;;:::o;23924:419::-;24090:4;24128:2;24117:9;24113:18;24105:26;;24177:9;24171:4;24167:20;24163:1;24152:9;24148:17;24141:47;24205:131;24331:4;24205:131;:::i;:::-;24197:139;;23924:419;;;:::o;24349:231::-;24489:34;24485:1;24477:6;24473:14;24466:58;24558:14;24553:2;24545:6;24541:15;24534:39;24349:231;:::o;24586:366::-;24728:3;24749:67;24813:2;24808:3;24749:67;:::i;:::-;24742:74;;24825:93;24914:3;24825:93;:::i;:::-;24943:2;24938:3;24934:12;24927:19;;24586:366;;;:::o;24958:419::-;25124:4;25162:2;25151:9;25147:18;25139:26;;25211:9;25205:4;25201:20;25197:1;25186:9;25182:17;25175:47;25239:131;25365:4;25239:131;:::i;:::-;25231:139;;24958:419;;;:::o;25383:240::-;25523:34;25519:1;25511:6;25507:14;25500:58;25592:23;25587:2;25579:6;25575:15;25568:48;25383:240;:::o;25629:366::-;25771:3;25792:67;25856:2;25851:3;25792:67;:::i;:::-;25785:74;;25868:93;25957:3;25868:93;:::i;:::-;25986:2;25981:3;25977:12;25970:19;;25629:366;;;:::o;26001:419::-;26167:4;26205:2;26194:9;26190:18;26182:26;;26254:9;26248:4;26244:20;26240:1;26229:9;26225:17;26218:47;26282:131;26408:4;26282:131;:::i;:::-;26274:139;;26001:419;;;:::o;26426:239::-;26566:34;26562:1;26554:6;26550:14;26543:58;26635:22;26630:2;26622:6;26618:15;26611:47;26426:239;:::o;26671:366::-;26813:3;26834:67;26898:2;26893:3;26834:67;:::i;:::-;26827:74;;26910:93;26999:3;26910:93;:::i;:::-;27028:2;27023:3;27019:12;27012:19;;26671:366;;;:::o;27043:419::-;27209:4;27247:2;27236:9;27232:18;27224:26;;27296:9;27290:4;27286:20;27282:1;27271:9;27267:17;27260:47;27324:131;27450:4;27324:131;:::i;:::-;27316:139;;27043:419;;;:::o;27468:229::-;27608:34;27604:1;27596:6;27592:14;27585:58;27677:12;27672:2;27664:6;27660:15;27653:37;27468:229;:::o;27703:366::-;27845:3;27866:67;27930:2;27925:3;27866:67;:::i;:::-;27859:74;;27942:93;28031:3;27942:93;:::i;:::-;28060:2;28055:3;28051:12;28044:19;;27703:366;;;:::o;28075:419::-;28241:4;28279:2;28268:9;28264:18;28256:26;;28328:9;28322:4;28318:20;28314:1;28303:9;28299:17;28292:47;28356:131;28482:4;28356:131;:::i;:::-;28348:139;;28075:419;;;:::o;28500:174::-;28640:26;28636:1;28628:6;28624:14;28617:50;28500:174;:::o;28680:366::-;28822:3;28843:67;28907:2;28902:3;28843:67;:::i;:::-;28836:74;;28919:93;29008:3;28919:93;:::i;:::-;29037:2;29032:3;29028:12;29021:19;;28680:366;;;:::o;29052:419::-;29218:4;29256:2;29245:9;29241:18;29233:26;;29305:9;29299:4;29295:20;29291:1;29280:9;29276:17;29269:47;29333:131;29459:4;29333:131;:::i;:::-;29325:139;;29052:419;;;:::o;29477:225::-;29617:34;29613:1;29605:6;29601:14;29594:58;29686:8;29681:2;29673:6;29669:15;29662:33;29477:225;:::o;29708:366::-;29850:3;29871:67;29935:2;29930:3;29871:67;:::i;:::-;29864:74;;29947:93;30036:3;29947:93;:::i;:::-;30065:2;30060:3;30056:12;30049:19;;29708:366;;;:::o;30080:419::-;30246:4;30284:2;30273:9;30269:18;30261:26;;30333:9;30327:4;30323:20;30319:1;30308:9;30304:17;30297:47;30361:131;30487:4;30361:131;:::i;:::-;30353:139;;30080:419;;;:::o;30505:351::-;30575:6;30624:2;30612:9;30603:7;30599:23;30595:32;30592:119;;;30630:79;;:::i;:::-;30592:119;30750:1;30775:64;30831:7;30822:6;30811:9;30807:22;30775:64;:::i;:::-;30765:74;;30721:128;30505:351;;;;:::o;30862:223::-;31002:34;30998:1;30990:6;30986:14;30979:58;31071:6;31066:2;31058:6;31054:15;31047:31;30862:223;:::o;31091:366::-;31233:3;31254:67;31318:2;31313:3;31254:67;:::i;:::-;31247:74;;31330:93;31419:3;31330:93;:::i;:::-;31448:2;31443:3;31439:12;31432:19;;31091:366;;;:::o;31463:419::-;31629:4;31667:2;31656:9;31652:18;31644:26;;31716:9;31710:4;31706:20;31702:1;31691:9;31687:17;31680:47;31744:131;31870:4;31744:131;:::i;:::-;31736:139;;31463:419;;;:::o;31888:221::-;32028:34;32024:1;32016:6;32012:14;32005:58;32097:4;32092:2;32084:6;32080:15;32073:29;31888:221;:::o;32115:366::-;32257:3;32278:67;32342:2;32337:3;32278:67;:::i;:::-;32271:74;;32354:93;32443:3;32354:93;:::i;:::-;32472:2;32467:3;32463:12;32456:19;;32115:366;;;:::o;32487:419::-;32653:4;32691:2;32680:9;32676:18;32668:26;;32740:9;32734:4;32730:20;32726:1;32715:9;32711:17;32704:47;32768:131;32894:4;32768:131;:::i;:::-;32760:139;;32487:419;;;:::o;32912:224::-;33052:34;33048:1;33040:6;33036:14;33029:58;33121:7;33116:2;33108:6;33104:15;33097:32;32912:224;:::o;33142:366::-;33284:3;33305:67;33369:2;33364:3;33305:67;:::i;:::-;33298:74;;33381:93;33470:3;33381:93;:::i;:::-;33499:2;33494:3;33490:12;33483:19;;33142:366;;;:::o;33514:419::-;33680:4;33718:2;33707:9;33703:18;33695:26;;33767:9;33761:4;33757:20;33753:1;33742:9;33738:17;33731:47;33795:131;33921:4;33795:131;:::i;:::-;33787:139;;33514:419;;;:::o;33939:222::-;34079:34;34075:1;34067:6;34063:14;34056:58;34148:5;34143:2;34135:6;34131:15;34124:30;33939:222;:::o;34167:366::-;34309:3;34330:67;34394:2;34389:3;34330:67;:::i;:::-;34323:74;;34406:93;34495:3;34406:93;:::i;:::-;34524:2;34519:3;34515:12;34508:19;;34167:366;;;:::o;34539:419::-;34705:4;34743:2;34732:9;34728:18;34720:26;;34792:9;34786:4;34782:20;34778:1;34767:9;34763:17;34756:47;34820:131;34946:4;34820:131;:::i;:::-;34812:139;;34539:419;;;:::o;34964:179::-;35104:31;35100:1;35092:6;35088:14;35081:55;34964:179;:::o;35149:366::-;35291:3;35312:67;35376:2;35371:3;35312:67;:::i;:::-;35305:74;;35388:93;35477:3;35388:93;:::i;:::-;35506:2;35501:3;35497:12;35490:19;;35149:366;;;:::o;35521:419::-;35687:4;35725:2;35714:9;35710:18;35702:26;;35774:9;35768:4;35764:20;35760:1;35749:9;35745:17;35738:47;35802:131;35928:4;35802:131;:::i;:::-;35794:139;;35521:419;;;:::o;35946:172::-;36086:24;36082:1;36074:6;36070:14;36063:48;35946:172;:::o;36124:366::-;36266:3;36287:67;36351:2;36346:3;36287:67;:::i;:::-;36280:74;;36363:93;36452:3;36363:93;:::i;:::-;36481:2;36476:3;36472:12;36465:19;;36124:366;;;:::o;36496:419::-;36662:4;36700:2;36689:9;36685:18;36677:26;;36749:9;36743:4;36739:20;36735:1;36724:9;36720:17;36713:47;36777:131;36903:4;36777:131;:::i;:::-;36769:139;;36496:419;;;:::o;36921:168::-;37061:20;37057:1;37049:6;37045:14;37038:44;36921:168;:::o;37095:366::-;37237:3;37258:67;37322:2;37317:3;37258:67;:::i;:::-;37251:74;;37334:93;37423:3;37334:93;:::i;:::-;37452:2;37447:3;37443:12;37436:19;;37095:366;;;:::o;37467:419::-;37633:4;37671:2;37660:9;37656:18;37648:26;;37720:9;37714:4;37710:20;37706:1;37695:9;37691:17;37684:47;37748:131;37874:4;37748:131;:::i;:::-;37740:139;;37467:419;;;:::o;37892:297::-;38032:34;38028:1;38020:6;38016:14;38009:58;38101:34;38096:2;38088:6;38084:15;38077:59;38170:11;38165:2;38157:6;38153:15;38146:36;37892:297;:::o;38195:366::-;38337:3;38358:67;38422:2;38417:3;38358:67;:::i;:::-;38351:74;;38434:93;38523:3;38434:93;:::i;:::-;38552:2;38547:3;38543:12;38536:19;;38195:366;;;:::o;38567:419::-;38733:4;38771:2;38760:9;38756:18;38748:26;;38820:9;38814:4;38810:20;38806:1;38795:9;38791:17;38784:47;38848:131;38974:4;38848:131;:::i;:::-;38840:139;;38567:419;;;:::o;38992:169::-;39132:21;39128:1;39120:6;39116:14;39109:45;38992:169;:::o;39167:366::-;39309:3;39330:67;39394:2;39389:3;39330:67;:::i;:::-;39323:74;;39406:93;39495:3;39406:93;:::i;:::-;39524:2;39519:3;39515:12;39508:19;;39167:366;;;:::o;39539:419::-;39705:4;39743:2;39732:9;39728:18;39720:26;;39792:9;39786:4;39782:20;39778:1;39767:9;39763:17;39756:47;39820:131;39946:4;39820:131;:::i;:::-;39812:139;;39539:419;;;:::o;39964:227::-;40104:34;40100:1;40092:6;40088:14;40081:58;40173:10;40168:2;40160:6;40156:15;40149:35;39964:227;:::o;40197:366::-;40339:3;40360:67;40424:2;40419:3;40360:67;:::i;:::-;40353:74;;40436:93;40525:3;40436:93;:::i;:::-;40554:2;40549:3;40545:12;40538:19;;40197:366;;;:::o;40569:419::-;40735:4;40773:2;40762:9;40758:18;40750:26;;40822:9;40816:4;40812:20;40808:1;40797:9;40793:17;40786:47;40850:131;40976:4;40850:131;:::i;:::-;40842:139;;40569:419;;;:::o;40994:174::-;41134:26;41130:1;41122:6;41118:14;41111:50;40994:174;:::o;41174:366::-;41316:3;41337:67;41401:2;41396:3;41337:67;:::i;:::-;41330:74;;41413:93;41502:3;41413:93;:::i;:::-;41531:2;41526:3;41522:12;41515:19;;41174:366;;;:::o;41546:419::-;41712:4;41750:2;41739:9;41735:18;41727:26;;41799:9;41793:4;41789:20;41785:1;41774:9;41770:17;41763:47;41827:131;41953:4;41827:131;:::i;:::-;41819:139;;41546:419;;;:::o;41971:229::-;42111:34;42107:1;42099:6;42095:14;42088:58;42180:12;42175:2;42167:6;42163:15;42156:37;41971:229;:::o;42206:366::-;42348:3;42369:67;42433:2;42428:3;42369:67;:::i;:::-;42362:74;;42445:93;42534:3;42445:93;:::i;:::-;42563:2;42558:3;42554:12;42547:19;;42206:366;;;:::o;42578:419::-;42744:4;42782:2;42771:9;42767:18;42759:26;;42831:9;42825:4;42821:20;42817:1;42806:9;42802:17;42795:47;42859:131;42985:4;42859:131;:::i;:::-;42851:139;;42578:419;;;:::o;43003:194::-;43043:4;43063:20;43081:1;43063:20;:::i;:::-;43058:25;;43097:20;43115:1;43097:20;:::i;:::-;43092:25;;43141:1;43138;43134:9;43126:17;;43165:1;43159:4;43156:11;43153:37;;;43170:18;;:::i;:::-;43153:37;43003:194;;;;:::o;43203:320::-;43318:4;43356:2;43345:9;43341:18;43333:26;;43369:71;43437:1;43426:9;43422:17;43413:6;43369:71;:::i;:::-;43450:66;43512:2;43501:9;43497:18;43488:6;43450:66;:::i;:::-;43203:320;;;;;:::o;43529:147::-;43630:11;43667:3;43652:18;;43529:147;;;;:::o;43682:114::-;;:::o;43802:398::-;43961:3;43982:83;44063:1;44058:3;43982:83;:::i;:::-;43975:90;;44074:93;44163:3;44074:93;:::i;:::-;44192:1;44187:3;44183:11;44176:18;;43802:398;;;:::o;44206:379::-;44390:3;44412:147;44555:3;44412:147;:::i;:::-;44405:154;;44576:3;44569:10;;44206:379;;;:::o;44591:225::-;44731:34;44727:1;44719:6;44715:14;44708:58;44800:8;44795:2;44787:6;44783:15;44776:33;44591:225;:::o;44822:366::-;44964:3;44985:67;45049:2;45044:3;44985:67;:::i;:::-;44978:74;;45061:93;45150:3;45061:93;:::i;:::-;45179:2;45174:3;45170:12;45163:19;;44822:366;;;:::o;45194:419::-;45360:4;45398:2;45387:9;45383:18;45375:26;;45447:9;45441:4;45437:20;45433:1;45422:9;45418:17;45411:47;45475:131;45601:4;45475:131;:::i;:::-;45467:139;;45194:419;;;:::o;45619:180::-;45667:77;45664:1;45657:88;45764:4;45761:1;45754:15;45788:4;45785:1;45778:15;45805:180;45853:77;45850:1;45843:88;45950:4;45947:1;45940:15;45974:4;45971:1;45964:15;45991:114;46058:6;46092:5;46086:12;46076:22;;45991:114;;;:::o;46111:184::-;46210:11;46244:6;46239:3;46232:19;46284:4;46279:3;46275:14;46260:29;;46111:184;;;;:::o;46301:132::-;46368:4;46391:3;46383:11;;46421:4;46416:3;46412:14;46404:22;;46301:132;;;:::o;46439:108::-;46516:24;46534:5;46516:24;:::i;:::-;46511:3;46504:37;46439:108;;:::o;46553:179::-;46622:10;46643:46;46685:3;46677:6;46643:46;:::i;:::-;46721:4;46716:3;46712:14;46698:28;;46553:179;;;;:::o;46738:113::-;46808:4;46840;46835:3;46831:14;46823:22;;46738:113;;;:::o;46887:732::-;47006:3;47035:54;47083:5;47035:54;:::i;:::-;47105:86;47184:6;47179:3;47105:86;:::i;:::-;47098:93;;47215:56;47265:5;47215:56;:::i;:::-;47294:7;47325:1;47310:284;47335:6;47332:1;47329:13;47310:284;;;47411:6;47405:13;47438:63;47497:3;47482:13;47438:63;:::i;:::-;47431:70;;47524:60;47577:6;47524:60;:::i;:::-;47514:70;;47370:224;47357:1;47354;47350:9;47345:14;;47310:284;;;47314:14;47610:3;47603:10;;47011:608;;;46887:732;;;;:::o;47625:831::-;47888:4;47926:3;47915:9;47911:19;47903:27;;47940:71;48008:1;47997:9;47993:17;47984:6;47940:71;:::i;:::-;48021:80;48097:2;48086:9;48082:18;48073:6;48021:80;:::i;:::-;48148:9;48142:4;48138:20;48133:2;48122:9;48118:18;48111:48;48176:108;48279:4;48270:6;48176:108;:::i;:::-;48168:116;;48294:72;48362:2;48351:9;48347:18;48338:6;48294:72;:::i;:::-;48376:73;48444:3;48433:9;48429:19;48420:6;48376:73;:::i;:::-;47625:831;;;;;;;;:::o

Swarm Source

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