ETH Price: $3,321.15 (+0.38%)
 

Overview

Max Total Supply

100,000,000 SNIBBU

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
53,839.109759154223040245 SNIBBU

Value
$0.00
0xaD0A09CE460Bb2cF280924e457591a7A6d0Eb576
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:
SNIBBU

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
Snib "Snibbu" Snab, the crab

"Storm come and go, the big Fll eat the possy bull-bear, and I keep on paddling"

X: https://twitter.com/SnibbuTheCrab
TG_ https://t.me/snibbutoken
WEB: https://www.snibbuthecrab.com/
*/
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

pragma solidity ^0.8.19;

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

    function WETH() external pure returns (address);

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address UNISWAP_V2_PAIR);
}

contract SNIBBU is IERC20, Ownable {

    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 10;

    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;
    mapping(address => bool) public automatedMarketMakerPairs;

    struct Fee {
        uint8 reflection;
        uint8 marketing;
        uint8 lp;
        uint8 buyback;
        uint8 burn;
        uint128 total;
    }

    string _name = "Snibbu";
    string _symbol = "SNIBBU";

    uint256 _totalSupply = 100_000_000 ether;
    uint256 public _maxTxAmount = _totalSupply * 3 / 100;
    uint256 public _maxWalletAmount = _totalSupply * 3 / 100;

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool public tradingActive = false;
    bool public transferDelayEnabled = false;
    bool public limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isLimitExempt;

    Fee public buyFee = Fee({reflection: 0, marketing: 25, lp: 0, buyback: 0, burn: 0, total: 25});
    Fee public sellFee = Fee({reflection: 0, marketing: 25, lp: 0, buyback: 0, burn: 0, total: 25});

    address private marketingFeeReceiver;
    address private lpFeeReceiver;
    address private buybackFeeReceiver;

    bool public claimingFees = false;
    uint256 public swapThreshold = (_totalSupply * 5) / 1000;
    bool inSwap;
    mapping(address => bool) public blacklists;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        // create uniswap pair
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;
        _setAutomatedMarketMakerPair(address(_uniswapPair), true);

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][owner()] = type(uint256).max;

        isLimitExempt[address(this)] = true;
        isLimitExempt[DEAD] = true;
        isLimitExempt[owner()] = true;
        isLimitExempt[UNISWAP_V2_PAIR] = true;
        
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[owner()] = true;

        marketingFeeReceiver = 0xB0245f2c956016D74600811a0620B667618f3b5d;
        lpFeeReceiver = 0xB0245f2c956016D74600811a0620B667618f3b5d;
        buybackFeeReceiver = 0xB0245f2c956016D74600811a0620B667618f3b5d;

        _rOwned[tx.origin] = _totalSupply;
        emit Transfer(address(0), tx.origin, _totalSupply);
    }

    receive() external payable {}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(_allowances[sender][msg.sender] >= amount, "ERC20: insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

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

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

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

    function allowance(address holder, address spender) external view override returns (uint256) {
        return _allowances[holder][spender];
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

    function clearStuckBalance() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold = _amount;
    }

    function changeFees(
        uint8 reflectionFeeBuy,
        uint8 marketingFeeBuy,
        uint8 lpFeeBuy,
        uint8 buybackFeeBuy,
        uint8 burnFeeBuy,
        uint8 reflectionFeeSell,
        uint8 marketingFeeSell,
        uint8 lpFeeSell,
        uint8 buybackFeeSell,
        uint8 burnFeeSell
    ) external onlyOwner {
        uint128 __totalBuyFee = reflectionFeeBuy + marketingFeeBuy + lpFeeBuy + buybackFeeBuy + burnFeeBuy;
        uint128 __totalSellFee = reflectionFeeSell + marketingFeeSell + lpFeeSell + buybackFeeSell + burnFeeSell;

        buyFee = Fee({
            reflection: reflectionFeeBuy,
            marketing: marketingFeeBuy,
            lp: lpFeeBuy,
            buyback: buybackFeeBuy,
            burn: burnFeeBuy,
            total: __totalBuyFee
        });

        sellFee = Fee({
            reflection: reflectionFeeSell,
            marketing: marketingFeeSell,
            lp: lpFeeSell,
            buyback: buybackFeeSell,
            burn: burnFeeSell,
            total: __totalSellFee
        });
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setisLimitExempt(address holder, bool exempt) external onlyOwner {
        isLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(address m_, address lp_, address b_) external onlyOwner {
        marketingFeeReceiver = m_;
        lpFeeReceiver = lp_;
        buybackFeeReceiver = b_;
    }

    function setLimitsEnabled(bool e_) external onlyOwner {
        limitsEnabled = e_;
    }

    // Set Transfer delay
    function disableTransferDelay(bool e_) external onlyOwner returns (bool) {
        transferDelayEnabled = e_;
        return true;
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!blacklists[recipient] && !blacklists[sender], "Blacklisted");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (limitsEnabled) {
            if (!tradingActive) 
            {
                require(
                    isFeeExempt[sender] || isFeeExempt[recipient],
                    "Trading is not active."
                );
            }

            //when buy
            if (automatedMarketMakerPairs[sender] && !isLimitExempt[recipient]) 
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            //when sell
            else if (automatedMarketMakerPairs[recipient] && !isLimitExempt[sender])
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            else if (!isLimitExempt[recipient]) 
            {
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            
            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
            if (transferDelayEnabled) {
                if (
                    recipient != owner() &&
                    recipient != address(UNISWAP_V2_ROUTER) &&
                    recipient != UNISWAP_V2_PAIR
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] + 1 <
                            block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per two blocks allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }
        }

        if (_shouldSwapBack()) {
            _swapBack();
        }

        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;

        uint256 proportionReceived = _shouldTakeFee(sender, recipient)
            ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
            : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;

        // reflect
        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

        // take fees
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;

        uint256 __swapThreshold = swapThreshold;
        uint256 amountToBurn = __swapThreshold * __sellFee.burn / __sellFee.total;
        uint256 amountToSwap = __swapThreshold - amountToBurn;
        approve(address(UNISWAP_V2_ROUTER), amountToSwap);

        if(amountToBurn > 0)
        {
            // burn
            _transferFrom(address(this), DEAD, amountToBurn);
        }

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

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap, 0, path, address(this), block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection - __sellFee.burn;
        //uint256 amountETHMarketing = amountETH * __sellFee.marketing / totalSwapFee;
        uint256 amountETHLP = amountETH * __sellFee.lp / totalSwapFee;
        uint256 amountETHBuyback = amountETH * __sellFee.buyback / totalSwapFee;

        // send
        (bool tmpSuccess,) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");
        (tmpSuccess,) = address(marketingFeeReceiver).call{value: address(this).balance}("");
    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"reflectionFeeBuy","type":"uint8"},{"internalType":"uint8","name":"marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"lpFeeBuy","type":"uint8"},{"internalType":"uint8","name":"buybackFeeBuy","type":"uint8"},{"internalType":"uint8","name":"burnFeeBuy","type":"uint8"},{"internalType":"uint8","name":"reflectionFeeSell","type":"uint8"},{"internalType":"uint8","name":"marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"lpFeeSell","type":"uint8"},{"internalType":"uint8","name":"buybackFeeSell","type":"uint8"},{"internalType":"uint8","name":"burnFeeSell","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"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":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600681526020017f536e696262750000000000000000000000000000000000000000000000000000815250600290816200004a919062000faf565b506040518060400160405280600681526020017f534e4942425500000000000000000000000000000000000000000000000000008152506003908162000091919062000faf565b506a52b7d2dcc80cd2e400000060045560646003600454620000b49190620010c5565b620000c091906200113f565b60055560646003600454620000d69190620010c5565b620000e291906200113f565b6006556004546008556000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff0219169083151502179055506040518060c00160405280600060ff168152602001601960ff168152602001600060ff168152602001600060ff168152602001600060ff16815260200160196fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060c00160405280600060ff168152602001601960ff168152602001600060ff168152602001600060ff168152602001600060ff16815260200160196fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506000601160146101000a81548160ff0219169083151502179055506103e86005600454620003e39190620010c5565b620003ef91906200113f565b601255348015620003ff57600080fd5b50620004206200041462000b9f60201b60201c565b62000ba760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000482573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a89190620011e1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054a9190620011e1565b6040518363ffffffff1660e01b81526004016200056992919062001224565b6020604051808303816000875af115801562000589573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005af9190620011e1565b90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620005f881600162000c6b60201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006200071f62000d0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200082562000d0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200099862000d0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073b0245f2c956016d74600811a0620b667618f3b5d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b0245f2c956016d74600811a0620b667618f3b5d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b0245f2c956016d74600811a0620b667618f3b5d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000b90919062001262565b60405180910390a3506200127f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000db757607f821691505b60208210810362000dcd5762000dcc62000d6f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000df8565b62000e43868362000df8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e9062000e8a62000e848462000e5b565b62000e65565b62000e5b565b9050919050565b6000819050919050565b62000eac8362000e6f565b62000ec462000ebb8262000e97565b84845462000e05565b825550505050565b600090565b62000edb62000ecc565b62000ee881848462000ea1565b505050565b5b8181101562000f105762000f0460008262000ed1565b60018101905062000eee565b5050565b601f82111562000f5f5762000f298162000dd3565b62000f348462000de8565b8101602085101562000f44578190505b62000f5c62000f538562000de8565b83018262000eed565b50505b505050565b600082821c905092915050565b600062000f846000198460080262000f64565b1980831691505092915050565b600062000f9f838362000f71565b9150826002028217905092915050565b62000fba8262000d35565b67ffffffffffffffff81111562000fd65762000fd562000d40565b5b62000fe2825462000d9e565b62000fef82828562000f14565b600060209050601f83116001811462001027576000841562001012578287015190505b6200101e858262000f91565b8655506200108e565b601f198416620010378662000dd3565b60005b8281101562001061578489015182556001820191506020850194506020810190506200103a565b868310156200108157848901516200107d601f89168262000f71565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010d28262000e5b565b9150620010df8362000e5b565b9250828202620010ef8162000e5b565b9150828204841483151762001109576200110862001096565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200114c8262000e5b565b9150620011598362000e5b565b9250826200116c576200116b62001110565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011a9826200117c565b9050919050565b620011bb816200119c565b8114620011c757600080fd5b50565b600081519050620011db81620011b0565b92915050565b600060208284031215620011fa57620011f962001177565b5b60006200120a84828501620011ca565b91505092915050565b6200121e816200119c565b82525050565b60006040820190506200123b600083018562001213565b6200124a602083018462001213565b9392505050565b6200125c8162000e5b565b82525050565b600060208201905062001279600083018462001251565b92915050565b6080516145df620012b7600039600081816114c001528181611b89015281816121c80152818161243e015261293a01526145df6000f3fe6080604052600436106102765760003560e01c8063658d4b7f1161014f578063b0f7ec38116100c1578063d7c010321161007a578063d7c0103214610993578063d85a2828146109bc578063dd62ed3e146109d3578063df20fd4914610a10578063f2fde38b14610a39578063f40acc3d14610a625761027d565b8063b0f7ec3814610883578063b62496f5146108ae578063bbc0c742146108eb578063c18bc19514610916578063c38a31de1461093f578063c876d0b9146109685761027d565b80638a8c523c116101135780638a8c523c146107855780638da5cb5b1461079c57806395d89b41146107c75780639a7a23d6146107f2578063a82ed9ec1461081b578063a9059cbb146108465761027d565b8063658d4b7f146106b25780636c0a24eb146106db57806370a0823114610706578063715018a6146107435780637d1db4a51461075a5761027d565b80632b14ca56116101e8578063364333f4116101ac578063364333f41461059f578063404e5129146105b657806341aea9de146105df57806345ce5365146106085780634706240214610645578063571ac8b0146106755761027d565b80632b14ca561461049f5780632d838119146104cf578063313ce5671461050c57806334b86560146105375780633582ad23146105745761027d565b8063178002871161023a578063178002871461038f57806318160ddd146103ba578063203e727e146103e557806323b872dd1461040e57806324c390231461044b5780632b112e49146104745761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d85780630cfc15f91461031557806316c02129146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a8d565b6040516102a491906134be565b60405180910390f35b3480156102b957600080fd5b506102c2610a93565b6040516102cf9190613569565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa919061361a565b610b25565b60405161030c9190613675565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190613690565b610c17565b60405161034991906134be565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190613690565b610c2f565b6040516103869190613675565b60405180910390f35b34801561039b57600080fd5b506103a4610c4f565b6040516103b191906134be565b60405180910390f35b3480156103c657600080fd5b506103cf610c55565b6040516103dc91906134be565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906136bd565b610c5f565b005b34801561041a57600080fd5b50610435600480360381019061043091906136ea565b610cf5565b6040516104429190613675565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190613769565b610f76565b005b34801561048057600080fd5b50610489610fd9565b60405161049691906134be565b60405180910390f35b3480156104ab57600080fd5b506104b461100c565b6040516104c6969594939291906137f0565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906136bd565b611093565b60405161050391906134be565b60405180910390f35b34801561051857600080fd5b506105216110b7565b60405161052e9190613851565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061386c565b6110c0565b60405161056b9190613675565b60405180910390f35b34801561058057600080fd5b506105896110ed565b6040516105969190613675565b60405180910390f35b3480156105ab57600080fd5b506105b4611100565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190613769565b611181565b005b3480156105eb57600080fd5b506106066004803603810190610601919061386c565b6111e4565b005b34801561061457600080fd5b5061062f600480360381019061062a91906136bd565b611209565b60405161063c91906134be565b60405180910390f35b34801561065157600080fd5b5061065a61122d565b60405161066c969594939291906137f0565b60405180910390f35b34801561068157600080fd5b5061069c60048036038101906106979190613690565b6112b4565b6040516106a99190613675565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190613769565b6112e7565b005b3480156106e757600080fd5b506106f061134a565b6040516106fd91906134be565b60405180910390f35b34801561071257600080fd5b5061072d60048036038101906107289190613690565b611350565b60405161073a91906134be565b60405180910390f35b34801561074f57600080fd5b506107586113a1565b005b34801561076657600080fd5b5061076f6113b5565b60405161077c91906134be565b60405180910390f35b34801561079157600080fd5b5061079a6113bb565b005b3480156107a857600080fd5b506107b16113fb565b6040516107be91906138a8565b60405180910390f35b3480156107d357600080fd5b506107dc611424565b6040516107e99190613569565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613769565b6114b6565b005b34801561082757600080fd5b5061083061155a565b60405161083d9190613922565b60405180910390f35b34801561085257600080fd5b5061086d6004803603810190610868919061361a565b611572565b60405161087a9190613675565b60405180910390f35b34801561088f57600080fd5b50610898611587565b6040516108a59190613675565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d09190613690565b61159a565b6040516108e29190613675565b60405180910390f35b3480156108f757600080fd5b506109006115ba565b60405161090d9190613675565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906136bd565b6115cd565b005b34801561094b57600080fd5b5061096660048036038101906109619190613969565b611663565b005b34801561097457600080fd5b5061097d61194f565b60405161098a9190613675565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190613a48565b611962565b005b3480156109c857600080fd5b506109d1611a32565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190613a9b565b611a50565b604051610a0791906134be565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a329190613adb565b611ad7565b005b348015610a4557600080fd5b50610a606004803603810190610a5b9190613690565b611b04565b005b348015610a6e57600080fd5b50610a77611b87565b604051610a8491906138a8565b60405180910390f35b60125481565b606060028054610aa290613b4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ace90613b4a565b8015610b1b5780601f10610af057610100808354040283529160200191610b1b565b820191906000526020600020905b815481529060010190602001808311610afe57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0591906134be565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60146020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600454905090565b610c67611bab565b670de0b6b3a76400006103e86001600454610c829190613baa565b610c8c9190613c1b565b610c969190613c1b565b811015610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90613cbe565b60405180910390fd5b670de0b6b3a764000081610cec9190613baa565b60058190555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f625781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613d2a565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee19190613d4a565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f6d848484611c29565b90509392505050565b610f7e611bab565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610fe56000611350565b610ff061dead611350565b600454610ffd9190613d4a565b6110079190613d4a565b905090565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b6000600854600454836110a69190613baa565b6110b09190613c1b565b9050919050565b60006012905090565b60006110ca611bab565b81600a60016101000a81548160ff02191690831515021790555060019050919050565b600a60029054906101000a900460ff1681565b611108611bab565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161112e90613daf565b60006040518083038185875af1925050503d806000811461116b576040519150601f19603f3d011682016040523d82523d6000602084013e611170565b606091505b505090508061117e57600080fd5b50565b611189611bab565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111ec611bab565b80600a60026101000a81548160ff02191690831515021790555050565b60006004546008548361121c9190613baa565b6112269190613c1b565b9050919050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b60006112e0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b25565b9050919050565b6112ef611bab565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60065481565b600061139a600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611093565b9050919050565b6113a9611bab565b6113b360006125ac565b565b60055481565b6113c3611bab565b6001600a60006101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461143390613b4a565b80601f016020809104026020016040519081016040528092919081815260200182805461145f90613b4a565b80156114ac5780601f10611481576101008083540402835291602001916114ac565b820191906000526020600020905b81548152906001019060200180831161148f57829003601f168201915b5050505050905090565b6114be611bab565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613e36565b60405180910390fd5b6115568282612670565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600061157f338484611c29565b905092915050565b601160149054906101000a900460ff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b6115d5611bab565b670de0b6b3a76400006103e860056004546115f09190613baa565b6115fa9190613c1b565b6116049190613c1b565b811015611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90613ec8565b60405180910390fd5b670de0b6b3a76400008161165a9190613baa565b60068190555050565b61166b611bab565b600086888a8c8e61167c9190613ee8565b6116869190613ee8565b6116909190613ee8565b61169a9190613ee8565b60ff1690506000828486888a6116b09190613ee8565b6116ba9190613ee8565b6116c49190613ee8565b6116ce9190613ee8565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b600a60019054906101000a900460ff1681565b61196a611bab565b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611a3a611bab565b611a4d3033611a4830611350565b611c29565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611adf611bab565b81601160146101000a81548160ff021916908315150217905550806012819055505050565b611b0c611bab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613f8f565b60405180910390fd5b611b84816125ac565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b611bb3612711565b73ffffffffffffffffffffffffffffffffffffffff16611bd16113fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e90613ffb565b60405180910390fd5b565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ccf5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614067565b60405180910390fd5b601360009054906101000a900460ff1615611d3557611d2e848484612719565b90506125a5565b600a60029054906101000a900460ff16156122f057600a60009054906101000a900460ff16611e3f57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dff5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906140d3565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8957600554821115611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2390614165565b60405180910390fd5b600654611f3884611350565b83611f439190614185565b1115611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90614205565b60405180910390fd5b612127565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561202c5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561207b57600554821115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614165565b60405180910390fd5b612126565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612125576006546120d884611350565b836120e39190614185565b1115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614205565b60405180910390fd5b5b5b5b600a60019054906101000a900460ff16156122ef576121446113fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121bf5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561221757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122ee57436001601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122699190614185565b106122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a0906142bd565b60405180910390fd5b43601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b6122f8612936565b15612306576123056129d4565b5b600061231183611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90614329565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e09190613d4a565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061242f8686612fb0565b61243957816124a1565b6124a07f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612496576000612499565b60015b878461305e565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ee9190614185565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61258984611093565b60405161259691906134be565b60405180910390a36001925050505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600033905090565b60008061272583611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a090614329565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f49190613d4a565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128829190614185565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161292291906134be565b60405180910390a360019150509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156129a15750601360009054906101000a900460ff16155b80156129b95750601160149054906101000a900460ff165b80156129cf57506012546129cc30611350565b10155b905090565b6001601360006101000a81548160ff0219169083151502179055506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000601254905060008260a001516fffffffffffffffffffffffffffffffff16836080015160ff1683612b0e9190613baa565b612b189190613c1b565b905060008183612b289190613d4a565b9050612b48737a250d5630b4cf539739df2c5dacb4c659f2488d82610b25565b506000821115612b6157612b5f3061dead84611c29565b505b6000600267ffffffffffffffff811115612b7e57612b7d614349565b5b604051908082528060200260200182016040528015612bac5781602001602082028036833780820191505090505b5090503081600081518110612bc457612bc3614378565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8191906143bc565b81600181518110612c9557612c94614378565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d259594939291906144e2565b600060405180830381600087803b158015612d3f57600080fd5b505af1158015612d53573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151612d7d919061453c565b612d87919061453c565b6fffffffffffffffffffffffffffffffff169050600081886040015160ff1684612db19190613baa565b612dbb9190613c1b565b9050600082896060015160ff1685612dd39190613baa565b612ddd9190613c1b565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e2790613daf565b60006040518083038185875af1925050503d8060008114612e64576040519150601f19603f3d011682016040523d82523d6000602084013e612e69565b606091505b50509050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612eb390613daf565b60006040518083038185875af1925050503d8060008114612ef0576040519150601f19603f3d011682016040523d82523d6000602084013e612ef5565b606091505b505080915050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612f4190613daf565b60006040518083038185875af1925050503d8060008114612f7e576040519150601f19603f3d011682016040523d82523d6000602084013e612f83565b606091505b505080915050505050505050505050506000601360006101000a81548160ff021916908315150217905550565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130565750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600d6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600060011515871515146132785760648260a001516fffffffffffffffffffffffffffffffff16866132699190613baa565b6132739190613c1b565b6132a7565b60648360a001516fffffffffffffffffffffffffffffffff168661329c9190613baa565b6132a69190613c1b565b5b9050600060011515881515146132f0578260a001516fffffffffffffffffffffffffffffffff16836000015160ff16836132e19190613baa565b6132eb9190613c1b565b613325565b8360a001516fffffffffffffffffffffffffffffffff16846000015160ff168361331a9190613baa565b6133249190613c1b565b5b9050806008546133359190613d4a565b600881905550600081836133499190613d4a565b905060008111156134505780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339f9190614185565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61343a84611093565b60405161344791906134be565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613483929190614580565b60405180910390a182876134979190613d4a565b955050505050509392505050565b6000819050919050565b6134b8816134a5565b82525050565b60006020820190506134d360008301846134af565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135135780820151818401526020810190506134f8565b60008484015250505050565b6000601f19601f8301169050919050565b600061353b826134d9565b61354581856134e4565b93506135558185602086016134f5565b61355e8161351f565b840191505092915050565b600060208201905081810360008301526135838184613530565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135bb82613590565b9050919050565b6135cb816135b0565b81146135d657600080fd5b50565b6000813590506135e8816135c2565b92915050565b6135f7816134a5565b811461360257600080fd5b50565b600081359050613614816135ee565b92915050565b600080604083850312156136315761363061358b565b5b600061363f858286016135d9565b925050602061365085828601613605565b9150509250929050565b60008115159050919050565b61366f8161365a565b82525050565b600060208201905061368a6000830184613666565b92915050565b6000602082840312156136a6576136a561358b565b5b60006136b4848285016135d9565b91505092915050565b6000602082840312156136d3576136d261358b565b5b60006136e184828501613605565b91505092915050565b6000806000606084860312156137035761370261358b565b5b6000613711868287016135d9565b9350506020613722868287016135d9565b925050604061373386828701613605565b9150509250925092565b6137468161365a565b811461375157600080fd5b50565b6000813590506137638161373d565b92915050565b600080604083850312156137805761377f61358b565b5b600061378e858286016135d9565b925050602061379f85828601613754565b9150509250929050565b600060ff82169050919050565b6137bf816137a9565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6137ea816137c5565b82525050565b600060c08201905061380560008301896137b6565b61381260208301886137b6565b61381f60408301876137b6565b61382c60608301866137b6565b61383960808301856137b6565b61384660a08301846137e1565b979650505050505050565b600060208201905061386660008301846137b6565b92915050565b6000602082840312156138825761388161358b565b5b600061389084828501613754565b91505092915050565b6138a2816135b0565b82525050565b60006020820190506138bd6000830184613899565b92915050565b6000819050919050565b60006138e86138e36138de84613590565b6138c3565b613590565b9050919050565b60006138fa826138cd565b9050919050565b600061390c826138ef565b9050919050565b61391c81613901565b82525050565b60006020820190506139376000830184613913565b92915050565b613946816137a9565b811461395157600080fd5b50565b6000813590506139638161393d565b92915050565b6000806000806000806000806000806101408b8d03121561398d5761398c61358b565b5b600061399b8d828e01613954565b9a505060206139ac8d828e01613954565b99505060406139bd8d828e01613954565b98505060606139ce8d828e01613954565b97505060806139df8d828e01613954565b96505060a06139f08d828e01613954565b95505060c0613a018d828e01613954565b94505060e0613a128d828e01613954565b935050610100613a248d828e01613954565b925050610120613a368d828e01613954565b9150509295989b9194979a5092959850565b600080600060608486031215613a6157613a6061358b565b5b6000613a6f868287016135d9565b9350506020613a80868287016135d9565b9250506040613a91868287016135d9565b9150509250925092565b60008060408385031215613ab257613ab161358b565b5b6000613ac0858286016135d9565b9250506020613ad1858286016135d9565b9150509250929050565b60008060408385031215613af257613af161358b565b5b6000613b0085828601613754565b9250506020613b1185828601613605565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b6257607f821691505b602082108103613b7557613b74613b1b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bb5826134a5565b9150613bc0836134a5565b9250828202613bce816134a5565b91508282048414831517613be557613be4613b7b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c26826134a5565b9150613c31836134a5565b925082613c4157613c40613bec565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613ca8602f836134e4565b9150613cb382613c4c565b604082019050919050565b60006020820190508181036000830152613cd781613c9b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613d14601d836134e4565b9150613d1f82613cde565b602082019050919050565b60006020820190508181036000830152613d4381613d07565b9050919050565b6000613d55826134a5565b9150613d60836134a5565b9250828203905081811115613d7857613d77613b7b565b5b92915050565b600081905092915050565b50565b6000613d99600083613d7e565b9150613da482613d89565b600082019050919050565b6000613dba82613d8c565b9150819050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613e206039836134e4565b9150613e2b82613dc4565b604082019050919050565b60006020820190508181036000830152613e4f81613e13565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613eb26024836134e4565b9150613ebd82613e56565b604082019050919050565b60006020820190508181036000830152613ee181613ea5565b9050919050565b6000613ef3826137a9565b9150613efe836137a9565b9250828201905060ff811115613f1757613f16613b7b565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f796026836134e4565b9150613f8482613f1d565b604082019050919050565b60006020820190508181036000830152613fa881613f6c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fe56020836134e4565b9150613ff082613faf565b602082019050919050565b6000602082019050818103600083015261401481613fd8565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614051600b836134e4565b915061405c8261401b565b602082019050919050565b6000602082019050818103600083015261408081614044565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140bd6016836134e4565b91506140c882614087565b602082019050919050565b600060208201905081810360008301526140ec816140b0565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061414f6028836134e4565b915061415a826140f3565b604082019050919050565b6000602082019050818103600083015261417e81614142565b9050919050565b6000614190826134a5565b915061419b836134a5565b92508282019050808211156141b3576141b2613b7b565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006141ef6013836134e4565b91506141fa826141b9565b602082019050919050565b6000602082019050818103600083015261421e816141e2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260208201527f6c6f636b7320616c6c6f7765642e000000000000000000000000000000000000604082015250565b60006142a7604e836134e4565b91506142b282614225565b606082019050919050565b600060208201905081810360008301526142d68161429a565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006143136014836134e4565b915061431e826142dd565b602082019050919050565b6000602082019050818103600083015261434281614306565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143b6816135c2565b92915050565b6000602082840312156143d2576143d161358b565b5b60006143e0848285016143a7565b91505092915050565b6000819050919050565b600061440e614409614404846143e9565b6138c3565b6134a5565b9050919050565b61441e816143f3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614459816135b0565b82525050565b600061446b8383614450565b60208301905092915050565b6000602082019050919050565b600061448f82614424565b614499818561442f565b93506144a483614440565b8060005b838110156144d55781516144bc888261445f565b97506144c783614477565b9250506001810190506144a8565b5085935050505092915050565b600060a0820190506144f760008301886134af565b6145046020830187614415565b81810360408301526145168186614484565b90506145256060830185613899565b61453260808301846134af565b9695505050505050565b6000614547826137c5565b9150614552836137c5565b925082820390506fffffffffffffffffffffffffffffffff81111561457a57614579613b7b565b5b92915050565b600060408201905061459560008301856134af565b6145a260208301846134af565b939250505056fea2646970667358221220cc5d1f0089c968ec3fa0c1bd33d544aaa1054be94c241b6328ceab2fc69994fb64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102765760003560e01c8063658d4b7f1161014f578063b0f7ec38116100c1578063d7c010321161007a578063d7c0103214610993578063d85a2828146109bc578063dd62ed3e146109d3578063df20fd4914610a10578063f2fde38b14610a39578063f40acc3d14610a625761027d565b8063b0f7ec3814610883578063b62496f5146108ae578063bbc0c742146108eb578063c18bc19514610916578063c38a31de1461093f578063c876d0b9146109685761027d565b80638a8c523c116101135780638a8c523c146107855780638da5cb5b1461079c57806395d89b41146107c75780639a7a23d6146107f2578063a82ed9ec1461081b578063a9059cbb146108465761027d565b8063658d4b7f146106b25780636c0a24eb146106db57806370a0823114610706578063715018a6146107435780637d1db4a51461075a5761027d565b80632b14ca56116101e8578063364333f4116101ac578063364333f41461059f578063404e5129146105b657806341aea9de146105df57806345ce5365146106085780634706240214610645578063571ac8b0146106755761027d565b80632b14ca561461049f5780632d838119146104cf578063313ce5671461050c57806334b86560146105375780633582ad23146105745761027d565b8063178002871161023a578063178002871461038f57806318160ddd146103ba578063203e727e146103e557806323b872dd1461040e57806324c390231461044b5780632b112e49146104745761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d85780630cfc15f91461031557806316c02129146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a8d565b6040516102a491906134be565b60405180910390f35b3480156102b957600080fd5b506102c2610a93565b6040516102cf9190613569565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa919061361a565b610b25565b60405161030c9190613675565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190613690565b610c17565b60405161034991906134be565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190613690565b610c2f565b6040516103869190613675565b60405180910390f35b34801561039b57600080fd5b506103a4610c4f565b6040516103b191906134be565b60405180910390f35b3480156103c657600080fd5b506103cf610c55565b6040516103dc91906134be565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906136bd565b610c5f565b005b34801561041a57600080fd5b50610435600480360381019061043091906136ea565b610cf5565b6040516104429190613675565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190613769565b610f76565b005b34801561048057600080fd5b50610489610fd9565b60405161049691906134be565b60405180910390f35b3480156104ab57600080fd5b506104b461100c565b6040516104c6969594939291906137f0565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906136bd565b611093565b60405161050391906134be565b60405180910390f35b34801561051857600080fd5b506105216110b7565b60405161052e9190613851565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061386c565b6110c0565b60405161056b9190613675565b60405180910390f35b34801561058057600080fd5b506105896110ed565b6040516105969190613675565b60405180910390f35b3480156105ab57600080fd5b506105b4611100565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190613769565b611181565b005b3480156105eb57600080fd5b506106066004803603810190610601919061386c565b6111e4565b005b34801561061457600080fd5b5061062f600480360381019061062a91906136bd565b611209565b60405161063c91906134be565b60405180910390f35b34801561065157600080fd5b5061065a61122d565b60405161066c969594939291906137f0565b60405180910390f35b34801561068157600080fd5b5061069c60048036038101906106979190613690565b6112b4565b6040516106a99190613675565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190613769565b6112e7565b005b3480156106e757600080fd5b506106f061134a565b6040516106fd91906134be565b60405180910390f35b34801561071257600080fd5b5061072d60048036038101906107289190613690565b611350565b60405161073a91906134be565b60405180910390f35b34801561074f57600080fd5b506107586113a1565b005b34801561076657600080fd5b5061076f6113b5565b60405161077c91906134be565b60405180910390f35b34801561079157600080fd5b5061079a6113bb565b005b3480156107a857600080fd5b506107b16113fb565b6040516107be91906138a8565b60405180910390f35b3480156107d357600080fd5b506107dc611424565b6040516107e99190613569565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613769565b6114b6565b005b34801561082757600080fd5b5061083061155a565b60405161083d9190613922565b60405180910390f35b34801561085257600080fd5b5061086d6004803603810190610868919061361a565b611572565b60405161087a9190613675565b60405180910390f35b34801561088f57600080fd5b50610898611587565b6040516108a59190613675565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d09190613690565b61159a565b6040516108e29190613675565b60405180910390f35b3480156108f757600080fd5b506109006115ba565b60405161090d9190613675565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906136bd565b6115cd565b005b34801561094b57600080fd5b5061096660048036038101906109619190613969565b611663565b005b34801561097457600080fd5b5061097d61194f565b60405161098a9190613675565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190613a48565b611962565b005b3480156109c857600080fd5b506109d1611a32565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190613a9b565b611a50565b604051610a0791906134be565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a329190613adb565b611ad7565b005b348015610a4557600080fd5b50610a606004803603810190610a5b9190613690565b611b04565b005b348015610a6e57600080fd5b50610a77611b87565b604051610a8491906138a8565b60405180910390f35b60125481565b606060028054610aa290613b4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ace90613b4a565b8015610b1b5780601f10610af057610100808354040283529160200191610b1b565b820191906000526020600020905b815481529060010190602001808311610afe57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0591906134be565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60146020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600454905090565b610c67611bab565b670de0b6b3a76400006103e86001600454610c829190613baa565b610c8c9190613c1b565b610c969190613c1b565b811015610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90613cbe565b60405180910390fd5b670de0b6b3a764000081610cec9190613baa565b60058190555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f625781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613d2a565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee19190613d4a565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f6d848484611c29565b90509392505050565b610f7e611bab565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610fe56000611350565b610ff061dead611350565b600454610ffd9190613d4a565b6110079190613d4a565b905090565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b6000600854600454836110a69190613baa565b6110b09190613c1b565b9050919050565b60006012905090565b60006110ca611bab565b81600a60016101000a81548160ff02191690831515021790555060019050919050565b600a60029054906101000a900460ff1681565b611108611bab565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161112e90613daf565b60006040518083038185875af1925050503d806000811461116b576040519150601f19603f3d011682016040523d82523d6000602084013e611170565b606091505b505090508061117e57600080fd5b50565b611189611bab565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111ec611bab565b80600a60026101000a81548160ff02191690831515021790555050565b60006004546008548361121c9190613baa565b6112269190613c1b565b9050919050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b60006112e0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b25565b9050919050565b6112ef611bab565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60065481565b600061139a600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611093565b9050919050565b6113a9611bab565b6113b360006125ac565b565b60055481565b6113c3611bab565b6001600a60006101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461143390613b4a565b80601f016020809104026020016040519081016040528092919081815260200182805461145f90613b4a565b80156114ac5780601f10611481576101008083540402835291602001916114ac565b820191906000526020600020905b81548152906001019060200180831161148f57829003601f168201915b5050505050905090565b6114be611bab565b7f000000000000000000000000ce0f5b438148d2858b066094367f75d1eaae871773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613e36565b60405180910390fd5b6115568282612670565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600061157f338484611c29565b905092915050565b601160149054906101000a900460ff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b6115d5611bab565b670de0b6b3a76400006103e860056004546115f09190613baa565b6115fa9190613c1b565b6116049190613c1b565b811015611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90613ec8565b60405180910390fd5b670de0b6b3a76400008161165a9190613baa565b60068190555050565b61166b611bab565b600086888a8c8e61167c9190613ee8565b6116869190613ee8565b6116909190613ee8565b61169a9190613ee8565b60ff1690506000828486888a6116b09190613ee8565b6116ba9190613ee8565b6116c49190613ee8565b6116ce9190613ee8565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b600a60019054906101000a900460ff1681565b61196a611bab565b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611a3a611bab565b611a4d3033611a4830611350565b611c29565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611adf611bab565b81601160146101000a81548160ff021916908315150217905550806012819055505050565b611b0c611bab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613f8f565b60405180910390fd5b611b84816125ac565b50565b7f000000000000000000000000ce0f5b438148d2858b066094367f75d1eaae871781565b611bb3612711565b73ffffffffffffffffffffffffffffffffffffffff16611bd16113fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e90613ffb565b60405180910390fd5b565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ccf5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614067565b60405180910390fd5b601360009054906101000a900460ff1615611d3557611d2e848484612719565b90506125a5565b600a60029054906101000a900460ff16156122f057600a60009054906101000a900460ff16611e3f57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dff5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906140d3565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8957600554821115611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2390614165565b60405180910390fd5b600654611f3884611350565b83611f439190614185565b1115611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90614205565b60405180910390fd5b612127565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561202c5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561207b57600554821115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614165565b60405180910390fd5b612126565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612125576006546120d884611350565b836120e39190614185565b1115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614205565b60405180910390fd5b5b5b5b600a60019054906101000a900460ff16156122ef576121446113fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121bf5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561221757507f000000000000000000000000ce0f5b438148d2858b066094367f75d1eaae871773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122ee57436001601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122699190614185565b106122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a0906142bd565b60405180910390fd5b43601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b6122f8612936565b15612306576123056129d4565b5b600061231183611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90614329565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e09190613d4a565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061242f8686612fb0565b61243957816124a1565b6124a07f000000000000000000000000ce0f5b438148d2858b066094367f75d1eaae871773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612496576000612499565b60015b878461305e565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ee9190614185565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61258984611093565b60405161259691906134be565b60405180910390a36001925050505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600033905090565b60008061272583611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a090614329565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f49190613d4a565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128829190614185565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161292291906134be565b60405180910390a360019150509392505050565b60007f000000000000000000000000ce0f5b438148d2858b066094367f75d1eaae871773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156129a15750601360009054906101000a900460ff16155b80156129b95750601160149054906101000a900460ff165b80156129cf57506012546129cc30611350565b10155b905090565b6001601360006101000a81548160ff0219169083151502179055506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000601254905060008260a001516fffffffffffffffffffffffffffffffff16836080015160ff1683612b0e9190613baa565b612b189190613c1b565b905060008183612b289190613d4a565b9050612b48737a250d5630b4cf539739df2c5dacb4c659f2488d82610b25565b506000821115612b6157612b5f3061dead84611c29565b505b6000600267ffffffffffffffff811115612b7e57612b7d614349565b5b604051908082528060200260200182016040528015612bac5781602001602082028036833780820191505090505b5090503081600081518110612bc457612bc3614378565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8191906143bc565b81600181518110612c9557612c94614378565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d259594939291906144e2565b600060405180830381600087803b158015612d3f57600080fd5b505af1158015612d53573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151612d7d919061453c565b612d87919061453c565b6fffffffffffffffffffffffffffffffff169050600081886040015160ff1684612db19190613baa565b612dbb9190613c1b565b9050600082896060015160ff1685612dd39190613baa565b612ddd9190613c1b565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e2790613daf565b60006040518083038185875af1925050503d8060008114612e64576040519150601f19603f3d011682016040523d82523d6000602084013e612e69565b606091505b50509050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612eb390613daf565b60006040518083038185875af1925050503d8060008114612ef0576040519150601f19603f3d011682016040523d82523d6000602084013e612ef5565b606091505b505080915050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612f4190613daf565b60006040518083038185875af1925050503d8060008114612f7e576040519150601f19603f3d011682016040523d82523d6000602084013e612f83565b606091505b505080915050505050505050505050506000601360006101000a81548160ff021916908315150217905550565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130565750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600d6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600060011515871515146132785760648260a001516fffffffffffffffffffffffffffffffff16866132699190613baa565b6132739190613c1b565b6132a7565b60648360a001516fffffffffffffffffffffffffffffffff168661329c9190613baa565b6132a69190613c1b565b5b9050600060011515881515146132f0578260a001516fffffffffffffffffffffffffffffffff16836000015160ff16836132e19190613baa565b6132eb9190613c1b565b613325565b8360a001516fffffffffffffffffffffffffffffffff16846000015160ff168361331a9190613baa565b6133249190613c1b565b5b9050806008546133359190613d4a565b600881905550600081836133499190613d4a565b905060008111156134505780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339f9190614185565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61343a84611093565b60405161344791906134be565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613483929190614580565b60405180910390a182876134979190613d4a565b955050505050509392505050565b6000819050919050565b6134b8816134a5565b82525050565b60006020820190506134d360008301846134af565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135135780820151818401526020810190506134f8565b60008484015250505050565b6000601f19601f8301169050919050565b600061353b826134d9565b61354581856134e4565b93506135558185602086016134f5565b61355e8161351f565b840191505092915050565b600060208201905081810360008301526135838184613530565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135bb82613590565b9050919050565b6135cb816135b0565b81146135d657600080fd5b50565b6000813590506135e8816135c2565b92915050565b6135f7816134a5565b811461360257600080fd5b50565b600081359050613614816135ee565b92915050565b600080604083850312156136315761363061358b565b5b600061363f858286016135d9565b925050602061365085828601613605565b9150509250929050565b60008115159050919050565b61366f8161365a565b82525050565b600060208201905061368a6000830184613666565b92915050565b6000602082840312156136a6576136a561358b565b5b60006136b4848285016135d9565b91505092915050565b6000602082840312156136d3576136d261358b565b5b60006136e184828501613605565b91505092915050565b6000806000606084860312156137035761370261358b565b5b6000613711868287016135d9565b9350506020613722868287016135d9565b925050604061373386828701613605565b9150509250925092565b6137468161365a565b811461375157600080fd5b50565b6000813590506137638161373d565b92915050565b600080604083850312156137805761377f61358b565b5b600061378e858286016135d9565b925050602061379f85828601613754565b9150509250929050565b600060ff82169050919050565b6137bf816137a9565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6137ea816137c5565b82525050565b600060c08201905061380560008301896137b6565b61381260208301886137b6565b61381f60408301876137b6565b61382c60608301866137b6565b61383960808301856137b6565b61384660a08301846137e1565b979650505050505050565b600060208201905061386660008301846137b6565b92915050565b6000602082840312156138825761388161358b565b5b600061389084828501613754565b91505092915050565b6138a2816135b0565b82525050565b60006020820190506138bd6000830184613899565b92915050565b6000819050919050565b60006138e86138e36138de84613590565b6138c3565b613590565b9050919050565b60006138fa826138cd565b9050919050565b600061390c826138ef565b9050919050565b61391c81613901565b82525050565b60006020820190506139376000830184613913565b92915050565b613946816137a9565b811461395157600080fd5b50565b6000813590506139638161393d565b92915050565b6000806000806000806000806000806101408b8d03121561398d5761398c61358b565b5b600061399b8d828e01613954565b9a505060206139ac8d828e01613954565b99505060406139bd8d828e01613954565b98505060606139ce8d828e01613954565b97505060806139df8d828e01613954565b96505060a06139f08d828e01613954565b95505060c0613a018d828e01613954565b94505060e0613a128d828e01613954565b935050610100613a248d828e01613954565b925050610120613a368d828e01613954565b9150509295989b9194979a5092959850565b600080600060608486031215613a6157613a6061358b565b5b6000613a6f868287016135d9565b9350506020613a80868287016135d9565b9250506040613a91868287016135d9565b9150509250925092565b60008060408385031215613ab257613ab161358b565b5b6000613ac0858286016135d9565b9250506020613ad1858286016135d9565b9150509250929050565b60008060408385031215613af257613af161358b565b5b6000613b0085828601613754565b9250506020613b1185828601613605565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b6257607f821691505b602082108103613b7557613b74613b1b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bb5826134a5565b9150613bc0836134a5565b9250828202613bce816134a5565b91508282048414831517613be557613be4613b7b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c26826134a5565b9150613c31836134a5565b925082613c4157613c40613bec565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613ca8602f836134e4565b9150613cb382613c4c565b604082019050919050565b60006020820190508181036000830152613cd781613c9b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613d14601d836134e4565b9150613d1f82613cde565b602082019050919050565b60006020820190508181036000830152613d4381613d07565b9050919050565b6000613d55826134a5565b9150613d60836134a5565b9250828203905081811115613d7857613d77613b7b565b5b92915050565b600081905092915050565b50565b6000613d99600083613d7e565b9150613da482613d89565b600082019050919050565b6000613dba82613d8c565b9150819050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613e206039836134e4565b9150613e2b82613dc4565b604082019050919050565b60006020820190508181036000830152613e4f81613e13565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613eb26024836134e4565b9150613ebd82613e56565b604082019050919050565b60006020820190508181036000830152613ee181613ea5565b9050919050565b6000613ef3826137a9565b9150613efe836137a9565b9250828201905060ff811115613f1757613f16613b7b565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f796026836134e4565b9150613f8482613f1d565b604082019050919050565b60006020820190508181036000830152613fa881613f6c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fe56020836134e4565b9150613ff082613faf565b602082019050919050565b6000602082019050818103600083015261401481613fd8565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614051600b836134e4565b915061405c8261401b565b602082019050919050565b6000602082019050818103600083015261408081614044565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140bd6016836134e4565b91506140c882614087565b602082019050919050565b600060208201905081810360008301526140ec816140b0565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061414f6028836134e4565b915061415a826140f3565b604082019050919050565b6000602082019050818103600083015261417e81614142565b9050919050565b6000614190826134a5565b915061419b836134a5565b92508282019050808211156141b3576141b2613b7b565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006141ef6013836134e4565b91506141fa826141b9565b602082019050919050565b6000602082019050818103600083015261421e816141e2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260208201527f6c6f636b7320616c6c6f7765642e000000000000000000000000000000000000604082015250565b60006142a7604e836134e4565b91506142b282614225565b606082019050919050565b600060208201905081810360008301526142d68161429a565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006143136014836134e4565b915061431e826142dd565b602082019050919050565b6000602082019050818103600083015261434281614306565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143b6816135c2565b92915050565b6000602082840312156143d2576143d161358b565b5b60006143e0848285016143a7565b91505092915050565b6000819050919050565b600061440e614409614404846143e9565b6138c3565b6134a5565b9050919050565b61441e816143f3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614459816135b0565b82525050565b600061446b8383614450565b60208301905092915050565b6000602082019050919050565b600061448f82614424565b614499818561442f565b93506144a483614440565b8060005b838110156144d55781516144bc888261445f565b97506144c783614477565b9250506001810190506144a8565b5085935050505092915050565b600060a0820190506144f760008301886134af565b6145046020830187614415565b81810360408301526145168186614484565b90506145256060830185613899565b61453260808301846134af565b9695505050505050565b6000614547826137c5565b9150614552836137c5565b925082820390506fffffffffffffffffffffffffffffffff81111561457a57614579613b7b565b5b92915050565b600060408201905061459560008301856134af565b6145a260208301846134af565b939250505056fea2646970667358221220cc5d1f0089c968ec3fa0c1bd33d544aaa1054be94c241b6328ceab2fc69994fb64736f6c63430008130033

Deployed Bytecode Sourcemap

7106:15235:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9016:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11613:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10450:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8262:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9097;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8311:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11417:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13184:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10968:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15432:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12409:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8751:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;12252:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11527:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15886:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8521:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13728:170;;;;;;;;;;;;;:::i;:::-;;16033:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15760:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12104:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8650:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;10674:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15305:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8077:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11803:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2932:103;;;;;;;;;;;;;:::i;:::-;;8018:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12553:113;;;;;;;;;;;;;:::i;:::-;;2284:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11706:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12674:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7493:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10804:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8977:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7673:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8434:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13458:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14209:1088;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8474:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15563:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13906:131;;;;;;;;;;;;;:::i;:::-;;11949:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14045:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3190:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7626:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9016:56;;;;:::o;11613:85::-;11652:13;11685:5;11678:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11613:85;:::o;10450:216::-;10525:4;10577:6;10542:11;:23;10554:10;10542:23;;;;;;;;;;;;;;;:32;10566:7;10542:32;;;;;;;;;;;;;;;:41;;;;10620:7;10599:37;;10608:10;10599:37;;;10629:6;10599:37;;;;;;:::i;:::-;;;;;;;;10654:4;10647:11;;10450:216;;;;:::o;8262:42::-;;;;;;;;;;;;;;;;;:::o;9097:::-;;;;;;;;;;;;;;;;;;;;;;:::o;8311:46::-;;;;:::o;11417:102::-;11472:7;11499:12;;11492:19;;11417:102;:::o;13184:266::-;2170:13;:11;:13::i;:::-;13320:4:::1;13312;13307:1;13292:12;;:16;;;;:::i;:::-;13291:25;;;;:::i;:::-;13290:34;;;;:::i;:::-;13280:6;:44;;13258:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;13435:6;13425;:17;;;;:::i;:::-;13410:12;:32;;;;13184:266:::0;:::o;10968:441::-;11068:4;11124:17;11089:11;:19;11101:6;11089:19;;;;;;;;;;;;;;;:31;11109:10;11089:31;;;;;;;;;;;;;;;;:52;11085:257;;11201:6;11166:11;:19;11178:6;11166:19;;;;;;;;;;;;;;;:31;11186:10;11166:31;;;;;;;;;;;;;;;;:41;;11158:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;11324:6;11290:11;:19;11302:6;11290:19;;;;;;;;;;;;;;;:31;11310:10;11290:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;11256:11;:19;11268:6;11256:19;;;;;;;;;;;;;;;:31;11276:10;11256:31;;;;;;;;;;;;;;;:74;;;;11085:257;11361:40;11375:6;11383:9;11394:6;11361:13;:40::i;:::-;11354:47;;10968:441;;;;;:::o;15432:123::-;2170:13;:11;:13::i;:::-;15541:6:::1;15517:13;:21;15531:6;15517:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15432:123:::0;;:::o;12409:136::-;12462:7;12522:15;7404:42;12522:9;:15::i;:::-;12504;7331:42;12504:9;:15::i;:::-;12489:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;12482:55;;12409:136;:::o;8751:95::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12252:149::-;12322:7;12377:16;;12362:12;;12349:10;:25;;;;:::i;:::-;:44;;;;:::i;:::-;12342:51;;12252:149;;;:::o;11527:78::-;11570:5;11595:2;11588:9;;11527:78;:::o;15886:139::-;15953:4;2170:13;:11;:13::i;:::-;15993:2:::1;15970:20;;:25;;;;;;;;;;;;;;;;;;16013:4;16006:11;;15886:139:::0;;;:::o;8521:32::-;;;;;;;;;;;;;:::o;13728:170::-;2170:13;:11;:13::i;:::-;13788:12:::1;13813:10;13805:24;;13837:21;13805:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13787:76;;;13882:7;13874:16;;;::::0;::::1;;13776:122;13728:170::o:0;16033:135::-;2170:13;:11;:13::i;:::-;16145:15:::1;16122:10;:20;16133:8;16122:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16033:135:::0;;:::o;15760:91::-;2170:13;:11;:13::i;:::-;15841:2:::1;15825:13;;:18;;;;;;;;;;;;;;;;;;15760:91:::0;:::o;12104:140::-;12169:7;12224:12;;12205:16;;12196:6;:25;;;;:::i;:::-;:40;;;;:::i;:::-;12189:47;;12104:140;;;:::o;8650:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10674:122::-;10729:4;10753:35;10761:7;10770:17;10753:7;:35::i;:::-;10746:42;;10674:122;;;:::o;15305:119::-;2170:13;:11;:13::i;:::-;15410:6:::1;15388:11;:19;15400:6;15388:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15305:119:::0;;:::o;8077:56::-;;;;:::o;11803:138::-;11869:7;11896:37;11916:7;:16;11924:7;11916:16;;;;;;;;;;;;;;;;11896:19;:37::i;:::-;11889:44;;11803:138;;;:::o;2932:103::-;2170:13;:11;:13::i;:::-;2997:30:::1;3024:1;2997:18;:30::i;:::-;2932:103::o:0;8018:52::-;;;;:::o;12553:113::-;2170:13;:11;:13::i;:::-;12624:4:::1;12608:13;;:20;;;;;;;;;;;;;;;;;;12654:4;12639:12;;:19;;;;;;;;;;;;;;;;;;12553:113::o:0;2284:87::-;2330:7;2357:6;;;;;;;;;;;2350:13;;2284:87;:::o;11706:89::-;11747:13;11780:7;11773:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11706:89;:::o;12674:306::-;2170:13;:11;:13::i;:::-;12818:15:::1;12810:23;;:4;:23;;::::0;12788:130:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12931:41;12960:4;12966:5;12931:28;:41::i;:::-;12674:306:::0;;:::o;7493:126::-;7576:42;7493:126;:::o;10804:156::-;10884:4;10908:44;10922:10;10934:9;10945:6;10908:13;:44::i;:::-;10901:51;;10804:156;;;;:::o;8977:32::-;;;;;;;;;;;;;:::o;7673:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;8434:33::-;;;;;;;;;;;;;:::o;13458:262::-;2170:13;:11;:13::i;:::-;13597:4:::1;13589;13584:1;13569:12;;:16;;;;:::i;:::-;13568:25;;;;:::i;:::-;13567:34;;;;:::i;:::-;13557:6;:44;;13535:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;13705:6;13695;:17;;;;:::i;:::-;13676:16;:36;;;;13458:262:::0;:::o;14209:1088::-;2170:13;:11;:13::i;:::-;14565:21:::1;14653:10;14637:13;14626:8;14608:15;14589:16;:34;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;14565:98;;;;14674:22;14767:11;14750:14;14738:9;14719:16;14699:17;:36;;;;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;14674:104;;;;14800:230;;;;;;;;14831:16;14800:230;;;;;;14873:15;14800:230;;;;;;14907:8;14800:230;;;;;;14939:13;14800:230;;;;;;14973:10;14800:230;;;;;;15005:13;14800:230;;;;::::0;14791:6:::1;:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15053:236;;;;;;;;15084:17;15053:236;;;;;;15127:16;15053:236;;;;;;15162:9;15053:236;;;;;;15195:14;15053:236;;;;;;15230:11;15053:236;;;;;;15263:14;15053:236;;;;::::0;15043:7:::1;:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14554:743;;14209:1088:::0;;;;;;;;;;:::o;8474:40::-;;;;;;;;;;;;;:::o;15563:189::-;2170:13;:11;:13::i;:::-;15678:2:::1;15655:20;;:25;;;;;;;;;;;;;;;;;;15707:3;15691:13;;:19;;;;;;;;;;;;;;;;;;15742:2;15721:18;;:23;;;;;;;;;;;;;;;;;;15563:189:::0;;;:::o;13906:131::-;2170:13;:11;:13::i;:::-;13963:66:::1;13985:4;13992:10;14004:24;14022:4;14004:9;:24::i;:::-;13963:13;:66::i;:::-;;13906:131::o:0;11949:147::-;12033:7;12060:11;:19;12072:6;12060:19;;;;;;;;;;;;;;;:28;12080:7;12060:28;;;;;;;;;;;;;;;;12053:35;;11949:147;;;;:::o;14045:156::-;2170:13;:11;:13::i;:::-;14151:8:::1;14136:12;;:23;;;;;;;;;;;;;;;;;;14186:7;14170:13;:23;;;;14045:156:::0;;:::o;3190:201::-;2170:13;:11;:13::i;:::-;3299:1:::1;3279:22;;:8;:22;;::::0;3271:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3355:28;3374:8;3355:18;:28::i;:::-;3190:201:::0;:::o;7626:40::-;;;:::o;2449:132::-;2524:12;:10;:12::i;:::-;2513:23;;:7;:5;:7::i;:::-;:23;;;2505:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2449:132::o;16176:2741::-;16268:4;16294:10;:21;16305:9;16294:21;;;;;;;;;;;;;;;;;;;;;;;;;16293:22;:45;;;;;16320:10;:18;16331:6;16320:18;;;;;;;;;;;;;;;;;;;;;;;;;16319:19;16293:45;16285:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;16371:6;;;;;;;;;;;16367:87;;;16401:41;16416:6;16424:9;16435:6;16401:14;:41::i;:::-;16394:48;;;;16367:87;16470:13;;;;;;;;;;;16466:1772;;;16505:13;;;;;;;;;;;16500:210;;16583:11;:19;16595:6;16583:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;16606:11;:22;16618:9;16606:22;;;;;;;;;;;;;;;;;;;;;;;;;16583:45;16553:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;16500:210;16754:25;:33;16780:6;16754:33;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;16792:13;:24;16806:9;16792:24;;;;;;;;;;;;;;;;;;;;;;;;;16791:25;16754:62;16750:707;;;16869:12;;16859:6;:22;;16851:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16986:16;;16962:20;16972:9;16962;:20::i;:::-;16953:6;:29;;;;:::i;:::-;:49;;16945:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;16750:707;;;17090:25;:36;17116:9;17090:36;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;17131:13;:21;17145:6;17131:21;;;;;;;;;;;;;;;;;;;;;;;;;17130:22;17090:62;17086:371;;;17204:12;;17194:6;:22;;17186:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17086:371;;;17301:13;:24;17315:9;17301:24;;;;;;;;;;;;;;;;;;;;;;;;;17296:161;;17401:16;;17377:20;17387:9;17377;:20::i;:::-;17368:6;:29;;;;:::i;:::-;:49;;17360:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;17296:161;17086:371;16750:707;17617:20;;;;;;;;;;;17613:614;;;17697:7;:5;:7::i;:::-;17684:20;;:9;:20;;;;:84;;;;;7576:42;17729:39;;:9;:39;;;;17684:84;:137;;;;;17806:15;17793:28;;:9;:28;;;;17684:137;17658:554;;;17973:12;17940:1;17898:28;:39;17927:9;17898:39;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:87;17864:251;;;;;;;;;;;;:::i;:::-;;;;;;;;;18180:12;18138:28;:39;18167:9;18138:39;;;;;;;;;;;;;;;:54;;;;17658:554;17613:614;16466:1772;18254:17;:15;:17::i;:::-;18250:61;;;18288:11;:9;:11::i;:::-;18250:61;18323:24;18350:26;18369:6;18350:18;:26::i;:::-;18323:53;;18414:16;18395:7;:15;18403:6;18395:15;;;;;;;;;;;;;;;;:35;;18387:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18502:16;18484:7;:15;18492:6;18484:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;18466:7;:15;18474:6;18466:15;;;;;;;;;;;;;;;:52;;;;18531:26;18560:33;18575:6;18583:9;18560:14;:33::i;:::-;:170;;18714:16;18560:170;;;18609:89;18641:15;18631:25;;:6;:25;;;:40;;18666:5;18631:40;;;18659:4;18631:40;18673:6;18681:16;18609:21;:89::i;:::-;18560:170;18531:199;;18783:18;18762:7;:18;18770:9;18762:18;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;18741:7;:18;18749:9;18741:18;;;;;;;;;;;;;;;:60;;;;18836:9;18819:68;;18828:6;18819:68;;;18847:39;18867:18;18847:19;:39::i;:::-;18819:68;;;;;;:::i;:::-;;;;;;;;18905:4;18898:11;;;;16176:2741;;;;;;:::o;3551:191::-;3625:16;3644:6;;;;;;;;;;;3625:25;;3670:8;3661:6;;:17;;;;;;;;;;;;;;;;;;3725:8;3694:40;;3715:8;3694:40;;;;;;;;;;;;3614:128;3551:191;:::o;12988:188::-;13105:5;13071:25;:31;13097:4;13071:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13162:5;13128:40;;13156:4;13128:40;;;;;;;;;;;;12988:188;;:::o;894:98::-;947:7;974:10;967:17;;894:98;:::o;18925:455::-;19018:4;19035:24;19062:26;19081:6;19062:18;:26::i;:::-;19035:53;;19126:16;19107:7;:15;19115:6;19107:15;;;;;;;;;;;;;;;;:35;;19099:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19214:16;19196:7;:15;19204:6;19196:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;19178:7;:15;19186:6;19178:15;;;;;;;;;;;;;;;:52;;;;19283:16;19262:7;:18;19270:9;19262:18;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;19241:7;:18;19249:9;19241:18;;;;;;;;;;;;;;;:58;;;;19332:9;19315:35;;19324:6;19315:35;;;19343:6;19315:35;;;;;;:::i;:::-;;;;;;;;19368:4;19361:11;;;18925:455;;;;;:::o;20511:183::-;20561:4;20599:15;20585:29;;:10;:29;;;;:40;;;;;20619:6;;;;;;;;;;;20618:7;20585:40;:56;;;;;20629:12;;;;;;;;;;;20585:56;:101;;;;;20673:13;;20645:24;20663:4;20645:9;:24::i;:::-;:41;;20585:101;20578:108;;20511:183;:::o;20702:1467::-;9259:4;9250:6;;:13;;;;;;;;;;;;;;;;;;20752:20:::1;20775:7;20752:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;20795:23;20821:13;;20795:39;;20845:20;20903:9;:15;;;20868:50;;20886:9;:14;;;20868:32;;:15;:32;;;;:::i;:::-;:50;;;;:::i;:::-;20845:73;;20929:20;20970:12;20952:15;:30;;;;:::i;:::-;20929:53;;20993:49;7576:42;21029:12;20993:7;:49::i;:::-;;21073:1;21058:12;:16;21055:126;;;21121:48;21143:4;7331:42;21156:12;21121:13;:48::i;:::-;;21055:126;21210:21;21248:1;21234:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21210:40;;21279:4;21261;21266:1;21261:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;7576:42;21305:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21295:4;21300:1;21295:7;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;7576:42;21342:68;;;21425:12;21439:1;21442:4;21456;21463:15;21342:147;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21502:17;21522:21;21502:41;;21556:20;21620:9;:14;;;21579:55;;21597:9;:20;;;21579:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;21556:78;;;;21733:19;21782:12;21767:9;:12;;;21755:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;21733:61;;21805:24;21864:12;21844:9;:17;;;21832:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;21805:71;;21907:15;21935:13;;;;;;;;;;;21927:27;;21962:11;21927:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21906:72;;;22013:18;;;;;;;;;;;22005:32;;22045:16;22005:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21989:77;;;;;22101:20;;;;;;;;;;;22093:34;;22135:21;22093:68;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22077:84;;;;;20741:1428;;;;;;;;;;9295:5:::0;9286:6;;:14;;;;;;;;;;;;;;;;;;20702:1467::o;22177:161::-;22259:4;22284:11;:19;22296:6;22284:19;;;;;;;;;;;;;;;;;;;;;;;;;22283:20;:47;;;;;22308:11;:22;22320:9;22308:22;;;;;;;;;;;;;;;;;;;;;;;;;22307:23;22283:47;22276:54;;22177:161;;;;:::o;19388:1115::-;19492:7;19512:19;19534:6;19512:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19551:20;19574:7;19551:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19594:27;19647:4;19637:14;;:6;:14;;;:99;;19733:3;19715:9;:15;;;19696:34;;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;19637:99;;;19690:3;19673:8;:14;;;19654:33;;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;19637:99;19594:142;;19769:27;19809:4;19799:14;;:6;:14;;;:164;;19948:9;:15;;;19903:60;;19925:9;:20;;;19903:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;19799:164;;;19873:8;:14;;;19829:58;;19851:8;:19;;;19829:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;19799:164;19769:194;;20014:19;19995:16;;:38;;;;:::i;:::-;19976:16;:57;;;;20068:29;20122:19;20100;:41;;;;:::i;:::-;20068:73;;20180:1;20156:21;:25;20152:226;;;20248:21;20223:7;:22;20239:4;20223:22;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;20198:7;:22;20214:4;20198:22;;;;;;;;;;;;;;;:71;;;;20316:4;20291:75;;20300:6;20291:75;;;20323:42;20343:21;20323:19;:42::i;:::-;20291:75;;;;;;:::i;:::-;;;;;;;;20152:226;20393:46;20401:19;20422:16;;20393:46;;;;;;;:::i;:::-;;;;;;;;20476:19;20457:16;:38;;;;:::i;:::-;20450:45;;;;;;;19388:1115;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:619::-;4545:6;4553;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4468:619;;;;;:::o;5093:116::-;5163:21;5178:5;5163:21;:::i;:::-;5156:5;5153:32;5143:60;;5199:1;5196;5189:12;5143:60;5093:116;:::o;5215:133::-;5258:5;5296:6;5283:20;5274:29;;5312:30;5336:5;5312:30;:::i;:::-;5215:133;;;;:::o;5354:468::-;5419:6;5427;5476:2;5464:9;5455:7;5451:23;5447:32;5444:119;;;5482:79;;:::i;:::-;5444:119;5602:1;5627:53;5672:7;5663:6;5652:9;5648:22;5627:53;:::i;:::-;5617:63;;5573:117;5729:2;5755:50;5797:7;5788:6;5777:9;5773:22;5755:50;:::i;:::-;5745:60;;5700:115;5354:468;;;;;:::o;5828:86::-;5863:7;5903:4;5896:5;5892:16;5881:27;;5828:86;;;:::o;5920:112::-;6003:22;6019:5;6003:22;:::i;:::-;5998:3;5991:35;5920:112;;:::o;6038:118::-;6075:7;6115:34;6108:5;6104:46;6093:57;;6038:118;;;:::o;6162:::-;6249:24;6267:5;6249:24;:::i;:::-;6244:3;6237:37;6162:118;;:::o;6286:735::-;6499:4;6537:3;6526:9;6522:19;6514:27;;6551:67;6615:1;6604:9;6600:17;6591:6;6551:67;:::i;:::-;6628:68;6692:2;6681:9;6677:18;6668:6;6628:68;:::i;:::-;6706;6770:2;6759:9;6755:18;6746:6;6706:68;:::i;:::-;6784;6848:2;6837:9;6833:18;6824:6;6784:68;:::i;:::-;6862:69;6926:3;6915:9;6911:19;6902:6;6862:69;:::i;:::-;6941:73;7009:3;6998:9;6994:19;6985:6;6941:73;:::i;:::-;6286:735;;;;;;;;;:::o;7027:214::-;7116:4;7154:2;7143:9;7139:18;7131:26;;7167:67;7231:1;7220:9;7216:17;7207:6;7167:67;:::i;:::-;7027:214;;;;:::o;7247:323::-;7303:6;7352:2;7340:9;7331:7;7327:23;7323:32;7320:119;;;7358:79;;:::i;:::-;7320:119;7478:1;7503:50;7545:7;7536:6;7525:9;7521:22;7503:50;:::i;:::-;7493:60;;7449:114;7247:323;;;;:::o;7576:118::-;7663:24;7681:5;7663:24;:::i;:::-;7658:3;7651:37;7576:118;;:::o;7700:222::-;7793:4;7831:2;7820:9;7816:18;7808:26;;7844:71;7912:1;7901:9;7897:17;7888:6;7844:71;:::i;:::-;7700:222;;;;:::o;7928:60::-;7956:3;7977:5;7970:12;;7928:60;;;:::o;7994:142::-;8044:9;8077:53;8095:34;8104:24;8122:5;8104:24;:::i;:::-;8095:34;:::i;:::-;8077:53;:::i;:::-;8064:66;;7994:142;;;:::o;8142:126::-;8192:9;8225:37;8256:5;8225:37;:::i;:::-;8212:50;;8142:126;;;:::o;8274:152::-;8350:9;8383:37;8414:5;8383:37;:::i;:::-;8370:50;;8274:152;;;:::o;8432:183::-;8545:63;8602:5;8545:63;:::i;:::-;8540:3;8533:76;8432:183;;:::o;8621:274::-;8740:4;8778:2;8767:9;8763:18;8755:26;;8791:97;8885:1;8874:9;8870:17;8861:6;8791:97;:::i;:::-;8621:274;;;;:::o;8901:118::-;8972:22;8988:5;8972:22;:::i;:::-;8965:5;8962:33;8952:61;;9009:1;9006;8999:12;8952:61;8901:118;:::o;9025:135::-;9069:5;9107:6;9094:20;9085:29;;9123:31;9148:5;9123:31;:::i;:::-;9025:135;;;;:::o;9166:1601::-;9286:6;9294;9302;9310;9318;9326;9334;9342;9350;9358;9407:3;9395:9;9386:7;9382:23;9378:33;9375:120;;;9414:79;;:::i;:::-;9375:120;9534:1;9559:51;9602:7;9593:6;9582:9;9578:22;9559:51;:::i;:::-;9549:61;;9505:115;9659:2;9685:51;9728:7;9719:6;9708:9;9704:22;9685:51;:::i;:::-;9675:61;;9630:116;9785:2;9811:51;9854:7;9845:6;9834:9;9830:22;9811:51;:::i;:::-;9801:61;;9756:116;9911:2;9937:51;9980:7;9971:6;9960:9;9956:22;9937:51;:::i;:::-;9927:61;;9882:116;10037:3;10064:51;10107:7;10098:6;10087:9;10083:22;10064:51;:::i;:::-;10054:61;;10008:117;10164:3;10191:51;10234:7;10225:6;10214:9;10210:22;10191:51;:::i;:::-;10181:61;;10135:117;10291:3;10318:51;10361:7;10352:6;10341:9;10337:22;10318:51;:::i;:::-;10308:61;;10262:117;10418:3;10445:51;10488:7;10479:6;10468:9;10464:22;10445:51;:::i;:::-;10435:61;;10389:117;10545:3;10572:51;10615:7;10606:6;10595:9;10591:22;10572:51;:::i;:::-;10562:61;;10516:117;10672:3;10699:51;10742:7;10733:6;10722:9;10718:22;10699:51;:::i;:::-;10689:61;;10643:117;9166:1601;;;;;;;;;;;;;:::o;10773:619::-;10850:6;10858;10866;10915:2;10903:9;10894:7;10890:23;10886:32;10883:119;;;10921:79;;:::i;:::-;10883:119;11041:1;11066:53;11111:7;11102:6;11091:9;11087:22;11066:53;:::i;:::-;11056:63;;11012:117;11168:2;11194:53;11239:7;11230:6;11219:9;11215:22;11194:53;:::i;:::-;11184:63;;11139:118;11296:2;11322:53;11367:7;11358:6;11347:9;11343:22;11322:53;:::i;:::-;11312:63;;11267:118;10773:619;;;;;:::o;11398:474::-;11466:6;11474;11523:2;11511:9;11502:7;11498:23;11494:32;11491:119;;;11529:79;;:::i;:::-;11491:119;11649:1;11674:53;11719:7;11710:6;11699:9;11695:22;11674:53;:::i;:::-;11664:63;;11620:117;11776:2;11802:53;11847:7;11838:6;11827:9;11823:22;11802:53;:::i;:::-;11792:63;;11747:118;11398:474;;;;;:::o;11878:468::-;11943:6;11951;12000:2;11988:9;11979:7;11975:23;11971:32;11968:119;;;12006:79;;:::i;:::-;11968:119;12126:1;12151:50;12193:7;12184:6;12173:9;12169:22;12151:50;:::i;:::-;12141:60;;12097:114;12250:2;12276:53;12321:7;12312:6;12301:9;12297:22;12276:53;:::i;:::-;12266:63;;12221:118;11878:468;;;;;:::o;12352:180::-;12400:77;12397:1;12390:88;12497:4;12494:1;12487:15;12521:4;12518:1;12511:15;12538:320;12582:6;12619:1;12613:4;12609:12;12599:22;;12666:1;12660:4;12656:12;12687:18;12677:81;;12743:4;12735:6;12731:17;12721:27;;12677:81;12805:2;12797:6;12794:14;12774:18;12771:38;12768:84;;12824:18;;:::i;:::-;12768:84;12589:269;12538:320;;;:::o;12864:180::-;12912:77;12909:1;12902:88;13009:4;13006:1;12999:15;13033:4;13030:1;13023:15;13050:410;13090:7;13113:20;13131:1;13113:20;:::i;:::-;13108:25;;13147:20;13165:1;13147:20;:::i;:::-;13142:25;;13202:1;13199;13195:9;13224:30;13242:11;13224:30;:::i;:::-;13213:41;;13403:1;13394:7;13390:15;13387:1;13384:22;13364:1;13357:9;13337:83;13314:139;;13433:18;;:::i;:::-;13314:139;13098:362;13050:410;;;;:::o;13466:180::-;13514:77;13511:1;13504:88;13611:4;13608:1;13601:15;13635:4;13632:1;13625:15;13652:185;13692:1;13709:20;13727:1;13709:20;:::i;:::-;13704:25;;13743:20;13761:1;13743:20;:::i;:::-;13738:25;;13782:1;13772:35;;13787:18;;:::i;:::-;13772:35;13829:1;13826;13822:9;13817:14;;13652:185;;;;:::o;13843:234::-;13983:34;13979:1;13971:6;13967:14;13960:58;14052:17;14047:2;14039:6;14035:15;14028:42;13843:234;:::o;14083:366::-;14225:3;14246:67;14310:2;14305:3;14246:67;:::i;:::-;14239:74;;14322:93;14411:3;14322:93;:::i;:::-;14440:2;14435:3;14431:12;14424:19;;14083:366;;;:::o;14455:419::-;14621:4;14659:2;14648:9;14644:18;14636:26;;14708:9;14702:4;14698:20;14694:1;14683:9;14679:17;14672:47;14736:131;14862:4;14736:131;:::i;:::-;14728:139;;14455:419;;;:::o;14880:179::-;15020:31;15016:1;15008:6;15004:14;14997:55;14880:179;:::o;15065:366::-;15207:3;15228:67;15292:2;15287:3;15228:67;:::i;:::-;15221:74;;15304:93;15393:3;15304:93;:::i;:::-;15422:2;15417:3;15413:12;15406:19;;15065:366;;;:::o;15437:419::-;15603:4;15641:2;15630:9;15626:18;15618:26;;15690:9;15684:4;15680:20;15676:1;15665:9;15661:17;15654:47;15718:131;15844:4;15718:131;:::i;:::-;15710:139;;15437:419;;;:::o;15862:194::-;15902:4;15922:20;15940:1;15922:20;:::i;:::-;15917:25;;15956:20;15974:1;15956:20;:::i;:::-;15951:25;;16000:1;15997;15993:9;15985:17;;16024:1;16018:4;16015:11;16012:37;;;16029:18;;:::i;:::-;16012:37;15862:194;;;;:::o;16062:147::-;16163:11;16200:3;16185:18;;16062:147;;;;:::o;16215:114::-;;:::o;16335:398::-;16494:3;16515:83;16596:1;16591:3;16515:83;:::i;:::-;16508:90;;16607:93;16696:3;16607:93;:::i;:::-;16725:1;16720:3;16716:11;16709:18;;16335:398;;;:::o;16739:379::-;16923:3;16945:147;17088:3;16945:147;:::i;:::-;16938:154;;17109:3;17102:10;;16739:379;;;:::o;17124:244::-;17264:34;17260:1;17252:6;17248:14;17241:58;17333:27;17328:2;17320:6;17316:15;17309:52;17124:244;:::o;17374:366::-;17516:3;17537:67;17601:2;17596:3;17537:67;:::i;:::-;17530:74;;17613:93;17702:3;17613:93;:::i;:::-;17731:2;17726:3;17722:12;17715:19;;17374:366;;;:::o;17746:419::-;17912:4;17950:2;17939:9;17935:18;17927:26;;17999:9;17993:4;17989:20;17985:1;17974:9;17970:17;17963:47;18027:131;18153:4;18027:131;:::i;:::-;18019:139;;17746:419;;;:::o;18171:223::-;18311:34;18307:1;18299:6;18295:14;18288:58;18380:6;18375:2;18367:6;18363:15;18356:31;18171:223;:::o;18400:366::-;18542:3;18563:67;18627:2;18622:3;18563:67;:::i;:::-;18556:74;;18639:93;18728:3;18639:93;:::i;:::-;18757:2;18752:3;18748:12;18741:19;;18400:366;;;:::o;18772:419::-;18938:4;18976:2;18965:9;18961:18;18953:26;;19025:9;19019:4;19015:20;19011:1;19000:9;18996:17;18989:47;19053:131;19179:4;19053:131;:::i;:::-;19045:139;;18772:419;;;:::o;19197:188::-;19235:3;19254:18;19270:1;19254:18;:::i;:::-;19249:23;;19286:18;19302:1;19286:18;:::i;:::-;19281:23;;19327:1;19324;19320:9;19313:16;;19350:4;19345:3;19342:13;19339:39;;;19358:18;;:::i;:::-;19339:39;19197:188;;;;:::o;19391:225::-;19531:34;19527:1;19519:6;19515:14;19508:58;19600:8;19595:2;19587:6;19583:15;19576:33;19391:225;:::o;19622:366::-;19764:3;19785:67;19849:2;19844:3;19785:67;:::i;:::-;19778:74;;19861:93;19950:3;19861:93;:::i;:::-;19979:2;19974:3;19970:12;19963:19;;19622:366;;;:::o;19994:419::-;20160:4;20198:2;20187:9;20183:18;20175:26;;20247:9;20241:4;20237:20;20233:1;20222:9;20218:17;20211:47;20275:131;20401:4;20275:131;:::i;:::-;20267:139;;19994:419;;;:::o;20419:182::-;20559:34;20555:1;20547:6;20543:14;20536:58;20419:182;:::o;20607:366::-;20749:3;20770:67;20834:2;20829:3;20770:67;:::i;:::-;20763:74;;20846:93;20935:3;20846:93;:::i;:::-;20964:2;20959:3;20955:12;20948:19;;20607:366;;;:::o;20979:419::-;21145:4;21183:2;21172:9;21168:18;21160:26;;21232:9;21226:4;21222:20;21218:1;21207:9;21203:17;21196:47;21260:131;21386:4;21260:131;:::i;:::-;21252:139;;20979:419;;;:::o;21404:161::-;21544:13;21540:1;21532:6;21528:14;21521:37;21404:161;:::o;21571:366::-;21713:3;21734:67;21798:2;21793:3;21734:67;:::i;:::-;21727:74;;21810:93;21899:3;21810:93;:::i;:::-;21928:2;21923:3;21919:12;21912:19;;21571:366;;;:::o;21943:419::-;22109:4;22147:2;22136:9;22132:18;22124:26;;22196:9;22190:4;22186:20;22182:1;22171:9;22167:17;22160:47;22224:131;22350:4;22224:131;:::i;:::-;22216:139;;21943:419;;;:::o;22368:172::-;22508:24;22504:1;22496:6;22492:14;22485:48;22368:172;:::o;22546:366::-;22688:3;22709:67;22773:2;22768:3;22709:67;:::i;:::-;22702:74;;22785:93;22874:3;22785:93;:::i;:::-;22903:2;22898:3;22894:12;22887:19;;22546:366;;;:::o;22918:419::-;23084:4;23122:2;23111:9;23107:18;23099:26;;23171:9;23165:4;23161:20;23157:1;23146:9;23142:17;23135:47;23199:131;23325:4;23199:131;:::i;:::-;23191:139;;22918:419;;;:::o;23343:227::-;23483:34;23479:1;23471:6;23467:14;23460:58;23552:10;23547:2;23539:6;23535:15;23528:35;23343:227;:::o;23576:366::-;23718:3;23739:67;23803:2;23798:3;23739:67;:::i;:::-;23732:74;;23815:93;23904:3;23815:93;:::i;:::-;23933:2;23928:3;23924:12;23917:19;;23576:366;;;:::o;23948:419::-;24114:4;24152:2;24141:9;24137:18;24129:26;;24201:9;24195:4;24191:20;24187:1;24176:9;24172:17;24165:47;24229:131;24355:4;24229:131;:::i;:::-;24221:139;;23948:419;;;:::o;24373:191::-;24413:3;24432:20;24450:1;24432:20;:::i;:::-;24427:25;;24466:20;24484:1;24466:20;:::i;:::-;24461:25;;24509:1;24506;24502:9;24495:16;;24530:3;24527:1;24524:10;24521:36;;;24537:18;;:::i;:::-;24521:36;24373:191;;;;:::o;24570:169::-;24710:21;24706:1;24698:6;24694:14;24687:45;24570:169;:::o;24745:366::-;24887:3;24908:67;24972:2;24967:3;24908:67;:::i;:::-;24901:74;;24984:93;25073:3;24984:93;:::i;:::-;25102:2;25097:3;25093:12;25086:19;;24745:366;;;:::o;25117:419::-;25283:4;25321:2;25310:9;25306:18;25298:26;;25370:9;25364:4;25360:20;25356:1;25345:9;25341:17;25334:47;25398:131;25524:4;25398:131;:::i;:::-;25390:139;;25117:419;;;:::o;25542:302::-;25682:34;25678:1;25670:6;25666:14;25659:58;25751:34;25746:2;25738:6;25734:15;25727:59;25820:16;25815:2;25807:6;25803:15;25796:41;25542:302;:::o;25850:366::-;25992:3;26013:67;26077:2;26072:3;26013:67;:::i;:::-;26006:74;;26089:93;26178:3;26089:93;:::i;:::-;26207:2;26202:3;26198:12;26191:19;;25850:366;;;:::o;26222:419::-;26388:4;26426:2;26415:9;26411:18;26403:26;;26475:9;26469:4;26465:20;26461:1;26450:9;26446:17;26439:47;26503:131;26629:4;26503:131;:::i;:::-;26495:139;;26222:419;;;:::o;26647:170::-;26787:22;26783:1;26775:6;26771:14;26764:46;26647:170;:::o;26823:366::-;26965:3;26986:67;27050:2;27045:3;26986:67;:::i;:::-;26979:74;;27062:93;27151:3;27062:93;:::i;:::-;27180:2;27175:3;27171:12;27164:19;;26823:366;;;:::o;27195:419::-;27361:4;27399:2;27388:9;27384:18;27376:26;;27448:9;27442:4;27438:20;27434:1;27423:9;27419:17;27412:47;27476:131;27602:4;27476:131;:::i;:::-;27468:139;;27195:419;;;:::o;27620:180::-;27668:77;27665:1;27658:88;27765:4;27762:1;27755:15;27789:4;27786:1;27779:15;27806:180;27854:77;27851:1;27844:88;27951:4;27948:1;27941:15;27975:4;27972:1;27965:15;27992:143;28049:5;28080:6;28074:13;28065:22;;28096:33;28123:5;28096:33;:::i;:::-;27992:143;;;;:::o;28141:351::-;28211:6;28260:2;28248:9;28239:7;28235:23;28231:32;28228:119;;;28266:79;;:::i;:::-;28228:119;28386:1;28411:64;28467:7;28458:6;28447:9;28443:22;28411:64;:::i;:::-;28401:74;;28357:128;28141:351;;;;:::o;28498:85::-;28543:7;28572:5;28561:16;;28498:85;;;:::o;28589:158::-;28647:9;28680:61;28698:42;28707:32;28733:5;28707:32;:::i;:::-;28698:42;:::i;:::-;28680:61;:::i;:::-;28667:74;;28589:158;;;:::o;28753:147::-;28848:45;28887:5;28848:45;:::i;:::-;28843:3;28836:58;28753:147;;:::o;28906:114::-;28973:6;29007:5;29001:12;28991:22;;28906:114;;;:::o;29026:184::-;29125:11;29159:6;29154:3;29147:19;29199:4;29194:3;29190:14;29175:29;;29026:184;;;;:::o;29216:132::-;29283:4;29306:3;29298:11;;29336:4;29331:3;29327:14;29319:22;;29216:132;;;:::o;29354:108::-;29431:24;29449:5;29431:24;:::i;:::-;29426:3;29419:37;29354:108;;:::o;29468:179::-;29537:10;29558:46;29600:3;29592:6;29558:46;:::i;:::-;29636:4;29631:3;29627:14;29613:28;;29468:179;;;;:::o;29653:113::-;29723:4;29755;29750:3;29746:14;29738:22;;29653:113;;;:::o;29802:732::-;29921:3;29950:54;29998:5;29950:54;:::i;:::-;30020:86;30099:6;30094:3;30020:86;:::i;:::-;30013:93;;30130:56;30180:5;30130:56;:::i;:::-;30209:7;30240:1;30225:284;30250:6;30247:1;30244:13;30225:284;;;30326:6;30320:13;30353:63;30412:3;30397:13;30353:63;:::i;:::-;30346:70;;30439:60;30492:6;30439:60;:::i;:::-;30429:70;;30285:224;30272:1;30269;30265:9;30260:14;;30225:284;;;30229:14;30525:3;30518:10;;29926:608;;;29802:732;;;;:::o;30540:831::-;30803:4;30841:3;30830:9;30826:19;30818:27;;30855:71;30923:1;30912:9;30908:17;30899:6;30855:71;:::i;:::-;30936:80;31012:2;31001:9;30997:18;30988:6;30936:80;:::i;:::-;31063:9;31057:4;31053:20;31048:2;31037:9;31033:18;31026:48;31091:108;31194:4;31185:6;31091:108;:::i;:::-;31083:116;;31209:72;31277:2;31266:9;31262:18;31253:6;31209:72;:::i;:::-;31291:73;31359:3;31348:9;31344:19;31335:6;31291:73;:::i;:::-;30540:831;;;;;;;;:::o;31377:227::-;31417:4;31437:20;31455:1;31437:20;:::i;:::-;31432:25;;31471:20;31489:1;31471:20;:::i;:::-;31466:25;;31515:1;31512;31508:9;31500:17;;31539:34;31533:4;31530:44;31527:70;;;31577:18;;:::i;:::-;31527:70;31377:227;;;;:::o;31610:332::-;31731:4;31769:2;31758:9;31754:18;31746:26;;31782:71;31850:1;31839:9;31835:17;31826:6;31782:71;:::i;:::-;31863:72;31931:2;31920:9;31916:18;31907:6;31863:72;:::i;:::-;31610:332;;;;;:::o

Swarm Source

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