ETH Price: $2,458.55 (-1.18%)

Token

MIBOIS (BOIS)
 

Overview

Max Total Supply

69,420,000,000 BOIS

Holders

472

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.729586807586995538 BOIS

Value
$0.00
0x1e512be7d0ba06eb45d8b7febbe3e2a22261b576
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:
MIBOIS

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// https://mibois.club/
// https://x.com/mibois2024?s=21
// https://t.me/MIBOISPORTAL

pragma solidity 0.8.23;

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



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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}


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

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

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

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

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

contract MIBOIS is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "MIBOIS";
    string constant _symbol = "BOIS";
    uint8 constant _decimals = 18; 


    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address buybackFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTX(uint256 maxTX);
    event set_SwapBack(uint256 Amount, bool Enabled);
  
    uint256 _totalSupply =  69420000000 * 10**_decimals; 

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;  
    mapping (address => bool) isnotabot;
    mapping (address => bool) isexemptfromfees;
    mapping (address => bool) isexemptfrommaxTX;

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 900;
    uint256 private devFee          = 0;
    uint256 private buybackFee      = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = buybackFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 1000;

    // no bots tax
    uint256 sellpercent = 900;
    uint256 buypercent = 900;
    uint256 transferpercent = 900; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private buybackFeeReceiver;
    address private burnFeeReceiver;

    uint256 setRatio = 30;
    uint256 setRatioDenominator = 100;
    

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

   
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isexemptfromfees[msg.sender] = true;        
        isnotabot[msg.sender] = true;       
        isexemptfrommaxTX[msg.sender] = true;
        isexemptfrommaxTX[pair] = true;
        isexemptfrommaxTX[marketingFeeReceiver] = true;
        isexemptfrommaxTX[address(this)] = true;
        
        autoLiquidityReceiver = 0x3e6Edca66bCf37adcca0f9DFA0D80b7587BF67D7;
        marketingFeeReceiver = 0x3e6Edca66bCf37adcca0f9DFA0D80b7587BF67D7;
        devFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    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 approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function maxWalletRule(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
        emit set_MaxWallet(_maxWalletToken);
                
    }

      function removeLimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }

      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
          }
        
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        checkTxLimit(sender, amount);  

        if(shouldSwapBack()){ swapBack(); }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isexemptfrommaxTX[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isexemptfromfees[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transferpercent;
        if(recipient == pair) {
            percent = sellpercent;
        } else if(sender == pair) {
            percent = buypercent;
            if(isnotabot[recipient])
            {
                percent = 10;
            }
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 1000);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

  
    function manualSend() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);
            
    }

   function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setStructure(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner {
        sellpercent = _percentonsell;
        buypercent = _percentonbuy;
        transferpercent = _wallettransfer;    
          
    }
       
    function startTrading() public onlyOwner {
        TradingOpen = true;   
    }

    function reduceFee() public onlyOwner {
        buypercent = 10;
        sellpercent = 10;
        transferpercent = 0;
    }

             
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHbuyback = amountETH.mul(buybackFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }
    
  
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buypercent).div(feeDenominator)),
            uint8(totalFee.mul(sellpercent).div(feeDenominator)),
            uint8(totalFee.mul(transferpercent).div(feeDenominator))
            );
    }
    
    function setParameters(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        set_fees();
    }

   
    function setWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit set_Receivers(marketingFeeReceiver, buybackFeeReceiver, burnFeeReceiver, devFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit set_SwapBack(swapThreshold, swapEnabled);
    }

    function markNotABot(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isnotabot[accounts[i]] = excluded;
        }
    }

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }
    
    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"markNotABot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000d5b565b641029c1230062000026919062000dab565b60035562000056606462000047600260035462000a8b60201b90919060201c565b62000b0b60201b90919060201c565b60045562000086606462000077600260035462000a8b60201b90919060201c565b62000b0b60201b90919060201c565b6005555f600b55610384600c555f600d555f600e555f600f55600f54600d54600b54600c54600e54620000ba919062000df5565b620000c6919062000df5565b620000d2919062000df5565b620000de919062000df5565b6010556103e8601155610384601255610384601355610384601455601e601a556064601b555f601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff0219169083151502179055506103e86003546200014a919062000e5c565b601f5534801562000159575f80fd5b505f6200016b62000b5c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000360919062000ef8565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200040a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000430919062000ef8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200048d92919062000f39565b6020604051808303815f875af1158015620004aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004d0919062000ef8565b601e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550733e6edca66bcf37adcca0f9dfa0d80b7587bf67d760155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733e6edca66bcf37adcca0f9dfa0d80b7587bf67d760165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000a7d919062000f75565b60405180910390a3620010da565b5f80830362000a9d575f905062000b05565b5f828462000aac919062000dab565b905082848262000abd919062000e5c565b1462000b00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af79062001014565b60405180910390fd5b809150505b92915050565b5f62000b5483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b6360201b60201c565b905092915050565b5f33905090565b5f808311829062000bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba39190620010b8565b60405180910390fd5b505f838562000bbc919062000e5c565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c535780860481111562000c2b5762000c2a62000bc9565b5b600185161562000c3b5780820291505b808102905062000c4b8562000bf6565b945062000c0b565b94509492505050565b5f8262000c6d576001905062000d3f565b8162000c7c575f905062000d3f565b816001811462000c95576002811462000ca05762000cd6565b600191505062000d3f565b60ff84111562000cb55762000cb462000bc9565b5b8360020a91508482111562000ccf5762000cce62000bc9565b5b5062000d3f565b5060208310610133831016604e8410600b841016171562000d105782820a90508381111562000d0a5762000d0962000bc9565b5b62000d3f565b62000d1f848484600162000c02565b9250905081840481111562000d395762000d3862000bc9565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000d678262000d46565b915062000d748362000d4f565b925062000da37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c5c565b905092915050565b5f62000db78262000d46565b915062000dc48362000d46565b925082820262000dd48162000d46565b9150828204841483151762000dee5762000ded62000bc9565b5b5092915050565b5f62000e018262000d46565b915062000e0e8362000d46565b925082820190508082111562000e295762000e2862000bc9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e688262000d46565b915062000e758362000d46565b92508262000e885762000e8762000e2f565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ec28262000e97565b9050919050565b62000ed48162000eb6565b811462000edf575f80fd5b50565b5f8151905062000ef28162000ec9565b92915050565b5f6020828403121562000f105762000f0f62000e93565b5b5f62000f1f8482850162000ee2565b91505092915050565b62000f338162000eb6565b82525050565b5f60408201905062000f4e5f83018562000f28565b62000f5d602083018462000f28565b9392505050565b62000f6f8162000d46565b82525050565b5f60208201905062000f8a5f83018462000f64565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000ffc60218362000f90565b9150620010098262000fa0565b604082019050919050565b5f6020820190508181035f8301526200102d8162000fee565b9050919050565b5f81519050919050565b5f5b838110156200105d57808201518184015260208101905062001040565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620010848262001034565b62001090818562000f90565b9350620010a28185602086016200103e565b620010ad8162001068565b840191505092915050565b5f6020820190508181035f830152620010d2818462001078565b905092915050565b6142dd80620010e85f395ff3fe60806040526004361061021d575f3560e01c806377b54bad11610122578063a9059cbb116100aa578063ded1e4381161006e578063ded1e4381461079e578063df20fd49146107da578063f2fde38b14610802578063f42938901461082a578063f887ea401461084057610224565b8063a9059cbb146106ac578063ab4dde87146106e8578063b2bdfa7b14610710578063c0cbdea41461073a578063dd62ed3e1461076257610224565b8063893d20e8116100f1578063893d20e8146105ee5780638da5cb5b1461061857806395d89b4114610642578063a70419d21461066c578063a8aa1b311461068257610224565b806377b54bad1461053657806378109e54146105725780637d1db4a51461059c57806382528791146105c657610224565b806330c9a6a0116101a55780635d83e1d5116101745780635d83e1d51461047c5780636ddd1713146104a457806370a08231146104ce578063715018a61461050a578063751039fc1461052057610224565b806330c9a6a0146103b0578063313ce567146103ec5780635526566914610416578063571ac8b01461044057610224565b806318160ddd116101ec57806318160ddd146102e25780631df4ccfc1461030c57806323b872dd14610336578063282c874914610372578063293230b81461039a57610224565b80630445b6671461022857806306fdde031461025257806308fd3d051461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c61086a565b6040516102499190613407565b60405180910390f35b34801561025d575f80fd5b50610266610870565b60405161027391906134aa565b60405180910390f35b348015610287575f80fd5b506102906108ad565b60405161029d91906134e4565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190613589565b6108c0565b6040516102d991906134e4565b60405180910390f35b3480156102ed575f80fd5b506102f66109ad565b6040516103039190613407565b60405180910390f35b348015610317575f80fd5b506103206109b6565b60405161032d9190613407565b60405180910390f35b348015610341575f80fd5b5061035c600480360381019061035791906135c7565b6109bc565b60405161036991906134e4565b60405180910390f35b34801561037d575f80fd5b5061039860048036038101906103939190613617565b610baf565b005b3480156103a5575f80fd5b506103ae610ccc565b005b3480156103bb575f80fd5b506103d660048036038101906103d191906136a0565b610d7d565b6040516103e39190613407565b60405180910390f35b3480156103f7575f80fd5b50610400610ded565b60405161040d91906136e6565b60405180910390f35b348015610421575f80fd5b5061042a610df5565b6040516104379190613407565b60405180910390f35b34801561044b575f80fd5b50610466600480360381019061046191906136ff565b610e34565b60405161047391906134e4565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d91906136a0565b610e66565b005b3480156104af575f80fd5b506104b8610f64565b6040516104c591906134e4565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef91906136ff565b610f77565b6040516105019190613407565b60405180910390f35b348015610515575f80fd5b5061051e610fbd565b005b34801561052b575f80fd5b5061053461110b565b005b348015610541575f80fd5b5061055c60048036038101906105579190613589565b6111b3565b60405161056991906134e4565b60405180910390f35b34801561057d575f80fd5b506105866113a7565b6040516105939190613407565b60405180910390f35b3480156105a7575f80fd5b506105b06113ad565b6040516105bd9190613407565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e7919061372a565b6113b3565b005b3480156105f9575f80fd5b5061060261164f565b60405161060f91906137b0565b60405180910390f35b348015610623575f80fd5b5061062c61165d565b60405161063991906137b0565b60405180910390f35b34801561064d575f80fd5b50610656611684565b60405161066391906134aa565b60405180910390f35b348015610677575f80fd5b506106806116c1565b005b34801561068d575f80fd5b5061069661176e565b6040516106a391906137b0565b60405180910390f35b3480156106b7575f80fd5b506106d260048036038101906106cd9190613589565b611793565b6040516106df91906134e4565b60405180910390f35b3480156106f3575f80fd5b5061070e60048036038101906107099190613854565b6117a7565b005b34801561071b575f80fd5b506107246118d6565b60405161073191906137b0565b60405180910390f35b348015610745575f80fd5b50610760600480360381019061075b91906138b1565b6118f9565b005b34801561076d575f80fd5b5061078860048036038101906107839190613901565b6119a7565b6040516107959190613407565b60405180910390f35b3480156107a9575f80fd5b506107c460048036038101906107bf919061393f565b611a29565b6040516107d191906134e4565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb919061397d565b611a3d565b005b34801561080d575f80fd5b50610828600480360381019061082391906136ff565b611b40565b005b348015610835575f80fd5b5061083e611cfd565b005b34801561084b575f80fd5b50610854611d64565b6040516108619190613a16565b60405180910390f35b601f5481565b60606040518060400160405280600681526020017f4d49424f49530000000000000000000000000000000000000000000000000000815250905090565b601e60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161099b9190613407565b60405180910390a36001905092915050565b5f600354905090565b60105481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b9b57610b1e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d899092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610ba6848484611deb565b90509392505050565b610bb7612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90613a79565b60405180910390fd5b85600b8190555084600e8190555083600c8190555082600d8190555081600f81905550610caf82610ca185610c9388610c858b8d61242990919063ffffffff16565b61242990919063ffffffff16565b61242990919063ffffffff16565b61242990919063ffffffff16565b60108190555080601181905550610cc4612486565b505050505050565b610cd4612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790613a79565b60405180910390fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f610de6610d89610df5565b610dd8610dc96002610dbb601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f77565b61254190919063ffffffff16565b8561254190919063ffffffff16565b6125b890919063ffffffff16565b9050919050565b5f6012905090565b5f610e2f610e025f610f77565b610e21610e1061dead610f77565b60035461260190919063ffffffff16565b61260190919063ffffffff16565b905090565b5f610e5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c0565b9050919050565b610e6e612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613a79565b60405180910390fd5b6001811015610f07575f80fd5b6103e881600354610f189190613ac4565b610f229190613b32565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610f599190613407565b60405180910390a150565b601e60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fc5612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890613a79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611113612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690613a79565b60405180910390fd5b600354600481905550600354600581905550565b5f6111bc612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90613a79565b60405180910390fd5b5f82036112ca578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161128891906137b0565b602060405180830381865afa1580156112a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c79190613b76565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516112fb929190613ba1565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161135f929190613ba1565b6020604051808303815f875af115801561137b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190613bdc565b905092915050565b60055481565b60045481565b6113bb612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90613a79565b60405180910390fd5b8460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116409493929190613c07565b60405180910390a15050505050565b5f61165861165d565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f495300000000000000000000000000000000000000000000000000000000815250905090565b6116c9612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613a79565b60405180910390fd5b600a601381905550600a6012819055505f601481905550565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61179f338484611deb565b905092915050565b6117af612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290613a79565b60405180910390fd5b5f5b838390508110156118d0578160085f86868581811061185f5761185e613c4a565b5b905060200201602081019061187491906136ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061183d565b50505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611901612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613a79565b60405180910390fd5b816012819055508260138190555080601481905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f82611a3483610d7d565b11905092915050565b611a45612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890613a79565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601f54601e60159054906101000a900460ff16604051611b34929190613c77565b60405180910390a15050565b611b48612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90613a79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990613d0e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611d61573d5f803e3d5ffd5b50565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f838311158290611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc791906134aa565b60405180910390fd5b505f8385611dde9190613d2c565b9050809150509392505050565b5f60205f9054906101000a900460ff1615611e1257611e0b84848461264a565b905061241b565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611eb0575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f0557601e60149054906101000a900460ff16611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613da9565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f8857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fc2575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561201b5750601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612074575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120cd575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121205750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612183575f61212f84610f77565b905060055483826121409190613dc7565b1115612181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217890613e6a565b60405180910390fd5b505b61218d8483612814565b6121956128ae565b156121a3576121a2612980565b5b61222a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d899092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612307575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61231b57612316858486612f7b565b61231d565b825b905061236f8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161240d9190613407565b60405180910390a360019150505b9392505050565b5f33905090565b5f8082846124379190613dc7565b90508381101561247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247390613ed2565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006124d26011546124c460135460105461254190919063ffffffff16565b6125b890919063ffffffff16565b6124fd6011546124ef60125460105461254190919063ffffffff16565b6125b890919063ffffffff16565b61252860115461251a60145460105461254190919063ffffffff16565b6125b890919063ffffffff16565b60405161253793929190613ef0565b60405180910390a1565b5f808303612551575f90506125b2565b5f828461255e9190613ac4565b905082848261256d9190613b32565b146125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a490613f95565b60405180910390fd5b809150505b92915050565b5f6125f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061338e565b905092915050565b5f61264283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d89565b905092915050565b5f6126d2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d899092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127638260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128019190613407565b60405180910390a3600190509392505050565b6004548111158061286b5750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6128aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a190613ffd565b60405180910390fd5b5050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612918575060205f9054906101000a900460ff16155b80156129305750601e60159054906101000a900460ff165b801561297b5750601f5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160205f6101000a81548160ff0219169083151502179055505f6129a9601a54601b54611a29565b6129b557600b546129b7565b5f5b90505f6129f660026129e86010546129da86601f5461254190919063ffffffff16565b6125b890919063ffffffff16565b6125b890919063ffffffff16565b90505f612a0e82601f5461260190919063ffffffff16565b90505f600267ffffffffffffffff811115612a2c57612a2b61401b565b5b604051908082528060200260200182016040528015612a5a5781602001602082028036833780820191505090505b50905030815f81518110612a7157612a70613c4a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612ae157612ae0613c4a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401612b81959493929190614138565b5f604051808303815f87803b158015612b98575f80fd5b505af1158015612baa573d5f803e3d5ffd5b505050505f612bc2824761260190919063ffffffff16565b90505f612bed612bdc6002896125b890919063ffffffff16565b60105461260190919063ffffffff16565b90505f612c286002612c1a84612c0c8c8861254190919063ffffffff16565b6125b890919063ffffffff16565b6125b890919063ffffffff16565b90505f612c5283612c44600c548761254190919063ffffffff16565b6125b890919063ffffffff16565b90505f612c7c84612c6e600e548861254190919063ffffffff16565b6125b890919063ffffffff16565b90505f612ca685612c98600d548961254190919063ffffffff16565b6125b890919063ffffffff16565b90505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612cee906141bd565b5f6040518083038185875af1925050503d805f8114612d28576040519150601f19603f3d011682016040523d82523d5f602084013e612d2d565b606091505b5050905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d76906141bd565b5f6040518083038185875af1925050503d805f8114612db0576040519150601f19603f3d011682016040523d82523d5f602084013e612db5565b606091505b50508091505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e00906141bd565b5f6040518083038185875af1925050503d805f8114612e3a576040519150601f19603f3d011682016040523d82523d5f602084013e612e3f565b606091505b5050809150505f90505f8b1115612f5457601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612ed6969594939291906141d1565b60606040518083038185885af1158015612ef2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f179190614230565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612f4b929190614280565b60405180910390a15b5050505050505050505050505f60205f6101000a81548160ff021916908315150217905550565b5f806014549050601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe057601254905061308f565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361308e57601354905060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561308d57600a90505b5b5b5f6130d86103e86011546130a39190613ac4565b6130ca846130bc6010548a61254190919063ffffffff16565b61254190919063ffffffff16565b6125b890919063ffffffff16565b90505f6131046010546130f6600f548561254190919063ffffffff16565b6125b890919063ffffffff16565b90505f61311a828461260190919063ffffffff16565b905061316c8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061321e8260065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132dd9190613407565b60405180910390a35f82111561336e576133028260035461260190919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133659190613407565b60405180910390a35b613381838861260190919063ffffffff16565b9450505050509392505050565b5f80831182906133d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133cb91906134aa565b60405180910390fd5b505f83856133e29190613b32565b9050809150509392505050565b5f819050919050565b613401816133ef565b82525050565b5f60208201905061341a5f8301846133f8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561345757808201518184015260208101905061343c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61347c82613420565b613486818561342a565b935061349681856020860161343a565b61349f81613462565b840191505092915050565b5f6020820190508181035f8301526134c28184613472565b905092915050565b5f8115159050919050565b6134de816134ca565b82525050565b5f6020820190506134f75f8301846134d5565b92915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61352e82613505565b9050919050565b61353e81613524565b8114613548575f80fd5b50565b5f8135905061355981613535565b92915050565b613568816133ef565b8114613572575f80fd5b50565b5f813590506135838161355f565b92915050565b5f806040838503121561359f5761359e6134fd565b5b5f6135ac8582860161354b565b92505060206135bd85828601613575565b9150509250929050565b5f805f606084860312156135de576135dd6134fd565b5b5f6135eb8682870161354b565b93505060206135fc8682870161354b565b925050604061360d86828701613575565b9150509250925092565b5f805f805f8060c08789031215613631576136306134fd565b5b5f61363e89828a01613575565b965050602061364f89828a01613575565b955050604061366089828a01613575565b945050606061367189828a01613575565b935050608061368289828a01613575565b92505060a061369389828a01613575565b9150509295509295509295565b5f602082840312156136b5576136b46134fd565b5b5f6136c284828501613575565b91505092915050565b5f60ff82169050919050565b6136e0816136cb565b82525050565b5f6020820190506136f95f8301846136d7565b92915050565b5f60208284031215613714576137136134fd565b5b5f6137218482850161354b565b91505092915050565b5f805f805f60a08688031215613743576137426134fd565b5b5f6137508882890161354b565b95505060206137618882890161354b565b94505060406137728882890161354b565b93505060606137838882890161354b565b92505060806137948882890161354b565b9150509295509295909350565b6137aa81613524565b82525050565b5f6020820190506137c35f8301846137a1565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126137ea576137e96137c9565b5b8235905067ffffffffffffffff811115613807576138066137cd565b5b602083019150836020820283011115613823576138226137d1565b5b9250929050565b613833816134ca565b811461383d575f80fd5b50565b5f8135905061384e8161382a565b92915050565b5f805f6040848603121561386b5761386a6134fd565b5b5f84013567ffffffffffffffff81111561388857613887613501565b5b613894868287016137d5565b935093505060206138a786828701613840565b9150509250925092565b5f805f606084860312156138c8576138c76134fd565b5b5f6138d586828701613575565b93505060206138e686828701613575565b92505060406138f786828701613575565b9150509250925092565b5f8060408385031215613917576139166134fd565b5b5f6139248582860161354b565b92505060206139358582860161354b565b9150509250929050565b5f8060408385031215613955576139546134fd565b5b5f61396285828601613575565b925050602061397385828601613575565b9150509250929050565b5f8060408385031215613993576139926134fd565b5b5f6139a085828601613840565b92505060206139b185828601613575565b9150509250929050565b5f819050919050565b5f6139de6139d96139d484613505565b6139bb565b613505565b9050919050565b5f6139ef826139c4565b9050919050565b5f613a00826139e5565b9050919050565b613a10816139f6565b82525050565b5f602082019050613a295f830184613a07565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a6360208361342a565b9150613a6e82613a2f565b602082019050919050565b5f6020820190508181035f830152613a9081613a57565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ace826133ef565b9150613ad9836133ef565b9250828202613ae7816133ef565b91508282048414831517613afe57613afd613a97565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b3c826133ef565b9150613b47836133ef565b925082613b5757613b56613b05565b5b828204905092915050565b5f81519050613b708161355f565b92915050565b5f60208284031215613b8b57613b8a6134fd565b5b5f613b9884828501613b62565b91505092915050565b5f604082019050613bb45f8301856137a1565b613bc160208301846133f8565b9392505050565b5f81519050613bd68161382a565b92915050565b5f60208284031215613bf157613bf06134fd565b5b5f613bfe84828501613bc8565b91505092915050565b5f608082019050613c1a5f8301876137a1565b613c2760208301866137a1565b613c3460408301856137a1565b613c4160608301846137a1565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050613c8a5f8301856133f8565b613c9760208301846134d5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613cf860268361342a565b9150613d0382613c9e565b604082019050919050565b5f6020820190508181035f830152613d2581613cec565b9050919050565b5f613d36826133ef565b9150613d41836133ef565b9250828203905081811115613d5957613d58613a97565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613d9360148361342a565b9150613d9e82613d5f565b602082019050919050565b5f6020820190508181035f830152613dc081613d87565b9050919050565b5f613dd1826133ef565b9150613ddc836133ef565b9250828201905080821115613df457613df3613a97565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613e54603e8361342a565b9150613e5f82613dfa565b604082019050919050565b5f6020820190508181035f830152613e8181613e48565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ebc601b8361342a565b9150613ec782613e88565b602082019050919050565b5f6020820190508181035f830152613ee981613eb0565b9050919050565b5f606082019050613f035f8301866136d7565b613f1060208301856136d7565b613f1d60408301846136d7565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f7f60218361342a565b9150613f8a82613f25565b604082019050919050565b5f6020820190508181035f830152613fac81613f73565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613fe760118361342a565b9150613ff282613fb3565b602082019050919050565b5f6020820190508181035f83015261401481613fdb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f61406b61406661406184614048565b6139bb565b6133ef565b9050919050565b61407b81614051565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140b381613524565b82525050565b5f6140c483836140aa565b60208301905092915050565b5f602082019050919050565b5f6140e682614081565b6140f0818561408b565b93506140fb8361409b565b805f5b8381101561412b57815161411288826140b9565b975061411d836140d0565b9250506001810190506140fe565b5085935050505092915050565b5f60a08201905061414b5f8301886133f8565b6141586020830187614072565b818103604083015261416a81866140dc565b905061417960608301856137a1565b61418660808301846133f8565b9695505050505050565b5f81905092915050565b50565b5f6141a85f83614190565b91506141b38261419a565b5f82019050919050565b5f6141c78261419d565b9150819050919050565b5f60c0820190506141e45f8301896137a1565b6141f160208301886133f8565b6141fe6040830187614072565b61420b6060830186614072565b61421860808301856137a1565b61422560a08301846133f8565b979650505050505050565b5f805f60608486031215614247576142466134fd565b5b5f61425486828701613b62565b935050602061426586828701613b62565b925050604061427686828701613b62565b9150509250925092565b5f6040820190506142935f8301856133f8565b6142a060208301846133f8565b939250505056fea26469706673582212205cd6e436f9386432ae7af8a4728cc20ec4e201a8b883620ef27420946015bca764736f6c63430008170033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c806377b54bad11610122578063a9059cbb116100aa578063ded1e4381161006e578063ded1e4381461079e578063df20fd49146107da578063f2fde38b14610802578063f42938901461082a578063f887ea401461084057610224565b8063a9059cbb146106ac578063ab4dde87146106e8578063b2bdfa7b14610710578063c0cbdea41461073a578063dd62ed3e1461076257610224565b8063893d20e8116100f1578063893d20e8146105ee5780638da5cb5b1461061857806395d89b4114610642578063a70419d21461066c578063a8aa1b311461068257610224565b806377b54bad1461053657806378109e54146105725780637d1db4a51461059c57806382528791146105c657610224565b806330c9a6a0116101a55780635d83e1d5116101745780635d83e1d51461047c5780636ddd1713146104a457806370a08231146104ce578063715018a61461050a578063751039fc1461052057610224565b806330c9a6a0146103b0578063313ce567146103ec5780635526566914610416578063571ac8b01461044057610224565b806318160ddd116101ec57806318160ddd146102e25780631df4ccfc1461030c57806323b872dd14610336578063282c874914610372578063293230b81461039a57610224565b80630445b6671461022857806306fdde031461025257806308fd3d051461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c61086a565b6040516102499190613407565b60405180910390f35b34801561025d575f80fd5b50610266610870565b60405161027391906134aa565b60405180910390f35b348015610287575f80fd5b506102906108ad565b60405161029d91906134e4565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190613589565b6108c0565b6040516102d991906134e4565b60405180910390f35b3480156102ed575f80fd5b506102f66109ad565b6040516103039190613407565b60405180910390f35b348015610317575f80fd5b506103206109b6565b60405161032d9190613407565b60405180910390f35b348015610341575f80fd5b5061035c600480360381019061035791906135c7565b6109bc565b60405161036991906134e4565b60405180910390f35b34801561037d575f80fd5b5061039860048036038101906103939190613617565b610baf565b005b3480156103a5575f80fd5b506103ae610ccc565b005b3480156103bb575f80fd5b506103d660048036038101906103d191906136a0565b610d7d565b6040516103e39190613407565b60405180910390f35b3480156103f7575f80fd5b50610400610ded565b60405161040d91906136e6565b60405180910390f35b348015610421575f80fd5b5061042a610df5565b6040516104379190613407565b60405180910390f35b34801561044b575f80fd5b50610466600480360381019061046191906136ff565b610e34565b60405161047391906134e4565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d91906136a0565b610e66565b005b3480156104af575f80fd5b506104b8610f64565b6040516104c591906134e4565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef91906136ff565b610f77565b6040516105019190613407565b60405180910390f35b348015610515575f80fd5b5061051e610fbd565b005b34801561052b575f80fd5b5061053461110b565b005b348015610541575f80fd5b5061055c60048036038101906105579190613589565b6111b3565b60405161056991906134e4565b60405180910390f35b34801561057d575f80fd5b506105866113a7565b6040516105939190613407565b60405180910390f35b3480156105a7575f80fd5b506105b06113ad565b6040516105bd9190613407565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e7919061372a565b6113b3565b005b3480156105f9575f80fd5b5061060261164f565b60405161060f91906137b0565b60405180910390f35b348015610623575f80fd5b5061062c61165d565b60405161063991906137b0565b60405180910390f35b34801561064d575f80fd5b50610656611684565b60405161066391906134aa565b60405180910390f35b348015610677575f80fd5b506106806116c1565b005b34801561068d575f80fd5b5061069661176e565b6040516106a391906137b0565b60405180910390f35b3480156106b7575f80fd5b506106d260048036038101906106cd9190613589565b611793565b6040516106df91906134e4565b60405180910390f35b3480156106f3575f80fd5b5061070e60048036038101906107099190613854565b6117a7565b005b34801561071b575f80fd5b506107246118d6565b60405161073191906137b0565b60405180910390f35b348015610745575f80fd5b50610760600480360381019061075b91906138b1565b6118f9565b005b34801561076d575f80fd5b5061078860048036038101906107839190613901565b6119a7565b6040516107959190613407565b60405180910390f35b3480156107a9575f80fd5b506107c460048036038101906107bf919061393f565b611a29565b6040516107d191906134e4565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb919061397d565b611a3d565b005b34801561080d575f80fd5b50610828600480360381019061082391906136ff565b611b40565b005b348015610835575f80fd5b5061083e611cfd565b005b34801561084b575f80fd5b50610854611d64565b6040516108619190613a16565b60405180910390f35b601f5481565b60606040518060400160405280600681526020017f4d49424f49530000000000000000000000000000000000000000000000000000815250905090565b601e60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161099b9190613407565b60405180910390a36001905092915050565b5f600354905090565b60105481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b9b57610b1e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d899092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610ba6848484611deb565b90509392505050565b610bb7612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90613a79565b60405180910390fd5b85600b8190555084600e8190555083600c8190555082600d8190555081600f81905550610caf82610ca185610c9388610c858b8d61242990919063ffffffff16565b61242990919063ffffffff16565b61242990919063ffffffff16565b61242990919063ffffffff16565b60108190555080601181905550610cc4612486565b505050505050565b610cd4612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790613a79565b60405180910390fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f610de6610d89610df5565b610dd8610dc96002610dbb601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f77565b61254190919063ffffffff16565b8561254190919063ffffffff16565b6125b890919063ffffffff16565b9050919050565b5f6012905090565b5f610e2f610e025f610f77565b610e21610e1061dead610f77565b60035461260190919063ffffffff16565b61260190919063ffffffff16565b905090565b5f610e5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c0565b9050919050565b610e6e612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613a79565b60405180910390fd5b6001811015610f07575f80fd5b6103e881600354610f189190613ac4565b610f229190613b32565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610f599190613407565b60405180910390a150565b601e60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fc5612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890613a79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611113612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690613a79565b60405180910390fd5b600354600481905550600354600581905550565b5f6111bc612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90613a79565b60405180910390fd5b5f82036112ca578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161128891906137b0565b602060405180830381865afa1580156112a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c79190613b76565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516112fb929190613ba1565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161135f929190613ba1565b6020604051808303815f875af115801561137b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190613bdc565b905092915050565b60055481565b60045481565b6113bb612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90613a79565b60405180910390fd5b8460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116409493929190613c07565b60405180910390a15050505050565b5f61165861165d565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f495300000000000000000000000000000000000000000000000000000000815250905090565b6116c9612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613a79565b60405180910390fd5b600a601381905550600a6012819055505f601481905550565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61179f338484611deb565b905092915050565b6117af612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290613a79565b60405180910390fd5b5f5b838390508110156118d0578160085f86868581811061185f5761185e613c4a565b5b905060200201602081019061187491906136ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061183d565b50505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611901612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613a79565b60405180910390fd5b816012819055508260138190555080601481905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f82611a3483610d7d565b11905092915050565b611a45612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890613a79565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601f54601e60159054906101000a900460ff16604051611b34929190613c77565b60405180910390a15050565b611b48612422565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90613a79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990613d0e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611d61573d5f803e3d5ffd5b50565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f838311158290611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc791906134aa565b60405180910390fd5b505f8385611dde9190613d2c565b9050809150509392505050565b5f60205f9054906101000a900460ff1615611e1257611e0b84848461264a565b905061241b565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611eb0575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f0557601e60149054906101000a900460ff16611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613da9565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f8857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fc2575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561201b5750601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612074575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120cd575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121205750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612183575f61212f84610f77565b905060055483826121409190613dc7565b1115612181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217890613e6a565b60405180910390fd5b505b61218d8483612814565b6121956128ae565b156121a3576121a2612980565b5b61222a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d899092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612307575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61231b57612316858486612f7b565b61231d565b825b905061236f8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161240d9190613407565b60405180910390a360019150505b9392505050565b5f33905090565b5f8082846124379190613dc7565b90508381101561247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247390613ed2565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006124d26011546124c460135460105461254190919063ffffffff16565b6125b890919063ffffffff16565b6124fd6011546124ef60125460105461254190919063ffffffff16565b6125b890919063ffffffff16565b61252860115461251a60145460105461254190919063ffffffff16565b6125b890919063ffffffff16565b60405161253793929190613ef0565b60405180910390a1565b5f808303612551575f90506125b2565b5f828461255e9190613ac4565b905082848261256d9190613b32565b146125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a490613f95565b60405180910390fd5b809150505b92915050565b5f6125f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061338e565b905092915050565b5f61264283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d89565b905092915050565b5f6126d2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d899092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127638260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128019190613407565b60405180910390a3600190509392505050565b6004548111158061286b5750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6128aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a190613ffd565b60405180910390fd5b5050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612918575060205f9054906101000a900460ff16155b80156129305750601e60159054906101000a900460ff165b801561297b5750601f5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160205f6101000a81548160ff0219169083151502179055505f6129a9601a54601b54611a29565b6129b557600b546129b7565b5f5b90505f6129f660026129e86010546129da86601f5461254190919063ffffffff16565b6125b890919063ffffffff16565b6125b890919063ffffffff16565b90505f612a0e82601f5461260190919063ffffffff16565b90505f600267ffffffffffffffff811115612a2c57612a2b61401b565b5b604051908082528060200260200182016040528015612a5a5781602001602082028036833780820191505090505b50905030815f81518110612a7157612a70613c4a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612ae157612ae0613c4a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401612b81959493929190614138565b5f604051808303815f87803b158015612b98575f80fd5b505af1158015612baa573d5f803e3d5ffd5b505050505f612bc2824761260190919063ffffffff16565b90505f612bed612bdc6002896125b890919063ffffffff16565b60105461260190919063ffffffff16565b90505f612c286002612c1a84612c0c8c8861254190919063ffffffff16565b6125b890919063ffffffff16565b6125b890919063ffffffff16565b90505f612c5283612c44600c548761254190919063ffffffff16565b6125b890919063ffffffff16565b90505f612c7c84612c6e600e548861254190919063ffffffff16565b6125b890919063ffffffff16565b90505f612ca685612c98600d548961254190919063ffffffff16565b6125b890919063ffffffff16565b90505f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612cee906141bd565b5f6040518083038185875af1925050503d805f8114612d28576040519150601f19603f3d011682016040523d82523d5f602084013e612d2d565b606091505b5050905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d76906141bd565b5f6040518083038185875af1925050503d805f8114612db0576040519150601f19603f3d011682016040523d82523d5f602084013e612db5565b606091505b50508091505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e00906141bd565b5f6040518083038185875af1925050503d805f8114612e3a576040519150601f19603f3d011682016040523d82523d5f602084013e612e3f565b606091505b5050809150505f90505f8b1115612f5457601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612ed6969594939291906141d1565b60606040518083038185885af1158015612ef2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f179190614230565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612f4b929190614280565b60405180910390a15b5050505050505050505050505f60205f6101000a81548160ff021916908315150217905550565b5f806014549050601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe057601254905061308f565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361308e57601354905060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561308d57600a90505b5b5b5f6130d86103e86011546130a39190613ac4565b6130ca846130bc6010548a61254190919063ffffffff16565b61254190919063ffffffff16565b6125b890919063ffffffff16565b90505f6131046010546130f6600f548561254190919063ffffffff16565b6125b890919063ffffffff16565b90505f61311a828461260190919063ffffffff16565b905061316c8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061321e8260065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242990919063ffffffff16565b60065f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132dd9190613407565b60405180910390a35f82111561336e576133028260035461260190919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133659190613407565b60405180910390a35b613381838861260190919063ffffffff16565b9450505050509392505050565b5f80831182906133d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133cb91906134aa565b60405180910390fd5b505f83856133e29190613b32565b9050809150509392505050565b5f819050919050565b613401816133ef565b82525050565b5f60208201905061341a5f8301846133f8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561345757808201518184015260208101905061343c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61347c82613420565b613486818561342a565b935061349681856020860161343a565b61349f81613462565b840191505092915050565b5f6020820190508181035f8301526134c28184613472565b905092915050565b5f8115159050919050565b6134de816134ca565b82525050565b5f6020820190506134f75f8301846134d5565b92915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61352e82613505565b9050919050565b61353e81613524565b8114613548575f80fd5b50565b5f8135905061355981613535565b92915050565b613568816133ef565b8114613572575f80fd5b50565b5f813590506135838161355f565b92915050565b5f806040838503121561359f5761359e6134fd565b5b5f6135ac8582860161354b565b92505060206135bd85828601613575565b9150509250929050565b5f805f606084860312156135de576135dd6134fd565b5b5f6135eb8682870161354b565b93505060206135fc8682870161354b565b925050604061360d86828701613575565b9150509250925092565b5f805f805f8060c08789031215613631576136306134fd565b5b5f61363e89828a01613575565b965050602061364f89828a01613575565b955050604061366089828a01613575565b945050606061367189828a01613575565b935050608061368289828a01613575565b92505060a061369389828a01613575565b9150509295509295509295565b5f602082840312156136b5576136b46134fd565b5b5f6136c284828501613575565b91505092915050565b5f60ff82169050919050565b6136e0816136cb565b82525050565b5f6020820190506136f95f8301846136d7565b92915050565b5f60208284031215613714576137136134fd565b5b5f6137218482850161354b565b91505092915050565b5f805f805f60a08688031215613743576137426134fd565b5b5f6137508882890161354b565b95505060206137618882890161354b565b94505060406137728882890161354b565b93505060606137838882890161354b565b92505060806137948882890161354b565b9150509295509295909350565b6137aa81613524565b82525050565b5f6020820190506137c35f8301846137a1565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126137ea576137e96137c9565b5b8235905067ffffffffffffffff811115613807576138066137cd565b5b602083019150836020820283011115613823576138226137d1565b5b9250929050565b613833816134ca565b811461383d575f80fd5b50565b5f8135905061384e8161382a565b92915050565b5f805f6040848603121561386b5761386a6134fd565b5b5f84013567ffffffffffffffff81111561388857613887613501565b5b613894868287016137d5565b935093505060206138a786828701613840565b9150509250925092565b5f805f606084860312156138c8576138c76134fd565b5b5f6138d586828701613575565b93505060206138e686828701613575565b92505060406138f786828701613575565b9150509250925092565b5f8060408385031215613917576139166134fd565b5b5f6139248582860161354b565b92505060206139358582860161354b565b9150509250929050565b5f8060408385031215613955576139546134fd565b5b5f61396285828601613575565b925050602061397385828601613575565b9150509250929050565b5f8060408385031215613993576139926134fd565b5b5f6139a085828601613840565b92505060206139b185828601613575565b9150509250929050565b5f819050919050565b5f6139de6139d96139d484613505565b6139bb565b613505565b9050919050565b5f6139ef826139c4565b9050919050565b5f613a00826139e5565b9050919050565b613a10816139f6565b82525050565b5f602082019050613a295f830184613a07565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a6360208361342a565b9150613a6e82613a2f565b602082019050919050565b5f6020820190508181035f830152613a9081613a57565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ace826133ef565b9150613ad9836133ef565b9250828202613ae7816133ef565b91508282048414831517613afe57613afd613a97565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b3c826133ef565b9150613b47836133ef565b925082613b5757613b56613b05565b5b828204905092915050565b5f81519050613b708161355f565b92915050565b5f60208284031215613b8b57613b8a6134fd565b5b5f613b9884828501613b62565b91505092915050565b5f604082019050613bb45f8301856137a1565b613bc160208301846133f8565b9392505050565b5f81519050613bd68161382a565b92915050565b5f60208284031215613bf157613bf06134fd565b5b5f613bfe84828501613bc8565b91505092915050565b5f608082019050613c1a5f8301876137a1565b613c2760208301866137a1565b613c3460408301856137a1565b613c4160608301846137a1565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050613c8a5f8301856133f8565b613c9760208301846134d5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613cf860268361342a565b9150613d0382613c9e565b604082019050919050565b5f6020820190508181035f830152613d2581613cec565b9050919050565b5f613d36826133ef565b9150613d41836133ef565b9250828203905081811115613d5957613d58613a97565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613d9360148361342a565b9150613d9e82613d5f565b602082019050919050565b5f6020820190508181035f830152613dc081613d87565b9050919050565b5f613dd1826133ef565b9150613ddc836133ef565b9250828201905080821115613df457613df3613a97565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613e54603e8361342a565b9150613e5f82613dfa565b604082019050919050565b5f6020820190508181035f830152613e8181613e48565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ebc601b8361342a565b9150613ec782613e88565b602082019050919050565b5f6020820190508181035f830152613ee981613eb0565b9050919050565b5f606082019050613f035f8301866136d7565b613f1060208301856136d7565b613f1d60408301846136d7565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f7f60218361342a565b9150613f8a82613f25565b604082019050919050565b5f6020820190508181035f830152613fac81613f73565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613fe760118361342a565b9150613ff282613fb3565b602082019050919050565b5f6020820190508181035f83015261401481613fdb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f61406b61406661406184614048565b6139bb565b6133ef565b9050919050565b61407b81614051565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140b381613524565b82525050565b5f6140c483836140aa565b60208301905092915050565b5f602082019050919050565b5f6140e682614081565b6140f0818561408b565b93506140fb8361409b565b805f5b8381101561412b57815161411288826140b9565b975061411d836140d0565b9250506001810190506140fe565b5085935050505092915050565b5f60a08201905061414b5f8301886133f8565b6141586020830187614072565b818103604083015261416a81866140dc565b905061417960608301856137a1565b61418660808301846133f8565b9695505050505050565b5f81905092915050565b50565b5f6141a85f83614190565b91506141b38261419a565b5f82019050919050565b5f6141c78261419d565b9150819050919050565b5f60c0820190506141e45f8301896137a1565b6141f160208301886133f8565b6141fe6040830187614072565b61420b6060830186614072565b61421860808301856137a1565b61422560a08301846133f8565b979650505050505050565b5f805f60608486031215614247576142466134fd565b5b5f61425486828701613b62565b935050602061426586828701613b62565b925050604061427686828701613b62565b9150509250925092565b5f6040820190506142935f8301856133f8565b6142a060208301846133f8565b939250505056fea26469706673582212205cd6e436f9386432ae7af8a4728cc20ec4e201a8b883620ef27420946015bca764736f6c63430008170033

