ETH Price: $3,034.14 (+5.10%)
Gas: 2 Gwei

Token

Ai Matchmaking Operative Research (AMOR)
 

Overview

Max Total Supply

1,000,000,000 AMOR

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,715,428.044920153996455082 AMOR

Value
$0.00
0x952c94ee08fae33537d83c47401e9388b505177c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AMOR

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-13
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

/**
 * ERC20 standard interface
 */

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

/**
 * Basic access control mechanism
 */

abstract contract Ownable {
    address internal owner;
    address private _previousOwner;

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

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!YOU ARE NOT THE OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

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

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

/**
 * Router Interfaces
 */

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

/**
 * Token Contract Code
 */

contract AMOR is ERC20, Ownable {
    // -- Mappings --
    mapping(address => bool) public _blacklisted;
    mapping(address => bool) private _whitelisted;
    mapping(address => bool) public _automatedMarketMakers;
    mapping(address => bool) private _isLimitless;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    // -- Basic Token Information --
    string constant _name = "Ai Matchmaking Operative Research";
    string constant _symbol = "AMOR";
    uint8 constant _decimals = 18;
    uint256 private _totalSupply = 1_000_000_000 * 10 ** _decimals;


    // -- Transaction & Wallet Limits --
    uint256 public maxBuyPercentage;
    uint256 public maxSellPercentage;
    uint256 public maxWalletPercentage;

    uint256 private maxBuyAmount;
    uint256 private maxSellAmount;
    uint256 private maxWalletAmount;

    // -- Contract Variables --
    address[] private sniperList;
    uint256 tokenTax;
    uint256 transferFee;
    uint256 private targetLiquidity = 50;

    // -- Fee Structs --
    struct BuyFee {
        uint256 liquidityFee;
        uint256 treasuryFee;
        uint256 marketingFee;
        uint256 total;
    }

    struct SellFee {
        uint256 liquidityFee;
        uint256 treasuryFee;
        uint256 marketingFee;
        uint256 total;
    }

    BuyFee public buyFee;
    SellFee public sellFee;

    // -- Addresses --
    address public _exchangeRouterAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    address public treasuryReceiver = msg.sender;
    address public marketingReceiver = 0xF80517209907e9a8c6bD8513652Cc0Fe309b9F13;

    IDEXRouter public router;
    address public pair;

    // -- Misc Variables --
    bool public antiSniperMode = true;  // AntiSniper active at launch by default
    bool private _addingLP;
    bool private inSwap;
    bool private _initialDistributionFinished;

    // -- Swap Variables --
    bool public swapEnabled = true;
    uint256 private swapThreshold = _totalSupply / 1000;
    
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () Ownable(msg.sender) {

        // Initialize Pancake Pair
        router = IDEXRouter(_exchangeRouterAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        _automatedMarketMakers[pair]=true;
        
        // Set Initial Buy Fees -- Base 1000 Set 10 for 1%
        buyFee.liquidityFee = 10; 
        buyFee.treasuryFee = 40; 
        buyFee.marketingFee = 40;
        buyFee.total = buyFee.liquidityFee + buyFee.treasuryFee + buyFee.marketingFee;

        // Set Initial Sell Fees -- Base 1000 Set 10 for 1%
        sellFee.liquidityFee = 10; 
        sellFee.treasuryFee = 40; 
        sellFee.marketingFee = 200;
        sellFee.total = sellFee.liquidityFee + sellFee.treasuryFee + sellFee.marketingFee;

        // Set Initial Buy, Sell & Wallet Limits -- Base 1000 Set 10 for 1% or 9,999,999.0
        maxBuyPercentage = 10; maxBuyAmount = _totalSupply /1000 * maxBuyPercentage;
        maxSellPercentage = 10; maxSellAmount = _totalSupply /1000 * maxSellPercentage;
        maxWalletPercentage = 10; maxWalletAmount = _totalSupply /1000 * maxWalletPercentage;

        // Exclude from fees & limits
        _isLimitless[owner] = _isLimitless[address(this)] = true;

        // Mint _totalSupply to owner address
        _balances[owner] = _totalSupply;
        emit Transfer(address(0x0), owner, _totalSupply);
    }

    ///////////////////////////////////////// -- Setter Functions -- /////////////////////////////////////////

        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerSetLimits(uint256 _maxBuyPercentage, uint256 _maxSellPercentage, uint256 _maxWalletPercentage) external onlyOwner {
        maxBuyAmount = _totalSupply /1000 * _maxBuyPercentage;
        maxSellAmount = _totalSupply /1000 * _maxSellPercentage;
        maxWalletAmount = _totalSupply /1000 * _maxWalletPercentage;
    }

    function ownerSetInitialDistributionFinished() external onlyOwner {
        _initialDistributionFinished = true;
    }

    function ownerSetLimitlessAddress(address _addr, bool _status) external onlyOwner {
        _isLimitless[_addr] = _status;
    }

    function ownerSetSwapBackSettings(bool _enabled, uint256 _percentageBase1000) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / 1000 * _percentageBase1000;
    }

    function ownerSetTargetLiquidity(uint256 target) external onlyOwner {
        targetLiquidity = target;
    }
       // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateBuyFees (uint256 _liquidityFee, uint256 _treasuryFee, uint256 _marketingFee) external onlyOwner {
        buyFee.liquidityFee = _liquidityFee;
        buyFee.treasuryFee = _treasuryFee;
        buyFee.marketingFee = _marketingFee;
        buyFee.total = buyFee.liquidityFee + buyFee.treasuryFee + buyFee.marketingFee;
    }
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateSellFees (uint256 _liquidityFee, uint256 _treasuryFee, uint256 _marketingFee) external onlyOwner {
        sellFee.liquidityFee = _liquidityFee;
        sellFee.treasuryFee = _treasuryFee;
        sellFee.marketingFee = _marketingFee;
        sellFee.total = sellFee.liquidityFee + sellFee.treasuryFee + sellFee.marketingFee;
    }
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateTransferFee (uint256 _transferFee) external onlyOwner {
        transferFee = _transferFee;
    }

    function ownerSetReceivers (address _treasury, address _marketing) external onlyOwner {
        treasuryReceiver = _treasury;
        marketingReceiver = _marketing;
    }

    function ownerAirDropWallets(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner{
        require(airdropWallets.length < 100, "Can only airdrop 100 wallets per txn due to gas limits");
        for(uint256 i = 0; i < airdropWallets.length; i++){
            address wallet = airdropWallets[i];
            uint256 amount = (amounts[i] * 10**_decimals);
            _transfer(msg.sender, wallet, amount);
        }
    }

    function reverseSniper(address sniper) external onlyOwner {
        _blacklisted[sniper] = false;
    }

    function addNewMarketMaker(address newAMM) external onlyOwner {
        _automatedMarketMakers[newAMM]=true;
        _isLimitless[newAMM]=true;
    }

    function controlAntiSniperMode(bool value) external onlyOwner {
        antiSniperMode = value;
    }

    function clearStuckBalance() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner).transfer(contractETHBalance);
    }

    function clearStuckToken(address _token) public onlyOwner {
        uint256 _contractBalance = ERC20(_token).balanceOf(address(this));
        payable(treasuryReceiver).transfer(_contractBalance);
    }
    ///////////////////////////////////////// -- Getter Functions -- /////////////////////////////////////////

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function showSniperList() public view returns(address[] memory){
        return sniperList;
    }

    function showSniperListLength() public view returns(uint256){
        return sniperList.length;
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy * (balanceOf(pair) * (2)) / (getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    ///////////////////////////////////////// -- Internal Functions -- /////////////////////////////////////////

    function _transfer(address sender,address recipient,uint256 amount) private {
        require(sender!=address(0)&&recipient!=address(0),"Cannot be address(0).");
        bool isBuy=_automatedMarketMakers[sender];
        bool isSell=_automatedMarketMakers[recipient];
        bool isExcluded=_isLimitless[sender]||_isLimitless[recipient]||_addingLP;

        if(isExcluded)_transferExcluded(sender,recipient,amount);
        else { require(_initialDistributionFinished);
            // Punish for Snipers
            if(antiSniperMode)_punishSnipers(sender,recipient,amount);
            // Buy Tokens
            else if(isBuy)_buyTokens(sender,recipient,amount);
            // Sell Tokens
            else if(isSell) {
                // Swap & Liquify
                if (shouldSwapBack()) {swapBack();}
                _sellTokens(sender,recipient,amount);
            } else {
                // P2P Transfer
                require(!_blacklisted[sender]&&!_blacklisted[recipient]);
                require(balanceOf(recipient)+amount<=maxWalletAmount);
                _P2PTransfer(sender,recipient,amount);
            }
        }
    }

    function _punishSnipers(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[recipient]);
        require(amount <= maxBuyAmount, "Buy exceeds limit");
        tokenTax = amount*35/100;
        _blacklisted[recipient]=false;
        sniperList.push(address(recipient));
        _transferIncluded(sender,recipient,amount,tokenTax);
    }

    function _buyTokens(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[recipient]);
        require(amount <= maxBuyAmount, "Buy exceeds limit");
        if(!_whitelisted[recipient]){
        tokenTax = amount*buyFee.total/1000;}
        else tokenTax = 0;
        _transferIncluded(sender,recipient,amount,tokenTax);
    }
    function _sellTokens(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[sender]);
        require(amount <= maxSellAmount);
        if(!_whitelisted[sender]){
        tokenTax = amount*sellFee.total/1000;}
        else tokenTax = 0;
        _transferIncluded(sender,recipient,amount,tokenTax);
    }

    function _P2PTransfer(address sender,address recipient,uint256 amount) private {
        tokenTax = amount * transferFee/1000;
        if( tokenTax > 0) {_transferIncluded(sender,recipient,amount,tokenTax);}
        else {_transferExcluded(sender,recipient,amount);}
    }

    function _transferExcluded(address sender,address recipient,uint256 amount) private {
        _updateBalance(sender,_balances[sender]-amount);
        _updateBalance(recipient,_balances[recipient]+amount);
        emit Transfer(sender,recipient,amount);
    }

    function _transferIncluded(address sender,address recipient,uint256 amount,uint256 taxAmount) private {
        uint256 newAmount = amount-tokenTax;
        _updateBalance(sender,_balances[sender]-amount);
        _updateBalance(address(this),_balances[address(this)]+taxAmount);
        _updateBalance(recipient,_balances[recipient]+newAmount);
        emit Transfer(sender,recipient,newAmount);
        emit Transfer(sender,address(this),taxAmount);
    }

    function _updateBalance(address account,uint256 newBalance) private {
        _balances[account] = newBalance;
    }

    function shouldSwapBack() private view returns (bool) {
        return
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }   

    function swapBack() private swapping {
        uint256 toSwap = balanceOf(address(this));

        uint256 totalLPTokens=toSwap*(sellFee.liquidityFee + buyFee.liquidityFee)/(sellFee.total + buyFee.total);
        uint256 tokensLeft=toSwap-totalLPTokens;
        uint256 LPTokens=totalLPTokens/2;
        uint256 LPBNBTokens=totalLPTokens-LPTokens;
        toSwap=tokensLeft+LPBNBTokens;
        uint256 oldBNB=address(this).balance;
        _swapTokensForBNB(toSwap);
        uint256 newBNB=address(this).balance-oldBNB;
        uint256 LPBNB=(newBNB*LPBNBTokens)/toSwap;
        _addLiquidity(LPTokens,LPBNB);
        uint256 remainingBNB=address(this).balance-oldBNB;
        _distributeBNB(remainingBNB);
    }

    function _distributeBNB(uint256 remainingBNB) private {
        uint256 marketingFee = (buyFee.marketingFee + sellFee.marketingFee);
        uint256 treasuryFee = (buyFee.treasuryFee + sellFee.treasuryFee);
        uint256 totalFee = (marketingFee + treasuryFee);

        uint256 amountBNBmarketing = remainingBNB * (marketingFee) / (totalFee);
        uint256 amountBNBtreasury = remainingBNB * (treasuryFee) / (totalFee);

        if(amountBNBtreasury > 0){
        (bool treasurySuccess, /* bytes memory data */) = payable(treasuryReceiver).call{value: amountBNBtreasury, gas: 30000}("");
        require(treasurySuccess, "receiver rejected ETH transfer"); }
        
        if(amountBNBmarketing > 0){
        (bool marketingSuccess, /* bytes memory data */) = payable(marketingReceiver).call{value: amountBNBmarketing, gas: 30000}("");
        require(marketingSuccess, "receiver rejected ETH transfer"); }
    }

    function _swapTokensForBNB(uint256 amount) private {
        address[] memory path=new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 amountTokens,uint256 amountBNB) private {
        _addingLP=true;
        router.addLiquidityETH{value: amountBNB}(
            address(this),
            amountTokens,
            0,
            0,
            treasuryReceiver,
            block.timestamp
        );
        _addingLP=false;
    }

