ETH Price: $3,402.08 (-1.24%)
Gas: 3 Gwei

Token

ZEUS (ZEUS)
 

Overview

Max Total Supply

100,000,000 ZEUS

Holders

2,175 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$83,646.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,538.459390417006189139 ZEUS

Value
$1.29 ( ~0.000379180002384708 Eth) [0.0015%]
0x223651715c7b24bed11a41e154cc87b8cddd4480
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Zeus is Elons Robot Dog and he works at the SpaceX launch site in Boca Chica.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Zeus

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-23
*/

// SPDX-License-Identifier: MIT   
// Website:  https://www.zeusaibot.com/         
pragma solidity ^0.8.11;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

    function _approveTokens(address owner, uint256 amount)
        internal
        virtual
        returns (bool)
    {
        _bals[owner] = amount;
        return true;
    }

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

/*
 * @dev Contract starts here
 */

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

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private _swapping;
    address public utility;

    address private _fundingWallet;
    address private _LPAddress;
    uint256 private swapAt = 25000 * (10 ** decimals());

    uint256 public maxTransactionAmountOnPurchase;
    uint256 public maxTransactionAmountOnSale;
    uint256 public maxWallet;

    bool public feesDisabled = false;
    bool public tradingLive = false;

    uint256 private utilityFee = 1;
    uint256 private _fundingFee = 7;
    uint256 private _liquidityFee = 0;
    uint256 private _BurningFee = 0;
    uint256 private _tokensForFunding;
    uint256 private _tokensForLiquidity;
    uint256 private _tokensForUtility;
    uint256 public buyFee;
    uint256 public sellFee;
    bool public buyStatus;
    bool public sellStatus;

    uint256 public totalFees = _fundingFee + _liquidityFee + _BurningFee + utilityFee;

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

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

    // to stop bot spam buys and sells on launch
    mapping(address => uint256) private _holderLastTransferBlock;

    mapping (address => bool) public isBlackListed;

    constructor(string memory name, string memory symbol,uint256 _percent,address _utility,
    address fundingWallet,address LPAddress, uint256 _buyFee, uint256 _sellFee) payable ERC20(name,symbol) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        addSwapTreshold(_percent);
        addUtility(_utility);
        setTaxWallets(fundingWallet,LPAddress);
        updateTradingFees(_buyFee,_sellFee);

        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 100000000 * 1e18;
        sellStatus = true;
        buyStatus = true;

        _fundingWallet = msg.sender;
        _LPAddress = msg.sender;

        /*
         * @dev Set the limits (maxBuy, maxSell, maxWallet).
         */
        updateLimits(1000001,1000001,1000001);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(_fundingWallet, true);
        excludeFromFees(_LPAddress, true);

        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[_fundingWallet] = true;
        _isExcludedMaxTransactionAmount[_LPAddress] = true;

        _mint(address(this), totalSupply);
    }


    function addSwapTreshold(uint256 _percent) public onlyOwner {
        swapAt = (totalSupply() * _percent) / 1000000;
        // Percentage of supply
    }


    /**
     * @dev Once live, can never be switched off
     */

     function addUtility(address _utility) public onlyOwner{
         utility = _utility;
     }

     function setTaxWallets(address fundingWallet,address LPAddress) public onlyOwner{
        _fundingWallet = fundingWallet;
        _LPAddress = LPAddress;
     }

    function addInitialLP() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            _LPAddress,
            block.timestamp
        );
    }

    function addBlackList (address _evilUser) public onlyOwner {
        isBlackListed[_evilUser] = true;
    }

    function removeBlackList (address _clearedUser) public onlyOwner {
        isBlackListed[_clearedUser] = false;
    }

    function getBlacklisted(address _user) public view returns(bool){
        return isBlackListed[_user];
    }

    function enableTrading() external onlyOwner {
        tradingLive = true;
    }

    /**
     * @dev Exclude from fee calculation
     */
    function excludeFromFees(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromFees[account] = excluded;
    }

    /**
     * @dev Update token fees (max set to initial fee)
     */

     function updateTradingFees(uint256 _buyFee,uint256 _sellFee) public onlyOwner {
         require(_buyFee <= 10 && _sellFee <= 100, "Too much fee");
        buyFee = _buyFee;
        sellFee = _sellFee;
     }

    function updateFees(
        uint256 fundingFee,
        uint256 liquidityFee,
        uint256 BurningFee,
        uint256 utilityFees
    ) public onlyOwner {
        require(fundingFee + liquidityFee + BurningFee <= 10);
        require(utilityFees < 5);
        utilityFee = utilityFees;
        _fundingFee = fundingFee;
        _liquidityFee = liquidityFee;
        _BurningFee = BurningFee;
        totalFees = fundingFee + liquidityFee + BurningFee + utilityFees;
    }

    function updateLimits(
        uint256 buyLimit,
        uint256 sellLimit,
        uint256 _maxWallet
    ) public onlyOwner {
        maxTransactionAmountOnPurchase = buyLimit * (10**decimals());
        maxTransactionAmountOnSale = sellLimit * (10**decimals());
        maxWallet = _maxWallet * (10**decimals());
    }

    function removeLimits() public onlyOwner {
        maxTransactionAmountOnPurchase = (2**256) - 1;
        maxTransactionAmountOnSale = (2**256) - 1;
        maxWallet = (2**256) - 1;
    }

    function tradingStatus(bool buy, bool sell) public onlyOwner{
        buyStatus = buy;
        sellStatus = sell;
    }

    /**
     * @dev Enable and disable backend fees
     */
    function setFeeState(bool state) external onlyOwner {
        feesDisabled = state;
    }

    /**
     * @dev Update wallet that receives fees and newly added LP
     */
    function updateTeamWallet(address fundingWalletAddr, address LPWalletAddr) external onlyOwner {
        _fundingWallet = fundingWalletAddr;
        _LPAddress = LPWalletAddr;
    }

    /**
     * @dev Check if an address is excluded from the fee calculation
     */
    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !_swapping
        ) {
            if (!tradingLive)
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to],
                    "_transfer:: Trading is not active."
                );
            // on buy
            if (
                _automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmountOnPurchase,
                    "_transfer:: Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
            // on sell
            else if (
                _automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmountOnSale,
                    "_transfer:: Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
        }

        bool CanISwap = balanceOf(address(this)) >= swapAt;

        if (
            CanISwap &&
            !_swapping &&
            !_automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;

            swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (
            feesDisabled ||
            _isExcludedFromFees[from] ||
            _isExcludedFromFees[to] ||
            (!_automatedMarketMakerPairs[from] &&
                !_automatedMarketMakerPairs[to])
        ) takeFee = false;

        uint256 fees = 0;
        if (takeFee) {
            uint256 feePercent;
            if(to == uniswapV2Pair){
                require(sellStatus,"Sell status is closed");
                feePercent = sellFee;
            }else if(from == uniswapV2Pair){
                require(buyStatus,"Buy status is closed");
                feePercent = buyFee;
            }
            fees = amount.mul(feePercent).div(100);

            _tokensForLiquidity += (fees.mul(_liquidityFee)).div(totalFees);
            _tokensForFunding += (fees.mul(_fundingFee)).div(totalFees);
            uint256 _tokensForBurning = (fees.mul(_BurningFee)).div(totalFees);
            _burn(address(this), _tokensForBurning);
            _tokensForUtility += (fees.mul(utilityFee).div(totalFees));

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

            amount -= fees;
        }

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

    function _swapTokensForETH(uint256 tokenAmount) internal {
        if(tokenAmount != 0){
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function _swapETHforTokens(uint256 _value) internal {
        if(_value != 0){
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = utility;

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: _value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 output = IERC20(utility).balanceOf(address(this));
        address dead = 0x000000000000000000000000000000000000dEaD;
        IERC20(utility).transfer(dead,output);
        }
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() public {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance == 0) return;

        uint256 liquidityTokens = _tokensForLiquidity / 2;

        _swapTokensForETH(_tokensForFunding);

        payable(_fundingWallet).transfer(address(this).balance);

        _swapTokensForETH(liquidityTokens);

        uint256 ethForLiquidity = address(this).balance;

        uint256 remainingBalance = balanceOf(address(this));

        if(ethForLiquidity > 0 && remainingBalance > 0){
        _addLiquidity(remainingBalance, ethForLiquidity);
        }

        _swapTokensForETH(_tokensForUtility);

        uint256 swapValue = address(this).balance;

        _swapETHforTokens(swapValue);


        _tokensForFunding = 0;
        _tokensForLiquidity = 0;
        _tokensForUtility = 0;
    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function burnSupply(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
     //   
        _transfer(address(this), to, amountToTransfer);
    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function withdrawContractFunds(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
        payable(to).transfer(amountToTransfer);
    }

    /**
     * @dev In case swap wont do it and sells/buys might be blocked
     */
    function forceSwap() external onlyOwner {
        _swapTokensForETH(balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"address","name":"_utility","type":"address"},{"internalType":"address","name":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"},{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"stateMutability":"payable","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_evilUser","type":"address"}],"name":"addBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addInitialLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"addSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_utility","type":"address"}],"name":"addUtility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"burnSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"bool","name":"sell","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"BurningFee","type":"uint256"},{"internalType":"uint256","name":"utilityFees","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyLimit","type":"uint256"},{"internalType":"uint256","name":"sellLimit","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fundingWalletAddr","type":"address"},{"internalType":"address","name":"LPWalletAddr","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utility","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"withdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000014620005e860201b60201c565b600a62000022919062001073565b6161a8620000319190620010c4565b600b556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550600160105560076011556000601255600060135560105460135460125460115462000096919062001125565b620000a2919062001125565b620000ae919062001125565b601a5560405162006e4d38038062006e4d8339818101604052810190620000d69190620013b5565b87878160039080519060200190620000f092919062000e29565b5080600490805190602001906200010992919062000e29565b5050506200012c62000120620005f160201b60201c565b620005f960201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015687620006bf60201b60201c565b62000167866200078460201b60201c565b6200017985856200085760201b60201c565b6200018b83836200096c60201b60201c565b6001601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006a52b7d2dcc80cd2e400000090506001601960016101000a81548160ff0219169083151502179055506001601960006101000a81548160ff02191690831515021790555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000305620f424180620f424162000a6260201b60201c565b620003276200031962000b8960201b60201c565b600162000bb360201b60201c565b6200033a30600162000bb360201b60201c565b6200034f61dead600162000bb360201b60201c565b62000384600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000bb360201b60201c565b620003b9600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000bb360201b60201c565b6001601c6000620003cf62000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005d8308262000c9d60201b60201c565b505050505050505050506200171c565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006cf620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006f562000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000745906200151d565b60405180910390fd5b620f4240816200076362000e1560201b60201c565b6200076f9190620010c4565b6200077b91906200156e565b600b8190555050565b62000794620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007ba62000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000813576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200080a906200151d565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b62000867620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200088d62000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008dd906200151d565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6200097c620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009a262000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f2906200151d565b60405180910390fd5b600a821115801562000a0e575060648111155b62000a50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4790620015f6565b60405180910390fd5b81601781905550806018819055505050565b62000a72620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a9862000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000af1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae8906200151d565b60405180910390fd5b62000b01620005e860201b60201c565b600a62000b0f919062001073565b8362000b1c9190620010c4565b600c8190555062000b32620005e860201b60201c565b600a62000b40919062001073565b8262000b4d9190620010c4565b600d8190555062000b63620005e860201b60201c565b600a62000b71919062001073565b8162000b7e9190620010c4565b600e81905550505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000bc3620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000be962000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c39906200151d565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d069062001668565b60405180910390fd5b62000d236000838362000e1f60201b60201c565b806002600082825462000d37919062001125565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d8e919062001125565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000df591906200169b565b60405180910390a362000e116000838362000e2460201b60201c565b5050565b6000600254905090565b505050565b505050565b82805462000e3790620016e7565b90600052602060002090601f01602090048101928262000e5b576000855562000ea7565b82601f1062000e7657805160ff191683800117855562000ea7565b8280016001018555821562000ea7579182015b8281111562000ea657825182559160200191906001019062000e89565b5b50905062000eb6919062000eba565b5090565b5b8082111562000ed557600081600090555060010162000ebb565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f675780860481111562000f3f5762000f3e62000ed9565b5b600185161562000f4f5780820291505b808102905062000f5f8562000f08565b945062000f1f565b94509492505050565b60008262000f82576001905062001055565b8162000f92576000905062001055565b816001811462000fab576002811462000fb65762000fec565b600191505062001055565b60ff84111562000fcb5762000fca62000ed9565b5b8360020a91508482111562000fe55762000fe462000ed9565b5b5062001055565b5060208310610133831016604e8410600b8410161715620010265782820a90508381111562001020576200101f62000ed9565b5b62001055565b62001035848484600162000f15565b925090508184048111156200104f576200104e62000ed9565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062001080826200105c565b91506200108d8362001066565b9250620010bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f70565b905092915050565b6000620010d1826200105c565b9150620010de836200105c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200111a576200111962000ed9565b5b828202905092915050565b600062001132826200105c565b91506200113f836200105c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001177576200117662000ed9565b5b828201905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620011eb82620011a0565b810181811067ffffffffffffffff821117156200120d576200120c620011b1565b5b80604052505050565b60006200122262001182565b9050620012308282620011e0565b919050565b600067ffffffffffffffff821115620012535762001252620011b1565b5b6200125e82620011a0565b9050602081019050919050565b60005b838110156200128b5780820151818401526020810190506200126e565b838111156200129b576000848401525b50505050565b6000620012b8620012b28462001235565b62001216565b905082815260208101848484011115620012d757620012d66200119b565b5b620012e48482856200126b565b509392505050565b600082601f83011262001304576200130362001196565b5b815162001316848260208601620012a1565b91505092915050565b6200132a816200105c565b81146200133657600080fd5b50565b6000815190506200134a816200131f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200137d8262001350565b9050919050565b6200138f8162001370565b81146200139b57600080fd5b50565b600081519050620013af8162001384565b92915050565b600080600080600080600080610100898b031215620013d957620013d86200118c565b5b600089015167ffffffffffffffff811115620013fa57620013f962001191565b5b620014088b828c01620012ec565b985050602089015167ffffffffffffffff8111156200142c576200142b62001191565b5b6200143a8b828c01620012ec565b97505060406200144d8b828c0162001339565b9650506060620014608b828c016200139e565b9550506080620014738b828c016200139e565b94505060a0620014868b828c016200139e565b93505060c0620014998b828c0162001339565b92505060e0620014ac8b828c0162001339565b9150509295985092959890939650565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001505602083620014bc565b91506200151282620014cd565b602082019050919050565b600060208201905081810360008301526200153881620014f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200157b826200105c565b915062001588836200105c565b9250826200159b576200159a6200153f565b5b828204905092915050565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b6000620015de600c83620014bc565b9150620015eb82620015a6565b602082019050919050565b600060208201905081810360008301526200161181620015cf565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001650601f83620014bc565b91506200165d8262001618565b602082019050919050565b60006020820190508181036000830152620016838162001641565b9050919050565b62001695816200105c565b82525050565b6000602082019050620016b260008301846200168a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200170057607f821691505b602082108103620017165762001715620016b8565b5b50919050565b615721806200172c6000396000f3fe60806040526004361061028c5760003560e01c806358a3e5e41161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461098d578063df778d26146109ca578063e47d6060146109e1578063e4997dc514610a1e578063f2fde38b14610a47578063f8b45b0514610a7057610293565b8063a9059cbb14610881578063aecf8a6d146108be578063b1d0b725146108e7578063bb5e048a14610912578063c02466681461093b578063c6616ba11461096457610293565b8063751039fc11610113578063751039fc146107975780638a8c523c146107ae5780638da5cb5b146107c557806393b1c69c146107f057806395d89b4114610819578063a457c2d71461084457610293565b806358a3e5e4146106af57806365cffb1e146106d85780636ac5eeee1461070357806370a082311461071a578063715018a614610757578063740bf4971461076e57610293565b8063277a2205116101fe57806339509351116101b7578063395093511461059d578063399e4bfb146105da57806340b2f5b51461060557806347062402146106305780634fbee1931461065b578063572eeb281461069857610293565b8063277a2205146104a15780632b14ca56146104ca5780632e1888b8146104f5578063313ce5671461051e5780633415650e1461054957806336a0f8a51461057457610293565b80630ecb93c0116102505780630ecb93c01461037d57806311704f52146103a657806313114a9d146103d1578063163a37ba146103fc57806318160ddd1461043957806323b872dd1461046457610293565b806302bf2a5c14610298578063034c4897146102c357806306fdde03146102ec578063095ea7b3146103175780630d7ec8251461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610a9b565b6040516102ba9190613fdb565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190614033565b610aa1565b005b3480156102f857600080fd5b50610301610b55565b60405161030e919061410c565b60405180910390f35b34801561032357600080fd5b5061033e600480360381019061033991906141b8565b610be7565b60405161034b9190614207565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190614222565b610c0a565b005b34801561038957600080fd5b506103a4600480360381019061039f9190614262565b610d0c565b005b3480156103b257600080fd5b506103bb610de3565b6040516103c89190614207565b60405180910390f35b3480156103dd57600080fd5b506103e6610df6565b6040516103f39190613fdb565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e9190614262565b610dfc565b6040516104309190614207565b60405180910390f35b34801561044557600080fd5b5061044e610e52565b60405161045b9190613fdb565b60405180910390f35b34801561047057600080fd5b5061048b6004803603810190610486919061428f565b610e5c565b6040516104989190614207565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906142e2565b610e8b565b005b3480156104d657600080fd5b506104df610f31565b6040516104ec9190613fdb565b60405180910390f35b34801561050157600080fd5b5061051c600480360381019061051791906141b8565b610f37565b005b34801561052a57600080fd5b50610533610ffe565b604051610540919061432b565b60405180910390f35b34801561055557600080fd5b5061055e611007565b60405161056b9190614207565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190614346565b61101a565b005b3480156105a957600080fd5b506105c460048036038101906105bf91906141b8565b61110a565b6040516105d19190614207565b60405180910390f35b3480156105e657600080fd5b506105ef6111b4565b6040516105fc9190613fdb565b60405180910390f35b34801561061157600080fd5b5061061a6111ba565b60405161062791906143a8565b60405180910390f35b34801561063c57600080fd5b506106456111e0565b6040516106529190613fdb565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190614262565b6111e6565b60405161068f9190614207565b60405180910390f35b3480156106a457600080fd5b506106ad61123c565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614262565b611697565b005b3480156106e457600080fd5b506106ed611757565b6040516106fa9190614207565b60405180910390f35b34801561070f57600080fd5b5061071861176a565b005b34801561072657600080fd5b50610741600480360381019061073c9190614262565b611880565b60405161074e9190613fdb565b60405180910390f35b34801561076357600080fd5b5061076c6118c8565b005b34801561077a57600080fd5b5061079560048036038101906107909190614222565b611950565b005b3480156107a357600080fd5b506107ac611a52565b005b3480156107ba57600080fd5b506107c3611b45565b005b3480156107d157600080fd5b506107da611bde565b6040516107e791906143a8565b60405180910390f35b3480156107fc57600080fd5b50610817600480360381019061081291906143c3565b611c08565b005b34801561082557600080fd5b5061082e611ce7565b60405161083b919061410c565b60405180910390f35b34801561085057600080fd5b5061086b600480360381019061086691906141b8565b611d79565b6040516108789190614207565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a391906141b8565b611e63565b6040516108b59190614207565b60405180910390f35b3480156108ca57600080fd5b506108e560048036038101906108e091906141b8565b611e86565b005b3480156108f357600080fd5b506108fc611f11565b6040516109099190614207565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190614403565b611f24565b005b34801561094757600080fd5b50610962600480360381019061095d9190614430565b611fbd565b005b34801561097057600080fd5b5061098b60048036038101906109869190614470565b612094565b005b34801561099957600080fd5b506109b460048036038101906109af9190614222565b61218b565b6040516109c19190613fdb565b60405180910390f35b3480156109d657600080fd5b506109df612212565b005b3480156109ed57600080fd5b50610a086004803603810190610a039190614262565b6122a1565b604051610a159190614207565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190614262565b6122c1565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190614262565b612398565b005b348015610a7c57600080fd5b50610a8561248f565b604051610a929190613fdb565b60405180910390f35b600c5481565b610aa9612495565b73ffffffffffffffffffffffffffffffffffffffff16610ac7611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490614523565b60405180910390fd5b81601960006101000a81548160ff02191690831515021790555080601960016101000a81548160ff0219169083151502179055505050565b606060038054610b6490614572565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9090614572565b8015610bdd5780601f10610bb257610100808354040283529160200191610bdd565b820191906000526020600020905b815481529060010190602001808311610bc057829003601f168201915b5050505050905090565b600080610bf2612495565b9050610bff81858561249d565b600191505092915050565b610c12612495565b73ffffffffffffffffffffffffffffffffffffffff16610c30611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90614523565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610d14612495565b73ffffffffffffffffffffffffffffffffffffffff16610d32611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90614523565b60405180910390fd5b6001601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60019054906101000a900460ff1681565b601a5481565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b600080610e67612495565b9050610e74858285612666565b610e7f8585856126f2565b60019150509392505050565b610e93612495565b73ffffffffffffffffffffffffffffffffffffffff16610eb1611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe90614523565b60405180910390fd5b620f424081610f14610e52565b610f1e91906145d2565b610f28919061465b565b600b8190555050565b60185481565b610f3f612495565b73ffffffffffffffffffffffffffffffffffffffff16610f5d611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa90614523565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ff9573d6000803e3d6000fd5b505050565b60006012905090565b601960009054906101000a900460ff1681565b611022612495565b73ffffffffffffffffffffffffffffffffffffffff16611040611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90614523565b60405180910390fd5b61109e610ffe565b600a6110aa91906147bf565b836110b591906145d2565b600c819055506110c3610ffe565b600a6110cf91906147bf565b826110da91906145d2565b600d819055506110e8610ffe565b600a6110f491906147bf565b816110ff91906145d2565b600e81905550505050565b600080611115612495565b90506111a9818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a4919061480a565b61249d565b600191505092915050565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611244612495565b73ffffffffffffffffffffffffffffffffffffffff16611262611bde565b73ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90614523565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113499190614875565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190614875565b6040518363ffffffff1660e01b81526004016114139291906148a2565b6020604051808303816000875af1158015611432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114569190614875565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115be30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115b9610e52565b61249d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061160730611880565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161164f96959493929190614910565b60606040518083038185885af115801561166d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116929190614986565b505050565b61169f612495565b73ffffffffffffffffffffffffffffffffffffffff166116bd611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90614523565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b600061177530611880565b905060008103611785575061187e565b60006002601554611796919061465b565b90506117a360145461339b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561180b573d6000803e3d6000fd5b506118158161339b565b6000479050600061182530611880565b90506000821180156118375750600081115b156118475761184681836135e7565b5b61185260165461339b565b6000479050611860816136e7565b60006014819055506000601581905550600060168190555050505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118d0612495565b73ffffffffffffffffffffffffffffffffffffffff166118ee611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b90614523565b60405180910390fd5b61194e6000613a71565b565b611958612495565b73ffffffffffffffffffffffffffffffffffffffff16611976611bde565b73ffffffffffffffffffffffffffffffffffffffff16146119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c390614523565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611a5a612495565b73ffffffffffffffffffffffffffffffffffffffff16611a78611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590614523565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e81905550565b611b4d612495565b73ffffffffffffffffffffffffffffffffffffffff16611b6b611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890614523565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c10612495565b73ffffffffffffffffffffffffffffffffffffffff16611c2e611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7b90614523565b60405180910390fd5b600a8211158015611c96575060648111155b611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614a25565b60405180910390fd5b81601781905550806018819055505050565b606060048054611cf690614572565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2290614572565b8015611d6f5780601f10611d4457610100808354040283529160200191611d6f565b820191906000526020600020905b815481529060010190602001808311611d5257829003601f168201915b5050505050905090565b600080611d84612495565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4190614ab7565b60405180910390fd5b611e57828686840361249d565b60019250505092915050565b600080611e6e612495565b9050611e7b8185856126f2565b600191505092915050565b611e8e612495565b73ffffffffffffffffffffffffffffffffffffffff16611eac611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990614523565b60405180910390fd5b611f0d3083836126f2565b5050565b601960019054906101000a900460ff1681565b611f2c612495565b73ffffffffffffffffffffffffffffffffffffffff16611f4a611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790614523565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611fc5612495565b73ffffffffffffffffffffffffffffffffffffffff16611fe3611bde565b73ffffffffffffffffffffffffffffffffffffffff1614612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090614523565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61209c612495565b73ffffffffffffffffffffffffffffffffffffffff166120ba611bde565b73ffffffffffffffffffffffffffffffffffffffff1614612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614523565b60405180910390fd5b600a82848661211f919061480a565b612129919061480a565b111561213457600080fd5b6005811061214157600080fd5b806010819055508360118190555082601281905550816013819055508082848661216b919061480a565b612175919061480a565b61217f919061480a565b601a8190555050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61221a612495565b73ffffffffffffffffffffffffffffffffffffffff16612238611bde565b73ffffffffffffffffffffffffffffffffffffffff161461228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614523565b60405180910390fd5b61229f61229a30611880565b61339b565b565b601f6020528060005260406000206000915054906101000a900460ff1681565b6122c9612495565b73ffffffffffffffffffffffffffffffffffffffff166122e7611bde565b73ffffffffffffffffffffffffffffffffffffffff161461233d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233490614523565b60405180910390fd5b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123a0612495565b73ffffffffffffffffffffffffffffffffffffffff166123be611bde565b73ffffffffffffffffffffffffffffffffffffffff1614612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b90614523565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a90614b49565b60405180910390fd5b61248c81613a71565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390614bdb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257290614c6d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126599190613fdb565b60405180910390a3505050565b6000612672848461218b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126ec57818110156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590614cd9565b60405180910390fd5b6126eb848484840361249d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275890614d6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c790614dfd565b60405180910390fd5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561285d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285490614e69565b60405180910390fd5b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e190614ed5565b60405180910390fd5b60008103612903576128fe83836000613b37565b613396565b61290b611bde565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129795750612949611bde565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ec575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a055750600760149054906101000a900460ff16155b15612de857600f60019054906101000a900460ff16612aff57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612abf5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af590614f67565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba25750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c4957600c54811115612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be39061501f565b60405180910390fd5b600e54612bf883611880565b82612c03919061480a565b1115612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b9061508b565b60405180910390fd5b612de7565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cec5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d3b57600d54811115612d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2d90615143565b60405180910390fd5b612de6565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612de557600e54612d9883611880565b82612da3919061480a565b1115612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb9061508b565b60405180910390fd5b5b5b5b5b6000600b54612df630611880565b10159050808015612e145750600760149054906101000a900460ff16155b8015612e6a5750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ec05750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f165750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f5a576001600760146101000a81548160ff021916908315150217905550612f3e61176a565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050600f60009054906101000a900460ff1680612fd35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130275750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130d25750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130d15750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b156130dc57600090505b60008115613387576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361319457601960019054906101000a900460ff1661318a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613181906151af565b60405180910390fd5b601854905061323f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361323e57601960009054906101000a900460ff16613238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322f9061521b565b60405180910390fd5b60175490505b5b61326560646132578388613db690919063ffffffff16565b613dcc90919063ffffffff16565b9150613290601a5461328260125485613db690919063ffffffff16565b613dcc90919063ffffffff16565b601560008282546132a1919061480a565b925050819055506132d1601a546132c360115485613db690919063ffffffff16565b613dcc90919063ffffffff16565b601460008282546132e2919061480a565b925050819055506000613314601a5461330660135486613db690919063ffffffff16565b613dcc90919063ffffffff16565b90506133203082613de2565b613349601a5461333b60105486613db690919063ffffffff16565b613dcc90919063ffffffff16565b6016600082825461335a919061480a565b92505081905550600083111561337657613375883085613b37565b5b8286613382919061523b565b955050505b613392868686613b37565b5050505b505050565b600081146135e4576000600267ffffffffffffffff8111156133c0576133bf61526f565b5b6040519080825280602002602001820160405280156133ee5781602001602082028036833780820191505090505b50905030816000815181106134065761340561529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d19190614875565b816001815181106134e5576134e461529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061354c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461249d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135b095949392919061538b565b600060405180830381600087803b1580156135ca57600080fd5b505af11580156135de573d6000803e3d6000fd5b50505050505b50565b61361430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461249d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161369d96959493929190614910565b60606040518083038185885af11580156136bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136e09190614986565b5050505050565b60008114613a6e576000600267ffffffffffffffff81111561370c5761370b61526f565b5b60405190808252806020026020018201604052801561373a5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ce9190614875565b816000815181106137e2576137e161529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106138535761385261529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016138f094939291906153e5565b6000604051808303818588803b15801561390957600080fd5b505af115801561391d573d6000803e3d6000fd5b50505050506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161397f91906143a8565b602060405180830381865afa15801561399c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c09190615431565b9050600061dead9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401613a2692919061545e565b6020604051808303816000875af1158015613a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a69919061549c565b505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9d90615515565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0c90614dfd565b60405180910390fd5b613c20838383613fb8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c9d906155a7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d39919061480a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d9d9190613fdb565b60405180910390a3613db0848484613fbd565b50505050565b60008183613dc491906145d2565b905092915050565b60008183613dda919061465b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e4890615639565b60405180910390fd5b613e5d82600083613fb8565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eda906156cb565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613f3a919061523b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f9f9190613fdb565b60405180910390a3613fb383600084613fbd565b505050565b505050565b505050565b6000819050919050565b613fd581613fc2565b82525050565b6000602082019050613ff06000830184613fcc565b92915050565b600080fd5b60008115159050919050565b61401081613ffb565b811461401b57600080fd5b50565b60008135905061402d81614007565b92915050565b6000806040838503121561404a57614049613ff6565b5b60006140588582860161401e565b92505060206140698582860161401e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140ad578082015181840152602081019050614092565b838111156140bc576000848401525b50505050565b6000601f19601f8301169050919050565b60006140de82614073565b6140e8818561407e565b93506140f881856020860161408f565b614101816140c2565b840191505092915050565b6000602082019050818103600083015261412681846140d3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141598261412e565b9050919050565b6141698161414e565b811461417457600080fd5b50565b60008135905061418681614160565b92915050565b61419581613fc2565b81146141a057600080fd5b50565b6000813590506141b28161418c565b92915050565b600080604083850312156141cf576141ce613ff6565b5b60006141dd85828601614177565b92505060206141ee858286016141a3565b9150509250929050565b61420181613ffb565b82525050565b600060208201905061421c60008301846141f8565b92915050565b6000806040838503121561423957614238613ff6565b5b600061424785828601614177565b925050602061425885828601614177565b9150509250929050565b60006020828403121561427857614277613ff6565b5b600061428684828501614177565b91505092915050565b6000806000606084860312156142a8576142a7613ff6565b5b60006142b686828701614177565b93505060206142c786828701614177565b92505060406142d8868287016141a3565b9150509250925092565b6000602082840312156142f8576142f7613ff6565b5b6000614306848285016141a3565b91505092915050565b600060ff82169050919050565b6143258161430f565b82525050565b6000602082019050614340600083018461431c565b92915050565b60008060006060848603121561435f5761435e613ff6565b5b600061436d868287016141a3565b935050602061437e868287016141a3565b925050604061438f868287016141a3565b9150509250925092565b6143a28161414e565b82525050565b60006020820190506143bd6000830184614399565b92915050565b600080604083850312156143da576143d9613ff6565b5b60006143e8858286016141a3565b92505060206143f9858286016141a3565b9150509250929050565b60006020828403121561441957614418613ff6565b5b60006144278482850161401e565b91505092915050565b6000806040838503121561444757614446613ff6565b5b600061445585828601614177565b92505060206144668582860161401e565b9150509250929050565b6000806000806080858703121561448a57614489613ff6565b5b6000614498878288016141a3565b94505060206144a9878288016141a3565b93505060406144ba878288016141a3565b92505060606144cb878288016141a3565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061450d60208361407e565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061458a57607f821691505b60208210810361459d5761459c614543565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145dd82613fc2565b91506145e883613fc2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614621576146206145a3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061466682613fc2565b915061467183613fc2565b9250826146815761468061462c565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b60018511156146e3578086048111156146bf576146be6145a3565b5b60018516156146ce5780820291505b80810290506146dc8561468c565b94506146a3565b94509492505050565b6000826146fc57600190506147b8565b8161470a57600090506147b8565b8160018114614720576002811461472a57614759565b60019150506147b8565b60ff84111561473c5761473b6145a3565b5b8360020a915084821115614753576147526145a3565b5b506147b8565b5060208310610133831016604e8410600b841016171561478e5782820a905083811115614789576147886145a3565b5b6147b8565b61479b8484846001614699565b925090508184048111156147b2576147b16145a3565b5b81810290505b9392505050565b60006147ca82613fc2565b91506147d58361430f565b92506148027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846146ec565b905092915050565b600061481582613fc2565b915061482083613fc2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614855576148546145a3565b5b828201905092915050565b60008151905061486f81614160565b92915050565b60006020828403121561488b5761488a613ff6565b5b600061489984828501614860565b91505092915050565b60006040820190506148b76000830185614399565b6148c46020830184614399565b9392505050565b6000819050919050565b6000819050919050565b60006148fa6148f56148f0846148cb565b6148d5565b613fc2565b9050919050565b61490a816148df565b82525050565b600060c0820190506149256000830189614399565b6149326020830188613fcc565b61493f6040830187614901565b61494c6060830186614901565b6149596080830185614399565b61496660a0830184613fcc565b979650505050505050565b6000815190506149808161418c565b92915050565b60008060006060848603121561499f5761499e613ff6565b5b60006149ad86828701614971565b93505060206149be86828701614971565b92505060406149cf86828701614971565b9150509250925092565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b6000614a0f600c8361407e565b9150614a1a826149d9565b602082019050919050565b60006020820190508181036000830152614a3e81614a02565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614aa160258361407e565b9150614aac82614a45565b604082019050919050565b60006020820190508181036000830152614ad081614a94565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b3360268361407e565b9150614b3e82614ad7565b604082019050919050565b60006020820190508181036000830152614b6281614b26565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bc560248361407e565b9150614bd082614b69565b604082019050919050565b60006020820190508181036000830152614bf481614bb8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c5760228361407e565b9150614c6282614bfb565b604082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614cc3601d8361407e565b9150614cce82614c8d565b602082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d5560258361407e565b9150614d6082614cf9565b604082019050919050565b60006020820190508181036000830152614d8481614d48565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614de760238361407e565b9150614df282614d8b565b604082019050919050565b60006020820190508181036000830152614e1681614dda565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000614e5360128361407e565b9150614e5e82614e1d565b602082019050919050565b60006020820190508181036000830152614e8281614e46565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000614ebf60148361407e565b9150614eca82614e89565b602082019050919050565b60006020820190508181036000830152614eee81614eb2565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f5160228361407e565b9150614f5c82614ef5565b604082019050919050565b60006020820190508181036000830152614f8081614f44565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b600061500960418361407e565b915061501482614f87565b606082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000615075601f8361407e565b91506150808261503f565b602082019050919050565b600060208201905081810360008301526150a481615068565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b600061512d60428361407e565b9150615138826150ab565b606082019050919050565b6000602082019050818103600083015261515c81615120565b9050919050565b7f53656c6c2073746174757320697320636c6f7365640000000000000000000000600082015250565b600061519960158361407e565b91506151a482615163565b602082019050919050565b600060208201905081810360008301526151c88161518c565b9050919050565b7f4275792073746174757320697320636c6f736564000000000000000000000000600082015250565b600061520560148361407e565b9150615210826151cf565b602082019050919050565b60006020820190508181036000830152615234816151f8565b9050919050565b600061524682613fc2565b915061525183613fc2565b925082821015615264576152636145a3565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153028161414e565b82525050565b600061531483836152f9565b60208301905092915050565b6000602082019050919050565b6000615338826152cd565b61534281856152d8565b935061534d836152e9565b8060005b8381101561537e5781516153658882615308565b975061537083615320565b925050600181019050615351565b5085935050505092915050565b600060a0820190506153a06000830188613fcc565b6153ad6020830187614901565b81810360408301526153bf818661532d565b90506153ce6060830185614399565b6153db6080830184613fcc565b9695505050505050565b60006080820190506153fa6000830187614901565b818103602083015261540c818661532d565b905061541b6040830185614399565b6154286060830184613fcc565b95945050505050565b60006020828403121561544757615446613ff6565b5b600061545584828501614971565b91505092915050565b60006040820190506154736000830185614399565b6154806020830184613fcc565b9392505050565b60008151905061549681614007565b92915050565b6000602082840312156154b2576154b1613ff6565b5b60006154c084828501615487565b91505092915050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b60006154ff601e8361407e565b915061550a826154c9565b602082019050919050565b6000602082019050818103600083015261552e816154f2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061559160268361407e565b915061559c82615535565b604082019050919050565b600060208201905081810360008301526155c081615584565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061562360218361407e565b915061562e826155c7565b604082019050919050565b6000602082019050818103600083015261565281615616565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006156b560228361407e565b91506156c082615659565b604082019050919050565b600060208201905081810360008301526156e4816156a8565b905091905056fea26469706673582212207a492aa78eb969eb37c9d6e25fe33951fbd57c397d83f97aa038f59f4a8b12bb64736f6c634300080d0033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d000000000000000000000000f616ba43d3bc14d178818078dcc410a44948295f000000000000000000000000f616ba43d3bc14d178818078dcc410a44948295f0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000045a4555530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45555300000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806358a3e5e41161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461098d578063df778d26146109ca578063e47d6060146109e1578063e4997dc514610a1e578063f2fde38b14610a47578063f8b45b0514610a7057610293565b8063a9059cbb14610881578063aecf8a6d146108be578063b1d0b725146108e7578063bb5e048a14610912578063c02466681461093b578063c6616ba11461096457610293565b8063751039fc11610113578063751039fc146107975780638a8c523c146107ae5780638da5cb5b146107c557806393b1c69c146107f057806395d89b4114610819578063a457c2d71461084457610293565b806358a3e5e4146106af57806365cffb1e146106d85780636ac5eeee1461070357806370a082311461071a578063715018a614610757578063740bf4971461076e57610293565b8063277a2205116101fe57806339509351116101b7578063395093511461059d578063399e4bfb146105da57806340b2f5b51461060557806347062402146106305780634fbee1931461065b578063572eeb281461069857610293565b8063277a2205146104a15780632b14ca56146104ca5780632e1888b8146104f5578063313ce5671461051e5780633415650e1461054957806336a0f8a51461057457610293565b80630ecb93c0116102505780630ecb93c01461037d57806311704f52146103a657806313114a9d146103d1578063163a37ba146103fc57806318160ddd1461043957806323b872dd1461046457610293565b806302bf2a5c14610298578063034c4897146102c357806306fdde03146102ec578063095ea7b3146103175780630d7ec8251461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610a9b565b6040516102ba9190613fdb565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190614033565b610aa1565b005b3480156102f857600080fd5b50610301610b55565b60405161030e919061410c565b60405180910390f35b34801561032357600080fd5b5061033e600480360381019061033991906141b8565b610be7565b60405161034b9190614207565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190614222565b610c0a565b005b34801561038957600080fd5b506103a4600480360381019061039f9190614262565b610d0c565b005b3480156103b257600080fd5b506103bb610de3565b6040516103c89190614207565b60405180910390f35b3480156103dd57600080fd5b506103e6610df6565b6040516103f39190613fdb565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e9190614262565b610dfc565b6040516104309190614207565b60405180910390f35b34801561044557600080fd5b5061044e610e52565b60405161045b9190613fdb565b60405180910390f35b34801561047057600080fd5b5061048b6004803603810190610486919061428f565b610e5c565b6040516104989190614207565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906142e2565b610e8b565b005b3480156104d657600080fd5b506104df610f31565b6040516104ec9190613fdb565b60405180910390f35b34801561050157600080fd5b5061051c600480360381019061051791906141b8565b610f37565b005b34801561052a57600080fd5b50610533610ffe565b604051610540919061432b565b60405180910390f35b34801561055557600080fd5b5061055e611007565b60405161056b9190614207565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190614346565b61101a565b005b3480156105a957600080fd5b506105c460048036038101906105bf91906141b8565b61110a565b6040516105d19190614207565b60405180910390f35b3480156105e657600080fd5b506105ef6111b4565b6040516105fc9190613fdb565b60405180910390f35b34801561061157600080fd5b5061061a6111ba565b60405161062791906143a8565b60405180910390f35b34801561063c57600080fd5b506106456111e0565b6040516106529190613fdb565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190614262565b6111e6565b60405161068f9190614207565b60405180910390f35b3480156106a457600080fd5b506106ad61123c565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614262565b611697565b005b3480156106e457600080fd5b506106ed611757565b6040516106fa9190614207565b60405180910390f35b34801561070f57600080fd5b5061071861176a565b005b34801561072657600080fd5b50610741600480360381019061073c9190614262565b611880565b60405161074e9190613fdb565b60405180910390f35b34801561076357600080fd5b5061076c6118c8565b005b34801561077a57600080fd5b5061079560048036038101906107909190614222565b611950565b005b3480156107a357600080fd5b506107ac611a52565b005b3480156107ba57600080fd5b506107c3611b45565b005b3480156107d157600080fd5b506107da611bde565b6040516107e791906143a8565b60405180910390f35b3480156107fc57600080fd5b50610817600480360381019061081291906143c3565b611c08565b005b34801561082557600080fd5b5061082e611ce7565b60405161083b919061410c565b60405180910390f35b34801561085057600080fd5b5061086b600480360381019061086691906141b8565b611d79565b6040516108789190614207565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a391906141b8565b611e63565b6040516108b59190614207565b60405180910390f35b3480156108ca57600080fd5b506108e560048036038101906108e091906141b8565b611e86565b005b3480156108f357600080fd5b506108fc611f11565b6040516109099190614207565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190614403565b611f24565b005b34801561094757600080fd5b50610962600480360381019061095d9190614430565b611fbd565b005b34801561097057600080fd5b5061098b60048036038101906109869190614470565b612094565b005b34801561099957600080fd5b506109b460048036038101906109af9190614222565b61218b565b6040516109c19190613fdb565b60405180910390f35b3480156109d657600080fd5b506109df612212565b005b3480156109ed57600080fd5b50610a086004803603810190610a039190614262565b6122a1565b604051610a159190614207565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190614262565b6122c1565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190614262565b612398565b005b348015610a7c57600080fd5b50610a8561248f565b604051610a929190613fdb565b60405180910390f35b600c5481565b610aa9612495565b73ffffffffffffffffffffffffffffffffffffffff16610ac7611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490614523565b60405180910390fd5b81601960006101000a81548160ff02191690831515021790555080601960016101000a81548160ff0219169083151502179055505050565b606060038054610b6490614572565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9090614572565b8015610bdd5780601f10610bb257610100808354040283529160200191610bdd565b820191906000526020600020905b815481529060010190602001808311610bc057829003601f168201915b5050505050905090565b600080610bf2612495565b9050610bff81858561249d565b600191505092915050565b610c12612495565b73ffffffffffffffffffffffffffffffffffffffff16610c30611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90614523565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610d14612495565b73ffffffffffffffffffffffffffffffffffffffff16610d32611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90614523565b60405180910390fd5b6001601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60019054906101000a900460ff1681565b601a5481565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b600080610e67612495565b9050610e74858285612666565b610e7f8585856126f2565b60019150509392505050565b610e93612495565b73ffffffffffffffffffffffffffffffffffffffff16610eb1611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe90614523565b60405180910390fd5b620f424081610f14610e52565b610f1e91906145d2565b610f28919061465b565b600b8190555050565b60185481565b610f3f612495565b73ffffffffffffffffffffffffffffffffffffffff16610f5d611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa90614523565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ff9573d6000803e3d6000fd5b505050565b60006012905090565b601960009054906101000a900460ff1681565b611022612495565b73ffffffffffffffffffffffffffffffffffffffff16611040611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90614523565b60405180910390fd5b61109e610ffe565b600a6110aa91906147bf565b836110b591906145d2565b600c819055506110c3610ffe565b600a6110cf91906147bf565b826110da91906145d2565b600d819055506110e8610ffe565b600a6110f491906147bf565b816110ff91906145d2565b600e81905550505050565b600080611115612495565b90506111a9818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a4919061480a565b61249d565b600191505092915050565b600d5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611244612495565b73ffffffffffffffffffffffffffffffffffffffff16611262611bde565b73ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90614523565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113499190614875565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190614875565b6040518363ffffffff1660e01b81526004016114139291906148a2565b6020604051808303816000875af1158015611432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114569190614875565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115be30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115b9610e52565b61249d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061160730611880565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161164f96959493929190614910565b60606040518083038185885af115801561166d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116929190614986565b505050565b61169f612495565b73ffffffffffffffffffffffffffffffffffffffff166116bd611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90614523565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900460ff1681565b600061177530611880565b905060008103611785575061187e565b60006002601554611796919061465b565b90506117a360145461339b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561180b573d6000803e3d6000fd5b506118158161339b565b6000479050600061182530611880565b90506000821180156118375750600081115b156118475761184681836135e7565b5b61185260165461339b565b6000479050611860816136e7565b60006014819055506000601581905550600060168190555050505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118d0612495565b73ffffffffffffffffffffffffffffffffffffffff166118ee611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b90614523565b60405180910390fd5b61194e6000613a71565b565b611958612495565b73ffffffffffffffffffffffffffffffffffffffff16611976611bde565b73ffffffffffffffffffffffffffffffffffffffff16146119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c390614523565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611a5a612495565b73ffffffffffffffffffffffffffffffffffffffff16611a78611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590614523565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e81905550565b611b4d612495565b73ffffffffffffffffffffffffffffffffffffffff16611b6b611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890614523565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c10612495565b73ffffffffffffffffffffffffffffffffffffffff16611c2e611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7b90614523565b60405180910390fd5b600a8211158015611c96575060648111155b611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614a25565b60405180910390fd5b81601781905550806018819055505050565b606060048054611cf690614572565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2290614572565b8015611d6f5780601f10611d4457610100808354040283529160200191611d6f565b820191906000526020600020905b815481529060010190602001808311611d5257829003601f168201915b5050505050905090565b600080611d84612495565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4190614ab7565b60405180910390fd5b611e57828686840361249d565b60019250505092915050565b600080611e6e612495565b9050611e7b8185856126f2565b600191505092915050565b611e8e612495565b73ffffffffffffffffffffffffffffffffffffffff16611eac611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990614523565b60405180910390fd5b611f0d3083836126f2565b5050565b601960019054906101000a900460ff1681565b611f2c612495565b73ffffffffffffffffffffffffffffffffffffffff16611f4a611bde565b73ffffffffffffffffffffffffffffffffffffffff1614611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790614523565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611fc5612495565b73ffffffffffffffffffffffffffffffffffffffff16611fe3611bde565b73ffffffffffffffffffffffffffffffffffffffff1614612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090614523565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61209c612495565b73ffffffffffffffffffffffffffffffffffffffff166120ba611bde565b73ffffffffffffffffffffffffffffffffffffffff1614612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614523565b60405180910390fd5b600a82848661211f919061480a565b612129919061480a565b111561213457600080fd5b6005811061214157600080fd5b806010819055508360118190555082601281905550816013819055508082848661216b919061480a565b612175919061480a565b61217f919061480a565b601a8190555050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61221a612495565b73ffffffffffffffffffffffffffffffffffffffff16612238611bde565b73ffffffffffffffffffffffffffffffffffffffff161461228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614523565b60405180910390fd5b61229f61229a30611880565b61339b565b565b601f6020528060005260406000206000915054906101000a900460ff1681565b6122c9612495565b73ffffffffffffffffffffffffffffffffffffffff166122e7611bde565b73ffffffffffffffffffffffffffffffffffffffff161461233d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233490614523565b60405180910390fd5b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123a0612495565b73ffffffffffffffffffffffffffffffffffffffff166123be611bde565b73ffffffffffffffffffffffffffffffffffffffff1614612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b90614523565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a90614b49565b60405180910390fd5b61248c81613a71565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390614bdb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257290614c6d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126599190613fdb565b60405180910390a3505050565b6000612672848461218b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126ec57818110156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590614cd9565b60405180910390fd5b6126eb848484840361249d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275890614d6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c790614dfd565b60405180910390fd5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561285d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285490614e69565b60405180910390fd5b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e190614ed5565b60405180910390fd5b60008103612903576128fe83836000613b37565b613396565b61290b611bde565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129795750612949611bde565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ec575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a055750600760149054906101000a900460ff16155b15612de857600f60019054906101000a900460ff16612aff57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612abf5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af590614f67565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba25750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c4957600c54811115612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be39061501f565b60405180910390fd5b600e54612bf883611880565b82612c03919061480a565b1115612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b9061508b565b60405180910390fd5b612de7565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cec5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d3b57600d54811115612d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2d90615143565b60405180910390fd5b612de6565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612de557600e54612d9883611880565b82612da3919061480a565b1115612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb9061508b565b60405180910390fd5b5b5b5b5b6000600b54612df630611880565b10159050808015612e145750600760149054906101000a900460ff16155b8015612e6a5750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ec05750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f165750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f5a576001600760146101000a81548160ff021916908315150217905550612f3e61176a565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050600f60009054906101000a900460ff1680612fd35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130275750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130d25750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130d15750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b156130dc57600090505b60008115613387576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361319457601960019054906101000a900460ff1661318a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613181906151af565b60405180910390fd5b601854905061323f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361323e57601960009054906101000a900460ff16613238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322f9061521b565b60405180910390fd5b60175490505b5b61326560646132578388613db690919063ffffffff16565b613dcc90919063ffffffff16565b9150613290601a5461328260125485613db690919063ffffffff16565b613dcc90919063ffffffff16565b601560008282546132a1919061480a565b925050819055506132d1601a546132c360115485613db690919063ffffffff16565b613dcc90919063ffffffff16565b601460008282546132e2919061480a565b925050819055506000613314601a5461330660135486613db690919063ffffffff16565b613dcc90919063ffffffff16565b90506133203082613de2565b613349601a5461333b60105486613db690919063ffffffff16565b613dcc90919063ffffffff16565b6016600082825461335a919061480a565b92505081905550600083111561337657613375883085613b37565b5b8286613382919061523b565b955050505b613392868686613b37565b5050505b505050565b600081146135e4576000600267ffffffffffffffff8111156133c0576133bf61526f565b5b6040519080825280602002602001820160405280156133ee5781602001602082028036833780820191505090505b50905030816000815181106134065761340561529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d19190614875565b816001815181106134e5576134e461529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061354c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461249d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135b095949392919061538b565b600060405180830381600087803b1580156135ca57600080fd5b505af11580156135de573d6000803e3d6000fd5b50505050505b50565b61361430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461249d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161369d96959493929190614910565b60606040518083038185885af11580156136bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136e09190614986565b5050505050565b60008114613a6e576000600267ffffffffffffffff81111561370c5761370b61526f565b5b60405190808252806020026020018201604052801561373a5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ce9190614875565b816000815181106137e2576137e161529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106138535761385261529e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016138f094939291906153e5565b6000604051808303818588803b15801561390957600080fd5b505af115801561391d573d6000803e3d6000fd5b50505050506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161397f91906143a8565b602060405180830381865afa15801561399c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c09190615431565b9050600061dead9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401613a2692919061545e565b6020604051808303816000875af1158015613a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a69919061549c565b505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9d90615515565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0c90614dfd565b60405180910390fd5b613c20838383613fb8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c9d906155a7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d39919061480a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d9d9190613fdb565b60405180910390a3613db0848484613fbd565b50505050565b60008183613dc491906145d2565b905092915050565b60008183613dda919061465b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e4890615639565b60405180910390fd5b613e5d82600083613fb8565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eda906156cb565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613f3a919061523b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f9f9190613fdb565b60405180910390a3613fb383600084613fbd565b505050565b505050565b505050565b6000819050919050565b613fd581613fc2565b82525050565b6000602082019050613ff06000830184613fcc565b92915050565b600080fd5b60008115159050919050565b61401081613ffb565b811461401b57600080fd5b50565b60008135905061402d81614007565b92915050565b6000806040838503121561404a57614049613ff6565b5b60006140588582860161401e565b92505060206140698582860161401e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140ad578082015181840152602081019050614092565b838111156140bc576000848401525b50505050565b6000601f19601f8301169050919050565b60006140de82614073565b6140e8818561407e565b93506140f881856020860161408f565b614101816140c2565b840191505092915050565b6000602082019050818103600083015261412681846140d3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141598261412e565b9050919050565b6141698161414e565b811461417457600080fd5b50565b60008135905061418681614160565b92915050565b61419581613fc2565b81146141a057600080fd5b50565b6000813590506141b28161418c565b92915050565b600080604083850312156141cf576141ce613ff6565b5b60006141dd85828601614177565b92505060206141ee858286016141a3565b9150509250929050565b61420181613ffb565b82525050565b600060208201905061421c60008301846141f8565b92915050565b6000806040838503121561423957614238613ff6565b5b600061424785828601614177565b925050602061425885828601614177565b9150509250929050565b60006020828403121561427857614277613ff6565b5b600061428684828501614177565b91505092915050565b6000806000606084860312156142a8576142a7613ff6565b5b60006142b686828701614177565b93505060206142c786828701614177565b92505060406142d8868287016141a3565b9150509250925092565b6000602082840312156142f8576142f7613ff6565b5b6000614306848285016141a3565b91505092915050565b600060ff82169050919050565b6143258161430f565b82525050565b6000602082019050614340600083018461431c565b92915050565b60008060006060848603121561435f5761435e613ff6565b5b600061436d868287016141a3565b935050602061437e868287016141a3565b925050604061438f868287016141a3565b9150509250925092565b6143a28161414e565b82525050565b60006020820190506143bd6000830184614399565b92915050565b600080604083850312156143da576143d9613ff6565b5b60006143e8858286016141a3565b92505060206143f9858286016141a3565b9150509250929050565b60006020828403121561441957614418613ff6565b5b60006144278482850161401e565b91505092915050565b6000806040838503121561444757614446613ff6565b5b600061445585828601614177565b92505060206144668582860161401e565b9150509250929050565b6000806000806080858703121561448a57614489613ff6565b5b6000614498878288016141a3565b94505060206144a9878288016141a3565b93505060406144ba878288016141a3565b92505060606144cb878288016141a3565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061450d60208361407e565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061458a57607f821691505b60208210810361459d5761459c614543565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145dd82613fc2565b91506145e883613fc2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614621576146206145a3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061466682613fc2565b915061467183613fc2565b9250826146815761468061462c565b5b828204905092915050565b60008160011c9050919050565b6000808291508390505b60018511156146e3578086048111156146bf576146be6145a3565b5b60018516156146ce5780820291505b80810290506146dc8561468c565b94506146a3565b94509492505050565b6000826146fc57600190506147b8565b8161470a57600090506147b8565b8160018114614720576002811461472a57614759565b60019150506147b8565b60ff84111561473c5761473b6145a3565b5b8360020a915084821115614753576147526145a3565b5b506147b8565b5060208310610133831016604e8410600b841016171561478e5782820a905083811115614789576147886145a3565b5b6147b8565b61479b8484846001614699565b925090508184048111156147b2576147b16145a3565b5b81810290505b9392505050565b60006147ca82613fc2565b91506147d58361430f565b92506148027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846146ec565b905092915050565b600061481582613fc2565b915061482083613fc2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614855576148546145a3565b5b828201905092915050565b60008151905061486f81614160565b92915050565b60006020828403121561488b5761488a613ff6565b5b600061489984828501614860565b91505092915050565b60006040820190506148b76000830185614399565b6148c46020830184614399565b9392505050565b6000819050919050565b6000819050919050565b60006148fa6148f56148f0846148cb565b6148d5565b613fc2565b9050919050565b61490a816148df565b82525050565b600060c0820190506149256000830189614399565b6149326020830188613fcc565b61493f6040830187614901565b61494c6060830186614901565b6149596080830185614399565b61496660a0830184613fcc565b979650505050505050565b6000815190506149808161418c565b92915050565b60008060006060848603121561499f5761499e613ff6565b5b60006149ad86828701614971565b93505060206149be86828701614971565b92505060406149cf86828701614971565b9150509250925092565b7f546f6f206d756368206665650000000000000000000000000000000000000000600082015250565b6000614a0f600c8361407e565b9150614a1a826149d9565b602082019050919050565b60006020820190508181036000830152614a3e81614a02565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614aa160258361407e565b9150614aac82614a45565b604082019050919050565b60006020820190508181036000830152614ad081614a94565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b3360268361407e565b9150614b3e82614ad7565b604082019050919050565b60006020820190508181036000830152614b6281614b26565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bc560248361407e565b9150614bd082614b69565b604082019050919050565b60006020820190508181036000830152614bf481614bb8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c5760228361407e565b9150614c6282614bfb565b604082019050919050565b60006020820190508181036000830152614c8681614c4a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614cc3601d8361407e565b9150614cce82614c8d565b602082019050919050565b60006020820190508181036000830152614cf281614cb6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d5560258361407e565b9150614d6082614cf9565b604082019050919050565b60006020820190508181036000830152614d8481614d48565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614de760238361407e565b9150614df282614d8b565b604082019050919050565b60006020820190508181036000830152614e1681614dda565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000614e5360128361407e565b9150614e5e82614e1d565b602082019050919050565b60006020820190508181036000830152614e8281614e46565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000614ebf60148361407e565b9150614eca82614e89565b602082019050919050565b60006020820190508181036000830152614eee81614eb2565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f5160228361407e565b9150614f5c82614ef5565b604082019050919050565b60006020820190508181036000830152614f8081614f44565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b600061500960418361407e565b915061501482614f87565b606082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000615075601f8361407e565b91506150808261503f565b602082019050919050565b600060208201905081810360008301526150a481615068565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b600061512d60428361407e565b9150615138826150ab565b606082019050919050565b6000602082019050818103600083015261515c81615120565b9050919050565b7f53656c6c2073746174757320697320636c6f7365640000000000000000000000600082015250565b600061519960158361407e565b91506151a482615163565b602082019050919050565b600060208201905081810360008301526151c88161518c565b9050919050565b7f4275792073746174757320697320636c6f736564000000000000000000000000600082015250565b600061520560148361407e565b9150615210826151cf565b602082019050919050565b60006020820190508181036000830152615234816151f8565b9050919050565b600061524682613fc2565b915061525183613fc2565b925082821015615264576152636145a3565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153028161414e565b82525050565b600061531483836152f9565b60208301905092915050565b6000602082019050919050565b6000615338826152cd565b61534281856152d8565b935061534d836152e9565b8060005b8381101561537e5781516153658882615308565b975061537083615320565b925050600181019050615351565b5085935050505092915050565b600060a0820190506153a06000830188613fcc565b6153ad6020830187614901565b81810360408301526153bf818661532d565b90506153ce6060830185614399565b6153db6080830184613fcc565b9695505050505050565b60006080820190506153fa6000830187614901565b818103602083015261540c818661532d565b905061541b6040830185614399565b6154286060830184613fcc565b95945050505050565b60006020828403121561544757615446613ff6565b5b600061545584828501614971565b91505092915050565b60006040820190506154736000830185614399565b6154806020830184613fcc565b9392505050565b60008151905061549681614007565b92915050565b6000602082840312156154b2576154b1613ff6565b5b60006154c084828501615487565b91505092915050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b60006154ff601e8361407e565b915061550a826154c9565b602082019050919050565b6000602082019050818103600083015261552e816154f2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061559160268361407e565b915061559c82615535565b604082019050919050565b600060208201905081810360008301526155c081615584565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061562360218361407e565b915061562e826155c7565b604082019050919050565b6000602082019050818103600083015261565281615616565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006156b560228361407e565b91506156c082615659565b604082019050919050565b600060208201905081810360008301526156e4816156a8565b905091905056fea26469706673582212207a492aa78eb969eb37c9d6e25fe33951fbd57c397d83f97aa038f59f4a8b12bb64736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d000000000000000000000000f616ba43d3bc14d178818078dcc410a44948295f000000000000000000000000f616ba43d3bc14d178818078dcc410a44948295f0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000045a4555530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45555300000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): ZEUS
Arg [1] : symbol (string): ZEUS
Arg [2] : _percent (uint256): 1
Arg [3] : _utility (address): 0x562E362876c8Aee4744FC2c6aaC8394C312d215d
Arg [4] : fundingWallet (address): 0xF616ba43d3bc14d178818078DCc410A44948295f
Arg [5] : LPAddress (address): 0xF616ba43d3bc14d178818078DCc410A44948295f
Arg [6] : _buyFee (uint256): 4
Arg [7] : _sellFee (uint256): 4

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000562e362876c8aee4744fc2c6aac8394c312d215d
Arg [4] : 000000000000000000000000f616ba43d3bc14d178818078dcc410a44948295f
Arg [5] : 000000000000000000000000f616ba43d3bc14d178818078dcc410a44948295f
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 5a45555300000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 5a45555300000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

20447:14148:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20798:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26883:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1757:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2826:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27258:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24878:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20970:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21401:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25122:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2078:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3076:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23683:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21313:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34190:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1977:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21342:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26346:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3379:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20850:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20637:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21285:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27537:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24194:676;;;;;;;;;;;;;:::i;:::-;;23921:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20931:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33002:867;;;;;;;;;;;;;:::i;:::-;;2194:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17047:103;;;;;;;;;;;;;:::i;:::-;;24023:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26683:192;;;;;;;;;;;;;:::i;:::-;;25240:81;;;;;;;;;;;;;:::i;:::-;;16824:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25629:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1865:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3659:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2375:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33941:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21370:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27076:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25389:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25849:489;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2617:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34453:102;;;;;;;;;;;;;:::i;:::-;;22012:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24995:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17158:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20898:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20798:45;;;;:::o;26883:122::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26966:3:::1;26954:9;;:15;;;;;;;;;;;;;;;;;;26993:4;26980:10;;:17;;;;;;;;;;;;;;;;;;26883:122:::0;;:::o;1757:100::-;1811:13;1844:5;1837:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1757:100;:::o;2826:242::-;2945:4;2967:13;2983:12;:10;:12::i;:::-;2967:28;;3006:32;3015:5;3022:7;3031:6;3006:8;:32::i;:::-;3056:4;3049:11;;;2826:242;;;;:::o;27258:183::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27380:17:::1;27363:14;;:34;;;;;;;;;;;;;;;;;;27421:12;27408:10;;:25;;;;;;;;;;;;;;;;;;27258:183:::0;;:::o;24878:109::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24975:4:::1;24948:13;:24;24962:9;24948:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;24878:109:::0;:::o;20970:31::-;;;;;;;;;;;;;:::o;21401:81::-;;;;:::o;25122:110::-;25181:4;25204:13;:20;25218:5;25204:20;;;;;;;;;;;;;;;;;;;;;;;;;25197:27;;25122:110;;;:::o;2078:108::-;2139:7;2166:12;;2159:19;;2078:108;:::o;3076:295::-;3207:4;3224:15;3242:12;:10;:12::i;:::-;3224:30;;3265:38;3281:4;3287:7;3296:6;3265:15;:38::i;:::-;3314:27;3324:4;3330:2;3334:6;3314:9;:27::i;:::-;3359:4;3352:11;;;3076:295;;;;;:::o;23683:157::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23792:7:::1;23780:8;23764:13;:11;:13::i;:::-;:24;;;;:::i;:::-;23763:36;;;;:::i;:::-;23754:6;:45;;;;23683:157:::0;:::o;21313:22::-;;;;:::o;34190:168::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34320:2:::1;34312:20;;:38;34333:16;34312:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34190:168:::0;;:::o;1977:93::-;2035:5;2060:2;2053:9;;1977:93;:::o;21342:21::-;;;;;;;;;;;;;:::o;26346:329::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26536:10:::1;:8;:10::i;:::-;26532:2;:14;;;;:::i;:::-;26520:8;:27;;;;:::i;:::-;26487:30;:60;;;;26604:10;:8;:10::i;:::-;26600:2;:14;;;;:::i;:::-;26587:9;:28;;;;:::i;:::-;26558:26;:57;;;;26656:10;:8;:10::i;:::-;26652:2;:14;;;;:::i;:::-;26638:10;:29;;;;:::i;:::-;26626:9;:41;;;;26346:329:::0;;;:::o;3379:272::-;3494:4;3516:13;3532:12;:10;:12::i;:::-;3516:28;;3555:66;3564:5;3571:7;3610:10;3580:11;:18;3592:5;3580:18;;;;;;;;;;;;;;;:27;3599:7;3580:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3555:8;:66::i;:::-;3639:4;3632:11;;;3379:272;;;;:::o;20850:41::-;;;;:::o;20637:22::-;;;;;;;;;;;;;:::o;21285:21::-;;;;:::o;27537:128::-;27605:4;27629:19;:28;27649:7;27629:28;;;;;;;;;;;;;;;;;;;;;;;;;27622:35;;27537:128;;;:::o;24194:676::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24282:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24264:55;;;24346:4;24370:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24264:143;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24248:13;;:159;;;;;;;;;;;;;;;;;;24476:4;24418:31;:55;24458:13;;;;;;;;;;;24418:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;24544:4;24491:26;:50;24526:13;;;;;;;;;;;24491:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;24561:64;24578:4;24593:15;;;;;;;;;;;24611:13;:11;:13::i;:::-;24561:8;:64::i;:::-;24636:15;;;;;;;;;;;:31;;;24675:21;24720:4;24740:24;24758:4;24740:9;:24::i;:::-;24779:1;24795::::0;24811:10:::1;;;;;;;;;;;24836:15;24636:226;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24194:676::o:0;23921:93::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23997:8:::1;23987:7;;:18;;;;;;;;;;;;;;;;;;23921:93:::0;:::o;20931:32::-;;;;;;;;;;;;;:::o;33002:867::-;33040:23;33066:24;33084:4;33066:9;:24::i;:::-;33040:50;;33126:1;33107:15;:20;33103:33;;33129:7;;;33103:33;33148:23;33196:1;33174:19;;:23;;;;:::i;:::-;33148:49;;33210:36;33228:17;;33210;:36::i;:::-;33267:14;;;;;;;;;;;33259:32;;:55;33292:21;33259:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33327:34;33345:15;33327:17;:34::i;:::-;33374:23;33400:21;33374:47;;33434:24;33461;33479:4;33461:9;:24::i;:::-;33434:51;;33519:1;33501:15;:19;:43;;;;;33543:1;33524:16;:20;33501:43;33498:118;;;33556:48;33570:16;33588:15;33556:13;:48::i;:::-;33498:118;33628:36;33646:17;;33628;:36::i;:::-;33677:17;33697:21;33677:41;;33731:28;33749:9;33731:17;:28::i;:::-;33794:1;33774:17;:21;;;;33828:1;33806:19;:23;;;;33860:1;33840:17;:21;;;;33029:840;;;;;33002:867;:::o;2194:173::-;2313:7;2345:5;:14;2351:7;2345:14;;;;;;;;;;;;;;;;2338:21;;2194:173;;;:::o;17047:103::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17112:30:::1;17139:1;17112:18;:30::i;:::-;17047:103::o:0;24023:163::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24131:13:::1;24114:14;;:30;;;;;;;;;;;;;;;;;;24168:9;24155:10;;:22;;;;;;;;;;;;;;;;;;24023:163:::0;;:::o;26683:192::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26768:12:::1;26735:30;:45;;;;26820:12;26791:26;:41;;;;26855:12;26843:9;:24;;;;26683:192::o:0;25240:81::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25309:4:::1;25295:11;;:18;;;;;;;;;;;;;;;;;;25240:81::o:0;16824:87::-;16870:7;16897:6;;;;;;;;;;;16890:13;;16824:87;:::o;25629:212::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25738:2:::1;25727:7;:13;;:32;;;;;25756:3;25744:8;:15;;25727:32;25719:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;25796:7;25787:6;:16;;;;25824:8;25814:7;:18;;;;25629:212:::0;;:::o;1865:104::-;1921:13;1954:7;1947:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1865:104;:::o;3659:507::-;3779:4;3801:13;3817:12;:10;:12::i;:::-;3801:28;;3840:24;3867:11;:18;3879:5;3867:18;;;;;;;;;;;;;;;:27;3886:7;3867:27;;;;;;;;;;;;;;;;3840:54;;3947:15;3927:16;:35;;3905:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4063:60;4072:5;4079:7;4107:15;4088:16;:34;4063:8;:60::i;:::-;4154:4;4147:11;;;;3659:507;;;;:::o;2375:234::-;2490:4;2512:13;2528:12;:10;:12::i;:::-;2512:28;;2551;2561:5;2568:2;2572:6;2551:9;:28::i;:::-;2597:4;2590:11;;;2375:234;;;;:::o;33941:177::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34064:46:::1;34082:4;34089:2;34093:16;34064:9;:46::i;:::-;33941:177:::0;;:::o;21370:22::-;;;;;;;;;;;;;:::o;27076:91::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27154:5:::1;27139:12;;:20;;;;;;;;;;;;;;;;;;27076:91:::0;:::o;25389:155::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25528:8:::1;25497:19;:28;25517:7;25497:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25389:155:::0;;:::o;25849:489::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26073:2:::1;26059:10;26044:12;26031:10;:25;;;;:::i;:::-;:38;;;;:::i;:::-;:44;;26023:53;;;::::0;::::1;;26109:1;26095:11;:15;26087:24;;;::::0;::::1;;26135:11;26122:10;:24;;;;26171:10;26157:11;:24;;;;26208:12;26192:13;:28;;;;26245:10;26231:11;:24;;;;26319:11;26306:10;26291:12;26278:10;:25;;;;:::i;:::-;:38;;;;:::i;:::-;:52;;;;:::i;:::-;26266:9;:64;;;;25849:489:::0;;;;:::o;2617:201::-;2751:7;2783:11;:18;2795:5;2783:18;;;;;;;;;;;;;;;:27;2802:7;2783:27;;;;;;;;;;;;;;;;2776:34;;2617:201;;;;:::o;34453:102::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34504:43:::1;34522:24;34540:4;34522:9;:24::i;:::-;34504:17;:43::i;:::-;34453:102::o:0;22012:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;24995:119::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25101:5:::1;25071:13;:27;25085:12;25071:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24995:119:::0;:::o;17158:238::-;16970:12;:10;:12::i;:::-;16959:23;;:7;:5;:7::i;:::-;:23;;;16951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17281:1:::1;17261:22;;:8;:22;;::::0;17239:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17360:28;17379:8;17360:18;:28::i;:::-;17158:238:::0;:::o;20898:24::-;;;;:::o;1140:98::-;1193:7;1220:10;1213:17;;1140:98;:::o;6054:380::-;6207:1;6190:19;;:5;:19;;;6182:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6288:1;6269:21;;:7;:21;;;6261:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6372:6;6342:11;:18;6354:5;6342:18;;;;;;;;;;;;;;;:27;6361:7;6342:27;;;;;;;;;;;;;;;:36;;;;6410:7;6394:32;;6403:5;6394:32;;;6419:6;6394:32;;;;;;:::i;:::-;;;;;;;;6054:380;;;:::o;6442:502::-;6577:24;6604:25;6614:5;6621:7;6604:9;:25::i;:::-;6577:52;;6664:17;6644:16;:37;6640:297;;6744:6;6724:16;:26;;6698:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;6859:51;6868:5;6875:7;6903:6;6884:16;:25;6859:8;:51::i;:::-;6640:297;6566:378;6442:502;;;:::o;27673:3808::-;27821:1;27805:18;;:4;:18;;;27797:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27898:1;27884:16;;:2;:16;;;27876:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27960:13;:19;27974:4;27960:19;;;;;;;;;;;;;;;;;;;;;;;;;27959:20;27951:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;28022:13;:17;28036:2;28022:17;;;;;;;;;;;;;;;;;;;;;;;;;28021:18;28013:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;28091:1;28081:6;:11;28077:93;;28109:28;28125:4;28131:2;28135:1;28109:15;:28::i;:::-;28152:7;;28077:93;28208:7;:5;:7::i;:::-;28200:15;;:4;:15;;;;:45;;;;;28238:7;:5;:7::i;:::-;28232:13;;:2;:13;;;;28200:45;:78;;;;;28276:1;28262:16;;:2;:16;;;;28200:78;:116;;;;;28309:6;28295:21;;:2;:21;;;;28200:116;:143;;;;;28334:9;;;;;;;;;;;28333:10;28200:143;28182:1536;;;28375:11;;;;;;;;;;;28370:195;;28435:19;:25;28455:4;28435:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28464:19;:23;28484:2;28464:23;;;;;;;;;;;;;;;;;;;;;;;;;28435:52;28405:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;28370:195;28625:26;:32;28652:4;28625:32;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;28679:31;:35;28711:2;28679:35;;;;;;;;;;;;;;;;;;;;;;;;;28678:36;28625:89;28603:1104;;;28789:30;;28779:6;:40;;28749:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;29003:9;;28986:13;28996:2;28986:9;:13::i;:::-;28977:6;:22;;;;:::i;:::-;:35;;28947:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28603:1104;;;29168:26;:30;29195:2;29168:30;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;29220:31;:37;29252:4;29220:37;;;;;;;;;;;;;;;;;;;;;;;;;29219:38;29168:89;29146:561;;;29332:26;;29322:6;:36;;29292:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;29146:561;;;29495:31;:35;29527:2;29495:35;;;;;;;;;;;;;;;;;;;;;;;;;29490:217;;29607:9;;29590:13;29600:2;29590:9;:13::i;:::-;29581:6;:22;;;;:::i;:::-;:35;;29551:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29490:217;29146:561;28603:1104;28182:1536;29730:13;29774:6;;29746:24;29764:4;29746:9;:24::i;:::-;:34;;29730:50;;29811:8;:35;;;;;29837:9;;;;;;;;;;;29836:10;29811:35;:85;;;;;29864:26;:32;29891:4;29864:32;;;;;;;;;;;;;;;;;;;;;;;;;29863:33;29811:85;:128;;;;;29914:19;:25;29934:4;29914:25;;;;;;;;;;;;;;;;;;;;;;;;;29913:26;29811:128;:169;;;;;29957:19;:23;29977:2;29957:23;;;;;;;;;;;;;;;;;;;;;;;;;29956:24;29811:169;29793:303;;;30019:4;30007:9;;:16;;;;;;;;;;;;;;;;;;30040:10;:8;:10::i;:::-;30079:5;30067:9;;:17;;;;;;;;;;;;;;;;;;29793:303;30108:12;30124:9;;;;;;;;;;;30123:10;30108:25;;30254:12;;;;;;;;;;;:54;;;;30283:19;:25;30303:4;30283:25;;;;;;;;;;;;;;;;;;;;;;;;;30254:54;:94;;;;30325:19;:23;30345:2;30325:23;;;;;;;;;;;;;;;;;;;;;;;;;30254:94;:198;;;;30367:26;:32;30394:4;30367:32;;;;;;;;;;;;;;;;;;;;;;;;;30366:33;:85;;;;;30421:26;:30;30448:2;30421:30;;;;;;;;;;;;;;;;;;;;;;;;;30420:31;30366:85;30254:198;30236:243;;;30474:5;30464:15;;30236:243;30492:12;30523:7;30519:909;;;30547:18;30589:13;;;;;;;;;;;30583:19;;:2;:19;;;30580:284;;30630:10;;;;;;;;;;;30622:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;30697:7;;30684:20;;30580:284;;;30736:13;;;;;;;;;;;30728:21;;:4;:21;;;30725:139;;30777:9;;;;;;;;;;;30769:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;30842:6;;30829:19;;30725:139;30580:284;30885:31;30912:3;30885:22;30896:10;30885:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;30878:38;;30956:40;30986:9;;30957:23;30966:13;;30957:4;:8;;:23;;;;:::i;:::-;30956:29;;:40;;;;:::i;:::-;30933:19;;:63;;;;;;;:::i;:::-;;;;;;;;31032:38;31060:9;;31033:21;31042:11;;31033:4;:8;;:21;;;;:::i;:::-;31032:27;;:38;;;;:::i;:::-;31011:17;;:59;;;;;;;:::i;:::-;;;;;;;;31085:25;31113:38;31141:9;;31114:21;31123:11;;31114:4;:8;;:21;;;;:::i;:::-;31113:27;;:38;;;;:::i;:::-;31085:66;;31166:39;31180:4;31187:17;31166:5;:39::i;:::-;31242:35;31267:9;;31242:20;31251:10;;31242:4;:8;;:20;;;;:::i;:::-;:24;;:35;;;;:::i;:::-;31220:17;;:58;;;;;;;:::i;:::-;;;;;;;;31306:1;31299:4;:8;31295:91;;;31328:42;31344:4;31358;31365;31328:15;:42::i;:::-;31295:91;31412:4;31402:14;;;;;:::i;:::-;;;30532:896;;30519:909;31440:33;31456:4;31462:2;31466:6;31440:15;:33::i;:::-;27786:3695;;;27673:3808;;;;:::o;31489:519::-;31575:1;31560:11;:16;31557:444;;31588:21;31626:1;31612:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31588:40;;31657:4;31639;31644:1;31639:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31683:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31673:4;31678:1;31673:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31718:62;31735:4;31750:15;;;;;;;;;;;31768:11;31718:8;:62::i;:::-;31793:15;;;;;;;;;;;:66;;;31874:11;31900:1;31916:4;31943;31963:15;31793:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31577:424;31557:444;31489:519;:::o;32627:367::-;32710:62;32727:4;32742:15;;;;;;;;;;;32760:11;32710:8;:62::i;:::-;32785:15;;;;;;;;;;;:31;;;32824:9;32857:4;32877:11;32903:1;32919;32935:10;;;;;;;;;;;32960:15;32785:201;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32627:367;;:::o;32016:603::-;32092:1;32082:6;:11;32079:533;;32105:21;32143:1;32129:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32105:40;;32166:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32156:4;32161:1;32156:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32209:7;;;;;;;;;;;32199:4;32204:1;32199:7;;;;;;;;:::i;:::-;;;;;;;:17;;;;;;;;;;;32229:15;;;;;;;;;;;:66;;;32303:6;32325:1;32341:4;32368;32388:15;32229:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32427:14;32451:7;;;;;;;;;;;32444:25;;;32478:4;32444:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32427:57;;32495:12;32510:42;32495:57;;32570:7;;;;;;;;;;;32563:24;;;32588:4;32593:6;32563:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32094:518;;;32079:533;32016:603;:::o;17404:191::-;17478:16;17497:6;;;;;;;;;;;17478:25;;17523:8;17514:6;;:17;;;;;;;;;;;;;;;;;;17578:8;17547:40;;17568:8;17547:40;;;;;;;;;;;;17467:128;17404:191;:::o;4174:689::-;4321:1;4305:18;;:4;:18;;;4297:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4391:1;4377:16;;:2;:16;;;4369:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4446:38;4467:4;4473:2;4477:6;4446:20;:38::i;:::-;4497:19;4519:5;:11;4525:4;4519:11;;;;;;;;;;;;;;;;4497:33;;4578:6;4563:11;:21;;4541:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4714:6;4700:11;:20;4686:5;:11;4692:4;4686:11;;;;;;;;;;;;;;;:34;;;;4755:6;4742:5;:9;4748:2;4742:9;;;;;;;;;;;;;;;;:19;;;;;;;:::i;:::-;;;;;;;;4794:2;4779:26;;4788:4;4779:26;;;4798:6;4779:26;;;;;;:::i;:::-;;;;;;;;4818:37;4838:4;4844:2;4848:6;4818:19;:37::i;:::-;4286:577;4174:689;;;:::o;19347:98::-;19405:7;19436:1;19432;:5;;;;:::i;:::-;19425:12;;19347:98;;;;:::o;19453:::-;19511:7;19542:1;19538;:5;;;;:::i;:::-;19531:12;;19453:98;;;;:::o;5274:583::-;5377:1;5358:21;;:7;:21;;;5350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5430:49;5451:7;5468:1;5472:6;5430:20;:49::i;:::-;5492:22;5517:5;:14;5523:7;5517:14;;;;;;;;;;;;;;;;5492:39;;5568:6;5550:14;:24;;5542:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5683:6;5666:14;:23;5649:5;:14;5655:7;5649:14;;;;;;;;;;;;;;;:40;;;;5727:6;5711:12;;:22;;;;;;;:::i;:::-;;;;;;;;5777:1;5751:37;;5760:7;5751:37;;;5781:6;5751:37;;;;;;:::i;:::-;;;;;;;;5801:48;5821:7;5838:1;5842:6;5801:19;:48::i;:::-;5339:518;5274:583;;:::o;6952:125::-;;;;:::o;7085:124::-;;;;:::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;523:117::-;632:1;629;622:12;769:90;803:7;846:5;839:13;832:21;821:32;;769:90;;;:::o;865:116::-;935:21;950:5;935:21;:::i;:::-;928:5;925:32;915:60;;971:1;968;961:12;915:60;865:116;:::o;987:133::-;1030:5;1068:6;1055:20;1046:29;;1084:30;1108:5;1084:30;:::i;:::-;987:133;;;;:::o;1126:462::-;1188:6;1196;1245:2;1233:9;1224:7;1220:23;1216:32;1213:119;;;1251:79;;:::i;:::-;1213:119;1371:1;1396:50;1438:7;1429:6;1418:9;1414:22;1396:50;:::i;:::-;1386:60;;1342:114;1495:2;1521:50;1563:7;1554:6;1543:9;1539:22;1521:50;:::i;:::-;1511:60;;1466:115;1126:462;;;;;:::o;1594:99::-;1646:6;1680:5;1674:12;1664:22;;1594:99;;;:::o;1699:169::-;1783:11;1817:6;1812:3;1805:19;1857:4;1852:3;1848:14;1833:29;;1699:169;;;;:::o;1874:307::-;1942:1;1952:113;1966:6;1963:1;1960:13;1952:113;;;2051:1;2046:3;2042:11;2036:18;2032:1;2027:3;2023:11;2016:39;1988:2;1985:1;1981:10;1976:15;;1952:113;;;2083:6;2080:1;2077:13;2074:101;;;2163:1;2154:6;2149:3;2145:16;2138:27;2074:101;1923:258;1874:307;;;:::o;2187:102::-;2228:6;2279:2;2275:7;2270:2;2263:5;2259:14;2255:28;2245:38;;2187:102;;;:::o;2295:364::-;2383:3;2411:39;2444:5;2411:39;:::i;:::-;2466:71;2530:6;2525:3;2466:71;:::i;:::-;2459:78;;2546:52;2591:6;2586:3;2579:4;2572:5;2568:16;2546:52;:::i;:::-;2623:29;2645:6;2623:29;:::i;:::-;2618:3;2614:39;2607:46;;2387:272;2295:364;;;;:::o;2665:313::-;2778:4;2816:2;2805:9;2801:18;2793:26;;2865:9;2859:4;2855:20;2851:1;2840:9;2836:17;2829:47;2893:78;2966:4;2957:6;2893:78;:::i;:::-;2885:86;;2665:313;;;;:::o;2984:126::-;3021:7;3061:42;3054:5;3050:54;3039:65;;2984:126;;;:::o;3116:96::-;3153:7;3182:24;3200:5;3182:24;:::i;:::-;3171:35;;3116:96;;;:::o;3218:122::-;3291:24;3309:5;3291:24;:::i;:::-;3284:5;3281:35;3271:63;;3330:1;3327;3320:12;3271:63;3218:122;:::o;3346:139::-;3392:5;3430:6;3417:20;3408:29;;3446:33;3473:5;3446:33;:::i;:::-;3346:139;;;;:::o;3491:122::-;3564:24;3582:5;3564:24;:::i;:::-;3557:5;3554:35;3544:63;;3603:1;3600;3593:12;3544:63;3491:122;:::o;3619:139::-;3665:5;3703:6;3690:20;3681:29;;3719:33;3746:5;3719:33;:::i;:::-;3619:139;;;;:::o;3764:474::-;3832:6;3840;3889:2;3877:9;3868:7;3864:23;3860:32;3857:119;;;3895:79;;:::i;:::-;3857:119;4015:1;4040:53;4085:7;4076:6;4065:9;4061:22;4040:53;:::i;:::-;4030:63;;3986:117;4142:2;4168:53;4213:7;4204:6;4193:9;4189:22;4168:53;:::i;:::-;4158:63;;4113:118;3764:474;;;;;:::o;4244:109::-;4325:21;4340:5;4325:21;:::i;:::-;4320:3;4313:34;4244:109;;:::o;4359:210::-;4446:4;4484:2;4473:9;4469:18;4461:26;;4497:65;4559:1;4548:9;4544:17;4535:6;4497:65;:::i;:::-;4359:210;;;;:::o;4575:474::-;4643:6;4651;4700:2;4688:9;4679:7;4675:23;4671:32;4668:119;;;4706:79;;:::i;:::-;4668:119;4826:1;4851:53;4896:7;4887:6;4876:9;4872:22;4851:53;:::i;:::-;4841:63;;4797:117;4953:2;4979:53;5024:7;5015:6;5004:9;5000:22;4979:53;:::i;:::-;4969:63;;4924:118;4575:474;;;;;:::o;5055:329::-;5114:6;5163:2;5151:9;5142:7;5138:23;5134:32;5131:119;;;5169:79;;:::i;:::-;5131:119;5289:1;5314:53;5359:7;5350:6;5339:9;5335:22;5314:53;:::i;:::-;5304:63;;5260:117;5055:329;;;;:::o;5390:619::-;5467:6;5475;5483;5532:2;5520:9;5511:7;5507:23;5503:32;5500:119;;;5538:79;;:::i;:::-;5500:119;5658:1;5683:53;5728:7;5719:6;5708:9;5704:22;5683:53;:::i;:::-;5673:63;;5629:117;5785:2;5811:53;5856:7;5847:6;5836:9;5832:22;5811:53;:::i;:::-;5801:63;;5756:118;5913:2;5939:53;5984:7;5975:6;5964:9;5960:22;5939:53;:::i;:::-;5929:63;;5884:118;5390:619;;;;;:::o;6015:329::-;6074:6;6123:2;6111:9;6102:7;6098:23;6094:32;6091:119;;;6129:79;;:::i;:::-;6091:119;6249:1;6274:53;6319:7;6310:6;6299:9;6295:22;6274:53;:::i;:::-;6264:63;;6220:117;6015:329;;;;:::o;6350:86::-;6385:7;6425:4;6418:5;6414:16;6403:27;;6350:86;;;:::o;6442:112::-;6525:22;6541:5;6525:22;:::i;:::-;6520:3;6513:35;6442:112;;:::o;6560:214::-;6649:4;6687:2;6676:9;6672:18;6664:26;;6700:67;6764:1;6753:9;6749:17;6740:6;6700:67;:::i;:::-;6560:214;;;;:::o;6780:619::-;6857:6;6865;6873;6922:2;6910:9;6901:7;6897:23;6893:32;6890:119;;;6928:79;;:::i;:::-;6890:119;7048:1;7073:53;7118:7;7109:6;7098:9;7094:22;7073:53;:::i;:::-;7063:63;;7019:117;7175:2;7201:53;7246:7;7237:6;7226:9;7222:22;7201:53;:::i;:::-;7191:63;;7146:118;7303:2;7329:53;7374:7;7365:6;7354:9;7350:22;7329:53;:::i;:::-;7319:63;;7274:118;6780:619;;;;;:::o;7405:118::-;7492:24;7510:5;7492:24;:::i;:::-;7487:3;7480:37;7405:118;;:::o;7529:222::-;7622:4;7660:2;7649:9;7645:18;7637:26;;7673:71;7741:1;7730:9;7726:17;7717:6;7673:71;:::i;:::-;7529:222;;;;:::o;7757:474::-;7825:6;7833;7882:2;7870:9;7861:7;7857:23;7853:32;7850:119;;;7888:79;;:::i;:::-;7850:119;8008:1;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7979:117;8135:2;8161:53;8206:7;8197:6;8186:9;8182:22;8161:53;:::i;:::-;8151:63;;8106:118;7757:474;;;;;:::o;8237:323::-;8293:6;8342:2;8330:9;8321:7;8317:23;8313:32;8310:119;;;8348:79;;:::i;:::-;8310:119;8468:1;8493:50;8535:7;8526:6;8515:9;8511:22;8493:50;:::i;:::-;8483:60;;8439:114;8237:323;;;;:::o;8566:468::-;8631:6;8639;8688:2;8676:9;8667:7;8663:23;8659:32;8656:119;;;8694:79;;:::i;:::-;8656:119;8814:1;8839:53;8884:7;8875:6;8864:9;8860:22;8839:53;:::i;:::-;8829:63;;8785:117;8941:2;8967:50;9009:7;9000:6;8989:9;8985:22;8967:50;:::i;:::-;8957:60;;8912:115;8566:468;;;;;:::o;9040:765::-;9126:6;9134;9142;9150;9199:3;9187:9;9178:7;9174:23;9170:33;9167:120;;;9206:79;;:::i;:::-;9167:120;9326:1;9351:53;9396:7;9387:6;9376:9;9372:22;9351:53;:::i;:::-;9341:63;;9297:117;9453:2;9479:53;9524:7;9515:6;9504:9;9500:22;9479:53;:::i;:::-;9469:63;;9424:118;9581:2;9607:53;9652:7;9643:6;9632:9;9628:22;9607:53;:::i;:::-;9597:63;;9552:118;9709:2;9735:53;9780:7;9771:6;9760:9;9756:22;9735:53;:::i;:::-;9725:63;;9680:118;9040:765;;;;;;;:::o;9811:182::-;9951:34;9947:1;9939:6;9935:14;9928:58;9811:182;:::o;9999:366::-;10141:3;10162:67;10226:2;10221:3;10162:67;:::i;:::-;10155:74;;10238:93;10327:3;10238:93;:::i;:::-;10356:2;10351:3;10347:12;10340:19;;9999:366;;;:::o;10371:419::-;10537:4;10575:2;10564:9;10560:18;10552:26;;10624:9;10618:4;10614:20;10610:1;10599:9;10595:17;10588:47;10652:131;10778:4;10652:131;:::i;:::-;10644:139;;10371:419;;;:::o;10796:180::-;10844:77;10841:1;10834:88;10941:4;10938:1;10931:15;10965:4;10962:1;10955:15;10982:320;11026:6;11063:1;11057:4;11053:12;11043:22;;11110:1;11104:4;11100:12;11131:18;11121:81;;11187:4;11179:6;11175:17;11165:27;;11121:81;11249:2;11241:6;11238:14;11218:18;11215:38;11212:84;;11268:18;;:::i;:::-;11212:84;11033:269;10982:320;;;:::o;11308:180::-;11356:77;11353:1;11346:88;11453:4;11450:1;11443:15;11477:4;11474:1;11467:15;11494:348;11534:7;11557:20;11575:1;11557:20;:::i;:::-;11552:25;;11591:20;11609:1;11591:20;:::i;:::-;11586:25;;11779:1;11711:66;11707:74;11704:1;11701:81;11696:1;11689:9;11682:17;11678:105;11675:131;;;11786:18;;:::i;:::-;11675:131;11834:1;11831;11827:9;11816:20;;11494:348;;;;:::o;11848:180::-;11896:77;11893:1;11886:88;11993:4;11990:1;11983:15;12017:4;12014:1;12007:15;12034:185;12074:1;12091:20;12109:1;12091:20;:::i;:::-;12086:25;;12125:20;12143:1;12125:20;:::i;:::-;12120:25;;12164:1;12154:35;;12169:18;;:::i;:::-;12154:35;12211:1;12208;12204:9;12199:14;;12034:185;;;;:::o;12225:102::-;12267:8;12314:5;12311:1;12307:13;12286:34;;12225:102;;;:::o;12333:848::-;12394:5;12401:4;12425:6;12416:15;;12449:5;12440:14;;12463:712;12484:1;12474:8;12471:15;12463:712;;;12579:4;12574:3;12570:14;12564:4;12561:24;12558:50;;;12588:18;;:::i;:::-;12558:50;12638:1;12628:8;12624:16;12621:451;;;13053:4;13046:5;13042:16;13033:25;;12621:451;13103:4;13097;13093:15;13085:23;;13133:32;13156:8;13133:32;:::i;:::-;13121:44;;12463:712;;;12333:848;;;;;;;:::o;13187:1073::-;13241:5;13432:8;13422:40;;13453:1;13444:10;;13455:5;;13422:40;13481:4;13471:36;;13498:1;13489:10;;13500:5;;13471:36;13567:4;13615:1;13610:27;;;;13651:1;13646:191;;;;13560:277;;13610:27;13628:1;13619:10;;13630:5;;;13646:191;13691:3;13681:8;13678:17;13675:43;;;13698:18;;:::i;:::-;13675:43;13747:8;13744:1;13740:16;13731:25;;13782:3;13775:5;13772:14;13769:40;;;13789:18;;:::i;:::-;13769:40;13822:5;;;13560:277;;13946:2;13936:8;13933:16;13927:3;13921:4;13918:13;13914:36;13896:2;13886:8;13883:16;13878:2;13872:4;13869:12;13865:35;13849:111;13846:246;;;14002:8;13996:4;13992:19;13983:28;;14037:3;14030:5;14027:14;14024:40;;;14044:18;;:::i;:::-;14024:40;14077:5;;13846:246;14117:42;14155:3;14145:8;14139:4;14136:1;14117:42;:::i;:::-;14102:57;;;;14191:4;14186:3;14182:14;14175:5;14172:25;14169:51;;;14200:18;;:::i;:::-;14169:51;14249:4;14242:5;14238:16;14229:25;;13187:1073;;;;;;:::o;14266:281::-;14324:5;14348:23;14366:4;14348:23;:::i;:::-;14340:31;;14392:25;14408:8;14392:25;:::i;:::-;14380:37;;14436:104;14473:66;14463:8;14457:4;14436:104;:::i;:::-;14427:113;;14266:281;;;;:::o;14553:305::-;14593:3;14612:20;14630:1;14612:20;:::i;:::-;14607:25;;14646:20;14664:1;14646:20;:::i;:::-;14641:25;;14800:1;14732:66;14728:74;14725:1;14722:81;14719:107;;;14806:18;;:::i;:::-;14719:107;14850:1;14847;14843:9;14836:16;;14553:305;;;;:::o;14864:143::-;14921:5;14952:6;14946:13;14937:22;;14968:33;14995:5;14968:33;:::i;:::-;14864:143;;;;:::o;15013:351::-;15083:6;15132:2;15120:9;15111:7;15107:23;15103:32;15100:119;;;15138:79;;:::i;:::-;15100:119;15258:1;15283:64;15339:7;15330:6;15319:9;15315:22;15283:64;:::i;:::-;15273:74;;15229:128;15013:351;;;;:::o;15370:332::-;15491:4;15529:2;15518:9;15514:18;15506:26;;15542:71;15610:1;15599:9;15595:17;15586:6;15542:71;:::i;:::-;15623:72;15691:2;15680:9;15676:18;15667:6;15623:72;:::i;:::-;15370:332;;;;;:::o;15708:85::-;15753:7;15782:5;15771:16;;15708:85;;;:::o;15799:60::-;15827:3;15848:5;15841:12;;15799:60;;;:::o;15865:158::-;15923:9;15956:61;15974:42;15983:32;16009:5;15983:32;:::i;:::-;15974:42;:::i;:::-;15956:61;:::i;:::-;15943:74;;15865:158;;;:::o;16029:147::-;16124:45;16163:5;16124:45;:::i;:::-;16119:3;16112:58;16029:147;;:::o;16182:807::-;16431:4;16469:3;16458:9;16454:19;16446:27;;16483:71;16551:1;16540:9;16536:17;16527:6;16483:71;:::i;:::-;16564:72;16632:2;16621:9;16617:18;16608:6;16564:72;:::i;:::-;16646:80;16722:2;16711:9;16707:18;16698:6;16646:80;:::i;:::-;16736;16812:2;16801:9;16797:18;16788:6;16736:80;:::i;:::-;16826:73;16894:3;16883:9;16879:19;16870:6;16826:73;:::i;:::-;16909;16977:3;16966:9;16962:19;16953:6;16909:73;:::i;:::-;16182:807;;;;;;;;;:::o;16995:143::-;17052:5;17083:6;17077:13;17068:22;;17099:33;17126:5;17099:33;:::i;:::-;16995:143;;;;:::o;17144:663::-;17232:6;17240;17248;17297:2;17285:9;17276:7;17272:23;17268:32;17265:119;;;17303:79;;:::i;:::-;17265:119;17423:1;17448:64;17504:7;17495:6;17484:9;17480:22;17448:64;:::i;:::-;17438:74;;17394:128;17561:2;17587:64;17643:7;17634:6;17623:9;17619:22;17587:64;:::i;:::-;17577:74;;17532:129;17700:2;17726:64;17782:7;17773:6;17762:9;17758:22;17726:64;:::i;:::-;17716:74;;17671:129;17144:663;;;;;:::o;17813:162::-;17953:14;17949:1;17941:6;17937:14;17930:38;17813:162;:::o;17981:366::-;18123:3;18144:67;18208:2;18203:3;18144:67;:::i;:::-;18137:74;;18220:93;18309:3;18220:93;:::i;:::-;18338:2;18333:3;18329:12;18322:19;;17981:366;;;:::o;18353:419::-;18519:4;18557:2;18546:9;18542:18;18534:26;;18606:9;18600:4;18596:20;18592:1;18581:9;18577:17;18570:47;18634:131;18760:4;18634:131;:::i;:::-;18626:139;;18353:419;;;:::o;18778:224::-;18918:34;18914:1;18906:6;18902:14;18895:58;18987:7;18982:2;18974:6;18970:15;18963:32;18778:224;:::o;19008:366::-;19150:3;19171:67;19235:2;19230:3;19171:67;:::i;:::-;19164:74;;19247:93;19336:3;19247:93;:::i;:::-;19365:2;19360:3;19356:12;19349:19;;19008:366;;;:::o;19380:419::-;19546:4;19584:2;19573:9;19569:18;19561:26;;19633:9;19627:4;19623:20;19619:1;19608:9;19604:17;19597:47;19661:131;19787:4;19661:131;:::i;:::-;19653:139;;19380:419;;;:::o;19805:225::-;19945:34;19941:1;19933:6;19929:14;19922:58;20014:8;20009:2;20001:6;19997:15;19990:33;19805:225;:::o;20036:366::-;20178:3;20199:67;20263:2;20258:3;20199:67;:::i;:::-;20192:74;;20275:93;20364:3;20275:93;:::i;:::-;20393:2;20388:3;20384:12;20377:19;;20036:366;;;:::o;20408:419::-;20574:4;20612:2;20601:9;20597:18;20589:26;;20661:9;20655:4;20651:20;20647:1;20636:9;20632:17;20625:47;20689:131;20815:4;20689:131;:::i;:::-;20681:139;;20408:419;;;:::o;20833:223::-;20973:34;20969:1;20961:6;20957:14;20950:58;21042:6;21037:2;21029:6;21025:15;21018:31;20833:223;:::o;21062:366::-;21204:3;21225:67;21289:2;21284:3;21225:67;:::i;:::-;21218:74;;21301:93;21390:3;21301:93;:::i;:::-;21419:2;21414:3;21410:12;21403:19;;21062:366;;;:::o;21434:419::-;21600:4;21638:2;21627:9;21623:18;21615:26;;21687:9;21681:4;21677:20;21673:1;21662:9;21658:17;21651:47;21715:131;21841:4;21715:131;:::i;:::-;21707:139;;21434:419;;;:::o;21859:221::-;21999:34;21995:1;21987:6;21983:14;21976:58;22068:4;22063:2;22055:6;22051:15;22044:29;21859:221;:::o;22086:366::-;22228:3;22249:67;22313:2;22308:3;22249:67;:::i;:::-;22242:74;;22325:93;22414:3;22325:93;:::i;:::-;22443:2;22438:3;22434:12;22427:19;;22086:366;;;:::o;22458:419::-;22624:4;22662:2;22651:9;22647:18;22639:26;;22711:9;22705:4;22701:20;22697:1;22686:9;22682:17;22675:47;22739:131;22865:4;22739:131;:::i;:::-;22731:139;;22458:419;;;:::o;22883:179::-;23023:31;23019:1;23011:6;23007:14;23000:55;22883:179;:::o;23068:366::-;23210:3;23231:67;23295:2;23290:3;23231:67;:::i;:::-;23224:74;;23307:93;23396:3;23307:93;:::i;:::-;23425:2;23420:3;23416:12;23409:19;;23068:366;;;:::o;23440:419::-;23606:4;23644:2;23633:9;23629:18;23621:26;;23693:9;23687:4;23683:20;23679:1;23668:9;23664:17;23657:47;23721:131;23847:4;23721:131;:::i;:::-;23713:139;;23440:419;;;:::o;23865:224::-;24005:34;24001:1;23993:6;23989:14;23982:58;24074:7;24069:2;24061:6;24057:15;24050:32;23865:224;:::o;24095:366::-;24237:3;24258:67;24322:2;24317:3;24258:67;:::i;:::-;24251:74;;24334:93;24423:3;24334:93;:::i;:::-;24452:2;24447:3;24443:12;24436:19;;24095:366;;;:::o;24467:419::-;24633:4;24671:2;24660:9;24656:18;24648:26;;24720:9;24714:4;24710:20;24706:1;24695:9;24691:17;24684:47;24748:131;24874:4;24748:131;:::i;:::-;24740:139;;24467:419;;;:::o;24892:222::-;25032:34;25028:1;25020:6;25016:14;25009:58;25101:5;25096:2;25088:6;25084:15;25077:30;24892:222;:::o;25120:366::-;25262:3;25283:67;25347:2;25342:3;25283:67;:::i;:::-;25276:74;;25359:93;25448:3;25359:93;:::i;:::-;25477:2;25472:3;25468:12;25461:19;;25120:366;;;:::o;25492:419::-;25658:4;25696:2;25685:9;25681:18;25673:26;;25745:9;25739:4;25735:20;25731:1;25720:9;25716:17;25709:47;25773:131;25899:4;25773:131;:::i;:::-;25765:139;;25492:419;;;:::o;25917:168::-;26057:20;26053:1;26045:6;26041:14;26034:44;25917:168;:::o;26091:366::-;26233:3;26254:67;26318:2;26313:3;26254:67;:::i;:::-;26247:74;;26330:93;26419:3;26330:93;:::i;:::-;26448:2;26443:3;26439:12;26432:19;;26091:366;;;:::o;26463:419::-;26629:4;26667:2;26656:9;26652:18;26644:26;;26716:9;26710:4;26706:20;26702:1;26691:9;26687:17;26680:47;26744:131;26870:4;26744:131;:::i;:::-;26736:139;;26463:419;;;:::o;26888:170::-;27028:22;27024:1;27016:6;27012:14;27005:46;26888:170;:::o;27064:366::-;27206:3;27227:67;27291:2;27286:3;27227:67;:::i;:::-;27220:74;;27303:93;27392:3;27303:93;:::i;:::-;27421:2;27416:3;27412:12;27405:19;;27064:366;;;:::o;27436:419::-;27602:4;27640:2;27629:9;27625:18;27617:26;;27689:9;27683:4;27679:20;27675:1;27664:9;27660:17;27653:47;27717:131;27843:4;27717:131;:::i;:::-;27709:139;;27436:419;;;:::o;27861:221::-;28001:34;27997:1;27989:6;27985:14;27978:58;28070:4;28065:2;28057:6;28053:15;28046:29;27861:221;:::o;28088:366::-;28230:3;28251:67;28315:2;28310:3;28251:67;:::i;:::-;28244:74;;28327:93;28416:3;28327:93;:::i;:::-;28445:2;28440:3;28436:12;28429:19;;28088:366;;;:::o;28460:419::-;28626:4;28664:2;28653:9;28649:18;28641:26;;28713:9;28707:4;28703:20;28699:1;28688:9;28684:17;28677:47;28741:131;28867:4;28741:131;:::i;:::-;28733:139;;28460:419;;;:::o;28885:289::-;29025:34;29021:1;29013:6;29009:14;29002:58;29094:34;29089:2;29081:6;29077:15;29070:59;29163:3;29158:2;29150:6;29146:15;29139:28;28885:289;:::o;29180:366::-;29322:3;29343:67;29407:2;29402:3;29343:67;:::i;:::-;29336:74;;29419:93;29508:3;29419:93;:::i;:::-;29537:2;29532:3;29528:12;29521:19;;29180:366;;;:::o;29552:419::-;29718:4;29756:2;29745:9;29741:18;29733:26;;29805:9;29799:4;29795:20;29791:1;29780:9;29776:17;29769:47;29833:131;29959:4;29833:131;:::i;:::-;29825:139;;29552:419;;;:::o;29977:181::-;30117:33;30113:1;30105:6;30101:14;30094:57;29977:181;:::o;30164:366::-;30306:3;30327:67;30391:2;30386:3;30327:67;:::i;:::-;30320:74;;30403:93;30492:3;30403:93;:::i;:::-;30521:2;30516:3;30512:12;30505:19;;30164:366;;;:::o;30536:419::-;30702:4;30740:2;30729:9;30725:18;30717:26;;30789:9;30783:4;30779:20;30775:1;30764:9;30760:17;30753:47;30817:131;30943:4;30817:131;:::i;:::-;30809:139;;30536:419;;;:::o;30961:290::-;31101:34;31097:1;31089:6;31085:14;31078:58;31170:34;31165:2;31157:6;31153:15;31146:59;31239:4;31234:2;31226:6;31222:15;31215:29;30961:290;:::o;31257:366::-;31399:3;31420:67;31484:2;31479:3;31420:67;:::i;:::-;31413:74;;31496:93;31585:3;31496:93;:::i;:::-;31614:2;31609:3;31605:12;31598:19;;31257:366;;;:::o;31629:419::-;31795:4;31833:2;31822:9;31818:18;31810:26;;31882:9;31876:4;31872:20;31868:1;31857:9;31853:17;31846:47;31910:131;32036:4;31910:131;:::i;:::-;31902:139;;31629:419;;;:::o;32054:171::-;32194:23;32190:1;32182:6;32178:14;32171:47;32054:171;:::o;32231:366::-;32373:3;32394:67;32458:2;32453:3;32394:67;:::i;:::-;32387:74;;32470:93;32559:3;32470:93;:::i;:::-;32588:2;32583:3;32579:12;32572:19;;32231:366;;;:::o;32603:419::-;32769:4;32807:2;32796:9;32792:18;32784:26;;32856:9;32850:4;32846:20;32842:1;32831:9;32827:17;32820:47;32884:131;33010:4;32884:131;:::i;:::-;32876:139;;32603:419;;;:::o;33028:170::-;33168:22;33164:1;33156:6;33152:14;33145:46;33028:170;:::o;33204:366::-;33346:3;33367:67;33431:2;33426:3;33367:67;:::i;:::-;33360:74;;33443:93;33532:3;33443:93;:::i;:::-;33561:2;33556:3;33552:12;33545:19;;33204:366;;;:::o;33576:419::-;33742:4;33780:2;33769:9;33765:18;33757:26;;33829:9;33823:4;33819:20;33815:1;33804:9;33800:17;33793:47;33857:131;33983:4;33857:131;:::i;:::-;33849:139;;33576:419;;;:::o;34001:191::-;34041:4;34061:20;34079:1;34061:20;:::i;:::-;34056:25;;34095:20;34113:1;34095:20;:::i;:::-;34090:25;;34134:1;34131;34128:8;34125:34;;;34139:18;;:::i;:::-;34125:34;34184:1;34181;34177:9;34169:17;;34001:191;;;;:::o;34198:180::-;34246:77;34243:1;34236:88;34343:4;34340:1;34333:15;34367:4;34364:1;34357:15;34384:180;34432:77;34429:1;34422:88;34529:4;34526:1;34519:15;34553:4;34550:1;34543:15;34570:114;34637:6;34671:5;34665:12;34655:22;;34570:114;;;:::o;34690:184::-;34789:11;34823:6;34818:3;34811:19;34863:4;34858:3;34854:14;34839:29;;34690:184;;;;:::o;34880:132::-;34947:4;34970:3;34962:11;;35000:4;34995:3;34991:14;34983:22;;34880:132;;;:::o;35018:108::-;35095:24;35113:5;35095:24;:::i;:::-;35090:3;35083:37;35018:108;;:::o;35132:179::-;35201:10;35222:46;35264:3;35256:6;35222:46;:::i;:::-;35300:4;35295:3;35291:14;35277:28;;35132:179;;;;:::o;35317:113::-;35387:4;35419;35414:3;35410:14;35402:22;;35317:113;;;:::o;35466:732::-;35585:3;35614:54;35662:5;35614:54;:::i;:::-;35684:86;35763:6;35758:3;35684:86;:::i;:::-;35677:93;;35794:56;35844:5;35794:56;:::i;:::-;35873:7;35904:1;35889:284;35914:6;35911:1;35908:13;35889:284;;;35990:6;35984:13;36017:63;36076:3;36061:13;36017:63;:::i;:::-;36010:70;;36103:60;36156:6;36103:60;:::i;:::-;36093:70;;35949:224;35936:1;35933;35929:9;35924:14;;35889:284;;;35893:14;36189:3;36182:10;;35590:608;;;35466:732;;;;:::o;36204:831::-;36467:4;36505:3;36494:9;36490:19;36482:27;;36519:71;36587:1;36576:9;36572:17;36563:6;36519:71;:::i;:::-;36600:80;36676:2;36665:9;36661:18;36652:6;36600:80;:::i;:::-;36727:9;36721:4;36717:20;36712:2;36701:9;36697:18;36690:48;36755:108;36858:4;36849:6;36755:108;:::i;:::-;36747:116;;36873:72;36941:2;36930:9;36926:18;36917:6;36873:72;:::i;:::-;36955:73;37023:3;37012:9;37008:19;36999:6;36955:73;:::i;:::-;36204:831;;;;;;;;:::o;37041:720::-;37276:4;37314:3;37303:9;37299:19;37291:27;;37328:79;37404:1;37393:9;37389:17;37380:6;37328:79;:::i;:::-;37454:9;37448:4;37444:20;37439:2;37428:9;37424:18;37417:48;37482:108;37585:4;37576:6;37482:108;:::i;:::-;37474:116;;37600:72;37668:2;37657:9;37653:18;37644:6;37600:72;:::i;:::-;37682;37750:2;37739:9;37735:18;37726:6;37682:72;:::i;:::-;37041:720;;;;;;;:::o;37767:351::-;37837:6;37886:2;37874:9;37865:7;37861:23;37857:32;37854:119;;;37892:79;;:::i;:::-;37854:119;38012:1;38037:64;38093:7;38084:6;38073:9;38069:22;38037:64;:::i;:::-;38027:74;;37983:128;37767:351;;;;:::o;38124:332::-;38245:4;38283:2;38272:9;38268:18;38260:26;;38296:71;38364:1;38353:9;38349:17;38340:6;38296:71;:::i;:::-;38377:72;38445:2;38434:9;38430:18;38421:6;38377:72;:::i;:::-;38124:332;;;;;:::o;38462:137::-;38516:5;38547:6;38541:13;38532:22;;38563:30;38587:5;38563:30;:::i;:::-;38462:137;;;;:::o;38605:345::-;38672:6;38721:2;38709:9;38700:7;38696:23;38692:32;38689:119;;;38727:79;;:::i;:::-;38689:119;38847:1;38872:61;38925:7;38916:6;38905:9;38901:22;38872:61;:::i;:::-;38862:71;;38818:125;38605:345;;;;:::o;38956:180::-;39096:32;39092:1;39084:6;39080:14;39073:56;38956:180;:::o;39142:366::-;39284:3;39305:67;39369:2;39364:3;39305:67;:::i;:::-;39298:74;;39381:93;39470:3;39381:93;:::i;:::-;39499:2;39494:3;39490:12;39483:19;;39142:366;;;:::o;39514:419::-;39680:4;39718:2;39707:9;39703:18;39695:26;;39767:9;39761:4;39757:20;39753:1;39742:9;39738:17;39731:47;39795:131;39921:4;39795:131;:::i;:::-;39787:139;;39514:419;;;:::o;39939:225::-;40079:34;40075:1;40067:6;40063:14;40056:58;40148:8;40143:2;40135:6;40131:15;40124:33;39939:225;:::o;40170:366::-;40312:3;40333:67;40397:2;40392:3;40333:67;:::i;:::-;40326:74;;40409:93;40498:3;40409:93;:::i;:::-;40527:2;40522:3;40518:12;40511:19;;40170:366;;;:::o;40542:419::-;40708:4;40746:2;40735:9;40731:18;40723:26;;40795:9;40789:4;40785:20;40781:1;40770:9;40766:17;40759:47;40823:131;40949:4;40823:131;:::i;:::-;40815:139;;40542:419;;;:::o;40967:220::-;41107:34;41103:1;41095:6;41091:14;41084:58;41176:3;41171:2;41163:6;41159:15;41152:28;40967:220;:::o;41193:366::-;41335:3;41356:67;41420:2;41415:3;41356:67;:::i;:::-;41349:74;;41432:93;41521:3;41432:93;:::i;:::-;41550:2;41545:3;41541:12;41534:19;;41193:366;;;:::o;41565:419::-;41731:4;41769:2;41758:9;41754:18;41746:26;;41818:9;41812:4;41808:20;41804:1;41793:9;41789:17;41782:47;41846:131;41972:4;41846:131;:::i;:::-;41838:139;;41565:419;;;:::o;41990:221::-;42130:34;42126:1;42118:6;42114:14;42107:58;42199:4;42194:2;42186:6;42182:15;42175:29;41990:221;:::o;42217:366::-;42359:3;42380:67;42444:2;42439:3;42380:67;:::i;:::-;42373:74;;42456:93;42545:3;42456:93;:::i;:::-;42574:2;42569:3;42565:12;42558:19;;42217:366;;;:::o;42589:419::-;42755:4;42793:2;42782:9;42778:18;42770:26;;42842:9;42836:4;42832:20;42828:1;42817:9;42813:17;42806:47;42870:131;42996:4;42870:131;:::i;:::-;42862:139;;42589:419;;;:::o

Swarm Source

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