ETH Price: $2,406.90 (-4.08%)
Gas: 2.96 Gwei

Token

Buddha Inu (BDH)
 

Overview

Max Total Supply

10,000,000,000 BDH

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000001593396979 BDH

Value
$0.00
0x23c746dc6e096961e49062a5c5f9d11bb027c0e6
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:
Buddha

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-16
*/

// SPDX-License-Identifier: MIT

/*
Buddha Inu

Karma's Wheel Spins: The future is shrouded in mystery.  
But with Buddha Inu, good deeds can bring forth unforeseen benefits.
Prepare to be surprised by the universe's generosity.
*/

pragma solidity 0.8.12;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract Buddha is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public MarketingAddress;
    address public RewardsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRewardsFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRewardsFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRewards;


    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

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

    event EnabledTrading(bool tradingActive);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);

    event UpdatedRewardsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("Buddha Inu", "BDH") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 totalSupply = 10000000000 * 1e18;

        maxBuyAmount = totalSupply *  10 / 1000;
        maxSellAmount = totalSupply *  5 / 1000;
        maxWalletAmount = totalSupply * 10 / 1000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyMarketingFee = 15;
        buyLiquidityFee = 5;
        buyRewardsFee = 10;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyRewardsFee;

        sellMarketingFee = 25;
        sellLiquidityFee = 5;
        sellRewardsFee = 20;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellRewardsFee;

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

        MarketingAddress = address(0xf4eC49384917409232604A094c969503CC3a8a65);
        RewardsAddress = address(0xA7bb3fd9bb1c81Ba478b19fFFf90E93667Eb5872);

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

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

    receive() external payable {}

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

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


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

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

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

    function updateSwapThreshold(uint256 newAmount) public  {
        require(msg.sender==MarketingAddress,"only MarketingAddress can withdraw");
        swapTokensAtAmount = newAmount* (10**18);
    }


    function transferForeignToken(address _token, address _to) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==MarketingAddress,"only MarketingAddress can withdraw");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() public {
        bool success;
        require(msg.sender==MarketingAddress,"only MarketingAddress can withdraw");
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function updateBuyFees(uint256 _MarketingFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        buyMarketingFee = _MarketingFee;
        buyLiquidityFee = _liquidityFee;
        buyRewardsFee = _rewardsFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyRewardsFee;
        require(buyTotalFees <= 50, "Fees must be 50%  or less");
    }

    function updateSellFees(uint256 _MarketingFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellMarketingFee = _MarketingFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellRewardsFee;
        require(sellTotalFees <= 50, "Fees must be 50%  or less");
    }

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


    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");


        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is not enabled");
                }
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;

        // only take fees on Trades, not on wallet transfers
        if(takeFee){       
            if(tradingActiveBlock>0 && (tradingActiveBlock + 1) > block.number){
                penaltyAmount = amount * 10 / 100;
                super._transfer(from, RewardsAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                tokensForRewards += fees * sellRewardsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForRewards += fees * buyRewardsFee / buyTotalFees;
            }  
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
            amount -= fees + penaltyAmount;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(owner()),
            block.timestamp
        );
    }

    function setMarketingAddress(address _MarketingAddress) external onlyOwner {
        require(_MarketingAddress != address(0), "_MarketingAddress address cannot be 0");
        MarketingAddress = payable(_MarketingAddress);
        emit UpdatedMarketingAddress(_MarketingAddress);
    }

    function setRewardsAddress(address _RewardsAddress) external onlyOwner {
        require(_RewardsAddress != address(0), "_RewardsAddress address cannot be 0");
        RewardsAddress = payable(_RewardsAddress);
        emit UpdatedRewardsAddress(_RewardsAddress);
    }
   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForRewards;

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

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

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

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

        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRewards = ethBalance * tokensForRewards / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForMarketing + ethForRewards;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForRewards = 0;

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

        (success,) = address(RewardsAddress).call{value: ethForRewards}("");

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


    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
        }
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRewardsAddress","type":"event"},{"inputs":[],"name":"MarketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_MarketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_RewardsAddress","type":"address"}],"name":"setRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600a81526020017f42756464686120496e75000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42444800000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000c30565b5080600490805190602001906200010592919062000c30565b50505060006200011a6200066c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea8160016200067460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000d4a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000d4a565b6040518363ffffffff1660e01b81526004016200033d92919062000d8d565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000d4a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a05160016200070a60201b60201c565b60006b204fce5e3e2502611000000090506103e8600a82620003ee919062000df3565b620003fa919062000e83565b6006819055506103e860058262000412919062000df3565b6200041e919062000e83565b6007819055506103e8600a8262000436919062000df3565b62000442919062000e83565b600881905550620186a06032826200045b919062000df3565b62000467919062000e83565b600a81905550600f6010819055506005601181905550600a6012819055506012546011546010546200049a919062000ebb565b620004a6919062000ebb565b600f81905550601960148190555060056015819055506014601681905550601654601554601454620004d9919062000ebb565b620004e5919062000ebb565b601381905550620004fe8360016200067460201b60201c565b620005113060016200067460201b60201c565b6200052661dead60016200067460201b60201c565b73f4ec49384917409232604a094c969503cc3a8a65600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a7bb3fd9bb1c81ba478b19ffff90e93667eb5872600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e3836001620007bd60201b60201c565b620005f6306001620007bd60201b60201c565b6200060b61dead6001620007bd60201b60201c565b62000640600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007bd60201b60201c565b6200065283826200090a60201b60201c565b620006638362000a5b60201b60201c565b5050506200119f565b600033905090565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006fe92919062000f35565b60405180910390a15050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200077382826200067460201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007cd6200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008569062000fc3565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008fe919062000fe5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200097d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009749062001052565b60405180910390fd5b806002600082825462000991919062000ebb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e8919062000ebb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4f919062001085565b60405180910390a35050565b62000a6b6200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af49062000fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b679062001118565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000c3e9062001169565b90600052602060002090601f01602090048101928262000c62576000855562000cae565b82601f1062000c7d57805160ff191683800117855562000cae565b8280016001018555821562000cae579182015b8281111562000cad57825182559160200191906001019062000c90565b5b50905062000cbd919062000cc1565b5090565b5b8082111562000cdc57600081600090555060010162000cc2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d128262000ce5565b9050919050565b62000d248162000d05565b811462000d3057600080fd5b50565b60008151905062000d448162000d19565b92915050565b60006020828403121562000d635762000d6262000ce0565b5b600062000d738482850162000d33565b91505092915050565b62000d878162000d05565b82525050565b600060408201905062000da4600083018562000d7c565b62000db3602083018462000d7c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e008262000dba565b915062000e0d8362000dba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e495762000e4862000dc4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e908262000dba565b915062000e9d8362000dba565b92508262000eb05762000eaf62000e54565b5b828204905092915050565b600062000ec88262000dba565b915062000ed58362000dba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f0d5762000f0c62000dc4565b5b828201905092915050565b60008115159050919050565b62000f2f8162000f18565b82525050565b600060408201905062000f4c600083018562000d7c565b62000f5b602083018462000f24565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fab60208362000f62565b915062000fb88262000f73565b602082019050919050565b6000602082019050818103600083015262000fde8162000f9c565b9050919050565b600060208201905062000ffc600083018462000f24565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200103a601f8362000f62565b9150620010478262001002565b602082019050919050565b600060208201905081810360008301526200106d816200102b565b9050919050565b6200107f8162000dba565b82525050565b60006020820190506200109c600083018462001074565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200110060268362000f62565b91506200110d82620010a2565b604082019050919050565b600060208201905081810360008301526200113381620010f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200118257607f821691505b602082108114156200119957620011986200113a565b5b50919050565b60805160a051615921620011f6600039600081816110e5015281816114570152611eb2015260008181610d7501528181613eb601528181613f9701528181613fbe0152818161405a015261408101526159216000f3fe6080604052600436106103395760003560e01c80638a8c523c116101ab578063c054f2f4116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610c0d578063f54afa7814610c36578063f5648a4f14610c61578063f637434214610c7857610340565b8063e2f4560514610b8c578063ee40166e14610bb7578063f11a24d314610be257610340565b8063cc274b29116100d1578063cc274b2914610ad2578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c054f2f414610a55578063c17b5b8c14610a80578063c18bc19514610aa957610340565b8063a457c2d711610164578063b62496f51161013e578063b62496f514610999578063bb8d5131146109d6578063bbc0c74214610a01578063c024666814610a2c57610340565b8063a457c2d7146108f4578063a9059cbb14610931578063aa4bde281461096e57610340565b80638a8c523c1461080a5780638da5cb5b14610821578063906e9dd01461084c578063921369131461087557806395d89b41146108a05780639a7a23d6146108cb57610340565b80634a62bb65116102855780637571336a116102235780638095d564116101fd5780638095d564146107505780638366e79a1461077957806388e765ff146107b65780638906758d146107e157610340565b80637571336a146106d157806377a3b609146106fa5780637bce5a041461072557610340565b80636ddd17131161025f5780636ddd17131461063b57806370a0823114610666578063715018a6146106a3578063751039fc146106ba57610340565b80634a62bb65146105ba57806366d602ae146105e55780636a486a8e1461061057610340565b80631f3fed8f116102f2578063313ce567116102cc578063313ce567146104fc5780633936e8b914610527578063395093511461055257806349bd5a5e1461058f57610340565b80631f3fed8f1461046b57806323b872dd146104965780632be32b61146104d357610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b60405161036791906141ce565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614289565b610d35565b6040516103a491906142e4565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906142ff565b610d53565b6040516103e191906142e4565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c919061438b565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b60405161043791906143b5565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b60405161046291906143b5565b60405180910390f35b34801561047757600080fd5b50610480610da7565b60405161048d91906143b5565b60405180910390f35b3480156104a257600080fd5b506104bd60048036038101906104b891906143d0565b610dad565b6040516104ca91906142e4565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190614423565b610ea5565b005b34801561050857600080fd5b50610511611008565b60405161051e919061446c565b60405180910390f35b34801561053357600080fd5b5061053c611011565b6040516105499190614496565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190614289565b611037565b60405161058691906142e4565b60405180910390f35b34801561059b57600080fd5b506105a46110e3565b6040516105b19190614496565b60405180910390f35b3480156105c657600080fd5b506105cf611107565b6040516105dc91906142e4565b60405180910390f35b3480156105f157600080fd5b506105fa61111a565b60405161060791906143b5565b60405180910390f35b34801561061c57600080fd5b50610625611120565b60405161063291906143b5565b60405180910390f35b34801561064757600080fd5b50610650611126565b60405161065d91906142e4565b60405180910390f35b34801561067257600080fd5b5061068d600480360381019061068891906142ff565b611139565b60405161069a91906143b5565b60405180910390f35b3480156106af57600080fd5b506106b8611181565b005b3480156106c657600080fd5b506106cf6112d9565b005b3480156106dd57600080fd5b506106f860048036038101906106f391906144dd565b6113b9565b005b34801561070657600080fd5b5061070f611540565b60405161071c91906143b5565b60405180910390f35b34801561073157600080fd5b5061073a611546565b60405161074791906143b5565b60405180910390f35b34801561075c57600080fd5b506107776004803603810190610772919061451d565b61154c565b005b34801561078557600080fd5b506107a0600480360381019061079b9190614570565b611666565b6040516107ad91906142e4565b60405180910390f35b3480156107c257600080fd5b506107cb6118a5565b6040516107d891906143b5565b60405180910390f35b3480156107ed57600080fd5b50610808600480360381019061080391906142ff565b6118ab565b005b34801561081657600080fd5b5061081f611a39565b005b34801561082d57600080fd5b50610836611bc9565b6040516108439190614496565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906142ff565b611bf3565b005b34801561088157600080fd5b5061088a611d81565b60405161089791906143b5565b60405180910390f35b3480156108ac57600080fd5b506108b5611d87565b6040516108c291906141ce565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed91906144dd565b611e19565b005b34801561090057600080fd5b5061091b60048036038101906109169190614289565b611f4d565b60405161092891906142e4565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190614289565b612038565b60405161096591906142e4565b60405180910390f35b34801561097a57600080fd5b50610983612056565b60405161099091906143b5565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906142ff565b61205c565b6040516109cd91906142e4565b60405180910390f35b3480156109e257600080fd5b506109eb61207c565b6040516109f891906143b5565b60405180910390f35b348015610a0d57600080fd5b50610a16612082565b604051610a2391906142e4565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e91906144dd565b612095565b005b348015610a6157600080fd5b50610a6a6121d5565b604051610a779190614496565b60405180910390f35b348015610a8c57600080fd5b50610aa76004803603810190610aa2919061451d565b6121fb565b005b348015610ab557600080fd5b50610ad06004803603810190610acb9190614423565b612315565b005b348015610ade57600080fd5b50610af96004803603810190610af49190614423565b612478565b005b348015610b0757600080fd5b50610b10612525565b604051610b1d91906143b5565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614423565b61252b565b005b348015610b5b57600080fd5b50610b766004803603810190610b719190614570565b61268e565b604051610b8391906143b5565b60405180910390f35b348015610b9857600080fd5b50610ba1612715565b604051610bae91906143b5565b60405180910390f35b348015610bc357600080fd5b50610bcc61271b565b604051610bd991906143b5565b60405180910390f35b348015610bee57600080fd5b50610bf7612721565b604051610c0491906143b5565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f91906142ff565b612727565b005b348015610c4257600080fd5b50610c4b6128ee565b604051610c5891906143b5565b60405180910390f35b348015610c6d57600080fd5b50610c766128f4565b005b348015610c8457600080fd5b50610c8d6129f5565b604051610c9a91906143b5565b60405180910390f35b606060038054610cb2906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde906145df565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d426129fb565b8484612a03565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60185481565b60175481565b6000610dba848484612bce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e056129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90614683565b60405180910390fd5b610e9985610e916129fb565b858403612a03565b60019150509392505050565b610ead6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906146ef565b60405180910390fd5b670de0b6b3a76400006103e86001610f52610d97565b610f5c919061473e565b610f6691906147c7565b610f7091906147c7565b811015610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa99061486a565b60405180910390fd5b670de0b6b3a764000081610fc6919061473e565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ffd91906143b5565b60405180910390a150565b60006012905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110d96110446129fb565b8484600160006110526129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d4919061488a565b612a03565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b60075481565b60135481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111896129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112e16129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611370576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611367906146ef565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6113c16129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611447906146ef565b60405180910390fd5b806114e5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90614952565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b60105481565b6115546129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da906146ef565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461160b919061488a565b611615919061488a565b600f819055506032600f541115611661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611658906149be565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614a2a565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e90614abc565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117a29190614496565b602060405180830381865afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190614af1565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611820929190614b1e565b6020604051808303816000875af115801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190614b5c565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611896929190614b1e565b60405180910390a15092915050565b60065481565b6118b36129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a990614bfb565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b611a416129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906146ef565b60405180910390fd5b600e60019054906101000a900460ff1615611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1790614c67565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611b9491906142e4565b60405180910390a1600e60019054906101000a900460ff168015611bba57506000600d54145b15611bc75743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bfb6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c81906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190614cf9565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b60145481565b606060048054611d96906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc2906145df565b8015611e0f5780601f10611de457610100808354040283529160200191611e0f565b820191906000526020600020905b815481529060010190602001808311611df257829003601f168201915b5050505050905090565b611e216129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906146ef565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690614d8b565b60405180910390fd5b611f4982826137d0565b5050565b60008060016000611f5c6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090614e1d565b60405180910390fd5b61202d6120246129fb565b85858403612a03565b600191505092915050565b600061204c6120456129fb565b8484612bce565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b61209d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612123906146ef565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121c991906142e4565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122036129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612292576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612289906146ef565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546122ba919061488a565b6122c4919061488a565b60138190555060326013541115612310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612307906149be565b60405180910390fd5b505050565b61231d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a3906146ef565b60405180910390fd5b670de0b6b3a76400006103e860036123c2610d97565b6123cc919061473e565b6123d691906147c7565b6123e091906147c7565b811015612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614eaf565b60405180910390fd5b670de0b6b3a764000081612436919061473e565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161246d91906143b5565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ff90614abc565b60405180910390fd5b670de0b6b3a76400008161251c919061473e565b600a8190555050565b600f5481565b6125336129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b9906146ef565b60405180910390fd5b670de0b6b3a76400006103e860016125d8610d97565b6125e2919061473e565b6125ec91906147c7565b6125f691906147c7565b811015612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90614f41565b60405180910390fd5b670de0b6b3a76400008161264c919061473e565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161268391906143b5565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60115481565b61272f6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b5906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614fd3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614abc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16476040516129aa90615024565b60006040518083038185875af1925050503d80600081146129e7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ec565b606091505b50508091505050565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a906150ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada9061513d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc191906143b5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c35906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca590615261565b60405180910390fd5b60008111612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906152cd565b60405180910390fd5b600e60009054906101000a900460ff16156132a057612d0e611bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7c5750612d4c611bc9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612def575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561329f57600e60019054906101000a900460ff16612f5e57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615339565b60405180910390fd5b612ef0611bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f54906153a5565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130015750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130a85760065481111561304b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304290615437565b60405180910390fd5b60085461305783611139565b82613062919061488a565b11156130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a906154a3565b60405180910390fd5b61329e565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561314b5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561319a57600754811115613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318c90615535565b60405180910390fd5b61329d565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561323e5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561329c5760085461324f83611139565b8261325a919061488a565b111561329b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613292906154a3565b60405180910390fd5b5b5b5b5b5b60006132ab30611139565b90506000600a5482101590508080156132d05750600e60029054906101000a900460ff165b80156132e95750600960009054906101000a900460ff16155b801561333f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133955750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133eb5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342f576001600960006101000a81548160ff02191690831515021790555061341361387b565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d65750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134e057600090505b60008082156137bb576000600d541180156135085750436001600d54613506919061488a565b115b1561355a576064600a8761351c919061473e565b61352691906147c7565b905061355588600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b18565b61378c565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135b557506000601354115b15613674576064601354876135ca919061473e565b6135d491906147c7565b9150601354601554836135e7919061473e565b6135f191906147c7565b60186000828254613602919061488a565b925050819055506013546014548361361a919061473e565b61362491906147c7565b60176000828254613635919061488a565b925050819055506013546016548361364d919061473e565b61365791906147c7565b60196000828254613668919061488a565b9250508190555061378b565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136cf57506000600f54115b1561378a576064600f54876136e4919061473e565b6136ee91906147c7565b9150600f5460115483613701919061473e565b61370b91906147c7565b6018600082825461371c919061488a565b92505081905550600f5460105483613734919061473e565b61373e91906147c7565b6017600082825461374f919061488a565b92505081905550600f5460125483613767919061473e565b61377191906147c7565b60196000828254613782919061488a565b925050819055505b5b5b60008211156137a1576137a0883084613b18565b5b80826137ad919061488a565b866137b89190615555565b95505b6137c6888888613b18565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138318282613d83565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061388630611139565b9050600060195460175460185461389d919061488a565b6138a7919061488a565b905060008214806138b85750600081145b156138c4575050613b16565b6005600a546138d3919061473e565b8211156138ec576005600a546138e9919061473e565b91505b60008060028360185486613900919061473e565b61390a91906147c7565b61391491906147c7565b905061392a81856139259190615555565b613e17565b600047905060008190506000600260185461394591906147c7565b866139509190615555565b6017548461395e919061473e565b61396891906147c7565b90506000600260185461397b91906147c7565b876139869190615555565b60195485613994919061473e565b61399e91906147c7565b905080826139ac919061488a565b836139b79190615555565b92506000601881905550600060178190555060006019819055506000851180156139e15750600083115b156139f1576139f08584614054565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3790615024565b60006040518083038185875af1925050503d8060008114613a74576040519150601f19603f3d011682016040523d82523d6000602084013e613a79565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ac590615024565b60006040518083038185875af1925050503d8060008114613b02576040519150601f19603f3d011682016040523d82523d6000602084013e613b07565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef90615261565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c75906155fb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d11919061488a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7591906143b5565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e0b92919061561b565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3457613e33615644565b5b604051908082528060200260200182016040528015613e625781602001602082028036833780820191505090505b5090503081600081518110613e7a57613e79615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4391906156b7565b81600181518110613f5757613f56615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fbc307f000000000000000000000000000000000000000000000000000000000000000084612a03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161401e9594939291906157dd565b600060405180830381600087803b15801561403857600080fd5b505af115801561404c573d6000803e3d6000fd5b505050505050565b61407f307f000000000000000000000000000000000000000000000000000000000000000084612a03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140c9611bc9565b426040518863ffffffff1660e01b81526004016140eb96959493929190615837565b60606040518083038185885af1158015614109573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061412e9190615898565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561416f578082015181840152602081019050614154565b8381111561417e576000848401525b50505050565b6000601f19601f8301169050919050565b60006141a082614135565b6141aa8185614140565b93506141ba818560208601614151565b6141c381614184565b840191505092915050565b600060208201905081810360008301526141e88184614195565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614220826141f5565b9050919050565b61423081614215565b811461423b57600080fd5b50565b60008135905061424d81614227565b92915050565b6000819050919050565b61426681614253565b811461427157600080fd5b50565b6000813590506142838161425d565b92915050565b600080604083850312156142a05761429f6141f0565b5b60006142ae8582860161423e565b92505060206142bf85828601614274565b9150509250929050565b60008115159050919050565b6142de816142c9565b82525050565b60006020820190506142f960008301846142d5565b92915050565b600060208284031215614315576143146141f0565b5b60006143238482850161423e565b91505092915050565b6000819050919050565b600061435161434c614347846141f5565b61432c565b6141f5565b9050919050565b600061436382614336565b9050919050565b600061437582614358565b9050919050565b6143858161436a565b82525050565b60006020820190506143a0600083018461437c565b92915050565b6143af81614253565b82525050565b60006020820190506143ca60008301846143a6565b92915050565b6000806000606084860312156143e9576143e86141f0565b5b60006143f78682870161423e565b93505060206144088682870161423e565b925050604061441986828701614274565b9150509250925092565b600060208284031215614439576144386141f0565b5b600061444784828501614274565b91505092915050565b600060ff82169050919050565b61446681614450565b82525050565b6000602082019050614481600083018461445d565b92915050565b61449081614215565b82525050565b60006020820190506144ab6000830184614487565b92915050565b6144ba816142c9565b81146144c557600080fd5b50565b6000813590506144d7816144b1565b92915050565b600080604083850312156144f4576144f36141f0565b5b60006145028582860161423e565b9250506020614513858286016144c8565b9150509250929050565b600080600060608486031215614536576145356141f0565b5b600061454486828701614274565b935050602061455586828701614274565b925050604061456686828701614274565b9150509250925092565b60008060408385031215614587576145866141f0565b5b60006145958582860161423e565b92505060206145a68582860161423e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145f757607f821691505b6020821081141561460b5761460a6145b0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061466d602883614140565b915061467882614611565b604082019050919050565b6000602082019050818103600083015261469c81614660565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146d9602083614140565b91506146e4826146a3565b602082019050919050565b60006020820190508181036000830152614708816146cc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061474982614253565b915061475483614253565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561478d5761478c61470f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147d282614253565b91506147dd83614253565b9250826147ed576147ec614798565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614854602983614140565b915061485f826147f8565b604082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b600061489582614253565b91506148a083614253565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148d5576148d461470f565b5b828201905092915050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b600061493c602783614140565b9150614947826148e0565b604082019050919050565b6000602082019050818103600083015261496b8161492f565b9050919050565b7f46656573206d7573742062652035302520206f72206c65737300000000000000600082015250565b60006149a8601983614140565b91506149b382614972565b602082019050919050565b600060208201905081810360008301526149d78161499b565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614a14601a83614140565b9150614a1f826149de565b602082019050919050565b60006020820190508181036000830152614a4381614a07565b9050919050565b7f6f6e6c79204d61726b6574696e67416464726573732063616e2077697468647260008201527f6177000000000000000000000000000000000000000000000000000000000000602082015250565b6000614aa6602283614140565b9150614ab182614a4a565b604082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b600081519050614aeb8161425d565b92915050565b600060208284031215614b0757614b066141f0565b5b6000614b1584828501614adc565b91505092915050565b6000604082019050614b336000830185614487565b614b4060208301846143a6565b9392505050565b600081519050614b56816144b1565b92915050565b600060208284031215614b7257614b716141f0565b5b6000614b8084828501614b47565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614be5602383614140565b9150614bf082614b89565b604082019050919050565b60006020820190508181036000830152614c1481614bd8565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614c51601883614140565b9150614c5c82614c1b565b602082019050919050565b60006020820190508181036000830152614c8081614c44565b9050919050565b7f5f4d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b6000614ce3602583614140565b9150614cee82614c87565b604082019050919050565b60006020820190508181036000830152614d1281614cd6565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d75603983614140565b9150614d8082614d19565b604082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e07602583614140565b9150614e1282614dab565b604082019050919050565b60006020820190508181036000830152614e3681614dfa565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614e99602c83614140565b9150614ea482614e3d565b604082019050919050565b60006020820190508181036000830152614ec881614e8c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f2b602a83614140565b9150614f3682614ecf565b604082019050919050565b60006020820190508181036000830152614f5a81614f1e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fbd602683614140565b9150614fc882614f61565b604082019050919050565b60006020820190508181036000830152614fec81614fb0565b9050919050565b600081905092915050565b50565b600061500e600083614ff3565b915061501982614ffe565b600082019050919050565b600061502f82615001565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615095602483614140565b91506150a082615039565b604082019050919050565b600060208201905081810360008301526150c481615088565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615127602283614140565b9150615132826150cb565b604082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151b9602583614140565b91506151c48261515d565b604082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061524b602383614140565b9150615256826151ef565b604082019050919050565b6000602082019050818103600083015261527a8161523e565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152b7601d83614140565b91506152c282615281565b602082019050919050565b600060208201905081810360008301526152e6816152aa565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615323601683614140565b915061532e826152ed565b602082019050919050565b6000602082019050818103600083015261535281615316565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061538f601683614140565b915061539a82615359565b602082019050919050565b600060208201905081810360008301526153be81615382565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615421602883614140565b915061542c826153c5565b604082019050919050565b6000602082019050818103600083015261545081615414565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061548d601883614140565b915061549882615457565b602082019050919050565b600060208201905081810360008301526154bc81615480565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b600061551f602a83614140565b915061552a826154c3565b604082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b600061556082614253565b915061556b83614253565b92508282101561557e5761557d61470f565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155e5602683614140565b91506155f082615589565b604082019050919050565b60006020820190508181036000830152615614816155d8565b9050919050565b60006040820190506156306000830185614487565b61563d60208301846142d5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156b181614227565b92915050565b6000602082840312156156cd576156cc6141f0565b5b60006156db848285016156a2565b91505092915050565b6000819050919050565b60006157096157046156ff846156e4565b61432c565b614253565b9050919050565b615719816156ee565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61575481614215565b82525050565b6000615766838361574b565b60208301905092915050565b6000602082019050919050565b600061578a8261571f565b615794818561572a565b935061579f8361573b565b8060005b838110156157d05781516157b7888261575a565b97506157c283615772565b9250506001810190506157a3565b5085935050505092915050565b600060a0820190506157f260008301886143a6565b6157ff6020830187615710565b8181036040830152615811818661577f565b90506158206060830185614487565b61582d60808301846143a6565b9695505050505050565b600060c08201905061584c6000830189614487565b61585960208301886143a6565b6158666040830187615710565b6158736060830186615710565b6158806080830185614487565b61588d60a08301846143a6565b979650505050505050565b6000806000606084860312156158b1576158b06141f0565b5b60006158bf86828701614adc565b93505060206158d086828701614adc565b92505060406158e186828701614adc565b915050925092509256fea26469706673582212201948231cff5a37d34ba8c64e851d3f921d9e72313060c477de4e7b62c4ef57ea64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638a8c523c116101ab578063c054f2f4116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610c0d578063f54afa7814610c36578063f5648a4f14610c61578063f637434214610c7857610340565b8063e2f4560514610b8c578063ee40166e14610bb7578063f11a24d314610be257610340565b8063cc274b29116100d1578063cc274b2914610ad2578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c054f2f414610a55578063c17b5b8c14610a80578063c18bc19514610aa957610340565b8063a457c2d711610164578063b62496f51161013e578063b62496f514610999578063bb8d5131146109d6578063bbc0c74214610a01578063c024666814610a2c57610340565b8063a457c2d7146108f4578063a9059cbb14610931578063aa4bde281461096e57610340565b80638a8c523c1461080a5780638da5cb5b14610821578063906e9dd01461084c578063921369131461087557806395d89b41146108a05780639a7a23d6146108cb57610340565b80634a62bb65116102855780637571336a116102235780638095d564116101fd5780638095d564146107505780638366e79a1461077957806388e765ff146107b65780638906758d146107e157610340565b80637571336a146106d157806377a3b609146106fa5780637bce5a041461072557610340565b80636ddd17131161025f5780636ddd17131461063b57806370a0823114610666578063715018a6146106a3578063751039fc146106ba57610340565b80634a62bb65146105ba57806366d602ae146105e55780636a486a8e1461061057610340565b80631f3fed8f116102f2578063313ce567116102cc578063313ce567146104fc5780633936e8b914610527578063395093511461055257806349bd5a5e1461058f57610340565b80631f3fed8f1461046b57806323b872dd146104965780632be32b61146104d357610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b60405161036791906141ce565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614289565b610d35565b6040516103a491906142e4565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906142ff565b610d53565b6040516103e191906142e4565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c919061438b565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b60405161043791906143b5565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b60405161046291906143b5565b60405180910390f35b34801561047757600080fd5b50610480610da7565b60405161048d91906143b5565b60405180910390f35b3480156104a257600080fd5b506104bd60048036038101906104b891906143d0565b610dad565b6040516104ca91906142e4565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190614423565b610ea5565b005b34801561050857600080fd5b50610511611008565b60405161051e919061446c565b60405180910390f35b34801561053357600080fd5b5061053c611011565b6040516105499190614496565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190614289565b611037565b60405161058691906142e4565b60405180910390f35b34801561059b57600080fd5b506105a46110e3565b6040516105b19190614496565b60405180910390f35b3480156105c657600080fd5b506105cf611107565b6040516105dc91906142e4565b60405180910390f35b3480156105f157600080fd5b506105fa61111a565b60405161060791906143b5565b60405180910390f35b34801561061c57600080fd5b50610625611120565b60405161063291906143b5565b60405180910390f35b34801561064757600080fd5b50610650611126565b60405161065d91906142e4565b60405180910390f35b34801561067257600080fd5b5061068d600480360381019061068891906142ff565b611139565b60405161069a91906143b5565b60405180910390f35b3480156106af57600080fd5b506106b8611181565b005b3480156106c657600080fd5b506106cf6112d9565b005b3480156106dd57600080fd5b506106f860048036038101906106f391906144dd565b6113b9565b005b34801561070657600080fd5b5061070f611540565b60405161071c91906143b5565b60405180910390f35b34801561073157600080fd5b5061073a611546565b60405161074791906143b5565b60405180910390f35b34801561075c57600080fd5b506107776004803603810190610772919061451d565b61154c565b005b34801561078557600080fd5b506107a0600480360381019061079b9190614570565b611666565b6040516107ad91906142e4565b60405180910390f35b3480156107c257600080fd5b506107cb6118a5565b6040516107d891906143b5565b60405180910390f35b3480156107ed57600080fd5b50610808600480360381019061080391906142ff565b6118ab565b005b34801561081657600080fd5b5061081f611a39565b005b34801561082d57600080fd5b50610836611bc9565b6040516108439190614496565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906142ff565b611bf3565b005b34801561088157600080fd5b5061088a611d81565b60405161089791906143b5565b60405180910390f35b3480156108ac57600080fd5b506108b5611d87565b6040516108c291906141ce565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed91906144dd565b611e19565b005b34801561090057600080fd5b5061091b60048036038101906109169190614289565b611f4d565b60405161092891906142e4565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190614289565b612038565b60405161096591906142e4565b60405180910390f35b34801561097a57600080fd5b50610983612056565b60405161099091906143b5565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906142ff565b61205c565b6040516109cd91906142e4565b60405180910390f35b3480156109e257600080fd5b506109eb61207c565b6040516109f891906143b5565b60405180910390f35b348015610a0d57600080fd5b50610a16612082565b604051610a2391906142e4565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e91906144dd565b612095565b005b348015610a6157600080fd5b50610a6a6121d5565b604051610a779190614496565b60405180910390f35b348015610a8c57600080fd5b50610aa76004803603810190610aa2919061451d565b6121fb565b005b348015610ab557600080fd5b50610ad06004803603810190610acb9190614423565b612315565b005b348015610ade57600080fd5b50610af96004803603810190610af49190614423565b612478565b005b348015610b0757600080fd5b50610b10612525565b604051610b1d91906143b5565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614423565b61252b565b005b348015610b5b57600080fd5b50610b766004803603810190610b719190614570565b61268e565b604051610b8391906143b5565b60405180910390f35b348015610b9857600080fd5b50610ba1612715565b604051610bae91906143b5565b60405180910390f35b348015610bc357600080fd5b50610bcc61271b565b604051610bd991906143b5565b60405180910390f35b348015610bee57600080fd5b50610bf7612721565b604051610c0491906143b5565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f91906142ff565b612727565b005b348015610c4257600080fd5b50610c4b6128ee565b604051610c5891906143b5565b60405180910390f35b348015610c6d57600080fd5b50610c766128f4565b005b348015610c8457600080fd5b50610c8d6129f5565b604051610c9a91906143b5565b60405180910390f35b606060038054610cb2906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde906145df565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d426129fb565b8484612a03565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60185481565b60175481565b6000610dba848484612bce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e056129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90614683565b60405180910390fd5b610e9985610e916129fb565b858403612a03565b60019150509392505050565b610ead6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906146ef565b60405180910390fd5b670de0b6b3a76400006103e86001610f52610d97565b610f5c919061473e565b610f6691906147c7565b610f7091906147c7565b811015610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa99061486a565b60405180910390fd5b670de0b6b3a764000081610fc6919061473e565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ffd91906143b5565b60405180910390a150565b60006012905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110d96110446129fb565b8484600160006110526129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d4919061488a565b612a03565b6001905092915050565b7f000000000000000000000000dca8ec89e06f7d2ae9dc32321c27fad3973a765181565b600e60009054906101000a900460ff1681565b60075481565b60135481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111896129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112e16129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611370576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611367906146ef565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6113c16129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611447906146ef565b60405180910390fd5b806114e5577f000000000000000000000000dca8ec89e06f7d2ae9dc32321c27fad3973a765173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90614952565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b60105481565b6115546129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da906146ef565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461160b919061488a565b611615919061488a565b600f819055506032600f541115611661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611658906149be565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614a2a565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e90614abc565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117a29190614496565b602060405180830381865afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190614af1565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611820929190614b1e565b6020604051808303816000875af115801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190614b5c565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611896929190614b1e565b60405180910390a15092915050565b60065481565b6118b36129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a990614bfb565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b611a416129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906146ef565b60405180910390fd5b600e60019054906101000a900460ff1615611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1790614c67565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611b9491906142e4565b60405180910390a1600e60019054906101000a900460ff168015611bba57506000600d54145b15611bc75743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bfb6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c81906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190614cf9565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b60145481565b606060048054611d96906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc2906145df565b8015611e0f5780601f10611de457610100808354040283529160200191611e0f565b820191906000526020600020905b815481529060010190602001808311611df257829003601f168201915b5050505050905090565b611e216129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906146ef565b60405180910390fd5b7f000000000000000000000000dca8ec89e06f7d2ae9dc32321c27fad3973a765173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690614d8b565b60405180910390fd5b611f4982826137d0565b5050565b60008060016000611f5c6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090614e1d565b60405180910390fd5b61202d6120246129fb565b85858403612a03565b600191505092915050565b600061204c6120456129fb565b8484612bce565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b61209d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612123906146ef565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121c991906142e4565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122036129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612292576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612289906146ef565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546122ba919061488a565b6122c4919061488a565b60138190555060326013541115612310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612307906149be565b60405180910390fd5b505050565b61231d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a3906146ef565b60405180910390fd5b670de0b6b3a76400006103e860036123c2610d97565b6123cc919061473e565b6123d691906147c7565b6123e091906147c7565b811015612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614eaf565b60405180910390fd5b670de0b6b3a764000081612436919061473e565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161246d91906143b5565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ff90614abc565b60405180910390fd5b670de0b6b3a76400008161251c919061473e565b600a8190555050565b600f5481565b6125336129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b9906146ef565b60405180910390fd5b670de0b6b3a76400006103e860016125d8610d97565b6125e2919061473e565b6125ec91906147c7565b6125f691906147c7565b811015612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90614f41565b60405180910390fd5b670de0b6b3a76400008161264c919061473e565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161268391906143b5565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60115481565b61272f6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b5906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614fd3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614abc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16476040516129aa90615024565b60006040518083038185875af1925050503d80600081146129e7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ec565b606091505b50508091505050565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a906150ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada9061513d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc191906143b5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c35906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca590615261565b60405180910390fd5b60008111612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906152cd565b60405180910390fd5b600e60009054906101000a900460ff16156132a057612d0e611bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7c5750612d4c611bc9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612def575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561329f57600e60019054906101000a900460ff16612f5e57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615339565b60405180910390fd5b612ef0611bc9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f54906153a5565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130015750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130a85760065481111561304b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304290615437565b60405180910390fd5b60085461305783611139565b82613062919061488a565b11156130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a906154a3565b60405180910390fd5b61329e565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561314b5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561319a57600754811115613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318c90615535565b60405180910390fd5b61329d565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561323e5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561329c5760085461324f83611139565b8261325a919061488a565b111561329b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613292906154a3565b60405180910390fd5b5b5b5b5b5b60006132ab30611139565b90506000600a5482101590508080156132d05750600e60029054906101000a900460ff165b80156132e95750600960009054906101000a900460ff16155b801561333f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133955750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133eb5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342f576001600960006101000a81548160ff02191690831515021790555061341361387b565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d65750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134e057600090505b60008082156137bb576000600d541180156135085750436001600d54613506919061488a565b115b1561355a576064600a8761351c919061473e565b61352691906147c7565b905061355588600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b18565b61378c565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135b557506000601354115b15613674576064601354876135ca919061473e565b6135d491906147c7565b9150601354601554836135e7919061473e565b6135f191906147c7565b60186000828254613602919061488a565b925050819055506013546014548361361a919061473e565b61362491906147c7565b60176000828254613635919061488a565b925050819055506013546016548361364d919061473e565b61365791906147c7565b60196000828254613668919061488a565b9250508190555061378b565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136cf57506000600f54115b1561378a576064600f54876136e4919061473e565b6136ee91906147c7565b9150600f5460115483613701919061473e565b61370b91906147c7565b6018600082825461371c919061488a565b92505081905550600f5460105483613734919061473e565b61373e91906147c7565b6017600082825461374f919061488a565b92505081905550600f5460125483613767919061473e565b61377191906147c7565b60196000828254613782919061488a565b925050819055505b5b5b60008211156137a1576137a0883084613b18565b5b80826137ad919061488a565b866137b89190615555565b95505b6137c6888888613b18565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138318282613d83565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061388630611139565b9050600060195460175460185461389d919061488a565b6138a7919061488a565b905060008214806138b85750600081145b156138c4575050613b16565b6005600a546138d3919061473e565b8211156138ec576005600a546138e9919061473e565b91505b60008060028360185486613900919061473e565b61390a91906147c7565b61391491906147c7565b905061392a81856139259190615555565b613e17565b600047905060008190506000600260185461394591906147c7565b866139509190615555565b6017548461395e919061473e565b61396891906147c7565b90506000600260185461397b91906147c7565b876139869190615555565b60195485613994919061473e565b61399e91906147c7565b905080826139ac919061488a565b836139b79190615555565b92506000601881905550600060178190555060006019819055506000851180156139e15750600083115b156139f1576139f08584614054565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3790615024565b60006040518083038185875af1925050503d8060008114613a74576040519150601f19603f3d011682016040523d82523d6000602084013e613a79565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ac590615024565b60006040518083038185875af1925050503d8060008114613b02576040519150601f19603f3d011682016040523d82523d6000602084013e613b07565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef90615261565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c75906155fb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d11919061488a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7591906143b5565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e0b92919061561b565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3457613e33615644565b5b604051908082528060200260200182016040528015613e625781602001602082028036833780820191505090505b5090503081600081518110613e7a57613e79615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4391906156b7565b81600181518110613f5757613f56615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fbc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a03565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161401e9594939291906157dd565b600060405180830381600087803b15801561403857600080fd5b505af115801561404c573d6000803e3d6000fd5b505050505050565b61407f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a03565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140c9611bc9565b426040518863ffffffff1660e01b81526004016140eb96959493929190615837565b60606040518083038185885af1158015614109573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061412e9190615898565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561416f578082015181840152602081019050614154565b8381111561417e576000848401525b50505050565b6000601f19601f8301169050919050565b60006141a082614135565b6141aa8185614140565b93506141ba818560208601614151565b6141c381614184565b840191505092915050565b600060208201905081810360008301526141e88184614195565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614220826141f5565b9050919050565b61423081614215565b811461423b57600080fd5b50565b60008135905061424d81614227565b92915050565b6000819050919050565b61426681614253565b811461427157600080fd5b50565b6000813590506142838161425d565b92915050565b600080604083850312156142a05761429f6141f0565b5b60006142ae8582860161423e565b92505060206142bf85828601614274565b9150509250929050565b60008115159050919050565b6142de816142c9565b82525050565b60006020820190506142f960008301846142d5565b92915050565b600060208284031215614315576143146141f0565b5b60006143238482850161423e565b91505092915050565b6000819050919050565b600061435161434c614347846141f5565b61432c565b6141f5565b9050919050565b600061436382614336565b9050919050565b600061437582614358565b9050919050565b6143858161436a565b82525050565b60006020820190506143a0600083018461437c565b92915050565b6143af81614253565b82525050565b60006020820190506143ca60008301846143a6565b92915050565b6000806000606084860312156143e9576143e86141f0565b5b60006143f78682870161423e565b93505060206144088682870161423e565b925050604061441986828701614274565b9150509250925092565b600060208284031215614439576144386141f0565b5b600061444784828501614274565b91505092915050565b600060ff82169050919050565b61446681614450565b82525050565b6000602082019050614481600083018461445d565b92915050565b61449081614215565b82525050565b60006020820190506144ab6000830184614487565b92915050565b6144ba816142c9565b81146144c557600080fd5b50565b6000813590506144d7816144b1565b92915050565b600080604083850312156144f4576144f36141f0565b5b60006145028582860161423e565b9250506020614513858286016144c8565b9150509250929050565b600080600060608486031215614536576145356141f0565b5b600061454486828701614274565b935050602061455586828701614274565b925050604061456686828701614274565b9150509250925092565b60008060408385031215614587576145866141f0565b5b60006145958582860161423e565b92505060206145a68582860161423e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145f757607f821691505b6020821081141561460b5761460a6145b0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061466d602883614140565b915061467882614611565b604082019050919050565b6000602082019050818103600083015261469c81614660565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146d9602083614140565b91506146e4826146a3565b602082019050919050565b60006020820190508181036000830152614708816146cc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061474982614253565b915061475483614253565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561478d5761478c61470f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147d282614253565b91506147dd83614253565b9250826147ed576147ec614798565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614854602983614140565b915061485f826147f8565b604082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b600061489582614253565b91506148a083614253565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148d5576148d461470f565b5b828201905092915050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b600061493c602783614140565b9150614947826148e0565b604082019050919050565b6000602082019050818103600083015261496b8161492f565b9050919050565b7f46656573206d7573742062652035302520206f72206c65737300000000000000600082015250565b60006149a8601983614140565b91506149b382614972565b602082019050919050565b600060208201905081810360008301526149d78161499b565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614a14601a83614140565b9150614a1f826149de565b602082019050919050565b60006020820190508181036000830152614a4381614a07565b9050919050565b7f6f6e6c79204d61726b6574696e67416464726573732063616e2077697468647260008201527f6177000000000000000000000000000000000000000000000000000000000000602082015250565b6000614aa6602283614140565b9150614ab182614a4a565b604082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b600081519050614aeb8161425d565b92915050565b600060208284031215614b0757614b066141f0565b5b6000614b1584828501614adc565b91505092915050565b6000604082019050614b336000830185614487565b614b4060208301846143a6565b9392505050565b600081519050614b56816144b1565b92915050565b600060208284031215614b7257614b716141f0565b5b6000614b8084828501614b47565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614be5602383614140565b9150614bf082614b89565b604082019050919050565b60006020820190508181036000830152614c1481614bd8565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614c51601883614140565b9150614c5c82614c1b565b602082019050919050565b60006020820190508181036000830152614c8081614c44565b9050919050565b7f5f4d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b6000614ce3602583614140565b9150614cee82614c87565b604082019050919050565b60006020820190508181036000830152614d1281614cd6565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d75603983614140565b9150614d8082614d19565b604082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e07602583614140565b9150614e1282614dab565b604082019050919050565b60006020820190508181036000830152614e3681614dfa565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614e99602c83614140565b9150614ea482614e3d565b604082019050919050565b60006020820190508181036000830152614ec881614e8c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f2b602a83614140565b9150614f3682614ecf565b604082019050919050565b60006020820190508181036000830152614f5a81614f1e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fbd602683614140565b9150614fc882614f61565b604082019050919050565b60006020820190508181036000830152614fec81614fb0565b9050919050565b600081905092915050565b50565b600061500e600083614ff3565b915061501982614ffe565b600082019050919050565b600061502f82615001565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615095602483614140565b91506150a082615039565b604082019050919050565b600060208201905081810360008301526150c481615088565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615127602283614140565b9150615132826150cb565b604082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151b9602583614140565b91506151c48261515d565b604082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061524b602383614140565b9150615256826151ef565b604082019050919050565b6000602082019050818103600083015261527a8161523e565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152b7601d83614140565b91506152c282615281565b602082019050919050565b600060208201905081810360008301526152e6816152aa565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615323601683614140565b915061532e826152ed565b602082019050919050565b6000602082019050818103600083015261535281615316565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061538f601683614140565b915061539a82615359565b602082019050919050565b600060208201905081810360008301526153be81615382565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615421602883614140565b915061542c826153c5565b604082019050919050565b6000602082019050818103600083015261545081615414565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061548d601883614140565b915061549882615457565b602082019050919050565b600060208201905081810360008301526154bc81615480565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b600061551f602a83614140565b915061552a826154c3565b604082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b600061556082614253565b915061556b83614253565b92508282101561557e5761557d61470f565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155e5602683614140565b91506155f082615589565b604082019050919050565b60006020820190508181036000830152615614816155d8565b9050919050565b60006040820190506156306000830185614487565b61563d60208301846142d5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156b181614227565b92915050565b6000602082840312156156cd576156cc6141f0565b5b60006156db848285016156a2565b91505092915050565b6000819050919050565b60006157096157046156ff846156e4565b61432c565b614253565b9050919050565b615719816156ee565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61575481614215565b82525050565b6000615766838361574b565b60208301905092915050565b6000602082019050919050565b600061578a8261571f565b615794818561572a565b935061579f8361573b565b8060005b838110156157d05781516157b7888261575a565b97506157c283615772565b9250506001810190506157a3565b5085935050505092915050565b600060a0820190506157f260008301886143a6565b6157ff6020830187615710565b8181036040830152615811818661577f565b90506158206060830185614487565b61582d60808301846143a6565b9695505050505050565b600060c08201905061584c6000830189614487565b61585960208301886143a6565b6158666040830187615710565b6158736060830186615710565b6158806080830185614487565b61588d60a08301846143a6565b979650505050505050565b6000806000606084860312156158b1576158b06141f0565b5b60006158bf86828701614adc565b93505060206158d086828701614adc565b92505060406158e186828701614adc565b915050925092509256fea26469706673582212201948231cff5a37d34ba8c64e851d3f921d9e72313060c477de4e7b62c4ef57ea64736f6c634300080c0033

