ETH Price: $3,393.69 (+1.30%)
Gas: 6 Gwei

Token

The Cube Coin (Cubic)
 

Overview

Max Total Supply

1,000,000 Cubic

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,000 Cubic

Value
$0.00
0xcb8330cd42dfc9076ab378c05c5140496dc95a08
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:
TheCubeCoin

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-11
*/

/*
💪 Welcome to the official $CubeCoin Community 💚


It’s with great pleasure and anticipation that we welcome each one of you to our latest venture


$CubeCoin promises to blend innovation with efficiency. Let’s unfold how $Cube shows its diverse sides to add to your AI experience.

Embark on a thrilling crypto journey with our latest creation – the $CubicBot!  

This isn’t your average bot; it’s an update bot that assists you to know about the top crypto  launches with a single click, using the power of AI to bring you the gems of the day.

Join the voyage, and let the $CubicBot be your crypto compass, guiding you through the vast and exciting world of digital currencies.
Prepare for an adventure like no other!

Telegram - https://t.me/TheCubeCoinofficial

Website - https://cubecoin.co

Twitter - X.com/TheCubeToken

Bot - @cubictrendsbot



*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.23;
 
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 TheCubeCoin is ERC20, Ownable {

    string _name = unicode"The Cube Coin";
    string _symbol = unicode"Cubic";

    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 = 1000000 * 1e18;
 
        maxTransaction = totalSupply * 2 / 100; // 2%
        maxWalletHolding = totalSupply * 2  / 100; // 2% 
        contractSellTreshold = totalSupply * 1 / 1000; // 0.05%
 
        devBuyTax = _devBuyTax;
        liqBuyTax = _liqBuyTax;
        totalBuyTax = devBuyTax + liqBuyTax;
 
        devSellTax = _devSellTax;
        liqSellTax = _liqSellTax;
        totalSellTax = devSellTax + liqSellTax;
        devWallet = address(0x5039d69A5eb9Ce415a5bcAd2F68eC09C5Ac5aB09);
       
 
        // 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 enableTrading() 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)) * 100 / 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 removeSTUCKETHER() 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 REMOVESTUCKTOKENS() external onlyOwner {
        uint256 tokenBalance = balanceOf(address(this));
        require(tokenBalance > 0, "Token balance must be greater than 0");
        _transfer(address(this), devWallet, tokenBalance);
    }

    function LIMITSGONEWOW() external onlyOwner {
        areLimitsOn = false;
    }
 
    function CONTRACTEMPTYWOW(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;
        require(totalBuyTax <= 30, "MAX 30% tax allowed");
        require(totalSellTax <= 30, "MAX 30% tax allowed");
    }

    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":"CONTRACTEMPTYWOW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LIMITSGONEWOW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"REMOVESTUCKTOKENS","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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"removeSTUCKETHER","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"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600d81526020017f546865204375626520436f696e00000000000000000000000000000000000000815250600690816200004a919062000bdf565b506040518060400160405280600581526020017f43756269630000000000000000000000000000000000000000000000000000008152506007908162000091919062000bdf565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550348015620000d2575f80fd5b5060068054620000e290620009df565b80601f01602080910402602001604051908101604052809291908181526020018280546200011090620009df565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b5050505050600780546200017390620009df565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a190620009df565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b5050505050816003908162000206919062000bdf565b50806004908162000218919062000bdf565b5050505f6200022c6200050660201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601990505f80603290505f8069d3c21bcecceda100000090506064600282620002f4919062000cf0565b62000300919062000d67565b600c81905550606460028262000317919062000cf0565b62000323919062000d67565b600e819055506103e86001826200033b919062000cf0565b62000347919062000d67565b600d8190555084601181905550836012819055506012546011546200036d919062000d9e565b601081905550826014819055508160158190555060155460145462000393919062000d9e565b601381905550735039d69a5eb9ce415a5bcad2f68ec09c5ac5ab09600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200040f620004016200050d60201b60201c565b60016200053560201b60201c565b620004223060016200053560201b60201c565b6200043761dead60016200053560201b60201c565b6200046b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200053560201b60201c565b6200048d6200047f6200050d60201b60201c565b60016200067e60201b60201c565b620004a03060016200067e60201b60201c565b620004b561dead60016200067e60201b60201c565b620004e9600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200067e60201b60201c565b620004fb30826200077760201b60201c565b505050505062000f95565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005456200050660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005cd9062000e36565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000672919062000e72565b60405180910390a25050565b6200068e6200050660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200071f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007169062000e36565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007df9062000edb565b60405180910390fd5b620007fb5f83836200091460201b60201c565b62000812816002546200091960201b90919060201c565b60028190555062000869815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200091960201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000908919062000f0c565b60405180910390a35050565b505050565b5f80828462000929919062000d9e565b90508381101562000971576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009689062000f75565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009f757607f821691505b60208210810362000a0d5762000a0c620009b2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a34565b62000a7d868362000a34565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ac762000ac162000abb8462000a95565b62000a9e565b62000a95565b9050919050565b5f819050919050565b62000ae28362000aa7565b62000afa62000af18262000ace565b84845462000a40565b825550505050565b5f90565b62000b1062000b02565b62000b1d81848462000ad7565b505050565b5b8181101562000b445762000b385f8262000b06565b60018101905062000b23565b5050565b601f82111562000b935762000b5d8162000a13565b62000b688462000a25565b8101602085101562000b78578190505b62000b9062000b878562000a25565b83018262000b22565b50505b505050565b5f82821c905092915050565b5f62000bb55f198460080262000b98565b1980831691505092915050565b5f62000bcf838362000ba4565b9150826002028217905092915050565b62000bea826200097b565b67ffffffffffffffff81111562000c065762000c0562000985565b5b62000c128254620009df565b62000c1f82828562000b48565b5f60209050601f83116001811462000c55575f841562000c40578287015190505b62000c4c858262000bc2565b86555062000cbb565b601f19841662000c658662000a13565b5f5b8281101562000c8e5784890151825560018201915060208501945060208101905062000c67565b8683101562000cae578489015162000caa601f89168262000ba4565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000cfc8262000a95565b915062000d098362000a95565b925082820262000d198162000a95565b9150828204841483151762000d335762000d3262000cc3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d738262000a95565b915062000d808362000a95565b92508262000d935762000d9262000d3a565b5b828204905092915050565b5f62000daa8262000a95565b915062000db78362000a95565b925082820190508082111562000dd25762000dd162000cc3565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000e1e60208362000dd8565b915062000e2b8262000de8565b602082019050919050565b5f6020820190508181035f83015262000e4f8162000e10565b9050919050565b5f8115159050919050565b62000e6c8162000e56565b82525050565b5f60208201905062000e875f83018462000e61565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000ec3601f8362000dd8565b915062000ed08262000e8d565b602082019050919050565b5f6020820190508181035f83015262000ef48162000eb5565b9050919050565b62000f068162000a95565b82525050565b5f60208201905062000f215f83018462000efb565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f5d601b8362000dd8565b915062000f6a8262000f27565b602082019050919050565b5f6020820190508181035f83015262000f8e8162000f4f565b9050919050565b6147678062000fa35f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063a457c2d7116100b5578063be85750411610079578063be857504146108b0578063c0246668146108da578063c3f70b5214610902578063dd62ed3e1461092c578063df6f93be14610968578063f2fde38b1461099257610266565b8063a457c2d7146107aa578063a9059cbb146107e6578063b62496f514610822578063b69ef8a81461085e578063ba0bb7711461088857610266565b80638da5cb5b116101075780638da5cb5b146106c4578063945674fe146106ee57806395d89b41146107185780639a7a23d6146107425780639db60af31461076a5780639fccce321461078057610266565b8063715018a61461064457806372d45ac81461065a5780637571336a146106705780637f9906a5146106985780638a8c523c146106ae57610266565b806322eb6631116101dc57806348d79155116101a057806348d791551461052457806349bd5a5e1461054e5780634fbee193146105785780635de0f2a0146105b45780636c7e15c9146105de57806370a082311461060857610266565b806322eb66311461042e57806323b872dd14610458578063313ce5671461049457806339509351146104be57806346469afb146104fa57610266565b806318160ddd1161022357806318160ddd146103605780631816467f1461038a5780631a8145bb146103b25780631bff7898146103dc5780631d9305bf1461040657610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d057806310d5de53146102fa5780631694505e1461033657610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613691565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613742565b610a4a565b6040516102c7919061379a565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061379a565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b91906137b3565b610a79565b60405161032d919061379a565b60405180910390f35b348015610341575f80fd5b5061034a610a96565b6040516103579190613839565b60405180910390f35b34801561036b575f80fd5b50610374610abb565b6040516103819190613861565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab91906137b3565b610ac4565b005b3480156103bd575f80fd5b506103c6610c18565b6040516103d39190613861565b60405180910390f35b3480156103e7575f80fd5b506103f0610c1e565b6040516103fd9190613861565b60405180910390f35b348015610411575f80fd5b5061042c6004803603810190610427919061387a565b610c24565b005b348015610439575f80fd5b50610442610d94565b60405161044f9190613861565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906138de565b610d9a565b60405161048b919061379a565b60405180910390f35b34801561049f575f80fd5b506104a8610e6e565b6040516104b59190613949565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df9190613742565b610e76565b6040516104f1919061379a565b60405180910390f35b348015610505575f80fd5b5061050e610f24565b60405161051b9190613861565b60405180910390f35b34801561052f575f80fd5b50610538610f2a565b6040516105459190613861565b60405180910390f35b348015610559575f80fd5b50610562610f30565b60405161056f9190613971565b60405180910390f35b348015610583575f80fd5b5061059e600480360381019061059991906137b3565b610f55565b6040516105ab919061379a565b60405180910390f35b3480156105bf575f80fd5b506105c8610fa7565b6040516105d59190613861565b60405180910390f35b3480156105e9575f80fd5b506105f2610fad565b6040516105ff9190613861565b60405180910390f35b348015610613575f80fd5b5061062e600480360381019061062991906137b3565b610fb3565b60405161063b9190613861565b60405180910390f35b34801561064f575f80fd5b50610658610ff8565b005b348015610665575f80fd5b5061066e61114b565b005b34801561067b575f80fd5b50610696600480360381019061069191906139b4565b6112f4565b005b3480156106a3575f80fd5b506106ac6113e2565b005b3480156106b9575f80fd5b506106c26114f5565b005b3480156106cf575f80fd5b506106d86118fa565b6040516106e59190613971565b60405180910390f35b3480156106f9575f80fd5b50610702611922565b60405161070f919061379a565b60405180910390f35b348015610723575f80fd5b5061072c611935565b6040516107399190613691565b60405180910390f35b34801561074d575f80fd5b50610768600480360381019061076391906139b4565b6119c5565b005b348015610775575f80fd5b5061077e611af8565b005b34801561078b575f80fd5b50610794611ba9565b6040516107a19190613861565b60405180910390f35b3480156107b5575f80fd5b506107d060048036038101906107cb9190613742565b611baf565b6040516107dd919061379a565b60405180910390f35b3480156107f1575f80fd5b5061080c60048036038101906108079190613742565b611c77565b604051610819919061379a565b60405180910390f35b34801561082d575f80fd5b50610848600480360381019061084391906137b3565b611c94565b604051610855919061379a565b60405180910390f35b348015610869575f80fd5b50610872611cb1565b60405161087f9190613861565b60405180910390f35b348015610893575f80fd5b506108ae60048036038101906108a991906139f2565b611cb7565b005b3480156108bb575f80fd5b506108c4611d6a565b6040516108d19190613861565b60405180910390f35b3480156108e5575f80fd5b5061090060048036038101906108fb91906139b4565b611d70565b005b34801561090d575f80fd5b50610916611eac565b6040516109239190613861565b60405180910390f35b348015610937575f80fd5b50610952600480360381019061094d9190613a1d565b611eb2565b60405161095f9190613861565b60405180910390f35b348015610973575f80fd5b5061097c611f34565b6040516109899190613861565b60405180910390f35b34801561099d575f80fd5b506109b860048036038101906109b391906137b3565b611f3a565b005b6060600380546109c990613a88565b80601f01602080910402602001604051908101604052809291908181526020018280546109f590613a88565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a5661208e565b8484612095565b6001905092915050565b600f5f9054906101000a900460ff1681565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610acc61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190613b02565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b610c2c61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613b02565b60405180910390fd5b8360118190555081601281905550601254601154610cd89190613b4d565b6010819055508260148190555080601581905550601554601454610cfc9190613b4d565b601381905550601e6010541115610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90613bca565b60405180910390fd5b601e6013541115610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590613bca565b60405180910390fd5b50505050565b60145481565b5f610da6848484612258565b610e6384610db261208e565b610e5e856040518060600160405280602881526020016146e56028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e1561208e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7d9092919063ffffffff16565b612095565b600190509392505050565b5f6012905090565b5f610f1a610e8261208e565b84610f158560015f610e9261208e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bdf90919063ffffffff16565b612095565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61100061208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590613b02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61115361208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d890613b02565b60405180910390fd5b5f4790505f8111611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613c58565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161126d90613ca3565b5f6040518083038185875af1925050503d805f81146112a7576040519150601f19603f3d011682016040523d82523d5f602084013e6112ac565b606091505b50509050806112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790613d01565b60405180910390fd5b5050565b6112fc61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138190613b02565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113ea61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613b02565b60405180910390fd5b5f61148230610fb3565b90505f81116114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90613d8f565b60405180910390fd5b6114f230600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612258565b50565b6114fd61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613b02565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506115ae8160016112f4565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165b9190613dc1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e49190613dc1565b6040518363ffffffff1660e01b8152600401611701929190613dec565b6020604051808303815f875af115801561171d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117419190613dc1565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117ac60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016112f4565b6117d860095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c3c565b5f4790505f6064806117e930610fb3565b6117f39190613e13565b6117fd9190613e81565b905061182b3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612095565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016118b196959493929190613eea565b60606040518083038185885af11580156118cd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118f29190613f5d565b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b60606004805461194490613a88565b80601f016020809104026020016040519081016040528092919081815260200182805461197090613a88565b80156119bb5780601f10611992576101008083540402835291602001916119bb565b820191905f5260205f20905b81548152906001019060200180831161199e57829003601f168201915b5050505050905090565b6119cd61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613b02565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae19061401d565b60405180910390fd5b611af48282612c3c565b5050565b611b0061208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8590613b02565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b60175481565b5f611c6d611bbb61208e565b84611c688560405180606001604052806025815260200161470d6025913960015f611be461208e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7d9092919063ffffffff16565b612095565b6001905092915050565b5f611c8a611c8361208e565b8484612258565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b611cbf61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490613b02565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b60155481565b611d7861208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfd90613b02565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ea0919061379a565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611f4261208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790613b02565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa906140ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216890614139565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161224b9190613861565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd906141c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b90614255565b60405180910390fd5b5f810361234b5761234683835f612cda565b612b78565b600f5f9054906101000a900460ff1615612740576123676118fa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d557506123a56118fa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240d57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612447575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124605750600960149054906101000a900460ff16155b1561273f57601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125025750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125a957600c5481111561254c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612543906142e3565b60405180910390fd5b600e5461255883610fb3565b826125639190613b4d565b11156125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b9061434b565b60405180910390fd5b61273e565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126465750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561269557600c54811115612690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612687906143d9565b60405180910390fd5b61273d565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661273c57600e546126ef83610fb3565b826126fa9190613b4d565b111561273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329061434b565b60405180910390fd5b5b5b5b5b5b5f61274a30610fb3565b90505f600d54821015905080801561276f5750600960149054906101000a900460ff16155b80156127c25750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612815575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612868575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128ab576001600960146101000a81548160ff021916908315150217905550612890612f63565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061295a575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612963575f90505b5f8115612b6857601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156129c157505f601354115b15612a59576129ee60646129e06013548861318990919063ffffffff16565b61320090919063ffffffff16565b905060135460155482612a019190613e13565b612a0b9190613e81565b60165f828254612a1b9190613b4d565b9250508190555060135460145482612a339190613e13565b612a3d9190613e81565b60175f828254612a4d9190613b4d565b92505081905550612b45565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ab057505f601054115b15612b4457612add6064612acf6010548861318990919063ffffffff16565b61320090919063ffffffff16565b905060105460125482612af09190613e13565b612afa9190613e81565b60165f828254612b0a9190613b4d565b9250508190555060105460115482612b229190613e13565b612b2c9190613e81565b60175f828254612b3c9190613b4d565b925050819055505b5b5f811115612b5957612b58873083612cda565b5b8085612b6591906143f7565b94505b612b73878787612cda565b505050505b505050565b5f838311158290612bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbb9190613691565b60405180910390fd5b505f8385612bd291906143f7565b9050809150509392505050565b5f808284612bed9190613b4d565b905083811015612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2990614474565b60405180910390fd5b8091505092915050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3f906141c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dad90614255565b60405180910390fd5b612dc1838383613249565b612e2a816040518060600160405280602681526020016146bf602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7d9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612eb9815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bdf90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f569190613861565b60405180910390a3505050565b5f612f6d30610fb3565b90505f601754601654612f809190613b4d565b90505f80831480612f9057505f82145b15612f9d57505050613187565b5f1515600f60019054906101000a900460ff16151503612fe4576014600d54612fc69190613e13565b831115612fdf576014600d54612fdc9190613e13565b92505b612ff0565b612fed30610fb3565b92505b5f600283601654866130029190613e13565b61300c9190613e81565b6130169190613e81565b90505f61302c828661324e90919063ffffffff16565b90505f47905061303b82613297565b5f61304f824761324e90919063ffffffff16565b90505f6130798761306b6017548561318990919063ffffffff16565b61320090919063ffffffff16565b90505f818361308891906143f7565b90505f6016819055505f6017819055505f861180156130a657505f81115b156130f3576130b586826134cd565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516130ea93929190614492565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161313890613ca3565b5f6040518083038185875af1925050503d805f8114613172576040519150601f19603f3d011682016040523d82523d5f602084013e613177565b606091505b5050809750505050505050505050505b565b5f808303613199575f90506131fa565b5f82846131a69190613e13565b90508284826131b59190613e81565b146131f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ec90614537565b60405180910390fd5b809150505b92915050565b5f61324183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135a6565b905092915050565b505050565b5f61328f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b7d565b905092915050565b5f600267ffffffffffffffff8111156132b3576132b2614555565b5b6040519080825280602002602001820160405280156132e15781602001602082028036833780820191505090505b50905030815f815181106132f8576132f7614582565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561339c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133c09190613dc1565b816001815181106133d4576133d3614582565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061343a3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612095565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161349c959493929190614666565b5f604051808303815f87803b1580156134b3575f80fd5b505af11580156134c5573d5f803e3d5ffd5b505050505050565b6134f93060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612095565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161355e96959493929190613eea565b60606040518083038185885af115801561357a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061359f9190613f5d565b5050505050565b5f80831182906135ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e39190613691565b60405180910390fd5b505f83856135fa9190613e81565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561363e578082015181840152602081019050613623565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61366382613607565b61366d8185613611565b935061367d818560208601613621565b61368681613649565b840191505092915050565b5f6020820190508181035f8301526136a98184613659565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136de826136b5565b9050919050565b6136ee816136d4565b81146136f8575f80fd5b50565b5f81359050613709816136e5565b92915050565b5f819050919050565b6137218161370f565b811461372b575f80fd5b50565b5f8135905061373c81613718565b92915050565b5f8060408385031215613758576137576136b1565b5b5f613765858286016136fb565b92505060206137768582860161372e565b9150509250929050565b5f8115159050919050565b61379481613780565b82525050565b5f6020820190506137ad5f83018461378b565b92915050565b5f602082840312156137c8576137c76136b1565b5b5f6137d5848285016136fb565b91505092915050565b5f819050919050565b5f6138016137fc6137f7846136b5565b6137de565b6136b5565b9050919050565b5f613812826137e7565b9050919050565b5f61382382613808565b9050919050565b61383381613819565b82525050565b5f60208201905061384c5f83018461382a565b92915050565b61385b8161370f565b82525050565b5f6020820190506138745f830184613852565b92915050565b5f805f8060808587031215613892576138916136b1565b5b5f61389f8782880161372e565b94505060206138b08782880161372e565b93505060406138c18782880161372e565b92505060606138d28782880161372e565b91505092959194509250565b5f805f606084860312156138f5576138f46136b1565b5b5f613902868287016136fb565b9350506020613913868287016136fb565b92505060406139248682870161372e565b9150509250925092565b5f60ff82169050919050565b6139438161392e565b82525050565b5f60208201905061395c5f83018461393a565b92915050565b61396b816136d4565b82525050565b5f6020820190506139845f830184613962565b92915050565b61399381613780565b811461399d575f80fd5b50565b5f813590506139ae8161398a565b92915050565b5f80604083850312156139ca576139c96136b1565b5b5f6139d7858286016136fb565b92505060206139e8858286016139a0565b9150509250929050565b5f60208284031215613a0757613a066136b1565b5b5f613a14848285016139a0565b91505092915050565b5f8060408385031215613a3357613a326136b1565b5b5f613a40858286016136fb565b9250506020613a51858286016136fb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a9f57607f821691505b602082108103613ab257613ab1613a5b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613aec602083613611565b9150613af782613ab8565b602082019050919050565b5f6020820190508181035f830152613b1981613ae0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b578261370f565b9150613b628361370f565b9250828201905080821115613b7a57613b79613b20565b5b92915050565b7f4d4158203330252074617820616c6c6f776564000000000000000000000000005f82015250565b5f613bb4601383613611565b9150613bbf82613b80565b602082019050919050565b5f6020820190508181035f830152613be181613ba8565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c42602283613611565b9150613c4d82613be8565b604082019050919050565b5f6020820190508181035f830152613c6f81613c36565b9050919050565b5f81905092915050565b50565b5f613c8e5f83613c76565b9150613c9982613c80565b5f82019050919050565b5f613cad82613c83565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613ceb601b83613611565b9150613cf682613cb7565b602082019050919050565b5f6020820190508181035f830152613d1881613cdf565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613d79602483613611565b9150613d8482613d1f565b604082019050919050565b5f6020820190508181035f830152613da681613d6d565b9050919050565b5f81519050613dbb816136e5565b92915050565b5f60208284031215613dd657613dd56136b1565b5b5f613de384828501613dad565b91505092915050565b5f604082019050613dff5f830185613962565b613e0c6020830184613962565b9392505050565b5f613e1d8261370f565b9150613e288361370f565b9250828202613e368161370f565b91508282048414831517613e4d57613e4c613b20565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e8b8261370f565b9150613e968361370f565b925082613ea657613ea5613e54565b5b828204905092915050565b5f819050919050565b5f613ed4613ecf613eca84613eb1565b6137de565b61370f565b9050919050565b613ee481613eba565b82525050565b5f60c082019050613efd5f830189613962565b613f0a6020830188613852565b613f176040830187613edb565b613f246060830186613edb565b613f316080830185613962565b613f3e60a0830184613852565b979650505050505050565b5f81519050613f5781613718565b92915050565b5f805f60608486031215613f7457613f736136b1565b5b5f613f8186828701613f49565b9350506020613f9286828701613f49565b9250506040613fa386828701613f49565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614007603983613611565b915061401282613fad565b604082019050919050565b5f6020820190508181035f83015261403481613ffb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614095602483613611565b91506140a08261403b565b604082019050919050565b5f6020820190508181035f8301526140c281614089565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614123602283613611565b915061412e826140c9565b604082019050919050565b5f6020820190508181035f83015261415081614117565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141b1602583613611565b91506141bc82614157565b604082019050919050565b5f6020820190508181035f8301526141de816141a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61423f602383613611565b915061424a826141e5565b604082019050919050565b5f6020820190508181035f83015261426c81614233565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6142cd603583613611565b91506142d882614273565b604082019050919050565b5f6020820190508181035f8301526142fa816142c1565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614335601383613611565b915061434082614301565b602082019050919050565b5f6020820190508181035f83015261436281614329565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6143c3603683613611565b91506143ce82614369565b604082019050919050565b5f6020820190508181035f8301526143f0816143b7565b9050919050565b5f6144018261370f565b915061440c8361370f565b925082820390508181111561442457614423613b20565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61445e601b83613611565b91506144698261442a565b602082019050919050565b5f6020820190508181035f83015261448b81614452565b9050919050565b5f6060820190506144a55f830186613852565b6144b26020830185613852565b6144bf6040830184613852565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614521602183613611565b915061452c826144c7565b604082019050919050565b5f6020820190508181035f83015261454e81614515565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145e1816136d4565b82525050565b5f6145f283836145d8565b60208301905092915050565b5f602082019050919050565b5f614614826145af565b61461e81856145b9565b9350614629836145c9565b805f5b8381101561465957815161464088826145e7565b975061464b836145fe565b92505060018101905061462c565b5085935050505092915050565b5f60a0820190506146795f830188613852565b6146866020830187613edb565b8181036040830152614698818661460a565b90506146a76060830185613962565b6146b46080830184613852565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c18053bde2434176039b18c0b563b8fcf09c19b26533c00d8d65ac86c763def64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061025f575f3560e01c8063715018a611610143578063a457c2d7116100b5578063be85750411610079578063be857504146108b0578063c0246668146108da578063c3f70b5214610902578063dd62ed3e1461092c578063df6f93be14610968578063f2fde38b1461099257610266565b8063a457c2d7146107aa578063a9059cbb146107e6578063b62496f514610822578063b69ef8a81461085e578063ba0bb7711461088857610266565b80638da5cb5b116101075780638da5cb5b146106c4578063945674fe146106ee57806395d89b41146107185780639a7a23d6146107425780639db60af31461076a5780639fccce321461078057610266565b8063715018a61461064457806372d45ac81461065a5780637571336a146106705780637f9906a5146106985780638a8c523c146106ae57610266565b806322eb6631116101dc57806348d79155116101a057806348d791551461052457806349bd5a5e1461054e5780634fbee193146105785780635de0f2a0146105b45780636c7e15c9146105de57806370a082311461060857610266565b806322eb66311461042e57806323b872dd14610458578063313ce5671461049457806339509351146104be57806346469afb146104fa57610266565b806318160ddd1161022357806318160ddd146103605780631816467f1461038a5780631a8145bb146103b25780631bff7898146103dc5780631d9305bf1461040657610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d057806310d5de53146102fa5780631694505e1461033657610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613691565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613742565b610a4a565b6040516102c7919061379a565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061379a565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b91906137b3565b610a79565b60405161032d919061379a565b60405180910390f35b348015610341575f80fd5b5061034a610a96565b6040516103579190613839565b60405180910390f35b34801561036b575f80fd5b50610374610abb565b6040516103819190613861565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab91906137b3565b610ac4565b005b3480156103bd575f80fd5b506103c6610c18565b6040516103d39190613861565b60405180910390f35b3480156103e7575f80fd5b506103f0610c1e565b6040516103fd9190613861565b60405180910390f35b348015610411575f80fd5b5061042c6004803603810190610427919061387a565b610c24565b005b348015610439575f80fd5b50610442610d94565b60405161044f9190613861565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906138de565b610d9a565b60405161048b919061379a565b60405180910390f35b34801561049f575f80fd5b506104a8610e6e565b6040516104b59190613949565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df9190613742565b610e76565b6040516104f1919061379a565b60405180910390f35b348015610505575f80fd5b5061050e610f24565b60405161051b9190613861565b60405180910390f35b34801561052f575f80fd5b50610538610f2a565b6040516105459190613861565b60405180910390f35b348015610559575f80fd5b50610562610f30565b60405161056f9190613971565b60405180910390f35b348015610583575f80fd5b5061059e600480360381019061059991906137b3565b610f55565b6040516105ab919061379a565b60405180910390f35b3480156105bf575f80fd5b506105c8610fa7565b6040516105d59190613861565b60405180910390f35b3480156105e9575f80fd5b506105f2610fad565b6040516105ff9190613861565b60405180910390f35b348015610613575f80fd5b5061062e600480360381019061062991906137b3565b610fb3565b60405161063b9190613861565b60405180910390f35b34801561064f575f80fd5b50610658610ff8565b005b348015610665575f80fd5b5061066e61114b565b005b34801561067b575f80fd5b50610696600480360381019061069191906139b4565b6112f4565b005b3480156106a3575f80fd5b506106ac6113e2565b005b3480156106b9575f80fd5b506106c26114f5565b005b3480156106cf575f80fd5b506106d86118fa565b6040516106e59190613971565b60405180910390f35b3480156106f9575f80fd5b50610702611922565b60405161070f919061379a565b60405180910390f35b348015610723575f80fd5b5061072c611935565b6040516107399190613691565b60405180910390f35b34801561074d575f80fd5b50610768600480360381019061076391906139b4565b6119c5565b005b348015610775575f80fd5b5061077e611af8565b005b34801561078b575f80fd5b50610794611ba9565b6040516107a19190613861565b60405180910390f35b3480156107b5575f80fd5b506107d060048036038101906107cb9190613742565b611baf565b6040516107dd919061379a565b60405180910390f35b3480156107f1575f80fd5b5061080c60048036038101906108079190613742565b611c77565b604051610819919061379a565b60405180910390f35b34801561082d575f80fd5b50610848600480360381019061084391906137b3565b611c94565b604051610855919061379a565b60405180910390f35b348015610869575f80fd5b50610872611cb1565b60405161087f9190613861565b60405180910390f35b348015610893575f80fd5b506108ae60048036038101906108a991906139f2565b611cb7565b005b3480156108bb575f80fd5b506108c4611d6a565b6040516108d19190613861565b60405180910390f35b3480156108e5575f80fd5b5061090060048036038101906108fb91906139b4565b611d70565b005b34801561090d575f80fd5b50610916611eac565b6040516109239190613861565b60405180910390f35b348015610937575f80fd5b50610952600480360381019061094d9190613a1d565b611eb2565b60405161095f9190613861565b60405180910390f35b348015610973575f80fd5b5061097c611f34565b6040516109899190613861565b60405180910390f35b34801561099d575f80fd5b506109b860048036038101906109b391906137b3565b611f3a565b005b6060600380546109c990613a88565b80601f01602080910402602001604051908101604052809291908181526020018280546109f590613a88565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a5661208e565b8484612095565b6001905092915050565b600f5f9054906101000a900460ff1681565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610acc61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190613b02565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b610c2c61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613b02565b60405180910390fd5b8360118190555081601281905550601254601154610cd89190613b4d565b6010819055508260148190555080601581905550601554601454610cfc9190613b4d565b601381905550601e6010541115610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90613bca565b60405180910390fd5b601e6013541115610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590613bca565b60405180910390fd5b50505050565b60145481565b5f610da6848484612258565b610e6384610db261208e565b610e5e856040518060600160405280602881526020016146e56028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e1561208e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7d9092919063ffffffff16565b612095565b600190509392505050565b5f6012905090565b5f610f1a610e8261208e565b84610f158560015f610e9261208e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bdf90919063ffffffff16565b612095565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61100061208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590613b02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61115361208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d890613b02565b60405180910390fd5b5f4790505f8111611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613c58565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161126d90613ca3565b5f6040518083038185875af1925050503d805f81146112a7576040519150601f19603f3d011682016040523d82523d5f602084013e6112ac565b606091505b50509050806112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790613d01565b60405180910390fd5b5050565b6112fc61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138190613b02565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113ea61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613b02565b60405180910390fd5b5f61148230610fb3565b90505f81116114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90613d8f565b60405180910390fd5b6114f230600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612258565b50565b6114fd61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613b02565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506115ae8160016112f4565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165b9190613dc1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e49190613dc1565b6040518363ffffffff1660e01b8152600401611701929190613dec565b6020604051808303815f875af115801561171d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117419190613dc1565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117ac60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016112f4565b6117d860095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c3c565b5f4790505f6064806117e930610fb3565b6117f39190613e13565b6117fd9190613e81565b905061182b3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612095565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016118b196959493929190613eea565b60606040518083038185885af11580156118cd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118f29190613f5d565b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b60606004805461194490613a88565b80601f016020809104026020016040519081016040528092919081815260200182805461197090613a88565b80156119bb5780601f10611992576101008083540402835291602001916119bb565b820191905f5260205f20905b81548152906001019060200180831161199e57829003601f168201915b5050505050905090565b6119cd61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613b02565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae19061401d565b60405180910390fd5b611af48282612c3c565b5050565b611b0061208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8590613b02565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b60175481565b5f611c6d611bbb61208e565b84611c688560405180606001604052806025815260200161470d6025913960015f611be461208e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7d9092919063ffffffff16565b612095565b6001905092915050565b5f611c8a611c8361208e565b8484612258565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b611cbf61208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490613b02565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b60155481565b611d7861208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfd90613b02565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ea0919061379a565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611f4261208e565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790613b02565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa906140ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216890614139565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161224b9190613861565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd906141c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b90614255565b60405180910390fd5b5f810361234b5761234683835f612cda565b612b78565b600f5f9054906101000a900460ff1615612740576123676118fa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d557506123a56118fa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240d57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612447575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124605750600960149054906101000a900460ff16155b1561273f57601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125025750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125a957600c5481111561254c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612543906142e3565b60405180910390fd5b600e5461255883610fb3565b826125639190613b4d565b11156125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b9061434b565b60405180910390fd5b61273e565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126465750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561269557600c54811115612690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612687906143d9565b60405180910390fd5b61273d565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661273c57600e546126ef83610fb3565b826126fa9190613b4d565b111561273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329061434b565b60405180910390fd5b5b5b5b5b5b5f61274a30610fb3565b90505f600d54821015905080801561276f5750600960149054906101000a900460ff16155b80156127c25750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612815575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612868575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128ab576001600960146101000a81548160ff021916908315150217905550612890612f63565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061295a575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612963575f90505b5f8115612b6857601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156129c157505f601354115b15612a59576129ee60646129e06013548861318990919063ffffffff16565b61320090919063ffffffff16565b905060135460155482612a019190613e13565b612a0b9190613e81565b60165f828254612a1b9190613b4d565b9250508190555060135460145482612a339190613e13565b612a3d9190613e81565b60175f828254612a4d9190613b4d565b92505081905550612b45565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ab057505f601054115b15612b4457612add6064612acf6010548861318990919063ffffffff16565b61320090919063ffffffff16565b905060105460125482612af09190613e13565b612afa9190613e81565b60165f828254612b0a9190613b4d565b9250508190555060105460115482612b229190613e13565b612b2c9190613e81565b60175f828254612b3c9190613b4d565b925050819055505b5b5f811115612b5957612b58873083612cda565b5b8085612b6591906143f7565b94505b612b73878787612cda565b505050505b505050565b5f838311158290612bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbb9190613691565b60405180910390fd5b505f8385612bd291906143f7565b9050809150509392505050565b5f808284612bed9190613b4d565b905083811015612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2990614474565b60405180910390fd5b8091505092915050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3f906141c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dad90614255565b60405180910390fd5b612dc1838383613249565b612e2a816040518060600160405280602681526020016146bf602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7d9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612eb9815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bdf90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f569190613861565b60405180910390a3505050565b5f612f6d30610fb3565b90505f601754601654612f809190613b4d565b90505f80831480612f9057505f82145b15612f9d57505050613187565b5f1515600f60019054906101000a900460ff16151503612fe4576014600d54612fc69190613e13565b831115612fdf576014600d54612fdc9190613e13565b92505b612ff0565b612fed30610fb3565b92505b5f600283601654866130029190613e13565b61300c9190613e81565b6130169190613e81565b90505f61302c828661324e90919063ffffffff16565b90505f47905061303b82613297565b5f61304f824761324e90919063ffffffff16565b90505f6130798761306b6017548561318990919063ffffffff16565b61320090919063ffffffff16565b90505f818361308891906143f7565b90505f6016819055505f6017819055505f861180156130a657505f81115b156130f3576130b586826134cd565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516130ea93929190614492565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161313890613ca3565b5f6040518083038185875af1925050503d805f8114613172576040519150601f19603f3d011682016040523d82523d5f602084013e613177565b606091505b5050809750505050505050505050505b565b5f808303613199575f90506131fa565b5f82846131a69190613e13565b90508284826131b59190613e81565b146131f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ec90614537565b60405180910390fd5b809150505b92915050565b5f61324183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135a6565b905092915050565b505050565b5f61328f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b7d565b905092915050565b5f600267ffffffffffffffff8111156132b3576132b2614555565b5b6040519080825280602002602001820160405280156132e15781602001602082028036833780820191505090505b50905030815f815181106132f8576132f7614582565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561339c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133c09190613dc1565b816001815181106133d4576133d3614582565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061343a3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612095565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161349c959493929190614666565b5f604051808303815f87803b1580156134b3575f80fd5b505af11580156134c5573d5f803e3d5ffd5b505050505050565b6134f93060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612095565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161355e96959493929190613eea565b60606040518083038185885af115801561357a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061359f9190613f5d565b5050505050565b5f80831182906135ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e39190613691565b60405180910390fd5b505f83856135fa9190613e81565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561363e578082015181840152602081019050613623565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61366382613607565b61366d8185613611565b935061367d818560208601613621565b61368681613649565b840191505092915050565b5f6020820190508181035f8301526136a98184613659565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136de826136b5565b9050919050565b6136ee816136d4565b81146136f8575f80fd5b50565b5f81359050613709816136e5565b92915050565b5f819050919050565b6137218161370f565b811461372b575f80fd5b50565b5f8135905061373c81613718565b92915050565b5f8060408385031215613758576137576136b1565b5b5f613765858286016136fb565b92505060206137768582860161372e565b9150509250929050565b5f8115159050919050565b61379481613780565b82525050565b5f6020820190506137ad5f83018461378b565b92915050565b5f602082840312156137c8576137c76136b1565b5b5f6137d5848285016136fb565b91505092915050565b5f819050919050565b5f6138016137fc6137f7846136b5565b6137de565b6136b5565b9050919050565b5f613812826137e7565b9050919050565b5f61382382613808565b9050919050565b61383381613819565b82525050565b5f60208201905061384c5f83018461382a565b92915050565b61385b8161370f565b82525050565b5f6020820190506138745f830184613852565b92915050565b5f805f8060808587031215613892576138916136b1565b5b5f61389f8782880161372e565b94505060206138b08782880161372e565b93505060406138c18782880161372e565b92505060606138d28782880161372e565b91505092959194509250565b5f805f606084860312156138f5576138f46136b1565b5b5f613902868287016136fb565b9350506020613913868287016136fb565b92505060406139248682870161372e565b9150509250925092565b5f60ff82169050919050565b6139438161392e565b82525050565b5f60208201905061395c5f83018461393a565b92915050565b61396b816136d4565b82525050565b5f6020820190506139845f830184613962565b92915050565b61399381613780565b811461399d575f80fd5b50565b5f813590506139ae8161398a565b92915050565b5f80604083850312156139ca576139c96136b1565b5b5f6139d7858286016136fb565b92505060206139e8858286016139a0565b9150509250929050565b5f60208284031215613a0757613a066136b1565b5b5f613a14848285016139a0565b91505092915050565b5f8060408385031215613a3357613a326136b1565b5b5f613a40858286016136fb565b9250506020613a51858286016136fb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a9f57607f821691505b602082108103613ab257613ab1613a5b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613aec602083613611565b9150613af782613ab8565b602082019050919050565b5f6020820190508181035f830152613b1981613ae0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b578261370f565b9150613b628361370f565b9250828201905080821115613b7a57613b79613b20565b5b92915050565b7f4d4158203330252074617820616c6c6f776564000000000000000000000000005f82015250565b5f613bb4601383613611565b9150613bbf82613b80565b602082019050919050565b5f6020820190508181035f830152613be181613ba8565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c42602283613611565b9150613c4d82613be8565b604082019050919050565b5f6020820190508181035f830152613c6f81613c36565b9050919050565b5f81905092915050565b50565b5f613c8e5f83613c76565b9150613c9982613c80565b5f82019050919050565b5f613cad82613c83565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613ceb601b83613611565b9150613cf682613cb7565b602082019050919050565b5f6020820190508181035f830152613d1881613cdf565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613d79602483613611565b9150613d8482613d1f565b604082019050919050565b5f6020820190508181035f830152613da681613d6d565b9050919050565b5f81519050613dbb816136e5565b92915050565b5f60208284031215613dd657613dd56136b1565b5b5f613de384828501613dad565b91505092915050565b5f604082019050613dff5f830185613962565b613e0c6020830184613962565b9392505050565b5f613e1d8261370f565b9150613e288361370f565b9250828202613e368161370f565b91508282048414831517613e4d57613e4c613b20565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e8b8261370f565b9150613e968361370f565b925082613ea657613ea5613e54565b5b828204905092915050565b5f819050919050565b5f613ed4613ecf613eca84613eb1565b6137de565b61370f565b9050919050565b613ee481613eba565b82525050565b5f60c082019050613efd5f830189613962565b613f0a6020830188613852565b613f176040830187613edb565b613f246060830186613edb565b613f316080830185613962565b613f3e60a0830184613852565b979650505050505050565b5f81519050613f5781613718565b92915050565b5f805f60608486031215613f7457613f736136b1565b5b5f613f8186828701613f49565b9350506020613f9286828701613f49565b9250506040613fa386828701613f49565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614007603983613611565b915061401282613fad565b604082019050919050565b5f6020820190508181035f83015261403481613ffb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614095602483613611565b91506140a08261403b565b604082019050919050565b5f6020820190508181035f8301526140c281614089565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614123602283613611565b915061412e826140c9565b604082019050919050565b5f6020820190508181035f83015261415081614117565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141b1602583613611565b91506141bc82614157565b604082019050919050565b5f6020820190508181035f8301526141de816141a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61423f602383613611565b915061424a826141e5565b604082019050919050565b5f6020820190508181035f83015261426c81614233565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6142cd603583613611565b91506142d882614273565b604082019050919050565b5f6020820190508181035f8301526142fa816142c1565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614335601383613611565b915061434082614301565b602082019050919050565b5f6020820190508181035f83015261436281614329565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6143c3603683613611565b91506143ce82614369565b604082019050919050565b5f6020820190508181035f8301526143f0816143b7565b9050919050565b5f6144018261370f565b915061440c8361370f565b925082820390508181111561442457614423613b20565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61445e601b83613611565b91506144698261442a565b602082019050919050565b5f6020820190508181035f83015261448b81614452565b9050919050565b5f6060820190506144a55f830186613852565b6144b26020830185613852565b6144bf6040830184613852565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614521602183613611565b915061452c826144c7565b604082019050919050565b5f6020820190508181035f83015261454e81614515565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145e1816136d4565b82525050565b5f6145f283836145d8565b60208301905092915050565b5f602082019050919050565b5f614614826145af565b61461e81856145b9565b9350614629836145c9565b805f5b8381101561465957815161464088826145e7565b975061464b836145fe565b92505060018101905061462c565b5085935050505092915050565b5f60a0820190506146795f830188613852565b6146866020830187613edb565b8181036040830152614698818661460a565b90506146a76060830185613962565b6146b46080830184613852565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c18053bde2434176039b18c0b563b8fcf09c19b26533c00d8d65ac86c763def64736f6c63430008170033

Deployed Bytecode Sourcemap

18390:12609:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5653:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6567:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18857:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19430:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18558:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5974:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24956:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19139:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19038:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23808:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19072:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6744:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5873:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7107:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18940:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18606:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25129:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18774:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18973:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6090:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11634:148;;;;;;;;;;;;;:::i;:::-;;22869:313;;;;;;;;;;;;;:::i;:::-;;23652:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23190:250;;;;;;;;;;;;;:::i;:::-;;21806:1045;;;;;;;;;;;;;:::i;:::-;;11420:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18894:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5761:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24505:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23448:82;;;;;;;;;;;;;:::i;:::-;;19179:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7333:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6225:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19653:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18674:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23539:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19104:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24314:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18738:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6408:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19004:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11790:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5653:100;5707:13;5740:5;5733:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5653:100;:::o;6567:169::-;6650:4;6667:39;6676:12;:10;:12::i;:::-;6690:7;6699:6;6667:8;:39::i;:::-;6724:4;6717:11;;6567:169;;;;:::o;18857:30::-;;;;;;;;;;;;;:::o;19430:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18558:41::-;;;;;;;;;;;;;:::o;5974:108::-;6035:7;6062:12;;6055:19;;5974:108;:::o;24956:165::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25068:9:::1;;;;;;;;;;;25037:41;;25054:12;25037:41;;;;;;;;;;;;25101:12;25089:9;;:24;;;;;;;;;;;;;;;;;;24956:165:::0;:::o;19139:33::-;;;;:::o;19038:27::-;;;;:::o;23808:498::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23981:7:::1;23969:9;:19;;;;24011:7;23999:9;:19;;;;24055:9;;24043;;:21;;;;:::i;:::-;24029:11;:35;;;;24088:8;24075:10;:21;;;;24120:8;24107:10;:21;;;;24167:10;;24154;;:23;;;;:::i;:::-;24139:12;:38;;;;24211:2;24196:11;;:17;;24188:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24272:2;24256:12;;:18;;24248:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;23808:498:::0;;;;:::o;19072:25::-;;;;:::o;6744:355::-;6884:4;6901:36;6911:6;6919:9;6930:6;6901:9;:36::i;:::-;6948:121;6957:6;6965:12;:10;:12::i;:::-;6979:89;7017:6;6979:89;;;;;;;;;;;;;;;;;:11;:19;6991:6;6979:19;;;;;;;;;;;;;;;:33;6999:12;:10;:12::i;:::-;6979:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6948:8;:121::i;:::-;7087:4;7080:11;;6744:355;;;;;:::o;5873:93::-;5931:5;5956:2;5949:9;;5873:93;:::o;7107:218::-;7195:4;7212:83;7221:12;:10;:12::i;:::-;7235:7;7244:50;7283:10;7244:11;:25;7256:12;:10;:12::i;:::-;7244:25;;;;;;;;;;;;;;;:34;7270:7;7244:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7212:8;:83::i;:::-;7313:4;7306:11;;7107:218;;;;:::o;18940:26::-;;;;:::o;18816:31::-;;;;:::o;18606:28::-;;;;;;;;;;;;;:::o;25129:125::-;25194:4;25218:19;:28;25238:7;25218:28;;;;;;;;;;;;;;;;;;;;;;;;;25211:35;;25129:125;;;:::o;18774:35::-;;;;:::o;18973:24::-;;;;:::o;6090:127::-;6164:7;6191:9;:18;6201:7;6191:18;;;;;;;;;;;;;;;;6184:25;;6090:127;;;:::o;11634:148::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11741:1:::1;11704:40;;11725:6;;;;;;;;;;;11704:40;;;;;;;;;;;;11772:1;11755:6;;:19;;;;;;;;;;;;;;;;;;11634:148::o:0;22869:313::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22927:18:::1;22948:21;22927:42;;23001:1;22988:10;:14;22980:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23053:12;23078:9;;;;;;;;;;;23070:23;;23101:10;23070:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23052:64;;;23135:7;23127:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22916:266;;22869:313::o:0;23652:144::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23784:4:::1;23742:31;:39;23774:6;23742:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23652:144:::0;;:::o;23190:250::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23249:20:::1;23272:24;23290:4;23272:9;:24::i;:::-;23249:47;;23330:1;23315:12;:16;23307:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23383:49;23401:4;23408:9;;;;;;;;;;;23419:12;23383:9;:49::i;:::-;23238:202;23190:250::o:0;21806:1045::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21866:35:::1;21923:42;21866:100;;21980:58;22014:16;22033:4;21980:25;:58::i;:::-;22067:16;22049:15;;:34;;;;;;;;;;;;;;;;;;22131:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22113:56;;;22178:4;22185:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22113:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22097:13;;:112;;;;;;;;;;;;;;;;;;22220:55;22254:13;;;;;;;;;;;22270:4;22220:25;:55::i;:::-;22286:58;22323:13;;;;;;;;;;;22339:4;22286:28;:58::i;:::-;22365:17;22385:21;22365:41;;22417:19;22472:3;22466::::0;22439:24:::1;22457:4;22439:9;:24::i;:::-;:30;;;;:::i;:::-;:36;;;;:::i;:::-;22417:58;;22506:62;22523:4;22538:15;;;;;;;;;;;22556:11;22506:8;:62::i;:::-;22581:15;;;;;;;;;;;:31;;;22620:9;22653:4;22673:11;22703:1;22750::::0;22793:9:::1;;;;;;;;;;;22817:15;22581:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21849:1002;;;21806:1045::o:0;11420:79::-;11458:7;11485:6;;;;;;;;;;;11478:13;;11420:79;:::o;18894:37::-;;;;;;;;;;;;;:::o;5761:104::-;5817:13;5850:7;5843:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5761:104;:::o;24505:245::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24612:13:::1;;;;;;;;;;;24604:21;;:4;:21;;::::0;24596:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24701:41;24730:4;24736:5;24701:28;:41::i;:::-;24505:245:::0;;:::o;23448:82::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23517:5:::1;23503:11;;:19;;;;;;;;;;;;;;;;;;23448:82::o:0;19179:27::-;;;;:::o;7333:269::-;7426:4;7443:129;7452:12;:10;:12::i;:::-;7466:7;7475:96;7514:15;7475:96;;;;;;;;;;;;;;;;;:11;:25;7487:12;:10;:12::i;:::-;7475:25;;;;;;;;;;;;;;;:34;7501:7;7475:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;7443:8;:129::i;:::-;7590:4;7583:11;;7333:269;;;;:::o;6225:175::-;6311:4;6328:42;6338:12;:10;:12::i;:::-;6352:9;6363:6;6328:9;:42::i;:::-;6388:4;6381:11;;6225:175;;;;:::o;19653:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18674:22::-;;;;:::o;23539:104::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23628:7:::1;23608:17;;:27;;;;;;;;;;;;;;;;;;23539:104:::0;:::o;19104:25::-;;;;:::o;24314:182::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24430:8:::1;24399:19;:28;24419:7;24399:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24470:7;24454:34;;;24479:8;24454:34;;;;;;:::i;:::-;;;;;;;;24314:182:::0;;:::o;18738:29::-;;;;:::o;6408:151::-;6497:7;6524:11;:18;6536:5;6524:18;;;;;;;;;;;;;;;:27;6543:7;6524:27;;;;;;;;;;;;;;;;6517:34;;6408:151;;;;:::o;19004:24::-;;;;:::o;11790:169::-;11557:12;:10;:12::i;:::-;11547:22;;:6;;;;;;;;;;;:22;;;11539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11914:8:::1;11885:38;;11906:6;;;;;;;;;;;11885:38;;;;;;;;;;;;11943:8;11934:6;;:17;;;;;;;;;;;;;;;;;;11790:169:::0;:::o;1006:98::-;1059:7;1086:10;1079:17;;1006:98;:::o;9009:381::-;9162:1;9145:19;;:5;:19;;;9137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9243:1;9224:21;;:7;:21;;;9216:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9328:6;9298:11;:18;9310:5;9298:18;;;;;;;;;;;;;;;:27;9317:7;9298:27;;;;;;;;;;;;;;;:36;;;;9366:7;9350:32;;9359:5;9350:32;;;9375:6;9350:32;;;;;;:::i;:::-;;;;;;;;9009:381;;;:::o;25263:3112::-;25411:1;25395:18;;:4;:18;;;25387:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25488:1;25474:16;;:2;:16;;;25466:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25555:1;25545:6;:11;25542:92;;25573:28;25589:4;25595:2;25599:1;25573:15;:28::i;:::-;25616:7;;25542:92;25650:11;;;;;;;;;;;25647:1083;;;25707:7;:5;:7::i;:::-;25699:15;;:4;:15;;;;:49;;;;;25741:7;:5;:7::i;:::-;25735:13;;:2;:13;;;;25699:49;:86;;;;;25783:1;25769:16;;:2;:16;;;;25699:86;:128;;;;;25820:6;25806:21;;:2;:21;;;;25699:128;:160;;;;;25849:10;;;;;;;;;;;25848:11;25699:160;25677:1042;;;25943:25;:31;25969:4;25943:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25979:31;:35;26011:2;25979:35;;;;;;;;;;;;;;;;;;;;;;;;;25978:36;25943:71;25939:765;;;26061:14;;26051:6;:24;;26043:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;26194:16;;26177:13;26187:2;26177:9;:13::i;:::-;26168:6;:22;;;;:::i;:::-;:42;;26160:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25939:765;;;26313:25;:29;26339:2;26313:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;26347:31;:37;26379:4;26347:37;;;;;;;;;;;;;;;;;;;;;;;;;26346:38;26313:71;26309:395;;;26431:14;;26421:6;:24;;26413:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;26309:395;;;26551:31;:35;26583:2;26551:35;;;;;;;;;;;;;;;;;;;;;;;;;26547:157;;26644:16;;26627:13;26637:2;26627:9;:13::i;:::-;26618:6;:22;;;;:::i;:::-;:42;;26610:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26547:157;26309:395;25939:765;25677:1042;25647:1083;26743:28;26774:24;26792:4;26774:9;:24::i;:::-;26743:55;;26812:12;26851:20;;26827;:44;;26812:59;;26903:7;:35;;;;;26928:10;;;;;;;;;;;26927:11;26903:35;:84;;;;;26956:25;:31;26982:4;26956:31;;;;;;;;;;;;;;;;;;;;;;;;;26955:32;26903:84;:127;;;;;27005:19;:25;27025:4;27005:25;;;;;;;;;;;;;;;;;;;;;;;;;27004:26;26903:127;:168;;;;;27048:19;:23;27068:2;27048:23;;;;;;;;;;;;;;;;;;;;;;;;;27047:24;26903:168;26885:306;;;27111:4;27098:10;;:17;;;;;;;;;;;;;;;;;;27133:10;:8;:10::i;:::-;27174:5;27161:10;;:18;;;;;;;;;;;;;;;;;;26885:306;27204:12;27220:10;;;;;;;;;;;27219:11;27204:26;;27332:19;:25;27352:4;27332:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27361:19;:23;27381:2;27361:23;;;;;;;;;;;;;;;;;;;;;;;;;27332:52;27329:99;;;27411:5;27401:15;;27329:99;27441:12;27545:7;27542:779;;;27596:25;:29;27622:2;27596:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;27644:1;27629:12;;:16;27596:49;27592:576;;;27672:33;27701:3;27672:24;27683:12;;27672:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27665:40;;27766:12;;27753:10;;27746:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;27724:18;;:54;;;;;;;:::i;:::-;;;;;;;;27833:12;;27820:10;;27813:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;27797:12;;:48;;;;;;;:::i;:::-;;;;;;;;27592:576;;;27906:25;:31;27932:4;27906:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27955:1;27941:11;;:15;27906:50;27903:265;;;27984:32;28012:3;27984:23;27995:11;;27984:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27977:39;;28076:11;;28064:9;;28057:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;28035:18;;:52;;;;;;;:::i;:::-;;;;;;;;28141:11;;28129:9;;28122:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;28106:12;;:46;;;;;;;:::i;:::-;;;;;;;;27903:265;27592:576;28195:1;28188:4;:8;28185:93;;;28220:42;28236:4;28250;28257;28220:15;:42::i;:::-;28185:93;28305:4;28295:14;;;;;:::i;:::-;;;27542:779;28334:33;28350:4;28356:2;28360:6;28334:15;:33::i;:::-;25376:2999;;;;25263:3112;;;;:::o;9897:193::-;9983:7;10016:1;10011;:6;;10019:12;10003:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10043:9;10059:1;10055;:5;;;;:::i;:::-;10043:17;;10081:1;10074:8;;;9897:193;;;;;:::o;9563:182::-;9621:7;9641:9;9657:1;9653;:5;;;;:::i;:::-;9641:17;;9682:1;9677;:6;;9669:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9736:1;9729:8;;;9563:182;;;;:::o;24759:189::-;24876:5;24842:25;:31;24868:4;24842:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24934:5;24900:40;;24928:4;24900:40;;;;;;;;;;;;24759:189;;:::o;7610:575::-;7768:1;7750:20;;:6;:20;;;7742:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7852:1;7831:23;;:9;:23;;;7823:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7908:47;7929:6;7937:9;7948:6;7908:20;:47::i;:::-;7989:71;8011:6;7989:71;;;;;;;;;;;;;;;;;:9;:17;7999:6;7989:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7969:9;:17;7979:6;7969:17;;;;;;;;;;;;;;;:91;;;;8094:32;8119:6;8094:9;:20;8104:9;8094:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8071:9;:20;8081:9;8071:20;;;;;;;;;;;;;;;:55;;;;8159:9;8142:35;;8151:6;8142:35;;;8170:6;8142:35;;;;;;:::i;:::-;;;;;;;;7610:575;;;:::o;29519:1477::-;29558:23;29584:24;29602:4;29584:9;:24::i;:::-;29558:50;;29619:25;29668:12;;29647:18;;:33;;;;:::i;:::-;29619:61;;29691:12;29739:1;29720:15;:20;:46;;;;29765:1;29744:17;:22;29720:46;29717:60;;;29769:7;;;;;29717:60;29814:5;29793:26;;:17;;;;;;;;;;;:26;;;29790:254;;29879:2;29856:20;;:25;;;;:::i;:::-;29838:15;:43;29835:125;;;29942:2;29919:20;;:25;;;;:::i;:::-;29901:43;;29835:125;29790:254;;;30008:24;30026:4;30008:9;:24::i;:::-;29990:42;;29790:254;30116:23;30201:1;30181:17;30160:18;;30142:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;30116:86;;30213:26;30242:36;30262:15;30242;:19;;:36;;;;:::i;:::-;30213:65;;30292:25;30320:21;30292:49;;30355:36;30372:18;30355:16;:36::i;:::-;30406:18;30427:44;30453:17;30427:21;:25;;:44;;;;:::i;:::-;30406:65;;30485:17;30505:51;30538:17;30505:28;30520:12;;30505:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;30485:71;;30567:23;30606:9;30593:10;:22;;;;:::i;:::-;30567:48;;30653:1;30632:18;:22;;;;30680:1;30665:12;:16;;;;30716:1;30698:15;:19;:42;;;;;30739:1;30721:15;:19;30698:42;30695:210;;;30756:46;30769:15;30786;30756:12;:46::i;:::-;30822:71;30837:18;30857:15;30874:18;;30822:71;;;;;;;;:::i;:::-;;;;;;;;30695:210;30939:9;;;;;;;;;;;30931:23;;30962:21;30931:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30918:70;;;;;29547:1449;;;;;;;;;29519:1477;:::o;10098:254::-;10156:7;10187:1;10182;:6;10178:47;;10212:1;10205:8;;;;10178:47;10238:9;10254:1;10250;:5;;;;:::i;:::-;10238:17;;10283:1;10278;10274;:5;;;;:::i;:::-;:10;10266:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10343:1;10336:8;;;10098:254;;;;;:::o;10360:132::-;10418:7;10445:39;10449:1;10452;10445:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10438:46;;10360:132;;;;:::o;9398:125::-;;;;:::o;9753:136::-;9811:7;9838:43;9842:1;9845;9838:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9831:50;;9753:136;;;;:::o;28384:597::-;28513:21;28551:1;28537:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28513:40;;28582:4;28564;28569:1;28564:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28608:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28598:4;28603:1;28598:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28644:62;28661:4;28676:15;;;;;;;;;;;28694:11;28644:8;:62::i;:::-;28746:15;;;;;;;;;;;:66;;;28827:11;28853:1;28897:4;28924;28944:15;28746:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28439:542;28384:597;:::o;28990:520::-;29138:62;29155:4;29170:15;;;;;;;;;;;29188:11;29138:8;:62::i;:::-;29244:15;;;;;;;;;;;:31;;;29283:9;29316:4;29336:11;29362:1;29405;29456:4;29476:15;29244:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28990:520;;:::o;10500:279::-;10586:7;10618:1;10614;:5;10621:12;10606:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10645:9;10661:1;10657;:5;;;;:::i;:::-;10645:17;;10770:1;10763:8;;;10500: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:180::-;10378:77;10375:1;10368:88;10475:4;10472:1;10465:15;10499:4;10496:1;10489:15;10516:191;10556:3;10575:20;10593:1;10575:20;:::i;:::-;10570:25;;10609:20;10627:1;10609:20;:::i;:::-;10604:25;;10652:1;10649;10645:9;10638:16;;10673:3;10670:1;10667:10;10664:36;;;10680:18;;:::i;:::-;10664:36;10516:191;;;;:::o;10713:169::-;10853:21;10849:1;10841:6;10837:14;10830:45;10713:169;:::o;10888:366::-;11030:3;11051:67;11115:2;11110:3;11051:67;:::i;:::-;11044:74;;11127:93;11216:3;11127:93;:::i;:::-;11245:2;11240:3;11236:12;11229:19;;10888:366;;;:::o;11260:419::-;11426:4;11464:2;11453:9;11449:18;11441:26;;11513:9;11507:4;11503:20;11499:1;11488:9;11484:17;11477:47;11541:131;11667:4;11541:131;:::i;:::-;11533:139;;11260:419;;;:::o;11685:221::-;11825:34;11821:1;11813:6;11809:14;11802:58;11894:4;11889:2;11881:6;11877:15;11870:29;11685:221;:::o;11912:366::-;12054:3;12075:67;12139:2;12134:3;12075:67;:::i;:::-;12068:74;;12151:93;12240:3;12151:93;:::i;:::-;12269:2;12264:3;12260:12;12253:19;;11912:366;;;:::o;12284:419::-;12450:4;12488:2;12477:9;12473:18;12465:26;;12537:9;12531:4;12527:20;12523:1;12512:9;12508:17;12501:47;12565:131;12691:4;12565:131;:::i;:::-;12557:139;;12284:419;;;:::o;12709:147::-;12810:11;12847:3;12832:18;;12709:147;;;;:::o;12862:114::-;;:::o;12982:398::-;13141:3;13162:83;13243:1;13238:3;13162:83;:::i;:::-;13155:90;;13254:93;13343:3;13254:93;:::i;:::-;13372:1;13367:3;13363:11;13356:18;;12982:398;;;:::o;13386:379::-;13570:3;13592:147;13735:3;13592:147;:::i;:::-;13585:154;;13756:3;13749:10;;13386:379;;;:::o;13771:177::-;13911:29;13907:1;13899:6;13895:14;13888:53;13771:177;:::o;13954:366::-;14096:3;14117:67;14181:2;14176:3;14117:67;:::i;:::-;14110:74;;14193:93;14282:3;14193:93;:::i;:::-;14311:2;14306:3;14302:12;14295:19;;13954:366;;;:::o;14326:419::-;14492:4;14530:2;14519:9;14515:18;14507:26;;14579:9;14573:4;14569:20;14565:1;14554:9;14550:17;14543:47;14607:131;14733:4;14607:131;:::i;:::-;14599:139;;14326:419;;;:::o;14751:223::-;14891:34;14887:1;14879:6;14875:14;14868:58;14960:6;14955:2;14947:6;14943:15;14936:31;14751:223;:::o;14980:366::-;15122:3;15143:67;15207:2;15202:3;15143:67;:::i;:::-;15136:74;;15219:93;15308:3;15219:93;:::i;:::-;15337:2;15332:3;15328:12;15321:19;;14980:366;;;:::o;15352:419::-;15518:4;15556:2;15545:9;15541:18;15533:26;;15605:9;15599:4;15595:20;15591:1;15580:9;15576:17;15569:47;15633:131;15759:4;15633:131;:::i;:::-;15625:139;;15352:419;;;:::o;15777:143::-;15834:5;15865:6;15859:13;15850:22;;15881:33;15908:5;15881:33;:::i;:::-;15777:143;;;;:::o;15926:351::-;15996:6;16045:2;16033:9;16024:7;16020:23;16016:32;16013:119;;;16051:79;;:::i;:::-;16013:119;16171:1;16196:64;16252:7;16243:6;16232:9;16228:22;16196:64;:::i;:::-;16186:74;;16142:128;15926:351;;;;:::o;16283:332::-;16404:4;16442:2;16431:9;16427:18;16419:26;;16455:71;16523:1;16512:9;16508:17;16499:6;16455:71;:::i;:::-;16536:72;16604:2;16593:9;16589:18;16580:6;16536:72;:::i;:::-;16283:332;;;;;:::o;16621:410::-;16661:7;16684:20;16702:1;16684:20;:::i;:::-;16679:25;;16718:20;16736:1;16718:20;:::i;:::-;16713:25;;16773:1;16770;16766:9;16795:30;16813:11;16795:30;:::i;:::-;16784:41;;16974:1;16965:7;16961:15;16958:1;16955:22;16935:1;16928:9;16908:83;16885:139;;17004:18;;:::i;:::-;16885:139;16669:362;16621:410;;;;:::o;17037:180::-;17085:77;17082:1;17075:88;17182:4;17179:1;17172:15;17206:4;17203:1;17196:15;17223:185;17263:1;17280:20;17298:1;17280:20;:::i;:::-;17275:25;;17314:20;17332:1;17314:20;:::i;:::-;17309:25;;17353:1;17343:35;;17358:18;;:::i;:::-;17343:35;17400:1;17397;17393:9;17388:14;;17223:185;;;;:::o;17414:85::-;17459:7;17488:5;17477:16;;17414:85;;;:::o;17505:158::-;17563:9;17596:61;17614:42;17623:32;17649:5;17623:32;:::i;:::-;17614:42;:::i;:::-;17596:61;:::i;:::-;17583:74;;17505:158;;;:::o;17669:147::-;17764:45;17803:5;17764:45;:::i;:::-;17759:3;17752:58;17669:147;;:::o;17822:807::-;18071:4;18109:3;18098:9;18094:19;18086:27;;18123:71;18191:1;18180:9;18176:17;18167:6;18123:71;:::i;:::-;18204:72;18272:2;18261:9;18257:18;18248:6;18204:72;:::i;:::-;18286:80;18362:2;18351:9;18347:18;18338:6;18286:80;:::i;:::-;18376;18452:2;18441:9;18437:18;18428:6;18376:80;:::i;:::-;18466:73;18534:3;18523:9;18519:19;18510:6;18466:73;:::i;:::-;18549;18617:3;18606:9;18602:19;18593:6;18549:73;:::i;:::-;17822:807;;;;;;;;;:::o;18635:143::-;18692:5;18723:6;18717:13;18708:22;;18739:33;18766:5;18739:33;:::i;:::-;18635:143;;;;:::o;18784:663::-;18872:6;18880;18888;18937:2;18925:9;18916:7;18912:23;18908:32;18905:119;;;18943:79;;:::i;:::-;18905:119;19063:1;19088:64;19144:7;19135:6;19124:9;19120:22;19088:64;:::i;:::-;19078:74;;19034:128;19201:2;19227:64;19283:7;19274:6;19263:9;19259:22;19227:64;:::i;:::-;19217:74;;19172:129;19340:2;19366:64;19422:7;19413:6;19402:9;19398:22;19366:64;:::i;:::-;19356:74;;19311:129;18784:663;;;;;:::o;19453:244::-;19593:34;19589:1;19581:6;19577:14;19570:58;19662:27;19657:2;19649:6;19645:15;19638:52;19453:244;:::o;19703:366::-;19845:3;19866:67;19930:2;19925:3;19866:67;:::i;:::-;19859:74;;19942:93;20031:3;19942:93;:::i;:::-;20060:2;20055:3;20051:12;20044:19;;19703:366;;;:::o;20075:419::-;20241:4;20279:2;20268:9;20264:18;20256:26;;20328:9;20322:4;20318:20;20314:1;20303:9;20299:17;20292:47;20356:131;20482:4;20356:131;:::i;:::-;20348:139;;20075:419;;;:::o;20500:223::-;20640:34;20636:1;20628:6;20624:14;20617:58;20709:6;20704:2;20696:6;20692:15;20685:31;20500:223;:::o;20729:366::-;20871:3;20892:67;20956:2;20951:3;20892:67;:::i;:::-;20885:74;;20968:93;21057:3;20968:93;:::i;:::-;21086:2;21081:3;21077:12;21070:19;;20729:366;;;:::o;21101:419::-;21267:4;21305:2;21294:9;21290:18;21282:26;;21354:9;21348:4;21344:20;21340:1;21329:9;21325:17;21318:47;21382:131;21508:4;21382:131;:::i;:::-;21374:139;;21101:419;;;:::o;21526:221::-;21666:34;21662:1;21654:6;21650:14;21643:58;21735:4;21730:2;21722:6;21718:15;21711:29;21526:221;:::o;21753:366::-;21895:3;21916:67;21980:2;21975:3;21916:67;:::i;:::-;21909:74;;21992:93;22081:3;21992:93;:::i;:::-;22110:2;22105:3;22101:12;22094:19;;21753:366;;;:::o;22125:419::-;22291:4;22329:2;22318:9;22314:18;22306:26;;22378:9;22372:4;22368:20;22364:1;22353:9;22349:17;22342:47;22406:131;22532:4;22406:131;:::i;:::-;22398:139;;22125:419;;;:::o;22550:224::-;22690:34;22686:1;22678:6;22674:14;22667:58;22759:7;22754:2;22746:6;22742:15;22735:32;22550:224;:::o;22780:366::-;22922:3;22943:67;23007:2;23002:3;22943:67;:::i;:::-;22936:74;;23019:93;23108:3;23019:93;:::i;:::-;23137:2;23132:3;23128:12;23121:19;;22780:366;;;:::o;23152:419::-;23318:4;23356:2;23345:9;23341:18;23333:26;;23405:9;23399:4;23395:20;23391:1;23380:9;23376:17;23369:47;23433:131;23559:4;23433:131;:::i;:::-;23425:139;;23152:419;;;:::o;23577:222::-;23717:34;23713:1;23705:6;23701:14;23694:58;23786:5;23781:2;23773:6;23769:15;23762:30;23577:222;:::o;23805:366::-;23947:3;23968:67;24032:2;24027:3;23968:67;:::i;:::-;23961:74;;24044:93;24133:3;24044:93;:::i;:::-;24162:2;24157:3;24153:12;24146:19;;23805:366;;;:::o;24177:419::-;24343:4;24381:2;24370:9;24366:18;24358:26;;24430:9;24424:4;24420:20;24416:1;24405:9;24401:17;24394:47;24458:131;24584:4;24458:131;:::i;:::-;24450:139;;24177:419;;;:::o;24602:240::-;24742:34;24738:1;24730:6;24726:14;24719:58;24811:23;24806:2;24798:6;24794:15;24787:48;24602:240;:::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:169::-;25785:21;25781:1;25773:6;25769:14;25762:45;25645:169;:::o;25820:366::-;25962:3;25983:67;26047:2;26042:3;25983:67;:::i;:::-;25976:74;;26059:93;26148:3;26059:93;:::i;:::-;26177:2;26172:3;26168:12;26161:19;;25820:366;;;:::o;26192:419::-;26358:4;26396:2;26385:9;26381:18;26373:26;;26445:9;26439:4;26435:20;26431:1;26420:9;26416:17;26409:47;26473:131;26599:4;26473:131;:::i;:::-;26465:139;;26192:419;;;:::o;26617:241::-;26757:34;26753:1;26745:6;26741:14;26734:58;26826:24;26821:2;26813:6;26809:15;26802:49;26617:241;:::o;26864:366::-;27006:3;27027:67;27091:2;27086:3;27027:67;:::i;:::-;27020:74;;27103:93;27192:3;27103:93;:::i;:::-;27221:2;27216:3;27212:12;27205:19;;26864:366;;;:::o;27236:419::-;27402:4;27440:2;27429:9;27425:18;27417:26;;27489:9;27483:4;27479:20;27475:1;27464:9;27460:17;27453:47;27517:131;27643:4;27517:131;:::i;:::-;27509:139;;27236:419;;;:::o;27661:194::-;27701:4;27721:20;27739:1;27721:20;:::i;:::-;27716:25;;27755:20;27773:1;27755:20;:::i;:::-;27750:25;;27799:1;27796;27792:9;27784:17;;27823:1;27817:4;27814:11;27811:37;;;27828:18;;:::i;:::-;27811:37;27661:194;;;;:::o;27861:177::-;28001:29;27997:1;27989:6;27985:14;27978:53;27861:177;:::o;28044:366::-;28186:3;28207:67;28271:2;28266:3;28207:67;:::i;:::-;28200:74;;28283:93;28372:3;28283:93;:::i;:::-;28401:2;28396:3;28392:12;28385:19;;28044:366;;;:::o;28416:419::-;28582:4;28620:2;28609:9;28605:18;28597:26;;28669:9;28663:4;28659:20;28655:1;28644:9;28640:17;28633:47;28697:131;28823:4;28697:131;:::i;:::-;28689:139;;28416:419;;;:::o;28841:442::-;28990:4;29028:2;29017:9;29013:18;29005:26;;29041:71;29109:1;29098:9;29094:17;29085:6;29041:71;:::i;:::-;29122:72;29190:2;29179:9;29175:18;29166:6;29122:72;:::i;:::-;29204;29272:2;29261:9;29257:18;29248:6;29204:72;:::i;:::-;28841:442;;;;;;:::o;29289:220::-;29429:34;29425:1;29417:6;29413:14;29406:58;29498:3;29493:2;29485:6;29481:15;29474:28;29289:220;:::o;29515:366::-;29657:3;29678:67;29742:2;29737:3;29678:67;:::i;:::-;29671:74;;29754:93;29843:3;29754:93;:::i;:::-;29872:2;29867:3;29863:12;29856:19;;29515:366;;;:::o;29887:419::-;30053:4;30091:2;30080:9;30076:18;30068:26;;30140:9;30134:4;30130:20;30126:1;30115:9;30111:17;30104:47;30168:131;30294:4;30168:131;:::i;:::-;30160:139;;29887:419;;;:::o;30312:180::-;30360:77;30357:1;30350:88;30457:4;30454:1;30447:15;30481:4;30478:1;30471:15;30498:180;30546:77;30543:1;30536:88;30643:4;30640:1;30633:15;30667:4;30664:1;30657:15;30684:114;30751:6;30785:5;30779:12;30769:22;;30684:114;;;:::o;30804:184::-;30903:11;30937:6;30932:3;30925:19;30977:4;30972:3;30968:14;30953:29;;30804:184;;;;:::o;30994:132::-;31061:4;31084:3;31076:11;;31114:4;31109:3;31105:14;31097:22;;30994:132;;;:::o;31132:108::-;31209:24;31227:5;31209:24;:::i;:::-;31204:3;31197:37;31132:108;;:::o;31246:179::-;31315:10;31336:46;31378:3;31370:6;31336:46;:::i;:::-;31414:4;31409:3;31405:14;31391:28;;31246:179;;;;:::o;31431:113::-;31501:4;31533;31528:3;31524:14;31516:22;;31431:113;;;:::o;31580:732::-;31699:3;31728:54;31776:5;31728:54;:::i;:::-;31798:86;31877:6;31872:3;31798:86;:::i;:::-;31791:93;;31908:56;31958:5;31908:56;:::i;:::-;31987:7;32018:1;32003:284;32028:6;32025:1;32022:13;32003:284;;;32104:6;32098:13;32131:63;32190:3;32175:13;32131:63;:::i;:::-;32124:70;;32217:60;32270:6;32217:60;:::i;:::-;32207:70;;32063:224;32050:1;32047;32043:9;32038:14;;32003:284;;;32007:14;32303:3;32296:10;;31704:608;;;31580:732;;;;:::o;32318:831::-;32581:4;32619:3;32608:9;32604:19;32596:27;;32633:71;32701:1;32690:9;32686:17;32677:6;32633:71;:::i;:::-;32714:80;32790:2;32779:9;32775:18;32766:6;32714:80;:::i;:::-;32841:9;32835:4;32831:20;32826:2;32815:9;32811:18;32804:48;32869:108;32972:4;32963:6;32869:108;:::i;:::-;32861:116;;32987:72;33055:2;33044:9;33040:18;33031:6;32987:72;:::i;:::-;33069:73;33137:3;33126:9;33122:19;33113:6;33069:73;:::i;:::-;32318:831;;;;;;;;:::o

Swarm Source

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