ETH Price: $3,145.35 (+5.61%)

Token

HypeApes (APES)
 

Overview

Max Total Supply

1,000,000,000,000 APES

Holders

699

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
130,468,044.650435103 APES

Value
$0.00
0xc59678b23012e1d2299ea4903dc16676c88f10ba
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

HypeApes is a venture capital system built to provide support for Developers who seek presale funds for their launches. The HypeStake platform will enable the investors to earn APES Token and ETH rewards.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
APES

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-09
*/

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

pragma solidity ^0.8.4;

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

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);
}

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

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

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

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

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

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

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

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

}  

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

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

contract APES is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _bots;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    string private constant _name = unicode"HypeApes";
    string private constant _symbol = unicode"APES";
    
    uint256 private minContractTokensToSwap = 1e9 * 10**9;
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 10;
    uint256 private _liquidityFeePercentage = 0;
    uint256 private _maxWalletPercentage = 1;
    uint256 private launchBlock = 0;
    uint256 private _maxBuyAmount;

    uint256 private _baseFee = 10;

    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;

    address payable private _FeeAddress;
    address payable private _marketingWalletAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _swapAll = false;
    bool private _takeFeeFromTransfer = false;
    bool private inSwap = false;
    bool private _noTaxMode = false;

    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool feeSent, bool marketingSent);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
        constructor (address payable FeeAddress, address payable marketingWalletAddress) {
        _FeeAddress = FeeAddress;
        _marketingWalletAddress = marketingWalletAddress;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[FeeAddress] = true;
        _isExcludedFromFee[marketingWalletAddress] = true;

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

    function name() public pure returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner()) {
            
            require(!_bots[from] && !_bots[to]);

            if (block.number <= launchBlock + 4) {
                if (from != uniswapV2Pair && from != address(uniswapV2Router)) {
                    _bots[from] = true;
                } else if (to != uniswapV2Pair && to != address(uniswapV2Router)) {
                    _bots[to] = true;
                }
            }

            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");                

                if (amount >= balanceOf(uniswapV2Pair).mul(25).div(100)) {
                    _teamFee = _baseFee - 6;
                } else if (amount >= balanceOf(uniswapV2Pair).mul(15).div(100)) {
                    _teamFee = _baseFee - 4;
                } else if (amount >= balanceOf(uniswapV2Pair).mul(5).div(100)) {
                    _teamFee = _baseFee - 2;
                } else {
                    _teamFee = _baseFee;
                }
                
                uint walletBalance = balanceOf(address(to));
                require(amount.add(walletBalance) <= _tTotal.mul(_maxWalletPercentage).div(100), "amount exceeds max wallet holdings");
                if (_maxBuyAmount > 0) {
                    require(amount <= _maxBuyAmount, "amount exceeds max buy");
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));

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

                if (amount >= balanceOf(uniswapV2Pair).mul(25).div(100)) {
                    _teamFee = _baseFee + 30;
                } else if (amount >= balanceOf(uniswapV2Pair).mul(15).div(100)) {
                    _teamFee = _baseFee + 15;
                } else if (amount >= balanceOf(uniswapV2Pair).mul(5).div(100)) {
                    _teamFee = _baseFee + 5;
                } else {
                    _teamFee = _baseFee;
                }

                if(contractTokenBalance > minContractTokensToSwap) {
                    if(!_swapAll) {
                        contractTokenBalance = minContractTokensToSwap;
                    }

                    if (_liquidityFeePercentage > 0) {
                        swapAndLiquify(contractTokenBalance);
                    } else {
                        swapWithoutLiquify(contractTokenBalance);
                    }     
                    
                }
            }
        }
        bool takeFee = true;

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 teamFeePercentage = 100 - _liquidityFeePercentage;
        uint256 amtForLiquidity = contractTokenBalance.mul(_liquidityFeePercentage).div(100);
        uint256 halfLiq = amtForLiquidity.div(2);

        uint256 amountToSwapForETH = contractTokenBalance.sub(halfLiq);
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 feeBalance = ethBalance.mul(teamFeePercentage).div(100);
        sendETHToFee(feeBalance);

        uint256 ethForLiquidity = ethBalance - feeBalance;

        if (halfLiq > 0 && ethForLiquidity > 0) {
            // add liquidity
            addLiquidity(halfLiq, ethForLiquidity);

            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, amtForLiquidity);
        }
    }

    function swapWithoutLiquify(uint256 contractTokenBalance) private lockTheSwap {
        
        swapTokensForEth(contractTokenBalance);

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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function manualSwapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        (bool fee, ) = _FeeAddress.call{value: amount.mul(3).div(10)}("");
        (bool marketing, ) = _marketingWalletAddress.call{value: amount.mul(7).div(10)}("");

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

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

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

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

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

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

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

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

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

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

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

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

    function setFeeAddress (address payable feeAddress) external onlyOwner() {
        _isExcludedFromFee[_FeeAddress] = false;
        _FeeAddress = feeAddress;
        _isExcludedFromFee[feeAddress] = true;
    }

    function excludeFromFee (address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = true;
    }
    
    function includeToFee (address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = false;
    }

    function setTakeFeeFromTransfer(bool onoff) external onlyOwner() {
        _takeFeeFromTransfer = onoff;
    }
    
    function setBaseFee(uint256 fee) external onlyOwner() {
        require(fee <= 10, "Base fee must be less than 10");
        _baseFee = fee;
    }
        
    function setTaxFee(uint256 tax) external onlyOwner() {
        require(tax <= 5, "tax must be less than 5");
        _taxFee = tax;
    }

    function setNoTaxMode(bool onoff) external onlyOwner() {
        _noTaxMode = onoff;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
		require(_liquidityFeePercentage >= 0 && _liquidityFeePercentage <= 100, "liquidity fee percentage must be between 0 to 100");
        _liquidityFeePercentage = liquidityFee;
    }

    function setMinContractTokensToSwap(uint256 numToken) external onlyOwner() {
        minContractTokensToSwap = numToken;
    }

    function setMaxWalletPercentage(uint256 percentage) external onlyOwner() {
        require(percentage >= 0 && percentage <= 100, "max wallet percentage must be between 0 to 100");
        _maxWalletPercentage = percentage;
    }

    function setMaxBuy(uint256 amt) external onlyOwner() {
        _maxBuyAmount = amt;
    }

    function setSwapAll(bool onoff) external onlyOwner() {
        _swapAll = onoff;
    }
    
    function setBots(address[] calldata bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            if (bots_[i] != uniswapV2Pair && bots_[i] != address(uniswapV2Router)) {
                _bots[bots_[i]] = true;
            }
        }
    }
    
    function delBot(address notbot) external onlyOwner {
        _bots[notbot] = false;
    }
    
    function isBot(address ad) public view returns (bool) {
        return _bots[ad];
    }
    
    function manualswap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        manualSwapTokensForEth(contractBalance);
    }
    
    function manualsend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"feeSent","type":"bool"},{"indexed":false,"internalType":"bool","name":"marketingSent","type":"bool"}],"name":"Response","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBaseFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setMaxWalletPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setNoTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTakeFeeFromTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d9190620005d2565b6000196200002c919062000559565b600755670de0b6b3a76400006009556000600a55600a600b556000600c556001600d556000600e55600a601055600a54601155600b546012556000601660146101000a81548160ff0219169083151502179055506000601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff0219169083151502179055506000601660176101000a81548160ff0219169083151502179055506000601660186101000a81548160ff021916908315150217905550348015620000f857600080fd5b5060405162005dc638038062005dc683398181016040528101906200011e9190620004e4565b6000620001306200049c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460026000620002676200049c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002bb620004a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004246200049c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200048c91906200053c565b60405180910390a3505062000687565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620004de816200066d565b92915050565b60008060408385031215620004fe57620004fd62000668565b5b60006200050e85828601620004cd565b92505060206200052185828601620004cd565b9150509250929050565b6200053681620005c8565b82525050565b60006020820190506200055360008301846200052b565b92915050565b60006200056682620005c8565b91506200057383620005c8565b9250828210156200058957620005886200060a565b5b828203905092915050565b6000620005a182620005a8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620005df82620005c8565b9150620005ec83620005c8565b925082620005ff57620005fe62000639565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b620006788162000594565b81146200068457600080fd5b50565b61572f80620006976000396000f3fe6080604052600436106101f25760003560e01c80637a845ece1161010d578063c1187569116100a0578063cf0848f71161006f578063cf0848f7146106a2578063db92dbb6146106cb578063dd62ed3e146106f6578063de30aad114610733578063f53bc8351461075c576101f9565b8063c118756914610622578063c3c8cd801461064b578063c4081a4c14610662578063c9567bf91461068b576101f9565b806395d89b41116100dc57806395d89b41146105685780639a7a23d614610593578063a9059cbb146105bc578063b515566a146105f9576101f9565b80637a845ece146104c25780638705fcd4146104eb5780638da5cb5b146105145780638ee88c531461053f576101f9565b80633bbac579116101855780635d098b38116101545780635d098b381461042e5780636fc3eaec1461045757806370a082311461046e578063715018a6146104ab576101f9565b80633bbac57914610376578063437823ec146103b357806346860698146103dc5780634b740b1614610405576101f9565b806323b872dd116101c157806323b872dd146102ba578063273123b7146102f757806327f3a72a14610320578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b31461022957806312dfbd331461026657806318160ddd1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610785565b6040516102209190614b75565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190614545565b6107c2565b60405161025d9190614b31565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061462c565b6107e0565b005b34801561029b57600080fd5b506102a461087f565b6040516102b19190614dd7565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc91906144b2565b610890565b6040516102ee9190614b31565b60405180910390f35b34801561030357600080fd5b5061031e600480360381019061031991906143eb565b610969565b005b34801561032c57600080fd5b50610335610a59565b6040516103429190614dd7565b60405180910390f35b34801561035757600080fd5b50610360610a69565b60405161036d9190614e83565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906143eb565b610a72565b6040516103aa9190614b31565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190614445565b610ac8565b005b3480156103e857600080fd5b5061040360048036038101906103fe919061462c565b610bb8565b005b34801561041157600080fd5b5061042c600480360381019061042791906145d2565b610c9b565b005b34801561043a57600080fd5b5061045560048036038101906104509190614445565b610d4d565b005b34801561046357600080fd5b5061046c610ef8565b005b34801561047a57600080fd5b50610495600480360381019061049091906143eb565b610f9e565b6040516104a29190614dd7565b60405180910390f35b3480156104b757600080fd5b506104c0610fef565b005b3480156104ce57600080fd5b506104e960048036038101906104e4919061462c565b611142565b005b3480156104f757600080fd5b50610512600480360381019061050d9190614445565b611232565b005b34801561052057600080fd5b506105296113dd565b6040516105369190614a63565b60405180910390f35b34801561054b57600080fd5b506105666004803603810190610561919061462c565b611406565b005b34801561057457600080fd5b5061057d6114fa565b60405161058a9190614b75565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190614505565b611537565b005b3480156105c857600080fd5b506105e360048036038101906105de9190614545565b61166b565b6040516105f09190614b31565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190614585565b611689565b005b34801561062e57600080fd5b50610649600480360381019061064491906145d2565b6118c3565b005b34801561065757600080fd5b50610660611974565b005b34801561066e57600080fd5b506106896004803603810190610684919061462c565b611a22565b005b34801561069757600080fd5b506106a0611b05565b005b3480156106ae57600080fd5b506106c960048036038101906106c49190614445565b6120ac565b005b3480156106d757600080fd5b506106e061219c565b6040516106ed9190614dd7565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190614472565b6121ce565b60405161072a9190614dd7565b60405180910390f35b34801561073f57600080fd5b5061075a600480360381019061075591906145d2565b612255565b005b34801561076857600080fd5b50610783600480360381019061077e919061462c565b612307565b005b60606040518060400160405280600881526020017f4879706541706573000000000000000000000000000000000000000000000000815250905090565b60006107d66107cf6123a6565b84846123ae565b6001905092915050565b6107e86123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90614cd7565b60405180910390fd5b8060098190555050565b6000683635c9adc5dea00000905090565b600061089d848484612579565b61095e846108a96123a6565b610959856040518060600160405280602881526020016156d260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090f6123a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316a9092919063ffffffff16565b6123ae565b600190509392505050565b6109716123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590614cd7565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610a6430610f9e565b905090565b60006009905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ad06123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5490614cd7565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610bc06123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490614cd7565b60405180910390fd5b600a811115610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890614c57565b60405180910390fd5b8060108190555050565b610ca36123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2790614cd7565b60405180910390fd5b80601660186101000a81548160ff02191690831515021790555050565b610d556123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614cd7565b60405180910390fd5b600060056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f006123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490614cd7565b60405180910390fd5b6000479050610f9b816131ce565b50565b6000610fe8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613374565b9050919050565b610ff76123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b90614cd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61114a6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90614cd7565b60405180910390fd5b600081101580156111e9575060648111155b611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90614d17565b60405180910390fd5b80600d8190555050565b61123a6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90614cd7565b60405180910390fd5b600060056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61140e6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290614cd7565b60405180910390fd5b6000600c54101580156114b157506064600c5411155b6114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e790614c97565b60405180910390fd5b80600c8190555050565b60606040518060400160405280600481526020017f4150455300000000000000000000000000000000000000000000000000000000815250905090565b61153f6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390614cd7565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490614c37565b60405180910390fd5b61166782826133e2565b5050565b600061167f6116786123a6565b8484612579565b6001905092915050565b6116916123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614cd7565b60405180910390fd5b60005b828290508110156118be57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683838381811061177857611777615166565b5b905060200201602081019061178d91906143eb565b73ffffffffffffffffffffffffffffffffffffffff16141580156118265750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168383838181106117f8576117f7615166565b5b905060200201602081019061180d91906143eb565b73ffffffffffffffffffffffffffffffffffffffff1614155b156118ab5760016006600085858581811061184457611843615166565b5b905060200201602081019061185991906143eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806118b6906150bf565b915050611721565b505050565b6118cb6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90614cd7565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b61197c6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090614cd7565b60405180910390fd5b6000611a1430610f9e565b9050611a1f8161343d565b50565b611a2a6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90614cd7565b60405180910390fd5b6005811115611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290614c77565b60405180910390fd5b80600a8190555050565b611b0d6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614cd7565b60405180910390fd5b601660149054906101000a900460ff1615611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190614d97565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c7a30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123ae565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc057600080fd5b505afa158015611cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf89190614418565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5a57600080fd5b505afa158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190614418565b6040518363ffffffff1660e01b8152600401611daf929190614a7e565b602060405180830381600087803b158015611dc957600080fd5b505af1158015611ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e019190614418565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e8a30610f9e565b600080611e956113dd565b426040518863ffffffff1660e01b8152600401611eb796959493929190614ad0565b6060604051808303818588803b158015611ed057600080fd5b505af1158015611ee4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f099190614659565b505050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611fab929190614aa7565b602060405180830381600087803b158015611fc557600080fd5b505af1158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd91906145ff565b506001601660146101000a81548160ff021916908315150217905550600160176000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555043600e819055506722b1c8c1227a0000600f8190555050565b6120b46123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890614cd7565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006121c9601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61225d6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190614cd7565b60405180910390fd5b80601660156101000a81548160ff02191690831515021790555050565b61230f6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390614cd7565b60405180910390fd5b80600f8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561241e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241590614d77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248590614bf7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161256c9190614dd7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e090614d57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265090614bb7565b60405180910390fd5b6000811161269c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269390614cf7565b60405180910390fd5b6126a46113dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561271257506126e26113dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fcb57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127bb5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6127c457600080fd5b6004600e546127d39190614efe565b43116129f357601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156128e7576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506129f2565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156129935750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129f1576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612a9e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af45750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8c57601660149054906101000a900460ff16612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614db7565b60405180910390fd5b612b996064612b8b6019612b7d601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8110612bb9576006601054612bae9190614fdf565b600b81905550612ca7565b612c0a6064612bfc600f612bee601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8110612c2a576004601054612c1f9190614fdf565b600b81905550612ca6565b612c7b6064612c6d6005612c5f601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8110612c9b576002601054612c909190614fdf565b600b81905550612ca5565b601054600b819055505b5b5b6000612cb283610f9e565b9050612ce56064612cd7600d54683635c9adc5dea000006136c590919063ffffffff16565b61374090919063ffffffff16565b612cf8828461378a90919063ffffffff16565b1115612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614d37565b60405180910390fd5b6000600f541115612d8a57600f54821115612d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8090614b97565b60405180910390fd5b5b505b6000612d9730610f9e565b9050601660179054906101000a900460ff16158015612e045750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612e1c5750601660149054906101000a900460ff165b15612fc957612e726064612e646019612e56601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8210612e9257601e601054612e879190614efe565b600b81905550612f80565b612ee36064612ed5600f612ec7601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8210612f0357600f601054612ef89190614efe565b600b81905550612f7f565b612f546064612f466005612f38601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8210612f74576005601054612f699190614efe565b600b81905550612f7e565b601054600b819055505b5b5b600954811115612fc857601660159054906101000a900460ff16612fa45760095490505b6000600c541115612fbd57612fb8816137e8565b612fc7565b612fc68161395a565b5b5b5b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130725750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130895750601660189054906101000a900460ff165b1561309357600090505b60168054906101000a900460ff161580156130f85750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561314e5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315857600090505b613164848484846139b5565b50505050565b60008383111582906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99190614b75565b60405180910390fd5b50600083856131c19190614fdf565b9050809150509392505050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613230600a6132226003866136c590919063ffffffff16565b61374090919063ffffffff16565b60405161323c90614a4e565b60006040518083038185875af1925050503d8060008114613279576040519150601f19603f3d011682016040523d82523d6000602084013e61327e565b606091505b505090506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166132e4600a6132d66007876136c590919063ffffffff16565b61374090919063ffffffff16565b6040516132f090614a4e565b60006040518083038185875af1925050503d806000811461332d576040519150601f19603f3d011682016040523d82523d6000602084013e613332565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b98282604051613367929190614b4c565b60405180910390a1505050565b60006007548211156133bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b290614bd7565b60405180910390fd5b60006133c56139e2565b90506133da818461374090919063ffffffff16565b915050919050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6001601660176101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561347557613474615195565b5b6040519080825280602002602001820160405280156134a35781602001602082028036833780820191505090505b50905030816000815181106134bb576134ba615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561355d57600080fd5b505afa158015613571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135959190614418565b816001815181106135a9576135a8615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061361030601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123ae565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613674959493929190614df2565b600060405180830381600087803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b50505050506000601660176101000a81548160ff02191690831515021790555050565b6000808314156136d8576000905061373a565b600082846136e69190614f85565b90508284826136f59190614f54565b14613735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372c90614cb7565b60405180910390fd5b809150505b92915050565b600061378283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a0d565b905092915050565b60008082846137999190614efe565b9050838110156137de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d590614c17565b60405180910390fd5b8091505092915050565b6001601660176101000a81548160ff0219169083151502179055506000600c5460646138149190614fdf565b905060006138406064613832600c54866136c590919063ffffffff16565b61374090919063ffffffff16565b9050600061385860028361374090919063ffffffff16565b9050600061386f8286613a7090919063ffffffff16565b9050600047905061387f82613aba565b60006138948247613a7090919063ffffffff16565b905060006138be60646138b089856136c590919063ffffffff16565b61374090919063ffffffff16565b90506138c9816131ce565b600081836138d79190614fdf565b90506000861180156138e95750600081115b15613934576138f88682613d0c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828960405161392b93929190614e4c565b60405180910390a15b50505050505050506000601660176101000a81548160ff02191690831515021790555050565b6001601660176101000a81548160ff02191690831515021790555061397e81613aba565b6000479050600081111561399657613995476131ce565b5b506000601660176101000a81548160ff02191690831515021790555050565b806139c3576139c2613e00565b5b6139ce848484613e43565b806139dc576139db61400e565b5b50505050565b60008060006139ef614022565b91509150613a06818361374090919063ffffffff16565b9250505090565b60008083118290613a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a4b9190614b75565b60405180910390fd5b5060008385613a639190614f54565b9050809150509392505050565b6000613ab283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061316a565b905092915050565b6000600267ffffffffffffffff811115613ad757613ad6615195565b5b604051908082528060200260200182016040528015613b055781602001602082028036833780820191505090505b5090503081600081518110613b1d57613b1c615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613bbf57600080fd5b505afa158015613bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf79190614418565b81600181518110613c0b57613c0a615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c7230601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123ae565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cd6959493929190614df2565b600060405180830381600087803b158015613cf057600080fd5b505af1158015613d04573d6000803e3d6000fd5b505050505050565b613d3930601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123ae565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d856113dd565b426040518863ffffffff1660e01b8152600401613da796959493929190614ad0565b6060604051808303818588803b158015613dc057600080fd5b505af1158015613dd4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613df99190614659565b5050505050565b6000600a54148015613e1457506000600b54145b15613e1e57613e41565b600a54601181905550600b546012819055506000600a819055506000600b819055505b565b600080600080600080613e5587614084565b955095509550955095509550613eb386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f4885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461378a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f94816140ec565b613f9e84836141a9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ffb9190614dd7565b60405180910390a3505050505050505050565b601154600a81905550601254600b81905550565b600080600060075490506000683635c9adc5dea000009050614058683635c9adc5dea0000060075461374090919063ffffffff16565b82101561407757600754683635c9adc5dea00000935093505050614080565b81819350935050505b9091565b60008060008060008060008060006140a18a600a54600b546141e3565b92509250925060006140b16139e2565b905060008060006140c48e878787614279565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006140f66139e2565b9050600061410d82846136c590919063ffffffff16565b905061416181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461378a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6141be82600754613a7090919063ffffffff16565b6007819055506141d98160085461378a90919063ffffffff16565b6008819055505050565b60008060008061420f6064614201888a6136c590919063ffffffff16565b61374090919063ffffffff16565b90506000614239606461422b888b6136c590919063ffffffff16565b61374090919063ffffffff16565b9050600061426282614254858c613a7090919063ffffffff16565b613a7090919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061429285896136c590919063ffffffff16565b905060006142a986896136c590919063ffffffff16565b905060006142c087896136c590919063ffffffff16565b905060006142e9826142db8587613a7090919063ffffffff16565b613a7090919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008135905061431181615675565b92915050565b60008151905061432681615675565b92915050565b60008135905061433b8161568c565b92915050565b60008083601f840112614357576143566151c9565b5b8235905067ffffffffffffffff811115614374576143736151c4565b5b6020830191508360208202830111156143905761438f6151ce565b5b9250929050565b6000813590506143a6816156a3565b92915050565b6000815190506143bb816156a3565b92915050565b6000813590506143d0816156ba565b92915050565b6000815190506143e5816156ba565b92915050565b600060208284031215614401576144006151d8565b5b600061440f84828501614302565b91505092915050565b60006020828403121561442e5761442d6151d8565b5b600061443c84828501614317565b91505092915050565b60006020828403121561445b5761445a6151d8565b5b60006144698482850161432c565b91505092915050565b60008060408385031215614489576144886151d8565b5b600061449785828601614302565b92505060206144a885828601614302565b9150509250929050565b6000806000606084860312156144cb576144ca6151d8565b5b60006144d986828701614302565b93505060206144ea86828701614302565b92505060406144fb868287016143c1565b9150509250925092565b6000806040838503121561451c5761451b6151d8565b5b600061452a85828601614302565b925050602061453b85828601614397565b9150509250929050565b6000806040838503121561455c5761455b6151d8565b5b600061456a85828601614302565b925050602061457b858286016143c1565b9150509250929050565b6000806020838503121561459c5761459b6151d8565b5b600083013567ffffffffffffffff8111156145ba576145b96151d3565b5b6145c685828601614341565b92509250509250929050565b6000602082840312156145e8576145e76151d8565b5b60006145f684828501614397565b91505092915050565b600060208284031215614615576146146151d8565b5b6000614623848285016143ac565b91505092915050565b600060208284031215614642576146416151d8565b5b6000614650848285016143c1565b91505092915050565b600080600060608486031215614672576146716151d8565b5b6000614680868287016143d6565b9350506020614691868287016143d6565b92505060406146a2868287016143d6565b9150509250925092565b60006146b883836146c4565b60208301905092915050565b6146cd81615013565b82525050565b6146dc81615013565b82525050565b60006146ed82614eae565b6146f78185614ed1565b935061470283614e9e565b8060005b8381101561473357815161471a88826146ac565b975061472583614ec4565b925050600181019050614706565b5085935050505092915050565b61474981615037565b82525050565b6147588161507a565b82525050565b600061476982614eb9565b6147738185614eed565b935061478381856020860161508c565b61478c816151dd565b840191505092915050565b60006147a4601683614eed565b91506147af826151ee565b602082019050919050565b60006147c7602383614eed565b91506147d282615217565b604082019050919050565b60006147ea602a83614eed565b91506147f582615266565b604082019050919050565b600061480d602283614eed565b9150614818826152b5565b604082019050919050565b6000614830601b83614eed565b915061483b82615304565b602082019050919050565b6000614853603983614eed565b915061485e8261532d565b604082019050919050565b6000614876601d83614eed565b91506148818261537c565b602082019050919050565b6000614899601783614eed565b91506148a4826153a5565b602082019050919050565b60006148bc603183614eed565b91506148c7826153ce565b604082019050919050565b60006148df602183614eed565b91506148ea8261541d565b604082019050919050565b6000614902602083614eed565b915061490d8261546c565b602082019050919050565b6000614925602983614eed565b915061493082615495565b604082019050919050565b6000614948602e83614eed565b9150614953826154e4565b604082019050919050565b600061496b602283614eed565b915061497682615533565b604082019050919050565b600061498e602583614eed565b915061499982615582565b604082019050919050565b60006149b1600083614ee2565b91506149bc826155d1565b600082019050919050565b60006149d4602483614eed565b91506149df826155d4565b604082019050919050565b60006149f7601783614eed565b9150614a0282615623565b602082019050919050565b6000614a1a601883614eed565b9150614a258261564c565b602082019050919050565b614a3981615063565b82525050565b614a488161506d565b82525050565b6000614a59826149a4565b9150819050919050565b6000602082019050614a7860008301846146d3565b92915050565b6000604082019050614a9360008301856146d3565b614aa060208301846146d3565b9392505050565b6000604082019050614abc60008301856146d3565b614ac96020830184614a30565b9392505050565b600060c082019050614ae560008301896146d3565b614af26020830188614a30565b614aff604083018761474f565b614b0c606083018661474f565b614b1960808301856146d3565b614b2660a0830184614a30565b979650505050505050565b6000602082019050614b466000830184614740565b92915050565b6000604082019050614b616000830185614740565b614b6e6020830184614740565b9392505050565b60006020820190508181036000830152614b8f818461475e565b905092915050565b60006020820190508181036000830152614bb081614797565b9050919050565b60006020820190508181036000830152614bd0816147ba565b9050919050565b60006020820190508181036000830152614bf0816147dd565b9050919050565b60006020820190508181036000830152614c1081614800565b9050919050565b60006020820190508181036000830152614c3081614823565b9050919050565b60006020820190508181036000830152614c5081614846565b9050919050565b60006020820190508181036000830152614c7081614869565b9050919050565b60006020820190508181036000830152614c908161488c565b9050919050565b60006020820190508181036000830152614cb0816148af565b9050919050565b60006020820190508181036000830152614cd0816148d2565b9050919050565b60006020820190508181036000830152614cf0816148f5565b9050919050565b60006020820190508181036000830152614d1081614918565b9050919050565b60006020820190508181036000830152614d308161493b565b9050919050565b60006020820190508181036000830152614d508161495e565b9050919050565b60006020820190508181036000830152614d7081614981565b9050919050565b60006020820190508181036000830152614d90816149c7565b9050919050565b60006020820190508181036000830152614db0816149ea565b9050919050565b60006020820190508181036000830152614dd081614a0d565b9050919050565b6000602082019050614dec6000830184614a30565b92915050565b600060a082019050614e076000830188614a30565b614e14602083018761474f565b8181036040830152614e2681866146e2565b9050614e3560608301856146d3565b614e426080830184614a30565b9695505050505050565b6000606082019050614e616000830186614a30565b614e6e6020830185614a30565b614e7b6040830184614a30565b949350505050565b6000602082019050614e986000830184614a3f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614f0982615063565b9150614f1483615063565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f4957614f48615108565b5b828201905092915050565b6000614f5f82615063565b9150614f6a83615063565b925082614f7a57614f79615137565b5b828204905092915050565b6000614f9082615063565b9150614f9b83615063565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fd457614fd3615108565b5b828202905092915050565b6000614fea82615063565b9150614ff583615063565b92508282101561500857615007615108565b5b828203905092915050565b600061501e82615043565b9050919050565b600061503082615043565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061508582615063565b9050919050565b60005b838110156150aa57808201518184015260208101905061508f565b838111156150b9576000848401525b50505050565b60006150ca82615063565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150fd576150fc615108565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f616d6f756e742065786365656473206d61782062757900000000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f4261736520666565206d757374206265206c657373207468616e203130000000600082015250565b7f746178206d757374206265206c657373207468616e2035000000000000000000600082015250565b7f6c6971756964697479206665652070657263656e74616765206d75737420626560008201527f206265747765656e203020746f20313030000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6d61782077616c6c65742070657263656e74616765206d75737420626520626560008201527f747765656e203020746f20313030000000000000000000000000000000000000602082015250565b7f616d6f756e742065786365656473206d61782077616c6c657420686f6c64696e60008201527f6773000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b61567e81615013565b811461568957600080fd5b50565b61569581615025565b81146156a057600080fd5b50565b6156ac81615037565b81146156b757600080fd5b50565b6156c381615063565b81146156ce57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040dc319eeff6169ee37b3bc16b1091b498519236855e39762b434f52b1e86fb964736f6c63430008050033000000000000000000000000903d34e41e1ad06b6783d83ce629ce7b4b40ea090000000000000000000000005018ac9c1ec6b2259510758b5e2f5a7e245a7c17

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80637a845ece1161010d578063c1187569116100a0578063cf0848f71161006f578063cf0848f7146106a2578063db92dbb6146106cb578063dd62ed3e146106f6578063de30aad114610733578063f53bc8351461075c576101f9565b8063c118756914610622578063c3c8cd801461064b578063c4081a4c14610662578063c9567bf91461068b576101f9565b806395d89b41116100dc57806395d89b41146105685780639a7a23d614610593578063a9059cbb146105bc578063b515566a146105f9576101f9565b80637a845ece146104c25780638705fcd4146104eb5780638da5cb5b146105145780638ee88c531461053f576101f9565b80633bbac579116101855780635d098b38116101545780635d098b381461042e5780636fc3eaec1461045757806370a082311461046e578063715018a6146104ab576101f9565b80633bbac57914610376578063437823ec146103b357806346860698146103dc5780634b740b1614610405576101f9565b806323b872dd116101c157806323b872dd146102ba578063273123b7146102f757806327f3a72a14610320578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b31461022957806312dfbd331461026657806318160ddd1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610785565b6040516102209190614b75565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190614545565b6107c2565b60405161025d9190614b31565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061462c565b6107e0565b005b34801561029b57600080fd5b506102a461087f565b6040516102b19190614dd7565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc91906144b2565b610890565b6040516102ee9190614b31565b60405180910390f35b34801561030357600080fd5b5061031e600480360381019061031991906143eb565b610969565b005b34801561032c57600080fd5b50610335610a59565b6040516103429190614dd7565b60405180910390f35b34801561035757600080fd5b50610360610a69565b60405161036d9190614e83565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906143eb565b610a72565b6040516103aa9190614b31565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190614445565b610ac8565b005b3480156103e857600080fd5b5061040360048036038101906103fe919061462c565b610bb8565b005b34801561041157600080fd5b5061042c600480360381019061042791906145d2565b610c9b565b005b34801561043a57600080fd5b5061045560048036038101906104509190614445565b610d4d565b005b34801561046357600080fd5b5061046c610ef8565b005b34801561047a57600080fd5b50610495600480360381019061049091906143eb565b610f9e565b6040516104a29190614dd7565b60405180910390f35b3480156104b757600080fd5b506104c0610fef565b005b3480156104ce57600080fd5b506104e960048036038101906104e4919061462c565b611142565b005b3480156104f757600080fd5b50610512600480360381019061050d9190614445565b611232565b005b34801561052057600080fd5b506105296113dd565b6040516105369190614a63565b60405180910390f35b34801561054b57600080fd5b506105666004803603810190610561919061462c565b611406565b005b34801561057457600080fd5b5061057d6114fa565b60405161058a9190614b75565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190614505565b611537565b005b3480156105c857600080fd5b506105e360048036038101906105de9190614545565b61166b565b6040516105f09190614b31565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190614585565b611689565b005b34801561062e57600080fd5b50610649600480360381019061064491906145d2565b6118c3565b005b34801561065757600080fd5b50610660611974565b005b34801561066e57600080fd5b506106896004803603810190610684919061462c565b611a22565b005b34801561069757600080fd5b506106a0611b05565b005b3480156106ae57600080fd5b506106c960048036038101906106c49190614445565b6120ac565b005b3480156106d757600080fd5b506106e061219c565b6040516106ed9190614dd7565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190614472565b6121ce565b60405161072a9190614dd7565b60405180910390f35b34801561073f57600080fd5b5061075a600480360381019061075591906145d2565b612255565b005b34801561076857600080fd5b50610783600480360381019061077e919061462c565b612307565b005b60606040518060400160405280600881526020017f4879706541706573000000000000000000000000000000000000000000000000815250905090565b60006107d66107cf6123a6565b84846123ae565b6001905092915050565b6107e86123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90614cd7565b60405180910390fd5b8060098190555050565b6000683635c9adc5dea00000905090565b600061089d848484612579565b61095e846108a96123a6565b610959856040518060600160405280602881526020016156d260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090f6123a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316a9092919063ffffffff16565b6123ae565b600190509392505050565b6109716123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590614cd7565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610a6430610f9e565b905090565b60006009905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ad06123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5490614cd7565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610bc06123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490614cd7565b60405180910390fd5b600a811115610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890614c57565b60405180910390fd5b8060108190555050565b610ca36123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2790614cd7565b60405180910390fd5b80601660186101000a81548160ff02191690831515021790555050565b610d556123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614cd7565b60405180910390fd5b600060056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f006123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490614cd7565b60405180910390fd5b6000479050610f9b816131ce565b50565b6000610fe8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613374565b9050919050565b610ff76123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b90614cd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61114a6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90614cd7565b60405180910390fd5b600081101580156111e9575060648111155b611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90614d17565b60405180910390fd5b80600d8190555050565b61123a6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90614cd7565b60405180910390fd5b600060056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61140e6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290614cd7565b60405180910390fd5b6000600c54101580156114b157506064600c5411155b6114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e790614c97565b60405180910390fd5b80600c8190555050565b60606040518060400160405280600481526020017f4150455300000000000000000000000000000000000000000000000000000000815250905090565b61153f6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390614cd7565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490614c37565b60405180910390fd5b61166782826133e2565b5050565b600061167f6116786123a6565b8484612579565b6001905092915050565b6116916123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614cd7565b60405180910390fd5b60005b828290508110156118be57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683838381811061177857611777615166565b5b905060200201602081019061178d91906143eb565b73ffffffffffffffffffffffffffffffffffffffff16141580156118265750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168383838181106117f8576117f7615166565b5b905060200201602081019061180d91906143eb565b73ffffffffffffffffffffffffffffffffffffffff1614155b156118ab5760016006600085858581811061184457611843615166565b5b905060200201602081019061185991906143eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806118b6906150bf565b915050611721565b505050565b6118cb6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90614cd7565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b61197c6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090614cd7565b60405180910390fd5b6000611a1430610f9e565b9050611a1f8161343d565b50565b611a2a6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90614cd7565b60405180910390fd5b6005811115611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290614c77565b60405180910390fd5b80600a8190555050565b611b0d6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614cd7565b60405180910390fd5b601660149054906101000a900460ff1615611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190614d97565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c7a30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123ae565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc057600080fd5b505afa158015611cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf89190614418565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5a57600080fd5b505afa158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190614418565b6040518363ffffffff1660e01b8152600401611daf929190614a7e565b602060405180830381600087803b158015611dc957600080fd5b505af1158015611ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e019190614418565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e8a30610f9e565b600080611e956113dd565b426040518863ffffffff1660e01b8152600401611eb796959493929190614ad0565b6060604051808303818588803b158015611ed057600080fd5b505af1158015611ee4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f099190614659565b505050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611fab929190614aa7565b602060405180830381600087803b158015611fc557600080fd5b505af1158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd91906145ff565b506001601660146101000a81548160ff021916908315150217905550600160176000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555043600e819055506722b1c8c1227a0000600f8190555050565b6120b46123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890614cd7565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006121c9601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61225d6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190614cd7565b60405180910390fd5b80601660156101000a81548160ff02191690831515021790555050565b61230f6123a6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390614cd7565b60405180910390fd5b80600f8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561241e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241590614d77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248590614bf7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161256c9190614dd7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e090614d57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265090614bb7565b60405180910390fd5b6000811161269c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269390614cf7565b60405180910390fd5b6126a46113dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561271257506126e26113dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fcb57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127bb5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6127c457600080fd5b6004600e546127d39190614efe565b43116129f357601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156128e7576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506129f2565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156129935750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129f1576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612a9e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af45750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8c57601660149054906101000a900460ff16612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614db7565b60405180910390fd5b612b996064612b8b6019612b7d601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8110612bb9576006601054612bae9190614fdf565b600b81905550612ca7565b612c0a6064612bfc600f612bee601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8110612c2a576004601054612c1f9190614fdf565b600b81905550612ca6565b612c7b6064612c6d6005612c5f601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8110612c9b576002601054612c909190614fdf565b600b81905550612ca5565b601054600b819055505b5b5b6000612cb283610f9e565b9050612ce56064612cd7600d54683635c9adc5dea000006136c590919063ffffffff16565b61374090919063ffffffff16565b612cf8828461378a90919063ffffffff16565b1115612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614d37565b60405180910390fd5b6000600f541115612d8a57600f54821115612d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8090614b97565b60405180910390fd5b5b505b6000612d9730610f9e565b9050601660179054906101000a900460ff16158015612e045750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612e1c5750601660149054906101000a900460ff165b15612fc957612e726064612e646019612e56601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8210612e9257601e601054612e879190614efe565b600b81905550612f80565b612ee36064612ed5600f612ec7601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8210612f0357600f601054612ef89190614efe565b600b81905550612f7f565b612f546064612f466005612f38601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f9e565b6136c590919063ffffffff16565b61374090919063ffffffff16565b8210612f74576005601054612f699190614efe565b600b81905550612f7e565b601054600b819055505b5b5b600954811115612fc857601660159054906101000a900460ff16612fa45760095490505b6000600c541115612fbd57612fb8816137e8565b612fc7565b612fc68161395a565b5b5b5b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130725750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130895750601660189054906101000a900460ff165b1561309357600090505b60168054906101000a900460ff161580156130f85750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561314e5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315857600090505b613164848484846139b5565b50505050565b60008383111582906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99190614b75565b60405180910390fd5b50600083856131c19190614fdf565b9050809150509392505050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613230600a6132226003866136c590919063ffffffff16565b61374090919063ffffffff16565b60405161323c90614a4e565b60006040518083038185875af1925050503d8060008114613279576040519150601f19603f3d011682016040523d82523d6000602084013e61327e565b606091505b505090506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166132e4600a6132d66007876136c590919063ffffffff16565b61374090919063ffffffff16565b6040516132f090614a4e565b60006040518083038185875af1925050503d806000811461332d576040519150601f19603f3d011682016040523d82523d6000602084013e613332565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b98282604051613367929190614b4c565b60405180910390a1505050565b60006007548211156133bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b290614bd7565b60405180910390fd5b60006133c56139e2565b90506133da818461374090919063ffffffff16565b915050919050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6001601660176101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561347557613474615195565b5b6040519080825280602002602001820160405280156134a35781602001602082028036833780820191505090505b50905030816000815181106134bb576134ba615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561355d57600080fd5b505afa158015613571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135959190614418565b816001815181106135a9576135a8615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061361030601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123ae565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613674959493929190614df2565b600060405180830381600087803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b50505050506000601660176101000a81548160ff02191690831515021790555050565b6000808314156136d8576000905061373a565b600082846136e69190614f85565b90508284826136f59190614f54565b14613735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372c90614cb7565b60405180910390fd5b809150505b92915050565b600061378283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a0d565b905092915050565b60008082846137999190614efe565b9050838110156137de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d590614c17565b60405180910390fd5b8091505092915050565b6001601660176101000a81548160ff0219169083151502179055506000600c5460646138149190614fdf565b905060006138406064613832600c54866136c590919063ffffffff16565b61374090919063ffffffff16565b9050600061385860028361374090919063ffffffff16565b9050600061386f8286613a7090919063ffffffff16565b9050600047905061387f82613aba565b60006138948247613a7090919063ffffffff16565b905060006138be60646138b089856136c590919063ffffffff16565b61374090919063ffffffff16565b90506138c9816131ce565b600081836138d79190614fdf565b90506000861180156138e95750600081115b15613934576138f88682613d0c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828960405161392b93929190614e4c565b60405180910390a15b50505050505050506000601660176101000a81548160ff02191690831515021790555050565b6001601660176101000a81548160ff02191690831515021790555061397e81613aba565b6000479050600081111561399657613995476131ce565b5b506000601660176101000a81548160ff02191690831515021790555050565b806139c3576139c2613e00565b5b6139ce848484613e43565b806139dc576139db61400e565b5b50505050565b60008060006139ef614022565b91509150613a06818361374090919063ffffffff16565b9250505090565b60008083118290613a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a4b9190614b75565b60405180910390fd5b5060008385613a639190614f54565b9050809150509392505050565b6000613ab283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061316a565b905092915050565b6000600267ffffffffffffffff811115613ad757613ad6615195565b5b604051908082528060200260200182016040528015613b055781602001602082028036833780820191505090505b5090503081600081518110613b1d57613b1c615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613bbf57600080fd5b505afa158015613bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf79190614418565b81600181518110613c0b57613c0a615166565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c7230601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123ae565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cd6959493929190614df2565b600060405180830381600087803b158015613cf057600080fd5b505af1158015613d04573d6000803e3d6000fd5b505050505050565b613d3930601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123ae565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d856113dd565b426040518863ffffffff1660e01b8152600401613da796959493929190614ad0565b6060604051808303818588803b158015613dc057600080fd5b505af1158015613dd4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613df99190614659565b5050505050565b6000600a54148015613e1457506000600b54145b15613e1e57613e41565b600a54601181905550600b546012819055506000600a819055506000600b819055505b565b600080600080600080613e5587614084565b955095509550955095509550613eb386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f4885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461378a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f94816140ec565b613f9e84836141a9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ffb9190614dd7565b60405180910390a3505050505050505050565b601154600a81905550601254600b81905550565b600080600060075490506000683635c9adc5dea000009050614058683635c9adc5dea0000060075461374090919063ffffffff16565b82101561407757600754683635c9adc5dea00000935093505050614080565b81819350935050505b9091565b60008060008060008060008060006140a18a600a54600b546141e3565b92509250925060006140b16139e2565b905060008060006140c48e878787614279565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006140f66139e2565b9050600061410d82846136c590919063ffffffff16565b905061416181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461378a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6141be82600754613a7090919063ffffffff16565b6007819055506141d98160085461378a90919063ffffffff16565b6008819055505050565b60008060008061420f6064614201888a6136c590919063ffffffff16565b61374090919063ffffffff16565b90506000614239606461422b888b6136c590919063ffffffff16565b61374090919063ffffffff16565b9050600061426282614254858c613a7090919063ffffffff16565b613a7090919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061429285896136c590919063ffffffff16565b905060006142a986896136c590919063ffffffff16565b905060006142c087896136c590919063ffffffff16565b905060006142e9826142db8587613a7090919063ffffffff16565b613a7090919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008135905061431181615675565b92915050565b60008151905061432681615675565b92915050565b60008135905061433b8161568c565b92915050565b60008083601f840112614357576143566151c9565b5b8235905067ffffffffffffffff811115614374576143736151c4565b5b6020830191508360208202830111156143905761438f6151ce565b5b9250929050565b6000813590506143a6816156a3565b92915050565b6000815190506143bb816156a3565b92915050565b6000813590506143d0816156ba565b92915050565b6000815190506143e5816156ba565b92915050565b600060208284031215614401576144006151d8565b5b600061440f84828501614302565b91505092915050565b60006020828403121561442e5761442d6151d8565b5b600061443c84828501614317565b91505092915050565b60006020828403121561445b5761445a6151d8565b5b60006144698482850161432c565b91505092915050565b60008060408385031215614489576144886151d8565b5b600061449785828601614302565b92505060206144a885828601614302565b9150509250929050565b6000806000606084860312156144cb576144ca6151d8565b5b60006144d986828701614302565b93505060206144ea86828701614302565b92505060406144fb868287016143c1565b9150509250925092565b6000806040838503121561451c5761451b6151d8565b5b600061452a85828601614302565b925050602061453b85828601614397565b9150509250929050565b6000806040838503121561455c5761455b6151d8565b5b600061456a85828601614302565b925050602061457b858286016143c1565b9150509250929050565b6000806020838503121561459c5761459b6151d8565b5b600083013567ffffffffffffffff8111156145ba576145b96151d3565b5b6145c685828601614341565b92509250509250929050565b6000602082840312156145e8576145e76151d8565b5b60006145f684828501614397565b91505092915050565b600060208284031215614615576146146151d8565b5b6000614623848285016143ac565b91505092915050565b600060208284031215614642576146416151d8565b5b6000614650848285016143c1565b91505092915050565b600080600060608486031215614672576146716151d8565b5b6000614680868287016143d6565b9350506020614691868287016143d6565b92505060406146a2868287016143d6565b9150509250925092565b60006146b883836146c4565b60208301905092915050565b6146cd81615013565b82525050565b6146dc81615013565b82525050565b60006146ed82614eae565b6146f78185614ed1565b935061470283614e9e565b8060005b8381101561473357815161471a88826146ac565b975061472583614ec4565b925050600181019050614706565b5085935050505092915050565b61474981615037565b82525050565b6147588161507a565b82525050565b600061476982614eb9565b6147738185614eed565b935061478381856020860161508c565b61478c816151dd565b840191505092915050565b60006147a4601683614eed565b91506147af826151ee565b602082019050919050565b60006147c7602383614eed565b91506147d282615217565b604082019050919050565b60006147ea602a83614eed565b91506147f582615266565b604082019050919050565b600061480d602283614eed565b9150614818826152b5565b604082019050919050565b6000614830601b83614eed565b915061483b82615304565b602082019050919050565b6000614853603983614eed565b915061485e8261532d565b604082019050919050565b6000614876601d83614eed565b91506148818261537c565b602082019050919050565b6000614899601783614eed565b91506148a4826153a5565b602082019050919050565b60006148bc603183614eed565b91506148c7826153ce565b604082019050919050565b60006148df602183614eed565b91506148ea8261541d565b604082019050919050565b6000614902602083614eed565b915061490d8261546c565b602082019050919050565b6000614925602983614eed565b915061493082615495565b604082019050919050565b6000614948602e83614eed565b9150614953826154e4565b604082019050919050565b600061496b602283614eed565b915061497682615533565b604082019050919050565b600061498e602583614eed565b915061499982615582565b604082019050919050565b60006149b1600083614ee2565b91506149bc826155d1565b600082019050919050565b60006149d4602483614eed565b91506149df826155d4565b604082019050919050565b60006149f7601783614eed565b9150614a0282615623565b602082019050919050565b6000614a1a601883614eed565b9150614a258261564c565b602082019050919050565b614a3981615063565b82525050565b614a488161506d565b82525050565b6000614a59826149a4565b9150819050919050565b6000602082019050614a7860008301846146d3565b92915050565b6000604082019050614a9360008301856146d3565b614aa060208301846146d3565b9392505050565b6000604082019050614abc60008301856146d3565b614ac96020830184614a30565b9392505050565b600060c082019050614ae560008301896146d3565b614af26020830188614a30565b614aff604083018761474f565b614b0c606083018661474f565b614b1960808301856146d3565b614b2660a0830184614a30565b979650505050505050565b6000602082019050614b466000830184614740565b92915050565b6000604082019050614b616000830185614740565b614b6e6020830184614740565b9392505050565b60006020820190508181036000830152614b8f818461475e565b905092915050565b60006020820190508181036000830152614bb081614797565b9050919050565b60006020820190508181036000830152614bd0816147ba565b9050919050565b60006020820190508181036000830152614bf0816147dd565b9050919050565b60006020820190508181036000830152614c1081614800565b9050919050565b60006020820190508181036000830152614c3081614823565b9050919050565b60006020820190508181036000830152614c5081614846565b9050919050565b60006020820190508181036000830152614c7081614869565b9050919050565b60006020820190508181036000830152614c908161488c565b9050919050565b60006020820190508181036000830152614cb0816148af565b9050919050565b60006020820190508181036000830152614cd0816148d2565b9050919050565b60006020820190508181036000830152614cf0816148f5565b9050919050565b60006020820190508181036000830152614d1081614918565b9050919050565b60006020820190508181036000830152614d308161493b565b9050919050565b60006020820190508181036000830152614d508161495e565b9050919050565b60006020820190508181036000830152614d7081614981565b9050919050565b60006020820190508181036000830152614d90816149c7565b9050919050565b60006020820190508181036000830152614db0816149ea565b9050919050565b60006020820190508181036000830152614dd081614a0d565b9050919050565b6000602082019050614dec6000830184614a30565b92915050565b600060a082019050614e076000830188614a30565b614e14602083018761474f565b8181036040830152614e2681866146e2565b9050614e3560608301856146d3565b614e426080830184614a30565b9695505050505050565b6000606082019050614e616000830186614a30565b614e6e6020830185614a30565b614e7b6040830184614a30565b949350505050565b6000602082019050614e986000830184614a3f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614f0982615063565b9150614f1483615063565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f4957614f48615108565b5b828201905092915050565b6000614f5f82615063565b9150614f6a83615063565b925082614f7a57614f79615137565b5b828204905092915050565b6000614f9082615063565b9150614f9b83615063565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fd457614fd3615108565b5b828202905092915050565b6000614fea82615063565b9150614ff583615063565b92508282101561500857615007615108565b5b828203905092915050565b600061501e82615043565b9050919050565b600061503082615043565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061508582615063565b9050919050565b60005b838110156150aa57808201518184015260208101905061508f565b838111156150b9576000848401525b50505050565b60006150ca82615063565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150fd576150fc615108565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f616d6f756e742065786365656473206d61782062757900000000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f4261736520666565206d757374206265206c657373207468616e203130000000600082015250565b7f746178206d757374206265206c657373207468616e2035000000000000000000600082015250565b7f6c6971756964697479206665652070657263656e74616765206d75737420626560008201527f206265747765656e203020746f20313030000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6d61782077616c6c65742070657263656e74616765206d75737420626520626560008201527f747765656e203020746f20313030000000000000000000000000000000000000602082015250565b7f616d6f756e742065786365656473206d61782077616c6c657420686f6c64696e60008201527f6773000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b61567e81615013565b811461568957600080fd5b50565b61569581615025565b81146156a057600080fd5b50565b6156ac81615037565b81146156b757600080fd5b50565b6156c381615063565b81146156ce57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040dc319eeff6169ee37b3bc16b1091b498519236855e39762b434f52b1e86fb964736f6c63430008050033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000903d34e41e1ad06b6783d83ce629ce7b4b40ea090000000000000000000000005018ac9c1ec6b2259510758b5e2f5a7e245a7c17

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0x903d34E41e1AD06b6783D83ce629ce7b4B40eA09
Arg [1] : marketingWalletAddress (address): 0x5018aC9C1ec6b2259510758b5e2F5A7e245A7c17

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000903d34e41e1ad06b6783d83ce629ce7b4b40ea09
Arg [1] : 0000000000000000000000005018ac9c1ec6b2259510758b5e2f5a7e245a7c17


