ETH Price: $3,030.09 (+3.37%)
Gas: 1 Gwei

Token

HarryPotterObamaCrash6Inu (ADA)
 

Overview

Max Total Supply

10,000,000,000 ADA

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
omgiwannajeetthis.eth
Balance
0.000000007855565259 ADA

Value
$0.00
0xe12b2e891ca9f48b2022750fceaa414fed1768db
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ADA

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
https://t.me/HPOC6I
https://twitter.com/HPOC6I
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.21;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, 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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
       
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
 
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


 
contract ADA is ERC20, Ownable {

    string _name = unicode"HarryPotterObamaCrash6Inu";
    string _symbol = unicode"ADA";

    using SafeMath for uint256;
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private isSwppable;
    uint256 public balance;
    address private devWallet;
 
    uint256 public maxTransaction;
    uint256 public contractSellTreshold;
    uint256 public maxWalletHolding;
 
    bool public areLimitsOn = true;
    bool public emptyContractFull = false;

    uint256 public totalBuyTax;
    uint256 public devBuyTax;
    uint256 public liqBuyTax;
 
    uint256 public totalSellTax;
    uint256 public devSellTax;
    uint256 public liqSellTax;
 
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
   
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );


 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20(_name, _symbol) {
 
       
 
        uint256 _devBuyTax = 25;
        uint256 _liqBuyTax = 0;
 
        uint256 _devSellTax = 50;
        uint256 _liqSellTax = 0;
        
        uint256 totalSupply = 10000000000 * 1e18;
 
        maxTransaction = totalSupply * 20 / 1000; // 2%
        maxWalletHolding = totalSupply * 20 / 1000; // 2% 
        contractSellTreshold = totalSupply * 1 / 1000; // 0.05%
 
        devBuyTax = _devBuyTax;
        liqBuyTax = _liqBuyTax;
        totalBuyTax = devBuyTax + liqBuyTax;
 
        devSellTax = _devSellTax;
        liqSellTax = _liqSellTax;
        totalSellTax = devSellTax + liqSellTax;
        devWallet = address(msg.sender);
       
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(devWallet), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(devWallet), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */

       
        _mint(address(this), totalSupply);
        
        
        
    }
 
    receive() external payable {
 
    }
 

    function goLive() external onlyOwner{



        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        
        uint256 ethAmount = address(this).balance;
        uint256 tokenAmount = balanceOf(address(this)) * 85 / 100;
        

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

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


    

    function removeStuckETH() external onlyOwner {
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "ETH balance must be greater than 0");
        (bool success,) = address(devWallet).call{value: ethBalance}("");
        require(success, "Failed to clear ETH balance");
    }

    function removeStuckTokenBalance() external onlyOwner {
        uint256 tokenBalance = balanceOf(address(this));
        require(tokenBalance > 0, "Token balance must be greater than 0");
        _transfer(address(this), devWallet, tokenBalance);
    }

    function vanishLimits() external onlyOwner {
        areLimitsOn = false;
    }
 
    function EnableEmptyContract(bool enabled) external onlyOwner{
        emptyContractFull = enabled;
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

  
    function editFees(
        uint256 _devBuy,
        uint256 _devSell,
        uint256 _liqBuy,
        uint256 _liqSell
    ) external onlyOwner {
        devBuyTax = _devBuy;
        liqBuyTax = _liqBuy;
        totalBuyTax = devBuyTax + liqBuyTax;
        devSellTax = _devSell;
        liqSellTax = _liqSell;
        totalSellTax = devSellTax + liqSellTax;
       
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateDevWallet(address newDevWallet) external onlyOwner{
        emit devWalletUpdated(newDevWallet, devWallet);
        devWallet = newDevWallet;
    }

    function isExcludedFromFees(address account) public 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");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(areLimitsOn){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !isSwppable
            ){
                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded");
                }
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= contractSellTreshold;
 
        if( 
            canSwap &&
            !isSwppable &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwppable = true;
 
            swapBack();
 
            isSwppable = false;
        }
 
        bool takeFee = !isSwppable;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && totalSellTax > 0){
                fees = amount.mul(totalSellTax).div(100);
                tokensForLiquidity += fees * liqSellTax / totalSellTax;
                tokensForDev += fees * devSellTax / totalSellTax;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) {
                fees = amount.mul(totalBuyTax).div(100);
                tokensForLiquidity += fees * liqBuyTax / totalBuyTax;
                tokensForDev += fees * devBuyTax / totalBuyTax;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(emptyContractFull == false){
            if(contractBalance > contractSellTreshold * 20){
                contractBalance = contractSellTreshold * 20;
            }
        }else{
            contractBalance = balanceOf(address(this));
        }
        
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForDev = 0;
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(devWallet).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"EnableEmptyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areLimitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSellTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuy","type":"uint256"},{"internalType":"uint256","name":"_devSell","type":"uint256"},{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"}],"name":"editFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emptyContractFull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vanishLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280601981526020017f4861727279506f747465724f62616d61437261736836496e7500000000000000815250600690816200004a919062000bcf565b506040518060400160405280600381526020017f41444100000000000000000000000000000000000000000000000000000000008152506007908162000091919062000bcf565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550348015620000d2575f80fd5b5060068054620000e290620009cf565b80601f01602080910402602001604051908101604052809291908181526020018280546200011090620009cf565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b5050505050600780546200017390620009cf565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a190620009cf565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b5050505050816003908162000206919062000bcf565b50806004908162000218919062000bcf565b5050505f6200022c620004f660201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601990505f80603290505f806b204fce5e3e2502611000000090506103e8601482620002f7919062000ce0565b62000303919062000d57565b600c819055506103e86014826200031b919062000ce0565b62000327919062000d57565b600e819055506103e86001826200033f919062000ce0565b6200034b919062000d57565b600d81905550846011819055508360128190555060125460115462000371919062000d8e565b601081905550826014819055508160158190555060155460145462000397919062000d8e565b60138190555033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ff620003f1620004fd60201b60201c565b60016200052560201b60201c565b620004123060016200052560201b60201c565b6200042761dead60016200052560201b60201c565b6200045b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200052560201b60201c565b6200047d6200046f620004fd60201b60201c565b60016200066e60201b60201c565b620004903060016200066e60201b60201c565b620004a561dead60016200066e60201b60201c565b620004d9600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200066e60201b60201c565b620004eb30826200076760201b60201c565b505050505062000f85565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000535620004f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005bd9062000e26565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000662919062000e62565b60405180910390a25050565b6200067e620004f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200070f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007069062000e26565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007cf9062000ecb565b60405180910390fd5b620007eb5f83836200090460201b60201c565b62000802816002546200090960201b90919060201c565b60028190555062000859815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200090960201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008f8919062000efc565b60405180910390a35050565b505050565b5f80828462000919919062000d8e565b90508381101562000961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009589062000f65565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009e757607f821691505b602082108103620009fd57620009fc620009a2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a24565b62000a6d868362000a24565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ab762000ab162000aab8462000a85565b62000a8e565b62000a85565b9050919050565b5f819050919050565b62000ad28362000a97565b62000aea62000ae18262000abe565b84845462000a30565b825550505050565b5f90565b62000b0062000af2565b62000b0d81848462000ac7565b505050565b5b8181101562000b345762000b285f8262000af6565b60018101905062000b13565b5050565b601f82111562000b835762000b4d8162000a03565b62000b588462000a15565b8101602085101562000b68578190505b62000b8062000b778562000a15565b83018262000b12565b50505b505050565b5f82821c905092915050565b5f62000ba55f198460080262000b88565b1980831691505092915050565b5f62000bbf838362000b94565b9150826002028217905092915050565b62000bda826200096b565b67ffffffffffffffff81111562000bf65762000bf562000975565b5b62000c028254620009cf565b62000c0f82828562000b38565b5f60209050601f83116001811462000c45575f841562000c30578287015190505b62000c3c858262000bb2565b86555062000cab565b601f19841662000c558662000a03565b5f5b8281101562000c7e5784890151825560018201915060208501945060208101905062000c57565b8683101562000c9e578489015162000c9a601f89168262000b94565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000cec8262000a85565b915062000cf98362000a85565b925082820262000d098162000a85565b9150828204841483151762000d235762000d2262000cb3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d638262000a85565b915062000d708362000a85565b92508262000d835762000d8262000d2a565b5b828204905092915050565b5f62000d9a8262000a85565b915062000da78362000a85565b925082820190508082111562000dc25762000dc162000cb3565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000e0e60208362000dc8565b915062000e1b8262000dd8565b602082019050919050565b5f6020820190508181035f83015262000e3f8162000e00565b9050919050565b5f8115159050919050565b62000e5c8162000e46565b82525050565b5f60208201905062000e775f83018462000e51565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000eb3601f8362000dc8565b915062000ec08262000e7d565b602082019050919050565b5f6020820190508181035f83015262000ee48162000ea5565b9050919050565b62000ef68162000a85565b82525050565b5f60208201905062000f115f83018462000eeb565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f4d601b8362000dc8565b915062000f5a8262000f17565b602082019050919050565b5f6020820190508181035f83015262000f7e8162000f3f565b9050919050565b6146748062000f935f395ff3fe60806040526004361061025f575f3560e01c80636c7e15c911610143578063a457c2d7116100b5578063c024666811610079578063c0246668146108c4578063c3f70b52146108ec578063dd62ed3e14610916578063df6f93be14610952578063e11d22cf1461097c578063f2fde38b1461099257610266565b8063a457c2d7146107bc578063a9059cbb146107f8578063b62496f514610834578063b69ef8a814610870578063be8575041461089a57610266565b80638da5cb5b116101075780638da5cb5b146106d6578063945674fe1461070057806395d89b411461072a5780639a7a23d6146107545780639ee2e9241461077c5780639fccce321461079257610266565b80636c7e15c91461060a57806370a0823114610634578063715018a6146106705780637571336a14610686578063863cf2cc146106ae57610266565b80631d9305bf116101dc57806339509351116101a057806339509351146104ea57806346469afb1461052657806348d791551461055057806349bd5a5e1461057a5780634fbee193146105a45780635de0f2a0146105e057610266565b80631d9305bf1461041c57806322eb66311461044457806323b872dd1461046e5780632c28f579146104aa578063313ce567146104c057610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613606565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906136b7565b610a4a565b6040516102c7919061370f565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061370f565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b5061033660048036038101906103319190613728565b610c22565b604051610343919061370f565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d91906137ae565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b60405161039791906137d6565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613728565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e991906137d6565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b60405161041391906137d6565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d91906137ef565b610dcd565b005b34801561044f575f80fd5b50610458610eb1565b60405161046591906137d6565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190613853565b610eb7565b6040516104a1919061370f565b60405180910390f35b3480156104b5575f80fd5b506104be610f8b565b005b3480156104cb575f80fd5b506104d4611391565b6040516104e191906138be565b60405180910390f35b3480156104f5575f80fd5b50610510600480360381019061050b91906136b7565b611399565b60405161051d919061370f565b60405180910390f35b348015610531575f80fd5b5061053a611447565b60405161054791906137d6565b60405180910390f35b34801561055b575f80fd5b5061056461144d565b60405161057191906137d6565b60405180910390f35b348015610585575f80fd5b5061058e611453565b60405161059b91906138e6565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c59190613728565b611478565b6040516105d7919061370f565b60405180910390f35b3480156105eb575f80fd5b506105f46114ca565b60405161060191906137d6565b60405180910390f35b348015610615575f80fd5b5061061e6114d0565b60405161062b91906137d6565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613728565b6114d6565b60405161066791906137d6565b60405180910390f35b34801561067b575f80fd5b5061068461151b565b005b348015610691575f80fd5b506106ac60048036038101906106a79190613929565b61166e565b005b3480156106b9575f80fd5b506106d460048036038101906106cf9190613967565b61175c565b005b3480156106e1575f80fd5b506106ea61180f565b6040516106f791906138e6565b60405180910390f35b34801561070b575f80fd5b50610714611837565b604051610721919061370f565b60405180910390f35b348015610735575f80fd5b5061073e61184a565b60405161074b9190613606565b60405180910390f35b34801561075f575f80fd5b5061077a60048036038101906107759190613929565b6118da565b005b348015610787575f80fd5b50610790611a0d565b005b34801561079d575f80fd5b506107a6611b20565b6040516107b391906137d6565b60405180910390f35b3480156107c7575f80fd5b506107e260048036038101906107dd91906136b7565b611b26565b6040516107ef919061370f565b60405180910390f35b348015610803575f80fd5b5061081e600480360381019061081991906136b7565b611bee565b60405161082b919061370f565b60405180910390f35b34801561083f575f80fd5b5061085a60048036038101906108559190613728565b611c0b565b604051610867919061370f565b60405180910390f35b34801561087b575f80fd5b50610884611c28565b60405161089191906137d6565b60405180910390f35b3480156108a5575f80fd5b506108ae611c2e565b6040516108bb91906137d6565b60405180910390f35b3480156108cf575f80fd5b506108ea60048036038101906108e59190613929565b611c34565b005b3480156108f7575f80fd5b50610900611d70565b60405161090d91906137d6565b60405180910390f35b348015610921575f80fd5b5061093c60048036038101906109379190613992565b611d76565b60405161094991906137d6565b60405180910390f35b34801561095d575f80fd5b50610966611df8565b60405161097391906137d6565b60405180910390f35b348015610987575f80fd5b50610990611dfe565b005b34801561099d575f80fd5b506109b860048036038101906109b39190613728565b611eaf565b005b6060600380546109c9906139fd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f5906139fd565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56612003565b848461200a565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a81612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613a77565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613b05565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b90613b50565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613bae565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c75612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90613a77565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b610dd5612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90613a77565b60405180910390fd5b8360118190555081601281905550601254601154610e819190613bf9565b6010819055508260148190555080601581905550601554601454610ea59190613bf9565b60138190555050505050565b60145481565b5f610ec38484846121cd565b610f8084610ecf612003565b610f7b856040518060600160405280602881526020016145f26028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f32612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b600190509392505050565b610f93612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890613a77565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061104481600161166e565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f19190613c40565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117a9190613c40565b6040518363ffffffff1660e01b8152600401611197929190613c6b565b6020604051808303815f875af11580156111b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190613c40565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124260095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161166e565b61126e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612b54565b5f4790505f60646055611280306114d6565b61128a9190613c92565b6112949190613d00565b90506112c23060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161134896959493929190613d69565b60606040518083038185885af1158015611364573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113899190613ddc565b505050505050565b5f6012905090565b5f61143d6113a5612003565b846114388560015f6113b5612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b61200a565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611523612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613a77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611676612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613a77565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611764612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613a77565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b606060048054611859906139fd565b80601f0160208091040260200160405190810160405280929190818152602001828054611885906139fd565b80156118d05780601f106118a7576101008083540402835291602001916118d0565b820191905f5260205f20905b8154815290600101906020018083116118b357829003601f168201915b5050505050905090565b6118e2612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613a77565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690613e9c565b60405180910390fd5b611a098282612b54565b5050565b611a15612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90613a77565b60405180910390fd5b5f611aad306114d6565b90505f8111611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae890613f2a565b60405180910390fd5b611b1d30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121cd565b50565b60175481565b5f611be4611b32612003565b84611bdf8560405180606001604052806025815260200161461a6025913960015f611b5b612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b6001905092915050565b5f611c01611bfa612003565b84846121cd565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611c3c612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613a77565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d64919061370f565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611e06612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613a77565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b611eb7612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613a77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90613fb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614046565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121c091906137d6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090614162565b60405180910390fd5b5f81036122c0576122bb83835f612c4f565b612aed565b600f5f9054906101000a900460ff16156126b5576122dc61180f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561234a575061231a61180f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d55750600960149054906101000a900460ff16155b156126b457601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124775750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561251e57600c548111156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906141f0565b60405180910390fd5b600e546124cd836114d6565b826124d89190613bf9565b1115612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614258565b60405180910390fd5b6126b3565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125bb5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561260a57600c54811115612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc906142e6565b60405180910390fd5b6126b2565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126b157600e54612664836114d6565b8261266f9190613bf9565b11156126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790614258565b60405180910390fd5b5b5b5b5b5b5f6126bf306114d6565b90505f600d5482101590508080156126e45750600960149054906101000a900460ff16155b80156127375750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561278a575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127dd575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612820576001600960146101000a81548160ff021916908315150217905550612805612ed8565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128cf575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128d8575f90505b5f8115612add57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561293657505f601354115b156129ce576129636064612955601354886130fe90919063ffffffff16565b61317590919063ffffffff16565b9050601354601554826129769190613c92565b6129809190613d00565b60165f8282546129909190613bf9565b92505081905550601354601454826129a89190613c92565b6129b29190613d00565b60175f8282546129c29190613bf9565b92505081905550612aba565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a2557505f601054115b15612ab957612a526064612a44601054886130fe90919063ffffffff16565b61317590919063ffffffff16565b905060105460125482612a659190613c92565b612a6f9190613d00565b60165f828254612a7f9190613bf9565b9250508190555060105460115482612a979190613c92565b612aa19190613d00565b60175f828254612ab19190613bf9565b925050819055505b5b5f811115612ace57612acd873083612c4f565b5b8085612ada9190614304565b94505b612ae8878787612c4f565b505050505b505050565b5f838311158290612b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b309190613606565b60405180910390fd5b505f8385612b479190614304565b9050809150509392505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808284612c009190613bf9565b905083811015612c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3c90614381565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb4906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614162565b60405180910390fd5b612d368383836131be565b612d9f816040518060600160405280602681526020016145cc602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e2e815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ecb91906137d6565b60405180910390a3505050565b5f612ee2306114d6565b90505f601754601654612ef59190613bf9565b90505f80831480612f0557505f82145b15612f12575050506130fc565b5f1515600f60019054906101000a900460ff16151503612f59576014600d54612f3b9190613c92565b831115612f54576014600d54612f519190613c92565b92505b612f65565b612f62306114d6565b92505b5f60028360165486612f779190613c92565b612f819190613d00565b612f8b9190613d00565b90505f612fa182866131c390919063ffffffff16565b90505f479050612fb08261320c565b5f612fc482476131c390919063ffffffff16565b90505f612fee87612fe0601754856130fe90919063ffffffff16565b61317590919063ffffffff16565b90505f8183612ffd9190614304565b90505f6016819055505f6017819055505f8611801561301b57505f81115b156130685761302a8682613442565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161305f9392919061439f565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ad90613b50565b5f6040518083038185875af1925050503d805f81146130e7576040519150601f19603f3d011682016040523d82523d5f602084013e6130ec565b606091505b5050809750505050505050505050505b565b5f80830361310e575f905061316f565b5f828461311b9190613c92565b905082848261312a9190613d00565b1461316a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316190614444565b60405180910390fd5b809150505b92915050565b5f6131b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061351b565b905092915050565b505050565b5f61320483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612af2565b905092915050565b5f600267ffffffffffffffff81111561322857613227614462565b5b6040519080825280602002602001820160405280156132565781602001602082028036833780820191505090505b50905030815f8151811061326d5761326c61448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613311573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133359190613c40565b816001815181106133495761334861448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133af3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613411959493929190614573565b5f604051808303815f87803b158015613428575f80fd5b505af115801561343a573d5f803e3d5ffd5b505050505050565b61346e3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016134d396959493929190613d69565b60606040518083038185885af11580156134ef573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135149190613ddc565b5050505050565b5f8083118290613561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135589190613606565b60405180910390fd5b505f838561356f9190613d00565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135b3578082015181840152602081019050613598565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135d88261357c565b6135e28185613586565b93506135f2818560208601613596565b6135fb816135be565b840191505092915050565b5f6020820190508181035f83015261361e81846135ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136538261362a565b9050919050565b61366381613649565b811461366d575f80fd5b50565b5f8135905061367e8161365a565b92915050565b5f819050919050565b61369681613684565b81146136a0575f80fd5b50565b5f813590506136b18161368d565b92915050565b5f80604083850312156136cd576136cc613626565b5b5f6136da85828601613670565b92505060206136eb858286016136a3565b9150509250929050565b5f8115159050919050565b613709816136f5565b82525050565b5f6020820190506137225f830184613700565b92915050565b5f6020828403121561373d5761373c613626565b5b5f61374a84828501613670565b91505092915050565b5f819050919050565b5f61377661377161376c8461362a565b613753565b61362a565b9050919050565b5f6137878261375c565b9050919050565b5f6137988261377d565b9050919050565b6137a88161378e565b82525050565b5f6020820190506137c15f83018461379f565b92915050565b6137d081613684565b82525050565b5f6020820190506137e95f8301846137c7565b92915050565b5f805f806080858703121561380757613806613626565b5b5f613814878288016136a3565b9450506020613825878288016136a3565b9350506040613836878288016136a3565b9250506060613847878288016136a3565b91505092959194509250565b5f805f6060848603121561386a57613869613626565b5b5f61387786828701613670565b935050602061388886828701613670565b9250506040613899868287016136a3565b9150509250925092565b5f60ff82169050919050565b6138b8816138a3565b82525050565b5f6020820190506138d15f8301846138af565b92915050565b6138e081613649565b82525050565b5f6020820190506138f95f8301846138d7565b92915050565b613908816136f5565b8114613912575f80fd5b50565b5f81359050613923816138ff565b92915050565b5f806040838503121561393f5761393e613626565b5b5f61394c85828601613670565b925050602061395d85828601613915565b9150509250929050565b5f6020828403121561397c5761397b613626565b5b5f61398984828501613915565b91505092915050565b5f80604083850312156139a8576139a7613626565b5b5f6139b585828601613670565b92505060206139c685828601613670565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a1457607f821691505b602082108103613a2757613a266139d0565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a61602083613586565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aef602283613586565b9150613afa82613a95565b604082019050919050565b5f6020820190508181035f830152613b1c81613ae3565b9050919050565b5f81905092915050565b50565b5f613b3b5f83613b23565b9150613b4682613b2d565b5f82019050919050565b5f613b5a82613b30565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613b98601b83613586565b9150613ba382613b64565b602082019050919050565b5f6020820190508181035f830152613bc581613b8c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c0382613684565b9150613c0e83613684565b9250828201905080821115613c2657613c25613bcc565b5b92915050565b5f81519050613c3a8161365a565b92915050565b5f60208284031215613c5557613c54613626565b5b5f613c6284828501613c2c565b91505092915050565b5f604082019050613c7e5f8301856138d7565b613c8b60208301846138d7565b9392505050565b5f613c9c82613684565b9150613ca783613684565b9250828202613cb581613684565b91508282048414831517613ccc57613ccb613bcc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d0a82613684565b9150613d1583613684565b925082613d2557613d24613cd3565b5b828204905092915050565b5f819050919050565b5f613d53613d4e613d4984613d30565b613753565b613684565b9050919050565b613d6381613d39565b82525050565b5f60c082019050613d7c5f8301896138d7565b613d8960208301886137c7565b613d966040830187613d5a565b613da36060830186613d5a565b613db060808301856138d7565b613dbd60a08301846137c7565b979650505050505050565b5f81519050613dd68161368d565b92915050565b5f805f60608486031215613df357613df2613626565b5b5f613e0086828701613dc8565b9350506020613e1186828701613dc8565b9250506040613e2286828701613dc8565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e86603983613586565b9150613e9182613e2c565b604082019050919050565b5f6020820190508181035f830152613eb381613e7a565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613f14602483613586565b9150613f1f82613eba565b604082019050919050565b5f6020820190508181035f830152613f4181613f08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613fa2602483613586565b9150613fad82613f48565b604082019050919050565b5f6020820190508181035f830152613fcf81613f96565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614030602283613586565b915061403b82613fd6565b604082019050919050565b5f6020820190508181035f83015261405d81614024565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140be602583613586565b91506140c982614064565b604082019050919050565b5f6020820190508181035f8301526140eb816140b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61414c602383613586565b9150614157826140f2565b604082019050919050565b5f6020820190508181035f83015261417981614140565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6141da603583613586565b91506141e582614180565b604082019050919050565b5f6020820190508181035f830152614207816141ce565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614242601383613586565b915061424d8261420e565b602082019050919050565b5f6020820190508181035f83015261426f81614236565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6142d0603683613586565b91506142db82614276565b604082019050919050565b5f6020820190508181035f8301526142fd816142c4565b9050919050565b5f61430e82613684565b915061431983613684565b925082820390508181111561433157614330613bcc565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61436b601b83613586565b915061437682614337565b602082019050919050565b5f6020820190508181035f8301526143988161435f565b9050919050565b5f6060820190506143b25f8301866137c7565b6143bf60208301856137c7565b6143cc60408301846137c7565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442e602183613586565b9150614439826143d4565b604082019050919050565b5f6020820190508181035f83015261445b81614422565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6144ee81613649565b82525050565b5f6144ff83836144e5565b60208301905092915050565b5f602082019050919050565b5f614521826144bc565b61452b81856144c6565b9350614536836144d6565b805f5b8381101561456657815161454d88826144f4565b97506145588361450b565b925050600181019050614539565b5085935050505092915050565b5f60a0820190506145865f8301886137c7565b6145936020830187613d5a565b81810360408301526145a58186614517565b90506145b460608301856138d7565b6145c160808301846137c7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc523e3b232f95a388b662cf7fd72a47a602d37de409b48f524f41febeff7e4264736f6c63430008150033

Deployed Bytecode

0x60806040526004361061025f575f3560e01c80636c7e15c911610143578063a457c2d7116100b5578063c024666811610079578063c0246668146108c4578063c3f70b52146108ec578063dd62ed3e14610916578063df6f93be14610952578063e11d22cf1461097c578063f2fde38b1461099257610266565b8063a457c2d7146107bc578063a9059cbb146107f8578063b62496f514610834578063b69ef8a814610870578063be8575041461089a57610266565b80638da5cb5b116101075780638da5cb5b146106d6578063945674fe1461070057806395d89b411461072a5780639a7a23d6146107545780639ee2e9241461077c5780639fccce321461079257610266565b80636c7e15c91461060a57806370a0823114610634578063715018a6146106705780637571336a14610686578063863cf2cc146106ae57610266565b80631d9305bf116101dc57806339509351116101a057806339509351146104ea57806346469afb1461052657806348d791551461055057806349bd5a5e1461057a5780634fbee193146105a45780635de0f2a0146105e057610266565b80631d9305bf1461041c57806322eb66311461044457806323b872dd1461046e5780632c28f579146104aa578063313ce567146104c057610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613606565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906136b7565b610a4a565b6040516102c7919061370f565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061370f565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b5061033660048036038101906103319190613728565b610c22565b604051610343919061370f565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d91906137ae565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b60405161039791906137d6565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613728565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e991906137d6565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b60405161041391906137d6565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d91906137ef565b610dcd565b005b34801561044f575f80fd5b50610458610eb1565b60405161046591906137d6565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190613853565b610eb7565b6040516104a1919061370f565b60405180910390f35b3480156104b5575f80fd5b506104be610f8b565b005b3480156104cb575f80fd5b506104d4611391565b6040516104e191906138be565b60405180910390f35b3480156104f5575f80fd5b50610510600480360381019061050b91906136b7565b611399565b60405161051d919061370f565b60405180910390f35b348015610531575f80fd5b5061053a611447565b60405161054791906137d6565b60405180910390f35b34801561055b575f80fd5b5061056461144d565b60405161057191906137d6565b60405180910390f35b348015610585575f80fd5b5061058e611453565b60405161059b91906138e6565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c59190613728565b611478565b6040516105d7919061370f565b60405180910390f35b3480156105eb575f80fd5b506105f46114ca565b60405161060191906137d6565b60405180910390f35b348015610615575f80fd5b5061061e6114d0565b60405161062b91906137d6565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613728565b6114d6565b60405161066791906137d6565b60405180910390f35b34801561067b575f80fd5b5061068461151b565b005b348015610691575f80fd5b506106ac60048036038101906106a79190613929565b61166e565b005b3480156106b9575f80fd5b506106d460048036038101906106cf9190613967565b61175c565b005b3480156106e1575f80fd5b506106ea61180f565b6040516106f791906138e6565b60405180910390f35b34801561070b575f80fd5b50610714611837565b604051610721919061370f565b60405180910390f35b348015610735575f80fd5b5061073e61184a565b60405161074b9190613606565b60405180910390f35b34801561075f575f80fd5b5061077a60048036038101906107759190613929565b6118da565b005b348015610787575f80fd5b50610790611a0d565b005b34801561079d575f80fd5b506107a6611b20565b6040516107b391906137d6565b60405180910390f35b3480156107c7575f80fd5b506107e260048036038101906107dd91906136b7565b611b26565b6040516107ef919061370f565b60405180910390f35b348015610803575f80fd5b5061081e600480360381019061081991906136b7565b611bee565b60405161082b919061370f565b60405180910390f35b34801561083f575f80fd5b5061085a60048036038101906108559190613728565b611c0b565b604051610867919061370f565b60405180910390f35b34801561087b575f80fd5b50610884611c28565b60405161089191906137d6565b60405180910390f35b3480156108a5575f80fd5b506108ae611c2e565b6040516108bb91906137d6565b60405180910390f35b3480156108cf575f80fd5b506108ea60048036038101906108e59190613929565b611c34565b005b3480156108f7575f80fd5b50610900611d70565b60405161090d91906137d6565b60405180910390f35b348015610921575f80fd5b5061093c60048036038101906109379190613992565b611d76565b60405161094991906137d6565b60405180910390f35b34801561095d575f80fd5b50610966611df8565b60405161097391906137d6565b60405180910390f35b348015610987575f80fd5b50610990611dfe565b005b34801561099d575f80fd5b506109b860048036038101906109b39190613728565b611eaf565b005b6060600380546109c9906139fd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f5906139fd565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56612003565b848461200a565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a81612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613a77565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613b05565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b90613b50565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613bae565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c75612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90613a77565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b610dd5612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90613a77565b60405180910390fd5b8360118190555081601281905550601254601154610e819190613bf9565b6010819055508260148190555080601581905550601554601454610ea59190613bf9565b60138190555050505050565b60145481565b5f610ec38484846121cd565b610f8084610ecf612003565b610f7b856040518060600160405280602881526020016145f26028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f32612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b600190509392505050565b610f93612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890613a77565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061104481600161166e565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f19190613c40565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117a9190613c40565b6040518363ffffffff1660e01b8152600401611197929190613c6b565b6020604051808303815f875af11580156111b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190613c40565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124260095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161166e565b61126e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612b54565b5f4790505f60646055611280306114d6565b61128a9190613c92565b6112949190613d00565b90506112c23060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161134896959493929190613d69565b60606040518083038185885af1158015611364573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113899190613ddc565b505050505050565b5f6012905090565b5f61143d6113a5612003565b846114388560015f6113b5612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b61200a565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611523612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613a77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611676612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613a77565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611764612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613a77565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b606060048054611859906139fd565b80601f0160208091040260200160405190810160405280929190818152602001828054611885906139fd565b80156118d05780601f106118a7576101008083540402835291602001916118d0565b820191905f5260205f20905b8154815290600101906020018083116118b357829003601f168201915b5050505050905090565b6118e2612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613a77565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690613e9c565b60405180910390fd5b611a098282612b54565b5050565b611a15612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90613a77565b60405180910390fd5b5f611aad306114d6565b90505f8111611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae890613f2a565b60405180910390fd5b611b1d30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121cd565b50565b60175481565b5f611be4611b32612003565b84611bdf8560405180606001604052806025815260200161461a6025913960015f611b5b612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b6001905092915050565b5f611c01611bfa612003565b84846121cd565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611c3c612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613a77565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d64919061370f565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611e06612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613a77565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b611eb7612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613a77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90613fb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614046565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121c091906137d6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090614162565b60405180910390fd5b5f81036122c0576122bb83835f612c4f565b612aed565b600f5f9054906101000a900460ff16156126b5576122dc61180f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561234a575061231a61180f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d55750600960149054906101000a900460ff16155b156126b457601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124775750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561251e57600c548111156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906141f0565b60405180910390fd5b600e546124cd836114d6565b826124d89190613bf9565b1115612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614258565b60405180910390fd5b6126b3565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125bb5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561260a57600c54811115612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc906142e6565b60405180910390fd5b6126b2565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126b157600e54612664836114d6565b8261266f9190613bf9565b11156126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790614258565b60405180910390fd5b5b5b5b5b5b5f6126bf306114d6565b90505f600d5482101590508080156126e45750600960149054906101000a900460ff16155b80156127375750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561278a575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127dd575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612820576001600960146101000a81548160ff021916908315150217905550612805612ed8565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128cf575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128d8575f90505b5f8115612add57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561293657505f601354115b156129ce576129636064612955601354886130fe90919063ffffffff16565b61317590919063ffffffff16565b9050601354601554826129769190613c92565b6129809190613d00565b60165f8282546129909190613bf9565b92505081905550601354601454826129a89190613c92565b6129b29190613d00565b60175f8282546129c29190613bf9565b92505081905550612aba565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a2557505f601054115b15612ab957612a526064612a44601054886130fe90919063ffffffff16565b61317590919063ffffffff16565b905060105460125482612a659190613c92565b612a6f9190613d00565b60165f828254612a7f9190613bf9565b9250508190555060105460115482612a979190613c92565b612aa19190613d00565b60175f828254612ab19190613bf9565b925050819055505b5b5f811115612ace57612acd873083612c4f565b5b8085612ada9190614304565b94505b612ae8878787612c4f565b505050505b505050565b5f838311158290612b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b309190613606565b60405180910390fd5b505f8385612b479190614304565b9050809150509392505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808284612c009190613bf9565b905083811015612c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3c90614381565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb4906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614162565b60405180910390fd5b612d368383836131be565b612d9f816040518060600160405280602681526020016145cc602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e2e815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ecb91906137d6565b60405180910390a3505050565b5f612ee2306114d6565b90505f601754601654612ef59190613bf9565b90505f80831480612f0557505f82145b15612f12575050506130fc565b5f1515600f60019054906101000a900460ff16151503612f59576014600d54612f3b9190613c92565b831115612f54576014600d54612f519190613c92565b92505b612f65565b612f62306114d6565b92505b5f60028360165486612f779190613c92565b612f819190613d00565b612f8b9190613d00565b90505f612fa182866131c390919063ffffffff16565b90505f479050612fb08261320c565b5f612fc482476131c390919063ffffffff16565b90505f612fee87612fe0601754856130fe90919063ffffffff16565b61317590919063ffffffff16565b90505f8183612ffd9190614304565b90505f6016819055505f6017819055505f8611801561301b57505f81115b156130685761302a8682613442565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161305f9392919061439f565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ad90613b50565b5f6040518083038185875af1925050503d805f81146130e7576040519150601f19603f3d011682016040523d82523d5f602084013e6130ec565b606091505b5050809750505050505050505050505b565b5f80830361310e575f905061316f565b5f828461311b9190613c92565b905082848261312a9190613d00565b1461316a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316190614444565b60405180910390fd5b809150505b92915050565b5f6131b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061351b565b905092915050565b505050565b5f61320483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612af2565b905092915050565b5f600267ffffffffffffffff81111561322857613227614462565b5b6040519080825280602002602001820160405280156132565781602001602082028036833780820191505090505b50905030815f8151811061326d5761326c61448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613311573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133359190613c40565b816001815181106133495761334861448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133af3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613411959493929190614573565b5f604051808303815f87803b158015613428575f80fd5b505af115801561343a573d5f803e3d5ffd5b505050505050565b61346e3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016134d396959493929190613d69565b60606040518083038185885af11580156134ef573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135149190613ddc565b5050505050565b5f8083118290613561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135589190613606565b60405180910390fd5b505f838561356f9190613d00565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135b3578082015181840152602081019050613598565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135d88261357c565b6135e28185613586565b93506135f2818560208601613596565b6135fb816135be565b840191505092915050565b5f6020820190508181035f83015261361e81846135ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136538261362a565b9050919050565b61366381613649565b811461366d575f80fd5b50565b5f8135905061367e8161365a565b92915050565b5f819050919050565b61369681613684565b81146136a0575f80fd5b50565b5f813590506136b18161368d565b92915050565b5f80604083850312156136cd576136cc613626565b5b5f6136da85828601613670565b92505060206136eb858286016136a3565b9150509250929050565b5f8115159050919050565b613709816136f5565b82525050565b5f6020820190506137225f830184613700565b92915050565b5f6020828403121561373d5761373c613626565b5b5f61374a84828501613670565b91505092915050565b5f819050919050565b5f61377661377161376c8461362a565b613753565b61362a565b9050919050565b5f6137878261375c565b9050919050565b5f6137988261377d565b9050919050565b6137a88161378e565b82525050565b5f6020820190506137c15f83018461379f565b92915050565b6137d081613684565b82525050565b5f6020820190506137e95f8301846137c7565b92915050565b5f805f806080858703121561380757613806613626565b5b5f613814878288016136a3565b9450506020613825878288016136a3565b9350506040613836878288016136a3565b9250506060613847878288016136a3565b91505092959194509250565b5f805f6060848603121561386a57613869613626565b5b5f61387786828701613670565b935050602061388886828701613670565b9250506040613899868287016136a3565b9150509250925092565b5f60ff82169050919050565b6138b8816138a3565b82525050565b5f6020820190506138d15f8301846138af565b92915050565b6138e081613649565b82525050565b5f6020820190506138f95f8301846138d7565b92915050565b613908816136f5565b8114613912575f80fd5b50565b5f81359050613923816138ff565b92915050565b5f806040838503121561393f5761393e613626565b5b5f61394c85828601613670565b925050602061395d85828601613915565b9150509250929050565b5f6020828403121561397c5761397b613626565b5b5f61398984828501613915565b91505092915050565b5f80604083850312156139a8576139a7613626565b5b5f6139b585828601613670565b92505060206139c685828601613670565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a1457607f821691505b602082108103613a2757613a266139d0565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a61602083613586565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aef602283613586565b9150613afa82613a95565b604082019050919050565b5f6020820190508181035f830152613b1c81613ae3565b9050919050565b5f81905092915050565b50565b5f613b3b5f83613b23565b9150613b4682613b2d565b5f82019050919050565b5f613b5a82613b30565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613b98601b83613586565b9150613ba382613b64565b602082019050919050565b5f6020820190508181035f830152613bc581613b8c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c0382613684565b9150613c0e83613684565b9250828201905080821115613c2657613c25613bcc565b5b92915050565b5f81519050613c3a8161365a565b92915050565b5f60208284031215613c5557613c54613626565b5b5f613c6284828501613c2c565b91505092915050565b5f604082019050613c7e5f8301856138d7565b613c8b60208301846138d7565b9392505050565b5f613c9c82613684565b9150613ca783613684565b9250828202613cb581613684565b91508282048414831517613ccc57613ccb613bcc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d0a82613684565b9150613d1583613684565b925082613d2557613d24613cd3565b5b828204905092915050565b5f819050919050565b5f613d53613d4e613d4984613d30565b613753565b613684565b9050919050565b613d6381613d39565b82525050565b5f60c082019050613d7c5f8301896138d7565b613d8960208301886137c7565b613d966040830187613d5a565b613da36060830186613d5a565b613db060808301856138d7565b613dbd60a08301846137c7565b979650505050505050565b5f81519050613dd68161368d565b92915050565b5f805f60608486031215613df357613df2613626565b5b5f613e0086828701613dc8565b9350506020613e1186828701613dc8565b9250506040613e2286828701613dc8565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e86603983613586565b9150613e9182613e2c565b604082019050919050565b5f6020820190508181035f830152613eb381613e7a565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613f14602483613586565b9150613f1f82613eba565b604082019050919050565b5f6020820190508181035f830152613f4181613f08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613fa2602483613586565b9150613fad82613f48565b604082019050919050565b5f6020820190508181035f830152613fcf81613f96565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614030602283613586565b915061403b82613fd6565b604082019050919050565b5f6020820190508181035f83015261405d81614024565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140be602583613586565b91506140c982614064565b604082019050919050565b5f6020820190508181035f8301526140eb816140b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61414c602383613586565b9150614157826140f2565b604082019050919050565b5f6020820190508181035f83015261417981614140565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6141da603583613586565b91506141e582614180565b604082019050919050565b5f6020820190508181035f830152614207816141ce565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614242601383613586565b915061424d8261420e565b602082019050919050565b5f6020820190508181035f83015261426f81614236565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6142d0603683613586565b91506142db82614276565b604082019050919050565b5f6020820190508181035f8301526142fd816142c4565b9050919050565b5f61430e82613684565b915061431983613684565b925082820390508181111561433157614330613bcc565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61436b601b83613586565b915061437682614337565b602082019050919050565b5f6020820190508181035f8301526143988161435f565b9050919050565b5f6060820190506143b25f8301866137c7565b6143bf60208301856137c7565b6143cc60408301846137c7565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442e602183613586565b9150614439826143d4565b604082019050919050565b5f6020820190508181035f83015261445b81614422565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6144ee81613649565b82525050565b5f6144ff83836144e5565b60208301905092915050565b5f602082019050919050565b5f614521826144bc565b61452b81856144c6565b9350614536836144d6565b805f5b8381101561456657815161454d88826144f4565b97506145588361450b565b925050600181019050614539565b5085935050505092915050565b5f60a0820190506145865f8301886137c7565b6145936020830187613d5a565b81810360408301526145a58186614517565b90506145b460608301856138d7565b6145c160808301846137c7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc523e3b232f95a388b662cf7fd72a47a602d37de409b48f524f41febeff7e4264736f6c63430008150033

Deployed Bytecode Sourcemap

17546:12474:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4809:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5723:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18015:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21996:311;;;;;;;;;;;;;:::i;:::-;;18588:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17716:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5130:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23977:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18297:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18196:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22941:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18230:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5900:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20941:1037;;;;;;;;;;;;;:::i;:::-;;5029:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6263:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18098:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17974:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17764:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24150:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17932:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18131:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5246:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10790:148;;;;;;;;;;;;;:::i;:::-;;22785:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22669:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10576:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18052:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4917:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23526:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22315:256;;;;;;;;;;;;;:::i;:::-;;18337:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6489:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5381:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18811:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17832:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18262:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23335:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17896:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5564:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18162:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22579:81;;;;;;;;;;;;;:::i;:::-;;10946:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4809:100;4863:13;4896:5;4889:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4809:100;:::o;5723:169::-;5806:4;5823:39;5832:12;:10;:12::i;:::-;5846:7;5855:6;5823:8;:39::i;:::-;5880:4;5873:11;;5723:169;;;;:::o;18015:30::-;;;;;;;;;;;;;:::o;21996:311::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22052:18:::1;22073:21;22052:42;;22126:1;22113:10;:14;22105:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22178:12;22203:9;;;;;;;;;;;22195:23;;22226:10;22195:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22177:64;;;22260:7;22252:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22041:266;;21996:311::o:0;18588:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17716:41::-;;;;;;;;;;;;;:::o;5130:108::-;5191:7;5218:12;;5211:19;;5130:108;:::o;23977:165::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24089:9:::1;;;;;;;;;;;24058:41;;24075:12;24058:41;;;;;;;;;;;;24122:12;24110:9;;:24;;;;;;;;;;;;;;;;;;23977:165:::0;:::o;18297:33::-;;;;:::o;18196:27::-;;;;:::o;22941:386::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23114:7:::1;23102:9;:19;;;;23144:7;23132:9;:19;;;;23188:9;;23176;;:21;;;;:::i;:::-;23162:11;:35;;;;23221:8;23208:10;:21;;;;23253:8;23240:10;:21;;;;23300:10;;23287;;:23;;;;:::i;:::-;23272:12;:38;;;;22941:386:::0;;;;:::o;18230:25::-;;;;:::o;5900:355::-;6040:4;6057:36;6067:6;6075:9;6086:6;6057:9;:36::i;:::-;6104:121;6113:6;6121:12;:10;:12::i;:::-;6135:89;6173:6;6135:89;;;;;;;;;;;;;;;;;:11;:19;6147:6;6135:19;;;;;;;;;;;;;;;:33;6155:12;:10;:12::i;:::-;6135:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6104:8;:121::i;:::-;6243:4;6236:11;;5900:355;;;;;:::o;20941:1037::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20994:35:::1;21051:42;20994:100;;21108:58;21142:16;21161:4;21108:25;:58::i;:::-;21195:16;21177:15;;:34;;;;;;;;;;;;;;;;;;21259:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21241:56;;;21306:4;21313:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21241:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21225:13;;:112;;;;;;;;;;;;;;;;;;21348:55;21382:13;;;;;;;;;;;21398:4;21348:25;:55::i;:::-;21414:58;21451:13;;;;;;;;;;;21467:4;21414:28;:58::i;:::-;21493:17;21513:21;21493:41;;21545:19;21599:3;21594:2;21567:24;21585:4;21567:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;21545:57;;21633:62;21650:4;21665:15;;;;;;;;;;;21683:11;21633:8;:62::i;:::-;21708:15;;;;;;;;;;;:31;;;21747:9;21780:4;21800:11;21830:1;21877::::0;21920:9:::1;;;;;;;;;;;21944:15;21708:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20977:1001;;;20941:1037::o:0;5029:93::-;5087:5;5112:2;5105:9;;5029:93;:::o;6263:218::-;6351:4;6368:83;6377:12;:10;:12::i;:::-;6391:7;6400:50;6439:10;6400:11;:25;6412:12;:10;:12::i;:::-;6400:25;;;;;;;;;;;;;;;:34;6426:7;6400:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6368:8;:83::i;:::-;6469:4;6462:11;;6263:218;;;;:::o;18098:26::-;;;;:::o;17974:31::-;;;;:::o;17764:28::-;;;;;;;;;;;;;:::o;24150:125::-;24215:4;24239:19;:28;24259:7;24239:28;;;;;;;;;;;;;;;;;;;;;;;;;24232:35;;24150:125;;;:::o;17932:35::-;;;;:::o;18131:24::-;;;;:::o;5246:127::-;5320:7;5347:9;:18;5357:7;5347:18;;;;;;;;;;;;;;;;5340:25;;5246:127;;;:::o;10790:148::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10897:1:::1;10860:40;;10881:6;;;;;;;;;;;10860:40;;;;;;;;;;;;10928:1;10911:6;;:19;;;;;;;;;;;;;;;;;;10790:148::o:0;22785:144::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22917:4:::1;22875:31;:39;22907:6;22875:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22785:144:::0;;:::o;22669:107::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22761:7:::1;22741:17;;:27;;;;;;;;;;;;;;;;;;22669:107:::0;:::o;10576:79::-;10614:7;10641:6;;;;;;;;;;;10634:13;;10576:79;:::o;18052:37::-;;;;;;;;;;;;;:::o;4917:104::-;4973:13;5006:7;4999:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4917:104;:::o;23526:245::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23633:13:::1;;;;;;;;;;;23625:21;;:4;:21;;::::0;23617:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23722:41;23751:4;23757:5;23722:28;:41::i;:::-;23526:245:::0;;:::o;22315:256::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22380:20:::1;22403:24;22421:4;22403:9;:24::i;:::-;22380:47;;22461:1;22446:12;:16;22438:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22514:49;22532:4;22539:9;;;;;;;;;;;22550:12;22514:9;:49::i;:::-;22369:202;22315:256::o:0;18337:27::-;;;;:::o;6489:269::-;6582:4;6599:129;6608:12;:10;:12::i;:::-;6622:7;6631:96;6670:15;6631:96;;;;;;;;;;;;;;;;;:11;:25;6643:12;:10;:12::i;:::-;6631:25;;;;;;;;;;;;;;;:34;6657:7;6631:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6599:8;:129::i;:::-;6746:4;6739:11;;6489:269;;;;:::o;5381:175::-;5467:4;5484:42;5494:12;:10;:12::i;:::-;5508:9;5519:6;5484:9;:42::i;:::-;5544:4;5537:11;;5381:175;;;;:::o;18811:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17832:22::-;;;;:::o;18262:25::-;;;;:::o;23335:182::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23451:8:::1;23420:19;:28;23440:7;23420:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23491:7;23475:34;;;23500:8;23475:34;;;;;;:::i;:::-;;;;;;;;23335:182:::0;;:::o;17896:29::-;;;;:::o;5564:151::-;5653:7;5680:11;:18;5692:5;5680:18;;;;;;;;;;;;;;;:27;5699:7;5680:27;;;;;;;;;;;;;;;;5673:34;;5564:151;;;;:::o;18162:24::-;;;;:::o;22579:81::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22647:5:::1;22633:11;;:19;;;;;;;;;;;;;;;;;;22579:81::o:0;10946:169::-;10713:12;:10;:12::i;:::-;10703:22;;:6;;;;;;;;;;;:22;;;10695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11070:8:::1;11041:38;;11062:6;;;;;;;;;;;11041:38;;;;;;;;;;;;11099:8;11090:6;;:17;;;;;;;;;;;;;;;;;;10946:169:::0;:::o;162:98::-;215:7;242:10;235:17;;162:98;:::o;8165:381::-;8318:1;8301:19;;:5;:19;;;8293:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8399:1;8380:21;;:7;:21;;;8372:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8484:6;8454:11;:18;8466:5;8454:18;;;;;;;;;;;;;;;:27;8473:7;8454:27;;;;;;;;;;;;;;;:36;;;;8522:7;8506:32;;8515:5;8506:32;;;8531:6;8506:32;;;;;;:::i;:::-;;;;;;;;8165:381;;;:::o;24284:3112::-;24432:1;24416:18;;:4;:18;;;24408:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24509:1;24495:16;;:2;:16;;;24487:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24576:1;24566:6;:11;24563:92;;24594:28;24610:4;24616:2;24620:1;24594:15;:28::i;:::-;24637:7;;24563:92;24671:11;;;;;;;;;;;24668:1083;;;24728:7;:5;:7::i;:::-;24720:15;;:4;:15;;;;:49;;;;;24762:7;:5;:7::i;:::-;24756:13;;:2;:13;;;;24720:49;:86;;;;;24804:1;24790:16;;:2;:16;;;;24720:86;:128;;;;;24841:6;24827:21;;:2;:21;;;;24720:128;:160;;;;;24870:10;;;;;;;;;;;24869:11;24720:160;24698:1042;;;24964:25;:31;24990:4;24964:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25000:31;:35;25032:2;25000:35;;;;;;;;;;;;;;;;;;;;;;;;;24999:36;24964:71;24960:765;;;25082:14;;25072:6;:24;;25064:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25215:16;;25198:13;25208:2;25198:9;:13::i;:::-;25189:6;:22;;;;:::i;:::-;:42;;25181:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;24960:765;;;25334:25;:29;25360:2;25334:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25368:31;:37;25400:4;25368:37;;;;;;;;;;;;;;;;;;;;;;;;;25367:38;25334:71;25330:395;;;25452:14;;25442:6;:24;;25434:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25330:395;;;25572:31;:35;25604:2;25572:35;;;;;;;;;;;;;;;;;;;;;;;;;25568:157;;25665:16;;25648:13;25658:2;25648:9;:13::i;:::-;25639:6;:22;;;;:::i;:::-;:42;;25631:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25568:157;25330:395;24960:765;24698:1042;24668:1083;25764:28;25795:24;25813:4;25795:9;:24::i;:::-;25764:55;;25833:12;25872:20;;25848;:44;;25833:59;;25924:7;:35;;;;;25949:10;;;;;;;;;;;25948:11;25924:35;:84;;;;;25977:25;:31;26003:4;25977:31;;;;;;;;;;;;;;;;;;;;;;;;;25976:32;25924:84;:127;;;;;26026:19;:25;26046:4;26026:25;;;;;;;;;;;;;;;;;;;;;;;;;26025:26;25924:127;:168;;;;;26069:19;:23;26089:2;26069:23;;;;;;;;;;;;;;;;;;;;;;;;;26068:24;25924:168;25906:306;;;26132:4;26119:10;;:17;;;;;;;;;;;;;;;;;;26154:10;:8;:10::i;:::-;26195:5;26182:10;;:18;;;;;;;;;;;;;;;;;;25906:306;26225:12;26241:10;;;;;;;;;;;26240:11;26225:26;;26353:19;:25;26373:4;26353:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26382:19;:23;26402:2;26382:23;;;;;;;;;;;;;;;;;;;;;;;;;26353:52;26350:99;;;26432:5;26422:15;;26350:99;26462:12;26566:7;26563:779;;;26617:25;:29;26643:2;26617:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;26665:1;26650:12;;:16;26617:49;26613:576;;;26693:33;26722:3;26693:24;26704:12;;26693:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26686:40;;26787:12;;26774:10;;26767:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26745:18;;:54;;;;;;;:::i;:::-;;;;;;;;26854:12;;26841:10;;26834:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26818:12;;:48;;;;;;;:::i;:::-;;;;;;;;26613:576;;;26927:25;:31;26953:4;26927:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26976:1;26962:11;;:15;26927:50;26924:265;;;27005:32;27033:3;27005:23;27016:11;;27005:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;26998:39;;27097:11;;27085:9;;27078:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27056:18;;:52;;;;;;;:::i;:::-;;;;;;;;27162:11;;27150:9;;27143:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27127:12;;:46;;;;;;;:::i;:::-;;;;;;;;26924:265;26613:576;27216:1;27209:4;:8;27206:93;;;27241:42;27257:4;27271;27278;27241:15;:42::i;:::-;27206:93;27326:4;27316:14;;;;;:::i;:::-;;;26563:779;27355:33;27371:4;27377:2;27381:6;27355:15;:33::i;:::-;24397:2999;;;;24284:3112;;;;:::o;9053:193::-;9139:7;9172:1;9167;:6;;9175:12;9159:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9199:9;9215:1;9211;:5;;;;:::i;:::-;9199:17;;9237:1;9230:8;;;9053:193;;;;;:::o;23780:189::-;23897:5;23863:25;:31;23889:4;23863:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23955:5;23921:40;;23949:4;23921:40;;;;;;;;;;;;23780:189;;:::o;8719:182::-;8777:7;8797:9;8813:1;8809;:5;;;;:::i;:::-;8797:17;;8838:1;8833;:6;;8825:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8892:1;8885:8;;;8719:182;;;;:::o;6766:575::-;6924:1;6906:20;;:6;:20;;;6898:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7008:1;6987:23;;:9;:23;;;6979:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7064:47;7085:6;7093:9;7104:6;7064:20;:47::i;:::-;7145:71;7167:6;7145:71;;;;;;;;;;;;;;;;;:9;:17;7155:6;7145:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7125:9;:17;7135:6;7125:17;;;;;;;;;;;;;;;:91;;;;7250:32;7275:6;7250:9;:20;7260:9;7250:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7227:9;:20;7237:9;7227:20;;;;;;;;;;;;;;;:55;;;;7315:9;7298:35;;7307:6;7298:35;;;7326:6;7298:35;;;;;;:::i;:::-;;;;;;;;6766:575;;;:::o;28540:1477::-;28579:23;28605:24;28623:4;28605:9;:24::i;:::-;28579:50;;28640:25;28689:12;;28668:18;;:33;;;;:::i;:::-;28640:61;;28712:12;28760:1;28741:15;:20;:46;;;;28786:1;28765:17;:22;28741:46;28738:60;;;28790:7;;;;;28738:60;28835:5;28814:26;;:17;;;;;;;;;;;:26;;;28811:254;;28900:2;28877:20;;:25;;;;:::i;:::-;28859:15;:43;28856:125;;;28963:2;28940:20;;:25;;;;:::i;:::-;28922:43;;28856:125;28811:254;;;29029:24;29047:4;29029:9;:24::i;:::-;29011:42;;28811:254;29137:23;29222:1;29202:17;29181:18;;29163:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;29137:86;;29234:26;29263:36;29283:15;29263;:19;;:36;;;;:::i;:::-;29234:65;;29313:25;29341:21;29313:49;;29376:36;29393:18;29376:16;:36::i;:::-;29427:18;29448:44;29474:17;29448:21;:25;;:44;;;;:::i;:::-;29427:65;;29506:17;29526:51;29559:17;29526:28;29541:12;;29526:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;29506:71;;29588:23;29627:9;29614:10;:22;;;;:::i;:::-;29588:48;;29674:1;29653:18;:22;;;;29701:1;29686:12;:16;;;;29737:1;29719:15;:19;:42;;;;;29760:1;29742:15;:19;29719:42;29716:210;;;29777:46;29790:15;29807;29777:12;:46::i;:::-;29843:71;29858:18;29878:15;29895:18;;29843:71;;;;;;;;:::i;:::-;;;;;;;;29716:210;29960:9;;;;;;;;;;;29952:23;;29983:21;29952:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29939:70;;;;;28568:1449;;;;;;;;;28540:1477;:::o;9254:254::-;9312:7;9343:1;9338;:6;9334:47;;9368:1;9361:8;;;;9334:47;9394:9;9410:1;9406;:5;;;;:::i;:::-;9394:17;;9439:1;9434;9430;:5;;;;:::i;:::-;:10;9422:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9499:1;9492:8;;;9254:254;;;;;:::o;9516:132::-;9574:7;9601:39;9605:1;9608;9601:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9594:46;;9516:132;;;;:::o;8554:125::-;;;;:::o;8909:136::-;8967:7;8994:43;8998:1;9001;8994:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8987:50;;8909:136;;;;:::o;27405:597::-;27534:21;27572:1;27558:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27534:40;;27603:4;27585;27590:1;27585:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27629:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27619:4;27624:1;27619:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27665:62;27682:4;27697:15;;;;;;;;;;;27715:11;27665:8;:62::i;:::-;27767:15;;;;;;;;;;;:66;;;27848:11;27874:1;27918:4;27945;27965:15;27767:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27460:542;27405:597;:::o;28011:520::-;28159:62;28176:4;28191:15;;;;;;;;;;;28209:11;28159:8;:62::i;:::-;28265:15;;;;;;;;;;;:31;;;28304:9;28337:4;28357:11;28383:1;28426;28477:4;28497:15;28265:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28011:520;;:::o;9656:279::-;9742:7;9774:1;9770;:5;9777:12;9762:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9801:9;9817:1;9813;:5;;;;:::i;:::-;9801:17;;9926:1;9919:8;;;9656:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:765::-;5197:6;5205;5213;5221;5270:3;5258:9;5249:7;5245:23;5241:33;5238:120;;;5277:79;;:::i;:::-;5238:120;5397:1;5422:53;5467:7;5458:6;5447:9;5443:22;5422:53;:::i;:::-;5412:63;;5368:117;5524:2;5550:53;5595:7;5586:6;5575:9;5571:22;5550:53;:::i;:::-;5540:63;;5495:118;5652:2;5678:53;5723:7;5714:6;5703:9;5699:22;5678:53;:::i;:::-;5668:63;;5623:118;5780:2;5806:53;5851:7;5842:6;5831:9;5827:22;5806:53;:::i;:::-;5796:63;;5751:118;5111:765;;;;;;;:::o;5882:619::-;5959:6;5967;5975;6024:2;6012:9;6003:7;5999:23;5995:32;5992:119;;;6030:79;;:::i;:::-;5992:119;6150:1;6175:53;6220:7;6211:6;6200:9;6196:22;6175:53;:::i;:::-;6165:63;;6121:117;6277:2;6303:53;6348:7;6339:6;6328:9;6324:22;6303:53;:::i;:::-;6293:63;;6248:118;6405:2;6431:53;6476:7;6467:6;6456:9;6452:22;6431:53;:::i;:::-;6421:63;;6376:118;5882:619;;;;;:::o;6507:86::-;6542:7;6582:4;6575:5;6571:16;6560:27;;6507:86;;;:::o;6599:112::-;6682:22;6698:5;6682:22;:::i;:::-;6677:3;6670:35;6599:112;;:::o;6717:214::-;6806:4;6844:2;6833:9;6829:18;6821:26;;6857:67;6921:1;6910:9;6906:17;6897:6;6857:67;:::i;:::-;6717:214;;;;:::o;6937:118::-;7024:24;7042:5;7024:24;:::i;:::-;7019:3;7012:37;6937:118;;:::o;7061:222::-;7154:4;7192:2;7181:9;7177:18;7169:26;;7205:71;7273:1;7262:9;7258:17;7249:6;7205:71;:::i;:::-;7061:222;;;;:::o;7289:116::-;7359:21;7374:5;7359:21;:::i;:::-;7352:5;7349:32;7339:60;;7395:1;7392;7385:12;7339:60;7289:116;:::o;7411:133::-;7454:5;7492:6;7479:20;7470:29;;7508:30;7532:5;7508:30;:::i;:::-;7411:133;;;;:::o;7550:468::-;7615:6;7623;7672:2;7660:9;7651:7;7647:23;7643:32;7640:119;;;7678:79;;:::i;:::-;7640:119;7798:1;7823:53;7868:7;7859:6;7848:9;7844:22;7823:53;:::i;:::-;7813:63;;7769:117;7925:2;7951:50;7993:7;7984:6;7973:9;7969:22;7951:50;:::i;:::-;7941:60;;7896:115;7550:468;;;;;:::o;8024:323::-;8080:6;8129:2;8117:9;8108:7;8104:23;8100:32;8097:119;;;8135:79;;:::i;:::-;8097:119;8255:1;8280:50;8322:7;8313:6;8302:9;8298:22;8280:50;:::i;:::-;8270:60;;8226:114;8024:323;;;;:::o;8353:474::-;8421:6;8429;8478:2;8466:9;8457:7;8453:23;8449:32;8446:119;;;8484:79;;:::i;:::-;8446:119;8604:1;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8575:117;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8353:474;;;;;:::o;8833:180::-;8881:77;8878:1;8871:88;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9019:320;9063:6;9100:1;9094:4;9090:12;9080:22;;9147:1;9141:4;9137:12;9168:18;9158:81;;9224:4;9216:6;9212:17;9202:27;;9158:81;9286:2;9278:6;9275:14;9255:18;9252:38;9249:84;;9305:18;;:::i;:::-;9249:84;9070:269;9019:320;;;:::o;9345:182::-;9485:34;9481:1;9473:6;9469:14;9462:58;9345:182;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9533:366;;;:::o;9905:419::-;10071:4;10109:2;10098:9;10094:18;10086:26;;10158:9;10152:4;10148:20;10144:1;10133:9;10129:17;10122:47;10186:131;10312:4;10186:131;:::i;:::-;10178:139;;9905:419;;;:::o;10330:221::-;10470:34;10466:1;10458:6;10454:14;10447:58;10539:4;10534:2;10526:6;10522:15;10515:29;10330:221;:::o;10557:366::-;10699:3;10720:67;10784:2;10779:3;10720:67;:::i;:::-;10713:74;;10796:93;10885:3;10796:93;:::i;:::-;10914:2;10909:3;10905:12;10898:19;;10557:366;;;:::o;10929:419::-;11095:4;11133:2;11122:9;11118:18;11110:26;;11182:9;11176:4;11172:20;11168:1;11157:9;11153:17;11146:47;11210:131;11336:4;11210:131;:::i;:::-;11202:139;;10929:419;;;:::o;11354:147::-;11455:11;11492:3;11477:18;;11354:147;;;;:::o;11507:114::-;;:::o;11627:398::-;11786:3;11807:83;11888:1;11883:3;11807:83;:::i;:::-;11800:90;;11899:93;11988:3;11899:93;:::i;:::-;12017:1;12012:3;12008:11;12001:18;;11627:398;;;:::o;12031:379::-;12215:3;12237:147;12380:3;12237:147;:::i;:::-;12230:154;;12401:3;12394:10;;12031:379;;;:::o;12416:177::-;12556:29;12552:1;12544:6;12540:14;12533:53;12416:177;:::o;12599:366::-;12741:3;12762:67;12826:2;12821:3;12762:67;:::i;:::-;12755:74;;12838:93;12927:3;12838:93;:::i;:::-;12956:2;12951:3;12947:12;12940:19;;12599:366;;;:::o;12971:419::-;13137:4;13175:2;13164:9;13160:18;13152:26;;13224:9;13218:4;13214:20;13210:1;13199:9;13195:17;13188:47;13252:131;13378:4;13252:131;:::i;:::-;13244:139;;12971:419;;;:::o;13396:180::-;13444:77;13441:1;13434:88;13541:4;13538:1;13531:15;13565:4;13562:1;13555:15;13582:191;13622:3;13641:20;13659:1;13641:20;:::i;:::-;13636:25;;13675:20;13693:1;13675:20;:::i;:::-;13670:25;;13718:1;13715;13711:9;13704:16;;13739:3;13736:1;13733:10;13730:36;;;13746:18;;:::i;:::-;13730:36;13582:191;;;;:::o;13779:143::-;13836:5;13867:6;13861:13;13852:22;;13883:33;13910:5;13883:33;:::i;:::-;13779:143;;;;:::o;13928:351::-;13998:6;14047:2;14035:9;14026:7;14022:23;14018:32;14015:119;;;14053:79;;:::i;:::-;14015:119;14173:1;14198:64;14254:7;14245:6;14234:9;14230:22;14198:64;:::i;:::-;14188:74;;14144:128;13928:351;;;;:::o;14285:332::-;14406:4;14444:2;14433:9;14429:18;14421:26;;14457:71;14525:1;14514:9;14510:17;14501:6;14457:71;:::i;:::-;14538:72;14606:2;14595:9;14591:18;14582:6;14538:72;:::i;:::-;14285:332;;;;;:::o;14623:410::-;14663:7;14686:20;14704:1;14686:20;:::i;:::-;14681:25;;14720:20;14738:1;14720:20;:::i;:::-;14715:25;;14775:1;14772;14768:9;14797:30;14815:11;14797:30;:::i;:::-;14786:41;;14976:1;14967:7;14963:15;14960:1;14957:22;14937:1;14930:9;14910:83;14887:139;;15006:18;;:::i;:::-;14887:139;14671:362;14623:410;;;;:::o;15039:180::-;15087:77;15084:1;15077:88;15184:4;15181:1;15174:15;15208:4;15205:1;15198:15;15225:185;15265:1;15282:20;15300:1;15282:20;:::i;:::-;15277:25;;15316:20;15334:1;15316:20;:::i;:::-;15311:25;;15355:1;15345:35;;15360:18;;:::i;:::-;15345:35;15402:1;15399;15395:9;15390:14;;15225:185;;;;:::o;15416:85::-;15461:7;15490:5;15479:16;;15416:85;;;:::o;15507:158::-;15565:9;15598:61;15616:42;15625:32;15651:5;15625:32;:::i;:::-;15616:42;:::i;:::-;15598:61;:::i;:::-;15585:74;;15507:158;;;:::o;15671:147::-;15766:45;15805:5;15766:45;:::i;:::-;15761:3;15754:58;15671:147;;:::o;15824:807::-;16073:4;16111:3;16100:9;16096:19;16088:27;;16125:71;16193:1;16182:9;16178:17;16169:6;16125:71;:::i;:::-;16206:72;16274:2;16263:9;16259:18;16250:6;16206:72;:::i;:::-;16288:80;16364:2;16353:9;16349:18;16340:6;16288:80;:::i;:::-;16378;16454:2;16443:9;16439:18;16430:6;16378:80;:::i;:::-;16468:73;16536:3;16525:9;16521:19;16512:6;16468:73;:::i;:::-;16551;16619:3;16608:9;16604:19;16595:6;16551:73;:::i;:::-;15824:807;;;;;;;;;:::o;16637:143::-;16694:5;16725:6;16719:13;16710:22;;16741:33;16768:5;16741:33;:::i;:::-;16637:143;;;;:::o;16786:663::-;16874:6;16882;16890;16939:2;16927:9;16918:7;16914:23;16910:32;16907:119;;;16945:79;;:::i;:::-;16907:119;17065:1;17090:64;17146:7;17137:6;17126:9;17122:22;17090:64;:::i;:::-;17080:74;;17036:128;17203:2;17229:64;17285:7;17276:6;17265:9;17261:22;17229:64;:::i;:::-;17219:74;;17174:129;17342:2;17368:64;17424:7;17415:6;17404:9;17400:22;17368:64;:::i;:::-;17358:74;;17313:129;16786:663;;;;;:::o;17455:244::-;17595:34;17591:1;17583:6;17579:14;17572:58;17664:27;17659:2;17651:6;17647:15;17640:52;17455:244;:::o;17705:366::-;17847:3;17868:67;17932:2;17927:3;17868:67;:::i;:::-;17861:74;;17944:93;18033:3;17944:93;:::i;:::-;18062:2;18057:3;18053:12;18046:19;;17705:366;;;:::o;18077:419::-;18243:4;18281:2;18270:9;18266:18;18258:26;;18330:9;18324:4;18320:20;18316:1;18305:9;18301:17;18294:47;18358:131;18484:4;18358:131;:::i;:::-;18350:139;;18077:419;;;:::o;18502:223::-;18642:34;18638:1;18630:6;18626:14;18619:58;18711:6;18706:2;18698:6;18694:15;18687:31;18502:223;:::o;18731:366::-;18873:3;18894:67;18958:2;18953:3;18894:67;:::i;:::-;18887:74;;18970:93;19059:3;18970:93;:::i;:::-;19088:2;19083:3;19079:12;19072:19;;18731:366;;;:::o;19103:419::-;19269:4;19307:2;19296:9;19292:18;19284:26;;19356:9;19350:4;19346:20;19342:1;19331:9;19327:17;19320:47;19384:131;19510:4;19384:131;:::i;:::-;19376:139;;19103:419;;;:::o;19528:223::-;19668:34;19664:1;19656:6;19652:14;19645:58;19737:6;19732:2;19724:6;19720:15;19713:31;19528:223;:::o;19757:366::-;19899:3;19920:67;19984:2;19979:3;19920:67;:::i;:::-;19913:74;;19996:93;20085:3;19996:93;:::i;:::-;20114:2;20109:3;20105:12;20098:19;;19757:366;;;:::o;20129:419::-;20295:4;20333:2;20322:9;20318:18;20310:26;;20382:9;20376:4;20372:20;20368:1;20357:9;20353:17;20346:47;20410:131;20536:4;20410:131;:::i;:::-;20402:139;;20129:419;;;:::o;20554:221::-;20694:34;20690:1;20682:6;20678:14;20671:58;20763:4;20758:2;20750:6;20746:15;20739:29;20554:221;:::o;20781:366::-;20923:3;20944:67;21008:2;21003:3;20944:67;:::i;:::-;20937:74;;21020:93;21109:3;21020:93;:::i;:::-;21138:2;21133:3;21129:12;21122:19;;20781:366;;;:::o;21153:419::-;21319:4;21357:2;21346:9;21342:18;21334:26;;21406:9;21400:4;21396:20;21392:1;21381:9;21377:17;21370:47;21434:131;21560:4;21434:131;:::i;:::-;21426:139;;21153:419;;;:::o;21578:224::-;21718:34;21714:1;21706:6;21702:14;21695:58;21787:7;21782:2;21774:6;21770:15;21763:32;21578:224;:::o;21808:366::-;21950:3;21971:67;22035:2;22030:3;21971:67;:::i;:::-;21964:74;;22047:93;22136:3;22047:93;:::i;:::-;22165:2;22160:3;22156:12;22149:19;;21808:366;;;:::o;22180:419::-;22346:4;22384:2;22373:9;22369:18;22361:26;;22433:9;22427:4;22423:20;22419:1;22408:9;22404:17;22397:47;22461:131;22587:4;22461:131;:::i;:::-;22453:139;;22180:419;;;:::o;22605:222::-;22745:34;22741:1;22733:6;22729:14;22722:58;22814:5;22809:2;22801:6;22797:15;22790:30;22605:222;:::o;22833:366::-;22975:3;22996:67;23060:2;23055:3;22996:67;:::i;:::-;22989:74;;23072:93;23161:3;23072:93;:::i;:::-;23190:2;23185:3;23181:12;23174:19;;22833:366;;;:::o;23205:419::-;23371:4;23409:2;23398:9;23394:18;23386:26;;23458:9;23452:4;23448:20;23444:1;23433:9;23429:17;23422:47;23486:131;23612:4;23486:131;:::i;:::-;23478:139;;23205:419;;;:::o;23630:240::-;23770:34;23766:1;23758:6;23754:14;23747:58;23839:23;23834:2;23826:6;23822:15;23815:48;23630:240;:::o;23876:366::-;24018:3;24039:67;24103:2;24098:3;24039:67;:::i;:::-;24032:74;;24115:93;24204:3;24115:93;:::i;:::-;24233:2;24228:3;24224:12;24217:19;;23876:366;;;:::o;24248:419::-;24414:4;24452:2;24441:9;24437:18;24429:26;;24501:9;24495:4;24491:20;24487:1;24476:9;24472:17;24465:47;24529:131;24655:4;24529:131;:::i;:::-;24521:139;;24248:419;;;:::o;24673:169::-;24813:21;24809:1;24801:6;24797:14;24790:45;24673:169;:::o;24848:366::-;24990:3;25011:67;25075:2;25070:3;25011:67;:::i;:::-;25004:74;;25087:93;25176:3;25087:93;:::i;:::-;25205:2;25200:3;25196:12;25189:19;;24848:366;;;:::o;25220:419::-;25386:4;25424:2;25413:9;25409:18;25401:26;;25473:9;25467:4;25463:20;25459:1;25448:9;25444:17;25437:47;25501:131;25627:4;25501:131;:::i;:::-;25493:139;;25220:419;;;:::o;25645:241::-;25785:34;25781:1;25773:6;25769:14;25762:58;25854:24;25849:2;25841:6;25837:15;25830:49;25645:241;:::o;25892:366::-;26034:3;26055:67;26119:2;26114:3;26055:67;:::i;:::-;26048:74;;26131:93;26220:3;26131:93;:::i;:::-;26249:2;26244:3;26240:12;26233:19;;25892:366;;;:::o;26264:419::-;26430:4;26468:2;26457:9;26453:18;26445:26;;26517:9;26511:4;26507:20;26503:1;26492:9;26488:17;26481:47;26545:131;26671:4;26545:131;:::i;:::-;26537:139;;26264:419;;;:::o;26689:194::-;26729:4;26749:20;26767:1;26749:20;:::i;:::-;26744:25;;26783:20;26801:1;26783:20;:::i;:::-;26778:25;;26827:1;26824;26820:9;26812:17;;26851:1;26845:4;26842:11;26839:37;;;26856:18;;:::i;:::-;26839:37;26689:194;;;;:::o;26889:177::-;27029:29;27025:1;27017:6;27013:14;27006:53;26889:177;:::o;27072:366::-;27214:3;27235:67;27299:2;27294:3;27235:67;:::i;:::-;27228:74;;27311:93;27400:3;27311:93;:::i;:::-;27429:2;27424:3;27420:12;27413:19;;27072:366;;;:::o;27444:419::-;27610:4;27648:2;27637:9;27633:18;27625:26;;27697:9;27691:4;27687:20;27683:1;27672:9;27668:17;27661:47;27725:131;27851:4;27725:131;:::i;:::-;27717:139;;27444:419;;;:::o;27869:442::-;28018:4;28056:2;28045:9;28041:18;28033:26;;28069:71;28137:1;28126:9;28122:17;28113:6;28069:71;:::i;:::-;28150:72;28218:2;28207:9;28203:18;28194:6;28150:72;:::i;:::-;28232;28300:2;28289:9;28285:18;28276:6;28232:72;:::i;:::-;27869:442;;;;;;:::o;28317:220::-;28457:34;28453:1;28445:6;28441:14;28434:58;28526:3;28521:2;28513:6;28509:15;28502:28;28317:220;:::o;28543:366::-;28685:3;28706:67;28770:2;28765:3;28706:67;:::i;:::-;28699:74;;28782:93;28871:3;28782:93;:::i;:::-;28900:2;28895:3;28891:12;28884:19;;28543:366;;;:::o;28915:419::-;29081:4;29119:2;29108:9;29104:18;29096:26;;29168:9;29162:4;29158:20;29154:1;29143:9;29139:17;29132:47;29196:131;29322:4;29196:131;:::i;:::-;29188:139;;28915:419;;;:::o;29340:180::-;29388:77;29385:1;29378:88;29485:4;29482:1;29475:15;29509:4;29506:1;29499:15;29526:180;29574:77;29571:1;29564:88;29671:4;29668:1;29661:15;29695:4;29692:1;29685:15;29712:114;29779:6;29813:5;29807:12;29797:22;;29712:114;;;:::o;29832:184::-;29931:11;29965:6;29960:3;29953:19;30005:4;30000:3;29996:14;29981:29;;29832:184;;;;:::o;30022:132::-;30089:4;30112:3;30104:11;;30142:4;30137:3;30133:14;30125:22;;30022:132;;;:::o;30160:108::-;30237:24;30255:5;30237:24;:::i;:::-;30232:3;30225:37;30160:108;;:::o;30274:179::-;30343:10;30364:46;30406:3;30398:6;30364:46;:::i;:::-;30442:4;30437:3;30433:14;30419:28;;30274:179;;;;:::o;30459:113::-;30529:4;30561;30556:3;30552:14;30544:22;;30459:113;;;:::o;30608:732::-;30727:3;30756:54;30804:5;30756:54;:::i;:::-;30826:86;30905:6;30900:3;30826:86;:::i;:::-;30819:93;;30936:56;30986:5;30936:56;:::i;:::-;31015:7;31046:1;31031:284;31056:6;31053:1;31050:13;31031:284;;;31132:6;31126:13;31159:63;31218:3;31203:13;31159:63;:::i;:::-;31152:70;;31245:60;31298:6;31245:60;:::i;:::-;31235:70;;31091:224;31078:1;31075;31071:9;31066:14;;31031:284;;;31035:14;31331:3;31324:10;;30732:608;;;30608:732;;;;:::o;31346:831::-;31609:4;31647:3;31636:9;31632:19;31624:27;;31661:71;31729:1;31718:9;31714:17;31705:6;31661:71;:::i;:::-;31742:80;31818:2;31807:9;31803:18;31794:6;31742:80;:::i;:::-;31869:9;31863:4;31859:20;31854:2;31843:9;31839:18;31832:48;31897:108;32000:4;31991:6;31897:108;:::i;:::-;31889:116;;32015:72;32083:2;32072:9;32068:18;32059:6;32015:72;:::i;:::-;32097:73;32165:3;32154:9;32150:19;32141:6;32097:73;:::i;:::-;31346:831;;;;;;;;:::o

Swarm Source

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