Deployed Bytecode Sourcemap

7146:15020:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2778:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8268:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7297:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2185:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8073:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8033;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2955:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11118:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2084:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7464:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3443:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7347:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7619:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7223:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7884;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7699:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2301:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5905:150;;;;;;;;;;;;;:::i;:::-;;11725:115;;;;;;;;;;;;;:::i;:::-;;12065:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7847:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7773:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13607:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12842:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7189:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20063:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21822:337;;;;;;;;;;;;;:::i;:::-;;5691:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19766:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7919:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1972:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18734:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3666:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2436:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7258:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8490:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7995:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7659:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14394:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7502:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13996:390;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12340:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12632:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7739:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11395:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2619:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7422:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7540:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7810:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6063:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8113:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13366:233;;;;;;;;;;;;;:::i;:::-;;7957:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1864:100;1918:13;1951:5;1944:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:100;:::o;2778:169::-;2861:4;2878:39;2887:12;:10;:12::i;:::-;2901:7;2910:6;2878:8;:39::i;:::-;2935:4;2928:11;;2778:169;;;;:::o;8268:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7297:43::-;;;:::o;2185:108::-;2246:7;2273:12;;2266:19;;2185:108;:::o;8073:33::-;;;;:::o;8033:::-;;;;:::o;2955:480::-;3095:4;3112:36;3122:6;3130:9;3141:6;3112:9;:36::i;:::-;3161:24;3188:11;:19;3200:6;3188:19;;;;;;;;;;;;;;;:33;3208:12;:10;:12::i;:::-;3188:33;;;;;;;;;;;;;;;;3161:60;;3260:6;3240:16;:26;;3232:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3339:57;3348:6;3356:12;:10;:12::i;:::-;3389:6;3370:16;:25;3339:8;:57::i;:::-;3423:4;3416:11;;;2955:480;;;;;:::o;11118:269::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11237:4:::1;11231;11227:1;11211:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11210:31;;;;:::i;:::-;11200:6;:41;;11192:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11323:6;11313;:17;;;;:::i;:::-;11298:12;:32;;;;11346:33;11366:12;;11346:33;;;;;;:::i;:::-;;;;;;;;11118:269:::0;:::o;2084:93::-;2142:5;2167:2;2160:9;;2084:93;:::o;7464:31::-;;;;;;;;;;;;;:::o;3443:215::-;3531:4;3548:80;3557:12;:10;:12::i;:::-;3571:7;3617:10;3580:11;:25;3592:12;:10;:12::i;:::-;3580:25;;;;;;;;;;;;;;;:34;3606:7;3580:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3548:8;:80::i;:::-;3646:4;3639:11;;3443:215;;;;:::o;7347:38::-;;;:::o;7619:33::-;;;;;;;;;;;;;:::o;7223:28::-;;;;:::o;7884:::-;;;;:::o;7699:31::-;;;;;;;;;;;;;:::o;2301:127::-;2375:7;2402:9;:18;2412:7;2402:18;;;;;;;;;;;;;;;;2395:25;;2301:127;;;:::o;5905:150::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6014:1:::1;5977:40;;5998:6;;;;;;;;;;;5977:40;;;;;;;;;;;;6045:1;6028:6;;:19;;;;;;;;;;;;;;;;;;5905:150::o:0;11725:115::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11796:5:::1;11779:14;;:22;;;;;;;;;;;;;;;;;;11817:15;;;;;;;;;;11725:115::o:0;12065:267::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12161:4:::1;12157:111;;12199:13;12189:23;;:6;:23;;;;12181:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12157:111;12320:4;12278:31;:39;12310:6;12278:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12065:267:::0;;:::o;7847:28::-;;;;:::o;7773:30::-;;;;:::o;13607:381::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13745:13:::1;13727:15;:31;;;;13787:13;13769:15;:31;;;;13827:11;13811:13;:27;;;;13900:13;;13882:15;;13864;;:33;;;;:::i;:::-;:49;;;;:::i;:::-;13849:12;:64;;;;13948:2;13932:12;;:18;;13924:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13607:381:::0;;;:::o;12842:454::-;12917:10;12966:1;12948:20;;:6;:20;;;;12940:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13030:16;;;;;;;;;;;13018:28;;:10;:28;;;13010:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13095:24;13129:6;13122:24;;;13155:4;13122:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13095:66;;13187:6;13180:23;;;13204:3;13209:16;13180:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13172:54;;13242:46;13263:6;13271:16;13242:46;;;;;;;:::i;:::-;;;;;;;;12929:367;12842:454;;;;:::o;7189:27::-;;;;:::o;20063:273::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20180:1:::1;20153:29;;:15;:29;;;;20145:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20258:15;20233:14;;:41;;;;;;;;;;;;;;;;;;20312:15;20290:38;;;;;;;;;;;;20063:273:::0;:::o;21822:337::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21886:13:::1;;;;;;;;;;;21885:14;21877:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;21955:4;21939:13;;:20;;;;;;;;;;;;;;;;;;21984:4;21970:11;;:18;;;;;;;;;;;;;;;;;;22004:29;22019:13;;;;;;;;;;;22004:29;;;;;;:::i;:::-;;;;;;;;22050:13;;;;;;;;;;;:40;;;;;22089:1;22067:18;;:23;22050:40;22046:106;;;22128:12;22107:18;:33;;;;22046:106;21822:337::o:0;5691:79::-;5729:7;5756:6;;;;;;;;;;;5749:13;;5691:79;:::o;19766:289::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19889:1:::1;19860:31;;:17;:31;;;;19852:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;19971:17;19944:16;;:45;;;;;;;;;;;;;;;;;;20029:17;20005:42;;;;;;;;;;;;19766:289:::0;:::o;7919:31::-;;;;:::o;1972:104::-;2028:13;2061:7;2054:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1972:104;:::o;18734:246::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18843:13:::1;18835:21;;:4;:21;;;;18827:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18931:41;18960:4;18966:5;18931:28;:41::i;:::-;18734:246:::0;;:::o;3666:401::-;3759:4;3776:24;3803:11;:25;3815:12;:10;:12::i;:::-;3803:25;;;;;;;;;;;;;;;:34;3829:7;3803:34;;;;;;;;;;;;;;;;3776:61;;3876:15;3856:16;:35;;3848:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3961:67;3970:12;:10;:12::i;:::-;3984:7;4012:15;3993:16;:34;3961:8;:67::i;:::-;4055:4;4048:11;;;3666:401;;;;:::o;2436:175::-;2522:4;2539:42;2549:12;:10;:12::i;:::-;2563:9;2574:6;2539:9;:42::i;:::-;2599:4;2592:11;;2436:175;;;;:::o;7258:30::-;;;;:::o;8490:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7995:29::-;;;;:::o;7659:33::-;;;;;;;;;;;;;:::o;14394:182::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14510:8:::1;14479:19;:28;14499:7;14479:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14550:7;14534:34;;;14559:8;14534:34;;;;;;:::i;:::-;;;;;;;;14394:182:::0;;:::o;7502:29::-;;;;;;;;;;;;;:::o;13996:390::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14136:13:::1;14117:16;:32;;;;14179:13;14160:16;:32;;;;14220:11;14203:14;:28;;;;14296:14;;14277:16;;14258;;:35;;;;:::i;:::-;:52;;;;:::i;:::-;14242:13;:68;;;;14346:2;14329:13;;:19;;14321:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13996:390:::0;;;:::o;12340:284::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12462:4:::1;12456;12452:1;12436:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12435:31;;;;:::i;:::-;12425:6;:41;;12417:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12554:6;12544;:17;;;;:::i;:::-;12526:15;:35;;;;12577:39;12600:15;;12577:39;;;;;;:::i;:::-;;;;;;;;12340:284:::0;:::o;12632:200::-;12719:16;;;;;;;;;;;12707:28;;:10;:28;;;12699:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12817:6;12805:9;:19;;;;:::i;:::-;12784:18;:40;;;;12632:200;:::o;7739:27::-;;;;:::o;11395:274::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11515:4:::1;11509;11505:1;11489:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11488:31;;;;:::i;:::-;11478:6;:41;;11470:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11603:6;11593;:17;;;;:::i;:::-;11577:13;:33;;;;11626:35;11647:13;;11626:35;;;;;;:::i;:::-;;;;;;;;11395:274:::0;:::o;2619:151::-;2708:7;2735:11;:18;2747:5;2735:18;;;;;;;;;;;;;;;:27;2754:7;2735:27;;;;;;;;;;;;;;;;2728:34;;2619:151;;;;:::o;7422:33::-;;;;:::o;7540:37::-;;;;:::o;7810:30::-;;;;:::o;6063:244::-;5828:12;:10;:12::i;:::-;5818:22;;:6;;;;;;;;;;;:22;;;5810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6172:1:::1;6152:22;;:8;:22;;;;6144:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6262:8;6233:38;;6254:6;;;;;;;;;;;6233:38;;;;;;;;;;;;6291:8;6282:6;;:17;;;;;;;;;;;;;;;;;;6063:244:::0;:::o;8113:31::-;;;;:::o;13366:233::-;13412:12;13455:16;;;;;;;;;;;13443:28;;:10;:28;;;13435:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13541:10;13533:24;;13565:21;13533:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13520:71;;;;;13401:198;13366:233::o;7957:31::-;;;;:::o;303:98::-;356:7;383:10;376:17;;303:98;:::o;4984:380::-;5137:1;5120:19;;:5;:19;;;;5112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5218:1;5199:21;;:7;:21;;;;5191:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5302:6;5272:11;:18;5284:5;5272:18;;;;;;;;;;;;;;;:27;5291:7;5272:27;;;;;;;;;;;;;;;:36;;;;5340:7;5324:32;;5333:5;5324:32;;;5349:6;5324:32;;;;;;:::i;:::-;;;;;;;;4984:380;;;:::o;14586:3541::-;14702:1;14686:18;;:4;:18;;;;14678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14779:1;14765:16;;:2;:16;;;;14757:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14849:1;14840:6;:10;14832:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14902:14;;;;;;;;;;;14899:1224;;;14944:7;:5;:7::i;:::-;14936:15;;:4;:15;;;;:32;;;;;14961:7;:5;:7::i;:::-;14955:13;;:2;:13;;;;14936:32;:52;;;;;14986:1;14972:16;;:2;:16;;;;14936:52;:77;;;;;15006:6;14992:21;;:2;:21;;;;14936:77;14932:1180;;;15037:13;;;;;;;;;;;15033:245;;15082:31;:37;15114:4;15082:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15123:31;:35;15155:2;15123:35;;;;;;;;;;;;;;;;;;;;;;;;;15082:76;15074:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15224:7;:5;:7::i;:::-;15216:15;;:4;:15;;;15208:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15033:245;15328:25;:31;15354:4;15328:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15364:31;:35;15396:2;15364:35;;;;;;;;;;;;;;;;;;;;;;;;;15363:36;15328:71;15324:773;;;15442:12;;15432:6;:22;;15424:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15556:15;;15539:13;15549:2;15539:9;:13::i;:::-;15530:6;:22;;;;:::i;:::-;:41;;15522:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15324:773;;;15676:25;:29;15702:2;15676:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15710:31;:37;15742:4;15710:37;;;;;;;;;;;;;;;;;;;;;;;;;15709:38;15676:71;15672:425;;;15790:13;;15780:6;:23;;15772:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15672:425;;;15898:31;:35;15930:2;15898:35;;;;;;;;;;;;;;;;;;;;;;;;;15897:36;:78;;;;;15938:31;:37;15970:4;15938:37;;;;;;;;;;;;;;;;;;;;;;;;;15937:38;15897:78;15893:204;;;16033:15;;16016:13;16026:2;16016:9;:13::i;:::-;16007:6;:22;;;;:::i;:::-;:41;;15999:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15893:204;15672:425;15324:773;14932:1180;14899:1224;16135:28;16166:24;16184:4;16166:9;:24::i;:::-;16135:55;;16203:12;16242:18;;16218:20;:42;;16203:57;;16276:7;:22;;;;;16287:11;;;;;;;;;;;16276:22;:35;;;;;16303:8;;;;;;;;;;;16302:9;16276:35;:71;;;;;16316:25;:31;16342:4;16316:31;;;;;;;;;;;;;;;;;;;;;;;;;16315:32;16276:71;:101;;;;;16352:19;:25;16372:4;16352:25;;;;;;;;;;;;;;;;;;;;;;;;;16351:26;16276:101;:129;;;;;16382:19;:23;16402:2;16382:23;;;;;;;;;;;;;;;;;;;;;;;;;16381:24;16276:129;16273:236;;;16433:4;16422:8;;:15;;;;;;;;;;;;;;;;;;16454:10;:8;:10::i;:::-;16492:5;16481:8;;:16;;;;;;;;;;;;;;;;;;16273:236;16521:12;16536:4;16521:19;;16639;:25;16659:4;16639:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16668:19;:23;16688:2;16668:23;;;;;;;;;;;;;;;;;;;;;;;;;16639:52;16636:99;;;16718:5;16708:15;;16636:99;16747:12;16774:21;16877:7;16874:1200;;;16929:1;16910:18;;:20;:63;;;;;16961:12;16956:1;16935:18;;:22;;;;:::i;:::-;16934:39;16910:63;16907:1006;;;17023:3;17018:2;17009:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;16993:33;;17045:52;17061:4;17067:14;;;;;;;;;;;17083:13;17045:15;:52::i;:::-;16907:1006;;;17160:25;:29;17186:2;17160:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17209:1;17193:13;;:17;17160:50;17156:757;;;17261:3;17246:13;;17237:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;17230:34;;17331:13;;17312:16;;17305:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17283:18;;:61;;;;;;;:::i;:::-;;;;;;;;17411:13;;17392:16;;17385:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17363:18;;:61;;;;;;;:::i;:::-;;;;;;;;17487:13;;17470:14;;17463:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;17443:16;;:57;;;;;;;:::i;:::-;;;;;;;;17156:757;;;17561:25;:31;17587:4;17561:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17611:1;17596:12;;:16;17561:51;17558:355;;;17664:3;17649:12;;17640:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17633:34;;17733:12;;17715:15;;17708:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17686:18;;:59;;;;;;;:::i;:::-;;;;;;;;17811:12;;17793:15;;17786:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17764:18;;:59;;;;;;;:::i;:::-;;;;;;;;17885:12;;17869:13;;17862:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;17842:16;;:55;;;;;;;:::i;:::-;;;;;;;;17558:355;17156:757;16907:1006;17939:1;17932:4;:8;17929:89;;;17960:42;17976:4;17990;17997;17960:15;:42::i;:::-;17929:89;18049:13;18042:4;:20;;;;:::i;:::-;18032:30;;;;;:::i;:::-;;;16874:1200;18086:33;18102:4;18108:2;18112:6;18086:15;:33::i;:::-;14665:3462;;;;;14586:3541;;;:::o;18988:240::-;19105:5;19071:25;:31;19097:4;19071:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19123;19150:4;19156:5;19123:26;:39::i;:::-;19214:5;19180:40;;19208:4;19180:40;;;;;;;;;;;;18988:240;;:::o;20347:1419::-;20386:23;20412:24;20430:4;20412:9;:24::i;:::-;20386:50;;20447:25;20517:16;;20496:18;;20475;;:39;;;;:::i;:::-;:58;;;;:::i;:::-;20447:86;;20568:1;20549:15;:20;:46;;;;20594:1;20573:17;:22;20549:46;20546:60;;;20598:7;;;;20546:60;20660:1;20639:18;;:22;;;;:::i;:::-;20621:15;:40;20618:111;;;20716:1;20695:18;;:22;;;;:::i;:::-;20677:40;;20618:111;20741:12;20815:23;20900:1;20880:17;20859:18;;20841:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20815:86;;20914:51;20949:15;20931;:33;;;;:::i;:::-;20914:16;:51::i;:::-;20978:18;20999:21;20978:42;;21031:23;21057:10;21031:36;;21080:23;21181:1;21162:18;;:20;;;;:::i;:::-;21141:17;:42;;;;:::i;:::-;21119:18;;21106:10;:31;;;;:::i;:::-;:78;;;;:::i;:::-;21080:104;;21195:21;21292:1;21273:18;;:20;;;;:::i;:::-;21252:17;:42;;;;:::i;:::-;21232:16;;21219:10;:29;;;;:::i;:::-;:76;;;;:::i;:::-;21195:100;;21345:13;21327:15;:31;;;;:::i;:::-;21308:50;;;;;:::i;:::-;;;21392:1;21371:18;:22;;;;21425:1;21404:18;:22;;;;21456:1;21437:16;:20;;;;21491:1;21473:15;:19;:42;;;;;21514:1;21496:15;:19;21473:42;21470:119;;;21531:46;21544:15;21561;21531:12;:46::i;:::-;21470:119;21622:14;;;;;;;;;;;21614:28;;21650:13;21614:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21601:67;;;;;21702:16;;;;;;;;;;;21694:30;;21732:21;21694:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21681:77;;;;;20375:1391;;;;;;;;20347:1419;:::o;4075:602::-;4233:1;4215:20;;:6;:20;;;;4207:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4317:1;4296:23;;:9;:23;;;;4288:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4372:21;4396:9;:17;4406:6;4396:17;;;;;;;;;;;;;;;;4372:41;;4449:6;4432:13;:23;;4424:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4562:6;4546:13;:22;4526:9;:17;4536:6;4526:17;;;;;;;;;;;;;;;:42;;;;4610:6;4586:9;:20;4596:9;4586:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4651:9;4634:35;;4643:6;4634:35;;;4662:6;4634:35;;;;;;:::i;:::-;;;;;;;;4196:481;4075:602;;;:::o;11850:207::-;11980:10;11938:31;:39;11970:6;11938:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12006:43;12030:6;12038:10;12006:43;;;;;;;:::i;:::-;;;;;;;;11850:207;;:::o;18135:591::-;18263:21;18301:1;18287:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18263:40;;18332:4;18314;18319:1;18314:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18358:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18348:4;18353:1;18348:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18393:62;18410:4;18425:15;18443:11;18393:8;:62::i;:::-;18494:15;:66;;;18575:11;18601:1;18645:4;18672;18692:15;18494:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18190:536;18135:591;:::o;19236:522::-;19384:62;19401:4;19416:15;19434:11;19384:8;:62::i;:::-;19489:15;:31;;;19528:9;19561:4;19581:11;19607:1;19650;19701:7;:5;:7::i;:::-;19724:15;19489:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19236:522;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:329::-;5798:6;5847:2;5835:9;5826:7;5822:23;5818:32;5815:119;;;5853:79;;:::i;:::-;5815:119;5973:1;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5944:117;5739:329;;;;:::o;6074:86::-;6109:7;6149:4;6142:5;6138:16;6127:27;;6074:86;;;:::o;6166:112::-;6249:22;6265:5;6249:22;:::i;:::-;6244:3;6237:35;6166:112;;:::o;6284:214::-;6373:4;6411:2;6400:9;6396:18;6388:26;;6424:67;6488:1;6477:9;6473:17;6464:6;6424:67;:::i;:::-;6284:214;;;;:::o;6504:118::-;6591:24;6609:5;6591:24;:::i;:::-;6586:3;6579:37;6504:118;;:::o;6628:222::-;6721:4;6759:2;6748:9;6744:18;6736:26;;6772:71;6840:1;6829:9;6825:17;6816:6;6772:71;:::i;:::-;6628:222;;;;:::o;6856:116::-;6926:21;6941:5;6926:21;:::i;:::-;6919:5;6916:32;6906:60;;6962:1;6959;6952:12;6906:60;6856:116;:::o;6978:133::-;7021:5;7059:6;7046:20;7037:29;;7075:30;7099:5;7075:30;:::i;:::-;6978:133;;;;:::o;7117:468::-;7182:6;7190;7239:2;7227:9;7218:7;7214:23;7210:32;7207:119;;;7245:79;;:::i;:::-;7207:119;7365:1;7390:53;7435:7;7426:6;7415:9;7411:22;7390:53;:::i;:::-;7380:63;;7336:117;7492:2;7518:50;7560:7;7551:6;7540:9;7536:22;7518:50;:::i;:::-;7508:60;;7463:115;7117:468;;;;;:::o;7591:619::-;7668:6;7676;7684;7733:2;7721:9;7712:7;7708:23;7704:32;7701:119;;;7739:79;;:::i;:::-;7701:119;7859:1;7884:53;7929:7;7920:6;7909:9;7905:22;7884:53;:::i;:::-;7874:63;;7830:117;7986:2;8012:53;8057:7;8048:6;8037:9;8033:22;8012:53;:::i;:::-;8002:63;;7957:118;8114:2;8140:53;8185:7;8176:6;8165:9;8161:22;8140:53;:::i;:::-;8130:63;;8085:118;7591:619;;;;;:::o;8216:474::-;8284:6;8292;8341:2;8329:9;8320:7;8316:23;8312:32;8309:119;;;8347:79;;:::i;:::-;8309:119;8467:1;8492:53;8537:7;8528:6;8517:9;8513:22;8492:53;:::i;:::-;8482:63;;8438:117;8594:2;8620:53;8665:7;8656:6;8645:9;8641:22;8620:53;:::i;:::-;8610:63;;8565:118;8216:474;;;;;:::o;8696:180::-;8744:77;8741:1;8734:88;8841:4;8838:1;8831:15;8865:4;8862:1;8855:15;8882:320;8926:6;8963:1;8957:4;8953:12;8943:22;;9010:1;9004:4;9000:12;9031:18;9021:81;;9087:4;9079:6;9075:17;9065:27;;9021:81;9149:2;9141:6;9138:14;9118:18;9115:38;9112:84;;;9168:18;;:::i;:::-;9112:84;8933:269;8882:320;;;:::o;9208:227::-;9348:34;9344:1;9336:6;9332:14;9325:58;9417:10;9412:2;9404:6;9400:15;9393:35;9208:227;:::o;9441:366::-;9583:3;9604:67;9668:2;9663:3;9604:67;:::i;:::-;9597:74;;9680:93;9769:3;9680:93;:::i;:::-;9798:2;9793:3;9789:12;9782:19;;9441:366;;;:::o;9813:419::-;9979:4;10017:2;10006:9;10002:18;9994:26;;10066:9;10060:4;10056:20;10052:1;10041:9;10037:17;10030:47;10094:131;10220:4;10094:131;:::i;:::-;10086:139;;9813:419;;;:::o;10238:182::-;10378:34;10374:1;10366:6;10362:14;10355:58;10238:182;:::o;10426:366::-;10568:3;10589:67;10653:2;10648:3;10589:67;:::i;:::-;10582:74;;10665:93;10754:3;10665:93;:::i;:::-;10783:2;10778:3;10774:12;10767:19;;10426:366;;;:::o;10798:419::-;10964:4;11002:2;10991:9;10987:18;10979:26;;11051:9;11045:4;11041:20;11037:1;11026:9;11022:17;11015:47;11079:131;11205:4;11079:131;:::i;:::-;11071:139;;10798:419;;;:::o;11223:180::-;11271:77;11268:1;11261:88;11368:4;11365:1;11358:15;11392:4;11389:1;11382:15;11409:348;11449:7;11472:20;11490:1;11472:20;:::i;:::-;11467:25;;11506:20;11524:1;11506:20;:::i;:::-;11501:25;;11694:1;11626:66;11622:74;11619:1;11616:81;11611:1;11604:9;11597:17;11593:105;11590:131;;;11701:18;;:::i;:::-;11590:131;11749:1;11746;11742:9;11731:20;;11409:348;;;;:::o;11763:180::-;11811:77;11808:1;11801:88;11908:4;11905:1;11898:15;11932:4;11929:1;11922:15;11949:185;11989:1;12006:20;12024:1;12006:20;:::i;:::-;12001:25;;12040:20;12058:1;12040:20;:::i;:::-;12035:25;;12079:1;12069:35;;12084:18;;:::i;:::-;12069:35;12126:1;12123;12119:9;12114:14;;11949:185;;;;:::o;12140:228::-;12280:34;12276:1;12268:6;12264:14;12257:58;12349:11;12344:2;12336:6;12332:15;12325:36;12140:228;:::o;12374:366::-;12516:3;12537:67;12601:2;12596:3;12537:67;:::i;:::-;12530:74;;12613:93;12702:3;12613:93;:::i;:::-;12731:2;12726:3;12722:12;12715:19;;12374:366;;;:::o;12746:419::-;12912:4;12950:2;12939:9;12935:18;12927:26;;12999:9;12993:4;12989:20;12985:1;12974:9;12970:17;12963:47;13027:131;13153:4;13027:131;:::i;:::-;13019:139;;12746:419;;;:::o;13171:305::-;13211:3;13230:20;13248:1;13230:20;:::i;:::-;13225:25;;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13418:1;13350:66;13346:74;13343:1;13340:81;13337:107;;;13424:18;;:::i;:::-;13337:107;13468:1;13465;13461:9;13454:16;;13171:305;;;;:::o;13482:226::-;13622:34;13618:1;13610:6;13606:14;13599:58;13691:9;13686:2;13678:6;13674:15;13667:34;13482:226;:::o;13714:366::-;13856:3;13877:67;13941:2;13936:3;13877:67;:::i;:::-;13870:74;;13953:93;14042:3;13953:93;:::i;:::-;14071:2;14066:3;14062:12;14055:19;;13714:366;;;:::o;14086:419::-;14252:4;14290:2;14279:9;14275:18;14267:26;;14339:9;14333:4;14329:20;14325:1;14314:9;14310:17;14303:47;14367:131;14493:4;14367:131;:::i;:::-;14359:139;;14086:419;;;:::o;14511:175::-;14651:27;14647:1;14639:6;14635:14;14628:51;14511:175;:::o;14692:366::-;14834:3;14855:67;14919:2;14914:3;14855:67;:::i;:::-;14848:74;;14931:93;15020:3;14931:93;:::i;:::-;15049:2;15044:3;15040:12;15033:19;;14692:366;;;:::o;15064:419::-;15230:4;15268:2;15257:9;15253:18;15245:26;;15317:9;15311:4;15307:20;15303:1;15292:9;15288:17;15281:47;15345:131;15471:4;15345:131;:::i;:::-;15337:139;;15064:419;;;:::o;15489:176::-;15629:28;15625:1;15617:6;15613:14;15606:52;15489:176;:::o;15671:366::-;15813:3;15834:67;15898:2;15893:3;15834:67;:::i;:::-;15827:74;;15910:93;15999:3;15910:93;:::i;:::-;16028:2;16023:3;16019:12;16012:19;;15671:366;;;:::o;16043:419::-;16209:4;16247:2;16236:9;16232:18;16224:26;;16296:9;16290:4;16286:20;16282:1;16271:9;16267:17;16260:47;16324:131;16450:4;16324:131;:::i;:::-;16316:139;;16043:419;;;:::o;16468:221::-;16608:34;16604:1;16596:6;16592:14;16585:58;16677:4;16672:2;16664:6;16660:15;16653:29;16468:221;:::o;16695:366::-;16837:3;16858:67;16922:2;16917:3;16858:67;:::i;:::-;16851:74;;16934:93;17023:3;16934:93;:::i;:::-;17052:2;17047:3;17043:12;17036:19;;16695:366;;;:::o;17067:419::-;17233:4;17271:2;17260:9;17256:18;17248:26;;17320:9;17314:4;17310:20;17306:1;17295:9;17291:17;17284:47;17348:131;17474:4;17348:131;:::i;:::-;17340:139;;17067:419;;;:::o;17492:143::-;17549:5;17580:6;17574:13;17565:22;;17596:33;17623:5;17596:33;:::i;:::-;17492:143;;;;:::o;17641:351::-;17711:6;17760:2;17748:9;17739:7;17735:23;17731:32;17728:119;;;17766:79;;:::i;:::-;17728:119;17886:1;17911:64;17967:7;17958:6;17947:9;17943:22;17911:64;:::i;:::-;17901:74;;17857:128;17641:351;;;;:::o;17998:332::-;18119:4;18157:2;18146:9;18142:18;18134:26;;18170:71;18238:1;18227:9;18223:17;18214:6;18170:71;:::i;:::-;18251:72;18319:2;18308:9;18304:18;18295:6;18251:72;:::i;:::-;17998:332;;;;;:::o;18336:137::-;18390:5;18421:6;18415:13;18406:22;;18437:30;18461:5;18437:30;:::i;:::-;18336:137;;;;:::o;18479:345::-;18546:6;18595:2;18583:9;18574:7;18570:23;18566:32;18563:119;;;18601:79;;:::i;:::-;18563:119;18721:1;18746:61;18799:7;18790:6;18779:9;18775:22;18746:61;:::i;:::-;18736:71;;18692:125;18479:345;;;;:::o;18830:222::-;18970:34;18966:1;18958:6;18954:14;18947:58;19039:5;19034:2;19026:6;19022:15;19015:30;18830:222;:::o;19058:366::-;19200:3;19221:67;19285:2;19280:3;19221:67;:::i;:::-;19214:74;;19297:93;19386:3;19297:93;:::i;:::-;19415:2;19410:3;19406:12;19399:19;;19058:366;;;:::o;19430:419::-;19596:4;19634:2;19623:9;19619:18;19611:26;;19683:9;19677:4;19673:20;19669:1;19658:9;19654:17;19647:47;19711:131;19837:4;19711:131;:::i;:::-;19703:139;;19430:419;;;:::o;19855:174::-;19995:26;19991:1;19983:6;19979:14;19972:50;19855:174;:::o;20035:366::-;20177:3;20198:67;20262:2;20257:3;20198:67;:::i;:::-;20191:74;;20274:93;20363:3;20274:93;:::i;:::-;20392:2;20387:3;20383:12;20376:19;;20035:366;;;:::o;20407:419::-;20573:4;20611:2;20600:9;20596:18;20588:26;;20660:9;20654:4;20650:20;20646:1;20635:9;20631:17;20624:47;20688:131;20814:4;20688:131;:::i;:::-;20680:139;;20407:419;;;:::o;20832:224::-;20972:34;20968:1;20960:6;20956:14;20949:58;21041:7;21036:2;21028:6;21024:15;21017:32;20832:224;:::o;21062:366::-;21204:3;21225:67;21289:2;21284:3;21225:67;:::i;:::-;21218:74;;21301:93;21390:3;21301:93;:::i;:::-;21419:2;21414:3;21410:12;21403:19;;21062:366;;;:::o;21434:419::-;21600:4;21638:2;21627:9;21623:18;21615:26;;21687:9;21681:4;21677:20;21673:1;21662:9;21658:17;21651:47;21715:131;21841:4;21715:131;:::i;:::-;21707:139;;21434:419;;;:::o;21859:244::-;21999:34;21995:1;21987:6;21983:14;21976:58;22068:27;22063:2;22055:6;22051:15;22044:52;21859:244;:::o;22109:366::-;22251:3;22272:67;22336:2;22331:3;22272:67;:::i;:::-;22265:74;;22348:93;22437:3;22348:93;:::i;:::-;22466:2;22461:3;22457:12;22450:19;;22109:366;;;:::o;22481:419::-;22647:4;22685:2;22674:9;22670:18;22662:26;;22734:9;22728:4;22724:20;22720:1;22709:9;22705:17;22698:47;22762:131;22888:4;22762:131;:::i;:::-;22754:139;;22481:419;;;:::o;22906:224::-;23046:34;23042:1;23034:6;23030:14;23023:58;23115:7;23110:2;23102:6;23098:15;23091:32;22906:224;:::o;23136:366::-;23278:3;23299:67;23363:2;23358:3;23299:67;:::i;:::-;23292:74;;23375:93;23464:3;23375:93;:::i;:::-;23493:2;23488:3;23484:12;23477:19;;23136:366;;;:::o;23508:419::-;23674:4;23712:2;23701:9;23697:18;23689:26;;23761:9;23755:4;23751:20;23747:1;23736:9;23732:17;23725:47;23789:131;23915:4;23789:131;:::i;:::-;23781:139;;23508:419;;;:::o;23933:231::-;24073:34;24069:1;24061:6;24057:14;24050:58;24142:14;24137:2;24129:6;24125:15;24118:39;23933:231;:::o;24170:366::-;24312:3;24333:67;24397:2;24392:3;24333:67;:::i;:::-;24326:74;;24409:93;24498:3;24409:93;:::i;:::-;24527:2;24522:3;24518:12;24511:19;;24170:366;;;:::o;24542:419::-;24708:4;24746:2;24735:9;24731:18;24723:26;;24795:9;24789:4;24785:20;24781:1;24770:9;24766:17;24759:47;24823:131;24949:4;24823:131;:::i;:::-;24815:139;;24542:419;;;:::o;24967:229::-;25107:34;25103:1;25095:6;25091:14;25084:58;25176:12;25171:2;25163:6;25159:15;25152:37;24967:229;:::o;25202:366::-;25344:3;25365:67;25429:2;25424:3;25365:67;:::i;:::-;25358:74;;25441:93;25530:3;25441:93;:::i;:::-;25559:2;25554:3;25550:12;25543:19;;25202:366;;;:::o;25574:419::-;25740:4;25778:2;25767:9;25763:18;25755:26;;25827:9;25821:4;25817:20;25813:1;25802:9;25798:17;25791:47;25855:131;25981:4;25855:131;:::i;:::-;25847:139;;25574:419;;;:::o;25999:225::-;26139:34;26135:1;26127:6;26123:14;26116:58;26208:8;26203:2;26195:6;26191:15;26184:33;25999:225;:::o;26230:366::-;26372:3;26393:67;26457:2;26452:3;26393:67;:::i;:::-;26386:74;;26469:93;26558:3;26469:93;:::i;:::-;26587:2;26582:3;26578:12;26571:19;;26230:366;;;:::o;26602:419::-;26768:4;26806:2;26795:9;26791:18;26783:26;;26855:9;26849:4;26845:20;26841:1;26830:9;26826:17;26819:47;26883:131;27009:4;26883:131;:::i;:::-;26875:139;;26602:419;;;:::o;27027:147::-;27128:11;27165:3;27150:18;;27027:147;;;;:::o;27180:114::-;;:::o;27300:398::-;27459:3;27480:83;27561:1;27556:3;27480:83;:::i;:::-;27473:90;;27572:93;27661:3;27572:93;:::i;:::-;27690:1;27685:3;27681:11;27674:18;;27300:398;;;:::o;27704:379::-;27888:3;27910:147;28053:3;27910:147;:::i;:::-;27903:154;;28074:3;28067:10;;27704:379;;;:::o;28089:223::-;28229:34;28225:1;28217:6;28213:14;28206:58;28298:6;28293:2;28285:6;28281:15;28274:31;28089:223;:::o;28318:366::-;28460:3;28481:67;28545:2;28540:3;28481:67;:::i;:::-;28474:74;;28557:93;28646:3;28557:93;:::i;:::-;28675:2;28670:3;28666:12;28659:19;;28318:366;;;:::o;28690:419::-;28856:4;28894:2;28883:9;28879:18;28871:26;;28943:9;28937:4;28933:20;28929:1;28918:9;28914:17;28907:47;28971:131;29097:4;28971:131;:::i;:::-;28963:139;;28690:419;;;:::o;29115:221::-;29255:34;29251:1;29243:6;29239:14;29232:58;29324:4;29319:2;29311:6;29307:15;29300:29;29115:221;:::o;29342:366::-;29484:3;29505:67;29569:2;29564:3;29505:67;:::i;:::-;29498:74;;29581:93;29670:3;29581:93;:::i;:::-;29699:2;29694:3;29690:12;29683:19;;29342:366;;;:::o;29714:419::-;29880:4;29918:2;29907:9;29903:18;29895:26;;29967:9;29961:4;29957:20;29953:1;29942:9;29938:17;29931:47;29995:131;30121:4;29995:131;:::i;:::-;29987:139;;29714:419;;;:::o;30139:224::-;30279:34;30275:1;30267:6;30263:14;30256:58;30348:7;30343:2;30335:6;30331:15;30324:32;30139:224;:::o;30369:366::-;30511:3;30532:67;30596:2;30591:3;30532:67;:::i;:::-;30525:74;;30608:93;30697:3;30608:93;:::i;:::-;30726:2;30721:3;30717:12;30710:19;;30369:366;;;:::o;30741:419::-;30907:4;30945:2;30934:9;30930:18;30922:26;;30994:9;30988:4;30984:20;30980:1;30969:9;30965:17;30958:47;31022:131;31148:4;31022:131;:::i;:::-;31014:139;;30741:419;;;:::o;31166:222::-;31306:34;31302:1;31294:6;31290:14;31283:58;31375:5;31370:2;31362:6;31358:15;31351:30;31166:222;:::o;31394:366::-;31536:3;31557:67;31621:2;31616:3;31557:67;:::i;:::-;31550:74;;31633:93;31722:3;31633:93;:::i;:::-;31751:2;31746:3;31742:12;31735:19;;31394:366;;;:::o;31766:419::-;31932:4;31970:2;31959:9;31955:18;31947:26;;32019:9;32013:4;32009:20;32005:1;31994:9;31990:17;31983:47;32047:131;32173:4;32047:131;:::i;:::-;32039:139;;31766:419;;;:::o;32191:179::-;32331:31;32327:1;32319:6;32315:14;32308:55;32191:179;:::o;32376:366::-;32518:3;32539:67;32603:2;32598:3;32539:67;:::i;:::-;32532:74;;32615:93;32704:3;32615:93;:::i;:::-;32733:2;32728:3;32724:12;32717:19;;32376:366;;;:::o;32748:419::-;32914:4;32952:2;32941:9;32937:18;32929:26;;33001:9;32995:4;32991:20;32987:1;32976:9;32972:17;32965:47;33029:131;33155:4;33029:131;:::i;:::-;33021:139;;32748:419;;;:::o;33173:172::-;33313:24;33309:1;33301:6;33297:14;33290:48;33173:172;:::o;33351:366::-;33493:3;33514:67;33578:2;33573:3;33514:67;:::i;:::-;33507:74;;33590:93;33679:3;33590:93;:::i;:::-;33708:2;33703:3;33699:12;33692:19;;33351:366;;;:::o;33723:419::-;33889:4;33927:2;33916:9;33912:18;33904:26;;33976:9;33970:4;33966:20;33962:1;33951:9;33947:17;33940:47;34004:131;34130:4;34004:131;:::i;:::-;33996:139;;33723:419;;;:::o;34148:172::-;34288:24;34284:1;34276:6;34272:14;34265:48;34148:172;:::o;34326:366::-;34468:3;34489:67;34553:2;34548:3;34489:67;:::i;:::-;34482:74;;34565:93;34654:3;34565:93;:::i;:::-;34683:2;34678:3;34674:12;34667:19;;34326:366;;;:::o;34698:419::-;34864:4;34902:2;34891:9;34887:18;34879:26;;34951:9;34945:4;34941:20;34937:1;34926:9;34922:17;34915:47;34979:131;35105:4;34979:131;:::i;:::-;34971:139;;34698:419;;;:::o;35123:227::-;35263:34;35259:1;35251:6;35247:14;35240:58;35332:10;35327:2;35319:6;35315:15;35308:35;35123:227;:::o;35356:366::-;35498:3;35519:67;35583:2;35578:3;35519:67;:::i;:::-;35512:74;;35595:93;35684:3;35595:93;:::i;:::-;35713:2;35708:3;35704:12;35697:19;;35356:366;;;:::o;35728:419::-;35894:4;35932:2;35921:9;35917:18;35909:26;;35981:9;35975:4;35971:20;35967:1;35956:9;35952:17;35945:47;36009:131;36135:4;36009:131;:::i;:::-;36001:139;;35728:419;;;:::o;36153:174::-;36293:26;36289:1;36281:6;36277:14;36270:50;36153:174;:::o;36333:366::-;36475:3;36496:67;36560:2;36555:3;36496:67;:::i;:::-;36489:74;;36572:93;36661:3;36572:93;:::i;:::-;36690:2;36685:3;36681:12;36674:19;;36333:366;;;:::o;36705:419::-;36871:4;36909:2;36898:9;36894:18;36886:26;;36958:9;36952:4;36948:20;36944:1;36933:9;36929:17;36922:47;36986:131;37112:4;36986:131;:::i;:::-;36978:139;;36705:419;;;:::o;37130:229::-;37270:34;37266:1;37258:6;37254:14;37247:58;37339:12;37334:2;37326:6;37322:15;37315:37;37130:229;:::o;37365:366::-;37507:3;37528:67;37592:2;37587:3;37528:67;:::i;:::-;37521:74;;37604:93;37693:3;37604:93;:::i;:::-;37722:2;37717:3;37713:12;37706:19;;37365:366;;;:::o;37737:419::-;37903:4;37941:2;37930:9;37926:18;37918:26;;37990:9;37984:4;37980:20;37976:1;37965:9;37961:17;37954:47;38018:131;38144:4;38018:131;:::i;:::-;38010:139;;37737:419;;;:::o;38162:191::-;38202:4;38222:20;38240:1;38222:20;:::i;:::-;38217:25;;38256:20;38274:1;38256:20;:::i;:::-;38251:25;;38295:1;38292;38289:8;38286:34;;;38300:18;;:::i;:::-;38286:34;38345:1;38342;38338:9;38330:17;;38162:191;;;;:::o;38359:225::-;38499:34;38495:1;38487:6;38483:14;38476:58;38568:8;38563:2;38555:6;38551:15;38544:33;38359:225;:::o;38590:366::-;38732:3;38753:67;38817:2;38812:3;38753:67;:::i;:::-;38746:74;;38829:93;38918:3;38829:93;:::i;:::-;38947:2;38942:3;38938:12;38931:19;;38590:366;;;:::o;38962:419::-;39128:4;39166:2;39155:9;39151:18;39143:26;;39215:9;39209:4;39205:20;39201:1;39190:9;39186:17;39179:47;39243:131;39369:4;39243:131;:::i;:::-;39235:139;;38962:419;;;:::o;39387:320::-;39502:4;39540:2;39529:9;39525:18;39517:26;;39553:71;39621:1;39610:9;39606:17;39597:6;39553:71;:::i;:::-;39634:66;39696:2;39685:9;39681:18;39672:6;39634:66;:::i;:::-;39387:320;;;;;:::o;39713:180::-;39761:77;39758:1;39751:88;39858:4;39855:1;39848:15;39882:4;39879:1;39872:15;39899:180;39947:77;39944:1;39937:88;40044:4;40041:1;40034:15;40068:4;40065:1;40058:15;40085:143;40142:5;40173:6;40167:13;40158:22;;40189:33;40216:5;40189:33;:::i;:::-;40085:143;;;;:::o;40234:351::-;40304:6;40353:2;40341:9;40332:7;40328:23;40324:32;40321:119;;;40359:79;;:::i;:::-;40321:119;40479:1;40504:64;40560:7;40551:6;40540:9;40536:22;40504:64;:::i;:::-;40494:74;;40450:128;40234:351;;;;:::o;40591:85::-;40636:7;40665:5;40654:16;;40591:85;;;:::o;40682:158::-;40740:9;40773:61;40791:42;40800:32;40826:5;40800:32;:::i;:::-;40791:42;:::i;:::-;40773:61;:::i;:::-;40760:74;;40682:158;;;:::o;40846:147::-;40941:45;40980:5;40941:45;:::i;:::-;40936:3;40929:58;40846:147;;:::o;40999:114::-;41066:6;41100:5;41094:12;41084:22;;40999:114;;;:::o;41119:184::-;41218:11;41252:6;41247:3;41240:19;41292:4;41287:3;41283:14;41268:29;;41119:184;;;;:::o;41309:132::-;41376:4;41399:3;41391:11;;41429:4;41424:3;41420:14;41412:22;;41309:132;;;:::o;41447:108::-;41524:24;41542:5;41524:24;:::i;:::-;41519:3;41512:37;41447:108;;:::o;41561:179::-;41630:10;41651:46;41693:3;41685:6;41651:46;:::i;:::-;41729:4;41724:3;41720:14;41706:28;;41561:179;;;;:::o;41746:113::-;41816:4;41848;41843:3;41839:14;41831:22;;41746:113;;;:::o;41895:732::-;42014:3;42043:54;42091:5;42043:54;:::i;:::-;42113:86;42192:6;42187:3;42113:86;:::i;:::-;42106:93;;42223:56;42273:5;42223:56;:::i;:::-;42302:7;42333:1;42318:284;42343:6;42340:1;42337:13;42318:284;;;42419:6;42413:13;42446:63;42505:3;42490:13;42446:63;:::i;:::-;42439:70;;42532:60;42585:6;42532:60;:::i;:::-;42522:70;;42378:224;42365:1;42362;42358:9;42353:14;;42318:284;;;42322:14;42618:3;42611:10;;42019:608;;;41895:732;;;;:::o;42633:831::-;42896:4;42934:3;42923:9;42919:19;42911:27;;42948:71;43016:1;43005:9;43001:17;42992:6;42948:71;:::i;:::-;43029:80;43105:2;43094:9;43090:18;43081:6;43029:80;:::i;:::-;43156:9;43150:4;43146:20;43141:2;43130:9;43126:18;43119:48;43184:108;43287:4;43278:6;43184:108;:::i;:::-;43176:116;;43302:72;43370:2;43359:9;43355:18;43346:6;43302:72;:::i;:::-;43384:73;43452:3;43441:9;43437:19;43428:6;43384:73;:::i;:::-;42633:831;;;;;;;;:::o;43470:807::-;43719:4;43757:3;43746:9;43742:19;43734:27;;43771:71;43839:1;43828:9;43824:17;43815:6;43771:71;:::i;:::-;43852:72;43920:2;43909:9;43905:18;43896:6;43852:72;:::i;:::-;43934:80;44010:2;43999:9;43995:18;43986:6;43934:80;:::i;:::-;44024;44100:2;44089:9;44085:18;44076:6;44024:80;:::i;:::-;44114:73;44182:3;44171:9;44167:19;44158:6;44114:73;:::i;:::-;44197;44265:3;44254:9;44250:19;44241:6;44197:73;:::i;:::-;43470:807;;;;;;;;;:::o;44283:663::-;44371:6;44379;44387;44436:2;44424:9;44415:7;44411:23;44407:32;44404:119;;;44442:79;;:::i;:::-;44404:119;44562:1;44587:64;44643:7;44634:6;44623:9;44619:22;44587:64;:::i;:::-;44577:74;;44533:128;44700:2;44726:64;44782:7;44773:6;44762:9;44758:22;44726:64;:::i;:::-;44716:74;;44671:129;44839:2;44865:64;44921:7;44912:6;44901:9;44897:22;44865:64;:::i;:::-;44855:74;;44810:129;44283:663;;;;;:::o

Swarm Source

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