ETH Price: $3,486.52 (-1.18%)
Gas: 4 Gwei

Token

Bitgrok (BROK)
 

Overview

Max Total Supply

1,000,000,000 BROK

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,594,869.067946941999171465 BROK

Value
$0.00
0x54eed7e52f8f1c9933209f7762136381cadd1ba9
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:
BITGROK

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

contract Context {
    constructor () { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint a, uint b) internal pure returns (uint) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
       
        _owner = msg.sender ;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender() , "Ownable: caller is not the owner");
        _;
    }

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

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


contract ERC20Detailed {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory tname, string memory tsymbol, uint8 tdecimals) {
        _name = tname;
        _symbol = tsymbol;
        _decimals = tdecimals;
        
    }
    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}



library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using SafeMath for uint;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    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 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 BITGROK is Context, Ownable, IERC20, ERC20Detailed {
  using SafeERC20 for IERC20;
  using Address for address;
  using SafeMath for uint256;
  
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    mapping (address => uint) internal _balances;
    mapping (address => mapping (address => uint)) internal _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    
    uint256 internal _totalSupply;


    uint256 private marketingFee;
 
    uint256 private liquidityFee;
    uint256 private totalFee;

    uint256 public BUYmarketingFee = 20;
    uint256 public BUYliquidityFee = 1;
    uint256 public BUYtotalFee = BUYliquidityFee.add(BUYmarketingFee);

    uint256 public SELLmarketingFee = 20;
    uint256 public SELLliquidityFee = 1;
    uint256 public SELLtotalFee = SELLliquidityFee.add(SELLmarketingFee);


    address payable public marketingaddress = payable(0x28455F0d64Cd4726754c03A54310814bB8f43713);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
   

    uint256 public numTokensSellToAddToLiquidity = 100000 * 10**18;
    uint256 public maxTxAmount =   100000000 * 10**18;
   
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
     event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    bool private swapping;
    
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
  
    address public _owner;
  
    constructor () ERC20Detailed("Bitgrok", "BROK", 18) {
      _owner = msg.sender ;
    _totalSupply = 1000000000 * (10**18);
    
	_balances[_owner] = _totalSupply;
	//uniswapv3 router = 0xE592427A0AEce92De3Edee1F18E0157C05861564
	 IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;


          //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingaddress] = true;

     emit Transfer(address(0), _msgSender(), _totalSupply);
  }
  
    function totalSupply() public view override returns (uint) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) public override  returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address towner, address spender) public view override returns (uint) {
        return _allowances[towner][spender];
    }
    function approve(address spender, uint amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint amount) public 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, uint addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setMarketingAddress(address payable wallet) external onlyOwner
    {
        marketingaddress = wallet;
    }



    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function changeNumTokensSellToAddToLiquidity(uint256 _numTokensSellToAddToLiquidity) external onlyOwner
    {
        numTokensSellToAddToLiquidity = _numTokensSellToAddToLiquidity;
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }


        function changeMaxTxLimit(uint256 _number) external onlyOwner
    {
        maxTxAmount = _number;
    }
   
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
    function _transfer(address sender, address recipient, uint amount) internal{

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(sender != owner() && recipient != owner())
        {
            require(amount <= maxTxAmount, "Transaction size limit reached");
        }

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !swapping &&
            sender != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapping = true;
           
            uint256 walletTokens = contractTokenBalance.mul(SELLmarketingFee).div(SELLtotalFee);
            uint256 contractBalance = address(this).balance;
            swapTokensForEth(walletTokens);
            uint256 newBalance = address(this).balance.sub(contractBalance);
            uint256 marketingShare = newBalance.mul(SELLmarketingFee).div((SELLmarketingFee));
            //uint256 rewardShare = newBalance.sub(marketingShare);
            payable(marketingaddress).transfer(marketingShare);

            uint256 swapTokens = contractTokenBalance.mul(SELLliquidityFee).div(SELLtotalFee);
            swapAndLiquify(swapTokens);

            swapping = false;

        }
        
         //indicates if fee should be deducted from transfer
        bool takeFee = !swapping;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }

        if(sender != uniswapV2Pair && recipient != uniswapV2Pair)
        {
            takeFee = false;
        }
        if(takeFee){
        if(sender == uniswapV2Pair)
        {
            marketingFee = BUYmarketingFee;
            liquidityFee = BUYliquidityFee;
            totalFee = BUYtotalFee;
           
        }
        if(recipient == uniswapV2Pair)
        {
            marketingFee = SELLmarketingFee;
            liquidityFee = SELLliquidityFee;
            totalFee = SELLtotalFee;

        }
        }
       
        if(takeFee)
        {
            uint256 taxAmount = amount.mul(totalFee).div(100);
            uint256 TotalSent = amount.sub(taxAmount);
            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(TotalSent);
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(sender, recipient, TotalSent);
            emit Transfer(sender, address(this), taxAmount);
        }
        else
        {
            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }

      
    }


    function setSellFee(uint256 _onSellliquidityFee, uint256 _onSellMarketingFee) public onlyOwner {

        SELLmarketingFee = _onSellMarketingFee;
        SELLliquidityFee = _onSellliquidityFee;
        SELLtotalFee = SELLliquidityFee.add(SELLmarketingFee);
        uint256  onSelltotalFees;
        onSelltotalFees = SELLmarketingFee.add(SELLliquidityFee);
      //  require(onSelltotalFees <= 15, "Sell Fee should be 15% or less");
    }

    function setBuyFee(uint256 _onBuyliquidityFee, uint256 _onBuyMarketingFee) public onlyOwner {

        BUYmarketingFee = _onBuyMarketingFee;
        BUYliquidityFee = _onBuyliquidityFee;
        BUYtotalFee = BUYliquidityFee.add(BUYmarketingFee);
        uint256  onBuytotalFees;
        onBuytotalFees = BUYmarketingFee.add(BUYliquidityFee);
      //  require(onBuytotalFees <= 10, "Buy Fee should be 10% or less");
    }


     function swapAndLiquify(uint256 tokens) private lockTheSwap {
       
       // split the contract balance into halves
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

      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
            owner(),
            block.timestamp
        );

    }

    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 _approve(address towner, address spender, uint amount) internal {
        require(towner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function withdrawStuckETh() external onlyOwner{
        require (address(this).balance > 0, "Can't withdraw negative or zero");
        payable(owner()).transfer(address(this).balance);
    }



    function removeStuckToken(address _address) external onlyOwner {
        require(_address != address(this), "Can't withdraw tokens destined for liquidity");
        require(IERC20(_address).balanceOf(address(this)) > 0, "Can't withdraw 0");

        IERC20(_address).transfer(owner(), IERC20(_address).balanceOf(address(this)));
    } 

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BUYliquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUYmarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUYtotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELLliquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELLmarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELLtotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"towner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_number","type":"uint256"}],"name":"changeMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokensSellToAddToLiquidity","type":"uint256"}],"name":"changeNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingaddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","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":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_onBuyliquidityFee","type":"uint256"},{"internalType":"uint256","name":"_onBuyMarketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_onSellliquidityFee","type":"uint256"},{"internalType":"uint256","name":"_onSellMarketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"withdrawStuckETh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526014600b556001600c5562000027600b54600c546200069560201b90919060201c565b600d556014600e556001600f556200004d600e54600f546200069560201b90919060201c565b6010557328455f0d64cd4726754c03a54310814bb8f4371360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160156101000a81548160ff02191690831515021790555069152d02c7e14af68000006012556a52b7d2dcc80cd2e4000000601355348015620000e8575f80fd5b506040518060400160405280600781526020017f42697467726f6b000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f42524f4b000000000000000000000000000000000000000000000000000000008152506012335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826001908162000220919062000989565b50816002908162000232919062000989565b508060035f6101000a81548160ff021916908360ff16021790555050505033601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce800000060078190555060075460045f601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000392919062000ad2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200041e919062000ad2565b6040518363ffffffff1660e01b81526004016200043d92919062000b13565b6020604051808303815f875af11580156200045a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000480919062000ad2565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160065f620004fc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006266200071e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000686919062000b4f565b60405180910390a35062000c4f565b5f808284620006a5919062000b97565b905083811015620006ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e49062000c2f565b60405180910390fd5b8091505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f33905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007a157607f821691505b602082108103620007b757620007b66200075c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200081b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007de565b620008278683620007de565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008716200086b62000865846200083f565b62000848565b6200083f565b9050919050565b5f819050919050565b6200088c8362000851565b620008a46200089b8262000878565b848454620007ea565b825550505050565b5f90565b620008ba620008ac565b620008c781848462000881565b505050565b5b81811015620008ee57620008e25f82620008b0565b600181019050620008cd565b5050565b601f8211156200093d576200090781620007bd565b6200091284620007cf565b8101602085101562000922578190505b6200093a6200093185620007cf565b830182620008cc565b50505b505050565b5f82821c905092915050565b5f6200095f5f198460080262000942565b1980831691505092915050565b5f6200097983836200094e565b9150826002028217905092915050565b620009948262000725565b67ffffffffffffffff811115620009b057620009af6200072f565b5b620009bc825462000789565b620009c9828285620008f2565b5f60209050601f831160018114620009ff575f8415620009ea578287015190505b620009f685826200096c565b86555062000a65565b601f19841662000a0f86620007bd565b5f5b8281101562000a385784890151825560018201915060208501945060208101905062000a11565b8683101562000a58578489015162000a54601f8916826200094e565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a9c8262000a71565b9050919050565b62000aae8162000a90565b811462000ab9575f80fd5b50565b5f8151905062000acc8162000aa3565b92915050565b5f6020828403121562000aea5762000ae962000a6d565b5b5f62000af98482850162000abc565b91505092915050565b62000b0d8162000a90565b82525050565b5f60408201905062000b285f83018562000b02565b62000b37602083018462000b02565b9392505050565b62000b49816200083f565b82525050565b5f60208201905062000b645f83018462000b3e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ba3826200083f565b915062000bb0836200083f565b925082820190508082111562000bcb5762000bca62000b6a565b5b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000c17601b8362000bd1565b915062000c248262000be1565b602082019050919050565b5f6020820190508181035f83015262000c488162000c09565b9050919050565b60805160a051613dea62000cb75f395f8181610d1001528181611f1501528181612188015281816121df0152818161223f01526122ae01525f8181610a5a015281816129c701528181612aa601528181612acd01528181612cde0152612d050152613dea5ff3fe60806040526004361061021d575f3560e01c8063889b408c11610122578063c57a6c44116100aa578063e745b2541161006e578063e745b254146107b0578063ea2f0b37146107da578063f2fde38b14610802578063fa716d131461082a578063fb0ecfa41461085457610224565b8063c57a6c44146106d0578063d12a7688146106f8578063dd62ed3e14610722578063e083e9221461075e578063e0f07e3a1461078657610224565b806395d89b41116100f157806395d89b41146105dc578063a457c2d714610606578063a9059cbb14610642578063b2bdfa7b1461067e578063c49b9a80146106a857610224565b8063889b408c146105365780638c0b5e22146105605780638da5cb5b1461058a578063906e9dd0146105b457610224565b806333759dfb116101a55780634a74bb02116101745780634a74bb021461046a5780635eb04347146104945780636ac9a870146104bc57806370a08231146104e4578063715018a61461052057610224565b806333759dfb146103b257806339509351146103dc578063437823ec1461041857806349bd5a5e1461044057610224565b80630b4ae420116101ec5780630b4ae420146102e25780631694505e146102f857806318160ddd1461032257806323b872dd1461034c578063313ce5671461038857610224565b8063043a28ee1461022857806306e8781a1461025257806306fdde031461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c61087c565b6040516102499190612dce565b60405180910390f35b34801561025d575f80fd5b50610266610882565b6040516102739190612dce565b60405180910390f35b348015610287575f80fd5b50610290610888565b60405161029d9190612e71565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190612f19565b610918565b6040516102d99190612f71565b60405180910390f35b3480156102ed575f80fd5b506102f6610935565b005b348015610303575f80fd5b5061030c610a58565b6040516103199190612fe5565b60405180910390f35b34801561032d575f80fd5b50610336610a7c565b6040516103439190612dce565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d9190612ffe565b610a85565b60405161037f9190612f71565b60405180910390f35b348015610393575f80fd5b5061039c610b59565b6040516103a99190613069565b60405180910390f35b3480156103bd575f80fd5b506103c6610b6e565b6040516103d39190612dce565b60405180910390f35b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f19565b610b74565b60405161040f9190612f71565b60405180910390f35b348015610423575f80fd5b5061043e60048036038101906104399190613082565b610c22565b005b34801561044b575f80fd5b50610454610d0e565b60405161046191906130bc565b60405180910390f35b348015610475575f80fd5b5061047e610d32565b60405161048b9190612f71565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b591906130d5565b610d45565b005b3480156104c7575f80fd5b506104e260048036038101906104dd9190613100565b610de3565b005b3480156104ef575f80fd5b5061050a60048036038101906105059190613082565b610ec1565b6040516105179190612dce565b60405180910390f35b34801561052b575f80fd5b50610534610f07565b005b348015610541575f80fd5b5061054a611055565b6040516105579190612dce565b60405180910390f35b34801561056b575f80fd5b5061057461105b565b6040516105819190612dce565b60405180910390f35b348015610595575f80fd5b5061059e611061565b6040516105ab91906130bc565b60405180910390f35b3480156105bf575f80fd5b506105da60048036038101906105d59190613179565b611088565b005b3480156105e7575f80fd5b506105f061115f565b6040516105fd9190612e71565b60405180910390f35b348015610611575f80fd5b5061062c60048036038101906106279190612f19565b6111ef565b6040516106399190612f71565b60405180910390f35b34801561064d575f80fd5b5061066860048036038101906106639190612f19565b6112b7565b6040516106759190612f71565b60405180910390f35b348015610689575f80fd5b506106926112d4565b60405161069f91906130bc565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c991906131ce565b6112fa565b005b3480156106db575f80fd5b506106f660048036038101906106f191906130d5565b6113e2565b005b348015610703575f80fd5b5061070c611480565b6040516107199190612dce565b60405180910390f35b34801561072d575f80fd5b50610748600480360381019061074391906131f9565b611486565b6040516107559190612dce565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f9190613082565b611508565b005b348015610791575f80fd5b5061079a6117c0565b6040516107a79190613246565b60405180910390f35b3480156107bb575f80fd5b506107c46117e5565b6040516107d19190612dce565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb9190613082565b6117eb565b005b34801561080d575f80fd5b5061082860048036038101906108239190613082565b6118d6565b005b348015610835575f80fd5b5061083e611a93565b60405161084b9190612dce565b60405180910390f35b34801561085f575f80fd5b5061087a60048036038101906108759190613100565b611a99565b005b600d5481565b600b5481565b6060600180546108979061328c565b80601f01602080910402602001604051908101604052809291908181526020018280546108c39061328c565b801561090e5780601f106108e55761010080835404028352916020019161090e565b820191905f5260205f20905b8154815290600101906020018083116108f157829003601f168201915b5050505050905090565b5f61092b610924611b77565b8484611b7e565b6001905092915050565b61093d611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c090613306565b60405180910390fd5b5f4711610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a029061336e565b60405180910390fd5b610a13611061565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a55573d5f803e3d5ffd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600754905090565b5f610a91848484611d41565b610b4e84610a9d611b77565b610b4985604051806060016040528060288152602001613d686028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b00611b77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b611b7e565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b60105481565b5f610c18610b80611b77565b84610c138560055f610b90611b77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b611b7e565b6001905092915050565b610c2a611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90613306565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160159054906101000a900460ff1681565b610d4d611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd090613306565b60405180910390fd5b8060138190555050565b610deb611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e90613306565b60405180910390fd5b80600e8190555081600f81905550610e9c600e54600f5461280d90919063ffffffff16565b6010819055505f610eba600f54600e5461280d90919063ffffffff16565b9050505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f0f611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9290613306565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60135481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611090611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390613306565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606002805461116e9061328c565b80601f016020809104026020016040519081016040528092919081815260200182805461119a9061328c565b80156111e55780601f106111bc576101008083540402835291602001916111e5565b820191905f5260205f20905b8154815290600101906020018083116111c857829003601f168201915b5050505050905090565b5f6112ad6111fb611b77565b846112a885604051806060016040528060258152602001613d906025913960055f611224611b77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b611b7e565b6001905092915050565b5f6112ca6112c3611b77565b8484611d41565b6001905092915050565b601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611302611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590613306565b60405180910390fd5b80601160156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516113d79190612f71565b60405180910390a150565b6113ea611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613306565b60405180910390fd5b8060128190555050565b60125481565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611510611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613306565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611601906133fc565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161164491906130bc565b602060405180830381865afa15801561165f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611683919061342e565b116116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba906134a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6116e7611061565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161172091906130bc565b602060405180830381865afa15801561173b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175f919061342e565b6040518363ffffffff1660e01b815260040161177c9291906134c1565b6020604051808303815f875af1158015611798573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bc91906134fc565b5050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6117f3611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690613306565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6118de611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190613306565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90613597565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b611aa1611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2490613306565b60405180910390fd5b80600b8190555081600c81905550611b52600b54600c5461280d90919063ffffffff16565b600d819055505f611b70600c54600b5461280d90919063ffffffff16565b9050505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390613625565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906136b3565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d349190612dce565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690613741565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e14906137cf565b60405180910390fd5b611e25611061565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e935750611e63611061565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ede57601354811115611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed490613837565b60405180910390fd5b5b5f611ee830610ec1565b90505f6012548210159050808015611f0c575060145f9054906101000a900460ff16155b8015611f6457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7c5750601160159054906101000a900460ff165b156120cf57600160145f6101000a81548160ff0219169083151502179055505f611fc5601054611fb7600e548661286a90919063ffffffff16565b6128e190919063ffffffff16565b90505f479050611fd48261292a565b5f611fe88247612b5d90919063ffffffff16565b90505f612014600e54612006600e548561286a90919063ffffffff16565b6128e190919063ffffffff16565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561207a573d5f803e3d5ffd5b505f6120a5601054612097600f548a61286a90919063ffffffff16565b6128e190919063ffffffff16565b90506120b081612ba6565b5f60145f6101000a81548160ff02191690831515021790555050505050505b5f60145f9054906101000a900460ff1615905060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061217d575060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612186575f90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561222e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612237575f90505b801561231c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036122ac57600b54600881905550600c54600981905550600d54600a819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361231b57600e54600881905550600f54600981905550601054600a819055505b5b8015612601575f61234b606461233d600a548861286a90919063ffffffff16565b6128e190919063ffffffff16565b90505f6123618287612b5d90919063ffffffff16565b90506123cd86604051806060016040528060268152602001613d426026913960045f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b60045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245e8160045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b60045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124ef8260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161258d9190612dce565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125f29190612dce565b60405180910390a350506127a3565b61266b84604051806060016040528060268152602001613d426026913960045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b60045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126fc8460045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161279a9190612dce565b60405180910390a35b505050505050565b5f8383111582906127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e99190612e71565b60405180910390fd5b505f83856128009190613882565b9050809150509392505050565b5f80828461281b91906138b5565b905083811015612860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285790613932565b60405180910390fd5b8091505092915050565b5f80830361287a575f90506128db565b5f82846128879190613950565b905082848261289691906139be565b146128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cd90613a5e565b60405180910390fd5b809150505b92915050565b5f61292283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c77565b905092915050565b5f600267ffffffffffffffff81111561294657612945613a7c565b5b6040519080825280602002602001820160405280156129745781602001602082028036833780820191505090505b50905030815f8151811061298b5761298a613aa9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a529190613aea565b81600181518110612a6657612a65613aa9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612acb307f000000000000000000000000000000000000000000000000000000000000000084611b7e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b2c959493929190613c05565b5f604051808303815f87803b158015612b43575f80fd5b505af1158015612b55573d5f803e3d5ffd5b505050505050565b5f612b9e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127ab565b905092915050565b6001601160146101000a81548160ff0219169083151502179055505f612bd66002836128e190919063ffffffff16565b90505f612bec8284612b5d90919063ffffffff16565b90505f479050612bfb8361292a565b5f612c0f8247612b5d90919063ffffffff16565b9050612c1b8382612cd8565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612c4e93929190613c5d565b60405180910390a1505050505f601160146101000a81548160ff02191690831515021790555050565b5f8083118290612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb49190612e71565b60405180910390fd5b505f8385612ccb91906139be565b9050809150509392505050565b612d03307f000000000000000000000000000000000000000000000000000000000000000084611b7e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d4c611061565b426040518863ffffffff1660e01b8152600401612d6e96959493929190613c92565b60606040518083038185885af1158015612d8a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612daf9190613cf1565b5050505050565b5f819050919050565b612dc881612db6565b82525050565b5f602082019050612de15f830184612dbf565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e1e578082015181840152602081019050612e03565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e4382612de7565b612e4d8185612df1565b9350612e5d818560208601612e01565b612e6681612e29565b840191505092915050565b5f6020820190508181035f830152612e898184612e39565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ebe82612e95565b9050919050565b612ece81612eb4565b8114612ed8575f80fd5b50565b5f81359050612ee981612ec5565b92915050565b612ef881612db6565b8114612f02575f80fd5b50565b5f81359050612f1381612eef565b92915050565b5f8060408385031215612f2f57612f2e612e91565b5b5f612f3c85828601612edb565b9250506020612f4d85828601612f05565b9150509250929050565b5f8115159050919050565b612f6b81612f57565b82525050565b5f602082019050612f845f830184612f62565b92915050565b5f819050919050565b5f612fad612fa8612fa384612e95565b612f8a565b612e95565b9050919050565b5f612fbe82612f93565b9050919050565b5f612fcf82612fb4565b9050919050565b612fdf81612fc5565b82525050565b5f602082019050612ff85f830184612fd6565b92915050565b5f805f6060848603121561301557613014612e91565b5b5f61302286828701612edb565b935050602061303386828701612edb565b925050604061304486828701612f05565b9150509250925092565b5f60ff82169050919050565b6130638161304e565b82525050565b5f60208201905061307c5f83018461305a565b92915050565b5f6020828403121561309757613096612e91565b5b5f6130a484828501612edb565b91505092915050565b6130b681612eb4565b82525050565b5f6020820190506130cf5f8301846130ad565b92915050565b5f602082840312156130ea576130e9612e91565b5b5f6130f784828501612f05565b91505092915050565b5f806040838503121561311657613115612e91565b5b5f61312385828601612f05565b925050602061313485828601612f05565b9150509250929050565b5f61314882612e95565b9050919050565b6131588161313e565b8114613162575f80fd5b50565b5f813590506131738161314f565b92915050565b5f6020828403121561318e5761318d612e91565b5b5f61319b84828501613165565b91505092915050565b6131ad81612f57565b81146131b7575f80fd5b50565b5f813590506131c8816131a4565b92915050565b5f602082840312156131e3576131e2612e91565b5b5f6131f0848285016131ba565b91505092915050565b5f806040838503121561320f5761320e612e91565b5b5f61321c85828601612edb565b925050602061322d85828601612edb565b9150509250929050565b6132408161313e565b82525050565b5f6020820190506132595f830184613237565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132a357607f821691505b6020821081036132b6576132b561325f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132f0602083612df1565b91506132fb826132bc565b602082019050919050565b5f6020820190508181035f83015261331d816132e4565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f005f82015250565b5f613358601f83612df1565b915061336382613324565b602082019050919050565b5f6020820190508181035f8301526133858161334c565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e656420665f8201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b5f6133e6602c83612df1565b91506133f18261338c565b604082019050919050565b5f6020820190508181035f830152613413816133da565b9050919050565b5f8151905061342881612eef565b92915050565b5f6020828403121561344357613442612e91565b5b5f6134508482850161341a565b91505092915050565b7f43616e27742077697468647261772030000000000000000000000000000000005f82015250565b5f61348d601083612df1565b915061349882613459565b602082019050919050565b5f6020820190508181035f8301526134ba81613481565b9050919050565b5f6040820190506134d45f8301856130ad565b6134e16020830184612dbf565b9392505050565b5f815190506134f6816131a4565b92915050565b5f6020828403121561351157613510612e91565b5b5f61351e848285016134e8565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613581602683612df1565b915061358c82613527565b604082019050919050565b5f6020820190508181035f8301526135ae81613575565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61360f602483612df1565b915061361a826135b5565b604082019050919050565b5f6020820190508181035f83015261363c81613603565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61369d602283612df1565b91506136a882613643565b604082019050919050565b5f6020820190508181035f8301526136ca81613691565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61372b602583612df1565b9150613736826136d1565b604082019050919050565b5f6020820190508181035f8301526137588161371f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137b9602383612df1565b91506137c48261375f565b604082019050919050565b5f6020820190508181035f8301526137e6816137ad565b9050919050565b7f5472616e73616374696f6e2073697a65206c696d6974207265616368656400005f82015250565b5f613821601e83612df1565b915061382c826137ed565b602082019050919050565b5f6020820190508181035f83015261384e81613815565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61388c82612db6565b915061389783612db6565b92508282039050818111156138af576138ae613855565b5b92915050565b5f6138bf82612db6565b91506138ca83612db6565b92508282019050808211156138e2576138e1613855565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391c601b83612df1565b9150613927826138e8565b602082019050919050565b5f6020820190508181035f83015261394981613910565b9050919050565b5f61395a82612db6565b915061396583612db6565b925082820261397381612db6565b9150828204841483151761398a57613989613855565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139c882612db6565b91506139d383612db6565b9250826139e3576139e2613991565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a48602183612df1565b9150613a53826139ee565b604082019050919050565b5f6020820190508181035f830152613a7581613a3c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613ae481612ec5565b92915050565b5f60208284031215613aff57613afe612e91565b5b5f613b0c84828501613ad6565b91505092915050565b5f819050919050565b5f613b38613b33613b2e84613b15565b612f8a565b612db6565b9050919050565b613b4881613b1e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b8081612eb4565b82525050565b5f613b918383613b77565b60208301905092915050565b5f602082019050919050565b5f613bb382613b4e565b613bbd8185613b58565b9350613bc883613b68565b805f5b83811015613bf8578151613bdf8882613b86565b9750613bea83613b9d565b925050600181019050613bcb565b5085935050505092915050565b5f60a082019050613c185f830188612dbf565b613c256020830187613b3f565b8181036040830152613c378186613ba9565b9050613c4660608301856130ad565b613c536080830184612dbf565b9695505050505050565b5f606082019050613c705f830186612dbf565b613c7d6020830185612dbf565b613c8a6040830184612dbf565b949350505050565b5f60c082019050613ca55f8301896130ad565b613cb26020830188612dbf565b613cbf6040830187613b3f565b613ccc6060830186613b3f565b613cd960808301856130ad565b613ce660a0830184612dbf565b979650505050505050565b5f805f60608486031215613d0857613d07612e91565b5b5f613d158682870161341a565b9350506020613d268682870161341a565b9250506040613d378682870161341a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204dd3a06c097a17761ba0184a9ffde26b76007c6d148a5059414e245d1e43d3a464736f6c63430008170033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c8063889b408c11610122578063c57a6c44116100aa578063e745b2541161006e578063e745b254146107b0578063ea2f0b37146107da578063f2fde38b14610802578063fa716d131461082a578063fb0ecfa41461085457610224565b8063c57a6c44146106d0578063d12a7688146106f8578063dd62ed3e14610722578063e083e9221461075e578063e0f07e3a1461078657610224565b806395d89b41116100f157806395d89b41146105dc578063a457c2d714610606578063a9059cbb14610642578063b2bdfa7b1461067e578063c49b9a80146106a857610224565b8063889b408c146105365780638c0b5e22146105605780638da5cb5b1461058a578063906e9dd0146105b457610224565b806333759dfb116101a55780634a74bb02116101745780634a74bb021461046a5780635eb04347146104945780636ac9a870146104bc57806370a08231146104e4578063715018a61461052057610224565b806333759dfb146103b257806339509351146103dc578063437823ec1461041857806349bd5a5e1461044057610224565b80630b4ae420116101ec5780630b4ae420146102e25780631694505e146102f857806318160ddd1461032257806323b872dd1461034c578063313ce5671461038857610224565b8063043a28ee1461022857806306e8781a1461025257806306fdde031461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c61087c565b6040516102499190612dce565b60405180910390f35b34801561025d575f80fd5b50610266610882565b6040516102739190612dce565b60405180910390f35b348015610287575f80fd5b50610290610888565b60405161029d9190612e71565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190612f19565b610918565b6040516102d99190612f71565b60405180910390f35b3480156102ed575f80fd5b506102f6610935565b005b348015610303575f80fd5b5061030c610a58565b6040516103199190612fe5565b60405180910390f35b34801561032d575f80fd5b50610336610a7c565b6040516103439190612dce565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d9190612ffe565b610a85565b60405161037f9190612f71565b60405180910390f35b348015610393575f80fd5b5061039c610b59565b6040516103a99190613069565b60405180910390f35b3480156103bd575f80fd5b506103c6610b6e565b6040516103d39190612dce565b60405180910390f35b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f19565b610b74565b60405161040f9190612f71565b60405180910390f35b348015610423575f80fd5b5061043e60048036038101906104399190613082565b610c22565b005b34801561044b575f80fd5b50610454610d0e565b60405161046191906130bc565b60405180910390f35b348015610475575f80fd5b5061047e610d32565b60405161048b9190612f71565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b591906130d5565b610d45565b005b3480156104c7575f80fd5b506104e260048036038101906104dd9190613100565b610de3565b005b3480156104ef575f80fd5b5061050a60048036038101906105059190613082565b610ec1565b6040516105179190612dce565b60405180910390f35b34801561052b575f80fd5b50610534610f07565b005b348015610541575f80fd5b5061054a611055565b6040516105579190612dce565b60405180910390f35b34801561056b575f80fd5b5061057461105b565b6040516105819190612dce565b60405180910390f35b348015610595575f80fd5b5061059e611061565b6040516105ab91906130bc565b60405180910390f35b3480156105bf575f80fd5b506105da60048036038101906105d59190613179565b611088565b005b3480156105e7575f80fd5b506105f061115f565b6040516105fd9190612e71565b60405180910390f35b348015610611575f80fd5b5061062c60048036038101906106279190612f19565b6111ef565b6040516106399190612f71565b60405180910390f35b34801561064d575f80fd5b5061066860048036038101906106639190612f19565b6112b7565b6040516106759190612f71565b60405180910390f35b348015610689575f80fd5b506106926112d4565b60405161069f91906130bc565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c991906131ce565b6112fa565b005b3480156106db575f80fd5b506106f660048036038101906106f191906130d5565b6113e2565b005b348015610703575f80fd5b5061070c611480565b6040516107199190612dce565b60405180910390f35b34801561072d575f80fd5b50610748600480360381019061074391906131f9565b611486565b6040516107559190612dce565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f9190613082565b611508565b005b348015610791575f80fd5b5061079a6117c0565b6040516107a79190613246565b60405180910390f35b3480156107bb575f80fd5b506107c46117e5565b6040516107d19190612dce565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb9190613082565b6117eb565b005b34801561080d575f80fd5b5061082860048036038101906108239190613082565b6118d6565b005b348015610835575f80fd5b5061083e611a93565b60405161084b9190612dce565b60405180910390f35b34801561085f575f80fd5b5061087a60048036038101906108759190613100565b611a99565b005b600d5481565b600b5481565b6060600180546108979061328c565b80601f01602080910402602001604051908101604052809291908181526020018280546108c39061328c565b801561090e5780601f106108e55761010080835404028352916020019161090e565b820191905f5260205f20905b8154815290600101906020018083116108f157829003601f168201915b5050505050905090565b5f61092b610924611b77565b8484611b7e565b6001905092915050565b61093d611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c090613306565b60405180910390fd5b5f4711610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a029061336e565b60405180910390fd5b610a13611061565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a55573d5f803e3d5ffd5b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600754905090565b5f610a91848484611d41565b610b4e84610a9d611b77565b610b4985604051806060016040528060288152602001613d686028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b00611b77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b611b7e565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b60105481565b5f610c18610b80611b77565b84610c138560055f610b90611b77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b611b7e565b6001905092915050565b610c2a611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90613306565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b7f0000000000000000000000005fb99c8c38dea494cd6070bcc23796d819031bee81565b601160159054906101000a900460ff1681565b610d4d611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd090613306565b60405180910390fd5b8060138190555050565b610deb611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e90613306565b60405180910390fd5b80600e8190555081600f81905550610e9c600e54600f5461280d90919063ffffffff16565b6010819055505f610eba600f54600e5461280d90919063ffffffff16565b9050505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f0f611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9290613306565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60135481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611090611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390613306565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606002805461116e9061328c565b80601f016020809104026020016040519081016040528092919081815260200182805461119a9061328c565b80156111e55780601f106111bc576101008083540402835291602001916111e5565b820191905f5260205f20905b8154815290600101906020018083116111c857829003601f168201915b5050505050905090565b5f6112ad6111fb611b77565b846112a885604051806060016040528060258152602001613d906025913960055f611224611b77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b611b7e565b6001905092915050565b5f6112ca6112c3611b77565b8484611d41565b6001905092915050565b601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611302611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590613306565b60405180910390fd5b80601160156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516113d79190612f71565b60405180910390a150565b6113ea611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613306565b60405180910390fd5b8060128190555050565b60125481565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611510611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613306565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611601906133fc565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161164491906130bc565b602060405180830381865afa15801561165f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611683919061342e565b116116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba906134a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6116e7611061565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161172091906130bc565b602060405180830381865afa15801561173b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175f919061342e565b6040518363ffffffff1660e01b815260040161177c9291906134c1565b6020604051808303815f875af1158015611798573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bc91906134fc565b5050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6117f3611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690613306565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6118de611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190613306565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90613597565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b611aa1611b77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2490613306565b60405180910390fd5b80600b8190555081600c81905550611b52600b54600c5461280d90919063ffffffff16565b600d819055505f611b70600c54600b5461280d90919063ffffffff16565b9050505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390613625565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906136b3565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d349190612dce565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690613741565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e14906137cf565b60405180910390fd5b611e25611061565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e935750611e63611061565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ede57601354811115611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed490613837565b60405180910390fd5b5b5f611ee830610ec1565b90505f6012548210159050808015611f0c575060145f9054906101000a900460ff16155b8015611f6457507f0000000000000000000000005fb99c8c38dea494cd6070bcc23796d819031bee73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7c5750601160159054906101000a900460ff165b156120cf57600160145f6101000a81548160ff0219169083151502179055505f611fc5601054611fb7600e548661286a90919063ffffffff16565b6128e190919063ffffffff16565b90505f479050611fd48261292a565b5f611fe88247612b5d90919063ffffffff16565b90505f612014600e54612006600e548561286a90919063ffffffff16565b6128e190919063ffffffff16565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561207a573d5f803e3d5ffd5b505f6120a5601054612097600f548a61286a90919063ffffffff16565b6128e190919063ffffffff16565b90506120b081612ba6565b5f60145f6101000a81548160ff02191690831515021790555050505050505b5f60145f9054906101000a900460ff1615905060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061217d575060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612186575f90505b7f0000000000000000000000005fb99c8c38dea494cd6070bcc23796d819031bee73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561222e57507f0000000000000000000000005fb99c8c38dea494cd6070bcc23796d819031bee73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612237575f90505b801561231c577f0000000000000000000000005fb99c8c38dea494cd6070bcc23796d819031bee73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036122ac57600b54600881905550600c54600981905550600d54600a819055505b7f0000000000000000000000005fb99c8c38dea494cd6070bcc23796d819031bee73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361231b57600e54600881905550600f54600981905550601054600a819055505b5b8015612601575f61234b606461233d600a548861286a90919063ffffffff16565b6128e190919063ffffffff16565b90505f6123618287612b5d90919063ffffffff16565b90506123cd86604051806060016040528060268152602001613d426026913960045f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b60045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245e8160045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b60045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124ef8260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161258d9190612dce565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125f29190612dce565b60405180910390a350506127a3565b61266b84604051806060016040528060268152602001613d426026913960045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ab9092919063ffffffff16565b60045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126fc8460045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280d90919063ffffffff16565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161279a9190612dce565b60405180910390a35b505050505050565b5f8383111582906127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e99190612e71565b60405180910390fd5b505f83856128009190613882565b9050809150509392505050565b5f80828461281b91906138b5565b905083811015612860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285790613932565b60405180910390fd5b8091505092915050565b5f80830361287a575f90506128db565b5f82846128879190613950565b905082848261289691906139be565b146128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cd90613a5e565b60405180910390fd5b809150505b92915050565b5f61292283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c77565b905092915050565b5f600267ffffffffffffffff81111561294657612945613a7c565b5b6040519080825280602002602001820160405280156129745781602001602082028036833780820191505090505b50905030815f8151811061298b5761298a613aa9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a529190613aea565b81600181518110612a6657612a65613aa9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612acb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b7e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b2c959493929190613c05565b5f604051808303815f87803b158015612b43575f80fd5b505af1158015612b55573d5f803e3d5ffd5b505050505050565b5f612b9e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127ab565b905092915050565b6001601160146101000a81548160ff0219169083151502179055505f612bd66002836128e190919063ffffffff16565b90505f612bec8284612b5d90919063ffffffff16565b90505f479050612bfb8361292a565b5f612c0f8247612b5d90919063ffffffff16565b9050612c1b8382612cd8565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612c4e93929190613c5d565b60405180910390a1505050505f601160146101000a81548160ff02191690831515021790555050565b5f8083118290612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb49190612e71565b60405180910390fd5b505f8385612ccb91906139be565b9050809150509392505050565b612d03307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b7e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d4c611061565b426040518863ffffffff1660e01b8152600401612d6e96959493929190613c92565b60606040518083038185885af1158015612d8a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612daf9190613cf1565b5050505050565b5f819050919050565b612dc881612db6565b82525050565b5f602082019050612de15f830184612dbf565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e1e578082015181840152602081019050612e03565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e4382612de7565b612e4d8185612df1565b9350612e5d818560208601612e01565b612e6681612e29565b840191505092915050565b5f6020820190508181035f830152612e898184612e39565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ebe82612e95565b9050919050565b612ece81612eb4565b8114612ed8575f80fd5b50565b5f81359050612ee981612ec5565b92915050565b612ef881612db6565b8114612f02575f80fd5b50565b5f81359050612f1381612eef565b92915050565b5f8060408385031215612f2f57612f2e612e91565b5b5f612f3c85828601612edb565b9250506020612f4d85828601612f05565b9150509250929050565b5f8115159050919050565b612f6b81612f57565b82525050565b5f602082019050612f845f830184612f62565b92915050565b5f819050919050565b5f612fad612fa8612fa384612e95565b612f8a565b612e95565b9050919050565b5f612fbe82612f93565b9050919050565b5f612fcf82612fb4565b9050919050565b612fdf81612fc5565b82525050565b5f602082019050612ff85f830184612fd6565b92915050565b5f805f6060848603121561301557613014612e91565b5b5f61302286828701612edb565b935050602061303386828701612edb565b925050604061304486828701612f05565b9150509250925092565b5f60ff82169050919050565b6130638161304e565b82525050565b5f60208201905061307c5f83018461305a565b92915050565b5f6020828403121561309757613096612e91565b5b5f6130a484828501612edb565b91505092915050565b6130b681612eb4565b82525050565b5f6020820190506130cf5f8301846130ad565b92915050565b5f602082840312156130ea576130e9612e91565b5b5f6130f784828501612f05565b91505092915050565b5f806040838503121561311657613115612e91565b5b5f61312385828601612f05565b925050602061313485828601612f05565b9150509250929050565b5f61314882612e95565b9050919050565b6131588161313e565b8114613162575f80fd5b50565b5f813590506131738161314f565b92915050565b5f6020828403121561318e5761318d612e91565b5b5f61319b84828501613165565b91505092915050565b6131ad81612f57565b81146131b7575f80fd5b50565b5f813590506131c8816131a4565b92915050565b5f602082840312156131e3576131e2612e91565b5b5f6131f0848285016131ba565b91505092915050565b5f806040838503121561320f5761320e612e91565b5b5f61321c85828601612edb565b925050602061322d85828601612edb565b9150509250929050565b6132408161313e565b82525050565b5f6020820190506132595f830184613237565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132a357607f821691505b6020821081036132b6576132b561325f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132f0602083612df1565b91506132fb826132bc565b602082019050919050565b5f6020820190508181035f83015261331d816132e4565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f005f82015250565b5f613358601f83612df1565b915061336382613324565b602082019050919050565b5f6020820190508181035f8301526133858161334c565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e656420665f8201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b5f6133e6602c83612df1565b91506133f18261338c565b604082019050919050565b5f6020820190508181035f830152613413816133da565b9050919050565b5f8151905061342881612eef565b92915050565b5f6020828403121561344357613442612e91565b5b5f6134508482850161341a565b91505092915050565b7f43616e27742077697468647261772030000000000000000000000000000000005f82015250565b5f61348d601083612df1565b915061349882613459565b602082019050919050565b5f6020820190508181035f8301526134ba81613481565b9050919050565b5f6040820190506134d45f8301856130ad565b6134e16020830184612dbf565b9392505050565b5f815190506134f6816131a4565b92915050565b5f6020828403121561351157613510612e91565b5b5f61351e848285016134e8565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613581602683612df1565b915061358c82613527565b604082019050919050565b5f6020820190508181035f8301526135ae81613575565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61360f602483612df1565b915061361a826135b5565b604082019050919050565b5f6020820190508181035f83015261363c81613603565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61369d602283612df1565b91506136a882613643565b604082019050919050565b5f6020820190508181035f8301526136ca81613691565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61372b602583612df1565b9150613736826136d1565b604082019050919050565b5f6020820190508181035f8301526137588161371f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137b9602383612df1565b91506137c48261375f565b604082019050919050565b5f6020820190508181035f8301526137e6816137ad565b9050919050565b7f5472616e73616374696f6e2073697a65206c696d6974207265616368656400005f82015250565b5f613821601e83612df1565b915061382c826137ed565b602082019050919050565b5f6020820190508181035f83015261384e81613815565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61388c82612db6565b915061389783612db6565b92508282039050818111156138af576138ae613855565b5b92915050565b5f6138bf82612db6565b91506138ca83612db6565b92508282019050808211156138e2576138e1613855565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391c601b83612df1565b9150613927826138e8565b602082019050919050565b5f6020820190508181035f83015261394981613910565b9050919050565b5f61395a82612db6565b915061396583612db6565b925082820261397381612db6565b9150828204841483151761398a57613989613855565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139c882612db6565b91506139d383612db6565b9250826139e3576139e2613991565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a48602183612df1565b9150613a53826139ee565b604082019050919050565b5f6020820190508181035f830152613a7581613a3c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613ae481612ec5565b92915050565b5f60208284031215613aff57613afe612e91565b5b5f613b0c84828501613ad6565b91505092915050565b5f819050919050565b5f613b38613b33613b2e84613b15565b612f8a565b612db6565b9050919050565b613b4881613b1e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b8081612eb4565b82525050565b5f613b918383613b77565b60208301905092915050565b5f602082019050919050565b5f613bb382613b4e565b613bbd8185613b58565b9350613bc883613b68565b805f5b83811015613bf8578151613bdf8882613b86565b9750613bea83613b9d565b925050600181019050613bcb565b5085935050505092915050565b5f60a082019050613c185f830188612dbf565b613c256020830187613b3f565b8181036040830152613c378186613ba9565b9050613c4660608301856130ad565b613c536080830184612dbf565b9695505050505050565b5f606082019050613c705f830186612dbf565b613c7d6020830185612dbf565b613c8a6040830184612dbf565b949350505050565b5f60c082019050613ca55f8301896130ad565b613cb26020830188612dbf565b613cbf6040830187613b3f565b613ccc6060830186613b3f565b613cd960808301856130ad565b613ce660a0830184612dbf565b979650505050505050565b5f805f60608486031215613d0857613d07612e91565b5b5f613d158682870161341a565b9350506020613d268682870161341a565b9250506040613d378682870161341a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204dd3a06c097a17761ba0184a9ffde26b76007c6d148a5059414e245d1e43d3a464736f6c63430008170033

