ETH Price: $3,335.51 (-0.24%)

Token

Luna (LUNA)
 

Overview

Max Total Supply

1,000,000,000,000 LUNA

Holders

163

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
LUNA

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 * SPDX-License-Identifier: UNLICENSED 
 *
*/

pragma solidity ^0.8.20;

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract LUNA is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Luna";
    string private constant _symbol = "LUNA";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private minContractTokensToSwap = 1e9 * 10**9;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxWallet;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 0;
    uint256 private _maxWalletSize = 1e10 * 10**9;
    uint256 private _buyFee = 12;
    uint256 private _sellFee = 12;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _developmentWallet;
    address payable private _marketingWallet;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _swapAll = true;
    bool private inSwap = false;
    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool dev, bool marketing);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
        constructor () {

        _developmentWallet = payable(0x0b77b0F2712B7EA487f52C7eF1423F36A2392470);
        _marketingWallet = payable(0x1e7569415781bA8b84DB7560c99B619A50819c87);
        
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentWallet] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromMaxWallet[owner()] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[_developmentWallet] = true;
        _isExcludedFromMaxWallet[_marketingWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner()) {

            if(to != uniswapV2Pair && !_isExcludedFromMaxWallet[to] && _maxWalletSize != 0) {
                require(balanceOf(address(to)) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                _teamFee = _buyFee;
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            if(!inSwap && from != uniswapV2Pair && tradingOpen) {

                _teamFee = _sellFee;

                if (automatedMarketMakerPairs[to]) {
                    if(contractTokenBalance > minContractTokensToSwap) {
                        if(!_swapAll) {
                            contractTokenBalance = minContractTokensToSwap;
                        }
                        swapBack(contractTokenBalance);
                    }
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _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 swapBack(uint256 contractTokenBalance) private {
        
        swapTokensForEth(contractTokenBalance);

        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        (bool development, ) = _developmentWallet.call{value: amount.div(2)}("");
        (bool marketing, ) = _marketingWallet.call{value: amount.div(2)}("");

        emit Response(development, marketing);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _transferStandard(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingOpen = true;
        automatedMarketMakerPairs[uniswapV2Pair] = true;
    }

    function setDevelopmentWallet (address payable development) external onlyOwner() {
        _isExcludedFromFee[_developmentWallet] = false;
        _developmentWallet = development;
        _isExcludedFromFee[development] = true;
    }
    
    function setMarketingWallet (address payable marketing) external onlyOwner {
        _isExcludedFromFee[_marketingWallet] = false;
        _marketingWallet = marketing;
        _isExcludedFromFee[marketing] = true;
    }

    function excludeFromFee(address[] calldata ads, bool onoff) public onlyOwner {
        for (uint i = 0; i < ads.length; i++) {
            _isExcludedFromFee[ads[i]] = onoff;
        }
    }

    function isExcludedFromFee(address ad) public view returns (bool) {
        return _isExcludedFromFee[ad];
    }

    function excludeFromMaxWallet(address[] calldata ads, bool onoff) public onlyOwner {
        for (uint i = 0; i < ads.length; i++) {
            _isExcludedFromMaxWallet[ads[i]] = onoff;
        }
    }
    
    function isExcludedMaxWallet(address ad) public view returns (bool) {
        return _isExcludedFromMaxWallet[ad];
    }

    function setFee(uint256 buy, uint256 sell) external onlyOwner {
        _buyFee = buy;
        _sellFee = sell;
    }

    function setTaxFee(uint256 tax) external onlyOwner {
        _taxFee = tax;
    }
    
    function setMinContractTokensToSwap(uint256 numToken) external onlyOwner {
        minContractTokensToSwap = numToken * 10**9;
    }

    function setMaxWallet(uint256 amt) external onlyOwner {
        _maxWalletSize = amt * 10**9;
    }

    function setSwapAll(bool onoff) external onlyOwner {
        _swapAll = onoff;
    }

    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

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

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

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

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

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

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

    function transferFrom(address sender, address recipient, uint256 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 tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"dev","type":"bool"},{"indexed":false,"internalType":"bool","name":"marketing","type":"bool"}],"name":"Response","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountInPool","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"development","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000005f196200001c919062000699565b5f196200002a9190620006fd565b600255670de0b6b3a76400006004555f600a555f600b55678ac7230489e80000600c55600c600d55600c600e55600a54600f55600b546010555f6014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550348015620000bd575f80fd5b505f620000cf6200063560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350730b77b0f2712b7ea487f52c7ef1423f36a239247060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731e7569415781ba8b84db7560c99b619a50819c8760125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460055f620002296200063560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f6200027b6200063c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f620004206200063c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005c06200063560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162000627919062000748565b60405180910390a362000763565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006a58262000663565b9150620006b28362000663565b925082620006c557620006c46200066c565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007098262000663565b9150620007168362000663565b9250828203905081811115620007315762000730620006d0565b5b92915050565b620007428162000663565b82525050565b5f6020820190506200075d5f83018462000737565b92915050565b61416a80620007715f395ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100eb578063c4081a4c11610089578063db92dbb611610063578063db92dbb6146105ad578063dd62ed3e146105d7578063de30aad114610613578063e1ab04c91461063b576101c1565b8063c4081a4c14610547578063c9567bf91461056f578063db8aeab114610585576101c1565b806395d89b41116100c557806395d89b41146104a35780639a7a23d6146104cd578063a9059cbb146104f5578063c3c8cd8014610531576101c1565b8063715018a61461043b57806372ac2486146104515780638da5cb5b14610479576101c1565b8063313ce567116101585780635d0044ca116101325780635d0044ca146103995780635d098b38146103c15780636fc3eaec146103e957806370a08231146103ff576101c1565b8063313ce5671461030b57806352f7c988146103355780635342acb41461035d576101c1565b806318160ddd1161019457806318160ddd1461025357806323b872dd1461027d57806327f3a72a146102b957806328875c16146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806312dfbd331461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610677565b6040516101e691906130d1565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190613186565b6106b4565b60405161022291906131de565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c91906131f7565b6106d1565b005b34801561025e575f80fd5b5061026761077e565b6040516102749190613231565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e919061324a565b61078e565b6040516102b091906131de565b60405180910390f35b3480156102c4575f80fd5b506102cd610862565b6040516102da9190613231565b60405180910390f35b3480156102ee575f80fd5b5061030960048036038101906103049190613325565b610871565b005b348015610316575f80fd5b5061031f6109a6565b60405161032c919061339d565b60405180910390f35b348015610340575f80fd5b5061035b600480360381019061035691906133b6565b6109ae565b005b348015610368575f80fd5b50610383600480360381019061037e91906133f4565b610a54565b60405161039091906131de565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906131f7565b610aa6565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061345a565b610b53565b005b3480156103f4575f80fd5b506103fd610cf4565b005b34801561040a575f80fd5b50610425600480360381019061042091906133f4565b610d98565b6040516104329190613231565b60405180910390f35b348015610446575f80fd5b5061044f610de6565b005b34801561045c575f80fd5b506104776004803603810190610472919061345a565b610f34565b005b348015610484575f80fd5b5061048d6110d5565b60405161049a9190613494565b60405180910390f35b3480156104ae575f80fd5b506104b76110fc565b6040516104c491906130d1565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee91906134ad565b611139565b005b348015610500575f80fd5b5061051b60048036038101906105169190613186565b61126a565b60405161052891906131de565b60405180910390f35b34801561053c575f80fd5b50610545611287565b005b348015610552575f80fd5b5061056d600480360381019061056891906131f7565b611333565b005b34801561057a575f80fd5b506105836113d1565b005b348015610590575f80fd5b506105ab60048036038101906105a69190613325565b6118fb565b005b3480156105b8575f80fd5b506105c1611a30565b6040516105ce9190613231565b60405180910390f35b3480156105e2575f80fd5b506105fd60048036038101906105f891906134eb565b611a60565b60405161060a9190613231565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190613529565b611ae2565b005b348015610646575f80fd5b50610661600480360381019061065c91906133f4565b611b93565b60405161066e91906131de565b60405180910390f35b60606040518060400160405280600481526020017f4c756e6100000000000000000000000000000000000000000000000000000000815250905090565b5f6106c76106c0611be5565b8484611bec565b6001905092915050565b6106d9611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c9061359e565b60405180910390fd5b633b9aca008161077591906135e9565b60048190555050565b5f683635c9adc5dea00000905090565b5f61079a848484611daf565b610857846107a6611be5565b6108528560405180606001604052806028815260200161410d6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610809611be5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242d9092919063ffffffff16565b611bec565b600190509392505050565b5f61086c30610d98565b905090565b610879611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc9061359e565b60405180910390fd5b5f5b838390508110156109a0578160085f8686858181106109295761092861362a565b5b905060200201602081019061093e91906133f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061099890613657565b915050610907565b50505050565b5f6009905090565b6109b6611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a399061359e565b60405180910390fd5b81600d8190555080600e819055505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610aae611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b319061359e565b60405180910390fd5b633b9aca0081610b4a91906135e9565b600c8190555050565b610b5b611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde9061359e565b60405180910390fd5b5f60085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610cfc611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f9061359e565b60405180910390fd5b5f479050610d958161248f565b50565b5f610ddf60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612605565b9050919050565b610dee611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e719061359e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f3c611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf9061359e565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4c554e4100000000000000000000000000000000000000000000000000000000815250905090565b611141611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c49061359e565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361125c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112539061370e565b60405180910390fd5b6112668282612671565b5050565b5f61127d611276611be5565b8484611daf565b6001905092915050565b61128f611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113129061359e565b60405180910390fd5b5f61132530610d98565b9050611330816126c9565b50565b61133b611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be9061359e565b60405180910390fd5b80600a8190555050565b6113d9611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c9061359e565b60405180910390fd5b60148054906101000a900460ff16156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90613776565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115403060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611bec565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611589573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ad91906137a8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611612573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163691906137a8565b6040518363ffffffff1660e01b81526004016116539291906137d3565b6020604051808303815f875af115801561166f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169391906137a8565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061171a30610d98565b5f806117246110d5565b426040518863ffffffff1660e01b81526004016117469695949392919061383c565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061178791906138af565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118279291906138ff565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611867919061393a565b5060016014806101000a81548160ff021916908315150217905550600160155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611903611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869061359e565b60405180910390fd5b5f5b83839050811015611a2a578160095f8686858181106119b3576119b261362a565b5b90506020020160208101906119c891906133f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611a2290613657565b915050611991565b50505050565b5f611a5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d98565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611aea611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d9061359e565b60405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906139d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf90613a63565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611da29190613231565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490613af1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290613b7f565b60405180910390fd5b5f8111611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec490613c0d565b60405180910390fd5b611ed56110d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f435750611f136110d5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122cb5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611fec575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ffa57505f600c5414155b1561205857600c548161200c84610d98565b6120169190613c2b565b1115612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613cce565b60405180910390fd5b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612101575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612154575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121b05760148054906101000a900460ff166121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90613d36565b60405180910390fd5b600d54600b819055505b5f6121ba30610d98565b9050601460169054906101000a900460ff16158015612226575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561223c575060148054906101000a900460ff165b156122c957600e54600b8190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122c8576004548111156122c757601460159054906101000a900460ff166122bd5760045490505b6122c681612934565b5b5b5b505b5f6001905060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061236b575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612374575f90505b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612412575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561241b575f90505b61242784848484612957565b50505050565b5f838311158290612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b91906130d1565b60405180910390fd5b505f83856124829190613d54565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124dc60028461298490919063ffffffff16565b6040516124e890613db4565b5f6040518083038185875af1925050503d805f8114612522576040519150601f19603f3d011682016040523d82523d5f602084013e612527565b606091505b505090505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661257860028561298490919063ffffffff16565b60405161258490613db4565b5f6040518083038185875af1925050503d805f81146125be576040519150601f19603f3d011682016040523d82523d5f602084013e6125c3565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b982826040516125f8929190613dc8565b60405180910390a1505050565b5f60025482111561264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264290613e5f565b60405180910390fd5b5f6126546129cd565b9050612669818461298490919063ffffffff16565b915050919050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601460166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612700576126ff613e7d565b5b60405190808252806020026020018201604052801561272e5781602001602082028036833780820191505090505b50905030815f815181106127455761274461362a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280d91906137a8565b816001815181106128215761282061362a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128873060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bec565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016128e9959493929190613f61565b5f604051808303815f87803b158015612900575f80fd5b505af1158015612912573d5f803e3d5ffd5b50505050505f601460166101000a81548160ff02191690831515021790555050565b61293d816126c9565b5f4790505f811115612953576129524761248f565b5b5050565b80612965576129646129f6565b5b612970848484612a2f565b8061297e5761297d612bef565b5b50505050565b5f6129c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c03565b905092915050565b5f805f6129d8612c64565b915091506129ef818361298490919063ffffffff16565b9250505090565b5f600a54148015612a0857505f600b54145b612a2d57600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f80612a3e87612cc3565b955095509550955095509550612a9a8660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d2390919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b2b8560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6c90919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b7581612dc9565b612b7f8483612e80565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612bdc9190613231565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f8083118290612c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4091906130d1565b60405180910390fd5b505f8385612c579190613fe6565b9050809150509392505050565b5f805f60025490505f683635c9adc5dea000009050612c97683635c9adc5dea0000060025461298490919063ffffffff16565b821015612cb657600254683635c9adc5dea00000935093505050612cbf565b81819350935050505b9091565b5f805f805f805f805f612cdb8a600a54600b54612eba565b9250925092505f612cea6129cd565b90505f805f612cfb8e878787612f4c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612d6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061242d565b905092915050565b5f808284612d7a9190613c2b565b905083811015612dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db690614060565b60405180910390fd5b8091505092915050565b5f612dd26129cd565b90505f612de88284612fd090919063ffffffff16565b9050612e3a8160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6c90919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612e9582600254612d2390919063ffffffff16565b600281905550612eb081600354612d6c90919063ffffffff16565b6003819055505050565b5f805f80612ee46064612ed6888a612fd090919063ffffffff16565b61298490919063ffffffff16565b90505f612f0d6064612eff888b612fd090919063ffffffff16565b61298490919063ffffffff16565b90505f612f3582612f27858c612d2390919063ffffffff16565b612d2390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612f638589612fd090919063ffffffff16565b90505f612f798689612fd090919063ffffffff16565b90505f612f8f8789612fd090919063ffffffff16565b90505f612fb782612fa98587612d2390919063ffffffff16565b612d2390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612fe0575f9050613041565b5f8284612fed91906135e9565b9050828482612ffc9190613fe6565b1461303c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613033906140ee565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561307e578082015181840152602081019050613063565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130a382613047565b6130ad8185613051565b93506130bd818560208601613061565b6130c681613089565b840191505092915050565b5f6020820190508181035f8301526130e98184613099565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613122826130f9565b9050919050565b61313281613118565b811461313c575f80fd5b50565b5f8135905061314d81613129565b92915050565b5f819050919050565b61316581613153565b811461316f575f80fd5b50565b5f813590506131808161315c565b92915050565b5f806040838503121561319c5761319b6130f1565b5b5f6131a98582860161313f565b92505060206131ba85828601613172565b9150509250929050565b5f8115159050919050565b6131d8816131c4565b82525050565b5f6020820190506131f15f8301846131cf565b92915050565b5f6020828403121561320c5761320b6130f1565b5b5f61321984828501613172565b91505092915050565b61322b81613153565b82525050565b5f6020820190506132445f830184613222565b92915050565b5f805f60608486031215613261576132606130f1565b5b5f61326e8682870161313f565b935050602061327f8682870161313f565b925050604061329086828701613172565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126132bb576132ba61329a565b5b8235905067ffffffffffffffff8111156132d8576132d761329e565b5b6020830191508360208202830111156132f4576132f36132a2565b5b9250929050565b613304816131c4565b811461330e575f80fd5b50565b5f8135905061331f816132fb565b92915050565b5f805f6040848603121561333c5761333b6130f1565b5b5f84013567ffffffffffffffff811115613359576133586130f5565b5b613365868287016132a6565b9350935050602061337886828701613311565b9150509250925092565b5f60ff82169050919050565b61339781613382565b82525050565b5f6020820190506133b05f83018461338e565b92915050565b5f80604083850312156133cc576133cb6130f1565b5b5f6133d985828601613172565b92505060206133ea85828601613172565b9150509250929050565b5f60208284031215613409576134086130f1565b5b5f6134168482850161313f565b91505092915050565b5f613429826130f9565b9050919050565b6134398161341f565b8114613443575f80fd5b50565b5f8135905061345481613430565b92915050565b5f6020828403121561346f5761346e6130f1565b5b5f61347c84828501613446565b91505092915050565b61348e81613118565b82525050565b5f6020820190506134a75f830184613485565b92915050565b5f80604083850312156134c3576134c26130f1565b5b5f6134d08582860161313f565b92505060206134e185828601613311565b9150509250929050565b5f8060408385031215613501576135006130f1565b5b5f61350e8582860161313f565b925050602061351f8582860161313f565b9150509250929050565b5f6020828403121561353e5761353d6130f1565b5b5f61354b84828501613311565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613588602083613051565b915061359382613554565b602082019050919050565b5f6020820190508181035f8301526135b58161357c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135f382613153565b91506135fe83613153565b925082820261360c81613153565b91508282048414831517613623576136226135bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61366182613153565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613693576136926135bc565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6136f8603983613051565b91506137038261369e565b604082019050919050565b5f6020820190508181035f830152613725816136ec565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613760601783613051565b915061376b8261372c565b602082019050919050565b5f6020820190508181035f83015261378d81613754565b9050919050565b5f815190506137a281613129565b92915050565b5f602082840312156137bd576137bc6130f1565b5b5f6137ca84828501613794565b91505092915050565b5f6040820190506137e65f830185613485565b6137f36020830184613485565b9392505050565b5f819050919050565b5f819050919050565b5f61382661382161381c846137fa565b613803565b613153565b9050919050565b6138368161380c565b82525050565b5f60c08201905061384f5f830189613485565b61385c6020830188613222565b613869604083018761382d565b613876606083018661382d565b6138836080830185613485565b61389060a0830184613222565b979650505050505050565b5f815190506138a98161315c565b92915050565b5f805f606084860312156138c6576138c56130f1565b5b5f6138d38682870161389b565b93505060206138e48682870161389b565b92505060406138f58682870161389b565b9150509250925092565b5f6040820190506139125f830185613485565b61391f6020830184613222565b9392505050565b5f81519050613934816132fb565b92915050565b5f6020828403121561394f5761394e6130f1565b5b5f61395c84828501613926565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6139bf602483613051565b91506139ca82613965565b604082019050919050565b5f6020820190508181035f8301526139ec816139b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a4d602283613051565b9150613a58826139f3565b604082019050919050565b5f6020820190508181035f830152613a7a81613a41565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613adb602583613051565b9150613ae682613a81565b604082019050919050565b5f6020820190508181035f830152613b0881613acf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613b69602383613051565b9150613b7482613b0f565b604082019050919050565b5f6020820190508181035f830152613b9681613b5d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613bf7602983613051565b9150613c0282613b9d565b604082019050919050565b5f6020820190508181035f830152613c2481613beb565b9050919050565b5f613c3582613153565b9150613c4083613153565b9250828201905080821115613c5857613c576135bc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb8602383613051565b9150613cc382613c5e565b604082019050919050565b5f6020820190508181035f830152613ce581613cac565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613d20601883613051565b9150613d2b82613cec565b602082019050919050565b5f6020820190508181035f830152613d4d81613d14565b9050919050565b5f613d5e82613153565b9150613d6983613153565b9250828203905081811115613d8157613d806135bc565b5b92915050565b5f81905092915050565b50565b5f613d9f5f83613d87565b9150613daa82613d91565b5f82019050919050565b5f613dbe82613d94565b9150819050919050565b5f604082019050613ddb5f8301856131cf565b613de860208301846131cf565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613e49602a83613051565b9150613e5482613def565b604082019050919050565b5f6020820190508181035f830152613e7681613e3d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613edc81613118565b82525050565b5f613eed8383613ed3565b60208301905092915050565b5f602082019050919050565b5f613f0f82613eaa565b613f198185613eb4565b9350613f2483613ec4565b805f5b83811015613f54578151613f3b8882613ee2565b9750613f4683613ef9565b925050600181019050613f27565b5085935050505092915050565b5f60a082019050613f745f830188613222565b613f81602083018761382d565b8181036040830152613f938186613f05565b9050613fa26060830185613485565b613faf6080830184613222565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ff082613153565b9150613ffb83613153565b92508261400b5761400a613fb9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61404a601b83613051565b915061405582614016565b602082019050919050565b5f6020820190508181035f8301526140778161403e565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140d8602183613051565b91506140e38261407e565b604082019050919050565b5f6020820190508181035f830152614105816140cc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b1067412bb7cc4c8abaef9cc3e6b88f4c6dd0bec89bc4265d0e3d3d72045c75d64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063715018a6116100eb578063c4081a4c11610089578063db92dbb611610063578063db92dbb6146105ad578063dd62ed3e146105d7578063de30aad114610613578063e1ab04c91461063b576101c1565b8063c4081a4c14610547578063c9567bf91461056f578063db8aeab114610585576101c1565b806395d89b41116100c557806395d89b41146104a35780639a7a23d6146104cd578063a9059cbb146104f5578063c3c8cd8014610531576101c1565b8063715018a61461043b57806372ac2486146104515780638da5cb5b14610479576101c1565b8063313ce567116101585780635d0044ca116101325780635d0044ca146103995780635d098b38146103c15780636fc3eaec146103e957806370a08231146103ff576101c1565b8063313ce5671461030b57806352f7c988146103355780635342acb41461035d576101c1565b806318160ddd1161019457806318160ddd1461025357806323b872dd1461027d57806327f3a72a146102b957806328875c16146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806312dfbd331461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610677565b6040516101e691906130d1565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190613186565b6106b4565b60405161022291906131de565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c91906131f7565b6106d1565b005b34801561025e575f80fd5b5061026761077e565b6040516102749190613231565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e919061324a565b61078e565b6040516102b091906131de565b60405180910390f35b3480156102c4575f80fd5b506102cd610862565b6040516102da9190613231565b60405180910390f35b3480156102ee575f80fd5b5061030960048036038101906103049190613325565b610871565b005b348015610316575f80fd5b5061031f6109a6565b60405161032c919061339d565b60405180910390f35b348015610340575f80fd5b5061035b600480360381019061035691906133b6565b6109ae565b005b348015610368575f80fd5b50610383600480360381019061037e91906133f4565b610a54565b60405161039091906131de565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906131f7565b610aa6565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061345a565b610b53565b005b3480156103f4575f80fd5b506103fd610cf4565b005b34801561040a575f80fd5b50610425600480360381019061042091906133f4565b610d98565b6040516104329190613231565b60405180910390f35b348015610446575f80fd5b5061044f610de6565b005b34801561045c575f80fd5b506104776004803603810190610472919061345a565b610f34565b005b348015610484575f80fd5b5061048d6110d5565b60405161049a9190613494565b60405180910390f35b3480156104ae575f80fd5b506104b76110fc565b6040516104c491906130d1565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee91906134ad565b611139565b005b348015610500575f80fd5b5061051b60048036038101906105169190613186565b61126a565b60405161052891906131de565b60405180910390f35b34801561053c575f80fd5b50610545611287565b005b348015610552575f80fd5b5061056d600480360381019061056891906131f7565b611333565b005b34801561057a575f80fd5b506105836113d1565b005b348015610590575f80fd5b506105ab60048036038101906105a69190613325565b6118fb565b005b3480156105b8575f80fd5b506105c1611a30565b6040516105ce9190613231565b60405180910390f35b3480156105e2575f80fd5b506105fd60048036038101906105f891906134eb565b611a60565b60405161060a9190613231565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190613529565b611ae2565b005b348015610646575f80fd5b50610661600480360381019061065c91906133f4565b611b93565b60405161066e91906131de565b60405180910390f35b60606040518060400160405280600481526020017f4c756e6100000000000000000000000000000000000000000000000000000000815250905090565b5f6106c76106c0611be5565b8484611bec565b6001905092915050565b6106d9611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c9061359e565b60405180910390fd5b633b9aca008161077591906135e9565b60048190555050565b5f683635c9adc5dea00000905090565b5f61079a848484611daf565b610857846107a6611be5565b6108528560405180606001604052806028815260200161410d6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610809611be5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242d9092919063ffffffff16565b611bec565b600190509392505050565b5f61086c30610d98565b905090565b610879611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc9061359e565b60405180910390fd5b5f5b838390508110156109a0578160085f8686858181106109295761092861362a565b5b905060200201602081019061093e91906133f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061099890613657565b915050610907565b50505050565b5f6009905090565b6109b6611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a399061359e565b60405180910390fd5b81600d8190555080600e819055505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610aae611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b319061359e565b60405180910390fd5b633b9aca0081610b4a91906135e9565b600c8190555050565b610b5b611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde9061359e565b60405180910390fd5b5f60085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610cfc611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f9061359e565b60405180910390fd5b5f479050610d958161248f565b50565b5f610ddf60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612605565b9050919050565b610dee611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e719061359e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f3c611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf9061359e565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4c554e4100000000000000000000000000000000000000000000000000000000815250905090565b611141611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c49061359e565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361125c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112539061370e565b60405180910390fd5b6112668282612671565b5050565b5f61127d611276611be5565b8484611daf565b6001905092915050565b61128f611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113129061359e565b60405180910390fd5b5f61132530610d98565b9050611330816126c9565b50565b61133b611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be9061359e565b60405180910390fd5b80600a8190555050565b6113d9611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c9061359e565b60405180910390fd5b60148054906101000a900460ff16156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90613776565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115403060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611bec565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611589573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ad91906137a8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611612573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163691906137a8565b6040518363ffffffff1660e01b81526004016116539291906137d3565b6020604051808303815f875af115801561166f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169391906137a8565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061171a30610d98565b5f806117246110d5565b426040518863ffffffff1660e01b81526004016117469695949392919061383c565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061178791906138af565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118279291906138ff565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611867919061393a565b5060016014806101000a81548160ff021916908315150217905550600160155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611903611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869061359e565b60405180910390fd5b5f5b83839050811015611a2a578160095f8686858181106119b3576119b261362a565b5b90506020020160208101906119c891906133f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611a2290613657565b915050611991565b50505050565b5f611a5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d98565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611aea611be5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d9061359e565b60405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906139d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf90613a63565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611da29190613231565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490613af1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290613b7f565b60405180910390fd5b5f8111611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec490613c0d565b60405180910390fd5b611ed56110d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f435750611f136110d5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122cb5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611fec575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ffa57505f600c5414155b1561205857600c548161200c84610d98565b6120169190613c2b565b1115612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613cce565b60405180910390fd5b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612101575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612154575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121b05760148054906101000a900460ff166121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90613d36565b60405180910390fd5b600d54600b819055505b5f6121ba30610d98565b9050601460169054906101000a900460ff16158015612226575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561223c575060148054906101000a900460ff165b156122c957600e54600b8190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122c8576004548111156122c757601460159054906101000a900460ff166122bd5760045490505b6122c681612934565b5b5b5b505b5f6001905060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061236b575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612374575f90505b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612412575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561241b575f90505b61242784848484612957565b50505050565b5f838311158290612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b91906130d1565b60405180910390fd5b505f83856124829190613d54565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124dc60028461298490919063ffffffff16565b6040516124e890613db4565b5f6040518083038185875af1925050503d805f8114612522576040519150601f19603f3d011682016040523d82523d5f602084013e612527565b606091505b505090505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661257860028561298490919063ffffffff16565b60405161258490613db4565b5f6040518083038185875af1925050503d805f81146125be576040519150601f19603f3d011682016040523d82523d5f602084013e6125c3565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b982826040516125f8929190613dc8565b60405180910390a1505050565b5f60025482111561264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264290613e5f565b60405180910390fd5b5f6126546129cd565b9050612669818461298490919063ffffffff16565b915050919050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601460166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612700576126ff613e7d565b5b60405190808252806020026020018201604052801561272e5781602001602082028036833780820191505090505b50905030815f815181106127455761274461362a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280d91906137a8565b816001815181106128215761282061362a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128873060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bec565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016128e9959493929190613f61565b5f604051808303815f87803b158015612900575f80fd5b505af1158015612912573d5f803e3d5ffd5b50505050505f601460166101000a81548160ff02191690831515021790555050565b61293d816126c9565b5f4790505f811115612953576129524761248f565b5b5050565b80612965576129646129f6565b5b612970848484612a2f565b8061297e5761297d612bef565b5b50505050565b5f6129c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c03565b905092915050565b5f805f6129d8612c64565b915091506129ef818361298490919063ffffffff16565b9250505090565b5f600a54148015612a0857505f600b54145b612a2d57600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f80612a3e87612cc3565b955095509550955095509550612a9a8660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d2390919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b2b8560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6c90919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b7581612dc9565b612b7f8483612e80565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612bdc9190613231565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f8083118290612c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4091906130d1565b60405180910390fd5b505f8385612c579190613fe6565b9050809150509392505050565b5f805f60025490505f683635c9adc5dea000009050612c97683635c9adc5dea0000060025461298490919063ffffffff16565b821015612cb657600254683635c9adc5dea00000935093505050612cbf565b81819350935050505b9091565b5f805f805f805f805f612cdb8a600a54600b54612eba565b9250925092505f612cea6129cd565b90505f805f612cfb8e878787612f4c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612d6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061242d565b905092915050565b5f808284612d7a9190613c2b565b905083811015612dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db690614060565b60405180910390fd5b8091505092915050565b5f612dd26129cd565b90505f612de88284612fd090919063ffffffff16565b9050612e3a8160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6c90919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612e9582600254612d2390919063ffffffff16565b600281905550612eb081600354612d6c90919063ffffffff16565b6003819055505050565b5f805f80612ee46064612ed6888a612fd090919063ffffffff16565b61298490919063ffffffff16565b90505f612f0d6064612eff888b612fd090919063ffffffff16565b61298490919063ffffffff16565b90505f612f3582612f27858c612d2390919063ffffffff16565b612d2390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612f638589612fd090919063ffffffff16565b90505f612f798689612fd090919063ffffffff16565b90505f612f8f8789612fd090919063ffffffff16565b90505f612fb782612fa98587612d2390919063ffffffff16565b612d2390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612fe0575f9050613041565b5f8284612fed91906135e9565b9050828482612ffc9190613fe6565b1461303c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613033906140ee565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561307e578082015181840152602081019050613063565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130a382613047565b6130ad8185613051565b93506130bd818560208601613061565b6130c681613089565b840191505092915050565b5f6020820190508181035f8301526130e98184613099565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613122826130f9565b9050919050565b61313281613118565b811461313c575f80fd5b50565b5f8135905061314d81613129565b92915050565b5f819050919050565b61316581613153565b811461316f575f80fd5b50565b5f813590506131808161315c565b92915050565b5f806040838503121561319c5761319b6130f1565b5b5f6131a98582860161313f565b92505060206131ba85828601613172565b9150509250929050565b5f8115159050919050565b6131d8816131c4565b82525050565b5f6020820190506131f15f8301846131cf565b92915050565b5f6020828403121561320c5761320b6130f1565b5b5f61321984828501613172565b91505092915050565b61322b81613153565b82525050565b5f6020820190506132445f830184613222565b92915050565b5f805f60608486031215613261576132606130f1565b5b5f61326e8682870161313f565b935050602061327f8682870161313f565b925050604061329086828701613172565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126132bb576132ba61329a565b5b8235905067ffffffffffffffff8111156132d8576132d761329e565b5b6020830191508360208202830111156132f4576132f36132a2565b5b9250929050565b613304816131c4565b811461330e575f80fd5b50565b5f8135905061331f816132fb565b92915050565b5f805f6040848603121561333c5761333b6130f1565b5b5f84013567ffffffffffffffff811115613359576133586130f5565b5b613365868287016132a6565b9350935050602061337886828701613311565b9150509250925092565b5f60ff82169050919050565b61339781613382565b82525050565b5f6020820190506133b05f83018461338e565b92915050565b5f80604083850312156133cc576133cb6130f1565b5b5f6133d985828601613172565b92505060206133ea85828601613172565b9150509250929050565b5f60208284031215613409576134086130f1565b5b5f6134168482850161313f565b91505092915050565b5f613429826130f9565b9050919050565b6134398161341f565b8114613443575f80fd5b50565b5f8135905061345481613430565b92915050565b5f6020828403121561346f5761346e6130f1565b5b5f61347c84828501613446565b91505092915050565b61348e81613118565b82525050565b5f6020820190506134a75f830184613485565b92915050565b5f80604083850312156134c3576134c26130f1565b5b5f6134d08582860161313f565b92505060206134e185828601613311565b9150509250929050565b5f8060408385031215613501576135006130f1565b5b5f61350e8582860161313f565b925050602061351f8582860161313f565b9150509250929050565b5f6020828403121561353e5761353d6130f1565b5b5f61354b84828501613311565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613588602083613051565b915061359382613554565b602082019050919050565b5f6020820190508181035f8301526135b58161357c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135f382613153565b91506135fe83613153565b925082820261360c81613153565b91508282048414831517613623576136226135bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61366182613153565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613693576136926135bc565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6136f8603983613051565b91506137038261369e565b604082019050919050565b5f6020820190508181035f830152613725816136ec565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613760601783613051565b915061376b8261372c565b602082019050919050565b5f6020820190508181035f83015261378d81613754565b9050919050565b5f815190506137a281613129565b92915050565b5f602082840312156137bd576137bc6130f1565b5b5f6137ca84828501613794565b91505092915050565b5f6040820190506137e65f830185613485565b6137f36020830184613485565b9392505050565b5f819050919050565b5f819050919050565b5f61382661382161381c846137fa565b613803565b613153565b9050919050565b6138368161380c565b82525050565b5f60c08201905061384f5f830189613485565b61385c6020830188613222565b613869604083018761382d565b613876606083018661382d565b6138836080830185613485565b61389060a0830184613222565b979650505050505050565b5f815190506138a98161315c565b92915050565b5f805f606084860312156138c6576138c56130f1565b5b5f6138d38682870161389b565b93505060206138e48682870161389b565b92505060406138f58682870161389b565b9150509250925092565b5f6040820190506139125f830185613485565b61391f6020830184613222565b9392505050565b5f81519050613934816132fb565b92915050565b5f6020828403121561394f5761394e6130f1565b5b5f61395c84828501613926565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6139bf602483613051565b91506139ca82613965565b604082019050919050565b5f6020820190508181035f8301526139ec816139b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a4d602283613051565b9150613a58826139f3565b604082019050919050565b5f6020820190508181035f830152613a7a81613a41565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613adb602583613051565b9150613ae682613a81565b604082019050919050565b5f6020820190508181035f830152613b0881613acf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613b69602383613051565b9150613b7482613b0f565b604082019050919050565b5f6020820190508181035f830152613b9681613b5d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613bf7602983613051565b9150613c0282613b9d565b604082019050919050565b5f6020820190508181035f830152613c2481613beb565b9050919050565b5f613c3582613153565b9150613c4083613153565b9250828201905080821115613c5857613c576135bc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb8602383613051565b9150613cc382613c5e565b604082019050919050565b5f6020820190508181035f830152613ce581613cac565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613d20601883613051565b9150613d2b82613cec565b602082019050919050565b5f6020820190508181035f830152613d4d81613d14565b9050919050565b5f613d5e82613153565b9150613d6983613153565b9250828203905081811115613d8157613d806135bc565b5b92915050565b5f81905092915050565b50565b5f613d9f5f83613d87565b9150613daa82613d91565b5f82019050919050565b5f613dbe82613d94565b9150819050919050565b5f604082019050613ddb5f8301856131cf565b613de860208301846131cf565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613e49602a83613051565b9150613e5482613def565b604082019050919050565b5f6020820190508181035f830152613e7681613e3d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613edc81613118565b82525050565b5f613eed8383613ed3565b60208301905092915050565b5f602082019050919050565b5f613f0f82613eaa565b613f198185613eb4565b9350613f2483613ec4565b805f5b83811015613f54578151613f3b8882613ee2565b9750613f4683613ef9565b925050600181019050613f27565b5085935050505092915050565b5f60a082019050613f745f830188613222565b613f81602083018761382d565b8181036040830152613f938186613f05565b9050613fa26060830185613485565b613faf6080830184613222565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ff082613153565b9150613ffb83613153565b92508261400b5761400a613fb9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61404a601b83613051565b915061405582614016565b602082019050919050565b5f6020820190508181035f8301526140778161403e565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140d8602183613051565b91506140e38261407e565b604082019050919050565b5f6020820190508181035f830152614105816140cc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b1067412bb7cc4c8abaef9cc3e6b88f4c6dd0bec89bc4265d0e3d3d72045c75d64736f6c63430008140033

Deployed Bytecode Sourcemap

9001:14162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11315:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21264:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19688:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22722:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21953:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20360:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18793:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22631:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19465:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18995:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19830:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18561:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20199:153;;;;;;;;;;;;;:::i;:::-;;20967:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8082:148;;;;;;;;;;;;;:::i;:::-;;18311:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7868:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22536:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20577:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21778:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20033:154;;;;;;;;;;;;;:::i;:::-;;19593:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17536:767;;;;;;;;;;;;;:::i;:::-;;19117:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20468:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21113:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19939:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19335:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11315:83;11352:13;11385:5;;;;;;;;;;;;;;;;;11378:12;;11315:83;:::o;21264:161::-;21339:4;21356:39;21365:12;:10;:12::i;:::-;21379:7;21388:6;21356:8;:39::i;:::-;21413:4;21406:11;;21264:161;;;;:::o;19688:134::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19809:5:::1;19798:8;:16;;;;:::i;:::-;19772:23;:42;;;;19688:134:::0;:::o;22722:95::-;22775:7;9304:12;22795:14;;22722:95;:::o;21953:313::-;22051:4;22068:36;22078:6;22086:9;22097:6;22068:9;:36::i;:::-;22115:121;22124:6;22132:12;:10;:12::i;:::-;22146:89;22184:6;22146:89;;;;;;;;;;;;;;;;;:11;:19;22158:6;22146:19;;;;;;;;;;;;;;;:33;22166:12;:10;:12::i;:::-;22146:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22115:8;:121::i;:::-;22254:4;22247:11;;21953:313;;;;;:::o;20360:100::-;20404:4;20428:24;20446:4;20428:9;:24::i;:::-;20421:31;;20360:100;:::o;18793:194::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18886:6:::1;18881:99;18902:3;;:10;;18898:1;:14;18881:99;;;18963:5;18934:18;:26;18953:3;;18957:1;18953:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18934:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18914:3;;;;;:::i;:::-;;;;18881:99;;;;18793:194:::0;;;:::o;22631:83::-;22672:5;9212:1;22690:16;;22631:83;:::o;19465:120::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19548:3:::1;19538:7;:13;;;;19573:4;19562:8;:15;;;;19465:120:::0;;:::o;18995:114::-;19055:4;19079:18;:22;19098:2;19079:22;;;;;;;;;;;;;;;;;;;;;;;;;19072:29;;18995:114;;;:::o;19830:101::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19918:5:::1;19912:3;:11;;;;:::i;:::-;19895:14;:28;;;;19830:101:::0;:::o;18561:224::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18686:5:::1;18647:18;:36;18666:16;;;;;;;;;;;18647:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;18721:9;18702:16;;:28;;;;;;;;;;;;;;;;;;18773:4;18741:18;:29;18760:9;18741:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18561:224:::0;:::o;20199:153::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20251:26:::1;20280:21;20251:50;;20312:32;20325:18;20312:12;:32::i;:::-;20240:112;20199:153::o:0;20967:138::-;21033:7;21060:37;21080:7;:16;21088:7;21080:16;;;;;;;;;;;;;;;;21060:19;:37::i;:::-;21053:44;;20967:138;;;:::o;8082:148::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8189:1:::1;8152:40;;8173:6;::::0;::::1;;;;;;;;8152:40;;;;;;;;;;;;8220:1;8203:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8082:148::o:0;18311:238::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18444:5:::1;18403:18;:38;18422:18;;;;;;;;;;;18403:38;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18481:11;18460:18;;:32;;;;;;;;;;;;;;;;;;18537:4;18503:18;:31;18522:11;18503:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;18311:238:::0;:::o;7868:79::-;7906:7;7933:6;;;;;;;;;;;7926:13;;7868:79;:::o;22536:87::-;22575:13;22608:7;;;;;;;;;;;;;;;;;22601:14;;22536:87;:::o;20577:244::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20686:13:::1;;;;;;;;;;;20678:21;;:4;:21;;::::0;20670:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20772:41;20801:4;20807:5;20772:28;:41::i;:::-;20577:244:::0;;:::o;21778:167::-;21856:4;21873:42;21883:12;:10;:12::i;:::-;21897:9;21908:6;21873:9;:42::i;:::-;21933:4;21926:11;;21778:167;;;;:::o;20033:154::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20085:23:::1;20111:24;20129:4;20111:9;:24::i;:::-;20085:50;;20146:33;20163:15;20146:16;:33::i;:::-;20074:113;20033:154::o:0;19593:83::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19665:3:::1;19655:7;:13;;;;19593:83:::0;:::o;17536:767::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17600:11:::1;::::0;::::1;;;;;;;;17599:12;17591:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17649:35;17706:42;17649:100;;17778:16;17760:15;;:34;;;;;;;;;;;;;;;;;;17805:58;17822:4;17837:15;;;;;;;;;;;9304:12;17805:8;:58::i;:::-;17908:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17890:56;;;17955:4;17962:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17890:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17874:13;;:112;;;;;;;;;;;;;;;;;;17997:15;;;;;;;;;;;:31;;;18036:21;18067:4;18073:24;18091:4;18073:9;:24::i;:::-;18098:1;18100::::0;18102:7:::1;:5;:7::i;:::-;18110:15;17997:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18144:13;;;;;;;;;;;18137:29;;;18175:15;;;;;;;;;;;18193:14;18137:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18233:4;18219:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;18291:4;18248:25;:40;18274:13;;;;;;;;;;;18248:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;17580:723;17536:767::o:0;19117:206::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19216:6:::1;19211:105;19232:3;;:10;;19228:1;:14;19211:105;;;19299:5;19264:24;:32;19289:3;;19293:1;19289:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19264:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19244:3;;;;;:::i;:::-;;;;19211:105;;;;19117:206:::0;;;:::o;20468:101::-;20513:4;20537:24;20547:13;;;;;;;;;;;20537:9;:24::i;:::-;20530:31;;20468:101;:::o;21113:143::-;21194:7;21221:11;:18;21233:5;21221:18;;;;;;;;;;;;;;;:27;21240:7;21221:27;;;;;;;;;;;;;;;;21214:34;;21113:143;;;;:::o;19939:86::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20012:5:::1;20001:8;;:16;;;;;;;;;;;;;;;;;;19939:86:::0;:::o;19335:122::-;19397:4;19421:24;:28;19446:2;19421:28;;;;;;;;;;;;;;;;;;;;;;;;;19414:35;;19335:122;;;:::o;7408:98::-;7461:7;7488:10;7481:17;;7408:98;:::o;22825:335::-;22935:1;22918:19;;:5;:19;;;22910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23016:1;22997:21;;:7;:21;;;22989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23098:6;23068:11;:18;23080:5;23068:18;;;;;;;;;;;;;;;:27;23087:7;23068:27;;;;;;;;;;;;;;;:36;;;;23136:7;23120:32;;23129:5;23120:32;;;23145:6;23120:32;;;;;;:::i;:::-;;;;;;;;22825:335;;;:::o;11410:1721::-;11514:1;11498:18;;:4;:18;;;11490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11591:1;11577:16;;:2;:16;;;11569:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11661:1;11652:6;:10;11644:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11732:7;:5;:7::i;:::-;11724:15;;:4;:15;;;;:32;;;;;11749:7;:5;:7::i;:::-;11743:13;;:2;:13;;;;11724:32;11721:1080;;;11784:13;;;;;;;;;;;11778:19;;:2;:19;;;;:52;;;;;11802:24;:28;11827:2;11802:28;;;;;;;;;;;;;;;;;;;;;;;;;11801:29;11778:52;:75;;;;;11852:1;11834:14;;:19;;11778:75;11775:212;;;11917:14;;11907:6;11882:22;11900:2;11882:9;:22::i;:::-;:31;;;;:::i;:::-;:49;;11874:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11775:212;12026:13;;;;;;;;;;;12018:21;;:4;:21;;;:55;;;;;12057:15;;;;;;;;;;;12043:30;;:2;:30;;;;12018:55;:82;;;;;12078:18;:22;12097:2;12078:22;;;;;;;;;;;;;;;;;;;;;;;;;12077:23;12018:82;12015:207;;;12129:11;;;;;;;;;;12121:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12199:7;;12188:8;:18;;;;12015:207;12236:28;12267:24;12285:4;12267:9;:24::i;:::-;12236:55;;12312:6;;;;;;;;;;;12311:7;:32;;;;;12330:13;;;;;;;;;;;12322:21;;:4;:21;;;;12311:32;:47;;;;;12347:11;;;;;;;;;;12311:47;12308:482;;;12392:8;;12381;:19;;;;12425:25;:29;12451:2;12425:29;;;;;;;;;;;;;;;;;;;;;;;;;12421:354;;;12505:23;;12482:20;:46;12479:277;;;12561:8;;;;;;;;;;;12557:119;;12625:23;;12602:46;;12557:119;12702:30;12711:20;12702:8;:30::i;:::-;12479:277;12421:354;12308:482;11758:1043;11721:1080;12811:12;12826:4;12811:19;;12846:18;:24;12865:4;12846:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12874:18;:22;12893:2;12874:22;;;;;;;;;;;;;;;;;;;;;;;;;12846:50;12843:97;;;12923:5;12913:15;;12843:97;12956:25;:31;12982:4;12956:31;;;;;;;;;;;;;;;;;;;;;;;;;12955:32;:66;;;;;12992:25;:29;13018:2;12992:29;;;;;;;;;;;;;;;;;;;;;;;;;12991:30;12955:66;12952:113;;;13048:5;13038:15;;12952:113;13085:38;13100:4;13105:2;13108:6;13115:7;13085:14;:38::i;:::-;11479:1652;11410:1721;;;:::o;3818:192::-;3904:7;3937:1;3932;:6;;3940:12;3924:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3964:9;3980:1;3976;:5;;;;:::i;:::-;3964:17;;4001:1;3994:8;;;3818:192;;;;;:::o;14385:266::-;14443:16;14465:18;;;;;;;;;;;:23;;14496:13;14507:1;14496:6;:10;;:13;;;;:::i;:::-;14465:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14442:72;;;14526:14;14546:16;;;;;;;;;;;:21;;14575:13;14586:1;14575:6;:10;;:13;;;;:::i;:::-;14546:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14525:68;;;14611:32;14620:11;14633:9;14611:32;;;;;;;:::i;:::-;;;;;;;;14431:220;;14385:266;:::o;22274:254::-;22341:7;22380;;22369;:18;;22361:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22445:19;22468:10;:8;:10::i;:::-;22445:33;;22496:24;22508:11;22496:7;:11;;:24;;;;:::i;:::-;22489:31;;;22274:254;;;:::o;20829:130::-;20946:5;20912:25;:31;20938:4;20912:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20829:130;;:::o;13886:483::-;10510:4;10501:6;;:13;;;;;;;;;;;;;;;;;;13964:21:::1;14002:1;13988:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13964:40;;14033:4;14015;14020:1;14015:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14059:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14049:4;14054:1;14049:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14092:62;14109:4;14124:15;;;;;;;;;;;14142:11;14092:8;:62::i;:::-;14165:15;;;;;;;;;;;:66;;;14246:11;14272:1;14288:4;14315;14335:15;14165:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13953:416;10546:5:::0;10537:6;;:14;;;;;;;;;;;;;;;;;;13886:483;:::o;13593:285::-;13670:38;13687:20;13670:16;:38::i;:::-;13721:26;13750:21;13721:50;;13806:1;13785:18;:22;13782:89;;;13824:35;13837:21;13824:12;:35::i;:::-;13782:89;13649:229;13593:285;:::o;14663:263::-;14775:7;14771:40;;14797:14;:12;:14::i;:::-;14771:40;14822:44;14840:6;14848:9;14859:6;14822:17;:44::i;:::-;14881:7;14877:41;;14903:15;:13;:15::i;:::-;14877:41;14663:263;;;;:::o;5216:132::-;5274:7;5301:39;5305:1;5308;5301:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5294:46;;5216:132;;;;:::o;16267:163::-;16308:7;16329:15;16346;16365:19;:17;:19::i;:::-;16328:56;;;;16402:20;16414:7;16402;:11;;:20;;;;:::i;:::-;16395:27;;;;16267:163;:::o;21433:210::-;21490:1;21479:7;;:12;:29;;;;;21507:1;21495:8;;:13;21479:29;21510:7;21476:41;21545:7;;21527:15;:25;;;;21582:8;;21563:16;:27;;;;21611:1;21601:7;:11;;;;21634:1;21623:8;:12;;;;21433:210;:::o;14934:490::-;15033:15;15050:23;15075:12;15089:23;15114:12;15128:13;15145:19;15156:7;15145:10;:19::i;:::-;15032:132;;;;;;;;;;;;15193:28;15213:7;15193;:15;15201:6;15193:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15175:7;:15;15183:6;15175:15;;;;;;;;;;;;;;;:46;;;;15253:39;15276:15;15253:7;:18;15261:9;15253:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15232:7;:18;15240:9;15232:18;;;;;;;;;;;;;;;:60;;;;15306:16;15316:5;15306:9;:16::i;:::-;15333:23;15345:4;15351;15333:11;:23::i;:::-;15389:9;15372:44;;15381:6;15372:44;;;15400:15;15372:44;;;;;;:::i;:::-;;;;;;;;15021:403;;;;;;14934:490;;;:::o;21655:115::-;21709:15;;21699:7;:25;;;;21746:16;;21735:8;:27;;;;21655:115::o;5844:278::-;5930:7;5962:1;5958;:5;5965:12;5950:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5989:9;6005:1;6001;:5;;;;:::i;:::-;5989:17;;6113:1;6106:8;;;5844:278;;;;;:::o;16438:255::-;16488:7;16497;16517:15;16535:7;;16517:25;;16553:15;9304:12;16553:25;;16602:20;9304:12;16602:7;;:11;;:20;;;;:::i;:::-;16592:7;:30;16589:60;;;16632:7;;9304:12;16624:25;;;;;;;;16589:60;16668:7;16677;16660:25;;;;;;16438:255;;;:::o;15432:468::-;15491:7;15500;15509;15518;15527;15536;15557:23;15582:12;15596:13;15613:39;15625:7;15634;;15643:8;;15613:11;:39::i;:::-;15556:96;;;;;;15663:19;15686:10;:8;:10::i;:::-;15663:33;;15708:15;15725:23;15750:12;15766:46;15778:7;15787:4;15793:5;15800:11;15766;:46::i;:::-;15707:105;;;;;;15831:7;15840:15;15857:4;15863:15;15880:4;15886:5;15823:69;;;;;;;;;;;;;;;;;;;15432:468;;;;;;;:::o;3379:136::-;3437:7;3464:43;3468:1;3471;3464:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3457:50;;3379:136;;;;:::o;2915:181::-;2973:7;2993:9;3009:1;3005;:5;;;;:::i;:::-;2993:17;;3034:1;3029;:6;;3021:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3087:1;3080:8;;;2915:181;;;;:::o;17118:214::-;17171:19;17194:10;:8;:10::i;:::-;17171:33;;17215:13;17231:22;17241:11;17231:5;:9;;:22;;;;:::i;:::-;17215:38;;17291:33;17318:5;17291:7;:22;17307:4;17291:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17266:7;:22;17282:4;17266:22;;;;;;;;;;;;;;;:58;;;;17160:172;;17118:214;:::o;17340:147::-;17418:17;17430:4;17418:7;;:11;;:17;;;;:::i;:::-;17408:7;:27;;;;17459:20;17474:4;17459:10;;:14;;:20;;;;:::i;:::-;17446:10;:33;;;;17340:147;;:::o;15908:351::-;16001:7;16010;16019;16039:12;16054:28;16078:3;16054:19;16066:6;16054:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16039:43;;16093:13;16109:29;16134:3;16109:20;16121:7;16109;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16093:45;;16149:23;16175:28;16197:5;16175:17;16187:4;16175:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16149:54;;16222:15;16239:4;16245:5;16214:37;;;;;;;;;15908:351;;;;;;;:::o;16701:409::-;16811:7;16820;16829;16849:15;16867:24;16879:11;16867:7;:11;;:24;;;;:::i;:::-;16849:42;;16902:12;16917:21;16926:11;16917:4;:8;;:21;;;;:::i;:::-;16902:36;;16949:13;16965:22;16975:11;16965:5;:9;;:22;;;;:::i;:::-;16949:38;;16998:23;17024:28;17046:5;17024:17;17036:4;17024:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16998:54;;17071:7;17080:15;17097:4;17063:39;;;;;;;;;;16701:409;;;;;;;;:::o;4269:471::-;4327:7;4577:1;4572;:6;4568:47;;4602:1;4595:8;;;;4568:47;4627:9;4643:1;4639;:5;;;;:::i;:::-;4627:17;;4672:1;4667;4663;:5;;;;:::i;:::-;:10;4655:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4731:1;4724:8;;;4269:471;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:117::-;4867:1;4864;4857:12;4881:117;4990:1;4987;4980:12;5004:117;5113:1;5110;5103:12;5144:568;5217:8;5227:6;5277:3;5270:4;5262:6;5258:17;5254:27;5244:122;;5285:79;;:::i;:::-;5244:122;5398:6;5385:20;5375:30;;5428:18;5420:6;5417:30;5414:117;;;5450:79;;:::i;:::-;5414:117;5564:4;5556:6;5552:17;5540:29;;5618:3;5610:4;5602:6;5598:17;5588:8;5584:32;5581:41;5578:128;;;5625:79;;:::i;:::-;5578:128;5144:568;;;;;:::o;5718:116::-;5788:21;5803:5;5788:21;:::i;:::-;5781:5;5778:32;5768:60;;5824:1;5821;5814:12;5768:60;5718:116;:::o;5840:133::-;5883:5;5921:6;5908:20;5899:29;;5937:30;5961:5;5937:30;:::i;:::-;5840:133;;;;:::o;5979:698::-;6071:6;6079;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6290:1;6279:9;6275:17;6262:31;6320:18;6312:6;6309:30;6306:117;;;6342:79;;:::i;:::-;6306:117;6455:80;6527:7;6518:6;6507:9;6503:22;6455:80;:::i;:::-;6437:98;;;;6233:312;6584:2;6610:50;6652:7;6643:6;6632:9;6628:22;6610:50;:::i;:::-;6600:60;;6555:115;5979:698;;;;;:::o;6683:86::-;6718:7;6758:4;6751:5;6747:16;6736:27;;6683:86;;;:::o;6775:112::-;6858:22;6874:5;6858:22;:::i;:::-;6853:3;6846:35;6775:112;;:::o;6893:214::-;6982:4;7020:2;7009:9;7005:18;6997:26;;7033:67;7097:1;7086:9;7082:17;7073:6;7033:67;:::i;:::-;6893:214;;;;:::o;7113:474::-;7181:6;7189;7238:2;7226:9;7217:7;7213:23;7209:32;7206:119;;;7244:79;;:::i;:::-;7206:119;7364:1;7389:53;7434:7;7425:6;7414:9;7410:22;7389:53;:::i;:::-;7379:63;;7335:117;7491:2;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7462:118;7113:474;;;;;:::o;7593:329::-;7652:6;7701:2;7689:9;7680:7;7676:23;7672:32;7669:119;;;7707:79;;:::i;:::-;7669:119;7827:1;7852:53;7897:7;7888:6;7877:9;7873:22;7852:53;:::i;:::-;7842:63;;7798:117;7593:329;;;;:::o;7928:104::-;7973:7;8002:24;8020:5;8002:24;:::i;:::-;7991:35;;7928:104;;;:::o;8038:138::-;8119:32;8145:5;8119:32;:::i;:::-;8112:5;8109:43;8099:71;;8166:1;8163;8156:12;8099:71;8038:138;:::o;8182:155::-;8236:5;8274:6;8261:20;8252:29;;8290:41;8325:5;8290:41;:::i;:::-;8182:155;;;;:::o;8343:345::-;8410:6;8459:2;8447:9;8438:7;8434:23;8430:32;8427:119;;;8465:79;;:::i;:::-;8427:119;8585:1;8610:61;8663:7;8654:6;8643:9;8639:22;8610:61;:::i;:::-;8600:71;;8556:125;8343:345;;;;:::o;8694:118::-;8781:24;8799:5;8781:24;:::i;:::-;8776:3;8769:37;8694:118;;:::o;8818:222::-;8911:4;8949:2;8938:9;8934:18;8926:26;;8962:71;9030:1;9019:9;9015:17;9006:6;8962:71;:::i;:::-;8818:222;;;;:::o;9046:468::-;9111:6;9119;9168:2;9156:9;9147:7;9143:23;9139:32;9136:119;;;9174:79;;:::i;:::-;9136:119;9294:1;9319:53;9364:7;9355:6;9344:9;9340:22;9319:53;:::i;:::-;9309:63;;9265:117;9421:2;9447:50;9489:7;9480:6;9469:9;9465:22;9447:50;:::i;:::-;9437:60;;9392:115;9046:468;;;;;:::o;9520:474::-;9588:6;9596;9645:2;9633:9;9624:7;9620:23;9616:32;9613:119;;;9651:79;;:::i;:::-;9613:119;9771:1;9796:53;9841:7;9832:6;9821:9;9817:22;9796:53;:::i;:::-;9786:63;;9742:117;9898:2;9924:53;9969:7;9960:6;9949:9;9945:22;9924:53;:::i;:::-;9914:63;;9869:118;9520:474;;;;;:::o;10000:323::-;10056:6;10105:2;10093:9;10084:7;10080:23;10076:32;10073:119;;;10111:79;;:::i;:::-;10073:119;10231:1;10256:50;10298:7;10289:6;10278:9;10274:22;10256:50;:::i;:::-;10246:60;;10202:114;10000:323;;;;:::o;10329:182::-;10469:34;10465:1;10457:6;10453:14;10446:58;10329:182;:::o;10517:366::-;10659:3;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10756:93;10845:3;10756:93;:::i;:::-;10874:2;10869:3;10865:12;10858:19;;10517:366;;;:::o;10889:419::-;11055:4;11093:2;11082:9;11078:18;11070:26;;11142:9;11136:4;11132:20;11128:1;11117:9;11113:17;11106:47;11170:131;11296:4;11170:131;:::i;:::-;11162:139;;10889:419;;;:::o;11314:180::-;11362:77;11359:1;11352:88;11459:4;11456:1;11449:15;11483:4;11480:1;11473:15;11500:410;11540:7;11563:20;11581:1;11563:20;:::i;:::-;11558:25;;11597:20;11615:1;11597:20;:::i;:::-;11592:25;;11652:1;11649;11645:9;11674:30;11692:11;11674:30;:::i;:::-;11663:41;;11853:1;11844:7;11840:15;11837:1;11834:22;11814:1;11807:9;11787:83;11764:139;;11883:18;;:::i;:::-;11764:139;11548:362;11500:410;;;;:::o;11916:180::-;11964:77;11961:1;11954:88;12061:4;12058:1;12051:15;12085:4;12082:1;12075:15;12102:233;12141:3;12164:24;12182:5;12164:24;:::i;:::-;12155:33;;12210:66;12203:5;12200:77;12197:103;;12280:18;;:::i;:::-;12197:103;12327:1;12320:5;12316:13;12309:20;;12102:233;;;:::o;12341:244::-;12481:34;12477:1;12469:6;12465:14;12458:58;12550:27;12545:2;12537:6;12533:15;12526:52;12341:244;:::o;12591:366::-;12733:3;12754:67;12818:2;12813:3;12754:67;:::i;:::-;12747:74;;12830:93;12919:3;12830:93;:::i;:::-;12948:2;12943:3;12939:12;12932:19;;12591:366;;;:::o;12963:419::-;13129:4;13167:2;13156:9;13152:18;13144:26;;13216:9;13210:4;13206:20;13202:1;13191:9;13187:17;13180:47;13244:131;13370:4;13244:131;:::i;:::-;13236:139;;12963:419;;;:::o;13388:173::-;13528:25;13524:1;13516:6;13512:14;13505:49;13388:173;:::o;13567:366::-;13709:3;13730:67;13794:2;13789:3;13730:67;:::i;:::-;13723:74;;13806:93;13895:3;13806:93;:::i;:::-;13924:2;13919:3;13915:12;13908:19;;13567:366;;;:::o;13939:419::-;14105:4;14143:2;14132:9;14128:18;14120:26;;14192:9;14186:4;14182:20;14178:1;14167:9;14163:17;14156:47;14220:131;14346:4;14220:131;:::i;:::-;14212:139;;13939:419;;;:::o;14364:143::-;14421:5;14452:6;14446:13;14437:22;;14468:33;14495:5;14468:33;:::i;:::-;14364:143;;;;:::o;14513:351::-;14583:6;14632:2;14620:9;14611:7;14607:23;14603:32;14600:119;;;14638:79;;:::i;:::-;14600:119;14758:1;14783:64;14839:7;14830:6;14819:9;14815:22;14783:64;:::i;:::-;14773:74;;14729:128;14513:351;;;;:::o;14870:332::-;14991:4;15029:2;15018:9;15014:18;15006:26;;15042:71;15110:1;15099:9;15095:17;15086:6;15042:71;:::i;:::-;15123:72;15191:2;15180:9;15176:18;15167:6;15123:72;:::i;:::-;14870:332;;;;;:::o;15208:85::-;15253:7;15282:5;15271:16;;15208:85;;;:::o;15299:60::-;15327:3;15348:5;15341:12;;15299:60;;;:::o;15365:158::-;15423:9;15456:61;15474:42;15483:32;15509:5;15483:32;:::i;:::-;15474:42;:::i;:::-;15456:61;:::i;:::-;15443:74;;15365:158;;;:::o;15529:147::-;15624:45;15663:5;15624:45;:::i;:::-;15619:3;15612:58;15529:147;;:::o;15682:807::-;15931:4;15969:3;15958:9;15954:19;15946:27;;15983:71;16051:1;16040:9;16036:17;16027:6;15983:71;:::i;:::-;16064:72;16132:2;16121:9;16117:18;16108:6;16064:72;:::i;:::-;16146:80;16222:2;16211:9;16207:18;16198:6;16146:80;:::i;:::-;16236;16312:2;16301:9;16297:18;16288:6;16236:80;:::i;:::-;16326:73;16394:3;16383:9;16379:19;16370:6;16326:73;:::i;:::-;16409;16477:3;16466:9;16462:19;16453:6;16409:73;:::i;:::-;15682:807;;;;;;;;;:::o;16495:143::-;16552:5;16583:6;16577:13;16568:22;;16599:33;16626:5;16599:33;:::i;:::-;16495:143;;;;:::o;16644:663::-;16732:6;16740;16748;16797:2;16785:9;16776:7;16772:23;16768:32;16765:119;;;16803:79;;:::i;:::-;16765:119;16923:1;16948:64;17004:7;16995:6;16984:9;16980:22;16948:64;:::i;:::-;16938:74;;16894:128;17061:2;17087:64;17143:7;17134:6;17123:9;17119:22;17087:64;:::i;:::-;17077:74;;17032:129;17200:2;17226:64;17282:7;17273:6;17262:9;17258:22;17226:64;:::i;:::-;17216:74;;17171:129;16644:663;;;;;:::o;17313:332::-;17434:4;17472:2;17461:9;17457:18;17449:26;;17485:71;17553:1;17542:9;17538:17;17529:6;17485:71;:::i;:::-;17566:72;17634:2;17623:9;17619:18;17610:6;17566:72;:::i;:::-;17313:332;;;;;:::o;17651:137::-;17705:5;17736:6;17730:13;17721:22;;17752:30;17776:5;17752:30;:::i;:::-;17651:137;;;;:::o;17794:345::-;17861:6;17910:2;17898:9;17889:7;17885:23;17881:32;17878:119;;;17916:79;;:::i;:::-;17878:119;18036:1;18061:61;18114:7;18105:6;18094:9;18090:22;18061:61;:::i;:::-;18051:71;;18007:125;17794:345;;;;:::o;18145:223::-;18285:34;18281:1;18273:6;18269:14;18262:58;18354:6;18349:2;18341:6;18337:15;18330:31;18145:223;:::o;18374:366::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:419::-;18912:4;18950:2;18939:9;18935:18;18927:26;;18999:9;18993:4;18989:20;18985:1;18974:9;18970:17;18963:47;19027:131;19153:4;19027:131;:::i;:::-;19019:139;;18746:419;;;:::o;19171:221::-;19311:34;19307:1;19299:6;19295:14;19288:58;19380:4;19375:2;19367:6;19363:15;19356:29;19171:221;:::o;19398:366::-;19540:3;19561:67;19625:2;19620:3;19561:67;:::i;:::-;19554:74;;19637:93;19726:3;19637:93;:::i;:::-;19755:2;19750:3;19746:12;19739:19;;19398:366;;;:::o;19770:419::-;19936:4;19974:2;19963:9;19959:18;19951:26;;20023:9;20017:4;20013:20;20009:1;19998:9;19994:17;19987:47;20051:131;20177:4;20051:131;:::i;:::-;20043:139;;19770:419;;;:::o;20195:224::-;20335:34;20331:1;20323:6;20319:14;20312:58;20404:7;20399:2;20391:6;20387:15;20380:32;20195:224;:::o;20425:366::-;20567:3;20588:67;20652:2;20647:3;20588:67;:::i;:::-;20581:74;;20664:93;20753:3;20664:93;:::i;:::-;20782:2;20777:3;20773:12;20766:19;;20425:366;;;:::o;20797:419::-;20963:4;21001:2;20990:9;20986:18;20978:26;;21050:9;21044:4;21040:20;21036:1;21025:9;21021:17;21014:47;21078:131;21204:4;21078:131;:::i;:::-;21070:139;;20797:419;;;:::o;21222:222::-;21362:34;21358:1;21350:6;21346:14;21339:58;21431:5;21426:2;21418:6;21414:15;21407:30;21222:222;:::o;21450:366::-;21592:3;21613:67;21677:2;21672:3;21613:67;:::i;:::-;21606:74;;21689:93;21778:3;21689:93;:::i;:::-;21807:2;21802:3;21798:12;21791:19;;21450:366;;;:::o;21822:419::-;21988:4;22026:2;22015:9;22011:18;22003:26;;22075:9;22069:4;22065:20;22061:1;22050:9;22046:17;22039:47;22103:131;22229:4;22103:131;:::i;:::-;22095:139;;21822:419;;;:::o;22247:228::-;22387:34;22383:1;22375:6;22371:14;22364:58;22456:11;22451:2;22443:6;22439:15;22432:36;22247:228;:::o;22481:366::-;22623:3;22644:67;22708:2;22703:3;22644:67;:::i;:::-;22637:74;;22720:93;22809:3;22720:93;:::i;:::-;22838:2;22833:3;22829:12;22822:19;;22481:366;;;:::o;22853:419::-;23019:4;23057:2;23046:9;23042:18;23034:26;;23106:9;23100:4;23096:20;23092:1;23081:9;23077:17;23070:47;23134:131;23260:4;23134:131;:::i;:::-;23126:139;;22853:419;;;:::o;23278:191::-;23318:3;23337:20;23355:1;23337:20;:::i;:::-;23332:25;;23371:20;23389:1;23371:20;:::i;:::-;23366:25;;23414:1;23411;23407:9;23400:16;;23435:3;23432:1;23429:10;23426:36;;;23442:18;;:::i;:::-;23426:36;23278:191;;;;:::o;23475:222::-;23615:34;23611:1;23603:6;23599:14;23592:58;23684:5;23679:2;23671:6;23667:15;23660:30;23475:222;:::o;23703:366::-;23845:3;23866:67;23930:2;23925:3;23866:67;:::i;:::-;23859:74;;23942:93;24031:3;23942:93;:::i;:::-;24060:2;24055:3;24051:12;24044:19;;23703:366;;;:::o;24075:419::-;24241:4;24279:2;24268:9;24264:18;24256:26;;24328:9;24322:4;24318:20;24314:1;24303:9;24299:17;24292:47;24356:131;24482:4;24356:131;:::i;:::-;24348:139;;24075:419;;;:::o;24500:174::-;24640:26;24636:1;24628:6;24624:14;24617:50;24500:174;:::o;24680:366::-;24822:3;24843:67;24907:2;24902:3;24843:67;:::i;:::-;24836:74;;24919:93;25008:3;24919:93;:::i;:::-;25037:2;25032:3;25028:12;25021:19;;24680:366;;;:::o;25052:419::-;25218:4;25256:2;25245:9;25241:18;25233:26;;25305:9;25299:4;25295:20;25291:1;25280:9;25276:17;25269:47;25333:131;25459:4;25333:131;:::i;:::-;25325:139;;25052:419;;;:::o;25477:194::-;25517:4;25537:20;25555:1;25537:20;:::i;:::-;25532:25;;25571:20;25589:1;25571:20;:::i;:::-;25566:25;;25615:1;25612;25608:9;25600:17;;25639:1;25633:4;25630:11;25627:37;;;25644:18;;:::i;:::-;25627:37;25477:194;;;;:::o;25677:147::-;25778:11;25815:3;25800:18;;25677:147;;;;:::o;25830:114::-;;:::o;25950:398::-;26109:3;26130:83;26211:1;26206:3;26130:83;:::i;:::-;26123:90;;26222:93;26311:3;26222:93;:::i;:::-;26340:1;26335:3;26331:11;26324:18;;25950:398;;;:::o;26354:379::-;26538:3;26560:147;26703:3;26560:147;:::i;:::-;26553:154;;26724:3;26717:10;;26354:379;;;:::o;26739:308::-;26848:4;26886:2;26875:9;26871:18;26863:26;;26899:65;26961:1;26950:9;26946:17;26937:6;26899:65;:::i;:::-;26974:66;27036:2;27025:9;27021:18;27012:6;26974:66;:::i;:::-;26739:308;;;;;:::o;27053:229::-;27193:34;27189:1;27181:6;27177:14;27170:58;27262:12;27257:2;27249:6;27245:15;27238:37;27053:229;:::o;27288:366::-;27430:3;27451:67;27515:2;27510:3;27451:67;:::i;:::-;27444:74;;27527:93;27616:3;27527:93;:::i;:::-;27645:2;27640:3;27636:12;27629:19;;27288:366;;;:::o;27660:419::-;27826:4;27864:2;27853:9;27849:18;27841:26;;27913:9;27907:4;27903:20;27899:1;27888:9;27884:17;27877:47;27941:131;28067:4;27941:131;:::i;:::-;27933:139;;27660:419;;;:::o;28085:180::-;28133:77;28130:1;28123:88;28230:4;28227:1;28220:15;28254:4;28251:1;28244:15;28271:114;28338:6;28372:5;28366:12;28356:22;;28271:114;;;:::o;28391:184::-;28490:11;28524:6;28519:3;28512:19;28564:4;28559:3;28555:14;28540:29;;28391:184;;;;:::o;28581:132::-;28648:4;28671:3;28663:11;;28701:4;28696:3;28692:14;28684:22;;28581:132;;;:::o;28719:108::-;28796:24;28814:5;28796:24;:::i;:::-;28791:3;28784:37;28719:108;;:::o;28833:179::-;28902:10;28923:46;28965:3;28957:6;28923:46;:::i;:::-;29001:4;28996:3;28992:14;28978:28;;28833:179;;;;:::o;29018:113::-;29088:4;29120;29115:3;29111:14;29103:22;;29018:113;;;:::o;29167:732::-;29286:3;29315:54;29363:5;29315:54;:::i;:::-;29385:86;29464:6;29459:3;29385:86;:::i;:::-;29378:93;;29495:56;29545:5;29495:56;:::i;:::-;29574:7;29605:1;29590:284;29615:6;29612:1;29609:13;29590:284;;;29691:6;29685:13;29718:63;29777:3;29762:13;29718:63;:::i;:::-;29711:70;;29804:60;29857:6;29804:60;:::i;:::-;29794:70;;29650:224;29637:1;29634;29630:9;29625:14;;29590:284;;;29594:14;29890:3;29883:10;;29291:608;;;29167:732;;;;:::o;29905:831::-;30168:4;30206:3;30195:9;30191:19;30183:27;;30220:71;30288:1;30277:9;30273:17;30264:6;30220:71;:::i;:::-;30301:80;30377:2;30366:9;30362:18;30353:6;30301:80;:::i;:::-;30428:9;30422:4;30418:20;30413:2;30402:9;30398:18;30391:48;30456:108;30559:4;30550:6;30456:108;:::i;:::-;30448:116;;30574:72;30642:2;30631:9;30627:18;30618:6;30574:72;:::i;:::-;30656:73;30724:3;30713:9;30709:19;30700:6;30656:73;:::i;:::-;29905:831;;;;;;;;:::o;30742:180::-;30790:77;30787:1;30780:88;30887:4;30884:1;30877:15;30911:4;30908:1;30901:15;30928:185;30968:1;30985:20;31003:1;30985:20;:::i;:::-;30980:25;;31019:20;31037:1;31019:20;:::i;:::-;31014:25;;31058:1;31048:35;;31063:18;;:::i;:::-;31048:35;31105:1;31102;31098:9;31093:14;;30928:185;;;;:::o;31119:177::-;31259:29;31255:1;31247:6;31243:14;31236:53;31119:177;:::o;31302:366::-;31444:3;31465:67;31529:2;31524:3;31465:67;:::i;:::-;31458:74;;31541:93;31630:3;31541:93;:::i;:::-;31659:2;31654:3;31650:12;31643:19;;31302:366;;;:::o;31674:419::-;31840:4;31878:2;31867:9;31863:18;31855:26;;31927:9;31921:4;31917:20;31913:1;31902:9;31898:17;31891:47;31955:131;32081:4;31955:131;:::i;:::-;31947:139;;31674:419;;;:::o;32099:220::-;32239:34;32235:1;32227:6;32223:14;32216:58;32308:3;32303:2;32295:6;32291:15;32284:28;32099:220;:::o;32325:366::-;32467:3;32488:67;32552:2;32547:3;32488:67;:::i;:::-;32481:74;;32564:93;32653:3;32564:93;:::i;:::-;32682:2;32677:3;32673:12;32666:19;;32325:366;;;:::o;32697:419::-;32863:4;32901:2;32890:9;32886:18;32878:26;;32950:9;32944:4;32940:20;32936:1;32925:9;32921:17;32914:47;32978:131;33104:4;32978:131;:::i;:::-;32970:139;;32697:419;;;:::o

Swarm Source

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