/**
 * IERC20
 */

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender];}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        uint256 allowance_ = _allowances[sender][msg.sender];
        require(allowance_ >= amount);
        
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        _transfer(sender, recipient, amount);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"","type":"address"}],"name":"_automatedMarketMakers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_exchangeRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAMM","type":"address"}],"name":"addNewMarketMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSniperMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"buyFee","outputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"controlAntiSniperMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ownerAirDropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerSetInitialDistributionFinished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ownerSetLimitlessAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyPercentage","type":"uint256"},{"internalType":"uint256","name":"_maxSellPercentage","type":"uint256"},{"internalType":"uint256","name":"_maxWalletPercentage","type":"uint256"}],"name":"ownerSetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"address","name":"_marketing","type":"address"}],"name":"ownerSetReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentageBase1000","type":"uint256"}],"name":"ownerSetSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"}],"name":"ownerSetTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"ownerUpdateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"ownerUpdateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"ownerUpdateTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sniper","type":"address"}],"name":"reverseSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSniperList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSniperListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620009cf565b633b9aca0062000025919062000a20565b6008556032601255737a250d5630b4cf539739df2c5dacb4c659f2488d601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f80517209907e9a8c6bd8513652cc0fe309b9f13601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f60146101000a81548160ff0219169083151502179055506001601f60186101000a81548160ff0219169083151502179055506103e860085462000160919062000ab0565b6020553480156200017057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa919062000b52565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000359919062000b52565b306040518363ffffffff1660e01b81526004016200037992919062000b95565b6020604051808303816000875af115801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000b52565b601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a601360000181905550602860136001018190555060286013600201819055506013600201546013600101546013600001546200057b919062000bc2565b62000587919062000bc2565b601360030181905550600a601760000181905550602860176001018190555060c8601760020181905550601760020154601760010154601760000154620005cf919062000bc2565b620005db919062000bc2565b601760030181905550600a6009819055506009546103e860085462000601919062000ab0565b6200060d919062000a20565b600c81905550600a8081905550600a546103e86008546200062f919062000ab0565b6200063b919062000a20565b600d81905550600a600b81905550600b546103e86008546200065e919062000ab0565b6200066a919062000a20565b600e819055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600854600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000827919062000c30565b60405180910390a362000c4d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008c3578086048111156200089b576200089a62000835565b5b6001851615620008ab5780820291505b8081029050620008bb8562000864565b94506200087b565b94509492505050565b600082620008de5760019050620009b1565b81620008ee5760009050620009b1565b8160018114620009075760028114620009125762000948565b6001915050620009b1565b60ff84111562000927576200092662000835565b5b8360020a91508482111562000941576200094062000835565b5b50620009b1565b5060208310610133831016604e8410600b8410161715620009825782820a9050838111156200097c576200097b62000835565b5b620009b1565b62000991848484600162000871565b92509050818404811115620009ab57620009aa62000835565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009dc82620009b8565b9150620009e983620009c2565b925062000a187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008cc565b905092915050565b600062000a2d82620009b8565b915062000a3a83620009b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a765762000a7562000835565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000abd82620009b8565b915062000aca83620009b8565b92508262000add5762000adc62000a81565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b1a8262000aed565b9050919050565b62000b2c8162000b0d565b811462000b3857600080fd5b50565b60008151905062000b4c8162000b21565b92915050565b60006020828403121562000b6b5762000b6a62000ae8565b5b600062000b7b8482850162000b3b565b91505092915050565b62000b8f8162000b0d565b82525050565b600060408201905062000bac600083018562000b84565b62000bbb602083018462000b84565b9392505050565b600062000bcf82620009b8565b915062000bdc83620009b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c145762000c1362000835565b5b828201905092915050565b62000c2a81620009b8565b82525050565b600060208201905062000c47600083018462000c1f565b92915050565b61425f8062000c5d6000396000f3fe60806040526004361061028c5760003560e01c80636ddd17131161015a578063a5949bcf116100c1578063dca3cef11161007a578063dca3cef1146109d1578063dd62ed3e146109fa578063e065099714610a37578063e5a772d214610a62578063f2fde38b14610a8b578063f887ea4014610ab457610293565b8063a5949bcf146108ad578063a8aa1b31146108d8578063a9059cbb14610903578063b46ba24b14610940578063b704a9f614610969578063d51ed1c81461099457610293565b8063893d20e811610113578063893d20e8146107b35780638ca42e4e146107de5780638ee41ca81461080757806395d89b41146108305780639b0ad05c1461085b5780639be953b31461088457610293565b80636ddd1713146106a557806370a08231146106d0578063715018a61461070d5780637a6d69b41461072457806383bd84851461076157806387cfc4931461078a57610293565b80632d3b4047116101fe5780634c5d8710116101b75780634c5d8710146105a957806352aae9dd146105d257806353cd6210146105fb578063599ca3971461062657806359d3cac2146106515780636390aeeb1461067a57610293565b80632d3b4047146104ba5780632f54bf6e146104e5578063313ce56714610522578063364333f41461054d578063470624021461056457806347375a371461059257610293565b80631161ae39116102505780631161ae391461039157806318160ddd146103ce5780631ca0b1d0146103f957806323b872dd146104245780632b112e49146104615780632b14ca561461048c57610293565b806306fdde031461029857806308b1fd8f146102c3578063095ea7b3146102ee5780630c5b1d931461032b5780630cb23d861461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610adf565b6040516102ba9190613172565b60405180910390f35b3480156102cf57600080fd5b506102d8610aff565b6040516102e591906131d5565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613266565b610b25565b60405161032291906132c1565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190613308565b610c17565b005b34801561036057600080fd5b5061037b60048036038101906103769190613348565b610cba565b60405161038891906132c1565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190613375565b610cda565b6040516103c591906132c1565b60405180910390f35b3480156103da57600080fd5b506103e3610cef565b6040516103f091906133c4565b60405180910390f35b34801561040557600080fd5b5061040e610cf9565b60405161041b919061349d565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906134bf565b610d87565b60405161045891906132c1565b60405180910390f35b34801561046d57600080fd5b50610476610fd9565b60405161048391906133c4565b60405180910390f35b34801561049857600080fd5b506104a161100c565b6040516104b19493929190613512565b60405180910390f35b3480156104c657600080fd5b506104cf61102a565b6040516104dc91906131d5565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190613348565b611050565b60405161051991906132c1565b60405180910390f35b34801561052e57600080fd5b506105376110a9565b6040516105449190613573565b60405180910390f35b34801561055957600080fd5b506105626110b2565b005b34801561057057600080fd5b50610579611169565b6040516105899493929190613512565b60405180910390f35b34801561059e57600080fd5b506105a7611187565b005b3480156105b557600080fd5b506105d060048036038101906105cb919061358e565b6111ec565b005b3480156105de57600080fd5b506105f960048036038101906105f491906135e1565b61129c565b005b34801561060757600080fd5b506106106112ee565b60405161061d91906132c1565b60405180910390f35b34801561063257600080fd5b5061063b611301565b60405161064891906133c4565b60405180910390f35b34801561065d57600080fd5b506106786004803603810190610673919061358e565b611307565b005b34801561068657600080fd5b5061068f6113a1565b60405161069c91906133c4565b60405180910390f35b3480156106b157600080fd5b506106ba6113ae565b6040516106c791906132c1565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613348565b6113c1565b60405161070491906133c4565b60405180910390f35b34801561071957600080fd5b5061072261140a565b005b34801561073057600080fd5b5061074b60048036038101906107469190613348565b611510565b60405161075891906132c1565b60405180910390f35b34801561076d57600080fd5b506107886004803603810190610783919061360e565b611530565b005b34801561079657600080fd5b506107b160048036038101906107ac9190613348565b611595565b005b3480156107bf57600080fd5b506107c8611638565b6040516107d591906131d5565b60405180910390f35b3480156107ea57600080fd5b50610805600480360381019061080091906135e1565b611661565b005b34801561081357600080fd5b5061082e6004803603810190610829919061363b565b6116b3565b005b34801561083c57600080fd5b5061084561173a565b6040516108529190613172565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190613886565b611777565b005b34801561089057600080fd5b506108ab60048036038101906108a69190613348565b61188a565b005b3480156108b957600080fd5b506108c26119bd565b6040516108cf91906131d5565b60405180910390f35b3480156108e457600080fd5b506108ed6119e3565b6040516108fa91906131d5565b60405180910390f35b34801561090f57600080fd5b5061092a60048036038101906109259190613266565b611a09565b60405161093791906132c1565b60405180910390f35b34801561094c57600080fd5b506109676004803603810190610962919061358e565b611a20565b005b34801561097557600080fd5b5061097e611aba565b60405161098b91906133c4565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b691906135e1565b611ac0565b6040516109c891906133c4565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f391906138fe565b611b1d565b005b348015610a0657600080fd5b50610a216004803603810190610a1c91906138fe565b611beb565b604051610a2e91906133c4565b60405180910390f35b348015610a4357600080fd5b50610a4c611c72565b604051610a5991906133c4565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190613348565b611c78565b005b348015610a9757600080fd5b50610ab26004803603810190610aad9190613348565b611d73565b005b348015610ac057600080fd5b50610ac9611ee8565b604051610ad6919061399d565b60405180910390f35b606060405180606001604052806021815260200161420960219139905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0591906133c4565b60405180910390a36001905092915050565b610c2033611050565b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690613a04565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600082610ce683611ac0565b11905092915050565b6000600854905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610d7d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d33575b5050505050905090565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e1657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fc25782600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f419190613a53565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fcd858585611f0e565b60019150509392505050565b6000610fe560006113c1565b610ff061dead6113c1565b600854610ffd9190613a53565b6110079190613a53565b905090565b60178060000154908060010154908060020154908060030154905084565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6110bb33611050565b6110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190613a04565b60405180910390fd5b600047905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611165573d6000803e3d6000fd5b5050565b60138060000154908060010154908060020154908060030154905084565b61119033611050565b6111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690613a04565b60405180910390fd5b6001601f60176101000a81548160ff021916908315150217905550565b6111f533611050565b611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90613a04565b60405180910390fd5b826103e86008546112459190613ab6565b61124f9190613ae7565b600c81905550816103e86008546112669190613ab6565b6112709190613ae7565b600d81905550806103e86008546112879190613ab6565b6112919190613ae7565b600e81905550505050565b6112a533611050565b6112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90613a04565b60405180910390fd5b8060128190555050565b601f60149054906101000a900460ff1681565b600b5481565b61131033611050565b61134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613a04565b60405180910390fd5b8260176000018190555081601760010181905550806017600201819055506017600201546017600101546017600001546113899190613b41565b6113939190613b41565b601760030181905550505050565b6000600f80549050905090565b601f60189054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141333611050565b611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990613a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60026020528060005260406000206000915054906101000a900460ff1681565b61153933611050565b611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f90613a04565b60405180910390fd5b80601f60146101000a81548160ff02191690831515021790555050565b61159e33611050565b6115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490613a04565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166a33611050565b6116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090613a04565b60405180910390fd5b8060118190555050565b6116bc33611050565b6116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613a04565b60405180910390fd5b81601f60186101000a81548160ff021916908315150217905550806103e86008546117269190613ab6565b6117309190613ae7565b6020819055505050565b60606040518060400160405280600481526020017f414d4f5200000000000000000000000000000000000000000000000000000000815250905090565b61178033611050565b6117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b690613a04565b60405180910390fd5b6064825110611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa90613c09565b60405180910390fd5b60005b825181101561188557600083828151811061182457611823613c29565b5b6020026020010151905060006012600a61183e9190613d8b565b84848151811061185157611850613c29565b5b60200260200101516118639190613ae7565b9050611870338383611f0e565b5050808061187d90613dd6565b915050611806565b505050565b61189333611050565b6118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613a04565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161190d91906131d5565b602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e9190613e34565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b8573d6000803e3d6000fd5b505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a16338484611f0e565b6001905092915050565b611a2933611050565b611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f90613a04565b60405180910390fd5b826013600001819055508160136001018190555080601360020181905550601360020154601360010154601360000154611aa29190613b41565b611aac9190613b41565b601360030181905550505050565b600a5481565b6000611aca610fd9565b6002611af7601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c1565b611b019190613ae7565b83611b0c9190613ae7565b611b169190613ab6565b9050919050565b611b2633611050565b611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90613a04565b60405180910390fd5b81601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611c8133611050565b611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613a04565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d7c33611050565b611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290613a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2290613ed3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f785750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae90613f3f565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120fc5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121135750601f60159054906101000a900460ff165b9050801561212b57612126868686612291565b612289565b601f60179054906101000a900460ff1661214457600080fd5b601f60149054906101000a900460ff1615612169576121648686866123a3565b612288565b821561217f5761217a86868661252c565b612287565b81156121ab5761218d61265e565b1561219b5761219a6126db565b5b6121a6868686612809565b612286565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561224f5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61225857600080fd5b600e5484612265876113c1565b61226f9190613b41565b111561227a57600080fd5b612285868686612905565b5b5b5b5b505050505050565b6122e58382600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122e09190613a53565b612955565b6123398282600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349190613b41565b612955565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161239691906133c4565b60405180910390a3505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123fa57600080fd5b600c5481111561243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243690613fab565b60405180910390fd5b606460238261244e9190613ae7565b6124589190613ab6565b6010819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061252783838360105461299d565b505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561258357600080fd5b600c548111156125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bf90613fab565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612642576103e86013600301548261262d9190613ae7565b6126379190613ab6565b60108190555061264b565b60006010819055505b61265983838360105461299d565b505050565b6000601f60169054906101000a900460ff161580156126895750601f60189054906101000a900460ff165b80156126d65750602054600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60166101000a81548160ff0219169083151502179055506000612701306113c1565b9050600060136003015460176003015461271b9190613b41565b6013600001546017600001546127319190613b41565b8361273c9190613ae7565b6127469190613ab6565b9050600081836127569190613a53565b905060006002836127679190613ab6565b9050600081846127779190613a53565b905080836127859190613b41565b9450600047905061279586612b7c565b600081476127a39190613a53565b905060008784836127b49190613ae7565b6127be9190613ab6565b90506127ca8582612d92565b600083476127d89190613a53565b90506127e381612e9b565b5050505050505050506000601f60166101000a81548160ff021916908315150217905550565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561286057600080fd5b600d5481111561286f57600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128e9576103e8601760030154826128d49190613ae7565b6128de9190613ab6565b6010819055506128f2565b60006010819055505b61290083838360105461299d565b505050565b6103e8601154826129169190613ae7565b6129209190613ab6565b601081905550600060105411156129445761293f83838360105461299d565b612950565b61294f838383612291565b5b505050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000601054836129ad9190613a53565b9050612a038584600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fe9190613a53565b612955565b612a573083600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a529190613b41565b612955565b612aab8482600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa69190613b41565b612955565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0891906133c4565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b6d91906133c4565b60405180910390a35050505050565b6000600267ffffffffffffffff811115612b9957612b98613680565b5b604051908082528060200260200182016040528015612bc75781602001602082028036833780820191505090505b5090503081600081518110612bdf57612bde613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612caa9190613fe0565b81600181518110612cbe57612cbd613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d5c959493929190614048565b600060405180830381600087803b158015612d7657600080fd5b505af1158015612d8a573d6000803e3d6000fd5b505050505050565b6001601f60156101000a81548160ff021916908315150217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e36969594939291906140a2565b60606040518083038185885af1158015612e54573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e799190614103565b5050506000601f60156101000a81548160ff0219169083151502179055505050565b6000601760020154601360020154612eb39190613b41565b90506000601760010154601360010154612ecd9190613b41565b905060008183612edd9190613b41565b90506000818486612eee9190613ae7565b612ef89190613ab6565b90506000828487612f099190613ae7565b612f139190613ab6565b90506000811115612ff3576000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612f6a90614187565b600060405180830381858888f193505050503d8060008114612fa8576040519150601f19603f3d011682016040523d82523d6000602084013e612fad565b606091505b5050905080612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe8906141e8565b60405180910390fd5b505b60008211156130d1576000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161304890614187565b600060405180830381858888f193505050503d8060008114613086576040519150601f19603f3d011682016040523d82523d6000602084013e61308b565b606091505b50509050806130cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c6906141e8565b60405180910390fd5b505b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131135780820151818401526020810190506130f8565b83811115613122576000848401525b50505050565b6000601f19601f8301169050919050565b6000613144826130d9565b61314e81856130e4565b935061315e8185602086016130f5565b61316781613128565b840191505092915050565b6000602082019050818103600083015261318c8184613139565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131bf82613194565b9050919050565b6131cf816131b4565b82525050565b60006020820190506131ea60008301846131c6565b92915050565b6000604051905090565b600080fd5b600080fd5b61320d816131b4565b811461321857600080fd5b50565b60008135905061322a81613204565b92915050565b6000819050919050565b61324381613230565b811461324e57600080fd5b50565b6000813590506132608161323a565b92915050565b6000806040838503121561327d5761327c6131fa565b5b600061328b8582860161321b565b925050602061329c85828601613251565b9150509250929050565b60008115159050919050565b6132bb816132a6565b82525050565b60006020820190506132d660008301846132b2565b92915050565b6132e5816132a6565b81146132f057600080fd5b50565b600081359050613302816132dc565b92915050565b6000806040838503121561331f5761331e6131fa565b5b600061332d8582860161321b565b925050602061333e858286016132f3565b9150509250929050565b60006020828403121561335e5761335d6131fa565b5b600061336c8482850161321b565b91505092915050565b6000806040838503121561338c5761338b6131fa565b5b600061339a85828601613251565b92505060206133ab85828601613251565b9150509250929050565b6133be81613230565b82525050565b60006020820190506133d960008301846133b5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613414816131b4565b82525050565b6000613426838361340b565b60208301905092915050565b6000602082019050919050565b600061344a826133df565b61345481856133ea565b935061345f836133fb565b8060005b83811015613490578151613477888261341a565b975061348283613432565b925050600181019050613463565b5085935050505092915050565b600060208201905081810360008301526134b7818461343f565b905092915050565b6000806000606084860312156134d8576134d76131fa565b5b60006134e68682870161321b565b93505060206134f78682870161321b565b925050604061350886828701613251565b9150509250925092565b600060808201905061352760008301876133b5565b61353460208301866133b5565b61354160408301856133b5565b61354e60608301846133b5565b95945050505050565b600060ff82169050919050565b61356d81613557565b82525050565b60006020820190506135886000830184613564565b92915050565b6000806000606084860312156135a7576135a66131fa565b5b60006135b586828701613251565b93505060206135c686828701613251565b92505060406135d786828701613251565b9150509250925092565b6000602082840312156135f7576135f66131fa565b5b600061360584828501613251565b91505092915050565b600060208284031215613624576136236131fa565b5b6000613632848285016132f3565b91505092915050565b60008060408385031215613652576136516131fa565b5b6000613660858286016132f3565b925050602061367185828601613251565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136b882613128565b810181811067ffffffffffffffff821117156136d7576136d6613680565b5b80604052505050565b60006136ea6131f0565b90506136f682826136af565b919050565b600067ffffffffffffffff82111561371657613715613680565b5b602082029050602081019050919050565b600080fd5b600061373f61373a846136fb565b6136e0565b9050808382526020820190506020840283018581111561376257613761613727565b5b835b8181101561378b5780613777888261321b565b845260208401935050602081019050613764565b5050509392505050565b600082601f8301126137aa576137a961367b565b5b81356137ba84826020860161372c565b91505092915050565b600067ffffffffffffffff8211156137de576137dd613680565b5b602082029050602081019050919050565b60006138026137fd846137c3565b6136e0565b9050808382526020820190506020840283018581111561382557613824613727565b5b835b8181101561384e578061383a8882613251565b845260208401935050602081019050613827565b5050509392505050565b600082601f83011261386d5761386c61367b565b5b813561387d8482602086016137ef565b91505092915050565b6000806040838503121561389d5761389c6131fa565b5b600083013567ffffffffffffffff8111156138bb576138ba6131ff565b5b6138c785828601613795565b925050602083013567ffffffffffffffff8111156138e8576138e76131ff565b5b6138f485828601613858565b9150509250929050565b60008060408385031215613915576139146131fa565b5b60006139238582860161321b565b92505060206139348582860161321b565b9150509250929050565b6000819050919050565b600061396361395e61395984613194565b61393e565b613194565b9050919050565b600061397582613948565b9050919050565b60006139878261396a565b9050919050565b6139978161397c565b82525050565b60006020820190506139b2600083018461398e565b92915050565b7f21594f5520415245204e4f5420544845204f574e455200000000000000000000600082015250565b60006139ee6016836130e4565b91506139f9826139b8565b602082019050919050565b60006020820190508181036000830152613a1d816139e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5e82613230565b9150613a6983613230565b925082821015613a7c57613a7b613a24565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac182613230565b9150613acc83613230565b925082613adc57613adb613a87565b5b828204905092915050565b6000613af282613230565b9150613afd83613230565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3657613b35613a24565b5b828202905092915050565b6000613b4c82613230565b9150613b5783613230565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b8c57613b8b613a24565b5b828201905092915050565b7f43616e206f6e6c792061697264726f70203130302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000613bf36036836130e4565b9150613bfe82613b97565b604082019050919050565b60006020820190508181036000830152613c2281613be6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613caf57808604811115613c8b57613c8a613a24565b5b6001851615613c9a5780820291505b8081029050613ca885613c58565b9450613c6f565b94509492505050565b600082613cc85760019050613d84565b81613cd65760009050613d84565b8160018114613cec5760028114613cf657613d25565b6001915050613d84565b60ff841115613d0857613d07613a24565b5b8360020a915084821115613d1f57613d1e613a24565b5b50613d84565b5060208310610133831016604e8410600b8410161715613d5a5782820a905083811115613d5557613d54613a24565b5b613d84565b613d678484846001613c65565b92509050818404811115613d7e57613d7d613a24565b5b81810290505b9392505050565b6000613d9682613230565b9150613da183613557565b9250613dce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb8565b905092915050565b6000613de182613230565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613e1457613e13613a24565b5b600182019050919050565b600081519050613e2e8161323a565b92915050565b600060208284031215613e4a57613e496131fa565b5b6000613e5884828501613e1f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ebd6026836130e4565b9150613ec882613e61565b604082019050919050565b60006020820190508181036000830152613eec81613eb0565b9050919050565b7f43616e6e6f7420626520616464726573732830292e0000000000000000000000600082015250565b6000613f296015836130e4565b9150613f3482613ef3565b602082019050919050565b60006020820190508181036000830152613f5881613f1c565b9050919050565b7f4275792065786365656473206c696d6974000000000000000000000000000000600082015250565b6000613f956011836130e4565b9150613fa082613f5f565b602082019050919050565b60006020820190508181036000830152613fc481613f88565b9050919050565b600081519050613fda81613204565b92915050565b600060208284031215613ff657613ff56131fa565b5b600061400484828501613fcb565b91505092915050565b6000819050919050565b600061403261402d6140288461400d565b61393e565b613230565b9050919050565b61404281614017565b82525050565b600060a08201905061405d60008301886133b5565b61406a6020830187614039565b818103604083015261407c818661343f565b905061408b60608301856131c6565b61409860808301846133b5565b9695505050505050565b600060c0820190506140b760008301896131c6565b6140c460208301886133b5565b6140d16040830187614039565b6140de6060830186614039565b6140eb60808301856131c6565b6140f860a08301846133b5565b979650505050505050565b60008060006060848603121561411c5761411b6131fa565b5b600061412a86828701613e1f565b935050602061413b86828701613e1f565b925050604061414c86828701613e1f565b9150509250925092565b600081905092915050565b50565b6000614171600083614156565b915061417c82614161565b600082019050919050565b600061419282614164565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b60006141d2601e836130e4565b91506141dd8261419c565b602082019050919050565b60006020820190508181036000830152614201816141c5565b905091905056fe4169204d617463686d616b696e67204f7065726174697665205265736561726368a2646970667358221220d443237046b00c049ff35cb44398313f9b6f6afd045adcfef9d8246a7034694164736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80636ddd17131161015a578063a5949bcf116100c1578063dca3cef11161007a578063dca3cef1146109d1578063dd62ed3e146109fa578063e065099714610a37578063e5a772d214610a62578063f2fde38b14610a8b578063f887ea4014610ab457610293565b8063a5949bcf146108ad578063a8aa1b31146108d8578063a9059cbb14610903578063b46ba24b14610940578063b704a9f614610969578063d51ed1c81461099457610293565b8063893d20e811610113578063893d20e8146107b35780638ca42e4e146107de5780638ee41ca81461080757806395d89b41146108305780639b0ad05c1461085b5780639be953b31461088457610293565b80636ddd1713146106a557806370a08231146106d0578063715018a61461070d5780637a6d69b41461072457806383bd84851461076157806387cfc4931461078a57610293565b80632d3b4047116101fe5780634c5d8710116101b75780634c5d8710146105a957806352aae9dd146105d257806353cd6210146105fb578063599ca3971461062657806359d3cac2146106515780636390aeeb1461067a57610293565b80632d3b4047146104ba5780632f54bf6e146104e5578063313ce56714610522578063364333f41461054d578063470624021461056457806347375a371461059257610293565b80631161ae39116102505780631161ae391461039157806318160ddd146103ce5780631ca0b1d0146103f957806323b872dd146104245780632b112e49146104615780632b14ca561461048c57610293565b806306fdde031461029857806308b1fd8f146102c3578063095ea7b3146102ee5780630c5b1d931461032b5780630cb23d861461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610adf565b6040516102ba9190613172565b60405180910390f35b3480156102cf57600080fd5b506102d8610aff565b6040516102e591906131d5565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613266565b610b25565b60405161032291906132c1565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190613308565b610c17565b005b34801561036057600080fd5b5061037b60048036038101906103769190613348565b610cba565b60405161038891906132c1565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190613375565b610cda565b6040516103c591906132c1565b60405180910390f35b3480156103da57600080fd5b506103e3610cef565b6040516103f091906133c4565b60405180910390f35b34801561040557600080fd5b5061040e610cf9565b60405161041b919061349d565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906134bf565b610d87565b60405161045891906132c1565b60405180910390f35b34801561046d57600080fd5b50610476610fd9565b60405161048391906133c4565b60405180910390f35b34801561049857600080fd5b506104a161100c565b6040516104b19493929190613512565b60405180910390f35b3480156104c657600080fd5b506104cf61102a565b6040516104dc91906131d5565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190613348565b611050565b60405161051991906132c1565b60405180910390f35b34801561052e57600080fd5b506105376110a9565b6040516105449190613573565b60405180910390f35b34801561055957600080fd5b506105626110b2565b005b34801561057057600080fd5b50610579611169565b6040516105899493929190613512565b60405180910390f35b34801561059e57600080fd5b506105a7611187565b005b3480156105b557600080fd5b506105d060048036038101906105cb919061358e565b6111ec565b005b3480156105de57600080fd5b506105f960048036038101906105f491906135e1565b61129c565b005b34801561060757600080fd5b506106106112ee565b60405161061d91906132c1565b60405180910390f35b34801561063257600080fd5b5061063b611301565b60405161064891906133c4565b60405180910390f35b34801561065d57600080fd5b506106786004803603810190610673919061358e565b611307565b005b34801561068657600080fd5b5061068f6113a1565b60405161069c91906133c4565b60405180910390f35b3480156106b157600080fd5b506106ba6113ae565b6040516106c791906132c1565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613348565b6113c1565b60405161070491906133c4565b60405180910390f35b34801561071957600080fd5b5061072261140a565b005b34801561073057600080fd5b5061074b60048036038101906107469190613348565b611510565b60405161075891906132c1565b60405180910390f35b34801561076d57600080fd5b506107886004803603810190610783919061360e565b611530565b005b34801561079657600080fd5b506107b160048036038101906107ac9190613348565b611595565b005b3480156107bf57600080fd5b506107c8611638565b6040516107d591906131d5565b60405180910390f35b3480156107ea57600080fd5b50610805600480360381019061080091906135e1565b611661565b005b34801561081357600080fd5b5061082e6004803603810190610829919061363b565b6116b3565b005b34801561083c57600080fd5b5061084561173a565b6040516108529190613172565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190613886565b611777565b005b34801561089057600080fd5b506108ab60048036038101906108a69190613348565b61188a565b005b3480156108b957600080fd5b506108c26119bd565b6040516108cf91906131d5565b60405180910390f35b3480156108e457600080fd5b506108ed6119e3565b6040516108fa91906131d5565b60405180910390f35b34801561090f57600080fd5b5061092a60048036038101906109259190613266565b611a09565b60405161093791906132c1565b60405180910390f35b34801561094c57600080fd5b506109676004803603810190610962919061358e565b611a20565b005b34801561097557600080fd5b5061097e611aba565b60405161098b91906133c4565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b691906135e1565b611ac0565b6040516109c891906133c4565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f391906138fe565b611b1d565b005b348015610a0657600080fd5b50610a216004803603810190610a1c91906138fe565b611beb565b604051610a2e91906133c4565b60405180910390f35b348015610a4357600080fd5b50610a4c611c72565b604051610a5991906133c4565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190613348565b611c78565b005b348015610a9757600080fd5b50610ab26004803603810190610aad9190613348565b611d73565b005b348015610ac057600080fd5b50610ac9611ee8565b604051610ad6919061399d565b60405180910390f35b606060405180606001604052806021815260200161420960219139905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0591906133c4565b60405180910390a36001905092915050565b610c2033611050565b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690613a04565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600082610ce683611ac0565b11905092915050565b6000600854905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610d7d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d33575b5050505050905090565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e1657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fc25782600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f419190613a53565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fcd858585611f0e565b60019150509392505050565b6000610fe560006113c1565b610ff061dead6113c1565b600854610ffd9190613a53565b6110079190613a53565b905090565b60178060000154908060010154908060020154908060030154905084565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6110bb33611050565b6110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190613a04565b60405180910390fd5b600047905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611165573d6000803e3d6000fd5b5050565b60138060000154908060010154908060020154908060030154905084565b61119033611050565b6111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690613a04565b60405180910390fd5b6001601f60176101000a81548160ff021916908315150217905550565b6111f533611050565b611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90613a04565b60405180910390fd5b826103e86008546112459190613ab6565b61124f9190613ae7565b600c81905550816103e86008546112669190613ab6565b6112709190613ae7565b600d81905550806103e86008546112879190613ab6565b6112919190613ae7565b600e81905550505050565b6112a533611050565b6112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90613a04565b60405180910390fd5b8060128190555050565b601f60149054906101000a900460ff1681565b600b5481565b61131033611050565b61134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613a04565b60405180910390fd5b8260176000018190555081601760010181905550806017600201819055506017600201546017600101546017600001546113899190613b41565b6113939190613b41565b601760030181905550505050565b6000600f80549050905090565b601f60189054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141333611050565b611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990613a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60026020528060005260406000206000915054906101000a900460ff1681565b61153933611050565b611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f90613a04565b60405180910390fd5b80601f60146101000a81548160ff02191690831515021790555050565b61159e33611050565b6115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490613a04565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166a33611050565b6116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090613a04565b60405180910390fd5b8060118190555050565b6116bc33611050565b6116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613a04565b60405180910390fd5b81601f60186101000a81548160ff021916908315150217905550806103e86008546117269190613ab6565b6117309190613ae7565b6020819055505050565b60606040518060400160405280600481526020017f414d4f5200000000000000000000000000000000000000000000000000000000815250905090565b61178033611050565b6117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b690613a04565b60405180910390fd5b6064825110611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa90613c09565b60405180910390fd5b60005b825181101561188557600083828151811061182457611823613c29565b5b6020026020010151905060006012600a61183e9190613d8b565b84848151811061185157611850613c29565b5b60200260200101516118639190613ae7565b9050611870338383611f0e565b5050808061187d90613dd6565b915050611806565b505050565b61189333611050565b6118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613a04565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161190d91906131d5565b602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e9190613e34565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b8573d6000803e3d6000fd5b505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a16338484611f0e565b6001905092915050565b611a2933611050565b611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f90613a04565b60405180910390fd5b826013600001819055508160136001018190555080601360020181905550601360020154601360010154601360000154611aa29190613b41565b611aac9190613b41565b601360030181905550505050565b600a5481565b6000611aca610fd9565b6002611af7601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c1565b611b019190613ae7565b83611b0c9190613ae7565b611b169190613ab6565b9050919050565b611b2633611050565b611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90613a04565b60405180910390fd5b81601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611c8133611050565b611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613a04565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d7c33611050565b611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290613a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2290613ed3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f785750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae90613f3f565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120fc5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121135750601f60159054906101000a900460ff165b9050801561212b57612126868686612291565b612289565b601f60179054906101000a900460ff1661214457600080fd5b601f60149054906101000a900460ff1615612169576121648686866123a3565b612288565b821561217f5761217a86868661252c565b612287565b81156121ab5761218d61265e565b1561219b5761219a6126db565b5b6121a6868686612809565b612286565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561224f5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61225857600080fd5b600e5484612265876113c1565b61226f9190613b41565b111561227a57600080fd5b612285868686612905565b5b5b5b5b505050505050565b6122e58382600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122e09190613a53565b612955565b6123398282600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349190613b41565b612955565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161239691906133c4565b60405180910390a3505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123fa57600080fd5b600c5481111561243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243690613fab565b60405180910390fd5b606460238261244e9190613ae7565b6124589190613ab6565b6010819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061252783838360105461299d565b505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561258357600080fd5b600c548111156125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bf90613fab565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612642576103e86013600301548261262d9190613ae7565b6126379190613ab6565b60108190555061264b565b60006010819055505b61265983838360105461299d565b505050565b6000601f60169054906101000a900460ff161580156126895750601f60189054906101000a900460ff165b80156126d65750602054600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60166101000a81548160ff0219169083151502179055506000612701306113c1565b9050600060136003015460176003015461271b9190613b41565b6013600001546017600001546127319190613b41565b8361273c9190613ae7565b6127469190613ab6565b9050600081836127569190613a53565b905060006002836127679190613ab6565b9050600081846127779190613a53565b905080836127859190613b41565b9450600047905061279586612b7c565b600081476127a39190613a53565b905060008784836127b49190613ae7565b6127be9190613ab6565b90506127ca8582612d92565b600083476127d89190613a53565b90506127e381612e9b565b5050505050505050506000601f60166101000a81548160ff021916908315150217905550565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561286057600080fd5b600d5481111561286f57600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128e9576103e8601760030154826128d49190613ae7565b6128de9190613ab6565b6010819055506128f2565b60006010819055505b61290083838360105461299d565b505050565b6103e8601154826129169190613ae7565b6129209190613ab6565b601081905550600060105411156129445761293f83838360105461299d565b612950565b61294f838383612291565b5b505050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000601054836129ad9190613a53565b9050612a038584600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fe9190613a53565b612955565b612a573083600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a529190613b41565b612955565b612aab8482600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa69190613b41565b612955565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0891906133c4565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b6d91906133c4565b60405180910390a35050505050565b6000600267ffffffffffffffff811115612b9957612b98613680565b5b604051908082528060200260200182016040528015612bc75781602001602082028036833780820191505090505b5090503081600081518110612bdf57612bde613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612caa9190613fe0565b81600181518110612cbe57612cbd613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d5c959493929190614048565b600060405180830381600087803b158015612d7657600080fd5b505af1158015612d8a573d6000803e3d6000fd5b505050505050565b6001601f60156101000a81548160ff021916908315150217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e36969594939291906140a2565b60606040518083038185885af1158015612e54573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e799190614103565b5050506000601f60156101000a81548160ff0219169083151502179055505050565b6000601760020154601360020154612eb39190613b41565b90506000601760010154601360010154612ecd9190613b41565b905060008183612edd9190613b41565b90506000818486612eee9190613ae7565b612ef89190613ab6565b90506000828487612f099190613ae7565b612f139190613ab6565b90506000811115612ff3576000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612f6a90614187565b600060405180830381858888f193505050503d8060008114612fa8576040519150601f19603f3d011682016040523d82523d6000602084013e612fad565b606091505b5050905080612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe8906141e8565b60405180910390fd5b505b60008211156130d1576000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161304890614187565b600060405180830381858888f193505050503d8060008114613086576040519150601f19603f3d011682016040523d82523d6000602084013e61308b565b606091505b50509050806130cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c6906141e8565b60405180910390fd5b505b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131135780820151818401526020810190506130f8565b83811115613122576000848401525b50505050565b6000601f19601f8301169050919050565b6000613144826130d9565b61314e81856130e4565b935061315e8185602086016130f5565b61316781613128565b840191505092915050565b6000602082019050818103600083015261318c8184613139565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131bf82613194565b9050919050565b6131cf816131b4565b82525050565b60006020820190506131ea60008301846131c6565b92915050565b6000604051905090565b600080fd5b600080fd5b61320d816131b4565b811461321857600080fd5b50565b60008135905061322a81613204565b92915050565b6000819050919050565b61324381613230565b811461324e57600080fd5b50565b6000813590506132608161323a565b92915050565b6000806040838503121561327d5761327c6131fa565b5b600061328b8582860161321b565b925050602061329c85828601613251565b9150509250929050565b60008115159050919050565b6132bb816132a6565b82525050565b60006020820190506132d660008301846132b2565b92915050565b6132e5816132a6565b81146132f057600080fd5b50565b600081359050613302816132dc565b92915050565b6000806040838503121561331f5761331e6131fa565b5b600061332d8582860161321b565b925050602061333e858286016132f3565b9150509250929050565b60006020828403121561335e5761335d6131fa565b5b600061336c8482850161321b565b91505092915050565b6000806040838503121561338c5761338b6131fa565b5b600061339a85828601613251565b92505060206133ab85828601613251565b9150509250929050565b6133be81613230565b82525050565b60006020820190506133d960008301846133b5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613414816131b4565b82525050565b6000613426838361340b565b60208301905092915050565b6000602082019050919050565b600061344a826133df565b61345481856133ea565b935061345f836133fb565b8060005b83811015613490578151613477888261341a565b975061348283613432565b925050600181019050613463565b5085935050505092915050565b600060208201905081810360008301526134b7818461343f565b905092915050565b6000806000606084860312156134d8576134d76131fa565b5b60006134e68682870161321b565b93505060206134f78682870161321b565b925050604061350886828701613251565b9150509250925092565b600060808201905061352760008301876133b5565b61353460208301866133b5565b61354160408301856133b5565b61354e60608301846133b5565b95945050505050565b600060ff82169050919050565b61356d81613557565b82525050565b60006020820190506135886000830184613564565b92915050565b6000806000606084860312156135a7576135a66131fa565b5b60006135b586828701613251565b93505060206135c686828701613251565b92505060406135d786828701613251565b9150509250925092565b6000602082840312156135f7576135f66131fa565b5b600061360584828501613251565b91505092915050565b600060208284031215613624576136236131fa565b5b6000613632848285016132f3565b91505092915050565b60008060408385031215613652576136516131fa565b5b6000613660858286016132f3565b925050602061367185828601613251565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136b882613128565b810181811067ffffffffffffffff821117156136d7576136d6613680565b5b80604052505050565b60006136ea6131f0565b90506136f682826136af565b919050565b600067ffffffffffffffff82111561371657613715613680565b5b602082029050602081019050919050565b600080fd5b600061373f61373a846136fb565b6136e0565b9050808382526020820190506020840283018581111561376257613761613727565b5b835b8181101561378b5780613777888261321b565b845260208401935050602081019050613764565b5050509392505050565b600082601f8301126137aa576137a961367b565b5b81356137ba84826020860161372c565b91505092915050565b600067ffffffffffffffff8211156137de576137dd613680565b5b602082029050602081019050919050565b60006138026137fd846137c3565b6136e0565b9050808382526020820190506020840283018581111561382557613824613727565b5b835b8181101561384e578061383a8882613251565b845260208401935050602081019050613827565b5050509392505050565b600082601f83011261386d5761386c61367b565b5b813561387d8482602086016137ef565b91505092915050565b6000806040838503121561389d5761389c6131fa565b5b600083013567ffffffffffffffff8111156138bb576138ba6131ff565b5b6138c785828601613795565b925050602083013567ffffffffffffffff8111156138e8576138e76131ff565b5b6138f485828601613858565b9150509250929050565b60008060408385031215613915576139146131fa565b5b60006139238582860161321b565b92505060206139348582860161321b565b9150509250929050565b6000819050919050565b600061396361395e61395984613194565b61393e565b613194565b9050919050565b600061397582613948565b9050919050565b60006139878261396a565b9050919050565b6139978161397c565b82525050565b60006020820190506139b2600083018461398e565b92915050565b7f21594f5520415245204e4f5420544845204f574e455200000000000000000000600082015250565b60006139ee6016836130e4565b91506139f9826139b8565b602082019050919050565b60006020820190508181036000830152613a1d816139e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5e82613230565b9150613a6983613230565b925082821015613a7c57613a7b613a24565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac182613230565b9150613acc83613230565b925082613adc57613adb613a87565b5b828204905092915050565b6000613af282613230565b9150613afd83613230565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3657613b35613a24565b5b828202905092915050565b6000613b4c82613230565b9150613b5783613230565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b8c57613b8b613a24565b5b828201905092915050565b7f43616e206f6e6c792061697264726f70203130302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000613bf36036836130e4565b9150613bfe82613b97565b604082019050919050565b60006020820190508181036000830152613c2281613be6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613caf57808604811115613c8b57613c8a613a24565b5b6001851615613c9a5780820291505b8081029050613ca885613c58565b9450613c6f565b94509492505050565b600082613cc85760019050613d84565b81613cd65760009050613d84565b8160018114613cec5760028114613cf657613d25565b6001915050613d84565b60ff841115613d0857613d07613a24565b5b8360020a915084821115613d1f57613d1e613a24565b5b50613d84565b5060208310610133831016604e8410600b8410161715613d5a5782820a905083811115613d5557613d54613a24565b5b613d84565b613d678484846001613c65565b92509050818404811115613d7e57613d7d613a24565b5b81810290505b9392505050565b6000613d9682613230565b9150613da183613557565b9250613dce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb8565b905092915050565b6000613de182613230565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613e1457613e13613a24565b5b600182019050919050565b600081519050613e2e8161323a565b92915050565b600060208284031215613e4a57613e496131fa565b5b6000613e5884828501613e1f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ebd6026836130e4565b9150613ec882613e61565b604082019050919050565b60006020820190508181036000830152613eec81613eb0565b9050919050565b7f43616e6e6f7420626520616464726573732830292e0000000000000000000000600082015250565b6000613f296015836130e4565b9150613f3482613ef3565b602082019050919050565b60006020820190508181036000830152613f5881613f1c565b9050919050565b7f4275792065786365656473206c696d6974000000000000000000000000000000600082015250565b6000613f956011836130e4565b9150613fa082613f5f565b602082019050919050565b60006020820190508181036000830152613fc481613f88565b9050919050565b600081519050613fda81613204565b92915050565b600060208284031215613ff657613ff56131fa565b5b600061400484828501613fcb565b91505092915050565b6000819050919050565b600061403261402d6140288461400d565b61393e565b613230565b9050919050565b61404281614017565b82525050565b600060a08201905061405d60008301886133b5565b61406a6020830187614039565b818103604083015261407c818661343f565b905061408b60608301856131c6565b61409860808301846133b5565b9695505050505050565b600060c0820190506140b760008301896131c6565b6140c460208301886133b5565b6140d16040830187614039565b6140de6060830186614039565b6140eb60808301856131c6565b6140f860a08301846133b5565b979650505050505050565b60008060006060848603121561411c5761411b6131fa565b5b600061412a86828701613e1f565b935050602061413b86828701613e1f565b925050604061414c86828701613e1f565b9150509250925092565b600081905092915050565b50565b6000614171600083614156565b915061417c82614161565b600082019050919050565b600061419282614164565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b60006141d2601e836130e4565b91506141dd8261419c565b602082019050919050565b60006020820190508181036000830152614201816141c5565b905091905056fe4169204d617463686d616b696e67204f7065726174697665205265736561726368a2646970667358221220d443237046b00c049ff35cb44398313f9b6f6afd045adcfef9d8246a7034694164736f6c634300080a0033

