ETH Price: $2,515.63 (+3.05%)

Token

Face Moon (FACEMOON)
 

Overview

Max Total Supply

1,000,000,000 FACEMOON

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 FACEMOON

Value
$0.00
0xd964da00e9a755ec4249cc95466c9b4807653a72
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:
FaceMoon

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
                                                             
   _____     _____      _____     _____      __    __      _____       _____      __   __   
 /\_____\   /\___/\    /\ __/\  /\_____\    /_/\  /\_\    ) ___ (     ) ___ (    /_/\ /\_\  
( (  ___/  / / _ \ \   ) )__\/ ( (_____/    ) ) \/ ( (   / /\_/\ \   / /\_/\ \   ) ) \ ( (  
 \ \ \_    \ \(_)/ /  / / /     \ \__\     /_/ \  / \_\ / /_/ (_\ \ / /_/ (_\ \ /_/   \ \_\ 
 / / /_\   / / _ \ \  \ \ \_    / /__/_    \ \ \\// / / \ \ )_/ / / \ \ )_/ / / \ \ \   / / 
/ /____/  ( (_( )_) )  ) )__/\ ( (_____\    )_) )( (_(   \ \/_\/ /   \ \/_\/ /   )_) \ (_(  
\/_/       \/_/ \_\/   \/___\/  \/_____/    \_\/  \/_/    )_____(     )_____(    \_\/ \/_/
                                                                     
                                                                                                                              
Web: https://FaceMoon.net

TG: https://t.me/MoonWithaFace

X: https://x.com/Facemoonerc/


*/
pragma solidity 0.8.20;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
   
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

contract FaceMoon is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public tradingActiveTime;

    uint256 private buyFee;
    uint256 private sellFee;
    
    address public MoonWallet;
    address private DEAD = 0x000000000000000000000000000000000000dEaD;

    bool    public tradingEnabled;

    uint256 public swapTokensAtAmount;
    bool    private swapping;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludedFromLimits(address indexed account, bool isExcluded);
    event MaxWalletLimitAmountChanged(uint256 maxWalletLimitRate);
    event MaxTransactionLimitAmountChanged(uint256 maxTransferRate);
    event LimitsStateChanged(bool limitsEnabled);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);
    event SwapAndSend(uint256 tokensSwapped, uint256 valueReceived);
    event SwapWithLimitUpdated(bool swapWithLimit);

    constructor () ERC20("Face Moon", "FACEMOON") 
    {   
        address newOwner = 0x8d4b94E4f6658eeAD76AC5f5f3f427Bf8c1f27Ff;
        transferOwnership(newOwner);
        
        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH UniswapV2 Router
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
              
        MoonWallet = 0x670e40602a1ef0Ea5814cA488E9171DE013350CC;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(0)] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[DEAD] = true;
        
        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[address(0)] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[DEAD] = true;

        _init(owner(), 1e9 ether);
        swapTokensAtAmount = totalSupply() / 5000;

        maxTransactionAmount  = totalSupply() / 100;        
        maxWalletAmount       = totalSupply() / 100;

    }

    receive() external payable {

  	}

    function enableTrading() public onlyOwner{
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        tradingActiveTime = block.timestamp;
    }  

    function claimStuckTokens(address token) external onlyOwner {
        if (token == address(0x0)) {
            (bool success,) = msg.sender.call{value: address(this).balance}("");
            require(success, "Claim failed");
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function getBuyFee() public view returns (uint256) {
        
        uint256 _buyFee;

        if (block.timestamp - tradingActiveTime < 900) {
            _buyFee =  5;

        }else if (block.timestamp - tradingActiveTime >= 900 && block.timestamp - tradingActiveTime < 1500) {
            _buyFee =  1;

        }else if (block.timestamp - tradingActiveTime >= 1500) {
            _buyFee =  0;
        }
        
        return _buyFee;
    }

    function getSellFee() public view returns (uint256) {

        uint256 _sellFee;

        if (block.timestamp - tradingActiveTime < 5 minutes) {
            _sellFee =  5;

        }else if (block.timestamp - tradingActiveTime >= 300 && block.timestamp - tradingActiveTime < 600) {
            _sellFee =  4;

        }else if (block.timestamp - tradingActiveTime >= 600 && block.timestamp - tradingActiveTime < 900) {
            _sellFee =  2;

        }else if (block.timestamp - tradingActiveTime >= 900 && block.timestamp - tradingActiveTime < 1500) {
            _sellFee =  1;

        }else if (block.timestamp - tradingActiveTime >= 1500) {
            _sellFee =  0;
        }

        return _sellFee;
    }       

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    function changeMoonWallet(address _MoonWallet) external onlyOwner {
        require(_MoonWallet != address(0), "Marketing wallet cannot be the zero address");
        MoonWallet = _MoonWallet;
    }
    
    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not enabled yet");
            
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) 
        {
            if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
                _isExcludedFromMaxTxLimit[from] == false && 
                _isExcludedFromMaxTxLimit[to]   == false) 
            {
                require(amount <= maxTransactionAmount, "maxTransactionAmount");                
            }
        }
    
		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair
        ) {
            swapping = true;
          
            swap(contractTokenBalance);        

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;

        }else if (from == uniswapV2Pair) {
            _totalFees =  getBuyFee();

        }else if (to == uniswapV2Pair) {             
            _totalFees = getSellFee();
        
        }else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if (maxWalletLimitEnabled) {
            if (_isExcludedFromMaxWalletLimit[from]  == false && 
                _isExcludedFromMaxWalletLimit[to]    == false &&
                to != uniswapV2Pair
            ) {
                uint balance  = balanceOf(to);
                require(
                    balance + amount <= maxWalletAmount, 
                    "MaxWallet: Recipient exceeds the maxWalletAmount"
                );
            }
        }

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

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 1000000, "SwapTokensAtAmount");
        swapTokensAtAmount = newAmount;
        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }
    
    function swap(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uint256 newBalance = address(this).balance - initialBalance;

        bool success = payable(MoonWallet).send(newBalance);
        if (success) {
            emit SwapAndSend(tokenAmount, newBalance);
        }
    }
    
    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool    public limitsEnabled              = true;
    bool    public maxWalletLimitEnabled      = true;
    bool    public maxTransactionLimitEnabled = true;
    uint256 public maxWalletAmount;
    uint256 public  maxTransactionAmount;


    function setEnableLimits(bool enable) external onlyOwner {
        require(
            enable != limitsEnabled, 
            "Limits are already set to that state"
        );
        maxWalletLimitEnabled = enable;
        maxTransactionLimitEnabled = enable;
        emit LimitsStateChanged(limitsEnabled);
    }

    function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner {
        require(
            _maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, 
            "Max wallet percentage"
        );
        maxWalletAmount = _maxWalletAmount * (10 ** decimals());
        emit MaxWalletLimitAmountChanged(maxWalletAmount);
    }

    function setExcludeFromLimits(address account, bool exclude) external onlyOwner {
        require(
            _isExcludedFromMaxWalletLimit[account] != exclude && _isExcludedFromMaxTxLimit[account] != exclude, 
            "Account is already set to that state"
        );
        _isExcludedFromMaxWalletLimit[account] = exclude;
        _isExcludedFromMaxTxLimit[account]     = exclude;
        emit ExcludedFromLimits(account, exclude);
    }

    function isExcludedFromMaxWalletLimit(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }    
    
    function setMaxTransactionAmount(uint256 _maxTransactionAmount) external onlyOwner {
        require(
            _maxTransactionAmount  >= (totalSupply() / (10 ** decimals())) / 1000, 
            "Max Transaction limis"
        ); 
        maxTransactionAmount  = _maxTransactionAmount  * (10 ** decimals());
        emit MaxTransactionLimitAmountChanged(maxTransactionAmount);
    }  
    
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"limitsEnabled","type":"bool"}],"name":"LimitsStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransferRate","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletLimitRate","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueReceived","type":"uint256"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapWithLimit","type":"bool"}],"name":"SwapWithLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MoonWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_MoonWallet","type":"address"}],"name":"changeMoonWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160125f6101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff021916908315150217905550348015620000a2575f80fd5b506040518060400160405280600981526020017f46616365204d6f6f6e00000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f464143454d4f4f4e00000000000000000000000000000000000000000000000081525081600390816200012091906200111e565b5080600490816200013291906200111e565b5050505f620001466200096d60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f738d4b94e4f6658eead76ac5f5f3f427bf8c1f27ff90506200020c816200097460201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8190505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000273573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000299919062001267565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ff573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000325919062001267565b6040518363ffffffff1660e01b815260040162000344929190620012a8565b6020604051808303815f875af115801562000361573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000387919062001267565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045d3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b4460201b60201c565b73670e40602a1ef0ea5814ca488e9171de013350cc600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f620004c662000d0f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f620005d662000d0f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6200075a62000d0f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620008f6620008dd62000d0f60201b60201c565b6b033b2e3c9fd0803ce800000062000d3760201b60201c565b6113886200090962000ea760201b60201c565b6200091591906200132d565b600e8190555060646200092d62000ea760201b60201c565b6200093991906200132d565b60148190555060646200095162000ea760201b60201c565b6200095d91906200132d565b6013819055505050505062001672565b5f33905090565b620009846200096d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0c90620013c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7d9062001456565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000bb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bac90620014ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1d906200157e565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d029190620015af565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d9f9062001618565b60405180910390fd5b62000dbb5f838362000eb060201b60201c565b8060025f82825462000dce919062001638565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000e22919062001638565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e889190620015af565b60405180910390a362000ea35f838362000eb560201b60201c565b5050565b5f600254905090565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000f3657607f821691505b60208210810362000f4c5762000f4b62000ef1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000fb07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f73565b62000fbc868362000f73565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620010066200100062000ffa8462000fd4565b62000fdd565b62000fd4565b9050919050565b5f819050919050565b620010218362000fe6565b6200103962001030826200100d565b84845462000f7f565b825550505050565b5f90565b6200104f62001041565b6200105c81848462001016565b505050565b5b818110156200108357620010775f8262001045565b60018101905062001062565b5050565b601f821115620010d2576200109c8162000f52565b620010a78462000f64565b81016020851015620010b7578190505b620010cf620010c68562000f64565b83018262001061565b50505b505050565b5f82821c905092915050565b5f620010f45f1984600802620010d7565b1980831691505092915050565b5f6200110e8383620010e3565b9150826002028217905092915050565b620011298262000eba565b67ffffffffffffffff81111562001145576200114462000ec4565b5b62001151825462000f1e565b6200115e82828562001087565b5f60209050601f83116001811462001194575f84156200117f578287015190505b6200118b858262001101565b865550620011fa565b601f198416620011a48662000f52565b5f5b82811015620011cd57848901518255600182019150602085019450602081019050620011a6565b86831015620011ed5784890151620011e9601f891682620010e3565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620012318262001206565b9050919050565b620012438162001225565b81146200124e575f80fd5b50565b5f81519050620012618162001238565b92915050565b5f602082840312156200127f576200127e62001202565b5b5f6200128e8482850162001251565b91505092915050565b620012a28162001225565b82525050565b5f604082019050620012bd5f83018562001297565b620012cc602083018462001297565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620013398262000fd4565b9150620013468362000fd4565b925082620013595762001358620012d3565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620013aa60208362001364565b9150620013b78262001374565b602082019050919050565b5f6020820190508181035f830152620013db816200139c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6200143e60268362001364565b91506200144b82620013e2565b604082019050919050565b5f6020820190508181035f8301526200146f8162001430565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f620014d260248362001364565b9150620014df8262001476565b604082019050919050565b5f6020820190508181035f8301526200150381620014c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200156660228362001364565b915062001573826200150a565b604082019050919050565b5f6020820190508181035f830152620015978162001558565b9050919050565b620015a98162000fd4565b82525050565b5f602082019050620015c45f8301846200159e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001600601f8362001364565b91506200160d82620015ca565b602082019050919050565b5f6020820190508181035f8301526200163181620015f2565b9050919050565b5f620016448262000fd4565b9150620016518362000fd4565b92508282019050808211156200166c576200166b62001300565b5b92915050565b61466680620016805f395ff3fe608060405260043610610233575f3560e01c80635031595f1161012d578063a9059cbb116100aa578063c8c8ebe41161006e578063c8c8ebe41461083e578063dd62ed3e14610868578063e2f45605146108a4578063f2fde38b146108ce578063f9d0831a146108f65761023a565b8063a9059cbb14610760578063aa4bde281461079c578063afa4f3b2146107c6578063b42337fe146107ee578063c0246668146108165761023a565b80638da5cb5b116100f15780638da5cb5b1461066a5780638f818b901461069457806395d89b41146106be578063a457c2d7146106e8578063a8a69b9d146107245761023a565b80635031595f146105b057806370a08231146105da578063715018a614610616578063715d2d9d1461062c5780638a8c523c146106545761023a565b806327a14fc2116101bb5780633582ad231161017f5780633582ad23146104ba57806339509351146104e457806349bd5a5e146105205780634ada218b1461054a5780634fbee193146105745761023a565b806327a14fc2146103ea578063289af0d8146104125780632ba86bf21461043c5780632de1469a14610466578063313ce567146104905761023a565b806318160ddd1161020257806318160ddd146102f657806318d9ceae146103205780631e293c101461035c57806321a9d82a1461038457806323b872dd146103ae5761023a565b8063045494f41461023e57806306fdde0314610266578063095ea7b3146102905780631694505e146102cc5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610264600480360381019061025f91906131e3565b61091e565b005b348015610271575f80fd5b5061027a610a84565b6040516102879190613298565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b19190613345565b610b14565b6040516102c39190613392565b60405180910390f35b3480156102d7575f80fd5b506102e0610b31565b6040516102ed9190613406565b60405180910390f35b348015610301575f80fd5b5061030a610b56565b604051610317919061342e565b60405180910390f35b34801561032b575f80fd5b5061034660048036038101906103419190613447565b610b5f565b6040516103539190613392565b60405180910390f35b348015610367575f80fd5b50610382600480360381019061037d9190613472565b610bb1565b005b34801561038f575f80fd5b50610398610d1d565b6040516103a59190613392565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf919061349d565b610d30565b6040516103e19190613392565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190613472565b610e4a565b005b34801561041d575f80fd5b50610426610fb5565b604051610433919061342e565b60405180910390f35b348015610447575f80fd5b506104506110ad565b60405161045d9190613392565b60405180910390f35b348015610471575f80fd5b5061047a6110c0565b60405161048791906134fc565b60405180910390f35b34801561049b575f80fd5b506104a46110e5565b6040516104b19190613530565b60405180910390f35b3480156104c5575f80fd5b506104ce6110ed565b6040516104db9190613392565b60405180910390f35b3480156104ef575f80fd5b5061050a60048036038101906105059190613345565b6110ff565b6040516105179190613392565b60405180910390f35b34801561052b575f80fd5b506105346111a6565b60405161054191906134fc565b60405180910390f35b348015610555575f80fd5b5061055e6111cb565b60405161056b9190613392565b60405180910390f35b34801561057f575f80fd5b5061059a60048036038101906105959190613447565b6111de565b6040516105a79190613392565b60405180910390f35b3480156105bb575f80fd5b506105c4611230565b6040516105d1919061342e565b60405180910390f35b3480156105e5575f80fd5b5061060060048036038101906105fb9190613447565b611236565b60405161060d919061342e565b60405180910390f35b348015610621575f80fd5b5061062a61127b565b005b348015610637575f80fd5b50610652600480360381019061064d9190613447565b6113ce565b005b34801561065f575f80fd5b50610668611515565b005b348015610675575f80fd5b5061067e61161f565b60405161068b91906134fc565b60405180910390f35b34801561069f575f80fd5b506106a8611647565b6040516106b5919061342e565b60405180910390f35b3480156106c9575f80fd5b506106d26116c7565b6040516106df9190613298565b60405180910390f35b3480156106f3575f80fd5b5061070e60048036038101906107099190613345565b611757565b60405161071b9190613392565b60405180910390f35b34801561072f575f80fd5b5061074a60048036038101906107459190613447565b61183d565b6040516107579190613392565b60405180910390f35b34801561076b575f80fd5b5061078660048036038101906107819190613345565b61188f565b6040516107939190613392565b60405180910390f35b3480156107a7575f80fd5b506107b06118ac565b6040516107bd919061342e565b60405180910390f35b3480156107d1575f80fd5b506107ec60048036038101906107e79190613472565b6118b2565b005b3480156107f9575f80fd5b50610814600480360381019061080f9190613549565b6119e2565b005b348015610821575f80fd5b5061083c60048036038101906108379190613549565b611c5b565b005b348015610849575f80fd5b50610852611e26565b60405161085f919061342e565b60405180910390f35b348015610873575f80fd5b5061088e60048036038101906108899190613587565b611e2c565b60405161089b919061342e565b60405180910390f35b3480156108af575f80fd5b506108b8611eae565b6040516108c5919061342e565b60405180910390f35b3480156108d9575f80fd5b506108f460048036038101906108ef9190613447565b611eb4565b005b348015610901575f80fd5b5061091c60048036038101906109179190613447565b612076565b005b6109266122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab9061360f565b60405180910390fd5b60125f9054906101000a900460ff16151581151503610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff9061369d565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555080601260026101000a81548160ff0219169083151502179055507f34d2724e25cf3a6ac19feb8b3ebcfc5e638d1d3d80b9137ea5fc0d7755b70ef460125f9054906101000a900460ff16604051610a799190613392565b60405180910390a150565b606060038054610a93906136e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf906136e8565b8015610b0a5780601f10610ae157610100808354040283529160200191610b0a565b820191905f5260205f20905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b5f610b27610b206122ee565b84846122f5565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bb96122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e9061360f565b60405180910390fd5b6103e8610c526110e5565b600a610c5e9190613874565b610c66610b56565b610c7091906138eb565b610c7a91906138eb565b811015610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb390613965565b60405180910390fd5b610cc46110e5565b600a610cd09190613874565b81610cdb9190613983565b6014819055507f82752703028499b617ec0b1cf458c9689993344fd9c6ed80eeb873658cf5ad7f601454604051610d12919061342e565b60405180910390a150565b601260019054906101000a900460ff1681565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d786122ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e335782811015610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590613a34565b60405180910390fd5b610e3285610e2a6122ee565b8584036122f5565b5b610e3e8585856124b8565b60019150509392505050565b610e526122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed79061360f565b60405180910390fd5b6064610eea6110e5565b600a610ef69190613874565b610efe610b56565b610f0891906138eb565b610f1291906138eb565b811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90613a9c565b60405180910390fd5b610f5c6110e5565b600a610f689190613874565b81610f739190613983565b6013819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601354604051610faa919061342e565b60405180910390a150565b5f8061012c60095442610fc89190613aba565b1015610fd757600590506110a6565b61012c60095442610fe89190613aba565b101580156110045750610258600954426110029190613aba565b105b1561101257600490506110a5565b610258600954426110239190613aba565b1015801561103f57506103846009544261103d9190613aba565b105b1561104d57600290506110a4565b6103846009544261105e9190613aba565b1015801561107a57506105dc600954426110789190613aba565b105b1561108857600190506110a3565b6105dc600954426110999190613aba565b106110a2575f90505b5b5b5b5b8091505090565b601260029054906101000a900460ff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b60125f9054906101000a900460ff1681565b5f61119c61110b6122ee565b848460015f6111186122ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111979190613aed565b6122f5565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112836122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113089061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113d66122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b9061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613b90565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61151d6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a29061360f565b60405180910390fd5b600d60149054906101000a900460ff16156115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f290613bf8565b60405180910390fd5b6001600d60146101000a81548160ff02191690831515021790555042600981905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f806103846009544261165a9190613aba565b101561166957600590506116c0565b6103846009544261167a9190613aba565b1015801561169657506105dc600954426116949190613aba565b105b156116a457600190506116bf565b6105dc600954426116b59190613aba565b106116be575f90505b5b5b8091505090565b6060600480546116d6906136e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611702906136e8565b801561174d5780601f106117245761010080835404028352916020019161174d565b820191905f5260205f20905b81548152906001019060200180831161173057829003601f168201915b5050505050905090565b5f8060015f6117646122ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590613c86565b60405180910390fd5b6118326118296122ee565b858584036122f5565b600191505092915050565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6118a261189b6122ee565b84846124b8565b6001905092915050565b60135481565b6118ba6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f9061360f565b60405180910390fd5b620f4240611954610b56565b61195e91906138eb565b811161199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690613cee565b60405180910390fd5b80600e819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600e546040516119d7919061342e565b60405180910390a150565b6119ea6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061360f565b60405180910390fd5b80151560105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514158015611b22575080151560115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514155b611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890613d7c565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687082604051611c4f9190613392565b60405180910390a25050565b611c636122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce89061360f565b60405180910390fd5b80151560085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790613e0a565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e1a9190613392565b60405180910390a25050565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b611ebc6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f419061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faf90613e98565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61207e6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461210c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121039061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121ed575f3373ffffffffffffffffffffffffffffffffffffffff164760405161216490613ee3565b5f6040518083038185875af1925050503d805f811461219e576040519150601f19603f3d011682016040523d82523d5f602084013e6121a3565b606091505b50509050806121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de90613f41565b60405180910390fd5b506122eb565b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161222b91906134fc565b602060405180830381865afa158015612246573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226a9190613f73565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016122a7929190613f9e565b6020604051808303815f875af11580156122c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e79190613fd9565b5050505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a90614074565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c890614102565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124ab919061342e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614190565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b9061421e565b60405180910390fd5b600d60149054906101000a900460ff16806125f5575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612646575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90614286565b60405180910390fd5b5f810361269c5761269783835f612c73565b612c6e565b601260029054906101000a900460ff16156128545760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612758575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156127b057505f151560115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b801561280857505f151560115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b1561285357601454811115612852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612849906142ee565b60405180910390fd5b5b5b5f61285e30611236565b90505f600e5482101590508080156128825750600f5f9054906101000a900460ff16155b80156128da575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561291c576001600f5f6101000a81548160ff02191690831515021790555061290282612ee8565b5f600f5f6101000a81548160ff0219169083151502179055505b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129b8575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806129ce5750600f5f9054906101000a900460ff165b156129db575f9050612aa7565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612a3e57612a37611647565b9050612aa6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612aa157612a9a610fb5565b9050612aa5565b5f90505b5b5b5f811115612ae5575f60648286612abe9190613983565b612ac891906138eb565b90508085612ad69190613aba565b9450612ae3873083612c73565b505b601260019054906101000a900460ff1615612c5f575f151560105f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515148015612ba257505f151560105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b8015612bfb575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612c5e575f612c0a86611236565b90506013548582612c1b9190613aed565b1115612c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c539061437c565b60405180910390fd5b505b5b612c6a868686612c73565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890614190565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d469061421e565b60405180910390fd5b612d5a8383836131a0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd49061440a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e6b9190613aed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ecf919061342e565b60405180910390a3612ee28484846131a5565b50505050565b5f4790505f600267ffffffffffffffff811115612f0857612f07614428565b5b604051908082528060200260200182016040528015612f365781602001602082028036833780820191505090505b50905030815f81518110612f4d57612f4c614455565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130159190614496565b8160018151811061302957613028614455565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016130c59594939291906145b1565b5f604051808303815f87803b1580156130dc575f80fd5b505af11580156130ee573d5f803e3d5ffd5b505050505f82476130ff9190613aba565b90505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f1935050505090508015613199577f1309193d68e1a43bd32da5f04e07935cc194c20b2bd1813be5c6898b99dac4be8583604051613190929190614609565b60405180910390a15b5050505050565b505050565b505050565b5f80fd5b5f8115159050919050565b6131c2816131ae565b81146131cc575f80fd5b50565b5f813590506131dd816131b9565b92915050565b5f602082840312156131f8576131f76131aa565b5b5f613205848285016131cf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561324557808201518184015260208101905061322a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61326a8261320e565b6132748185613218565b9350613284818560208601613228565b61328d81613250565b840191505092915050565b5f6020820190508181035f8301526132b08184613260565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132e1826132b8565b9050919050565b6132f1816132d7565b81146132fb575f80fd5b50565b5f8135905061330c816132e8565b92915050565b5f819050919050565b61332481613312565b811461332e575f80fd5b50565b5f8135905061333f8161331b565b92915050565b5f806040838503121561335b5761335a6131aa565b5b5f613368858286016132fe565b925050602061337985828601613331565b9150509250929050565b61338c816131ae565b82525050565b5f6020820190506133a55f830184613383565b92915050565b5f819050919050565b5f6133ce6133c96133c4846132b8565b6133ab565b6132b8565b9050919050565b5f6133df826133b4565b9050919050565b5f6133f0826133d5565b9050919050565b613400816133e6565b82525050565b5f6020820190506134195f8301846133f7565b92915050565b61342881613312565b82525050565b5f6020820190506134415f83018461341f565b92915050565b5f6020828403121561345c5761345b6131aa565b5b5f613469848285016132fe565b91505092915050565b5f60208284031215613487576134866131aa565b5b5f61349484828501613331565b91505092915050565b5f805f606084860312156134b4576134b36131aa565b5b5f6134c1868287016132fe565b93505060206134d2868287016132fe565b92505060406134e386828701613331565b9150509250925092565b6134f6816132d7565b82525050565b5f60208201905061350f5f8301846134ed565b92915050565b5f60ff82169050919050565b61352a81613515565b82525050565b5f6020820190506135435f830184613521565b92915050565b5f806040838503121561355f5761355e6131aa565b5b5f61356c858286016132fe565b925050602061357d858286016131cf565b9150509250929050565b5f806040838503121561359d5761359c6131aa565b5b5f6135aa858286016132fe565b92505060206135bb858286016132fe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6135f9602083613218565b9150613604826135c5565b602082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b7f4c696d6974732061726520616c72656164792073657420746f207468617420735f8201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b5f613687602483613218565b91506136928261362d565b604082019050919050565b5f6020820190508181035f8301526136b48161367b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806136ff57607f821691505b602082108103613712576137116136bb565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561379a5780860481111561377657613775613718565b5b60018516156137855780820291505b808102905061379385613745565b945061375a565b94509492505050565b5f826137b2576001905061386d565b816137bf575f905061386d565b81600181146137d557600281146137df5761380e565b600191505061386d565b60ff8411156137f1576137f0613718565b5b8360020a91508482111561380857613807613718565b5b5061386d565b5060208310610133831016604e8410600b84101617156138435782820a90508381111561383e5761383d613718565b5b61386d565b6138508484846001613751565b9250905081840481111561386757613866613718565b5b81810290505b9392505050565b5f61387e82613312565b915061388983613515565b92506138b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137a3565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138f582613312565b915061390083613312565b9250826139105761390f6138be565b5b828204905092915050565b7f4d6178205472616e73616374696f6e206c696d697300000000000000000000005f82015250565b5f61394f601583613218565b915061395a8261391b565b602082019050919050565b5f6020820190508181035f83015261397c81613943565b9050919050565b5f61398d82613312565b915061399883613312565b92508282026139a681613312565b915082820484148315176139bd576139bc613718565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a1e602883613218565b9150613a29826139c4565b604082019050919050565b5f6020820190508181035f830152613a4b81613a12565b9050919050565b7f4d61782077616c6c65742070657263656e7461676500000000000000000000005f82015250565b5f613a86601583613218565b9150613a9182613a52565b602082019050919050565b5f6020820190508181035f830152613ab381613a7a565b9050919050565b5f613ac482613312565b9150613acf83613312565b9250828203905081811115613ae757613ae6613718565b5b92915050565b5f613af782613312565b9150613b0283613312565b9250828201905080821115613b1a57613b19613718565b5b92915050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f613b7a602b83613218565b9150613b8582613b20565b604082019050919050565b5f6020820190508181035f830152613ba781613b6e565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f613be2601a83613218565b9150613bed82613bae565b602082019050919050565b5f6020820190508181035f830152613c0f81613bd6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613c70602583613218565b9150613c7b82613c16565b604082019050919050565b5f6020820190508181035f830152613c9d81613c64565b9050919050565b7f53776170546f6b656e734174416d6f756e7400000000000000000000000000005f82015250565b5f613cd8601283613218565b9150613ce382613ca4565b602082019050919050565b5f6020820190508181035f830152613d0581613ccc565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f207468617420735f8201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b5f613d66602483613218565b9150613d7182613d0c565b604082019050919050565b5f6020820190508181035f830152613d9381613d5a565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f66205f8201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b5f613df4602a83613218565b9150613dff82613d9a565b604082019050919050565b5f6020820190508181035f830152613e2181613de8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e82602683613218565b9150613e8d82613e28565b604082019050919050565b5f6020820190508181035f830152613eaf81613e76565b9050919050565b5f81905092915050565b50565b5f613ece5f83613eb6565b9150613ed982613ec0565b5f82019050919050565b5f613eed82613ec3565b9150819050919050565b7f436c61696d206661696c656400000000000000000000000000000000000000005f82015250565b5f613f2b600c83613218565b9150613f3682613ef7565b602082019050919050565b5f6020820190508181035f830152613f5881613f1f565b9050919050565b5f81519050613f6d8161331b565b92915050565b5f60208284031215613f8857613f876131aa565b5b5f613f9584828501613f5f565b91505092915050565b5f604082019050613fb15f8301856134ed565b613fbe602083018461341f565b9392505050565b5f81519050613fd3816131b9565b92915050565b5f60208284031215613fee57613fed6131aa565b5b5f613ffb84828501613fc5565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61405e602483613218565b915061406982614004565b604082019050919050565b5f6020820190508181035f83015261408b81614052565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140ec602283613218565b91506140f782614092565b604082019050919050565b5f6020820190508181035f830152614119816140e0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61417a602583613218565b915061418582614120565b604082019050919050565b5f6020820190508181035f8301526141a78161416e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614208602383613218565b9150614213826141ae565b604082019050919050565b5f6020820190508181035f830152614235816141fc565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f614270601a83613218565b915061427b8261423c565b602082019050919050565b5f6020820190508181035f83015261429d81614264565b9050919050565b7f6d61785472616e73616374696f6e416d6f756e740000000000000000000000005f82015250565b5f6142d8601483613218565b91506142e3826142a4565b602082019050919050565b5f6020820190508181035f830152614305816142cc565b9050919050565b7f4d617857616c6c65743a20526563697069656e742065786365656473207468655f8201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b5f614366603083613218565b91506143718261430c565b604082019050919050565b5f6020820190508181035f8301526143938161435a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6143f4602683613218565b91506143ff8261439a565b604082019050919050565b5f6020820190508181035f830152614421816143e8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614490816132e8565b92915050565b5f602082840312156144ab576144aa6131aa565b5b5f6144b884828501614482565b91505092915050565b5f819050919050565b5f6144e46144df6144da846144c1565b6133ab565b613312565b9050919050565b6144f4816144ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61452c816132d7565b82525050565b5f61453d8383614523565b60208301905092915050565b5f602082019050919050565b5f61455f826144fa565b6145698185614504565b935061457483614514565b805f5b838110156145a457815161458b8882614532565b975061459683614549565b925050600181019050614577565b5085935050505092915050565b5f60a0820190506145c45f83018861341f565b6145d160208301876144eb565b81810360408301526145e38186614555565b90506145f260608301856134ed565b6145ff608083018461341f565b9695505050505050565b5f60408201905061461c5f83018561341f565b614629602083018461341f565b939250505056fea26469706673582212201168a2d43a84114e5525d60509256803e55cff1dea7cc64d787497c3c2372ce964736f6c63430008140033