Deployed Bytecode Sourcemap

14105:12411:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14796:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14713:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4020:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17260:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25965:194;;;;;;;;;;;;;:::i;:::-;;14268:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16716:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17424:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4202:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14955:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17740:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18727:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14326:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15168:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18974:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22648:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16819:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3164:148;;;;;;;;;;;;;:::i;:::-;;14913:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15291:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2521:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18219:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4109:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17953:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16941:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15771:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18352:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18531:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15222:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17112:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26171:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15034:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14870:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18850:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3467:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14755:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23102:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14796:65;;;;:::o;14713:35::-;;;;:::o;4020:83::-;4057:13;4090:5;4083:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4020:83;:::o;17260:158::-;17332:4;17349:39;17358:12;:10;:12::i;:::-;17372:7;17381:6;17349:8;:39::i;:::-;17406:4;17399:11;;17260:158;;;;:::o;25965:194::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26055:1:::1;26031:21;:25;26022:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26111:7;:5;:7::i;:::-;26103:25;;:48;26129:21;26103:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25965:194::o:0;14268:51::-;;;:::o;16716:97::-;16769:4;16793:12;;16786:19;;16716:97;:::o;17424:310::-;17519:4;17536:36;17546:6;17554:9;17565:6;17536:9;:36::i;:::-;17583:121;17592:6;17600:12;:10;:12::i;:::-;17614:89;17652:6;17614:89;;;;;;;;;;;;;;;;;:11;:19;17626:6;17614:19;;;;;;;;;;;;;;;:33;17634:12;:10;:12::i;:::-;17614:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17583:8;:121::i;:::-;17722:4;17715:11;;17424:310;;;;;:::o;4202:83::-;4243:5;4268:9;;;;;;;;;;;4261:16;;4202:83;:::o;14955:68::-;;;;:::o;17740:207::-;17817:4;17834:83;17843:12;:10;:12::i;:::-;17857:7;17866:50;17905:10;17866:11;:25;17878:12;:10;:12::i;:::-;17866:25;;;;;;;;;;;;;;;:34;17892:7;17866:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17834:8;:83::i;:::-;17935:4;17928:11;;17740:207;;;;:::o;18727:111::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18826:4:::1;18796:18;:27;18815:7;18796:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18727:111:::0;:::o;14326:38::-;;;:::o;15168:40::-;;;;;;;;;;;;;:::o;18974:107::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19066:7:::1;19052:11;:21;;;;18974:107:::0;:::o;22648:446::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22775:19:::1;22756:16;:38;;;;22824:19;22805:16;:38;;;;22869;22890:16;;22869;;:20;;:38;;;;:::i;:::-;22854:12;:53;;;;22918:24;22971:38;22992:16;;22971;;:20;;:38;;;;:::i;:::-;22953:56;;22743:351;22648:446:::0;;:::o;16819:116::-;16885:4;16909:9;:18;16919:7;16909:18;;;;;;;;;;;;;;;;16902:25;;16819:116;;;:::o;3164:148::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3271:1:::1;3234:40;;3255:6;::::0;::::1;;;;;;;;3234:40;;;;;;;;;;;;3302:1;3285:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3164:148::o:0;14913:35::-;;;;:::o;15291:49::-;;;;:::o;2521:79::-;2559:7;2586:6;;;;;;;;;;;2579:13;;2521:79;:::o;18219:121::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18326:6:::1;18307:16;;:25;;;;;;;;;;;;;;;;;;18219:121:::0;:::o;4109:87::-;4148:13;4181:7;4174:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4109:87;:::o;17953:258::-;18035:4;18052:129;18061:12;:10;:12::i;:::-;18075:7;18084:96;18123:15;18084:96;;;;;;;;;;;;;;;;;:11;:25;18096:12;:10;:12::i;:::-;18084:25;;;;;;;;;;;;;;;:34;18110:7;18084:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18052:8;:129::i;:::-;18199:4;18192:11;;17953:258;;;;:::o;16941:165::-;17017:4;17034:42;17044:12;:10;:12::i;:::-;17058:9;17069:6;17034:9;:42::i;:::-;17094:4;17087:11;;16941:165;;;;:::o;15771:21::-;;;;;;;;;;;;;:::o;18352:171::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18453:8:::1;18429:21;;:32;;;;;;;;;;;;;;;;;;18477:38;18506:8;18477:38;;;;;;:::i;:::-;;;;;;;;18352:171:::0;:::o;18531:190::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18683:30:::1;18651:29;:62;;;;18531:190:::0;:::o;15222:62::-;;;;:::o;17112:142::-;17194:4;17218:11;:19;17230:6;17218:19;;;;;;;;;;;;;;;:28;17238:7;17218:28;;;;;;;;;;;;;;;;17211:35;;17112:142;;;;:::o;26171:339::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26273:4:::1;26253:25;;:8;:25;;::::0;26245:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26390:1;26353:8;26346:26;;;26381:4;26346:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;26338:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26432:8;26425:25;;;26451:7;:5;:7::i;:::-;26467:8;26460:26;;;26495:4;26460:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26425:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26171:339:::0;:::o;15034:93::-;;;;;;;;;;;;;:::o;14870:36::-;;;;:::o;18850:110::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18947:5:::1;18917:18;:27;18936:7;18917:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18850:110:::0;:::o;3467:244::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3576:1:::1;3556:22;;:8;:22;;::::0;3548:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3666:8;3637:38;;3658:6;::::0;::::1;;;;;;;;3637:38;;;;;;;;;;;;3695:8;3686:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3467:244:::0;:::o;14755:34::-;;;;:::o;23102:430::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23225:18:::1;23207:15;:36;;;;23272:18;23254:15;:36;;;;23315;23335:15;;23315;;:19;;:36;;;;:::i;:::-;23301:11;:50;;;;23362:23;23413:36;23433:15;;23413;;:19;;:36;;;;:::i;:::-;23396:53;;23194:338;23102:430:::0;;:::o;165:90::-;210:7;237:10;230:17;;165:90;:::o;25618:339::-;25728:1;25710:20;;:6;:20;;;25702:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;25809:1;25790:21;;:7;:21;;;25782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25894:6;25863:11;:19;25875:6;25863:19;;;;;;;;;;;;;;;:28;25883:7;25863:28;;;;;;;;;;;;;;;:37;;;;25933:7;25916:33;;25925:6;25916:33;;;25942:6;25916:33;;;;;;:::i;:::-;;;;;;;;25618:339;;;:::o;19184:3454::-;19298:1;19280:20;;:6;:20;;;19272:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19382:1;19361:23;;:9;:23;;;19353:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19448:7;:5;:7::i;:::-;19438:17;;:6;:17;;;;:41;;;;;19472:7;:5;:7::i;:::-;19459:20;;:9;:20;;;;19438:41;19435:146;;;19523:11;;19513:6;:21;;19505:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19435:146;19875:28;19906:24;19924:4;19906:9;:24::i;:::-;19875:55;;19953:24;20004:29;;19980:20;:53;;19953:80;;20062:19;:45;;;;;20099:8;;;;;;;;;;;20098:9;20062:45;:85;;;;;20134:13;20124:23;;:6;:23;;;;20062:85;:123;;;;;20164:21;;;;;;;;;;;20062:123;20044:895;;;20223:4;20212:8;;:15;;;;;;;;;;;;;;;;;;20255:20;20278:60;20325:12;;20278:42;20303:16;;20278:20;:24;;:42;;;;:::i;:::-;:46;;:60;;;;:::i;:::-;20255:83;;20353:23;20379:21;20353:47;;20415:30;20432:12;20415:16;:30::i;:::-;20460:18;20481:42;20507:15;20481:21;:25;;:42;;;;:::i;:::-;20460:63;;20538:22;20563:56;20601:16;;20563:32;20578:16;;20563:10;:14;;:32;;;;:::i;:::-;:36;;:56;;;;:::i;:::-;20538:81;;20711:16;;;;;;;;;;;20703:34;;:50;20738:14;20703:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20770:18;20791:60;20838:12;;20791:42;20816:16;;20791:20;:24;;:42;;;;:::i;:::-;:46;;:60;;;;:::i;:::-;20770:81;;20866:26;20881:10;20866:14;:26::i;:::-;20920:5;20909:8;;:16;;;;;;;;;;;;;;;;;;20197:742;;;;;20044:895;21021:12;21037:8;;;;;;;;;;;21036:9;21021:24;;21153:18;:26;21172:6;21153:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;21183:18;:29;21202:9;21183:29;;;;;;;;;;;;;;;;;;;;;;;;;21153:59;21150:105;;;21238:5;21228:15;;21150:105;21280:13;21270:23;;:6;:23;;;;:53;;;;;21310:13;21297:26;;:9;:26;;;;21270:53;21267:109;;;21359:5;21349:15;;21267:109;21389:7;21386:416;;;21421:13;21411:23;;:6;:23;;;21408:189;;21475:15;;21460:12;:30;;;;21520:15;;21505:12;:30;;;;21561:11;;21550:8;:22;;;;21408:189;21623:13;21610:26;;:9;:26;;;21607:184;;21677:16;;21662:12;:31;;;;21723:16;;21708:12;:31;;;;21765:12;;21754:8;:23;;;;21607:184;21386:416;21824:7;21821:800;;;21857:17;21877:29;21902:3;21877:20;21888:8;;21877:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;21857:49;;21921:17;21941:21;21952:9;21941:6;:10;;:21;;;;:::i;:::-;21921:41;;21997:71;22019:6;21997:71;;;;;;;;;;;;;;;;;:9;:17;22007:6;21997:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;21977:9;:17;21987:6;21977:17;;;;;;;;;;;;;;;:91;;;;22106:35;22131:9;22106;:20;22116:9;22106:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;22083:9;:20;22093:9;22083:20;;;;;;;;;;;;;;;:58;;;;22183:39;22212:9;22183;:24;22201:4;22183:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22156:9;:24;22174:4;22156:24;;;;;;;;;;;;;;;:66;;;;22259:9;22242:38;;22251:6;22242:38;;;22270:9;22242:38;;;;;;:::i;:::-;;;;;;;;22325:4;22300:42;;22309:6;22300:42;;;22332:9;22300:42;;;;;;:::i;:::-;;;;;;;;21842:512;;21821:800;;;22413:71;22435:6;22413:71;;;;;;;;;;;;;;;;;:9;:17;22423:6;22413:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;22393:9;:17;22403:6;22393:17;;;;;;;;;;;;;;;:91;;;;22522:32;22547:6;22522:9;:20;22532:9;22522:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22499:9;:20;22509:9;22499:20;;;;;;;;;;;;;;;:55;;;;22591:9;22574:35;;22583:6;22574:35;;;22602:6;22574:35;;;;;;:::i;:::-;;;;;;;;21821:800;19259:3379;;;19184:3454;;;:::o;1245:180::-;1325:4;1355:1;1350;:6;;1358:12;1342:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1382:6;1395:1;1391;:5;;;;:::i;:::-;1382:14;;1416:1;1409:8;;;1245:180;;;;;:::o;937:169::-;989:4;1006:6;1019:1;1015;:5;;;;:::i;:::-;1006:14;;1044:1;1039;:6;;1031:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1097:1;1090:8;;;937:169;;;;:::o;1431:238::-;1483:4;1509:1;1504;:6;1500:47;;1534:1;1527:8;;;;1500:47;1559:6;1572:1;1568;:5;;;;:::i;:::-;1559:14;;1601:1;1596;1592;:5;;;;:::i;:::-;:10;1584:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1660:1;1653:8;;;1431:238;;;;;:::o;1675:123::-;1727:4;1751:39;1755:1;1758;1751:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1744:46;;1675:123;;;;:::o;25021:589::-;25147:21;25185:1;25171:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25147:40;;25216:4;25198;25203:1;25198:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25242:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25232:4;25237:1;25232:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25277:62;25294:4;25309:15;25327:11;25277:8;:62::i;:::-;25378:15;:66;;;25459:11;25485:1;25529:4;25556;25576:15;25378:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25076:534;25021:589;:::o;1112:127::-;1164:4;1188:43;1192:1;1195;1188:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1181:50;;1112:127;;;;:::o;23543:943::-;15702:4;15683:16;;:23;;;;;;;;;;;;;;;;;;23673:12:::1;23688:13;23699:1;23688:6;:10;;:13;;;;:::i;:::-;23673:28;;23712:17;23732:16;23743:4;23732:6;:10;;:16;;;;:::i;:::-;23712:36;;24026:22;24051:21;24026:46;;24117:22;24134:4;24117:16;:22::i;:::-;24270:18;24291:41;24317:14;24291:21;:25;;:41;;;;:::i;:::-;24270:62;;24382:35;24395:9;24406:10;24382:12;:35::i;:::-;24435:43;24450:4;24456:10;24468:9;24435:43;;;;;;;;:::i;:::-;;;;;;;;23603:883;;;;15748:5:::0;15729:16;;:24;;;;;;;;;;;;;;;;;;23543:943;:::o;1804:246::-;1884:4;1980:1;1976;:5;1983:12;1968:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2007:6;2020:1;2016;:5;;;;:::i;:::-;2007:14;;2041:1;2034:8;;;1804:246;;;;;:::o;24496:517::-;24646:62;24663:4;24678:15;24696:11;24646:8;:62::i;:::-;24751:15;:31;;;24790:9;24823:4;24843:11;24869:1;24912;24955:7;:5;:7::i;:::-;24977:15;24751:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24496:517;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:153::-;4221:9;4254:37;4285:5;4254:37;:::i;:::-;4241:50;;4144:153;;;:::o;4303:185::-;4417:64;4475:5;4417:64;:::i;:::-;4412:3;4405:77;4303:185;;:::o;4494:276::-;4614:4;4652:2;4641:9;4637:18;4629:26;;4665:98;4760:1;4749:9;4745:17;4736:6;4665:98;:::i;:::-;4494:276;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:86::-;5436:7;5476:4;5469:5;5465:16;5454:27;;5401:86;;;:::o;5493:112::-;5576:22;5592:5;5576:22;:::i;:::-;5571:3;5564:35;5493:112;;:::o;5611:214::-;5700:4;5738:2;5727:9;5723:18;5715:26;;5751:67;5815:1;5804:9;5800:17;5791:6;5751:67;:::i;:::-;5611:214;;;;:::o;5831:329::-;5890:6;5939:2;5927:9;5918:7;5914:23;5910:32;5907:119;;;5945:79;;:::i;:::-;5907:119;6065:1;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6036:117;5831:329;;;;:::o;6166:118::-;6253:24;6271:5;6253:24;:::i;:::-;6248:3;6241:37;6166:118;;:::o;6290:222::-;6383:4;6421:2;6410:9;6406:18;6398:26;;6434:71;6502:1;6491:9;6487:17;6478:6;6434:71;:::i;:::-;6290:222;;;;:::o;6518:329::-;6577:6;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6752:1;6777:53;6822:7;6813:6;6802:9;6798:22;6777:53;:::i;:::-;6767:63;;6723:117;6518:329;;;;:::o;6853:474::-;6921:6;6929;6978:2;6966:9;6957:7;6953:23;6949:32;6946:119;;;6984:79;;:::i;:::-;6946:119;7104:1;7129:53;7174:7;7165:6;7154:9;7150:22;7129:53;:::i;:::-;7119:63;;7075:117;7231:2;7257:53;7302:7;7293:6;7282:9;7278:22;7257:53;:::i;:::-;7247:63;;7202:118;6853:474;;;;;:::o;7333:104::-;7378:7;7407:24;7425:5;7407:24;:::i;:::-;7396:35;;7333:104;;;:::o;7443:138::-;7524:32;7550:5;7524:32;:::i;:::-;7517:5;7514:43;7504:71;;7571:1;7568;7561:12;7504:71;7443:138;:::o;7587:155::-;7641:5;7679:6;7666:20;7657:29;;7695:41;7730:5;7695:41;:::i;:::-;7587:155;;;;:::o;7748:345::-;7815:6;7864:2;7852:9;7843:7;7839:23;7835:32;7832:119;;;7870:79;;:::i;:::-;7832:119;7990:1;8015:61;8068:7;8059:6;8048:9;8044:22;8015:61;:::i;:::-;8005:71;;7961:125;7748:345;;;;:::o;8099:116::-;8169:21;8184:5;8169:21;:::i;:::-;8162:5;8159:32;8149:60;;8205:1;8202;8195:12;8149:60;8099:116;:::o;8221:133::-;8264:5;8302:6;8289:20;8280:29;;8318:30;8342:5;8318:30;:::i;:::-;8221:133;;;;:::o;8360:323::-;8416:6;8465:2;8453:9;8444:7;8440:23;8436:32;8433:119;;;8471:79;;:::i;:::-;8433:119;8591:1;8616:50;8658:7;8649:6;8638:9;8634:22;8616:50;:::i;:::-;8606:60;;8562:114;8360:323;;;;:::o;8689:474::-;8757:6;8765;8814:2;8802:9;8793:7;8789:23;8785:32;8782:119;;;8820:79;;:::i;:::-;8782:119;8940:1;8965:53;9010:7;9001:6;8990:9;8986:22;8965:53;:::i;:::-;8955:63;;8911:117;9067:2;9093:53;9138:7;9129:6;9118:9;9114:22;9093:53;:::i;:::-;9083:63;;9038:118;8689:474;;;;;:::o;9169:142::-;9272:32;9298:5;9272:32;:::i;:::-;9267:3;9260:45;9169:142;;:::o;9317:254::-;9426:4;9464:2;9453:9;9449:18;9441:26;;9477:87;9561:1;9550:9;9546:17;9537:6;9477:87;:::i;:::-;9317:254;;;;:::o;9577:180::-;9625:77;9622:1;9615:88;9722:4;9719:1;9712:15;9746:4;9743:1;9736:15;9763:320;9807:6;9844:1;9838:4;9834:12;9824:22;;9891:1;9885:4;9881:12;9912:18;9902:81;;9968:4;9960:6;9956:17;9946:27;;9902:81;10030:2;10022:6;10019:14;9999:18;9996:38;9993:84;;10049:18;;:::i;:::-;9993:84;9814:269;9763:320;;;:::o;10089:182::-;10229:34;10225:1;10217:6;10213:14;10206:58;10089:182;:::o;10277:366::-;10419:3;10440:67;10504:2;10499:3;10440:67;:::i;:::-;10433:74;;10516:93;10605:3;10516:93;:::i;:::-;10634:2;10629:3;10625:12;10618:19;;10277:366;;;:::o;10649:419::-;10815:4;10853:2;10842:9;10838:18;10830:26;;10902:9;10896:4;10892:20;10888:1;10877:9;10873:17;10866:47;10930:131;11056:4;10930:131;:::i;:::-;10922:139;;10649:419;;;:::o;11074:181::-;11214:33;11210:1;11202:6;11198:14;11191:57;11074:181;:::o;11261:366::-;11403:3;11424:67;11488:2;11483:3;11424:67;:::i;:::-;11417:74;;11500:93;11589:3;11500:93;:::i;:::-;11618:2;11613:3;11609:12;11602:19;;11261:366;;;:::o;11633:419::-;11799:4;11837:2;11826:9;11822:18;11814:26;;11886:9;11880:4;11876:20;11872:1;11861:9;11857:17;11850:47;11914:131;12040:4;11914:131;:::i;:::-;11906:139;;11633:419;;;:::o;12058:231::-;12198:34;12194:1;12186:6;12182:14;12175:58;12267:14;12262:2;12254:6;12250:15;12243:39;12058:231;:::o;12295:366::-;12437:3;12458:67;12522:2;12517:3;12458:67;:::i;:::-;12451:74;;12534:93;12623:3;12534:93;:::i;:::-;12652:2;12647:3;12643:12;12636:19;;12295:366;;;:::o;12667:419::-;12833:4;12871:2;12860:9;12856:18;12848:26;;12920:9;12914:4;12910:20;12906:1;12895:9;12891:17;12884:47;12948:131;13074:4;12948:131;:::i;:::-;12940:139;;12667:419;;;:::o;13092:143::-;13149:5;13180:6;13174:13;13165:22;;13196:33;13223:5;13196:33;:::i;:::-;13092:143;;;;:::o;13241:351::-;13311:6;13360:2;13348:9;13339:7;13335:23;13331:32;13328:119;;;13366:79;;:::i;:::-;13328:119;13486:1;13511:64;13567:7;13558:6;13547:9;13543:22;13511:64;:::i;:::-;13501:74;;13457:128;13241:351;;;;:::o;13598:166::-;13738:18;13734:1;13726:6;13722:14;13715:42;13598:166;:::o;13770:366::-;13912:3;13933:67;13997:2;13992:3;13933:67;:::i;:::-;13926:74;;14009:93;14098:3;14009:93;:::i;:::-;14127:2;14122:3;14118:12;14111:19;;13770:366;;;:::o;14142:419::-;14308:4;14346:2;14335:9;14331:18;14323:26;;14395:9;14389:4;14385:20;14381:1;14370:9;14366:17;14359:47;14423:131;14549:4;14423:131;:::i;:::-;14415:139;;14142:419;;;:::o;14567:332::-;14688:4;14726:2;14715:9;14711:18;14703:26;;14739:71;14807:1;14796:9;14792:17;14783:6;14739:71;:::i;:::-;14820:72;14888:2;14877:9;14873:18;14864:6;14820:72;:::i;:::-;14567:332;;;;;:::o;14905:137::-;14959:5;14990:6;14984:13;14975:22;;15006:30;15030:5;15006:30;:::i;:::-;14905:137;;;;:::o;15048:345::-;15115:6;15164:2;15152:9;15143:7;15139:23;15135:32;15132:119;;;15170:79;;:::i;:::-;15132:119;15290:1;15315:61;15368:7;15359:6;15348:9;15344:22;15315:61;:::i;:::-;15305:71;;15261:125;15048:345;;;;:::o;15399:225::-;15539:34;15535:1;15527:6;15523:14;15516:58;15608:8;15603:2;15595:6;15591:15;15584:33;15399:225;:::o;15630:366::-;15772:3;15793:67;15857:2;15852:3;15793:67;:::i;:::-;15786:74;;15869:93;15958:3;15869:93;:::i;:::-;15987:2;15982:3;15978:12;15971:19;;15630:366;;;:::o;16002:419::-;16168:4;16206:2;16195:9;16191:18;16183:26;;16255:9;16249:4;16245:20;16241:1;16230:9;16226:17;16219:47;16283:131;16409:4;16283:131;:::i;:::-;16275:139;;16002:419;;;:::o;16427:223::-;16567:34;16563:1;16555:6;16551:14;16544:58;16636:6;16631:2;16623:6;16619:15;16612:31;16427:223;:::o;16656:366::-;16798:3;16819:67;16883:2;16878:3;16819:67;:::i;:::-;16812:74;;16895:93;16984:3;16895:93;:::i;:::-;17013:2;17008:3;17004:12;16997:19;;16656:366;;;:::o;17028:419::-;17194:4;17232:2;17221:9;17217:18;17209:26;;17281:9;17275:4;17271:20;17267:1;17256:9;17252:17;17245:47;17309:131;17435:4;17309:131;:::i;:::-;17301:139;;17028:419;;;:::o;17453:221::-;17593:34;17589:1;17581:6;17577:14;17570:58;17662:4;17657:2;17649:6;17645:15;17638:29;17453:221;:::o;17680:366::-;17822:3;17843:67;17907:2;17902:3;17843:67;:::i;:::-;17836:74;;17919:93;18008:3;17919:93;:::i;:::-;18037:2;18032:3;18028:12;18021:19;;17680:366;;;:::o;18052:419::-;18218:4;18256:2;18245:9;18241:18;18233:26;;18305:9;18299:4;18295:20;18291:1;18280:9;18276:17;18269:47;18333:131;18459:4;18333:131;:::i;:::-;18325:139;;18052:419;;;:::o;18477:224::-;18617:34;18613:1;18605:6;18601:14;18594:58;18686:7;18681:2;18673:6;18669:15;18662:32;18477:224;:::o;18707:366::-;18849:3;18870:67;18934:2;18929:3;18870:67;:::i;:::-;18863:74;;18946:93;19035:3;18946:93;:::i;:::-;19064:2;19059:3;19055:12;19048:19;;18707:366;;;:::o;19079:419::-;19245:4;19283:2;19272:9;19268:18;19260:26;;19332:9;19326:4;19322:20;19318:1;19307:9;19303:17;19296:47;19360:131;19486:4;19360:131;:::i;:::-;19352:139;;19079:419;;;:::o;19504:222::-;19644:34;19640:1;19632:6;19628:14;19621:58;19713:5;19708:2;19700:6;19696:15;19689:30;19504:222;:::o;19732:366::-;19874:3;19895:67;19959:2;19954:3;19895:67;:::i;:::-;19888:74;;19971:93;20060:3;19971:93;:::i;:::-;20089:2;20084:3;20080:12;20073:19;;19732:366;;;:::o;20104:419::-;20270:4;20308:2;20297:9;20293:18;20285:26;;20357:9;20351:4;20347:20;20343:1;20332:9;20328:17;20321:47;20385:131;20511:4;20385:131;:::i;:::-;20377:139;;20104:419;;;:::o;20529:180::-;20669:32;20665:1;20657:6;20653:14;20646:56;20529:180;:::o;20715:366::-;20857:3;20878:67;20942:2;20937:3;20878:67;:::i;:::-;20871:74;;20954:93;21043:3;20954:93;:::i;:::-;21072:2;21067:3;21063:12;21056:19;;20715:366;;;:::o;21087:419::-;21253:4;21291:2;21280:9;21276:18;21268:26;;21340:9;21334:4;21330:20;21326:1;21315:9;21311:17;21304:47;21368:131;21494:4;21368:131;:::i;:::-;21360:139;;21087:419;;;:::o;21512:180::-;21560:77;21557:1;21550:88;21657:4;21654:1;21647:15;21681:4;21678:1;21671:15;21698:194;21738:4;21758:20;21776:1;21758:20;:::i;:::-;21753:25;;21792:20;21810:1;21792:20;:::i;:::-;21787:25;;21836:1;21833;21829:9;21821:17;;21860:1;21854:4;21851:11;21848:37;;;21865:18;;:::i;:::-;21848:37;21698:194;;;;:::o;21898:191::-;21938:3;21957:20;21975:1;21957:20;:::i;:::-;21952:25;;21991:20;22009:1;21991:20;:::i;:::-;21986:25;;22034:1;22031;22027:9;22020:16;;22055:3;22052:1;22049:10;22046:36;;;22062:18;;:::i;:::-;22046:36;21898:191;;;;:::o;22095:177::-;22235:29;22231:1;22223:6;22219:14;22212:53;22095:177;:::o;22278:366::-;22420:3;22441:67;22505:2;22500:3;22441:67;:::i;:::-;22434:74;;22517:93;22606:3;22517:93;:::i;:::-;22635:2;22630:3;22626:12;22619:19;;22278:366;;;:::o;22650:419::-;22816:4;22854:2;22843:9;22839:18;22831:26;;22903:9;22897:4;22893:20;22889:1;22878:9;22874:17;22867:47;22931:131;23057:4;22931:131;:::i;:::-;22923:139;;22650:419;;;:::o;23075:410::-;23115:7;23138:20;23156:1;23138:20;:::i;:::-;23133:25;;23172:20;23190:1;23172:20;:::i;:::-;23167:25;;23227:1;23224;23220:9;23249:30;23267:11;23249:30;:::i;:::-;23238:41;;23428:1;23419:7;23415:15;23412:1;23409:22;23389:1;23382:9;23362:83;23339:139;;23458:18;;:::i;:::-;23339:139;23123:362;23075:410;;;;:::o;23491:180::-;23539:77;23536:1;23529:88;23636:4;23633:1;23626:15;23660:4;23657:1;23650:15;23677:185;23717:1;23734:20;23752:1;23734:20;:::i;:::-;23729:25;;23768:20;23786:1;23768:20;:::i;:::-;23763:25;;23807:1;23797:35;;23812:18;;:::i;:::-;23797:35;23854:1;23851;23847:9;23842:14;;23677:185;;;;:::o;23868:220::-;24008:34;24004:1;23996:6;23992:14;23985:58;24077:3;24072:2;24064:6;24060:15;24053:28;23868:220;:::o;24094:366::-;24236:3;24257:67;24321:2;24316:3;24257:67;:::i;:::-;24250:74;;24333:93;24422:3;24333:93;:::i;:::-;24451:2;24446:3;24442:12;24435:19;;24094:366;;;:::o;24466:419::-;24632:4;24670:2;24659:9;24655:18;24647:26;;24719:9;24713:4;24709:20;24705:1;24694:9;24690:17;24683:47;24747:131;24873:4;24747:131;:::i;:::-;24739:139;;24466:419;;;:::o;24891:180::-;24939:77;24936:1;24929:88;25036:4;25033:1;25026:15;25060:4;25057:1;25050:15;25077:180;25125:77;25122:1;25115:88;25222:4;25219:1;25212:15;25246:4;25243:1;25236:15;25263:143;25320:5;25351:6;25345:13;25336:22;;25367:33;25394:5;25367:33;:::i;:::-;25263:143;;;;:::o;25412:351::-;25482:6;25531:2;25519:9;25510:7;25506:23;25502:32;25499:119;;;25537:79;;:::i;:::-;25499:119;25657:1;25682:64;25738:7;25729:6;25718:9;25714:22;25682:64;:::i;:::-;25672:74;;25628:128;25412:351;;;;:::o;25769:85::-;25814:7;25843:5;25832:16;;25769:85;;;:::o;25860:158::-;25918:9;25951:61;25969:42;25978:32;26004:5;25978:32;:::i;:::-;25969:42;:::i;:::-;25951:61;:::i;:::-;25938:74;;25860:158;;;:::o;26024:147::-;26119:45;26158:5;26119:45;:::i;:::-;26114:3;26107:58;26024:147;;:::o;26177:114::-;26244:6;26278:5;26272:12;26262:22;;26177:114;;;:::o;26297:184::-;26396:11;26430:6;26425:3;26418:19;26470:4;26465:3;26461:14;26446:29;;26297:184;;;;:::o;26487:132::-;26554:4;26577:3;26569:11;;26607:4;26602:3;26598:14;26590:22;;26487:132;;;:::o;26625:108::-;26702:24;26720:5;26702:24;:::i;:::-;26697:3;26690:37;26625:108;;:::o;26739:179::-;26808:10;26829:46;26871:3;26863:6;26829:46;:::i;:::-;26907:4;26902:3;26898:14;26884:28;;26739:179;;;;:::o;26924:113::-;26994:4;27026;27021:3;27017:14;27009:22;;26924:113;;;:::o;27073:732::-;27192:3;27221:54;27269:5;27221:54;:::i;:::-;27291:86;27370:6;27365:3;27291:86;:::i;:::-;27284:93;;27401:56;27451:5;27401:56;:::i;:::-;27480:7;27511:1;27496:284;27521:6;27518:1;27515:13;27496:284;;;27597:6;27591:13;27624:63;27683:3;27668:13;27624:63;:::i;:::-;27617:70;;27710:60;27763:6;27710:60;:::i;:::-;27700:70;;27556:224;27543:1;27540;27536:9;27531:14;;27496:284;;;27500:14;27796:3;27789:10;;27197:608;;;27073:732;;;;:::o;27811:831::-;28074:4;28112:3;28101:9;28097:19;28089:27;;28126:71;28194:1;28183:9;28179:17;28170:6;28126:71;:::i;:::-;28207:80;28283:2;28272:9;28268:18;28259:6;28207:80;:::i;:::-;28334:9;28328:4;28324:20;28319:2;28308:9;28304:18;28297:48;28362:108;28465:4;28456:6;28362:108;:::i;:::-;28354:116;;28480:72;28548:2;28537:9;28533:18;28524:6;28480:72;:::i;:::-;28562:73;28630:3;28619:9;28615:19;28606:6;28562:73;:::i;:::-;27811:831;;;;;;;;:::o;28648:442::-;28797:4;28835:2;28824:9;28820:18;28812:26;;28848:71;28916:1;28905:9;28901:17;28892:6;28848:71;:::i;:::-;28929:72;28997:2;28986:9;28982:18;28973:6;28929:72;:::i;:::-;29011;29079:2;29068:9;29064:18;29055:6;29011:72;:::i;:::-;28648:442;;;;;;:::o;29096:807::-;29345:4;29383:3;29372:9;29368:19;29360:27;;29397:71;29465:1;29454:9;29450:17;29441:6;29397:71;:::i;:::-;29478:72;29546:2;29535:9;29531:18;29522:6;29478:72;:::i;:::-;29560:80;29636:2;29625:9;29621:18;29612:6;29560:80;:::i;:::-;29650;29726:2;29715:9;29711:18;29702:6;29650:80;:::i;:::-;29740:73;29808:3;29797:9;29793:19;29784:6;29740:73;:::i;:::-;29823;29891:3;29880:9;29876:19;29867:6;29823:73;:::i;:::-;29096:807;;;;;;;;;:::o;29909:663::-;29997:6;30005;30013;30062:2;30050:9;30041:7;30037:23;30033:32;30030:119;;;30068:79;;:::i;:::-;30030:119;30188:1;30213:64;30269:7;30260:6;30249:9;30245:22;30213:64;:::i;:::-;30203:74;;30159:128;30326:2;30352:64;30408:7;30399:6;30388:9;30384:22;30352:64;:::i;:::-;30342:74;;30297:129;30465:2;30491:64;30547:7;30538:6;30527:9;30523:22;30491:64;:::i;:::-;30481:74;;30436:129;29909:663;;;;;:::o

Swarm Source

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