Deployed Bytecode Sourcemap

5033:13907:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7422:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8913:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7339:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9335:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8643:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6687:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9853:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16989:508;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14592:81;;;;;;;;;;;;;:::i;:::-;;18640:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8737:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18801:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9559:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10231:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7385:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9083:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1947:148;;;;;;;;;;;;;:::i;:::-;;10488:139;;;;;;;;;;;;;:::i;:::-;;13969:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6146:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6081:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17510:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8999:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1733:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8823:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14681:129;;;;;;;;;;;;;:::i;:::-;;7307:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9689:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18284:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1353:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14320:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9194:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18497:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18065:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2103:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13830:132;;;;;;;;;;;;;:::i;:::-;;7237:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7422:50;;;;:::o;8913:80::-;8961:13;8985:5;;;;;;;;;;;;;;;;;8978:12;;8913:80;:::o;7339:31::-;;;;;;;;;;;;;:::o;9335:216::-;9410:4;9462:6;9427:11;:23;9439:10;9427:23;;;;;;;;;;;;;;;:32;9451:7;9427:32;;;;;;;;;;;;;;;:41;;;;9505:7;9484:37;;9493:10;9484:37;;;9514:6;9484:37;;;;;;:::i;:::-;;;;;;;;9539:4;9532:11;;9335:216;;;;:::o;8643:88::-;8698:7;8716:12;;8709:19;;8643:88;:::o;6687:93::-;;;;:::o;9853:370::-;9953:4;10008:17;9973:11;:19;9985:6;9973:19;;;;;;;;;;;;;;;:31;9993:10;9973:31;;;;;;;;;;;;;;;;:52;9970:186;;10075:69;10111:6;10075:69;;;;;;;;;;;;;;;;;:11;:19;10087:6;10075:19;;;;;;;;;;;;;;;:31;10095:10;10075:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;10041:11;:19;10053:6;10041:19;;;;;;;;;;;;;;;:31;10061:10;10041:31;;;;;;;;;;;;;;;:103;;;;9970:186;10175:40;10189:6;10197:9;10208:6;10175:13;:40::i;:::-;10168:47;;9853:370;;;;;:::o;16989:508::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17184:13:::1;17169:12;:28;;;;17221:11;17208:10;:24;;;;17258:13;17243:12;:28;;;;17291:7;17282:6;:16;;;;17319:8;17309:7;:18;;;;17349:76;17416:8;17349:62;17403:7;17349:49;17384:13;17349:30;17367:11;17349:13;:17;;:30;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:53;;:62;;;;:::i;:::-;:66;;:76;;;;:::i;:::-;17338:8;:87;;;;17453:15;17436:14;:32;;;;17479:10;:8;:10::i;:::-;16989:508:::0;;;;;;:::o;14592:81::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14658:4:::1;14644:11;;:18;;;;;;;;;;;;;;;;;;14592:81::o:0;18640:149::-;18700:7;18727:54;18768:12;:10;:12::i;:::-;18727:36;18740:22;18760:1;18740:15;18750:4;;;;;;;;;;;18740:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;18727:8;:12;;:36;;;;:::i;:::-;:40;;:54;;;;:::i;:::-;18720:61;;18640:149;;;:::o;8737:80::-;8789:5;5387:2;8798:16;;8737:80;:::o;18801:132::-;18844:7;18871:54;18909:15;5225:42;18909:9;:15::i;:::-;18871:33;18888:15;5152:42;18888:9;:15::i;:::-;18871:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18864:61;;18801:132;:::o;9559:122::-;9614:4;9638:35;9646:7;9655:17;9638:7;:35::i;:::-;9631:42;;9559:122;;;:::o;10231:247::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10335:1:::1;10317:14;:19;;10309:28;;;::::0;::::1;;10402:4;10383:14;10368:12;;:29;;;;:::i;:::-;10367:39;;;;:::i;:::-;10349:15;:57;;;;10422:30;10436:15;;10422:30;;;;;;:::i;:::-;;;;;;;;10231:247:::0;:::o;7385:30::-;;;;;;;;;;;;;:::o;9083:105::-;9149:7;9167:9;:18;9177:7;9167:18;;;;;;;;;;;;;;;;9160:25;;9083:105;;;:::o;1947:148::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2054:1:::1;2017:40;;2038:6;::::0;::::1;;;;;;;;2017:40;;;;;;;;;;;;2085:1;2068:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1947:148::o:0;10488:139::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10562:12:::1;;10547;:27;;;;10607:12;;10589:15;:30;;;;10488:139::o:0;13969:343::-;14060:12;1870;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14098:1:::1;14088:6;:11:::0;14085:95:::1;;14130:12;14124:29;;;14162:4;14124:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14115:53;;14085:95;14195:32;14206:12;14220:6;14195:32;;;;;;;:::i;:::-;;;;;;;;14251:12;14245:28;;;14274:21;;;;;;;;;;;14297:6;14245:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14238:66;;13969:343:::0;;;;:::o;6146:61::-;;;;:::o;6081:58::-;;;;:::o;17510:547::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17727:22:::1;17703:21;;:46;;;;;;;;;;;;;;;;;;17783:21;17760:20;;:44;;;;;;;;;;;;;;;;;;17832:15;17815:14;;:32;;;;;;;;;;;;;;;;;;17876:16;17858:15;;:34;;;;;;;;;;;;;;;;;;17924:19;17903:18;;:40;;;;;;;;;;;;;;;;;;17961:88;17975:20;;;;;;;;;;;17997:18;;;;;;;;;;;18017:15;;;;;;;;;;;18034:14;;;;;;;;;;;17961:88;;;;;;;;;:::i;:::-;;;;;;;;17510:547:::0;;;;;:::o;8999:78::-;9051:7;9068;:5;:7::i;:::-;9061:14;;8999:78;:::o;1733:79::-;1771:7;1798:6;;;;;;;;;;;1791:13;;1733:79;:::o;8823:84::-;8873:13;8897:7;;;;;;;;;;;;;;;;;8890:14;;8823:84;:::o;14681:129::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14743:2:::1;14730:10;:15;;;;14770:2;14756:11;:16;;;;14801:1;14783:15;:19;;;;14681:129::o:0;7307:19::-;;;;;;;;;;;;;:::o;9689:156::-;9769:4;9793:44;9807:10;9819:9;9830:6;9793:13;:44::i;:::-;9786:51;;9689:156;;;;:::o;18284:205::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18381:9:::1;18377:105;18400:8;;:15;;18396:1;:19;18377:105;;;18462:8;18437:9;:22;18447:8;;18456:1;18447:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18437:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18417:3;;;;;;;18377:105;;;;18284:205:::0;;;:::o;1353:21::-;;;;;;;;;;;;:::o;14320:257::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14458:14:::1;14444:11;:28;;;;14496:13;14483:10;:26;;;;14538:15;14520;:33;;;;14320:257:::0;;;:::o;9194:133::-;9278:7;9296:11;:19;9308:6;9296:19;;;;;;;;;;;;;;;:28;9316:7;9296:28;;;;;;;;;;;;;;;;9289:35;;9194:133;;;;:::o;18497:135::-;18571:4;18619:5;18595:21;18607:8;18595:11;:21::i;:::-;:29;18588:36;;18497:135;;;;:::o;18065:211::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18170:8:::1;18156:11;;:22;;;;;;;;;;;;;;;;;;18205:7;18189:13;:23;;;;18228:40;18241:13;;18256:11;;;;;;;;;;;18228:40;;;;;;;:::i;:::-;;;;;;;;18065:211:::0;;:::o;2103:244::-;1870:12;:10;:12::i;:::-;1860:22;;:6;;;;;;;;;;:22;;;1852:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2212:1:::1;2192:22;;:8;:22;;::::0;2184:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2302:8;2273:38;;2294:6;::::0;::::1;;;;;;;;2273:38;;;;;;;;;;;;2331:8;2322:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2103:244:::0;:::o;13830:132::-;13886:21;;;;;;;;;;;13878:39;;:62;13918:21;13878:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13830:132::o;7237:24::-;;;;;;;;;;;;;:::o;4245:192::-;4331:7;4364:1;4359;:6;;4367:12;4351:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4391:9;4407:1;4403;:5;;;;:::i;:::-;4391:17;;4428:1;4421:8;;;4245:192;;;;;:::o;10643:1238::-;10735:4;10755:6;;;;;;;;;;;10752:63;;;10771:41;10786:6;10794:9;10805:6;10771:14;:41::i;:::-;10764:48;;;;10752:63;10831:14;:22;10846:6;10831:22;;;;;;;;;;;;;;;;;;;;;;;;;10830:23;:53;;;;;10858:14;:25;10873:9;10858:25;;;;;;;;;;;;;;;;;;;;;;;;;10857:26;10830:53;10827:139;;;10907:11;;;;;;;;;;;10899:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10827:139;11008:14;:22;11023:6;11008:22;;;;;;;;;;;;;;;;;;;;;;;;;11007:23;:53;;;;;11055:4;11034:26;;:9;:26;;;;11007:53;:84;;;;;5152:42;11065:26;;:9;:26;;;;11007:84;:105;;;;;11108:4;;;;;;;;;;;11095:17;;:9;:17;;;;11007:105;:137;;;;;11129:15;;;;;;;;;;;11116:28;;:9;:28;;;;11007:137;:174;;;;;11161:20;;;;;;;;;;;11148:33;;:9;:33;;;;11007:174;:207;;;;;11186:17;:28;11204:9;11186:28;;;;;;;;;;;;;;;;;;;;;;;;;11185:29;11007:207;11003:399;;;11230:18;11251:20;11261:9;11251;:20::i;:::-;11230:41;;11319:15;;11308:6;11295:10;:19;;;;:::i;:::-;11294:40;;11286:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;11215:187;11003:399;11414:28;11427:6;11435;11414:12;:28::i;:::-;11460:16;:14;:16::i;:::-;11457:35;;;11479:10;:8;:10::i;:::-;11457:35;11522:53;11544:6;11522:53;;;;;;;;;;;;;;;;;:9;:17;11532:6;11522:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11502:9;:17;11512:6;11502:17;;;;;;;;;;;;;;;:73;;;;11588:22;11614:16;:24;11631:6;11614:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;11642:16;:27;11659:9;11642:27;;;;;;;;;;;;;;;;;;;;;;;;;11614:55;11613:103;;11682:34;11690:6;11698;11706:9;11682:7;:34::i;:::-;11613:103;;;11673:6;11613:103;11588:128;;11750:40;11775:14;11750:9;:20;11760:9;11750:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11727:9;:20;11737:9;11727:20;;;;;;;;;;;;;;;:63;;;;11825:9;11808:43;;11817:6;11808:43;;;11836:14;11808:43;;;;;;:::i;:::-;;;;;;;;11869:4;11862:11;;;10643:1238;;;;;;:::o;1074:115::-;1127:15;1170:10;1155:26;;1074:115;:::o;3916:181::-;3974:7;3994:9;4010:1;4006;:5;;;;:::i;:::-;3994:17;;4035:1;4030;:6;;4022:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4088:1;4081:8;;;3916:181;;;;:::o;16703:274::-;16756:213;16771:44;16800:14;;16771:24;16784:10;;16771:8;;:12;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;16837:45;16867:14;;16837:25;16850:11;;16837:8;;:12;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;16904:49;16938:14;;16904:29;16917:15;;16904:8;;:12;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;16756:213;;;;;;;;:::i;:::-;;;;;;;;16703:274::o;4443:250::-;4501:7;4530:1;4525;:6;4521:47;;4555:1;4548:8;;;;4521:47;4580:9;4596:1;4592;:5;;;;:::i;:::-;4580:17;;4625:1;4620;4616;:5;;;;:::i;:::-;:10;4608:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4684:1;4677:8;;;4443:250;;;;;:::o;4699:132::-;4757:7;4784:39;4788:1;4791;4784:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4777:46;;4699:132;;;;:::o;4103:136::-;4161:7;4188:43;4192:1;4195;4188:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4181:50;;4103:136;;;;:::o;11890:330::-;11983:4;12020:53;12042:6;12020:53;;;;;;;;;;;;;;;;;:9;:17;12030:6;12020:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12000:9;:17;12010:6;12000:17;;;;;;;;;;;;;;;:73;;;;12107:32;12132:6;12107:9;:20;12117:9;12107:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12084:9;:20;12094:9;12084:20;;;;;;;;;;;;;;;:55;;;;12172:9;12155:35;;12164:6;12155:35;;;12183:6;12155:35;;;;;;:::i;:::-;;;;;;;;12208:4;12201:11;;11890:330;;;;;:::o;12228:168::-;12325:12;;12315:6;:22;;:51;;;;12341:17;:25;12359:6;12341:25;;;;;;;;;;;;;;;;;;;;;;;;;12315:51;12307:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12228:168;;:::o;13621:197::-;13670:4;13708;;;;;;;;;;;13694:18;;:10;:18;;;;:38;;;;;13726:6;;;;;;;;;;;13725:7;13694:38;:62;;;;;13745:11;;;;;;;;;;;13694:62;:116;;;;;13797:13;;13769:9;:24;13787:4;13769:24;;;;;;;;;;;;;;;;:41;;13694:116;13687:123;;13621:197;:::o;14833:1854::-;7529:4;7520:6;;:13;;;;;;;;;;;;;;;;;;14882:27:::1;14912:41;14923:8;;14933:19;;14912:10;:41::i;:::-;:60;;14960:12;;14912:60;;;14956:1;14912:60;14882:90;;14983:23;15009:59;15066:1;15009:52;15052:8;;15009:38;15027:19;15009:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;14983:85;;15079:20;15102:34;15120:15;15102:13;;:17;;:34;;;;:::i;:::-;15079:57;;15149:21;15187:1;15173:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15149:40;;15218:4;15200;15205:1;15200:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15244:4;;;;;;;;;;;15234;15239:1;15234:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15261:21;15285;15261:45;;15319:6;;;;;;;;;;;:57;;;15391:12;15418:1;15434:4;15461;15481:15;15319:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15520:17;15540:40;15566:13;15540:21;:25;;:40;;;;:::i;:::-;15520:60;;15593:19;15615:40;15628:26;15652:1;15628:19;:23;;:26;;;;:::i;:::-;15615:8;;:12;;:40;;;;:::i;:::-;15593:62;;15676:26;15705:58;15761:1;15705:51;15744:11;15705:34;15719:19;15705:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15676:87;;15774:26;15803:44;15835:11;15803:27;15817:12;;15803:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;15774:73;;15858:24;15885:42;15915:11;15885:25;15899:10;;15885:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;15858:69;;15938:20;15961:38;15987:11;15961:21;15975:6;;15961:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;15938:61;;16013:15;16041:20;;;;;;;;;;;16033:34;;16075:18;16033:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16012:86;;;16133:14;;;;;;;;;;;16125:28;;16161:12;16125:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16109:69;;;;;16213:18;;;;;;;;;;;16205:32;;16245:16;16205:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16189:77;;;;;16300:5;16287:18;;16339:1;16321:15;:19;16318:362;;;16356:6;;;;;;;;;;;:22;;;16386:18;16432:4;16456:15;16490:1;16510::::0;16530:21:::1;;;;;;;;;;;16570:15;16356:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16620:48;16632:18;16652:15;16620:48;;;;;;;:::i;:::-;;;;;;;;16318:362;14871:1816;;;;;;;;;;;;7547:5:::0;7538:6;;:14;;;;;;;;;;;;;;;;;;14833:1854::o;12531:1082::-;12617:7;12647:15;12665;;12647:33;;12707:4;;;;;;;;;;;12694:17;;:9;:17;;;12691:241;;12738:11;;12728:21;;12691:241;;;12780:4;;;;;;;;;;;12770:14;;:6;:14;;;12767:165;;12811:10;;12801:20;;12839:9;:20;12849:9;12839:20;;;;;;;;;;;;;;;;;;;;;;;;;12836:85;;;12903:2;12893:12;;12836:85;12767:165;12691:241;12944:17;12964:60;13019:4;13002:14;;:21;;;;:::i;:::-;12964:33;12989:7;12964:20;12975:8;;12964:6;:10;;:20;;;;:::i;:::-;:24;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;12944:80;;13035:18;13056:36;13083:8;;13056:22;13070:7;;13056:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;13035:57;;13103:22;13128:25;13142:10;13128:9;:13;;:25;;;;:::i;:::-;13103:50;;13191:44;13220:14;13191:9;:24;13209:4;13191:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;13164:9;:24;13182:4;13164:24;;;;;;;;;;;;;;;:71;;;;13275:42;13306:10;13275:9;:26;13285:15;;;;;;;;;;;13275:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;13246:9;:26;13256:15;;;;;;;;;;;13246:26;;;;;;;;;;;;;;;:71;;;;13358:4;13333:47;;13342:6;13333:47;;;13365:14;13333:47;;;;;;:::i;:::-;;;;;;;;13427:1;13414:10;:14;13411:154;;;13459:28;13476:10;13459:12;;:16;;:28;;;;:::i;:::-;13444:12;:43;;;;5225:42;13507:34;;13516:6;13507:34;;;13530:10;13507:34;;;;;;:::i;:::-;;;;;;;;13411:154;13584:21;13595:9;13584:6;:10;;:21;;;;:::i;:::-;13577:28;;;;;;12531:1082;;;;;:::o;4837:189::-;4923:7;4955:1;4951;:5;4958:12;4943:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4982:9;4998:1;4994;:5;;;;:::i;:::-;4982:17;;5017:1;5010:8;;;4837:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2415:117;2524:1;2521;2514:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:1057::-;4527:6;4535;4543;4551;4559;4567;4616:3;4604:9;4595:7;4591:23;4587:33;4584:120;;;4623:79;;:::i;:::-;4584:120;4743:1;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;:::i;:::-;4758:63;;4714:117;4870:2;4896:53;4941:7;4932:6;4921:9;4917:22;4896:53;:::i;:::-;4886:63;;4841:118;4998:2;5024:53;5069:7;5060:6;5049:9;5045:22;5024:53;:::i;:::-;5014:63;;4969:118;5126:2;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;:::i;:::-;5142:63;;5097:118;5254:3;5281:53;5326:7;5317:6;5306:9;5302:22;5281:53;:::i;:::-;5271:63;;5225:119;5383:3;5410:53;5455:7;5446:6;5435:9;5431:22;5410:53;:::i;:::-;5400:63;;5354:119;4423:1057;;;;;;;;:::o;5486:329::-;5545:6;5594:2;5582:9;5573:7;5569:23;5565:32;5562:119;;;5600:79;;:::i;:::-;5562:119;5720:1;5745:53;5790:7;5781:6;5770:9;5766:22;5745:53;:::i;:::-;5735:63;;5691:117;5486:329;;;;:::o;5821:86::-;5856:7;5896:4;5889:5;5885:16;5874:27;;5821:86;;;:::o;5913:112::-;5996:22;6012:5;5996:22;:::i;:::-;5991:3;5984:35;5913:112;;:::o;6031:214::-;6120:4;6158:2;6147:9;6143:18;6135:26;;6171:67;6235:1;6224:9;6220:17;6211:6;6171:67;:::i;:::-;6031:214;;;;:::o;6251:329::-;6310:6;6359:2;6347:9;6338:7;6334:23;6330:32;6327:119;;;6365:79;;:::i;:::-;6327:119;6485:1;6510:53;6555:7;6546:6;6535:9;6531:22;6510:53;:::i;:::-;6500:63;;6456:117;6251:329;;;;:::o;6586:911::-;6681:6;6689;6697;6705;6713;6762:3;6750:9;6741:7;6737:23;6733:33;6730:120;;;6769:79;;:::i;:::-;6730:120;6889:1;6914:53;6959:7;6950:6;6939:9;6935:22;6914:53;:::i;:::-;6904:63;;6860:117;7016:2;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6987:118;7144:2;7170:53;7215:7;7206:6;7195:9;7191:22;7170:53;:::i;:::-;7160:63;;7115:118;7272:2;7298:53;7343:7;7334:6;7323:9;7319:22;7298:53;:::i;:::-;7288:63;;7243:118;7400:3;7427:53;7472:7;7463:6;7452:9;7448:22;7427:53;:::i;:::-;7417:63;;7371:119;6586:911;;;;;;;;:::o;7503:118::-;7590:24;7608:5;7590:24;:::i;:::-;7585:3;7578:37;7503:118;;:::o;7627:222::-;7720:4;7758:2;7747:9;7743:18;7735:26;;7771:71;7839:1;7828:9;7824:17;7815:6;7771:71;:::i;:::-;7627:222;;;;:::o;7855:117::-;7964:1;7961;7954:12;7978:117;8087:1;8084;8077:12;8101:117;8210:1;8207;8200:12;8241:568;8314:8;8324:6;8374:3;8367:4;8359:6;8355:17;8351:27;8341:122;;8382:79;;:::i;:::-;8341:122;8495:6;8482:20;8472:30;;8525:18;8517:6;8514:30;8511:117;;;8547:79;;:::i;:::-;8511:117;8661:4;8653:6;8649:17;8637:29;;8715:3;8707:4;8699:6;8695:17;8685:8;8681:32;8678:41;8675:128;;;8722:79;;:::i;:::-;8675:128;8241:568;;;;;:::o;8815:116::-;8885:21;8900:5;8885:21;:::i;:::-;8878:5;8875:32;8865:60;;8921:1;8918;8911:12;8865:60;8815:116;:::o;8937:133::-;8980:5;9018:6;9005:20;8996:29;;9034:30;9058:5;9034:30;:::i;:::-;8937:133;;;;:::o;9076:698::-;9168:6;9176;9184;9233:2;9221:9;9212:7;9208:23;9204:32;9201:119;;;9239:79;;:::i;:::-;9201:119;9387:1;9376:9;9372:17;9359:31;9417:18;9409:6;9406:30;9403:117;;;9439:79;;:::i;:::-;9403:117;9552:80;9624:7;9615:6;9604:9;9600:22;9552:80;:::i;:::-;9534:98;;;;9330:312;9681:2;9707:50;9749:7;9740:6;9729:9;9725:22;9707:50;:::i;:::-;9697:60;;9652:115;9076:698;;;;;:::o;9780:619::-;9857:6;9865;9873;9922:2;9910:9;9901:7;9897:23;9893:32;9890:119;;;9928:79;;:::i;:::-;9890:119;10048:1;10073:53;10118:7;10109:6;10098:9;10094:22;10073:53;:::i;:::-;10063:63;;10019:117;10175:2;10201:53;10246:7;10237:6;10226:9;10222:22;10201:53;:::i;:::-;10191:63;;10146:118;10303:2;10329:53;10374:7;10365:6;10354:9;10350:22;10329:53;:::i;:::-;10319:63;;10274:118;9780:619;;;;;:::o;10405:474::-;10473:6;10481;10530:2;10518:9;10509:7;10505:23;10501:32;10498:119;;;10536:79;;:::i;:::-;10498:119;10656:1;10681:53;10726:7;10717:6;10706:9;10702:22;10681:53;:::i;:::-;10671:63;;10627:117;10783:2;10809:53;10854:7;10845:6;10834:9;10830:22;10809:53;:::i;:::-;10799:63;;10754:118;10405:474;;;;;:::o;10885:::-;10953:6;10961;11010:2;10998:9;10989:7;10985:23;10981:32;10978:119;;;11016:79;;:::i;:::-;10978:119;11136:1;11161:53;11206:7;11197:6;11186:9;11182:22;11161:53;:::i;:::-;11151:63;;11107:117;11263:2;11289:53;11334:7;11325:6;11314:9;11310:22;11289:53;:::i;:::-;11279:63;;11234:118;10885:474;;;;;:::o;11365:468::-;11430:6;11438;11487:2;11475:9;11466:7;11462:23;11458:32;11455:119;;;11493:79;;:::i;:::-;11455:119;11613:1;11638:50;11680:7;11671:6;11660:9;11656:22;11638:50;:::i;:::-;11628:60;;11584:114;11737:2;11763:53;11808:7;11799:6;11788:9;11784:22;11763:53;:::i;:::-;11753:63;;11708:118;11365:468;;;;;:::o;11839:60::-;11867:3;11888:5;11881:12;;11839:60;;;:::o;11905:142::-;11955:9;11988:53;12006:34;12015:24;12033:5;12015:24;:::i;:::-;12006:34;:::i;:::-;11988:53;:::i;:::-;11975:66;;11905:142;;;:::o;12053:126::-;12103:9;12136:37;12167:5;12136:37;:::i;:::-;12123:50;;12053:126;;;:::o;12185:144::-;12253:9;12286:37;12317:5;12286:37;:::i;:::-;12273:50;;12185:144;;;:::o;12335:167::-;12440:55;12489:5;12440:55;:::i;:::-;12435:3;12428:68;12335:167;;:::o;12508:258::-;12619:4;12657:2;12646:9;12642:18;12634:26;;12670:89;12756:1;12745:9;12741:17;12732:6;12670:89;:::i;:::-;12508:258;;;;:::o;12772:182::-;12912:34;12908:1;12900:6;12896:14;12889:58;12772:182;:::o;12960:366::-;13102:3;13123:67;13187:2;13182:3;13123:67;:::i;:::-;13116:74;;13199:93;13288:3;13199:93;:::i;:::-;13317:2;13312:3;13308:12;13301:19;;12960:366;;;:::o;13332:419::-;13498:4;13536:2;13525:9;13521:18;13513:26;;13585:9;13579:4;13575:20;13571:1;13560:9;13556:17;13549:47;13613:131;13739:4;13613:131;:::i;:::-;13605:139;;13332:419;;;:::o;13757:180::-;13805:77;13802:1;13795:88;13902:4;13899:1;13892:15;13926:4;13923:1;13916:15;13943:410;13983:7;14006:20;14024:1;14006:20;:::i;:::-;14001:25;;14040:20;14058:1;14040:20;:::i;:::-;14035:25;;14095:1;14092;14088:9;14117:30;14135:11;14117:30;:::i;:::-;14106:41;;14296:1;14287:7;14283:15;14280:1;14277:22;14257:1;14250:9;14230:83;14207:139;;14326:18;;:::i;:::-;14207:139;13991:362;13943:410;;;;:::o;14359:180::-;14407:77;14404:1;14397:88;14504:4;14501:1;14494:15;14528:4;14525:1;14518:15;14545:185;14585:1;14602:20;14620:1;14602:20;:::i;:::-;14597:25;;14636:20;14654:1;14636:20;:::i;:::-;14631:25;;14675:1;14665:35;;14680:18;;:::i;:::-;14665:35;14722:1;14719;14715:9;14710:14;;14545:185;;;;:::o;14736:143::-;14793:5;14824:6;14818:13;14809:22;;14840:33;14867:5;14840:33;:::i;:::-;14736:143;;;;:::o;14885:351::-;14955:6;15004:2;14992:9;14983:7;14979:23;14975:32;14972:119;;;15010:79;;:::i;:::-;14972:119;15130:1;15155:64;15211:7;15202:6;15191:9;15187:22;15155:64;:::i;:::-;15145:74;;15101:128;14885:351;;;;:::o;15242:332::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15414:71;15482:1;15471:9;15467:17;15458:6;15414:71;:::i;:::-;15495:72;15563:2;15552:9;15548:18;15539:6;15495:72;:::i;:::-;15242:332;;;;;:::o;15580:137::-;15634:5;15665:6;15659:13;15650:22;;15681:30;15705:5;15681:30;:::i;:::-;15580:137;;;;:::o;15723:345::-;15790:6;15839:2;15827:9;15818:7;15814:23;15810:32;15807:119;;;15845:79;;:::i;:::-;15807:119;15965:1;15990:61;16043:7;16034:6;16023:9;16019:22;15990:61;:::i;:::-;15980:71;;15936:125;15723:345;;;;:::o;16074:553::-;16251:4;16289:3;16278:9;16274:19;16266:27;;16303:71;16371:1;16360:9;16356:17;16347:6;16303:71;:::i;:::-;16384:72;16452:2;16441:9;16437:18;16428:6;16384:72;:::i;:::-;16466;16534:2;16523:9;16519:18;16510:6;16466:72;:::i;:::-;16548;16616:2;16605:9;16601:18;16592:6;16548:72;:::i;:::-;16074:553;;;;;;;:::o;16633:180::-;16681:77;16678:1;16671:88;16778:4;16775:1;16768:15;16802:4;16799:1;16792:15;16819:320;16934:4;16972:2;16961:9;16957:18;16949:26;;16985:71;17053:1;17042:9;17038:17;17029:6;16985:71;:::i;:::-;17066:66;17128:2;17117:9;17113:18;17104:6;17066:66;:::i;:::-;16819:320;;;;;:::o;17145:225::-;17285:34;17281:1;17273:6;17269:14;17262:58;17354:8;17349:2;17341:6;17337:15;17330:33;17145:225;:::o;17376:366::-;17518:3;17539:67;17603:2;17598:3;17539:67;:::i;:::-;17532:74;;17615:93;17704:3;17615:93;:::i;:::-;17733:2;17728:3;17724:12;17717:19;;17376:366;;;:::o;17748:419::-;17914:4;17952:2;17941:9;17937:18;17929:26;;18001:9;17995:4;17991:20;17987:1;17976:9;17972:17;17965:47;18029:131;18155:4;18029:131;:::i;:::-;18021:139;;17748:419;;;:::o;18173:194::-;18213:4;18233:20;18251:1;18233:20;:::i;:::-;18228:25;;18267:20;18285:1;18267:20;:::i;:::-;18262:25;;18311:1;18308;18304:9;18296:17;;18335:1;18329:4;18326:11;18323:37;;;18340:18;;:::i;:::-;18323:37;18173:194;;;;:::o;18373:170::-;18513:22;18509:1;18501:6;18497:14;18490:46;18373:170;:::o;18549:366::-;18691:3;18712:67;18776:2;18771:3;18712:67;:::i;:::-;18705:74;;18788:93;18877:3;18788:93;:::i;:::-;18906:2;18901:3;18897:12;18890:19;;18549:366;;;:::o;18921:419::-;19087:4;19125:2;19114:9;19110:18;19102:26;;19174:9;19168:4;19164:20;19160:1;19149:9;19145:17;19138:47;19202:131;19328:4;19202:131;:::i;:::-;19194:139;;18921:419;;;:::o;19346:191::-;19386:3;19405:20;19423:1;19405:20;:::i;:::-;19400:25;;19439:20;19457:1;19439:20;:::i;:::-;19434:25;;19482:1;19479;19475:9;19468:16;;19503:3;19500:1;19497:10;19494:36;;;19510:18;;:::i;:::-;19494:36;19346:191;;;;:::o;19543:249::-;19683:34;19679:1;19671:6;19667:14;19660:58;19752:32;19747:2;19739:6;19735:15;19728:57;19543:249;:::o;19798:366::-;19940:3;19961:67;20025:2;20020:3;19961:67;:::i;:::-;19954:74;;20037:93;20126:3;20037:93;:::i;:::-;20155:2;20150:3;20146:12;20139:19;;19798:366;;;:::o;20170:419::-;20336:4;20374:2;20363:9;20359:18;20351:26;;20423:9;20417:4;20413:20;20409:1;20398:9;20394:17;20387:47;20451:131;20577:4;20451:131;:::i;:::-;20443:139;;20170:419;;;:::o;20595:177::-;20735:29;20731:1;20723:6;20719:14;20712:53;20595:177;:::o;20778:366::-;20920:3;20941:67;21005:2;21000:3;20941:67;:::i;:::-;20934:74;;21017:93;21106:3;21017:93;:::i;:::-;21135:2;21130:3;21126:12;21119:19;;20778:366;;;:::o;21150:419::-;21316:4;21354:2;21343:9;21339:18;21331:26;;21403:9;21397:4;21393:20;21389:1;21378:9;21374:17;21367:47;21431:131;21557:4;21431:131;:::i;:::-;21423:139;;21150:419;;;:::o;21575:418::-;21712:4;21750:2;21739:9;21735:18;21727:26;;21763:67;21827:1;21816:9;21812:17;21803:6;21763:67;:::i;:::-;21840:68;21904:2;21893:9;21889:18;21880:6;21840:68;:::i;:::-;21918;21982:2;21971:9;21967:18;21958:6;21918:68;:::i;:::-;21575:418;;;;;;:::o;21999:220::-;22139:34;22135:1;22127:6;22123:14;22116:58;22208:3;22203:2;22195:6;22191:15;22184:28;21999:220;:::o;22225:366::-;22367:3;22388:67;22452:2;22447:3;22388:67;:::i;:::-;22381:74;;22464:93;22553:3;22464:93;:::i;:::-;22582:2;22577:3;22573:12;22566:19;;22225:366;;;:::o;22597:419::-;22763:4;22801:2;22790:9;22786:18;22778:26;;22850:9;22844:4;22840:20;22836:1;22825:9;22821:17;22814:47;22878:131;23004:4;22878:131;:::i;:::-;22870:139;;22597:419;;;:::o;23022:167::-;23162:19;23158:1;23150:6;23146:14;23139:43;23022:167;:::o;23195:366::-;23337:3;23358:67;23422:2;23417:3;23358:67;:::i;:::-;23351:74;;23434:93;23523:3;23434:93;:::i;:::-;23552:2;23547:3;23543:12;23536:19;;23195:366;;;:::o;23567:419::-;23733:4;23771:2;23760:9;23756:18;23748:26;;23820:9;23814:4;23810:20;23806:1;23795:9;23791:17;23784:47;23848:131;23974:4;23848:131;:::i;:::-;23840:139;;23567:419;;;:::o;23992:180::-;24040:77;24037:1;24030:88;24137:4;24134:1;24127:15;24161:4;24158:1;24151:15;24178:85;24223:7;24252:5;24241:16;;24178:85;;;:::o;24269:158::-;24327:9;24360:61;24378:42;24387:32;24413:5;24387:32;:::i;:::-;24378:42;:::i;:::-;24360:61;:::i;:::-;24347:74;;24269:158;;;:::o;24433:147::-;24528:45;24567:5;24528:45;:::i;:::-;24523:3;24516:58;24433:147;;:::o;24586:114::-;24653:6;24687:5;24681:12;24671:22;;24586:114;;;:::o;24706:184::-;24805:11;24839:6;24834:3;24827:19;24879:4;24874:3;24870:14;24855:29;;24706:184;;;;:::o;24896:132::-;24963:4;24986:3;24978:11;;25016:4;25011:3;25007:14;24999:22;;24896:132;;;:::o;25034:108::-;25111:24;25129:5;25111:24;:::i;:::-;25106:3;25099:37;25034:108;;:::o;25148:179::-;25217:10;25238:46;25280:3;25272:6;25238:46;:::i;:::-;25316:4;25311:3;25307:14;25293:28;;25148:179;;;;:::o;25333:113::-;25403:4;25435;25430:3;25426:14;25418:22;;25333:113;;;:::o;25482:732::-;25601:3;25630:54;25678:5;25630:54;:::i;:::-;25700:86;25779:6;25774:3;25700:86;:::i;:::-;25693:93;;25810:56;25860:5;25810:56;:::i;:::-;25889:7;25920:1;25905:284;25930:6;25927:1;25924:13;25905:284;;;26006:6;26000:13;26033:63;26092:3;26077:13;26033:63;:::i;:::-;26026:70;;26119:60;26172:6;26119:60;:::i;:::-;26109:70;;25965:224;25952:1;25949;25945:9;25940:14;;25905:284;;;25909:14;26205:3;26198:10;;25606:608;;;25482:732;;;;:::o;26220:831::-;26483:4;26521:3;26510:9;26506:19;26498:27;;26535:71;26603:1;26592:9;26588:17;26579:6;26535:71;:::i;:::-;26616:80;26692:2;26681:9;26677:18;26668:6;26616:80;:::i;:::-;26743:9;26737:4;26733:20;26728:2;26717:9;26713:18;26706:48;26771:108;26874:4;26865:6;26771:108;:::i;:::-;26763:116;;26889:72;26957:2;26946:9;26942:18;26933:6;26889:72;:::i;:::-;26971:73;27039:3;27028:9;27024:19;27015:6;26971:73;:::i;:::-;26220:831;;;;;;;;:::o;27057:147::-;27158:11;27195:3;27180:18;;27057:147;;;;:::o;27210:114::-;;:::o;27330:398::-;27489:3;27510:83;27591:1;27586:3;27510:83;:::i;:::-;27503:90;;27602:93;27691:3;27602:93;:::i;:::-;27720:1;27715:3;27711:11;27704:18;;27330:398;;;:::o;27734:379::-;27918:3;27940:147;28083:3;27940:147;:::i;:::-;27933:154;;28104:3;28097:10;;27734:379;;;:::o;28119:807::-;28368:4;28406:3;28395:9;28391:19;28383:27;;28420:71;28488:1;28477:9;28473:17;28464:6;28420:71;:::i;:::-;28501:72;28569:2;28558:9;28554:18;28545:6;28501:72;:::i;:::-;28583:80;28659:2;28648:9;28644:18;28635:6;28583:80;:::i;:::-;28673;28749:2;28738:9;28734:18;28725:6;28673:80;:::i;:::-;28763:73;28831:3;28820:9;28816:19;28807:6;28763:73;:::i;:::-;28846;28914:3;28903:9;28899:19;28890:6;28846:73;:::i;:::-;28119:807;;;;;;;;;:::o;28932:663::-;29020:6;29028;29036;29085:2;29073:9;29064:7;29060:23;29056:32;29053:119;;;29091:79;;:::i;:::-;29053:119;29211:1;29236:64;29292:7;29283:6;29272:9;29268:22;29236:64;:::i;:::-;29226:74;;29182:128;29349:2;29375:64;29431:7;29422:6;29411:9;29407:22;29375:64;:::i;:::-;29365:74;;29320:129;29488:2;29514:64;29570:7;29561:6;29550:9;29546:22;29514:64;:::i;:::-;29504:74;;29459:129;28932:663;;;;;:::o;29601:332::-;29722:4;29760:2;29749:9;29745:18;29737:26;;29773:71;29841:1;29830:9;29826:17;29817:6;29773:71;:::i;:::-;29854:72;29922:2;29911:9;29907:18;29898:6;29854:72;:::i;:::-;29601:332;;;;;:::o

Swarm Source

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