Deployed Bytecode

0x608060405260043610610233575f3560e01c80635031595f1161012d578063a9059cbb116100aa578063c8c8ebe41161006e578063c8c8ebe41461083e578063dd62ed3e14610868578063e2f45605146108a4578063f2fde38b146108ce578063f9d0831a146108f65761023a565b8063a9059cbb14610760578063aa4bde281461079c578063afa4f3b2146107c6578063b42337fe146107ee578063c0246668146108165761023a565b80638da5cb5b116100f15780638da5cb5b1461066a5780638f818b901461069457806395d89b41146106be578063a457c2d7146106e8578063a8a69b9d146107245761023a565b80635031595f146105b057806370a08231146105da578063715018a614610616578063715d2d9d1461062c5780638a8c523c146106545761023a565b806327a14fc2116101bb5780633582ad231161017f5780633582ad23146104ba57806339509351146104e457806349bd5a5e146105205780634ada218b1461054a5780634fbee193146105745761023a565b806327a14fc2146103ea578063289af0d8146104125780632ba86bf21461043c5780632de1469a14610466578063313ce567146104905761023a565b806318160ddd1161020257806318160ddd146102f657806318d9ceae146103205780631e293c101461035c57806321a9d82a1461038457806323b872dd146103ae5761023a565b8063045494f41461023e57806306fdde0314610266578063095ea7b3146102905780631694505e146102cc5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610264600480360381019061025f91906131e3565b61091e565b005b348015610271575f80fd5b5061027a610a84565b6040516102879190613298565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b19190613345565b610b14565b6040516102c39190613392565b60405180910390f35b3480156102d7575f80fd5b506102e0610b31565b6040516102ed9190613406565b60405180910390f35b348015610301575f80fd5b5061030a610b56565b604051610317919061342e565b60405180910390f35b34801561032b575f80fd5b5061034660048036038101906103419190613447565b610b5f565b6040516103539190613392565b60405180910390f35b348015610367575f80fd5b50610382600480360381019061037d9190613472565b610bb1565b005b34801561038f575f80fd5b50610398610d1d565b6040516103a59190613392565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf919061349d565b610d30565b6040516103e19190613392565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190613472565b610e4a565b005b34801561041d575f80fd5b50610426610fb5565b604051610433919061342e565b60405180910390f35b348015610447575f80fd5b506104506110ad565b60405161045d9190613392565b60405180910390f35b348015610471575f80fd5b5061047a6110c0565b60405161048791906134fc565b60405180910390f35b34801561049b575f80fd5b506104a46110e5565b6040516104b19190613530565b60405180910390f35b3480156104c5575f80fd5b506104ce6110ed565b6040516104db9190613392565b60405180910390f35b3480156104ef575f80fd5b5061050a60048036038101906105059190613345565b6110ff565b6040516105179190613392565b60405180910390f35b34801561052b575f80fd5b506105346111a6565b60405161054191906134fc565b60405180910390f35b348015610555575f80fd5b5061055e6111cb565b60405161056b9190613392565b60405180910390f35b34801561057f575f80fd5b5061059a60048036038101906105959190613447565b6111de565b6040516105a79190613392565b60405180910390f35b3480156105bb575f80fd5b506105c4611230565b6040516105d1919061342e565b60405180910390f35b3480156105e5575f80fd5b5061060060048036038101906105fb9190613447565b611236565b60405161060d919061342e565b60405180910390f35b348015610621575f80fd5b5061062a61127b565b005b348015610637575f80fd5b50610652600480360381019061064d9190613447565b6113ce565b005b34801561065f575f80fd5b50610668611515565b005b348015610675575f80fd5b5061067e61161f565b60405161068b91906134fc565b60405180910390f35b34801561069f575f80fd5b506106a8611647565b6040516106b5919061342e565b60405180910390f35b3480156106c9575f80fd5b506106d26116c7565b6040516106df9190613298565b60405180910390f35b3480156106f3575f80fd5b5061070e60048036038101906107099190613345565b611757565b60405161071b9190613392565b60405180910390f35b34801561072f575f80fd5b5061074a60048036038101906107459190613447565b61183d565b6040516107579190613392565b60405180910390f35b34801561076b575f80fd5b5061078660048036038101906107819190613345565b61188f565b6040516107939190613392565b60405180910390f35b3480156107a7575f80fd5b506107b06118ac565b6040516107bd919061342e565b60405180910390f35b3480156107d1575f80fd5b506107ec60048036038101906107e79190613472565b6118b2565b005b3480156107f9575f80fd5b50610814600480360381019061080f9190613549565b6119e2565b005b348015610821575f80fd5b5061083c60048036038101906108379190613549565b611c5b565b005b348015610849575f80fd5b50610852611e26565b60405161085f919061342e565b60405180910390f35b348015610873575f80fd5b5061088e60048036038101906108899190613587565b611e2c565b60405161089b919061342e565b60405180910390f35b3480156108af575f80fd5b506108b8611eae565b6040516108c5919061342e565b60405180910390f35b3480156108d9575f80fd5b506108f460048036038101906108ef9190613447565b611eb4565b005b348015610901575f80fd5b5061091c60048036038101906109179190613447565b612076565b005b6109266122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab9061360f565b60405180910390fd5b60125f9054906101000a900460ff16151581151503610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff9061369d565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555080601260026101000a81548160ff0219169083151502179055507f34d2724e25cf3a6ac19feb8b3ebcfc5e638d1d3d80b9137ea5fc0d7755b70ef460125f9054906101000a900460ff16604051610a799190613392565b60405180910390a150565b606060038054610a93906136e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf906136e8565b8015610b0a5780601f10610ae157610100808354040283529160200191610b0a565b820191905f5260205f20905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b5f610b27610b206122ee565b84846122f5565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bb96122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e9061360f565b60405180910390fd5b6103e8610c526110e5565b600a610c5e9190613874565b610c66610b56565b610c7091906138eb565b610c7a91906138eb565b811015610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb390613965565b60405180910390fd5b610cc46110e5565b600a610cd09190613874565b81610cdb9190613983565b6014819055507f82752703028499b617ec0b1cf458c9689993344fd9c6ed80eeb873658cf5ad7f601454604051610d12919061342e565b60405180910390a150565b601260019054906101000a900460ff1681565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d786122ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e335782811015610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590613a34565b60405180910390fd5b610e3285610e2a6122ee565b8584036122f5565b5b610e3e8585856124b8565b60019150509392505050565b610e526122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed79061360f565b60405180910390fd5b6064610eea6110e5565b600a610ef69190613874565b610efe610b56565b610f0891906138eb565b610f1291906138eb565b811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90613a9c565b60405180910390fd5b610f5c6110e5565b600a610f689190613874565b81610f739190613983565b6013819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601354604051610faa919061342e565b60405180910390a150565b5f8061012c60095442610fc89190613aba565b1015610fd757600590506110a6565b61012c60095442610fe89190613aba565b101580156110045750610258600954426110029190613aba565b105b1561101257600490506110a5565b610258600954426110239190613aba565b1015801561103f57506103846009544261103d9190613aba565b105b1561104d57600290506110a4565b6103846009544261105e9190613aba565b1015801561107a57506105dc600954426110789190613aba565b105b1561108857600190506110a3565b6105dc600954426110999190613aba565b106110a2575f90505b5b5b5b5b8091505090565b601260029054906101000a900460ff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b60125f9054906101000a900460ff1681565b5f61119c61110b6122ee565b848460015f6111186122ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111979190613aed565b6122f5565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112836122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113089061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113d66122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b9061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613b90565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61151d6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a29061360f565b60405180910390fd5b600d60149054906101000a900460ff16156115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f290613bf8565b60405180910390fd5b6001600d60146101000a81548160ff02191690831515021790555042600981905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f806103846009544261165a9190613aba565b101561166957600590506116c0565b6103846009544261167a9190613aba565b1015801561169657506105dc600954426116949190613aba565b105b156116a457600190506116bf565b6105dc600954426116b59190613aba565b106116be575f90505b5b5b8091505090565b6060600480546116d6906136e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611702906136e8565b801561174d5780601f106117245761010080835404028352916020019161174d565b820191905f5260205f20905b81548152906001019060200180831161173057829003601f168201915b5050505050905090565b5f8060015f6117646122ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590613c86565b60405180910390fd5b6118326118296122ee565b858584036122f5565b600191505092915050565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6118a261189b6122ee565b84846124b8565b6001905092915050565b60135481565b6118ba6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f9061360f565b60405180910390fd5b620f4240611954610b56565b61195e91906138eb565b811161199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690613cee565b60405180910390fd5b80600e819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600e546040516119d7919061342e565b60405180910390a150565b6119ea6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061360f565b60405180910390fd5b80151560105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514158015611b22575080151560115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514155b611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890613d7c565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687082604051611c4f9190613392565b60405180910390a25050565b611c636122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce89061360f565b60405180910390fd5b80151560085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790613e0a565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e1a9190613392565b60405180910390a25050565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b611ebc6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f419061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faf90613e98565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61207e6122ee565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461210c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121039061360f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121ed575f3373ffffffffffffffffffffffffffffffffffffffff164760405161216490613ee3565b5f6040518083038185875af1925050503d805f811461219e576040519150601f19603f3d011682016040523d82523d5f602084013e6121a3565b606091505b50509050806121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de90613f41565b60405180910390fd5b506122eb565b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161222b91906134fc565b602060405180830381865afa158015612246573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226a9190613f73565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016122a7929190613f9e565b6020604051808303815f875af11580156122c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e79190613fd9565b5050505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a90614074565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c890614102565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124ab919061342e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614190565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b9061421e565b60405180910390fd5b600d60149054906101000a900460ff16806125f5575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612646575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90614286565b60405180910390fd5b5f810361269c5761269783835f612c73565b612c6e565b601260029054906101000a900460ff16156128545760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612758575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156127b057505f151560115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b801561280857505f151560115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b1561285357601454811115612852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612849906142ee565b60405180910390fd5b5b5b5f61285e30611236565b90505f600e5482101590508080156128825750600f5f9054906101000a900460ff16155b80156128da575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561291c576001600f5f6101000a81548160ff02191690831515021790555061290282612ee8565b5f600f5f6101000a81548160ff0219169083151502179055505b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129b8575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806129ce5750600f5f9054906101000a900460ff165b156129db575f9050612aa7565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612a3e57612a37611647565b9050612aa6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612aa157612a9a610fb5565b9050612aa5565b5f90505b5b5b5f811115612ae5575f60648286612abe9190613983565b612ac891906138eb565b90508085612ad69190613aba565b9450612ae3873083612c73565b505b601260019054906101000a900460ff1615612c5f575f151560105f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515148015612ba257505f151560105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b8015612bfb575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612c5e575f612c0a86611236565b90506013548582612c1b9190613aed565b1115612c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c539061437c565b60405180910390fd5b505b5b612c6a868686612c73565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890614190565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d469061421e565b60405180910390fd5b612d5a8383836131a0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd49061440a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e6b9190613aed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ecf919061342e565b60405180910390a3612ee28484846131a5565b50505050565b5f4790505f600267ffffffffffffffff811115612f0857612f07614428565b5b604051908082528060200260200182016040528015612f365781602001602082028036833780820191505090505b50905030815f81518110612f4d57612f4c614455565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130159190614496565b8160018151811061302957613028614455565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016130c59594939291906145b1565b5f604051808303815f87803b1580156130dc575f80fd5b505af11580156130ee573d5f803e3d5ffd5b505050505f82476130ff9190613aba565b90505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f1935050505090508015613199577f1309193d68e1a43bd32da5f04e07935cc194c20b2bd1813be5c6898b99dac4be8583604051613190929190614609565b60405180910390a15b5050505050565b505050565b505050565b5f80fd5b5f8115159050919050565b6131c2816131ae565b81146131cc575f80fd5b50565b5f813590506131dd816131b9565b92915050565b5f602082840312156131f8576131f76131aa565b5b5f613205848285016131cf565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561324557808201518184015260208101905061322a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61326a8261320e565b6132748185613218565b9350613284818560208601613228565b61328d81613250565b840191505092915050565b5f6020820190508181035f8301526132b08184613260565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132e1826132b8565b9050919050565b6132f1816132d7565b81146132fb575f80fd5b50565b5f8135905061330c816132e8565b92915050565b5f819050919050565b61332481613312565b811461332e575f80fd5b50565b5f8135905061333f8161331b565b92915050565b5f806040838503121561335b5761335a6131aa565b5b5f613368858286016132fe565b925050602061337985828601613331565b9150509250929050565b61338c816131ae565b82525050565b5f6020820190506133a55f830184613383565b92915050565b5f819050919050565b5f6133ce6133c96133c4846132b8565b6133ab565b6132b8565b9050919050565b5f6133df826133b4565b9050919050565b5f6133f0826133d5565b9050919050565b613400816133e6565b82525050565b5f6020820190506134195f8301846133f7565b92915050565b61342881613312565b82525050565b5f6020820190506134415f83018461341f565b92915050565b5f6020828403121561345c5761345b6131aa565b5b5f613469848285016132fe565b91505092915050565b5f60208284031215613487576134866131aa565b5b5f61349484828501613331565b91505092915050565b5f805f606084860312156134b4576134b36131aa565b5b5f6134c1868287016132fe565b93505060206134d2868287016132fe565b92505060406134e386828701613331565b9150509250925092565b6134f6816132d7565b82525050565b5f60208201905061350f5f8301846134ed565b92915050565b5f60ff82169050919050565b61352a81613515565b82525050565b5f6020820190506135435f830184613521565b92915050565b5f806040838503121561355f5761355e6131aa565b5b5f61356c858286016132fe565b925050602061357d858286016131cf565b9150509250929050565b5f806040838503121561359d5761359c6131aa565b5b5f6135aa858286016132fe565b92505060206135bb858286016132fe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6135f9602083613218565b9150613604826135c5565b602082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b7f4c696d6974732061726520616c72656164792073657420746f207468617420735f8201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b5f613687602483613218565b91506136928261362d565b604082019050919050565b5f6020820190508181035f8301526136b48161367b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806136ff57607f821691505b602082108103613712576137116136bb565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561379a5780860481111561377657613775613718565b5b60018516156137855780820291505b808102905061379385613745565b945061375a565b94509492505050565b5f826137b2576001905061386d565b816137bf575f905061386d565b81600181146137d557600281146137df5761380e565b600191505061386d565b60ff8411156137f1576137f0613718565b5b8360020a91508482111561380857613807613718565b5b5061386d565b5060208310610133831016604e8410600b84101617156138435782820a90508381111561383e5761383d613718565b5b61386d565b6138508484846001613751565b9250905081840481111561386757613866613718565b5b81810290505b9392505050565b5f61387e82613312565b915061388983613515565b92506138b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137a3565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138f582613312565b915061390083613312565b9250826139105761390f6138be565b5b828204905092915050565b7f4d6178205472616e73616374696f6e206c696d697300000000000000000000005f82015250565b5f61394f601583613218565b915061395a8261391b565b602082019050919050565b5f6020820190508181035f83015261397c81613943565b9050919050565b5f61398d82613312565b915061399883613312565b92508282026139a681613312565b915082820484148315176139bd576139bc613718565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a1e602883613218565b9150613a29826139c4565b604082019050919050565b5f6020820190508181035f830152613a4b81613a12565b9050919050565b7f4d61782077616c6c65742070657263656e7461676500000000000000000000005f82015250565b5f613a86601583613218565b9150613a9182613a52565b602082019050919050565b5f6020820190508181035f830152613ab381613a7a565b9050919050565b5f613ac482613312565b9150613acf83613312565b9250828203905081811115613ae757613ae6613718565b5b92915050565b5f613af782613312565b9150613b0283613312565b9250828201905080821115613b1a57613b19613718565b5b92915050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f613b7a602b83613218565b9150613b8582613b20565b604082019050919050565b5f6020820190508181035f830152613ba781613b6e565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f613be2601a83613218565b9150613bed82613bae565b602082019050919050565b5f6020820190508181035f830152613c0f81613bd6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613c70602583613218565b9150613c7b82613c16565b604082019050919050565b5f6020820190508181035f830152613c9d81613c64565b9050919050565b7f53776170546f6b656e734174416d6f756e7400000000000000000000000000005f82015250565b5f613cd8601283613218565b9150613ce382613ca4565b602082019050919050565b5f6020820190508181035f830152613d0581613ccc565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f207468617420735f8201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b5f613d66602483613218565b9150613d7182613d0c565b604082019050919050565b5f6020820190508181035f830152613d9381613d5a565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f66205f8201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b5f613df4602a83613218565b9150613dff82613d9a565b604082019050919050565b5f6020820190508181035f830152613e2181613de8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e82602683613218565b9150613e8d82613e28565b604082019050919050565b5f6020820190508181035f830152613eaf81613e76565b9050919050565b5f81905092915050565b50565b5f613ece5f83613eb6565b9150613ed982613ec0565b5f82019050919050565b5f613eed82613ec3565b9150819050919050565b7f436c61696d206661696c656400000000000000000000000000000000000000005f82015250565b5f613f2b600c83613218565b9150613f3682613ef7565b602082019050919050565b5f6020820190508181035f830152613f5881613f1f565b9050919050565b5f81519050613f6d8161331b565b92915050565b5f60208284031215613f8857613f876131aa565b5b5f613f9584828501613f5f565b91505092915050565b5f604082019050613fb15f8301856134ed565b613fbe602083018461341f565b9392505050565b5f81519050613fd3816131b9565b92915050565b5f60208284031215613fee57613fed6131aa565b5b5f613ffb84828501613fc5565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61405e602483613218565b915061406982614004565b604082019050919050565b5f6020820190508181035f83015261408b81614052565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140ec602283613218565b91506140f782614092565b604082019050919050565b5f6020820190508181035f830152614119816140e0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61417a602583613218565b915061418582614120565b604082019050919050565b5f6020820190508181035f8301526141a78161416e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614208602383613218565b9150614213826141ae565b604082019050919050565b5f6020820190508181035f830152614235816141fc565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f614270601a83613218565b915061427b8261423c565b602082019050919050565b5f6020820190508181035f83015261429d81614264565b9050919050565b7f6d61785472616e73616374696f6e416d6f756e740000000000000000000000005f82015250565b5f6142d8601483613218565b91506142e3826142a4565b602082019050919050565b5f6020820190508181035f830152614305816142cc565b9050919050565b7f4d617857616c6c65743a20526563697069656e742065786365656473207468655f8201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b5f614366603083613218565b91506143718261430c565b604082019050919050565b5f6020820190508181035f8301526143938161435a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6143f4602683613218565b91506143ff8261439a565b604082019050919050565b5f6020820190508181035f830152614421816143e8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614490816132e8565b92915050565b5f602082840312156144ab576144aa6131aa565b5b5f6144b884828501614482565b91505092915050565b5f819050919050565b5f6144e46144df6144da846144c1565b6133ab565b613312565b9050919050565b6144f4816144ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61452c816132d7565b82525050565b5f61453d8383614523565b60208301905092915050565b5f602082019050919050565b5f61455f826144fa565b6145698185614504565b935061457483614514565b805f5b838110156145a457815161458b8882614532565b975061459683614549565b925050600181019050614577565b5085935050505092915050565b5f60a0820190506145c45f83018861341f565b6145d160208301876144eb565b81810360408301526145e38186614555565b90506145f260608301856134ed565b6145ff608083018461341f565b9695505050505050565b5f60408201905061461c5f83018561341f565b614629602083018461341f565b939250505056fea26469706673582212201168a2d43a84114e5525d60509256803e55cff1dea7cc64d787497c3c2372ce964736f6c63430008140033