Deployed Bytecode Sourcemap

3488:16044:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18249:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5241:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18669:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8032:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3653:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11602:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17979:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11212:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19066:463;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11068:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4927:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4982:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1429:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18073:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10564:171;;;;;;;;;;;;;:::i;:::-;;4900:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;7904:120;;;;;;;;;;;;;:::i;:::-;;7560:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8384:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5466:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4265:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8984:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11319:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5683:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18419:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1790:146;;;;;;;;;;;;;:::i;:::-;;3550:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10453:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10180:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18335:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9411:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8170:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18159:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9720:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10743:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5292:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5409:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18893:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8565:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4226:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11430:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9538:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18529:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4188:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10293:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1540:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5378:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18249:80;18297:13;18321:5;;;;;;;;;;;;;;;;;18314:12;;18249:80;:::o;5241:44::-;;;;;;;;;;;;;:::o;18669:216::-;18744:4;18796:6;18761:11;:23;18773:10;18761:23;;;;;;;;;;;;;;;:32;18785:7;18761:32;;;;;;;;;;;;;;;:41;;;;18839:7;18818:37;;18827:10;18818:37;;;18848:6;18818:37;;;;;;:::i;:::-;;;;;;;;18873:4;18866:11;;18669:216;;;;:::o;8032:130::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8147:7:::1;8125:12;:19;8138:5;8125:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8032:130:::0;;:::o;3653:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;11602:150::-;11682:4;11738:6;11706:29;11726:8;11706:19;:29::i;:::-;:38;11699:45;;11602:150;;;;:::o;17979:88::-;18034:7;18052:12;;18045:19;;17979:88;:::o;11212:99::-;11258:16;11293:10;11286:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11212:99;:::o;19066:463::-;19164:4;19181:18;19202:11;:19;19214:6;19202:19;;;;;;;;;;;;;;;:31;19222:10;19202:31;;;;;;;;;;;;;;;;19181:52;;19266:6;19252:10;:20;;19244:29;;;;;;19333:17;19298:11;:19;19310:6;19298:19;;;;;;;;;;;;;;;:31;19318:10;19298:31;;;;;;;;;;;;;;;;:52;19294:159;;19435:6;19401:11;:19;19413:6;19401:19;;;;;;;;;;;;;;;:31;19421:10;19401:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;19367:11;:19;19379:6;19367:19;;;;;;;;;;;;;;;:31;19387:10;19367:31;;;;;;;;;;;;;;;:74;;;;19294:159;19463:36;19473:6;19481:9;19492:6;19463:9;:36::i;:::-;19517:4;19510:11;;;19066:463;;;;;:::o;11068:136::-;11121:7;11181:15;5190:42;11181:9;:15::i;:::-;11163;5109:42;11163:9;:15::i;:::-;11148:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;11141:55;;11068:136;:::o;4927:22::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4982:82::-;;;;;;;;;;;;;:::o;1429:103::-;1484:4;1519:5;;;;;;;;;;;1508:16;;:7;:16;;;1501:23;;1429:103;;;:::o;18073:80::-;18125:5;4064:2;18134:16;;18073:80;:::o;10564:171::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10623:26:::1;10652:21;10623:50;;10692:5;::::0;::::1;;;;;;;;10684:23;;:43;10708:18;10684:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10612:123;10564:171::o:0;4900:20::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7904:120::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8012:4:::1;7981:28;;:35;;;;;;;;;;;;;;;;;;7904:120::o:0;7560:336::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7735:17:::1;7728:4;7714:12;;:18;;;;:::i;:::-;:38;;;;:::i;:::-;7699:12;:53;;;;7800:18;7793:4;7779:12;;:18;;;;:::i;:::-;:39;;;;:::i;:::-;7763:13;:55;;;;7868:20;7861:4;7847:12;;:18;;;;:::i;:::-;:41;;;;:::i;:::-;7829:15;:59;;;;7560:336:::0;;;:::o;8384:111::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8481:6:::1;8463:15;:24;;;;8384:111:::0;:::o;5466:33::-;;;;;;;;;;;;;:::o;4265:34::-;;;;:::o;8984:356::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9135:13:::1;9112:7;:20;;:36;;;;9181:12;9159:7;:19;;:34;;;;9227:13;9204:7;:20;;:36;;;;9312:7;:20;;;9290:7;:19;;;9267:7;:20;;;:42;;;;:::i;:::-;:65;;;;:::i;:::-;9251:7;:13;;:81;;;;8984:356:::0;;;:::o;11319:103::-;11371:7;11397:10;:17;;;;11390:24;;11319:103;:::o;5683:30::-;;;;;;;;;;;;;:::o;18419:104::-;18485:7;18503:9;:18;18513:7;18503:18;;;;;;;;;;;;;;;;18496:25;;18419:104;;;:::o;1790:146::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;1896:1:::1;1860:39;;1881:5;::::0;::::1;;;;;;;;1860:39;;;;;;;;;;;;1926:1;1910:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;1790:146::o:0;3550:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;10453:103::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10543:5:::1;10526:14;;:22;;;;;;;;;;;;;;;;;;10453:103:::0;:::o;10180:105::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10272:5:::1;10249:12;:20;10262:6;10249:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10180:105:::0;:::o;18335:78::-;18387:7;18405:5;;;;;;;;;;;18398:12;;18335:78;:::o;9411:119::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9510:12:::1;9496:11;:26;;;;9411:119:::0;:::o;8170:206::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8292:8:::1;8278:11;;:22;;;;;;;;;;;;;;;;;;8349:19;8342:4;8327:12;;:19;;;;:::i;:::-;:41;;;;:::i;:::-;8311:13;:57;;;;8170:206:::0;;:::o;18159:84::-;18209:13;18233:7;;;;;;;;;;;;;;;;;18226:14;;18159:84;:::o;9720:452::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9869:3:::1;9845:14;:21;:27;9837:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;9946:9;9942:223;9965:14;:21;9961:1;:25;9942:223;;;10007:14;10024;10039:1;10024:17;;;;;;;;:::i;:::-;;;;;;;;10007:34;;10056:14;4064:2;10087;:13;;;;:::i;:::-;10074:7;10082:1;10074:10;;;;;;;;:::i;:::-;;;;;;;;:26;;;;:::i;:::-;10056:45;;10116:37;10126:10;10138:6;10146;10116:9;:37::i;:::-;9992:173;;9988:3;;;;;:::i;:::-;;;;9942:223;;;;9720:452:::0;;:::o;10743:205::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10812:24:::1;10845:6;10839:23;;;10871:4;10839:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10812:65;;10896:16;;;;;;;;;;;10888:34;;:52;10923:16;10888:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10801:147;10743:205:::0;:::o;5292:77::-;;;;;;;;;;;;;:::o;5409:19::-;;;;;;;;;;;;;:::o;18893:165::-;18971:4;18988:40;18998:10;19010:9;19021:6;18988:9;:40::i;:::-;19046:4;19039:11;;18893:165;;;;:::o;8565:348::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8714:13:::1;8692:6;:19;;:35;;;;8759:12;8738:6;:18;;:33;;;;8804:13;8782:6;:19;;:35;;;;8886:6;:19;;;8865:6;:18;;;8843:6;:19;;;:40;;;;:::i;:::-;:62;;;;:::i;:::-;8828:6;:12;;:77;;;;8565:348:::0;;;:::o;4226:32::-;;;;:::o;11430:164::-;11498:7;11563:22;:20;:22::i;:::-;11556:1;11537:15;11547:4;;;;;;;;;;;11537:9;:15::i;:::-;:21;;;;:::i;:::-;11525:8;:34;;;;:::i;:::-;:61;;;;:::i;:::-;11518:68;;11430:164;;;:::o;9538:174::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9654:9:::1;9635:16;;:28;;;;;;;;;;;;;;;;;;9694:10;9674:17;;:30;;;;;;;;;;;;;;;;;;9538:174:::0;;:::o;18529:132::-;18613:7;18631:11;:19;18643:6;18631:19;;;;;;;;;;;;;;;:28;18651:7;18631:28;;;;;;;;;;;;;;;;18624:35;;18529:132;;;;:::o;4188:31::-;;;;:::o;10293:152::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10397:4:::1;10366:22;:30;10389:6;10366:30;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;10433:4;10412:12;:20;10425:6;10412:20;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10293:152:::0;:::o;1540:242::-;1364:19;1372:10;1364:7;:19::i;:::-;1356:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;1649:1:::1;1629:22;;:8;:22;;;;1621:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1738:8;1710:37;;1731:5;::::0;::::1;;;;;;;;1710:37;;;;;;;;;;;;1766:8;1758:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1540:242:::0;:::o;5378:24::-;;;;;;;;;;;;;:::o;11876:1168::-;11987:1;11971:18;;:6;:18;;;;:41;;;;;12010:1;11991:21;;:9;:21;;;;11971:41;11963:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12048:10;12059:22;:30;12082:6;12059:30;;;;;;;;;;;;;;;;;;;;;;;;;12048:41;;12100:11;12112:22;:33;12135:9;12112:33;;;;;;;;;;;;;;;;;;;;;;;;;12100:45;;12156:15;12172:12;:20;12185:6;12172:20;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;12194:12;:23;12207:9;12194:23;;;;;;;;;;;;;;;;;;;;;;;;;12172:45;:56;;;;12219:9;;;;;;;;;;;12172:56;12156:72;;12244:10;12241:796;;;12255:42;12273:6;12280:9;12290:6;12255:17;:42::i;:::-;12241:796;;;12323:28;;;;;;;;;;;12315:37;;;;;;12405:14;;;;;;;;;;;12402:624;;;12420:39;12435:6;12442:9;12452:6;12420:14;:39::i;:::-;12402:624;;;12509:5;12506:520;;;12515:35;12526:6;12533:9;12543:6;12515:10;:35::i;:::-;12506:520;;;12601:6;12598:428;;;12667:16;:14;:16::i;:::-;12663:35;;;12686:10;:8;:10::i;:::-;12663:35;12716:36;12728:6;12735:9;12745:6;12716:11;:36::i;:::-;12598:428;;;12835:12;:20;12848:6;12835:20;;;;;;;;;;;;;;;;;;;;;;;;;12834:21;:47;;;;;12858:12;:23;12871:9;12858:23;;;;;;;;;;;;;;;;;;;;;;;;;12857:24;12834:47;12826:56;;;;;;12938:15;;12930:6;12909:20;12919:9;12909;:20::i;:::-;:27;;;;:::i;:::-;:44;;12901:53;;;;;;12973:37;12986:6;12993:9;13003:6;12973:12;:37::i;:::-;12598:428;12506:520;12402:624;12241:796;11952:1092;;;11876:1168;;;:::o;14449:263::-;14544:47;14559:6;14584;14566:9;:17;14576:6;14566:17;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;14544:14;:47::i;:::-;14602:53;14617:9;14648:6;14627:9;:20;14637:9;14627:20;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;14602:14;:53::i;:::-;14687:9;14671:33;;14680:6;14671:33;;;14697:6;14671:33;;;;;;:::i;:::-;;;;;;;;14449:263;;;:::o;13052:379::-;13153:12;:23;13166:9;13153:23;;;;;;;;;;;;;;;;;;;;;;;;;13152:24;13144:33;;;;;;13206:12;;13196:6;:22;;13188:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13272:3;13269:2;13262:6;:9;;;;:::i;:::-;:13;;;;:::i;:::-;13251:8;:24;;;;13310:5;13286:12;:23;13299:9;13286:23;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13326:10;13350:9;13326:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13372:51;13390:6;13397:9;13407:6;13414:8;;13372:17;:51::i;:::-;13052:379;;;:::o;13439:368::-;13536:12;:23;13549:9;13536:23;;;;;;;;;;;;;;;;;;;;;;;;;13535:24;13527:33;;;;;;13589:12;;13579:6;:22;;13571:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13638:12;:23;13651:9;13638:23;;;;;;;;;;;;;;;;;;;;;;;;;13634:103;;13704:4;13691:6;:12;;;13684:6;:19;;;;:::i;:::-;:24;;;;:::i;:::-;13673:8;:35;;;;13634:103;;;13736:1;13725:8;:12;;;;13634:103;13748:51;13766:6;13773:9;13783:6;13790:8;;13748:17;:51::i;:::-;13439:368;;;:::o;15318:186::-;15366:4;15404:6;;;;;;;;;;;15403:7;:35;;;;;15427:11;;;;;;;;;;;15403:35;:93;;;;;15483:13;;15455:9;:24;15473:4;15455:24;;;;;;;;;;;;;;;;:41;;15403:93;15383:113;;15318:186;:::o;15515:728::-;5824:4;5815:6;;:13;;;;;;;;;;;;;;;;;;15563:14:::1;15580:24;15598:4;15580:9;:24::i;:::-;15563:41;;15617:21;15708:6;:12;;;15692:7;:13;;;:28;;;;:::i;:::-;15670:6;:19;;;15647:7;:20;;;:42;;;;:::i;:::-;15639:6;:51;;;;:::i;:::-;:82;;;;:::i;:::-;15617:104;;15732:18;15758:13;15751:6;:20;;;;:::i;:::-;15732:39;;15782:16;15813:1;15799:13;:15;;;;:::i;:::-;15782:32;;15825:19;15859:8;15845:13;:22;;;;:::i;:::-;15825:42;;15896:11;15885:10;:22;;;;:::i;:::-;15878:29;;15918:14;15933:21;15918:36;;15965:25;15983:6;15965:17;:25::i;:::-;16001:14;16038:6;16016:21;:28;;;;:::i;:::-;16001:43;;16055:13;16090:6;16077:11;16070:6;:18;;;;:::i;:::-;16069:27;;;;:::i;:::-;16055:41;;16107:29;16121:8;16130:5;16107:13;:29::i;:::-;16147:20;16190:6;16168:21;:28;;;;:::i;:::-;16147:49;;16207:28;16222:12;16207:14;:28::i;:::-;15552:691;;;;;;;;;5860:5:::0;5851:6;;:14;;;;;;;;;;;;;;;;;;15515:728::o;13813:344::-;13911:12;:20;13924:6;13911:20;;;;;;;;;;;;;;;;;;;;;;;;;13910:21;13902:30;;;;;;13961:13;;13951:6;:23;;13943:32;;;;;;13990:12;:20;14003:6;13990:20;;;;;;;;;;;;;;;;;;;;;;;;;13986:101;;14054:4;14040:7;:13;;;14033:6;:20;;;;:::i;:::-;:25;;;;:::i;:::-;14022:8;:36;;;;13986:101;;;14086:1;14075:8;:12;;;;13986:101;14098:51;14116:6;14123:9;14133:6;14140:8;;14098:17;:51::i;:::-;13813:344;;;:::o;14165:276::-;14287:4;14275:11;;14266:6;:20;;;;:::i;:::-;:25;;;;:::i;:::-;14255:8;:36;;;;14317:1;14306:8;;:12;14302:132;;;14321:51;14339:6;14346:9;14356:6;14363:8;;14321:17;:51::i;:::-;14302:132;;;14390:42;14408:6;14415:9;14425:6;14390:17;:42::i;:::-;14302:132;14165:276;;;:::o;15192:118::-;15292:10;15271:9;:18;15281:7;15271:18;;;;;;;;;;;;;;;:31;;;;15192:118;;:::o;14720:464::-;14833:17;14860:8;;14853:6;:15;;;;:::i;:::-;14833:35;;14879:47;14894:6;14919;14901:9;:17;14911:6;14901:17;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;14879:14;:47::i;:::-;14937:64;14960:4;14991:9;14966;:24;14984:4;14966:24;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;14937:14;:64::i;:::-;15012:56;15027:9;15058;15037;:20;15047:9;15037:20;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;15012:14;:56::i;:::-;15100:9;15084:36;;15093:6;15084:36;;;15110:9;15084:36;;;;;;:::i;:::-;;;;;;;;15160:4;15136:40;;15145:6;15136:40;;;15166:9;15136:40;;;;;;:::i;:::-;;;;;;;;14822:362;14720:464;;;;:::o;17193:369::-;17255:21;17291:1;17277:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17255:38;;17322:4;17304;17309:1;17304:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17348:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17338:4;17343:1;17338:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17372:6;;;;;;;;;;;:57;;;17444:6;17465:1;17481:4;17508;17528:15;17372:182;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17244:318;17193:369;:::o;17570:340::-;17662:4;17652:9;;:14;;;;;;;;;;;;;;;;;;17677:6;;;;;;;;;;;:22;;;17707:9;17740:4;17760:12;17787:1;17803;17819:16;;;;;;;;;;;17850:15;17677:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17897:5;17887:9;;:15;;;;;;;;;;;;;;;;;;17570:340;;:::o;16251:934::-;16316:20;16362:7;:20;;;16340:6;:19;;;:42;;;;:::i;:::-;16316:67;;16394:19;16438:7;:19;;;16417:6;:18;;;:40;;;;:::i;:::-;16394:64;;16469:16;16504:11;16489:12;:26;;;;:::i;:::-;16469:47;;16529:26;16591:8;16574:12;16558;:29;;;;:::i;:::-;:42;;;;:::i;:::-;16529:71;;16611:25;16671:8;16655:11;16639:12;:28;;;;:::i;:::-;:41;;;;:::i;:::-;16611:69;;16716:1;16696:17;:21;16693:230;;;16730:20;16787:16;;;;;;;;;;;16779:30;;16817:17;16841:5;16779:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16729:122;;;16870:15;16862:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16718:205;16693:230;16967:1;16946:18;:22;16943:235;;;16981:21;17039:17;;;;;;;;;;;17031:31;;17070:18;17095:5;17031:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16980:125;;;17124:16;17116:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16969:209;16943:235;16305:880;;;;;16251:934;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:96::-;1566:7;1595:24;1613:5;1595:24;:::i;:::-;1584:35;;1529:96;;;:::o;1631:118::-;1718:24;1736:5;1718:24;:::i;:::-;1713:3;1706:37;1631:118;;:::o;1755:222::-;1848:4;1886:2;1875:9;1871:18;1863:26;;1899:71;1967:1;1956:9;1952:17;1943:6;1899:71;:::i;:::-;1755:222;;;;:::o;1983:75::-;2016:6;2049:2;2043:9;2033:19;;1983:75;:::o;2064:117::-;2173:1;2170;2163:12;2187:117;2296:1;2293;2286:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:468::-;4172:6;4180;4229:2;4217:9;4208:7;4204:23;4200:32;4197:119;;;4235:79;;:::i;:::-;4197:119;4355:1;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4326:117;4482:2;4508:50;4550:7;4541:6;4530:9;4526:22;4508:50;:::i;:::-;4498:60;;4453:115;4107:468;;;;;:::o;4581:329::-;4640:6;4689:2;4677:9;4668:7;4664:23;4660:32;4657:119;;;4695:79;;:::i;:::-;4657:119;4815:1;4840:53;4885:7;4876:6;4865:9;4861:22;4840:53;:::i;:::-;4830:63;;4786:117;4581:329;;;;:::o;4916:474::-;4984:6;4992;5041:2;5029:9;5020:7;5016:23;5012:32;5009:119;;;5047:79;;:::i;:::-;5009:119;5167:1;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5138:117;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4916:474;;;;;:::o;5396:118::-;5483:24;5501:5;5483:24;:::i;:::-;5478:3;5471:37;5396:118;;:::o;5520:222::-;5613:4;5651:2;5640:9;5636:18;5628:26;;5664:71;5732:1;5721:9;5717:17;5708:6;5664:71;:::i;:::-;5520:222;;;;:::o;5748:114::-;5815:6;5849:5;5843:12;5833:22;;5748:114;;;:::o;5868:184::-;5967:11;6001:6;5996:3;5989:19;6041:4;6036:3;6032:14;6017:29;;5868:184;;;;:::o;6058:132::-;6125:4;6148:3;6140:11;;6178:4;6173:3;6169:14;6161:22;;6058:132;;;:::o;6196:108::-;6273:24;6291:5;6273:24;:::i;:::-;6268:3;6261:37;6196:108;;:::o;6310:179::-;6379:10;6400:46;6442:3;6434:6;6400:46;:::i;:::-;6478:4;6473:3;6469:14;6455:28;;6310:179;;;;:::o;6495:113::-;6565:4;6597;6592:3;6588:14;6580:22;;6495:113;;;:::o;6644:732::-;6763:3;6792:54;6840:5;6792:54;:::i;:::-;6862:86;6941:6;6936:3;6862:86;:::i;:::-;6855:93;;6972:56;7022:5;6972:56;:::i;:::-;7051:7;7082:1;7067:284;7092:6;7089:1;7086:13;7067:284;;;7168:6;7162:13;7195:63;7254:3;7239:13;7195:63;:::i;:::-;7188:70;;7281:60;7334:6;7281:60;:::i;:::-;7271:70;;7127:224;7114:1;7111;7107:9;7102:14;;7067:284;;;7071:14;7367:3;7360:10;;6768:608;;;6644:732;;;;:::o;7382:373::-;7525:4;7563:2;7552:9;7548:18;7540:26;;7612:9;7606:4;7602:20;7598:1;7587:9;7583:17;7576:47;7640:108;7743:4;7734:6;7640:108;:::i;:::-;7632:116;;7382:373;;;;:::o;7761:619::-;7838:6;7846;7854;7903:2;7891:9;7882:7;7878:23;7874:32;7871:119;;;7909:79;;:::i;:::-;7871:119;8029:1;8054:53;8099:7;8090:6;8079:9;8075:22;8054:53;:::i;:::-;8044:63;;8000:117;8156:2;8182:53;8227:7;8218:6;8207:9;8203:22;8182:53;:::i;:::-;8172:63;;8127:118;8284:2;8310:53;8355:7;8346:6;8335:9;8331:22;8310:53;:::i;:::-;8300:63;;8255:118;7761:619;;;;;:::o;8386:553::-;8563:4;8601:3;8590:9;8586:19;8578:27;;8615:71;8683:1;8672:9;8668:17;8659:6;8615:71;:::i;:::-;8696:72;8764:2;8753:9;8749:18;8740:6;8696:72;:::i;:::-;8778;8846:2;8835:9;8831:18;8822:6;8778:72;:::i;:::-;8860;8928:2;8917:9;8913:18;8904:6;8860:72;:::i;:::-;8386:553;;;;;;;:::o;8945:86::-;8980:7;9020:4;9013:5;9009:16;8998:27;;8945:86;;;:::o;9037:112::-;9120:22;9136:5;9120:22;:::i;:::-;9115:3;9108:35;9037:112;;:::o;9155:214::-;9244:4;9282:2;9271:9;9267:18;9259:26;;9295:67;9359:1;9348:9;9344:17;9335:6;9295:67;:::i;:::-;9155:214;;;;:::o;9375:619::-;9452:6;9460;9468;9517:2;9505:9;9496:7;9492:23;9488:32;9485:119;;;9523:79;;:::i;:::-;9485:119;9643:1;9668:53;9713:7;9704:6;9693:9;9689:22;9668:53;:::i;:::-;9658:63;;9614:117;9770:2;9796:53;9841:7;9832:6;9821:9;9817:22;9796:53;:::i;:::-;9786:63;;9741:118;9898:2;9924:53;9969:7;9960:6;9949:9;9945:22;9924:53;:::i;:::-;9914:63;;9869:118;9375:619;;;;;:::o;10000:329::-;10059:6;10108:2;10096:9;10087:7;10083:23;10079:32;10076:119;;;10114:79;;:::i;:::-;10076:119;10234:1;10259:53;10304:7;10295:6;10284:9;10280:22;10259:53;:::i;:::-;10249:63;;10205:117;10000:329;;;;:::o;10335:323::-;10391:6;10440:2;10428:9;10419:7;10415:23;10411:32;10408:119;;;10446:79;;:::i;:::-;10408:119;10566:1;10591:50;10633:7;10624:6;10613:9;10609:22;10591:50;:::i;:::-;10581:60;;10537:114;10335:323;;;;:::o;10664:468::-;10729:6;10737;10786:2;10774:9;10765:7;10761:23;10757:32;10754:119;;;10792:79;;:::i;:::-;10754:119;10912:1;10937:50;10979:7;10970:6;10959:9;10955:22;10937:50;:::i;:::-;10927:60;;10883:114;11036:2;11062:53;11107:7;11098:6;11087:9;11083:22;11062:53;:::i;:::-;11052:63;;11007:118;10664:468;;;;;:::o;11138:117::-;11247:1;11244;11237:12;11261:180;11309:77;11306:1;11299:88;11406:4;11403:1;11396:15;11430:4;11427:1;11420:15;11447:281;11530:27;11552:4;11530:27;:::i;:::-;11522:6;11518:40;11660:6;11648:10;11645:22;11624:18;11612:10;11609:34;11606:62;11603:88;;;11671:18;;:::i;:::-;11603:88;11711:10;11707:2;11700:22;11490:238;11447:281;;:::o;11734:129::-;11768:6;11795:20;;:::i;:::-;11785:30;;11824:33;11852:4;11844:6;11824:33;:::i;:::-;11734:129;;;:::o;11869:311::-;11946:4;12036:18;12028:6;12025:30;12022:56;;;12058:18;;:::i;:::-;12022:56;12108:4;12100:6;12096:17;12088:25;;12168:4;12162;12158:15;12150:23;;11869:311;;;:::o;12186:117::-;12295:1;12292;12285:12;12326:710;12422:5;12447:81;12463:64;12520:6;12463:64;:::i;:::-;12447:81;:::i;:::-;12438:90;;12548:5;12577:6;12570:5;12563:21;12611:4;12604:5;12600:16;12593:23;;12664:4;12656:6;12652:17;12644:6;12640:30;12693:3;12685:6;12682:15;12679:122;;;12712:79;;:::i;:::-;12679:122;12827:6;12810:220;12844:6;12839:3;12836:15;12810:220;;;12919:3;12948:37;12981:3;12969:10;12948:37;:::i;:::-;12943:3;12936:50;13015:4;13010:3;13006:14;12999:21;;12886:144;12870:4;12865:3;12861:14;12854:21;;12810:220;;;12814:21;12428:608;;12326:710;;;;;:::o;13059:370::-;13130:5;13179:3;13172:4;13164:6;13160:17;13156:27;13146:122;;13187:79;;:::i;:::-;13146:122;13304:6;13291:20;13329:94;13419:3;13411:6;13404:4;13396:6;13392:17;13329:94;:::i;:::-;13320:103;;13136:293;13059:370;;;;:::o;13435:311::-;13512:4;13602:18;13594:6;13591:30;13588:56;;;13624:18;;:::i;:::-;13588:56;13674:4;13666:6;13662:17;13654:25;;13734:4;13728;13724:15;13716:23;;13435:311;;;:::o;13769:710::-;13865:5;13890:81;13906:64;13963:6;13906:64;:::i;:::-;13890:81;:::i;:::-;13881:90;;13991:5;14020:6;14013:5;14006:21;14054:4;14047:5;14043:16;14036:23;;14107:4;14099:6;14095:17;14087:6;14083:30;14136:3;14128:6;14125:15;14122:122;;;14155:79;;:::i;:::-;14122:122;14270:6;14253:220;14287:6;14282:3;14279:15;14253:220;;;14362:3;14391:37;14424:3;14412:10;14391:37;:::i;:::-;14386:3;14379:50;14458:4;14453:3;14449:14;14442:21;;14329:144;14313:4;14308:3;14304:14;14297:21;;14253:220;;;14257:21;13871:608;;13769:710;;;;;:::o;14502:370::-;14573:5;14622:3;14615:4;14607:6;14603:17;14599:27;14589:122;;14630:79;;:::i;:::-;14589:122;14747:6;14734:20;14772:94;14862:3;14854:6;14847:4;14839:6;14835:17;14772:94;:::i;:::-;14763:103;;14579:293;14502:370;;;;:::o;14878:894::-;14996:6;15004;15053:2;15041:9;15032:7;15028:23;15024:32;15021:119;;;15059:79;;:::i;:::-;15021:119;15207:1;15196:9;15192:17;15179:31;15237:18;15229:6;15226:30;15223:117;;;15259:79;;:::i;:::-;15223:117;15364:78;15434:7;15425:6;15414:9;15410:22;15364:78;:::i;:::-;15354:88;;15150:302;15519:2;15508:9;15504:18;15491:32;15550:18;15542:6;15539:30;15536:117;;;15572:79;;:::i;:::-;15536:117;15677:78;15747:7;15738:6;15727:9;15723:22;15677:78;:::i;:::-;15667:88;;15462:303;14878:894;;;;;:::o;15778:474::-;15846:6;15854;15903:2;15891:9;15882:7;15878:23;15874:32;15871:119;;;15909:79;;:::i;:::-;15871:119;16029:1;16054:53;16099:7;16090:6;16079:9;16075:22;16054:53;:::i;:::-;16044:63;;16000:117;16156:2;16182:53;16227:7;16218:6;16207:9;16203:22;16182:53;:::i;:::-;16172:63;;16127:118;15778:474;;;;;:::o;16258:60::-;16286:3;16307:5;16300:12;;16258:60;;;:::o;16324:142::-;16374:9;16407:53;16425:34;16434:24;16452:5;16434:24;:::i;:::-;16425:34;:::i;:::-;16407:53;:::i;:::-;16394:66;;16324:142;;;:::o;16472:126::-;16522:9;16555:37;16586:5;16555:37;:::i;:::-;16542:50;;16472:126;;;:::o;16604:144::-;16672:9;16705:37;16736:5;16705:37;:::i;:::-;16692:50;;16604:144;;;:::o;16754:167::-;16859:55;16908:5;16859:55;:::i;:::-;16854:3;16847:68;16754:167;;:::o;16927:258::-;17038:4;17076:2;17065:9;17061:18;17053:26;;17089:89;17175:1;17164:9;17160:17;17151:6;17089:89;:::i;:::-;16927:258;;;;:::o;17191:172::-;17331:24;17327:1;17319:6;17315:14;17308:48;17191:172;:::o;17369:366::-;17511:3;17532:67;17596:2;17591:3;17532:67;:::i;:::-;17525:74;;17608:93;17697:3;17608:93;:::i;:::-;17726:2;17721:3;17717:12;17710:19;;17369:366;;;:::o;17741:419::-;17907:4;17945:2;17934:9;17930:18;17922:26;;17994:9;17988:4;17984:20;17980:1;17969:9;17965:17;17958:47;18022:131;18148:4;18022:131;:::i;:::-;18014:139;;17741:419;;;:::o;18166:180::-;18214:77;18211:1;18204:88;18311:4;18308:1;18301:15;18335:4;18332:1;18325:15;18352:191;18392:4;18412:20;18430:1;18412:20;:::i;:::-;18407:25;;18446:20;18464:1;18446:20;:::i;:::-;18441:25;;18485:1;18482;18479:8;18476:34;;;18490:18;;:::i;:::-;18476:34;18535:1;18532;18528:9;18520:17;;18352:191;;;;:::o;18549:180::-;18597:77;18594:1;18587:88;18694:4;18691:1;18684:15;18718:4;18715:1;18708:15;18735:185;18775:1;18792:20;18810:1;18792:20;:::i;:::-;18787:25;;18826:20;18844:1;18826:20;:::i;:::-;18821:25;;18865:1;18855:35;;18870:18;;:::i;:::-;18855:35;18912:1;18909;18905:9;18900:14;;18735:185;;;;:::o;18926:348::-;18966:7;18989:20;19007:1;18989:20;:::i;:::-;18984:25;;19023:20;19041:1;19023:20;:::i;:::-;19018:25;;19211:1;19143:66;19139:74;19136:1;19133:81;19128:1;19121:9;19114:17;19110:105;19107:131;;;19218:18;;:::i;:::-;19107:131;19266:1;19263;19259:9;19248:20;;18926:348;;;;:::o;19280:305::-;19320:3;19339:20;19357:1;19339:20;:::i;:::-;19334:25;;19373:20;19391:1;19373:20;:::i;:::-;19368:25;;19527:1;19459:66;19455:74;19452:1;19449:81;19446:107;;;19533:18;;:::i;:::-;19446:107;19577:1;19574;19570:9;19563:16;;19280:305;;;;:::o;19591:241::-;19731:34;19727:1;19719:6;19715:14;19708:58;19800:24;19795:2;19787:6;19783:15;19776:49;19591:241;:::o;19838:366::-;19980:3;20001:67;20065:2;20060:3;20001:67;:::i;:::-;19994:74;;20077:93;20166:3;20077:93;:::i;:::-;20195:2;20190:3;20186:12;20179:19;;19838:366;;;:::o;20210:419::-;20376:4;20414:2;20403:9;20399:18;20391:26;;20463:9;20457:4;20453:20;20449:1;20438:9;20434:17;20427:47;20491:131;20617:4;20491:131;:::i;:::-;20483:139;;20210:419;;;:::o;20635:180::-;20683:77;20680:1;20673:88;20780:4;20777:1;20770:15;20804:4;20801:1;20794:15;20821:102;20863:8;20910:5;20907:1;20903:13;20882:34;;20821:102;;;:::o;20929:848::-;20990:5;20997:4;21021:6;21012:15;;21045:5;21036:14;;21059:712;21080:1;21070:8;21067:15;21059:712;;;21175:4;21170:3;21166:14;21160:4;21157:24;21154:50;;;21184:18;;:::i;:::-;21154:50;21234:1;21224:8;21220:16;21217:451;;;21649:4;21642:5;21638:16;21629:25;;21217:451;21699:4;21693;21689:15;21681:23;;21729:32;21752:8;21729:32;:::i;:::-;21717:44;;21059:712;;;20929:848;;;;;;;:::o;21783:1073::-;21837:5;22028:8;22018:40;;22049:1;22040:10;;22051:5;;22018:40;22077:4;22067:36;;22094:1;22085:10;;22096:5;;22067:36;22163:4;22211:1;22206:27;;;;22247:1;22242:191;;;;22156:277;;22206:27;22224:1;22215:10;;22226:5;;;22242:191;22287:3;22277:8;22274:17;22271:43;;;22294:18;;:::i;:::-;22271:43;22343:8;22340:1;22336:16;22327:25;;22378:3;22371:5;22368:14;22365:40;;;22385:18;;:::i;:::-;22365:40;22418:5;;;22156:277;;22542:2;22532:8;22529:16;22523:3;22517:4;22514:13;22510:36;22492:2;22482:8;22479:16;22474:2;22468:4;22465:12;22461:35;22445:111;22442:246;;;22598:8;22592:4;22588:19;22579:28;;22633:3;22626:5;22623:14;22620:40;;;22640:18;;:::i;:::-;22620:40;22673:5;;22442:246;22713:42;22751:3;22741:8;22735:4;22732:1;22713:42;:::i;:::-;22698:57;;;;22787:4;22782:3;22778:14;22771:5;22768:25;22765:51;;;22796:18;;:::i;:::-;22765:51;22845:4;22838:5;22834:16;22825:25;;21783:1073;;;;;;:::o;22862:281::-;22920:5;22944:23;22962:4;22944:23;:::i;:::-;22936:31;;22988:25;23004:8;22988:25;:::i;:::-;22976:37;;23032:104;23069:66;23059:8;23053:4;23032:104;:::i;:::-;23023:113;;22862:281;;;;:::o;23149:233::-;23188:3;23211:24;23229:5;23211:24;:::i;:::-;23202:33;;23257:66;23250:5;23247:77;23244:103;;;23327:18;;:::i;:::-;23244:103;23374:1;23367:5;23363:13;23356:20;;23149:233;;;:::o;23388:143::-;23445:5;23476:6;23470:13;23461:22;;23492:33;23519:5;23492:33;:::i;:::-;23388:143;;;;:::o;23537:351::-;23607:6;23656:2;23644:9;23635:7;23631:23;23627:32;23624:119;;;23662:79;;:::i;:::-;23624:119;23782:1;23807:64;23863:7;23854:6;23843:9;23839:22;23807:64;:::i;:::-;23797:74;;23753:128;23537:351;;;;:::o;23894:225::-;24034:34;24030:1;24022:6;24018:14;24011:58;24103:8;24098:2;24090:6;24086:15;24079:33;23894:225;:::o;24125:366::-;24267:3;24288:67;24352:2;24347:3;24288:67;:::i;:::-;24281:74;;24364:93;24453:3;24364:93;:::i;:::-;24482:2;24477:3;24473:12;24466:19;;24125:366;;;:::o;24497:419::-;24663:4;24701:2;24690:9;24686:18;24678:26;;24750:9;24744:4;24740:20;24736:1;24725:9;24721:17;24714:47;24778:131;24904:4;24778:131;:::i;:::-;24770:139;;24497:419;;;:::o;24922:171::-;25062:23;25058:1;25050:6;25046:14;25039:47;24922:171;:::o;25099:366::-;25241:3;25262:67;25326:2;25321:3;25262:67;:::i;:::-;25255:74;;25338:93;25427:3;25338:93;:::i;:::-;25456:2;25451:3;25447:12;25440:19;;25099:366;;;:::o;25471:419::-;25637:4;25675:2;25664:9;25660:18;25652:26;;25724:9;25718:4;25714:20;25710:1;25699:9;25695:17;25688:47;25752:131;25878:4;25752:131;:::i;:::-;25744:139;;25471:419;;;:::o;25896:167::-;26036:19;26032:1;26024:6;26020:14;26013:43;25896:167;:::o;26069:366::-;26211:3;26232:67;26296:2;26291:3;26232:67;:::i;:::-;26225:74;;26308:93;26397:3;26308:93;:::i;:::-;26426:2;26421:3;26417:12;26410:19;;26069:366;;;:::o;26441:419::-;26607:4;26645:2;26634:9;26630:18;26622:26;;26694:9;26688:4;26684:20;26680:1;26669:9;26665:17;26658:47;26722:131;26848:4;26722:131;:::i;:::-;26714:139;;26441:419;;;:::o;26866:143::-;26923:5;26954:6;26948:13;26939:22;;26970:33;26997:5;26970:33;:::i;:::-;26866:143;;;;:::o;27015:351::-;27085:6;27134:2;27122:9;27113:7;27109:23;27105:32;27102:119;;;27140:79;;:::i;:::-;27102:119;27260:1;27285:64;27341:7;27332:6;27321:9;27317:22;27285:64;:::i;:::-;27275:74;;27231:128;27015:351;;;;:::o;27372:85::-;27417:7;27446:5;27435:16;;27372:85;;;:::o;27463:158::-;27521:9;27554:61;27572:42;27581:32;27607:5;27581:32;:::i;:::-;27572:42;:::i;:::-;27554:61;:::i;:::-;27541:74;;27463:158;;;:::o;27627:147::-;27722:45;27761:5;27722:45;:::i;:::-;27717:3;27710:58;27627:147;;:::o;27780:831::-;28043:4;28081:3;28070:9;28066:19;28058:27;;28095:71;28163:1;28152:9;28148:17;28139:6;28095:71;:::i;:::-;28176:80;28252:2;28241:9;28237:18;28228:6;28176:80;:::i;:::-;28303:9;28297:4;28293:20;28288:2;28277:9;28273:18;28266:48;28331:108;28434:4;28425:6;28331:108;:::i;:::-;28323:116;;28449:72;28517:2;28506:9;28502:18;28493:6;28449:72;:::i;:::-;28531:73;28599:3;28588:9;28584:19;28575:6;28531:73;:::i;:::-;27780:831;;;;;;;;:::o;28617:807::-;28866:4;28904:3;28893:9;28889:19;28881:27;;28918:71;28986:1;28975:9;28971:17;28962:6;28918:71;:::i;:::-;28999:72;29067:2;29056:9;29052:18;29043:6;28999:72;:::i;:::-;29081:80;29157:2;29146:9;29142:18;29133:6;29081:80;:::i;:::-;29171;29247:2;29236:9;29232:18;29223:6;29171:80;:::i;:::-;29261:73;29329:3;29318:9;29314:19;29305:6;29261:73;:::i;:::-;29344;29412:3;29401:9;29397:19;29388:6;29344:73;:::i;:::-;28617:807;;;;;;;;;:::o;29430:663::-;29518:6;29526;29534;29583:2;29571:9;29562:7;29558:23;29554:32;29551:119;;;29589:79;;:::i;:::-;29551:119;29709:1;29734:64;29790:7;29781:6;29770:9;29766:22;29734:64;:::i;:::-;29724:74;;29680:128;29847:2;29873:64;29929:7;29920:6;29909:9;29905:22;29873:64;:::i;:::-;29863:74;;29818:129;29986:2;30012:64;30068:7;30059:6;30048:9;30044:22;30012:64;:::i;:::-;30002:74;;29957:129;29430:663;;;;;:::o;30099:147::-;30200:11;30237:3;30222:18;;30099:147;;;;:::o;30252:114::-;;:::o;30372:398::-;30531:3;30552:83;30633:1;30628:3;30552:83;:::i;:::-;30545:90;;30644:93;30733:3;30644:93;:::i;:::-;30762:1;30757:3;30753:11;30746:18;;30372:398;;;:::o;30776:379::-;30960:3;30982:147;31125:3;30982:147;:::i;:::-;30975:154;;31146:3;31139:10;;30776:379;;;:::o;31161:180::-;31301:32;31297:1;31289:6;31285:14;31278:56;31161:180;:::o;31347:366::-;31489:3;31510:67;31574:2;31569:3;31510:67;:::i;:::-;31503:74;;31586:93;31675:3;31586:93;:::i;:::-;31704:2;31699:3;31695:12;31688:19;;31347:366;;;:::o;31719:419::-;31885:4;31923:2;31912:9;31908:18;31900:26;;31972:9;31966:4;31962:20;31958:1;31947:9;31943:17;31936:47;32000:131;32126:4;32000:131;:::i;:::-;31992:139;;31719:419;;;:::o

Swarm Source

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