Deployed Bytecode Sourcemap

3858:18340:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6254:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7106:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20193:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6531:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7275:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21053:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21594:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6440:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21156:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19140:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19511:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19824:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18631:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21431:155;;;;;;;;;;;;;:::i;:::-;;6634:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2937:148;;;;;;;;;;;;;:::i;:::-;;20329:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18918:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2723:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19924:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6345:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21811:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6780:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20767:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19387:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21257:162;;;;;;;;;;;;;:::i;:::-;;19676:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17770:849;;;;;;;;;;;;;:::i;:::-;;19266:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21702:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6955:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20667:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20568:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6254:83;6291:13;6324:5;;;;;;;;;;;;;;;;;6317:12;;6254:83;:::o;7106:161::-;7181:4;7198:39;7207:12;:10;:12::i;:::-;7221:7;7230:6;7198:8;:39::i;:::-;7255:4;7248:11;;7106:161;;;;:::o;20193:128::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20305:8:::1;20279:23;:34;;;;20193:128:::0;:::o;6531:95::-;6584:7;4307:12;6604:14;;6531:95;:::o;7275:313::-;7373:4;7390:36;7400:6;7408:9;7419:6;7390:9;:36::i;:::-;7437:121;7446:6;7454:12;:10;:12::i;:::-;7468:89;7506:6;7468:89;;;;;;;;;;;;;;;;;:11;:19;7480:6;7468:19;;;;;;;;;;;;;;;:33;7488:12;:10;:12::i;:::-;7468:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7437:8;:121::i;:::-;7576:4;7569:11;;7275:313;;;;;:::o;21053:91::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21131:5:::1;21115;:13;21121:6;21115:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;21053:91:::0;:::o;21594:100::-;21638:4;21662:24;21680:4;21662:9;:24::i;:::-;21655:31;;21594:100;:::o;6440:83::-;6481:5;4632:1;6499:16;;6440:83;:::o;21156:89::-;21204:4;21228:5;:9;21234:2;21228:9;;;;;;;;;;;;;;;;;;;;;;;;;21221:16;;21156:89;;;:::o;19140:114::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19242:4:::1;19217:18;:22;19236:2;19217:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19140:114:::0;:::o;19511:149::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19591:2:::1;19584:3;:9;;19576:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19649:3;19638:8;:14;;;;19511:149:::0;:::o;19824:92::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19903:5:::1;19890:10;;:18;;;;;;;;;;;;;;;;;;19824:92:::0;:::o;18631:279::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18778:5:::1;18732:18;:43;18751:23;;;;;;;;;;;18732:43;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;18820:22;18794:23;;:48;;;;;;;;;;;;;;;;;;18898:4;18853:18;:42;18872:22;18853:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;18631:279:::0;:::o;21431:155::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21485:26:::1;21514:21;21485:50;;21546:32;21559:18;21546:12;:32::i;:::-;21474:112;21431:155::o:0;6634:138::-;6700:7;6727:37;6747:7;:16;6755:7;6747:16;;;;;;;;;;;;;;;;6727:19;:37::i;:::-;6720:44;;6634:138;;;:::o;2937:148::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3044:1:::1;3007:40;;3028:6;::::0;::::1;;;;;;;;3007:40;;;;;;;;;;;;3075:1;3058:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2937:148::o:0;20329:231::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20435:1:::1;20421:10;:15;;:36;;;;;20454:3;20440:10;:17;;20421:36;20413:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20542:10;20519:20;:33;;;;20329:231:::0;:::o;18918:214::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19036:5:::1;19002:18;:31;19021:11;;;;;;;;;;;19002:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19066:10;19052:11;;:24;;;;;;;;;;;;;;;;;;19120:4;19087:18;:30;19106:10;19087:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18918:214:::0;:::o;2723:79::-;2761:7;2788:6;;;;;;;;;;;2781:13;;2723:79;:::o;19924:261::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20039:1:::1;20012:23;;:28;;:62;;;;;20071:3;20044:23;;:30;;20012:62;20004:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;20165:12;20139:23;:38;;;;19924:261:::0;:::o;6345:87::-;6384:13;6417:7;;;;;;;;;;;;;;;;;6410:14;;6345:87;:::o;21811:246::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21922:13:::1;;;;;;;;;;;21914:21;;:4;:21;;;;21906:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;22008:41;22037:4;22043:5;22008:28;:41::i;:::-;21811:246:::0;;:::o;6780:167::-;6858:4;6875:42;6885:12;:10;:12::i;:::-;6899:9;6910:6;6875:9;:42::i;:::-;6935:4;6928:11;;6780:167;;;;:::o;20767:274::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20845:6:::1;20840:194;20861:5;;:12;;20857:1;:16;20840:194;;;20911:13;;;;;;;;;;;20899:25;;:5;;20905:1;20899:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:25;;;;:65;;;;;20948:15;;;;;;;;;;;20928:36;;:5;;20934:1;20928:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:36;;;;20899:65;20895:128;;;21003:4;20985:5;:15;20991:5;;20997:1;20991:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20985:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20895:128;20875:3;;;;;:::i;:::-;;;;20840:194;;;;20767:274:::0;;:::o;19387:112::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19486:5:::1;19463:20;::::0;:28:::1;;;;;;;;;;;;;;;;;;19387:112:::0;:::o;21257:162::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21311:23:::1;21337:24;21355:4;21337:9;:24::i;:::-;21311:50;;21372:39;21395:15;21372:22;:39::i;:::-;21300:119;21257:162::o:0;19676:140::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19755:1:::1;19748:3;:8;;19740:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;19805:3;19795:7;:13;;;;19676:140:::0;:::o;17770:849::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17834:11:::1;;;;;;;;;;;17833:12;17825:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17883:35;17940:42;17883:100;;18012:16;17994:15;;:34;;;;;;;;;;;;;;;;;;18039:58;18056:4;18071:15;;;;;;;;;;;4307:12;18039:8;:58::i;:::-;18142:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18124:56;;;18189:4;18196:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18124:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18108:13;;:112;;;;;;;;;;;;;;;;;;18231:15;;;;;;;;;;;:31;;;18270:21;18301:4;18307:24;18325:4;18307:9;:24::i;:::-;18332:1;18334::::0;18336:7:::1;:5;:7::i;:::-;18344:15;18231:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18378:13;;;;;;;;;;;18371:29;;;18409:15;;;;;;;;;;;18427:14;18371:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18467:4;18453:11;;:18;;;;;;;;;;;;;;;;;;18525:4;18482:25;:40;18508:13;;;;;;;;;;;18482:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;18554:12;18540:11;:26;;;;18593:18;18577:13;:34;;;;17814:805;17770:849::o:0;19266:113::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19366:5:::1;19341:18;:22;19360:2;19341:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19266:113:::0;:::o;21702:101::-;21747:4;21771:24;21781:13;;;;;;;;;;;21771:9;:24::i;:::-;21764:31;;21702:101;:::o;6955:143::-;7036:7;7063:11;:18;7075:5;7063:18;;;;;;;;;;;;;;;:27;7082:7;7063:27;;;;;;;;;;;;;;;;7056:34;;6955:143;;;;:::o;20667:88::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20742:5:::1;20731:8;;:16;;;;;;;;;;;;;;;;;;20667:88:::0;:::o;20568:91::-;2860:12;:10;:12::i;:::-;2850:22;;:6;;;;;;;;;;:22;;;2842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20648:3:::1;20632:13;:19;;;;20568:91:::0;:::o;132:98::-;185:7;212:10;205:17;;132:98;:::o;8203:335::-;8313:1;8296:19;;:5;:19;;;;8288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8394:1;8375:21;;:7;:21;;;;8367:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8476:6;8446:11;:18;8458:5;8446:18;;;;;;;;;;;;;;;:27;8465:7;8446:27;;;;;;;;;;;;;;;:36;;;;8514:7;8498:32;;8507:5;8498:32;;;8523:6;8498:32;;;;;;:::i;:::-;;;;;;;;8203:335;;;:::o;8550:3273::-;8654:1;8638:18;;:4;:18;;;;8630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8731:1;8717:16;;:2;:16;;;;8709:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8801:1;8792:6;:10;8784:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8872:7;:5;:7::i;:::-;8864:15;;:4;:15;;;;:32;;;;;8889:7;:5;:7::i;:::-;8883:13;;:2;:13;;;;8864:32;8861:2593;;;8936:5;:11;8942:4;8936:11;;;;;;;;;;;;;;;;;;;;;;;;;8935:12;:26;;;;;8952:5;:9;8958:2;8952:9;;;;;;;;;;;;;;;;;;;;;;;;;8951:10;8935:26;8927:35;;;;;;9013:1;8999:11;;:15;;;;:::i;:::-;8983:12;:31;8979:319;;9047:13;;;;;;;;;;;9039:21;;:4;:21;;;;:57;;;;;9080:15;;;;;;;;;;;9064:32;;:4;:32;;;;9039:57;9035:248;;;9135:4;9121:5;:11;9127:4;9121:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;9035:248;;;9175:13;;;;;;;;;;;9169:19;;:2;:19;;;;:53;;;;;9206:15;;;;;;;;;;;9192:30;;:2;:30;;;;9169:53;9165:118;;;9259:4;9247:5;:9;9253:2;9247:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;9165:118;9035:248;8979:319;9325:13;;;;;;;;;;;9317:21;;:4;:21;;;:55;;;;;9356:15;;;;;;;;;;;9342:30;;:2;:30;;;;9317:55;:82;;;;;9377:18;:22;9396:2;9377:22;;;;;;;;;;;;;;;;;;;;;;;;;9376:23;9317:82;9314:1013;;;9428:11;;;;;;;;;;;9420:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9519:41;9556:3;9519:32;9548:2;9519:24;9529:13;;;;;;;;;;;9519:9;:24::i;:::-;:28;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;9509:6;:51;9505:448;;9607:1;9596:8;;:12;;;;:::i;:::-;9585:8;:23;;;;9505:448;;;9648:41;9685:3;9648:32;9677:2;9648:24;9658:13;;;;;;;;;;;9648:9;:24::i;:::-;:28;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;9638:6;:51;9634:319;;9736:1;9725:8;;:12;;;;:::i;:::-;9714:8;:23;;;;9634:319;;;9777:40;9813:3;9777:31;9806:1;9777:24;9787:13;;;;;;;;;;;9777:9;:24::i;:::-;:28;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;9767:6;:50;9763:190;;9864:1;9853:8;;:12;;;;:::i;:::-;9842:8;:23;;;;9763:190;;;9925:8;;9914;:19;;;;9763:190;9634:319;9505:448;9989:18;10010:22;10028:2;10010:9;:22::i;:::-;9989:43;;10088:42;10126:3;10088:33;10100:20;;4307:12;10088:11;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;10059:25;10070:13;10059:6;:10;;:25;;;;:::i;:::-;:71;;10051:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;10208:1;10192:13;;:17;10188:124;;;10252:13;;10242:6;:23;;10234:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10188:124;9401:926;9314:1013;10341:28;10372:24;10390:4;10372:9;:24::i;:::-;10341:55;;10417:6;;;;;;;;;;;10416:7;:32;;;;;10435:13;;;;;;;;;;;10427:21;;:4;:21;;;;10416:32;:47;;;;;10452:11;;;;;;;;;;;10416:47;10413:1030;;;10500:41;10537:3;10500:32;10529:2;10500:24;10510:13;;;;;;;;;;;10500:9;:24::i;:::-;:28;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;10490:6;:51;10486:450;;10588:2;10577:8;;:13;;;;:::i;:::-;10566:8;:24;;;;10486:450;;;10630:41;10667:3;10630:32;10659:2;10630:24;10640:13;;;;;;;;;;;10630:9;:24::i;:::-;:28;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;10620:6;:51;10616:320;;10718:2;10707:8;;:13;;;;:::i;:::-;10696:8;:24;;;;10616:320;;;10760:40;10796:3;10760:31;10789:1;10760:24;10770:13;;;;;;;;;;;10760:9;:24::i;:::-;:28;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;10750:6;:50;10746:190;;10847:1;10836:8;;:12;;;;:::i;:::-;10825:8;:23;;;;10746:190;;;10908:8;;10897;:19;;;;10746:190;10616:320;10486:450;10982:23;;10959:20;:46;10956:472;;;11034:8;;;;;;;;;;;11030:111;;11094:23;;11071:46;;11030:111;11195:1;11169:23;;:27;11165:217;;;11225:36;11240:20;11225:14;:36::i;:::-;11165:217;;;11318:40;11337:20;11318:18;:40::i;:::-;11165:217;10956:472;10413:1030;8898:2556;8861:2593;11464:12;11479:4;11464:19;;11499:18;:24;11518:4;11499:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11527:18;:22;11546:2;11527:22;;;;;;;;;;;;;;;;;;;;;;;;;11499:50;:64;;;;11553:10;;;;;;;;;;;11499:64;11496:111;;;11590:5;11580:15;;11496:111;11623:20;;;;;;;;;;11622:21;:57;;;;;11648:25;:31;11674:4;11648:31;;;;;;;;;;;;;;;;;;;;;;;;;11647:32;11622:57;:91;;;;;11684:25;:29;11710:2;11684:29;;;;;;;;;;;;;;;;;;;;;;;;;11683:30;11622:91;11619:138;;;11740:5;11730:15;;11619:138;11777:38;11792:4;11797:2;11800:6;11807:7;11777:14;:38::i;:::-;8619:3204;8550:3273;;;:::o;1269:190::-;1355:7;1388:1;1383;:6;;1391:12;1375:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1415:9;1431:1;1427;:5;;;;:::i;:::-;1415:17;;1450:1;1443:8;;;1269:190;;;;;:::o;14619:266::-;14677:8;14691:11;;;;;;;;;;;:16;;14715:21;14733:2;14715:13;14726:1;14715:6;:10;;:13;;;;:::i;:::-;:17;;:21;;;;:::i;:::-;14691:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14676:65;;;14753:14;14773:23;;;;;;;;;;;:28;;14809:21;14827:2;14809:13;14820:1;14809:6;:10;;:13;;;;:::i;:::-;:17;;:21;;;;:::i;:::-;14773:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14752:83;;;14853:24;14862:3;14867:9;14853:24;;;;;;;:::i;:::-;;;;;;;;14665:220;;14619:266;:::o;7596:254::-;7663:7;7702;;7691;:18;;7683:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7767:19;7790:10;:8;:10::i;:::-;7767:33;;7818:24;7830:11;7818:7;:11;;:24;;;;:::i;:::-;7811:31;;;7596:254;;;:::o;22065:130::-;22182:5;22148:25;:31;22174:4;22148:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22065:130;;:::o;14122:489::-;5697:4;5688:6;;:13;;;;;;;;;;;;;;;;;;14206:21:::1;14244:1;14230:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14206:40;;14275:4;14257;14262:1;14257:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14301:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14291:4;14296:1;14291:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14334:62;14351:4;14366:15;;;;;;;;;;;14384:11;14334:8;:62::i;:::-;14407:15;;;;;;;;;;;:66;;;14488:11;14514:1;14530:4;14557;14577:15;14407:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14195:416;5733:5:::0;5724:6;;:14;;;;;;;;;;;;;;;;;;14122:489;:::o;1467:245::-;1525:7;1553:1;1548;:6;1545:46;;;1578:1;1571:8;;;;1545:46;1601:9;1617:1;1613;:5;;;;:::i;:::-;1601:17;;1646:1;1641;1637;:5;;;;:::i;:::-;:10;1629:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1703:1;1696:8;;;1467:245;;;;;:::o;1720:132::-;1778:7;1805:39;1809:1;1812;1805:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1798:46;;1720:132;;;;:::o;938:179::-;996:7;1016:9;1032:1;1028;:5;;;;:::i;:::-;1016:17;;1057:1;1052;:6;;1044:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1108:1;1101:8;;;938:179;;;;:::o;12352:968::-;5697:4;5688:6;;:13;;;;;;;;;;;;;;;;;;12437:25:::1;12471:23;;12465:3;:29;;;;:::i;:::-;12437:57;;12505:23;12531:58;12585:3;12531:49;12556:23;;12531:20;:24;;:49;;;;:::i;:::-;:53;;:58;;;;:::i;:::-;12505:84;;12600:15;12618:22;12638:1;12618:15;:19;;:22;;;;:::i;:::-;12600:40;;12653:26;12682:33;12707:7;12682:20;:24;;:33;;;;:::i;:::-;12653:62;;12726:25;12754:21;12726:49;;12788:36;12805:18;12788:16;:36::i;:::-;12837:18;12858:44;12884:17;12858:21;:25;;:44;;;;:::i;:::-;12837:65;;12915:18;12936:42;12974:3;12936:33;12951:17;12936:10;:14;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;12915:63;;12989:24;13002:10;12989:12;:24::i;:::-;13026:23;13065:10;13052;:23;;;;:::i;:::-;13026:49;;13102:1;13092:7;:11;:34;;;;;13125:1;13107:15;:19;13092:34;13088:225;;;13173:38;13186:7;13195:15;13173:12;:38::i;:::-;13233:68;13248:18;13268:15;13285;13233:68;;;;;;;;:::i;:::-;;;;;;;;13088:225;12426:894;;;;;;;;5733:5:::0;5724:6;;:14;;;;;;;;;;;;;;;;;;12352:968;:::o;13328:307::-;5697:4;5688:6;;:13;;;;;;;;;;;;;;;;;;13427:38:::1;13444:20;13427:16;:38::i;:::-;13478:26;13507:21;13478:50;;13563:1;13542:18;:22;13539:89;;;13581:35;13594:21;13581:12;:35::i;:::-;13539:89;13406:229;5733:5:::0;5724:6;;:14;;;;;;;;;;;;;;;;;;13328:307;:::o;14897:263::-;15009:7;15005:40;;15031:14;:12;:14::i;:::-;15005:40;15056:44;15074:6;15082:9;15093:6;15056:17;:44::i;:::-;15115:7;15111:41;;15137:15;:13;:15::i;:::-;15111:41;14897:263;;;;:::o;16501:163::-;16542:7;16563:15;16580;16599:19;:17;:19::i;:::-;16562:56;;;;16636:20;16648:7;16636;:11;;:20;;;;:::i;:::-;16629:27;;;;16501:163;:::o;1860:189::-;1946:7;1978:1;1974;:5;1981:12;1966:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2005:9;2021:1;2017;:5;;;;:::i;:::-;2005:17;;2040:1;2033:8;;;1860:189;;;;;:::o;1125:136::-;1183:7;1210:43;1214:1;1217;1210:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1203:50;;1125:136;;;;:::o;13643:471::-;13709:21;13747:1;13733:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13709:40;;13778:4;13760;13765:1;13760:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13804:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13794:4;13799:1;13794:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;13837:62;13854:4;13869:15;;;;;;;;;;;13887:11;13837:8;:62::i;:::-;13910:15;;;;;;;;;;;:66;;;13991:11;14017:1;14033:4;14060;14080:15;13910:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13698:416;13643:471;:::o;11831:513::-;11979:62;11996:4;12011:15;;;;;;;;;;;12029:11;11979:8;:62::i;:::-;12084:15;;;;;;;;;;;:31;;;12123:9;12156:4;12176:11;12202:1;12245;12288:7;:5;:7::i;:::-;12310:15;12084:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11831:513;;:::o;7858:210::-;7915:1;7904:7;;:12;:29;;;;;7932:1;7920:8;;:13;7904:29;7901:41;;;7935:7;;7901:41;7970:7;;7952:15;:25;;;;8007:8;;7988:16;:27;;;;8036:1;8026:7;:11;;;;8059:1;8048:8;:12;;;;7858:210;:::o;15168:490::-;15267:15;15284:23;15309:12;15323:23;15348:12;15362:13;15379:19;15390:7;15379:10;:19::i;:::-;15266:132;;;;;;;;;;;;15427:28;15447:7;15427;:15;15435:6;15427:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15409:7;:15;15417:6;15409:15;;;;;;;;;;;;;;;:46;;;;15487:39;15510:15;15487:7;:18;15495:9;15487:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15466:7;:18;15474:9;15466:18;;;;;;;;;;;;;;;:60;;;;15540:16;15550:5;15540:9;:16::i;:::-;15567:23;15579:4;15585;15567:11;:23::i;:::-;15623:9;15606:44;;15615:6;15606:44;;;15634:15;15606:44;;;;;;:::i;:::-;;;;;;;;15255:403;;;;;;15168:490;;;:::o;8080:115::-;8134:15;;8124:7;:25;;;;8171:16;;8160:8;:27;;;;8080:115::o;16672:255::-;16722:7;16731;16751:15;16769:7;;16751:25;;16787:15;4307:12;16787:25;;16836:20;4307:12;16836:7;;:11;;:20;;;;:::i;:::-;16826:7;:30;16823:60;;;16866:7;;4307:12;16858:25;;;;;;;;16823:60;16902:7;16911;16894:25;;;;;;16672:255;;;:::o;15666:468::-;15725:7;15734;15743;15752;15761;15770;15791:23;15816:12;15830:13;15847:39;15859:7;15868;;15877:8;;15847:11;:39::i;:::-;15790:96;;;;;;15897:19;15920:10;:8;:10::i;:::-;15897:33;;15942:15;15959:23;15984:12;16000:46;16012:7;16021:4;16027:5;16034:11;16000;:46::i;:::-;15941:105;;;;;;16065:7;16074:15;16091:4;16097:15;16114:4;16120:5;16057:69;;;;;;;;;;;;;;;;;;;15666:468;;;;;;;:::o;17352:214::-;17405:19;17428:10;:8;:10::i;:::-;17405:33;;17449:13;17465:22;17475:11;17465:5;:9;;:22;;;;:::i;:::-;17449:38;;17525:33;17552:5;17525:7;:22;17541:4;17525:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17500:7;:22;17516:4;17500:22;;;;;;;;;;;;;;;:58;;;;17394:172;;17352:214;:::o;17574:147::-;17652:17;17664:4;17652:7;;:11;;:17;;;;:::i;:::-;17642:7;:27;;;;17693:20;17708:4;17693:10;;:14;;:20;;;;:::i;:::-;17680:10;:33;;;;17574:147;;:::o;16142:351::-;16235:7;16244;16253;16273:12;16288:28;16312:3;16288:19;16300:6;16288:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16273:43;;16327:13;16343:29;16368:3;16343:20;16355:7;16343;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16327:45;;16383:23;16409:28;16431:5;16409:17;16421:4;16409:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16383:54;;16456:15;16473:4;16479:5;16448:37;;;;;;;;;16142:351;;;;;;;:::o;16935:409::-;17045:7;17054;17063;17083:15;17101:24;17113:11;17101:7;:11;;:24;;;;:::i;:::-;17083:42;;17136:12;17151:21;17160:11;17151:4;:8;;:21;;;;:::i;:::-;17136:36;;17183:13;17199:22;17209:11;17199:5;:9;;:22;;;;:::i;:::-;17183:38;;17232:23;17258:28;17280:5;17258:17;17270:4;17258:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17232:54;;17305:7;17314:15;17331:4;17297:39;;;;;;;;;;16935:409;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;479:568::-;552:8;562:6;612:3;605:4;597:6;593:17;589:27;579:2;;620:79;;:::i;:::-;579:2;733:6;720:20;710:30;;763:18;755:6;752:30;749:2;;;785:79;;:::i;:::-;749:2;899:4;891:6;887:17;875:29;;953:3;945:4;937:6;933:17;923:8;919:32;916:41;913:2;;;960:79;;:::i;:::-;913:2;569:478;;;;;:::o;1053:133::-;1096:5;1134:6;1121:20;1112:29;;1150:30;1174:5;1150:30;:::i;:::-;1102:84;;;;:::o;1192:137::-;1246:5;1277:6;1271:13;1262:22;;1293:30;1317:5;1293:30;:::i;:::-;1252:77;;;;:::o;1335:139::-;1381:5;1419:6;1406:20;1397:29;;1435:33;1462:5;1435:33;:::i;:::-;1387:87;;;;:::o;1480:143::-;1537:5;1568:6;1562:13;1553:22;;1584:33;1611:5;1584:33;:::i;:::-;1543:80;;;;:::o;1629:329::-;1688:6;1737:2;1725:9;1716:7;1712:23;1708:32;1705:2;;;1743:79;;:::i;:::-;1705:2;1863:1;1888:53;1933:7;1924:6;1913:9;1909:22;1888:53;:::i;:::-;1878:63;;1834:117;1695:263;;;;:::o;1964:351::-;2034:6;2083:2;2071:9;2062:7;2058:23;2054:32;2051:2;;;2089:79;;:::i;:::-;2051:2;2209:1;2234:64;2290:7;2281:6;2270:9;2266:22;2234:64;:::i;:::-;2224:74;;2180:128;2041:274;;;;:::o;2321:345::-;2388:6;2437:2;2425:9;2416:7;2412:23;2408:32;2405:2;;;2443:79;;:::i;:::-;2405:2;2563:1;2588:61;2641:7;2632:6;2621:9;2617:22;2588:61;:::i;:::-;2578:71;;2534:125;2395:271;;;;:::o;2672:474::-;2740:6;2748;2797:2;2785:9;2776:7;2772:23;2768:32;2765:2;;;2803:79;;:::i;:::-;2765:2;2923:1;2948:53;2993:7;2984:6;2973:9;2969:22;2948:53;:::i;:::-;2938:63;;2894:117;3050:2;3076:53;3121:7;3112:6;3101:9;3097:22;3076:53;:::i;:::-;3066:63;;3021:118;2755:391;;;;;:::o;3152:619::-;3229:6;3237;3245;3294:2;3282:9;3273:7;3269:23;3265:32;3262:2;;;3300:79;;:::i;:::-;3262:2;3420:1;3445:53;3490:7;3481:6;3470:9;3466:22;3445:53;:::i;:::-;3435:63;;3391:117;3547:2;3573:53;3618:7;3609:6;3598:9;3594:22;3573:53;:::i;:::-;3563:63;;3518:118;3675:2;3701:53;3746:7;3737:6;3726:9;3722:22;3701:53;:::i;:::-;3691:63;;3646:118;3252:519;;;;;:::o;3777:468::-;3842:6;3850;3899:2;3887:9;3878:7;3874:23;3870:32;3867:2;;;3905:79;;:::i;:::-;3867:2;4025:1;4050:53;4095:7;4086:6;4075:9;4071:22;4050:53;:::i;:::-;4040:63;;3996:117;4152:2;4178:50;4220:7;4211:6;4200:9;4196:22;4178:50;:::i;:::-;4168:60;;4123:115;3857:388;;;;;:::o;4251:474::-;4319:6;4327;4376:2;4364:9;4355:7;4351:23;4347:32;4344:2;;;4382:79;;:::i;:::-;4344:2;4502:1;4527:53;4572:7;4563:6;4552:9;4548:22;4527:53;:::i;:::-;4517:63;;4473:117;4629:2;4655:53;4700:7;4691:6;4680:9;4676:22;4655:53;:::i;:::-;4645:63;;4600:118;4334:391;;;;;:::o;4731:559::-;4817:6;4825;4874:2;4862:9;4853:7;4849:23;4845:32;4842:2;;;4880:79;;:::i;:::-;4842:2;5028:1;5017:9;5013:17;5000:31;5058:18;5050:6;5047:30;5044:2;;;5080:79;;:::i;:::-;5044:2;5193:80;5265:7;5256:6;5245:9;5241:22;5193:80;:::i;:::-;5175:98;;;;4971:312;4832:458;;;;;:::o;5296:323::-;5352:6;5401:2;5389:9;5380:7;5376:23;5372:32;5369:2;;;5407:79;;:::i;:::-;5369:2;5527:1;5552:50;5594:7;5585:6;5574:9;5570:22;5552:50;:::i;:::-;5542:60;;5498:114;5359:260;;;;:::o;5625:345::-;5692:6;5741:2;5729:9;5720:7;5716:23;5712:32;5709:2;;;5747:79;;:::i;:::-;5709:2;5867:1;5892:61;5945:7;5936:6;5925:9;5921:22;5892:61;:::i;:::-;5882:71;;5838:125;5699:271;;;;:::o;5976:329::-;6035:6;6084:2;6072:9;6063:7;6059:23;6055:32;6052:2;;;6090:79;;:::i;:::-;6052:2;6210:1;6235:53;6280:7;6271:6;6260:9;6256:22;6235:53;:::i;:::-;6225:63;;6181:117;6042:263;;;;:::o;6311:663::-;6399:6;6407;6415;6464:2;6452:9;6443:7;6439:23;6435:32;6432:2;;;6470:79;;:::i;:::-;6432:2;6590:1;6615:64;6671:7;6662:6;6651:9;6647:22;6615:64;:::i;:::-;6605:74;;6561:128;6728:2;6754:64;6810:7;6801:6;6790:9;6786:22;6754:64;:::i;:::-;6744:74;;6699:129;6867:2;6893:64;6949:7;6940:6;6929:9;6925:22;6893:64;:::i;:::-;6883:74;;6838:129;6422:552;;;;;:::o;6980:179::-;7049:10;7070:46;7112:3;7104:6;7070:46;:::i;:::-;7148:4;7143:3;7139:14;7125:28;;7060:99;;;;:::o;7165:108::-;7242:24;7260:5;7242:24;:::i;:::-;7237:3;7230:37;7220:53;;:::o;7279:118::-;7366:24;7384:5;7366:24;:::i;:::-;7361:3;7354:37;7344:53;;:::o;7433:732::-;7552:3;7581:54;7629:5;7581:54;:::i;:::-;7651:86;7730:6;7725:3;7651:86;:::i;:::-;7644:93;;7761:56;7811:5;7761:56;:::i;:::-;7840:7;7871:1;7856:284;7881:6;7878:1;7875:13;7856:284;;;7957:6;7951:13;7984:63;8043:3;8028:13;7984:63;:::i;:::-;7977:70;;8070:60;8123:6;8070:60;:::i;:::-;8060:70;;7916:224;7903:1;7900;7896:9;7891:14;;7856:284;;;7860:14;8156:3;8149:10;;7557:608;;;;;;;:::o;8171:109::-;8252:21;8267:5;8252:21;:::i;:::-;8247:3;8240:34;8230:50;;:::o;8286:147::-;8381:45;8420:5;8381:45;:::i;:::-;8376:3;8369:58;8359:74;;:::o;8439:364::-;8527:3;8555:39;8588:5;8555:39;:::i;:::-;8610:71;8674:6;8669:3;8610:71;:::i;:::-;8603:78;;8690:52;8735:6;8730:3;8723:4;8716:5;8712:16;8690:52;:::i;:::-;8767:29;8789:6;8767:29;:::i;:::-;8762:3;8758:39;8751:46;;8531:272;;;;;:::o;8809:366::-;8951:3;8972:67;9036:2;9031:3;8972:67;:::i;:::-;8965:74;;9048:93;9137:3;9048:93;:::i;:::-;9166:2;9161:3;9157:12;9150:19;;8955:220;;;:::o;9181:366::-;9323:3;9344:67;9408:2;9403:3;9344:67;:::i;:::-;9337:74;;9420:93;9509:3;9420:93;:::i;:::-;9538:2;9533:3;9529:12;9522:19;;9327:220;;;:::o;9553:366::-;9695:3;9716:67;9780:2;9775:3;9716:67;:::i;:::-;9709:74;;9792:93;9881:3;9792:93;:::i;:::-;9910:2;9905:3;9901:12;9894:19;;9699:220;;;:::o;9925:366::-;10067:3;10088:67;10152:2;10147:3;10088:67;:::i;:::-;10081:74;;10164:93;10253:3;10164:93;:::i;:::-;10282:2;10277:3;10273:12;10266:19;;10071:220;;;:::o;10297:366::-;10439:3;10460:67;10524:2;10519:3;10460:67;:::i;:::-;10453:74;;10536:93;10625:3;10536:93;:::i;:::-;10654:2;10649:3;10645:12;10638:19;;10443:220;;;:::o;10669:366::-;10811:3;10832:67;10896:2;10891:3;10832:67;:::i;:::-;10825:74;;10908:93;10997:3;10908:93;:::i;:::-;11026:2;11021:3;11017:12;11010:19;;10815:220;;;:::o;11041:366::-;11183:3;11204:67;11268:2;11263:3;11204:67;:::i;:::-;11197:74;;11280:93;11369:3;11280:93;:::i;:::-;11398:2;11393:3;11389:12;11382:19;;11187:220;;;:::o;11413:366::-;11555:3;11576:67;11640:2;11635:3;11576:67;:::i;:::-;11569:74;;11652:93;11741:3;11652:93;:::i;:::-;11770:2;11765:3;11761:12;11754:19;;11559:220;;;:::o;11785:366::-;11927:3;11948:67;12012:2;12007:3;11948:67;:::i;:::-;11941:74;;12024:93;12113:3;12024:93;:::i;:::-;12142:2;12137:3;12133:12;12126:19;;11931:220;;;:::o;12157:366::-;12299:3;12320:67;12384:2;12379:3;12320:67;:::i;:::-;12313:74;;12396:93;12485:3;12396:93;:::i;:::-;12514:2;12509:3;12505:12;12498:19;;12303:220;;;:::o;12529:366::-;12671:3;12692:67;12756:2;12751:3;12692:67;:::i;:::-;12685:74;;12768:93;12857:3;12768:93;:::i;:::-;12886:2;12881:3;12877:12;12870:19;;12675:220;;;:::o;12901:366::-;13043:3;13064:67;13128:2;13123:3;13064:67;:::i;:::-;13057:74;;13140:93;13229:3;13140:93;:::i;:::-;13258:2;13253:3;13249:12;13242:19;;13047:220;;;:::o;13273:366::-;13415:3;13436:67;13500:2;13495:3;13436:67;:::i;:::-;13429:74;;13512:93;13601:3;13512:93;:::i;:::-;13630:2;13625:3;13621:12;13614:19;;13419:220;;;:::o;13645:366::-;13787:3;13808:67;13872:2;13867:3;13808:67;:::i;:::-;13801:74;;13884:93;13973:3;13884:93;:::i;:::-;14002:2;13997:3;13993:12;13986:19;;13791:220;;;:::o;14017:366::-;14159:3;14180:67;14244:2;14239:3;14180:67;:::i;:::-;14173:74;;14256:93;14345:3;14256:93;:::i;:::-;14374:2;14369:3;14365:12;14358:19;;14163:220;;;:::o;14389:398::-;14548:3;14569:83;14650:1;14645:3;14569:83;:::i;:::-;14562:90;;14661:93;14750:3;14661:93;:::i;:::-;14779:1;14774:3;14770:11;14763:18;;14552:235;;;:::o;14793:366::-;14935:3;14956:67;15020:2;15015:3;14956:67;:::i;:::-;14949:74;;15032:93;15121:3;15032:93;:::i;:::-;15150:2;15145:3;15141:12;15134:19;;14939:220;;;:::o;15165:366::-;15307:3;15328:67;15392:2;15387:3;15328:67;:::i;:::-;15321:74;;15404:93;15493:3;15404:93;:::i;:::-;15522:2;15517:3;15513:12;15506:19;;15311:220;;;:::o;15537:366::-;15679:3;15700:67;15764:2;15759:3;15700:67;:::i;:::-;15693:74;;15776:93;15865:3;15776:93;:::i;:::-;15894:2;15889:3;15885:12;15878:19;;15683:220;;;:::o;15909:118::-;15996:24;16014:5;15996:24;:::i;:::-;15991:3;15984:37;15974:53;;:::o;16033:112::-;16116:22;16132:5;16116:22;:::i;:::-;16111:3;16104:35;16094:51;;:::o;16151:379::-;16335:3;16357:147;16500:3;16357:147;:::i;:::-;16350:154;;16521:3;16514:10;;16339:191;;;:::o;16536:222::-;16629:4;16667:2;16656:9;16652:18;16644:26;;16680:71;16748:1;16737:9;16733:17;16724:6;16680:71;:::i;:::-;16634:124;;;;:::o;16764:332::-;16885:4;16923:2;16912:9;16908:18;16900:26;;16936:71;17004:1;16993:9;16989:17;16980:6;16936:71;:::i;:::-;17017:72;17085:2;17074:9;17070:18;17061:6;17017:72;:::i;:::-;16890:206;;;;;:::o;17102:332::-;17223:4;17261:2;17250:9;17246:18;17238:26;;17274:71;17342:1;17331:9;17327:17;17318:6;17274:71;:::i;:::-;17355:72;17423:2;17412:9;17408:18;17399:6;17355:72;:::i;:::-;17228:206;;;;;:::o;17440:807::-;17689:4;17727:3;17716:9;17712:19;17704:27;;17741:71;17809:1;17798:9;17794:17;17785:6;17741:71;:::i;:::-;17822:72;17890:2;17879:9;17875:18;17866:6;17822:72;:::i;:::-;17904:80;17980:2;17969:9;17965:18;17956:6;17904:80;:::i;:::-;17994;18070:2;18059:9;18055:18;18046:6;17994:80;:::i;:::-;18084:73;18152:3;18141:9;18137:19;18128:6;18084:73;:::i;:::-;18167;18235:3;18224:9;18220:19;18211:6;18167:73;:::i;:::-;17694:553;;;;;;;;;:::o;18253:210::-;18340:4;18378:2;18367:9;18363:18;18355:26;;18391:65;18453:1;18442:9;18438:17;18429:6;18391:65;:::i;:::-;18345:118;;;;:::o;18469:308::-;18578:4;18616:2;18605:9;18601:18;18593:26;;18629:65;18691:1;18680:9;18676:17;18667:6;18629:65;:::i;:::-;18704:66;18766:2;18755:9;18751:18;18742:6;18704:66;:::i;:::-;18583:194;;;;;:::o;18783:313::-;18896:4;18934:2;18923:9;18919:18;18911:26;;18983:9;18977:4;18973:20;18969:1;18958:9;18954:17;18947:47;19011:78;19084:4;19075:6;19011:78;:::i;:::-;19003:86;;18901:195;;;;:::o;19102:419::-;19268:4;19306:2;19295:9;19291:18;19283:26;;19355:9;19349:4;19345:20;19341:1;19330:9;19326:17;19319:47;19383:131;19509:4;19383:131;:::i;:::-;19375:139;;19273:248;;;:::o;19527:419::-;19693:4;19731:2;19720:9;19716:18;19708:26;;19780:9;19774:4;19770:20;19766:1;19755:9;19751:17;19744:47;19808:131;19934:4;19808:131;:::i;:::-;19800:139;;19698:248;;;:::o;19952:419::-;20118:4;20156:2;20145:9;20141:18;20133:26;;20205:9;20199:4;20195:20;20191:1;20180:9;20176:17;20169:47;20233:131;20359:4;20233:131;:::i;:::-;20225:139;;20123:248;;;:::o;20377:419::-;20543:4;20581:2;20570:9;20566:18;20558:26;;20630:9;20624:4;20620:20;20616:1;20605:9;20601:17;20594:47;20658:131;20784:4;20658:131;:::i;:::-;20650:139;;20548:248;;;:::o;20802:419::-;20968:4;21006:2;20995:9;20991:18;20983:26;;21055:9;21049:4;21045:20;21041:1;21030:9;21026:17;21019:47;21083:131;21209:4;21083:131;:::i;:::-;21075:139;;20973:248;;;:::o;21227:419::-;21393:4;21431:2;21420:9;21416:18;21408:26;;21480:9;21474:4;21470:20;21466:1;21455:9;21451:17;21444:47;21508:131;21634:4;21508:131;:::i;:::-;21500:139;;21398:248;;;:::o;21652:419::-;21818:4;21856:2;21845:9;21841:18;21833:26;;21905:9;21899:4;21895:20;21891:1;21880:9;21876:17;21869:47;21933:131;22059:4;21933:131;:::i;:::-;21925:139;;21823:248;;;:::o;22077:419::-;22243:4;22281:2;22270:9;22266:18;22258:26;;22330:9;22324:4;22320:20;22316:1;22305:9;22301:17;22294:47;22358:131;22484:4;22358:131;:::i;:::-;22350:139;;22248:248;;;:::o;22502:419::-;22668:4;22706:2;22695:9;22691:18;22683:26;;22755:9;22749:4;22745:20;22741:1;22730:9;22726:17;22719:47;22783:131;22909:4;22783:131;:::i;:::-;22775:139;;22673:248;;;:::o;22927:419::-;23093:4;23131:2;23120:9;23116:18;23108:26;;23180:9;23174:4;23170:20;23166:1;23155:9;23151:17;23144:47;23208:131;23334:4;23208:131;:::i;:::-;23200:139;;23098:248;;;:::o;23352:419::-;23518:4;23556:2;23545:9;23541:18;23533:26;;23605:9;23599:4;23595:20;23591:1;23580:9;23576:17;23569:47;23633:131;23759:4;23633:131;:::i;:::-;23625:139;;23523:248;;;:::o;23777:419::-;23943:4;23981:2;23970:9;23966:18;23958:26;;24030:9;24024:4;24020:20;24016:1;24005:9;24001:17;23994:47;24058:131;24184:4;24058:131;:::i;:::-;24050:139;;23948:248;;;:::o;24202:419::-;24368:4;24406:2;24395:9;24391:18;24383:26;;24455:9;24449:4;24445:20;24441:1;24430:9;24426:17;24419:47;24483:131;24609:4;24483:131;:::i;:::-;24475:139;;24373:248;;;:::o;24627:419::-;24793:4;24831:2;24820:9;24816:18;24808:26;;24880:9;24874:4;24870:20;24866:1;24855:9;24851:17;24844:47;24908:131;25034:4;24908:131;:::i;:::-;24900:139;;24798:248;;;:::o;25052:419::-;25218:4;25256:2;25245:9;25241:18;25233:26;;25305:9;25299:4;25295:20;25291:1;25280:9;25276:17;25269:47;25333:131;25459:4;25333:131;:::i;:::-;25325:139;;25223:248;;;:::o;25477:419::-;25643:4;25681:2;25670:9;25666:18;25658:26;;25730:9;25724:4;25720:20;25716:1;25705:9;25701:17;25694:47;25758:131;25884:4;25758:131;:::i;:::-;25750:139;;25648:248;;;:::o;25902:419::-;26068:4;26106:2;26095:9;26091:18;26083:26;;26155:9;26149:4;26145:20;26141:1;26130:9;26126:17;26119:47;26183:131;26309:4;26183:131;:::i;:::-;26175:139;;26073:248;;;:::o;26327:419::-;26493:4;26531:2;26520:9;26516:18;26508:26;;26580:9;26574:4;26570:20;26566:1;26555:9;26551:17;26544:47;26608:131;26734:4;26608:131;:::i;:::-;26600:139;;26498:248;;;:::o;26752:222::-;26845:4;26883:2;26872:9;26868:18;26860:26;;26896:71;26964:1;26953:9;26949:17;26940:6;26896:71;:::i;:::-;26850:124;;;;:::o;26980:831::-;27243:4;27281:3;27270:9;27266:19;27258:27;;27295:71;27363:1;27352:9;27348:17;27339:6;27295:71;:::i;:::-;27376:80;27452:2;27441:9;27437:18;27428:6;27376:80;:::i;:::-;27503:9;27497:4;27493:20;27488:2;27477:9;27473:18;27466:48;27531:108;27634:4;27625:6;27531:108;:::i;:::-;27523:116;;27649:72;27717:2;27706:9;27702:18;27693:6;27649:72;:::i;:::-;27731:73;27799:3;27788:9;27784:19;27775:6;27731:73;:::i;:::-;27248:563;;;;;;;;:::o;27817:442::-;27966:4;28004:2;27993:9;27989:18;27981:26;;28017:71;28085:1;28074:9;28070:17;28061:6;28017:71;:::i;:::-;28098:72;28166:2;28155:9;28151:18;28142:6;28098:72;:::i;:::-;28180;28248:2;28237:9;28233:18;28224:6;28180:72;:::i;:::-;27971:288;;;;;;:::o;28265:214::-;28354:4;28392:2;28381:9;28377:18;28369:26;;28405:67;28469:1;28458:9;28454:17;28445:6;28405:67;:::i;:::-;28359:120;;;;:::o;28566:132::-;28633:4;28656:3;28648:11;;28686:4;28681:3;28677:14;28669:22;;28638:60;;;:::o;28704:114::-;28771:6;28805:5;28799:12;28789:22;;28778:40;;;:::o;28824:99::-;28876:6;28910:5;28904:12;28894:22;;28883:40;;;:::o;28929:113::-;28999:4;29031;29026:3;29022:14;29014:22;;29004:38;;;:::o;29048:184::-;29147:11;29181:6;29176:3;29169:19;29221:4;29216:3;29212:14;29197:29;;29159:73;;;;:::o;29238:147::-;29339:11;29376:3;29361:18;;29351:34;;;;:::o;29391:169::-;29475:11;29509:6;29504:3;29497:19;29549:4;29544:3;29540:14;29525:29;;29487:73;;;;:::o;29566:305::-;29606:3;29625:20;29643:1;29625:20;:::i;:::-;29620:25;;29659:20;29677:1;29659:20;:::i;:::-;29654:25;;29813:1;29745:66;29741:74;29738:1;29735:81;29732:2;;;29819:18;;:::i;:::-;29732:2;29863:1;29860;29856:9;29849:16;;29610:261;;;;:::o;29877:185::-;29917:1;29934:20;29952:1;29934:20;:::i;:::-;29929:25;;29968:20;29986:1;29968:20;:::i;:::-;29963:25;;30007:1;29997:2;;30012:18;;:::i;:::-;29997:2;30054:1;30051;30047:9;30042:14;;29919:143;;;;:::o;30068:348::-;30108:7;30131:20;30149:1;30131:20;:::i;:::-;30126:25;;30165:20;30183:1;30165:20;:::i;:::-;30160:25;;30353:1;30285:66;30281:74;30278:1;30275:81;30270:1;30263:9;30256:17;30252:105;30249:2;;;30360:18;;:::i;:::-;30249:2;30408:1;30405;30401:9;30390:20;;30116:300;;;;:::o;30422:191::-;30462:4;30482:20;30500:1;30482:20;:::i;:::-;30477:25;;30516:20;30534:1;30516:20;:::i;:::-;30511:25;;30555:1;30552;30549:8;30546:2;;;30560:18;;:::i;:::-;30546:2;30605:1;30602;30598:9;30590:17;;30467:146;;;;:::o;30619:96::-;30656:7;30685:24;30703:5;30685:24;:::i;:::-;30674:35;;30664:51;;;:::o;30721:104::-;30766:7;30795:24;30813:5;30795:24;:::i;:::-;30784:35;;30774:51;;;:::o;30831:90::-;30865:7;30908:5;30901:13;30894:21;30883:32;;30873:48;;;:::o;30927:126::-;30964:7;31004:42;30997:5;30993:54;30982:65;;30972:81;;;:::o;31059:77::-;31096:7;31125:5;31114:16;;31104:32;;;:::o;31142:86::-;31177:7;31217:4;31210:5;31206:16;31195:27;;31185:43;;;:::o;31234:121::-;31292:9;31325:24;31343:5;31325:24;:::i;:::-;31312:37;;31302:53;;;:::o;31361:307::-;31429:1;31439:113;31453:6;31450:1;31447:13;31439:113;;;31538:1;31533:3;31529:11;31523:18;31519:1;31514:3;31510:11;31503:39;31475:2;31472:1;31468:10;31463:15;;31439:113;;;31570:6;31567:1;31564:13;31561:2;;;31650:1;31641:6;31636:3;31632:16;31625:27;31561:2;31410:258;;;;:::o;31674:233::-;31713:3;31736:24;31754:5;31736:24;:::i;:::-;31727:33;;31782:66;31775:5;31772:77;31769:2;;;31852:18;;:::i;:::-;31769:2;31899:1;31892:5;31888:13;31881:20;;31717:190;;;:::o;31913:180::-;31961:77;31958:1;31951:88;32058:4;32055:1;32048:15;32082:4;32079:1;32072:15;32099:180;32147:77;32144:1;32137:88;32244:4;32241:1;32234:15;32268:4;32265:1;32258:15;32285:180;32333:77;32330:1;32323:88;32430:4;32427:1;32420:15;32454:4;32451:1;32444:15;32471:180;32519:77;32516:1;32509:88;32616:4;32613:1;32606:15;32640:4;32637:1;32630:15;32657:117;32766:1;32763;32756:12;32780:117;32889:1;32886;32879:12;32903:117;33012:1;33009;33002:12;33026:117;33135:1;33132;33125:12;33149:117;33258:1;33255;33248:12;33272:102;33313:6;33364:2;33360:7;33355:2;33348:5;33344:14;33340:28;33330:38;;33320:54;;;:::o;33380:172::-;33520:24;33516:1;33508:6;33504:14;33497:48;33486:66;:::o;33558:222::-;33698:34;33694:1;33686:6;33682:14;33675:58;33767:5;33762:2;33754:6;33750:15;33743:30;33664:116;:::o;33786:229::-;33926:34;33922:1;33914:6;33910:14;33903:58;33995:12;33990:2;33982:6;33978:15;33971:37;33892:123;:::o;34021:221::-;34161:34;34157:1;34149:6;34145:14;34138:58;34230:4;34225:2;34217:6;34213:15;34206:29;34127:115;:::o;34248:177::-;34388:29;34384:1;34376:6;34372:14;34365:53;34354:71;:::o;34431:244::-;34571:34;34567:1;34559:6;34555:14;34548:58;34640:27;34635:2;34627:6;34623:15;34616:52;34537:138;:::o;34681:179::-;34821:31;34817:1;34809:6;34805:14;34798:55;34787:73;:::o;34866:173::-;35006:25;35002:1;34994:6;34990:14;34983:49;34972:67;:::o;35045:236::-;35185:34;35181:1;35173:6;35169:14;35162:58;35254:19;35249:2;35241:6;35237:15;35230:44;35151:130;:::o;35287:220::-;35427:34;35423:1;35415:6;35411:14;35404:58;35496:3;35491:2;35483:6;35479:15;35472:28;35393:114;:::o;35513:182::-;35653:34;35649:1;35641:6;35637:14;35630:58;35619:76;:::o;35701:228::-;35841:34;35837:1;35829:6;35825:14;35818:58;35910:11;35905:2;35897:6;35893:15;35886:36;35807:122;:::o;35935:233::-;36075:34;36071:1;36063:6;36059:14;36052:58;36144:16;36139:2;36131:6;36127:15;36120:41;36041:127;:::o;36174:221::-;36314:34;36310:1;36302:6;36298:14;36291:58;36383:4;36378:2;36370:6;36366:15;36359:29;36280:115;:::o;36401:224::-;36541:34;36537:1;36529:6;36525:14;36518:58;36610:7;36605:2;36597:6;36593:15;36586:32;36507:118;:::o;36631:114::-;36737:8;:::o;36751:223::-;36891:34;36887:1;36879:6;36875:14;36868:58;36960:6;36955:2;36947:6;36943:15;36936:31;36857:117;:::o;36980:173::-;37120:25;37116:1;37108:6;37104:14;37097:49;37086:67;:::o;37159:174::-;37299:26;37295:1;37287:6;37283:14;37276:50;37265:68;:::o;37339:122::-;37412:24;37430:5;37412:24;:::i;:::-;37405:5;37402:35;37392:2;;37451:1;37448;37441:12;37392:2;37382:79;:::o;37467:138::-;37548:32;37574:5;37548:32;:::i;:::-;37541:5;37538:43;37528:2;;37595:1;37592;37585:12;37528:2;37518:87;:::o;37611:116::-;37681:21;37696:5;37681:21;:::i;:::-;37674:5;37671:32;37661:2;;37717:1;37714;37707:12;37661:2;37651:76;:::o;37733:122::-;37806:24;37824:5;37806:24;:::i;:::-;37799:5;37796:35;37786:2;;37845:1;37842;37835:12;37786:2;37776:79;:::o

Swarm Source

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