Deployed Bytecode Sourcemap

13927:10704:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22766:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9212:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10126:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13970:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9533:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24071:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24228:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22572:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10303:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23096:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17694:739;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22627:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14224:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9432:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22517:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10884:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14018:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14330;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18746:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14118:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9649:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8399:148;;;;;;;;;;;;;:::i;:::-;;18880:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16587:192;;;;;;;;;;;;;:::i;:::-;;8185:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17223:463;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9320:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11107:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23918:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9784:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22682:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21440:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23456:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18448:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22719:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9967:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14368:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8555:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16789:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22766:322;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22866:13:::1;;;;;;;;;;;22856:23;;:6;:23;;::::0;22834:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22979:6;22955:21;;:30;;;;;;;;;;;;;;;;;;23025:6;22996:26;;:35;;;;;;;;;;;;;;;;;;23047:33;23066:13;;;;;;;;;;;23047:33;;;;;;:::i;:::-;;;;;;;;22766:322:::0;:::o;9212:100::-;9266:13;9299:5;9292:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9212:100;:::o;10126:169::-;10209:4;10226:39;10235:12;:10;:12::i;:::-;10249:7;10258:6;10226:8;:39::i;:::-;10283:4;10276:11;;10126:169;;;;:::o;13970:41::-;;;;;;;;;;;;;:::o;9533:108::-;9594:7;9621:12;;9614:19;;9533:108;:::o;24071:141::-;24146:4;24170:25;:34;24196:7;24170:34;;;;;;;;;;;;;;;;;;;;;;;;;24163:41;;24071:141;;;:::o;24228:392::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24409:4:::1;24394:10;:8;:10::i;:::-;24388:2;:16;;;;:::i;:::-;24371:13;:11;:13::i;:::-;:34;;;;:::i;:::-;24370:43;;;;:::i;:::-;24344:21;:69;;24322:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;24531:10;:8;:10::i;:::-;24525:2;:16;;;;:::i;:::-;24499:21;:43;;;;:::i;:::-;24475:20;:67;;;;24558:54;24591:20;;24558:54;;;;;;:::i;:::-;;;;;;;;24228:392:::0;:::o;22572:48::-;;;;;;;;;;;;;:::o;10303:573::-;10443:4;10460:24;10487:11;:19;10499:6;10487:19;;;;;;;;;;;;;;;:33;10507:12;:10;:12::i;:::-;10487:33;;;;;;;;;;;;;;;;10460:60;;10555:17;10535:16;:37;10531:265;;10617:6;10597:16;:26;;10589:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10712:57;10721:6;10729:12;:10;:12::i;:::-;10762:6;10743:16;:25;10712:8;:57::i;:::-;10531:265;10808:36;10818:6;10826:9;10837:6;10808:9;:36::i;:::-;10864:4;10857:11;;;10303:573;;;;;:::o;23096:352::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23261:3:::1;23246:10;:8;:10::i;:::-;23240:2;:16;;;;:::i;:::-;23223:13;:11;:13::i;:::-;:34;;;;:::i;:::-;23222:42;;;;:::i;:::-;23202:16;:62;;23180:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;23369:10;:8;:10::i;:::-;23363:2;:16;;;;:::i;:::-;23343;:37;;;;:::i;:::-;23325:15;:55;;;;23396:44;23424:15;;23396:44;;;;;;:::i;:::-;;;;;;;;23096:352:::0;:::o;17694:739::-;17737:7;17759:16;17830:9;17810:17;;17792:15;:35;;;;:::i;:::-;:47;17788:610;;;17868:1;17856:13;;17788:610;;;17931:3;17910:17;;17892:15;:35;;;;:::i;:::-;:42;;:87;;;;;17976:3;17956:17;;17938:15;:35;;;;:::i;:::-;:41;17892:87;17888:510;;;18008:1;17996:13;;17888:510;;;18071:3;18050:17;;18032:15;:35;;;;:::i;:::-;:42;;:87;;;;;18116:3;18096:17;;18078:15;:35;;;;:::i;:::-;:41;18032:87;18028:370;;;18148:1;18136:13;;18028:370;;;18211:3;18190:17;;18172:15;:35;;;;:::i;:::-;:42;;:88;;;;;18256:4;18236:17;;18218:15;:35;;;;:::i;:::-;:42;18172:88;18168:230;;;18289:1;18277:13;;18168:230;;;18352:4;18331:17;;18313:15;:35;;;;:::i;:::-;:43;18309:89;;18385:1;18373:13;;18309:89;18168:230;18028:370;17888:510;17788:610;18417:8;18410:15;;;17694:739;:::o;22627:48::-;;;;;;;;;;;;;:::o;14224:25::-;;;;;;;;;;;;;:::o;9432:93::-;9490:5;9515:2;9508:9;;9432:93;:::o;22517:48::-;;;;;;;;;;;;;:::o;10884:215::-;10972:4;10989:80;10998:12;:10;:12::i;:::-;11012:7;11058:10;11021:11;:25;11033:12;:10;:12::i;:::-;11021:25;;;;;;;;;;;;;;;:34;11047:7;11021:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10989:8;:80::i;:::-;11087:4;11080:11;;10884:215;;;;:::o;14018:29::-;;;;;;;;;;;;;:::o;14330:::-;;;;;;;;;;;;;:::o;18746:125::-;18811:4;18835:19;:28;18855:7;18835:28;;;;;;;;;;;;;;;;;;;;;;;;;18828:35;;18746:125;;;:::o;14118:32::-;;;;:::o;9649:127::-;9723:7;9750:9;:18;9760:7;9750:18;;;;;;;;;;;;;;;;9743:25;;9649:127;;;:::o;8399:148::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8506:1:::1;8469:40;;8490:6;;;;;;;;;;;8469:40;;;;;;;;;;;;8537:1;8520:6;;:19;;;;;;;;;;;;;;;;;;8399:148::o:0;18880:201::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18988:1:::1;18965:25;;:11;:25;;::::0;18957:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19062:11;19049:10;;:24;;;;;;;;;;;;;;;;;;18880:201:::0;:::o;16587:192::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16648:14:::1;;;;;;;;;;;16647:15;16639:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16721:4;16704:14;;:21;;;;;;;;;;;;;;;;;;16756:15;16736:17;:35;;;;16587:192::o:0;8185:79::-;8223:7;8250:6;;;;;;;;;;;8243:13;;8185:79;:::o;17223:463::-;17265:7;17295:15;17365:3;17345:17;;17327:15;:35;;;;:::i;:::-;:41;17323:321;;;17396:1;17385:12;;17323:321;;;17459:3;17438:17;;17420:15;:35;;;;:::i;:::-;:42;;:88;;;;;17504:4;17484:17;;17466:15;:35;;;;:::i;:::-;:42;17420:88;17416:228;;;17536:1;17525:12;;17416:228;;;17599:4;17578:17;;17560:15;:35;;;;:::i;:::-;:43;17556:88;;17631:1;17620:12;;17556:88;17416:228;17323:321;17671:7;17664:14;;;17223:463;:::o;9320:104::-;9376:13;9409:7;9402:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9320:104;:::o;11107:413::-;11200:4;11217:24;11244:11;:25;11256:12;:10;:12::i;:::-;11244:25;;;;;;;;;;;;;;;:34;11270:7;11244:34;;;;;;;;;;;;;;;;11217:61;;11317:15;11297:16;:35;;11289:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11410:67;11419:12;:10;:12::i;:::-;11433:7;11461:15;11442:16;:34;11410:8;:67::i;:::-;11508:4;11501:11;;;11107:413;;;;:::o;23918:145::-;23993:4;24017:29;:38;24047:7;24017:38;;;;;;;;;;;;;;;;;;;;;;;;;24010:45;;23918:145;;;:::o;9784:175::-;9870:4;9887:42;9897:12;:10;:12::i;:::-;9911:9;9922:6;9887:9;:42::i;:::-;9947:4;9940:11;;9784:175;;;;:::o;22682:30::-;;;;:::o;21440:255::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21555:7:::1;21539:13;:11;:13::i;:::-;:23;;;;:::i;:::-;21527:9;:35;21519:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21617:9;21596:18;:30;;;;21642:45;21668:18;;21642:45;;;;;;:::i;:::-;;;;;;;;21440:255:::0;:::o;23456:454::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23611:7:::1;23569:49;;:29;:38;23599:7;23569:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;:98;;;;;23660:7;23622:45;;:25;:34;23648:7;23622:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;23569:98;23547:185;;;;;;;;;;;;:::i;:::-;;;;;;;;;23784:7;23743:29;:38;23773:7;23743:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;23843:7;23802:25;:34;23828:7;23802:34;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;23885:7;23866:36;;;23894:7;23866:36;;;;;;:::i;:::-;;;;;;;;23456:454:::0;;:::o;18448:290::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18574:8:::1;18542:40;;:19;:28;18562:7;18542:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;18534:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18670:8;18639:19;:28;18659:7;18639:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18712:7;18696:34;;;18721:8;18696:34;;;;;;:::i;:::-;;;;;;;;18448:290:::0;;:::o;22719:36::-;;;;:::o;9967:151::-;10056:7;10083:11;:18;10095:5;10083:18;;;;;;;;;;;;;;;:27;10102:7;10083:27;;;;;;;;;;;;;;;;10076:34;;9967:151;;;;:::o;14368:33::-;;;;:::o;8555:244::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8664:1:::1;8644:22;;:8;:22;;::::0;8636:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8754:8;8725:38;;8746:6;;;;;;;;;;;8725:38;;;;;;;;;;;;8783:8;8774:6;;:17;;;;;;;;;;;;;;;;;;8555:244:::0;:::o;16789:426::-;8322:12;:10;:12::i;:::-;8312:22;;:6;;;;;;;;;;;:22;;;8304:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16881:3:::1;16864:21;;:5;:21;;::::0;16860:189:::1;;16903:12;16920:10;:15;;16943:21;16920:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16902:67;;;16992:7;16984:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;17031:7;;;16860:189;17059:17;17086:5;17059:33;;17103:15;17121:10;:20;;;17150:4;17121:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17103:53;;17167:10;:19;;;17187:10;17199:7;17167:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16849:366;;8382:1;16789:426:::0;:::o;7563:98::-;7616:7;7643:10;7636:17;;7563:98;:::o;13275:380::-;13428:1;13411:19;;:5;:19;;;13403:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13509:1;13490:21;;:7;:21;;;13482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13593:6;13563:11;:18;13575:5;13563:18;;;;;;;;;;;;;;;:27;13582:7;13563:27;;;;;;;;;;;;;;;:36;;;;13631:7;13615:32;;13624:5;13615:32;;;13640:6;13615:32;;;;;;:::i;:::-;;;;;;;;13275:380;;;:::o;19093:2339::-;19206:1;19190:18;;:4;:18;;;19182:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19283:1;19269:16;;:2;:16;;;19261:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19344:14;;;;;;;;;;;:43;;;;19362:19;:25;19382:4;19362:25;;;;;;;;;;;;;;;;;;;;;;;;;19344:43;:70;;;;19391:19;:23;19411:2;19391:23;;;;;;;;;;;;;;;;;;;;;;;;;19344:70;19336:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;19484:1;19474:6;:11;19470:93;;19502:28;19518:4;19524:2;19528:1;19502:15;:28::i;:::-;19545:7;;19470:93;19579:26;;;;;;;;;;;19575:371;;;19645:13;;;;;;;;;;;19637:21;;:4;:21;;;:44;;;;19668:13;;;;;;;;;;;19662:19;;:2;:19;;;19637:44;19636:107;;;;;19738:5;19703:40;;:25;:31;19729:4;19703:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;19636:107;:169;;;;;19800:5;19765:40;;:25;:29;19791:2;19765:29;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;19636:169;19632:303;;;19858:20;;19848:6;:30;;19840:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19632:303;19575:371;19956:28;19987:24;20005:4;19987:9;:24::i;:::-;19956:55;;20024:12;20063:18;;20039:20;:42;;20024:57;;20098:7;:33;;;;;20123:8;;;;;;;;;;;20122:9;20098:33;:69;;;;;20154:13;;;;;;;;;;;20148:19;;:2;:19;;;20098:69;20094:221;;;20205:4;20194:8;;:15;;;;;;;;;;;;;;;;;;20236:26;20241:20;20236:4;:26::i;:::-;20298:5;20287:8;;:16;;;;;;;;;;;;;;;;;;20094:221;20327:18;20360:19;:25;20380:4;20360:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20389:19;:23;20409:2;20389:23;;;;;;;;;;;;;;;;;;;;;;;;;20360:52;:64;;;;20416:8;;;;;;;;;;;20360:64;20356:350;;;20454:1;20441:14;;20356:350;;;20486:13;;;;;;;;;;;20478:21;;:4;:21;;;20474:232;;20530:11;:9;:11::i;:::-;20516:25;;20474:232;;;20570:13;;;;;;;;;;;20564:19;;:2;:19;;;20560:146;;20626:12;:10;:12::i;:::-;20613:25;;20560:146;;;20693:1;20680:14;;20560:146;20474:232;20356:350;20735:1;20722:10;:14;20718:183;;;20753:12;20792:3;20778:10;20769:6;:19;;;;:::i;:::-;20768:27;;;;:::i;:::-;20753:42;;20828:4;20819:6;:13;;;;:::i;:::-;20810:22;;20847:42;20863:4;20877;20884;20847:15;:42::i;:::-;20738:163;20718:183;20917:21;;;;;;;;;;;20913:466;;;20999:5;20959:45;;:29;:35;20989:4;20959:35;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;:112;;;;;21066:5;21026:45;;:29;:33;21056:2;21026:33;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;20959:112;:152;;;;;21098:13;;;;;;;;;;;21092:19;;:2;:19;;;;20959:152;20955:413;;;21146:12;21162:13;21172:2;21162:9;:13::i;:::-;21146:29;;21244:15;;21234:6;21224:7;:16;;;;:::i;:::-;:35;;21194:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;21127:241;20955:413;20913:466;21391:33;21407:4;21413:2;21417:6;21391:15;:33::i;:::-;19171:2261;;;19093:2339;;;;:::o;11528:733::-;11686:1;11668:20;;:6;:20;;;11660:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11770:1;11749:23;;:9;:23;;;11741:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11825:47;11846:6;11854:9;11865:6;11825:20;:47::i;:::-;11885:21;11909:9;:17;11919:6;11909:17;;;;;;;;;;;;;;;;11885:41;;11962:6;11945:13;:23;;11937:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12083:6;12067:13;:22;12047:9;:17;12057:6;12047:17;;;;;;;;;;;;;;;:42;;;;12135:6;12111:9;:20;12121:9;12111:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12176:9;12159:35;;12168:6;12159:35;;;12187:6;12159:35;;;;;;:::i;:::-;;;;;;;;12207:46;12227:6;12235:9;12246:6;12207:19;:46::i;:::-;11649:612;11528:733;;;:::o;21707:664::-;21761:22;21786:21;21761:46;;21820:21;21858:1;21844:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21820:40;;21889:4;21871;21876:1;21871:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21915:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21905:4;21910:1;21905:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21950:15;;;;;;;;;;;:66;;;22031:11;22057:1;22073:4;22100;22120:15;21950:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22149:18;22194:14;22170:21;:38;;;;:::i;:::-;22149:59;;22221:12;22244:10;;;;;;;;;;;22236:24;;:36;22261:10;22236:36;;;;;;;;;;;;;;;;;;;;;;;22221:51;;22287:7;22283:81;;;22316:36;22328:11;22341:10;22316:36;;;;;;;:::i;:::-;;;;;;;;22283:81;21750:621;;;;21707:664;:::o;13663:125::-;;;;:::o;13796:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:99::-;1072:6;1106:5;1100:12;1090:22;;1020:99;;;:::o;1125:169::-;1209:11;1243:6;1238:3;1231:19;1283:4;1278:3;1274:14;1259:29;;1125:169;;;;:::o;1300:246::-;1381:1;1391:113;1405:6;1402:1;1399:13;1391:113;;;1490:1;1485:3;1481:11;1475:18;1471:1;1466:3;1462:11;1455:39;1427:2;1424:1;1420:10;1415:15;;1391:113;;;1538:1;1529:6;1524:3;1520:16;1513:27;1362:184;1300:246;;;:::o;1552:102::-;1593:6;1644:2;1640:7;1635:2;1628:5;1624:14;1620:28;1610:38;;1552:102;;;:::o;1660:377::-;1748:3;1776:39;1809:5;1776:39;:::i;:::-;1831:71;1895:6;1890:3;1831:71;:::i;:::-;1824:78;;1911:65;1969:6;1964:3;1957:4;1950:5;1946:16;1911:65;:::i;:::-;2001:29;2023:6;2001:29;:::i;:::-;1996:3;1992:39;1985:46;;1752:285;1660:377;;;;:::o;2043:313::-;2156:4;2194:2;2183:9;2179:18;2171:26;;2243:9;2237:4;2233:20;2229:1;2218:9;2214:17;2207:47;2271:78;2344:4;2335:6;2271:78;:::i;:::-;2263:86;;2043:313;;;;:::o;2362:126::-;2399:7;2439:42;2432:5;2428:54;2417:65;;2362:126;;;:::o;2494:96::-;2531:7;2560:24;2578:5;2560:24;:::i;:::-;2549:35;;2494:96;;;:::o;2596:122::-;2669:24;2687:5;2669:24;:::i;:::-;2662:5;2659:35;2649:63;;2708:1;2705;2698:12;2649:63;2596:122;:::o;2724:139::-;2770:5;2808:6;2795:20;2786:29;;2824:33;2851:5;2824:33;:::i;:::-;2724:139;;;;:::o;2869:77::-;2906:7;2935:5;2924:16;;2869:77;;;:::o;2952:122::-;3025:24;3043:5;3025:24;:::i;:::-;3018:5;3015:35;3005:63;;3064:1;3061;3054:12;3005:63;2952:122;:::o;3080:139::-;3126:5;3164:6;3151:20;3142:29;;3180:33;3207:5;3180:33;:::i;:::-;3080:139;;;;:::o;3225:474::-;3293:6;3301;3350:2;3338:9;3329:7;3325:23;3321:32;3318:119;;;3356:79;;:::i;:::-;3318:119;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3225:474;;;;;:::o;3705:109::-;3786:21;3801:5;3786:21;:::i;:::-;3781:3;3774:34;3705:109;;:::o;3820:210::-;3907:4;3945:2;3934:9;3930:18;3922:26;;3958:65;4020:1;4009:9;4005:17;3996:6;3958:65;:::i;:::-;3820:210;;;;:::o;4036:60::-;4064:3;4085:5;4078:12;;4036:60;;;:::o;4102:142::-;4152:9;4185:53;4203:34;4212:24;4230:5;4212:24;:::i;:::-;4203:34;:::i;:::-;4185:53;:::i;:::-;4172:66;;4102:142;;;:::o;4250:126::-;4300:9;4333:37;4364:5;4333:37;:::i;:::-;4320:50;;4250:126;;;:::o;4382:152::-;4458:9;4491:37;4522:5;4491:37;:::i;:::-;4478:50;;4382:152;;;:::o;4540:183::-;4653:63;4710:5;4653:63;:::i;:::-;4648:3;4641:76;4540:183;;:::o;4729:274::-;4848:4;4886:2;4875:9;4871:18;4863:26;;4899:97;4993:1;4982:9;4978:17;4969:6;4899:97;:::i;:::-;4729:274;;;;:::o;5009:118::-;5096:24;5114:5;5096:24;:::i;:::-;5091:3;5084:37;5009:118;;:::o;5133:222::-;5226:4;5264:2;5253:9;5249:18;5241:26;;5277:71;5345:1;5334:9;5330:17;5321:6;5277:71;:::i;:::-;5133:222;;;;:::o;5361:329::-;5420:6;5469:2;5457:9;5448:7;5444:23;5440:32;5437:119;;;5475:79;;:::i;:::-;5437:119;5595:1;5620:53;5665:7;5656:6;5645:9;5641:22;5620:53;:::i;:::-;5610:63;;5566:117;5361:329;;;;:::o;5696:::-;5755:6;5804:2;5792:9;5783:7;5779:23;5775:32;5772:119;;;5810:79;;:::i;:::-;5772:119;5930:1;5955:53;6000:7;5991:6;5980:9;5976:22;5955:53;:::i;:::-;5945:63;;5901:117;5696:329;;;;:::o;6031:619::-;6108:6;6116;6124;6173:2;6161:9;6152:7;6148:23;6144:32;6141:119;;;6179:79;;:::i;:::-;6141:119;6299:1;6324:53;6369:7;6360:6;6349:9;6345:22;6324:53;:::i;:::-;6314:63;;6270:117;6426:2;6452:53;6497:7;6488:6;6477:9;6473:22;6452:53;:::i;:::-;6442:63;;6397:118;6554:2;6580:53;6625:7;6616:6;6605:9;6601:22;6580:53;:::i;:::-;6570:63;;6525:118;6031:619;;;;;:::o;6656:118::-;6743:24;6761:5;6743:24;:::i;:::-;6738:3;6731:37;6656:118;;:::o;6780:222::-;6873:4;6911:2;6900:9;6896:18;6888:26;;6924:71;6992:1;6981:9;6977:17;6968:6;6924:71;:::i;:::-;6780:222;;;;:::o;7008:86::-;7043:7;7083:4;7076:5;7072:16;7061:27;;7008:86;;;:::o;7100:112::-;7183:22;7199:5;7183:22;:::i;:::-;7178:3;7171:35;7100:112;;:::o;7218:214::-;7307:4;7345:2;7334:9;7330:18;7322:26;;7358:67;7422:1;7411:9;7407:17;7398:6;7358:67;:::i;:::-;7218:214;;;;:::o;7438:468::-;7503:6;7511;7560:2;7548:9;7539:7;7535:23;7531:32;7528:119;;;7566:79;;:::i;:::-;7528:119;7686:1;7711:53;7756:7;7747:6;7736:9;7732:22;7711:53;:::i;:::-;7701:63;;7657:117;7813:2;7839:50;7881:7;7872:6;7861:9;7857:22;7839:50;:::i;:::-;7829:60;;7784:115;7438:468;;;;;:::o;7912:474::-;7980:6;7988;8037:2;8025:9;8016:7;8012:23;8008:32;8005:119;;;8043:79;;:::i;:::-;8005:119;8163:1;8188:53;8233:7;8224:6;8213:9;8209:22;8188:53;:::i;:::-;8178:63;;8134:117;8290:2;8316:53;8361:7;8352:6;8341:9;8337:22;8316:53;:::i;:::-;8306:63;;8261:118;7912:474;;;;;:::o;8392:182::-;8532:34;8528:1;8520:6;8516:14;8509:58;8392:182;:::o;8580:366::-;8722:3;8743:67;8807:2;8802:3;8743:67;:::i;:::-;8736:74;;8819:93;8908:3;8819:93;:::i;:::-;8937:2;8932:3;8928:12;8921:19;;8580:366;;;:::o;8952:419::-;9118:4;9156:2;9145:9;9141:18;9133:26;;9205:9;9199:4;9195:20;9191:1;9180:9;9176:17;9169:47;9233:131;9359:4;9233:131;:::i;:::-;9225:139;;8952:419;;;:::o;9377:223::-;9517:34;9513:1;9505:6;9501:14;9494:58;9586:6;9581:2;9573:6;9569:15;9562:31;9377:223;:::o;9606:366::-;9748:3;9769:67;9833:2;9828:3;9769:67;:::i;:::-;9762:74;;9845:93;9934:3;9845:93;:::i;:::-;9963:2;9958:3;9954:12;9947:19;;9606:366;;;:::o;9978:419::-;10144:4;10182:2;10171:9;10167:18;10159:26;;10231:9;10225:4;10221:20;10217:1;10206:9;10202:17;10195:47;10259:131;10385:4;10259:131;:::i;:::-;10251:139;;9978:419;;;:::o;10403:180::-;10451:77;10448:1;10441:88;10548:4;10545:1;10538:15;10572:4;10569:1;10562:15;10589:320;10633:6;10670:1;10664:4;10660:12;10650:22;;10717:1;10711:4;10707:12;10738:18;10728:81;;10794:4;10786:6;10782:17;10772:27;;10728:81;10856:2;10848:6;10845:14;10825:18;10822:38;10819:84;;10875:18;;:::i;:::-;10819:84;10640:269;10589:320;;;:::o;10915:180::-;10963:77;10960:1;10953:88;11060:4;11057:1;11050:15;11084:4;11081:1;11074:15;11101:102;11143:8;11190:5;11187:1;11183:13;11162:34;;11101:102;;;:::o;11209:848::-;11270:5;11277:4;11301:6;11292:15;;11325:5;11316:14;;11339:712;11360:1;11350:8;11347:15;11339:712;;;11455:4;11450:3;11446:14;11440:4;11437:24;11434:50;;;11464:18;;:::i;:::-;11434:50;11514:1;11504:8;11500:16;11497:451;;;11929:4;11922:5;11918:16;11909:25;;11497:451;11979:4;11973;11969:15;11961:23;;12009:32;12032:8;12009:32;:::i;:::-;11997:44;;11339:712;;;11209:848;;;;;;;:::o;12063:1073::-;12117:5;12308:8;12298:40;;12329:1;12320:10;;12331:5;;12298:40;12357:4;12347:36;;12374:1;12365:10;;12376:5;;12347:36;12443:4;12491:1;12486:27;;;;12527:1;12522:191;;;;12436:277;;12486:27;12504:1;12495:10;;12506:5;;;12522:191;12567:3;12557:8;12554:17;12551:43;;;12574:18;;:::i;:::-;12551:43;12623:8;12620:1;12616:16;12607:25;;12658:3;12651:5;12648:14;12645:40;;;12665:18;;:::i;:::-;12645:40;12698:5;;;12436:277;;12822:2;12812:8;12809:16;12803:3;12797:4;12794:13;12790:36;12772:2;12762:8;12759:16;12754:2;12748:4;12745:12;12741:35;12725:111;12722:246;;;12878:8;12872:4;12868:19;12859:28;;12913:3;12906:5;12903:14;12900:40;;;12920:18;;:::i;:::-;12900:40;12953:5;;12722:246;12993:42;13031:3;13021:8;13015:4;13012:1;12993:42;:::i;:::-;12978:57;;;;13067:4;13062:3;13058:14;13051:5;13048:25;13045:51;;;13076:18;;:::i;:::-;13045:51;13125:4;13118:5;13114:16;13105:25;;12063:1073;;;;;;:::o;13142:281::-;13200:5;13224:23;13242:4;13224:23;:::i;:::-;13216:31;;13268:25;13284:8;13268:25;:::i;:::-;13256:37;;13312:104;13349:66;13339:8;13333:4;13312:104;:::i;:::-;13303:113;;13142:281;;;;:::o;13429:180::-;13477:77;13474:1;13467:88;13574:4;13571:1;13564:15;13598:4;13595:1;13588:15;13615:185;13655:1;13672:20;13690:1;13672:20;:::i;:::-;13667:25;;13706:20;13724:1;13706:20;:::i;:::-;13701:25;;13745:1;13735:35;;13750:18;;:::i;:::-;13735:35;13792:1;13789;13785:9;13780:14;;13615:185;;;;:::o;13806:171::-;13946:23;13942:1;13934:6;13930:14;13923:47;13806:171;:::o;13983:366::-;14125:3;14146:67;14210:2;14205:3;14146:67;:::i;:::-;14139:74;;14222:93;14311:3;14222:93;:::i;:::-;14340:2;14335:3;14331:12;14324:19;;13983:366;;;:::o;14355:419::-;14521:4;14559:2;14548:9;14544:18;14536:26;;14608:9;14602:4;14598:20;14594:1;14583:9;14579:17;14572:47;14636:131;14762:4;14636:131;:::i;:::-;14628:139;;14355:419;;;:::o;14780:410::-;14820:7;14843:20;14861:1;14843:20;:::i;:::-;14838:25;;14877:20;14895:1;14877:20;:::i;:::-;14872:25;;14932:1;14929;14925:9;14954:30;14972:11;14954:30;:::i;:::-;14943:41;;15133:1;15124:7;15120:15;15117:1;15114:22;15094:1;15087:9;15067:83;15044:139;;15163:18;;:::i;:::-;15044:139;14828:362;14780:410;;;;:::o;15196:227::-;15336:34;15332:1;15324:6;15320:14;15313:58;15405:10;15400:2;15392:6;15388:15;15381:35;15196:227;:::o;15429:366::-;15571:3;15592:67;15656:2;15651:3;15592:67;:::i;:::-;15585:74;;15668:93;15757:3;15668:93;:::i;:::-;15786:2;15781:3;15777:12;15770:19;;15429:366;;;:::o;15801:419::-;15967:4;16005:2;15994:9;15990:18;15982:26;;16054:9;16048:4;16044:20;16040:1;16029:9;16025:17;16018:47;16082:131;16208:4;16082:131;:::i;:::-;16074:139;;15801:419;;;:::o;16226:171::-;16366:23;16362:1;16354:6;16350:14;16343:47;16226:171;:::o;16403:366::-;16545:3;16566:67;16630:2;16625:3;16566:67;:::i;:::-;16559:74;;16642:93;16731:3;16642:93;:::i;:::-;16760:2;16755:3;16751:12;16744:19;;16403:366;;;:::o;16775:419::-;16941:4;16979:2;16968:9;16964:18;16956:26;;17028:9;17022:4;17018:20;17014:1;17003:9;16999:17;16992:47;17056:131;17182:4;17056:131;:::i;:::-;17048:139;;16775:419;;;:::o;17200:194::-;17240:4;17260:20;17278:1;17260:20;:::i;:::-;17255:25;;17294:20;17312:1;17294:20;:::i;:::-;17289:25;;17338:1;17335;17331:9;17323:17;;17362:1;17356:4;17353:11;17350:37;;;17367:18;;:::i;:::-;17350:37;17200:194;;;;:::o;17400:191::-;17440:3;17459:20;17477:1;17459:20;:::i;:::-;17454:25;;17493:20;17511:1;17493:20;:::i;:::-;17488:25;;17536:1;17533;17529:9;17522:16;;17557:3;17554:1;17551:10;17548:36;;;17564:18;;:::i;:::-;17548:36;17400:191;;;;:::o;17597:230::-;17737:34;17733:1;17725:6;17721:14;17714:58;17806:13;17801:2;17793:6;17789:15;17782:38;17597:230;:::o;17833:366::-;17975:3;17996:67;18060:2;18055:3;17996:67;:::i;:::-;17989:74;;18072:93;18161:3;18072:93;:::i;:::-;18190:2;18185:3;18181:12;18174:19;;17833:366;;;:::o;18205:419::-;18371:4;18409:2;18398:9;18394:18;18386:26;;18458:9;18452:4;18448:20;18444:1;18433:9;18429:17;18422:47;18486:131;18612:4;18486:131;:::i;:::-;18478:139;;18205:419;;;:::o;18630:176::-;18770:28;18766:1;18758:6;18754:14;18747:52;18630:176;:::o;18812:366::-;18954:3;18975:67;19039:2;19034:3;18975:67;:::i;:::-;18968:74;;19051:93;19140:3;19051:93;:::i;:::-;19169:2;19164:3;19160:12;19153:19;;18812:366;;;:::o;19184:419::-;19350:4;19388:2;19377:9;19373:18;19365:26;;19437:9;19431:4;19427:20;19423:1;19412:9;19408:17;19401:47;19465:131;19591:4;19465:131;:::i;:::-;19457:139;;19184:419;;;:::o;19609:224::-;19749:34;19745:1;19737:6;19733:14;19726:58;19818:7;19813:2;19805:6;19801:15;19794:32;19609:224;:::o;19839:366::-;19981:3;20002:67;20066:2;20061:3;20002:67;:::i;:::-;19995:74;;20078:93;20167:3;20078:93;:::i;:::-;20196:2;20191:3;20187:12;20180:19;;19839:366;;;:::o;20211:419::-;20377:4;20415:2;20404:9;20400:18;20392:26;;20464:9;20458:4;20454:20;20450:1;20439:9;20435:17;20428:47;20492:131;20618:4;20492:131;:::i;:::-;20484:139;;20211:419;;;:::o;20636:168::-;20776:20;20772:1;20764:6;20760:14;20753:44;20636:168;:::o;20810:366::-;20952:3;20973:67;21037:2;21032:3;20973:67;:::i;:::-;20966:74;;21049:93;21138:3;21049:93;:::i;:::-;21167:2;21162:3;21158:12;21151:19;;20810:366;;;:::o;21182:419::-;21348:4;21386:2;21375:9;21371:18;21363:26;;21435:9;21429:4;21425:20;21421:1;21410:9;21406:17;21399:47;21463:131;21589:4;21463:131;:::i;:::-;21455:139;;21182:419;;;:::o;21607:223::-;21747:34;21743:1;21735:6;21731:14;21724:58;21816:6;21811:2;21803:6;21799:15;21792:31;21607:223;:::o;21836:366::-;21978:3;21999:67;22063:2;22058:3;21999:67;:::i;:::-;21992:74;;22075:93;22164:3;22075:93;:::i;:::-;22193:2;22188:3;22184:12;22177:19;;21836:366;;;:::o;22208:419::-;22374:4;22412:2;22401:9;22397:18;22389:26;;22461:9;22455:4;22451:20;22447:1;22436:9;22432:17;22425:47;22489:131;22615:4;22489:131;:::i;:::-;22481:139;;22208:419;;;:::o;22633:229::-;22773:34;22769:1;22761:6;22757:14;22750:58;22842:12;22837:2;22829:6;22825:15;22818:37;22633:229;:::o;22868:366::-;23010:3;23031:67;23095:2;23090:3;23031:67;:::i;:::-;23024:74;;23107:93;23196:3;23107:93;:::i;:::-;23225:2;23220:3;23216:12;23209:19;;22868:366;;;:::o;23240:419::-;23406:4;23444:2;23433:9;23429:18;23421:26;;23493:9;23487:4;23483:20;23479:1;23468:9;23464:17;23457:47;23521:131;23647:4;23521:131;:::i;:::-;23513:139;;23240:419;;;:::o;23665:225::-;23805:34;23801:1;23793:6;23789:14;23782:58;23874:8;23869:2;23861:6;23857:15;23850:33;23665:225;:::o;23896:366::-;24038:3;24059:67;24123:2;24118:3;24059:67;:::i;:::-;24052:74;;24135:93;24224:3;24135:93;:::i;:::-;24253:2;24248:3;24244:12;24237:19;;23896:366;;;:::o;24268:419::-;24434:4;24472:2;24461:9;24457:18;24449:26;;24521:9;24515:4;24511:20;24507:1;24496:9;24492:17;24485:47;24549:131;24675:4;24549:131;:::i;:::-;24541:139;;24268:419;;;:::o;24693:147::-;24794:11;24831:3;24816:18;;24693:147;;;;:::o;24846:114::-;;:::o;24966:398::-;25125:3;25146:83;25227:1;25222:3;25146:83;:::i;:::-;25139:90;;25238:93;25327:3;25238:93;:::i;:::-;25356:1;25351:3;25347:11;25340:18;;24966:398;;;:::o;25370:379::-;25554:3;25576:147;25719:3;25576:147;:::i;:::-;25569:154;;25740:3;25733:10;;25370:379;;;:::o;25755:162::-;25895:14;25891:1;25883:6;25879:14;25872:38;25755:162;:::o;25923:366::-;26065:3;26086:67;26150:2;26145:3;26086:67;:::i;:::-;26079:74;;26162:93;26251:3;26162:93;:::i;:::-;26280:2;26275:3;26271:12;26264:19;;25923:366;;;:::o;26295:419::-;26461:4;26499:2;26488:9;26484:18;26476:26;;26548:9;26542:4;26538:20;26534:1;26523:9;26519:17;26512:47;26576:131;26702:4;26576:131;:::i;:::-;26568:139;;26295:419;;;:::o;26720:143::-;26777:5;26808:6;26802:13;26793:22;;26824:33;26851:5;26824:33;:::i;:::-;26720:143;;;;:::o;26869:351::-;26939:6;26988:2;26976:9;26967:7;26963:23;26959:32;26956:119;;;26994:79;;:::i;:::-;26956:119;27114:1;27139:64;27195:7;27186:6;27175:9;27171:22;27139:64;:::i;:::-;27129:74;;27085:128;26869:351;;;;:::o;27226:332::-;27347:4;27385:2;27374:9;27370:18;27362:26;;27398:71;27466:1;27455:9;27451:17;27442:6;27398:71;:::i;:::-;27479:72;27547:2;27536:9;27532:18;27523:6;27479:72;:::i;:::-;27226:332;;;;;:::o;27564:137::-;27618:5;27649:6;27643:13;27634:22;;27665:30;27689:5;27665:30;:::i;:::-;27564:137;;;;:::o;27707:345::-;27774:6;27823:2;27811:9;27802:7;27798:23;27794:32;27791:119;;;27829:79;;:::i;:::-;27791:119;27949:1;27974:61;28027:7;28018:6;28007:9;28003:22;27974:61;:::i;:::-;27964:71;;27920:125;27707:345;;;;:::o;28058:223::-;28198:34;28194:1;28186:6;28182:14;28175:58;28267:6;28262:2;28254:6;28250:15;28243:31;28058:223;:::o;28287:366::-;28429:3;28450:67;28514:2;28509:3;28450:67;:::i;:::-;28443:74;;28526:93;28615:3;28526:93;:::i;:::-;28644:2;28639:3;28635:12;28628:19;;28287:366;;;:::o;28659:419::-;28825:4;28863:2;28852:9;28848:18;28840:26;;28912:9;28906:4;28902:20;28898:1;28887:9;28883:17;28876:47;28940:131;29066:4;28940:131;:::i;:::-;28932:139;;28659:419;;;:::o;29084:221::-;29224:34;29220:1;29212:6;29208:14;29201:58;29293:4;29288:2;29280:6;29276:15;29269:29;29084:221;:::o;29311:366::-;29453:3;29474:67;29538:2;29533:3;29474:67;:::i;:::-;29467:74;;29550:93;29639:3;29550:93;:::i;:::-;29668:2;29663:3;29659:12;29652:19;;29311:366;;;:::o;29683:419::-;29849:4;29887:2;29876:9;29872:18;29864:26;;29936:9;29930:4;29926:20;29922:1;29911:9;29907:17;29900:47;29964:131;30090:4;29964:131;:::i;:::-;29956:139;;29683:419;;;:::o;30108:224::-;30248:34;30244:1;30236:6;30232:14;30225:58;30317:7;30312:2;30304:6;30300:15;30293:32;30108:224;:::o;30338:366::-;30480:3;30501:67;30565:2;30560:3;30501:67;:::i;:::-;30494:74;;30577:93;30666:3;30577:93;:::i;:::-;30695:2;30690:3;30686:12;30679:19;;30338:366;;;:::o;30710:419::-;30876:4;30914:2;30903:9;30899:18;30891:26;;30963:9;30957:4;30953:20;30949:1;30938:9;30934:17;30927:47;30991:131;31117:4;30991:131;:::i;:::-;30983:139;;30710:419;;;:::o;31135:222::-;31275:34;31271:1;31263:6;31259:14;31252:58;31344:5;31339:2;31331:6;31327:15;31320:30;31135:222;:::o;31363:366::-;31505:3;31526:67;31590:2;31585:3;31526:67;:::i;:::-;31519:74;;31602:93;31691:3;31602:93;:::i;:::-;31720:2;31715:3;31711:12;31704:19;;31363:366;;;:::o;31735:419::-;31901:4;31939:2;31928:9;31924:18;31916:26;;31988:9;31982:4;31978:20;31974:1;31963:9;31959:17;31952:47;32016:131;32142:4;32016:131;:::i;:::-;32008:139;;31735:419;;;:::o;32160:176::-;32300:28;32296:1;32288:6;32284:14;32277:52;32160:176;:::o;32342:366::-;32484:3;32505:67;32569:2;32564:3;32505:67;:::i;:::-;32498:74;;32581:93;32670:3;32581:93;:::i;:::-;32699:2;32694:3;32690:12;32683:19;;32342:366;;;:::o;32714:419::-;32880:4;32918:2;32907:9;32903:18;32895:26;;32967:9;32961:4;32957:20;32953:1;32942:9;32938:17;32931:47;32995:131;33121:4;32995:131;:::i;:::-;32987:139;;32714:419;;;:::o;33139:170::-;33279:22;33275:1;33267:6;33263:14;33256:46;33139:170;:::o;33315:366::-;33457:3;33478:67;33542:2;33537:3;33478:67;:::i;:::-;33471:74;;33554:93;33643:3;33554:93;:::i;:::-;33672:2;33667:3;33663:12;33656:19;;33315:366;;;:::o;33687:419::-;33853:4;33891:2;33880:9;33876:18;33868:26;;33940:9;33934:4;33930:20;33926:1;33915:9;33911:17;33904:47;33968:131;34094:4;33968:131;:::i;:::-;33960:139;;33687:419;;;:::o;34112:235::-;34252:34;34248:1;34240:6;34236:14;34229:58;34321:18;34316:2;34308:6;34304:15;34297:43;34112:235;:::o;34353:366::-;34495:3;34516:67;34580:2;34575:3;34516:67;:::i;:::-;34509:74;;34592:93;34681:3;34592:93;:::i;:::-;34710:2;34705:3;34701:12;34694:19;;34353:366;;;:::o;34725:419::-;34891:4;34929:2;34918:9;34914:18;34906:26;;34978:9;34972:4;34968:20;34964:1;34953:9;34949:17;34942:47;35006:131;35132:4;35006:131;:::i;:::-;34998:139;;34725:419;;;:::o;35150:225::-;35290:34;35286:1;35278:6;35274:14;35267:58;35359:8;35354:2;35346:6;35342:15;35335:33;35150:225;:::o;35381:366::-;35523:3;35544:67;35608:2;35603:3;35544:67;:::i;:::-;35537:74;;35620:93;35709:3;35620:93;:::i;:::-;35738:2;35733:3;35729:12;35722:19;;35381:366;;;:::o;35753:419::-;35919:4;35957:2;35946:9;35942:18;35934:26;;36006:9;36000:4;35996:20;35992:1;35981:9;35977:17;35970:47;36034:131;36160:4;36034:131;:::i;:::-;36026:139;;35753:419;;;:::o;36178:180::-;36226:77;36223:1;36216:88;36323:4;36320:1;36313:15;36347:4;36344:1;36337:15;36364:180;36412:77;36409:1;36402:88;36509:4;36506:1;36499:15;36533:4;36530:1;36523:15;36550:143;36607:5;36638:6;36632:13;36623:22;;36654:33;36681:5;36654:33;:::i;:::-;36550:143;;;;:::o;36699:351::-;36769:6;36818:2;36806:9;36797:7;36793:23;36789:32;36786:119;;;36824:79;;:::i;:::-;36786:119;36944:1;36969:64;37025:7;37016:6;37005:9;37001:22;36969:64;:::i;:::-;36959:74;;36915:128;36699:351;;;;:::o;37056:85::-;37101:7;37130:5;37119:16;;37056:85;;;:::o;37147:158::-;37205:9;37238:61;37256:42;37265:32;37291:5;37265:32;:::i;:::-;37256:42;:::i;:::-;37238:61;:::i;:::-;37225:74;;37147:158;;;:::o;37311:147::-;37406:45;37445:5;37406:45;:::i;:::-;37401:3;37394:58;37311:147;;:::o;37464:114::-;37531:6;37565:5;37559:12;37549:22;;37464:114;;;:::o;37584:184::-;37683:11;37717:6;37712:3;37705:19;37757:4;37752:3;37748:14;37733:29;;37584:184;;;;:::o;37774:132::-;37841:4;37864:3;37856:11;;37894:4;37889:3;37885:14;37877:22;;37774:132;;;:::o;37912:108::-;37989:24;38007:5;37989:24;:::i;:::-;37984:3;37977:37;37912:108;;:::o;38026:179::-;38095:10;38116:46;38158:3;38150:6;38116:46;:::i;:::-;38194:4;38189:3;38185:14;38171:28;;38026:179;;;;:::o;38211:113::-;38281:4;38313;38308:3;38304:14;38296:22;;38211:113;;;:::o;38360:732::-;38479:3;38508:54;38556:5;38508:54;:::i;:::-;38578:86;38657:6;38652:3;38578:86;:::i;:::-;38571:93;;38688:56;38738:5;38688:56;:::i;:::-;38767:7;38798:1;38783:284;38808:6;38805:1;38802:13;38783:284;;;38884:6;38878:13;38911:63;38970:3;38955:13;38911:63;:::i;:::-;38904:70;;38997:60;39050:6;38997:60;:::i;:::-;38987:70;;38843:224;38830:1;38827;38823:9;38818:14;;38783:284;;;38787:14;39083:3;39076:10;;38484:608;;;38360:732;;;;:::o;39098:831::-;39361:4;39399:3;39388:9;39384:19;39376:27;;39413:71;39481:1;39470:9;39466:17;39457:6;39413:71;:::i;:::-;39494:80;39570:2;39559:9;39555:18;39546:6;39494:80;:::i;:::-;39621:9;39615:4;39611:20;39606:2;39595:9;39591:18;39584:48;39649:108;39752:4;39743:6;39649:108;:::i;:::-;39641:116;;39767:72;39835:2;39824:9;39820:18;39811:6;39767:72;:::i;:::-;39849:73;39917:3;39906:9;39902:19;39893:6;39849:73;:::i;:::-;39098:831;;;;;;;;:::o;39935:332::-;40056:4;40094:2;40083:9;40079:18;40071:26;;40107:71;40175:1;40164:9;40160:17;40151:6;40107:71;:::i;:::-;40188:72;40256:2;40245:9;40241:18;40232:6;40188:72;:::i;:::-;39935:332;;;;;:::o

Swarm Source

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