ETH Price: $2,054.87 (+5.32%)
 

Overview

Max Total Supply

100,000,000 EAI

Holders

31

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
EnhanceAI

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at Etherscan.io on 2024-11-13
*/

// SPDX-License-Identifier: Unlicensed

/**
Website: https://enhanceai.pro/

Telegram: https://t.me/EnhanceAIETH

X Twitter: https://x.com/EnhanceAIETH
*/

pragma solidity 0.8.25;

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

contract Ownable is Context {
    address public _owner;

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

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

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

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

    function renounceOwnership() external 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 {}

contract EnhanceAI is Ownable, ERC20 {

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

    string constant _name = "EnhanceAI";
    string constant _symbol = "EAI";
    uint8 constant _decimals = 18; 
  

    uint256 _totalSupply = 1e8 * 10**_decimals;

    uint256 public _maxTxAmount = 2e6 * 10**_decimals;
    uint256 public _maxWalletAmount = 2e6 * 10**_decimals;
    uint256 public swapThreshold = 5e5 * 10**_decimals;

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

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 public  buyFee = 15;
    uint256 public  sellFee = 30;
    uint256 private transferFee = 0;
    
    uint256 private lastSwap;
    uint256 private tradingStartTime;

    address private marketingFeeReceiver;
    address private developmentFeeReceiver;
    address private reservesFeeReceiver;

    struct TaxRatio {
       uint256 marketing;
       uint256 development;
       uint256 reserves;
    }

    TaxRatio public taxBreakdown = TaxRatio(40, 40, 20);
    TaxRatio private taxRatio;

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

    bool public swapEnabled = true;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event maxWalletUpdated(uint256 indexed maxWalletAmount);
    event maxTxUpdated(uint256 indexed maxTxAmount);
    event maxLimitsRemoved(uint256 indexed maxWalletToken, uint256 indexed maxTxAmount);
    event exemptFees(address indexed holder, bool indexed exempt);
    event exemptTxLimit(address indexed holder, bool indexed exempt);
    event feesUpdated(uint256 indexed buyFee, uint256 indexed sellFee);
    event feesWalletsUpdated(address indexed marketingFeeReceiver, address indexed devFeeReceiver, address indexed infrastructureFeeReceiver);
    event swapbackSettingsUpdated(bool indexed enabled, uint256 indexed amount);
    event tradingEnabled(bool indexed enabled, uint256 indexed startTime , uint256 indexed lastTokenSwap);
    
    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;

        marketingFeeReceiver = 0x6E9FB2d94361BC25254BDF99fCef52e62A1A71B6;
        developmentFeeReceiver = 0x0Fed3D95D68554f37f273ee6e70E2A60247C3169;
        reservesFeeReceiver = 0x90d241561005F549b851a25Fb4084eC76d628330;

        isFeeExempt[msg.sender] = true; 
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[developmentFeeReceiver] = true;
        isTxLimitExempt[reservesFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        

        _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 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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _allowances[sender][_msgSender()] = currentAllowance - amount;
            }
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWalletAmount) external onlyOwner {
        require(maxWalletAmount >= 1e6, "Max wallet cannot be less than 0.5%.");
        _maxWalletAmount = maxWalletAmount * 10**_decimals;
        emit maxWalletUpdated(_maxWalletAmount);       
    }

    function setMaxTx(uint256 maxTxAmount) external onlyOwner {
        require(maxTxAmount >= 5e5, "Max tx cannot be less than 0.3%." ); 
        _maxTxAmount = maxTxAmount * 10**_decimals;
        emit maxTxUpdated(_maxTxAmount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner()){
            require(TradingOpen,"Trading not open yet");
        
           }
       
        if (sender != owner() || (recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient])){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletAmount,"Maximum Wallet size has been reached");}
            
       
        checkTxLimit(sender, amount);

        if(
            lastSwap != block.number &&
            _balances[address(this)] >= swapThreshold &&
            swapEnabled &&
            !inSwap &&
            recipient == pair
        ){ 
            swapBack();
            lastSwap = block.number;
            }
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] += amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 feeAmount = 0;

        if(recipient == pair) {
            feeAmount = (amount * sellFee) / 100;
        } else if(sender == pair) {
            feeAmount = (amount * buyFee) / 100;
        }else{
            feeAmount = (amount * transferFee) / 100;
        }

        _balances[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        uint256 notFeeAmount = amount - feeAmount;

        return notFeeAmount;
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletAmount = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit maxLimitsRemoved(_maxWalletAmount, _maxTxAmount);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool) {
        require(address(tokenAddress) != address(this), "Cannot withdraw EAI tokens");
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }


    function startTrading() external onlyOwner {
        require(!TradingOpen,"Trading already Enabled.");
        TradingOpen = true;
        tradingStartTime = block.timestamp;
        lastSwap = block.number;
        emit tradingEnabled(TradingOpen, tradingStartTime, lastSwap);
    }

    function swapBack() internal swapping {
        if (block.timestamp < tradingStartTime + 10 minutes) {
            taxRatio = TaxRatio(100, 0, 0);
        }else {
            taxRatio = taxBreakdown;
        }

        uint256 amountToSwap = swapThreshold;

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

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

        uint256 totalETHFee = address(this).balance;
        uint256 marketingEthAmount = (totalETHFee * taxRatio.marketing) / 100;
        uint256 developmentEthAmount = (totalETHFee * taxRatio.development) / 100;
        uint256 reservesEthAmount = totalETHFee - marketingEthAmount - developmentEthAmount;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: marketingEthAmount}("");
        (tmpSuccess,) = payable(developmentFeeReceiver).call{value: developmentEthAmount}("");
        (tmpSuccess,) = payable(reservesFeeReceiver).call{value: reservesEthAmount}("");
        
        tmpSuccess = false;

    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
        emit exemptFees(holder, exempt);
    }

    function setTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isTxLimitExempt[holder] = exempt;
        emit exemptTxLimit(holder, exempt);
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require( _buyFee <= 20 && _sellFee <= 30, "Fees can not be more than 20% buy 30% sell"); 
        buyFee = _buyFee;
        sellFee = _sellFee;
        emit feesUpdated(buyFee, sellFee);
    }

    function updateFeeWallets( address _marketingFeeReceiver, address _developmentFeeReceiver, address _reservesFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0) && _developmentFeeReceiver != address(0) && _reservesFeeReceiver != address(0), "Fee receiver cannot be zero address");
        marketingFeeReceiver = _marketingFeeReceiver;
        developmentFeeReceiver = _developmentFeeReceiver;
        reservesFeeReceiver = _reservesFeeReceiver;
        emit feesWalletsUpdated(marketingFeeReceiver, developmentFeeReceiver, reservesFeeReceiver);
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require( _amount <= 5e5 && _amount >= 1e5, "Swap amount can not be more than 0.5% or less than 0.1%"); 
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**_decimals;
        emit swapbackSettingsUpdated(_enabled, _amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD)- balanceOf(ZERO);
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"feesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"devFeeReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"infrastructureFeeReceiver","type":"address"}],"name":"feesWalletsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxLimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"maxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"lastTokenSwap","type":"uint256"}],"name":"tradingEnabled","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":"_maxWalletAmount","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"removeMaxLimits","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":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExempt","outputs":[],"stateMutability":"nonpayable","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":"taxBreakdown","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"reserves","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"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_developmentFeeReceiver","type":"address"},{"internalType":"address","name":"_reservesFeeReceiver","type":"address"}],"name":"updateFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a6100129190610b5c565b6305f5e1006100219190610ba6565b6002556012600a6100329190610b5c565b621e84806100409190610ba6565b6003556012600a6100519190610b5c565b621e848061005f9190610ba6565b6004556012600a6100709190610b5c565b6207a12061007e9190610ba6565b600555600f600a55601e600b555f600c5560405180606001604052806028815260200160288152602001601481525060125f820151815f0155602082015181600101556040820151816002015550505f601a60146101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555034801561010d575f80fd5b505f61011d6109e460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610277573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029b9190610c45565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103689190610c45565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016103c3929190610c7f565b6020604051808303815f875af11580156103df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190610c45565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550736e9fb2d94361bc25254bdf99fcef52e62a1a71b6600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730fed3d95d68554f37f273ee6e70e2a60247c316960105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507390d241561005f549b851a25fb4084ec76d62833060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6002546040516109d79190610cb5565b60405180910390a3610cce565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610a6d57808604811115610a4957610a486109eb565b5b6001851615610a585780820291505b8081029050610a6685610a18565b9450610a2d565b94509492505050565b5f82610a855760019050610b40565b81610a92575f9050610b40565b8160018114610aa85760028114610ab257610ae1565b6001915050610b40565b60ff841115610ac457610ac36109eb565b5b8360020a915084821115610adb57610ada6109eb565b5b50610b40565b5060208310610133831016604e8410600b8410161715610b165782820a905083811115610b1157610b106109eb565b5b610b40565b610b238484846001610a24565b92509050818404811115610b3a57610b396109eb565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610b6682610b47565b9150610b7183610b50565b9250610b9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610a76565b905092915050565b5f610bb082610b47565b9150610bbb83610b47565b9250828202610bc981610b47565b91508282048414831517610be057610bdf6109eb565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c1482610beb565b9050919050565b610c2481610c0a565b8114610c2e575f80fd5b50565b5f81519050610c3f81610c1b565b92915050565b5f60208284031215610c5a57610c59610be7565b5b5f610c6784828501610c31565b91505092915050565b610c7981610c0a565b82525050565b5f604082019050610c925f830185610c70565b610c9f6020830184610c70565b9392505050565b610caf81610b47565b82525050565b5f602082019050610cc85f830184610ca6565b92915050565b613f9d80610cdb5f395ff3fe608060405260043610610207575f3560e01c806370a0823111610117578063a8aa1b311161009f578063ccf8c0361161006e578063ccf8c03614610726578063dd62ed3e1461074e578063f2fde38b1461078a578063f6a78e17146107b2578063f887ea40146107c85761020e565b8063a8aa1b311461066e578063a9059cbb14610698578063b2bdfa7b146106d4578063bc337182146106fe5761020e565b8063893d20e8116100e6578063893d20e8146105a05780638d7a8ba7146105ca5780638da5cb5b146105f2578063937ebc301461061c57806395d89b41146106445761020e565b806370a08231146104e8578063715018a61461052457806377b54bad1461053a5780637d1db4a5146105765761020e565b80632b112e491161019a5780634706240211610169578063470624021461041a5780635d0044ca146104445780636c0a24eb1461046c5780636db79437146104965780636ddd1713146104be5761020e565b80632b112e49146103705780632b14ca561461039a5780632b6f6a17146103c4578063313ce567146103f05761020e565b8063095ea7b3116101d6578063095ea7b3146102b857806318160ddd146102f457806323b872dd1461031e578063293230b81461035a5761020e565b806304368f65146102125780630445b6671461023a57806306fdde031461026457806308fd3d051461028e5761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b5061023860048036038101906102339190612e82565b6107f2565b005b348015610245575f80fd5b5061024e610948565b60405161025b9190612ecf565b60405180910390f35b34801561026f575f80fd5b5061027861094e565b6040516102859190612f58565b60405180910390f35b348015610299575f80fd5b506102a261098b565b6040516102af9190612f87565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612ffa565b61099e565b6040516102eb9190612f87565b60405180910390f35b3480156102ff575f80fd5b50610308610a8b565b6040516103159190612ecf565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613038565b610a94565b6040516103519190612f87565b60405180910390f35b348015610365575f80fd5b5061036e610c1e565b005b34801561037b575f80fd5b50610384610d71565b6040516103919190612ecf565b60405180910390f35b3480156103a5575f80fd5b506103ae610da2565b6040516103bb9190612ecf565b60405180910390f35b3480156103cf575f80fd5b506103d8610da8565b6040516103e793929190613088565b60405180910390f35b3480156103fb575f80fd5b50610404610dbf565b60405161041191906130d8565b60405180910390f35b348015610425575f80fd5b5061042e610dc7565b60405161043b9190612ecf565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906130f1565b610dcd565b005b348015610477575f80fd5b50610480610ef8565b60405161048d9190612ecf565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b7919061311c565b610efe565b005b3480156104c9575f80fd5b506104d2611027565b6040516104df9190612f87565b60405180910390f35b3480156104f3575f80fd5b5061050e6004803603810190610509919061315a565b61103a565b60405161051b9190612ecf565b60405180910390f35b34801561052f575f80fd5b50610538611080565b005b348015610545575f80fd5b50610560600480360381019061055b9190612ffa565b6111ce565b60405161056d9190612f87565b60405180910390f35b348015610581575f80fd5b5061058a6113d6565b6040516105979190612ecf565b60405180910390f35b3480156105ab575f80fd5b506105b46113dc565b6040516105c19190613194565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb91906131ad565b6113ea565b005b3480156105fd575f80fd5b5061060661158a565b6040516106139190613194565b60405180910390f35b348015610627575f80fd5b50610642600480360381019061063d91906131eb565b6115b1565b005b34801561064f575f80fd5b506106586118bd565b6040516106659190612f58565b60405180910390f35b348015610679575f80fd5b506106826118fa565b60405161068f9190613194565b60405180910390f35b3480156106a3575f80fd5b506106be60048036038101906106b99190612ffa565b61191f565b6040516106cb9190612f87565b60405180910390f35b3480156106df575f80fd5b506106e8611933565b6040516106f59190613194565b60405180910390f35b348015610709575f80fd5b50610724600480360381019061071f91906130f1565b611956565b005b348015610731575f80fd5b5061074c600480360381019061074791906131ad565b611a81565b005b348015610759575f80fd5b50610774600480360381019061076f919061323b565b611c75565b6040516107819190612ecf565b60405180910390f35b348015610795575f80fd5b506107b060048036038101906107ab919061315a565b611cf7565b005b3480156107bd575f80fd5b506107c6611eb4565b005b3480156107d3575f80fd5b506107dc611f8e565b6040516107e991906132d4565b60405180910390f35b6107fa611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d90613337565b60405180910390fd5b6207a120811115801561089c5750620186a08110155b6108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d2906133c5565b60405180910390fd5b81601a60156101000a81548160ff0219169083151502179055506012600a610903919061353f565b8161090e9190613589565b600581905550808215157fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd960405160405180910390a35050565b60055481565b60606040518060400160405280600981526020017f456e68616e636541490000000000000000000000000000000000000000000000815250905090565b601a60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a799190612ecf565b60405180910390a36001905092915050565b5f600254905090565b5f8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610adc611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c095782811015610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b799061363a565b60405180910390fd5b82810360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bcb611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610c14858585611fba565b9150509392505050565b610c26611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990613337565b60405180910390fd5b601a60149054906101000a900460ff1615610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906136a2565b60405180910390fd5b6001601a60146101000a81548160ff02191690831515021790555042600e8190555043600d81905550600d54600e54601a60149054906101000a900460ff1615157f6a88444adba589164a0c0f1f33a72555328570cbb508a11c3213089c63c6378b60405160405180910390a4565b5f610d7b5f61103a565b610d8661dead61103a565b600254610d9391906136c0565b610d9d91906136c0565b905090565b600b5481565b6012805f0154908060010154908060020154905083565b5f6012905090565b600a5481565b610dd5611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613337565b60405180910390fd5b620f4240811015610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e90613763565b60405180910390fd5b6012600a610eb5919061353f565b81610ec09190613589565b6004819055506004547ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c3560405160405180910390a250565b60045481565b610f06611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990613337565b60405180910390fd5b60148211158015610fa45750601e8111155b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906137f1565b60405180910390fd5b81600a8190555080600b81905550600b54600a547f3708aaa16bcac28f689a62245e6afcba1ccda04df915fc9f43b0c1a7570d1b5e60405160405180910390a35050565b601a60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611088611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6111d7611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90613337565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890613859565b60405180910390fd5b5f8203611353578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113119190613194565b602060405180830381865afa15801561132c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611350919061388b565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161138e9291906138b6565b6020604051808303815f875af11580156113aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ce91906138f1565b905092915050565b60035481565b5f6113e561158a565b905090565b6113f2611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613966565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377560405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b9611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ad57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116e557505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b906139f4565b60405180910390fd5b82600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fabe0d5e54c3b508d0c57b7b623c2be48ed55805564807278933d61d0012eec2460405160405180910390a4505050565b60606040518060400160405280600381526020017f4541490000000000000000000000000000000000000000000000000000000000815250905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61192b338484611fba565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61195e611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613337565b60405180910390fd5b6207a120811015611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790613a5c565b60405180910390fd5b6012600a611a3e919061353f565b81611a499190613589565b6003819055506003547f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c504160405160405180910390a250565b611a89611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90613966565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734660405160405180910390a35050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611cff611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090613aea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ebc611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613337565b60405180910390fd5b6002546004819055506002546003819055506003546004547fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa960405160405180910390a3565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f601a60169054906101000a900460ff1615611fe257611fdb8484846125b7565b90506125b0565b611fea61158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461206c57601a60149054906101000a900460ff1661206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290613b52565b60405180910390fd5b5b61207461158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158061221957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612113575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561216c5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121c55750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612218575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b1561227c575f6122288461103a565b905060045483826122399190613b70565b111561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613c13565b60405180910390fd5b505b6122868483612744565b43600d54141580156122d7575060055460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b80156122ef5750601a60159054906101000a900460ff165b80156123085750601a60169054906101000a900460ff16155b80156123605750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156123755761236d6127de565b43600d819055505b5f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f090613ca1565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124d9575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124ed576124e8868587612c36565b6124ef565b835b90508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461253d9190613b70565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a19190612ecf565b60405180910390a36001925050505b9392505050565b5f8060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390613ca1565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126cc9190613b70565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127309190612ecf565b60405180910390a360019150509392505050565b6003548111158061279b575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d190613d09565b60405180910390fd5b5050565b6001601a60166101000a81548160ff021916908315150217905550610258600e546128099190613b70565b421015612852576040518060600160405280606481526020015f81526020015f81525060155f820151815f01556020820151816001015560408201518160020155905050612876565b601260155f820154815f015560018201548160010155600282015481600201559050505b5f60055490505f600267ffffffffffffffff81111561289857612897613d27565b5b6040519080825280602002602001820160405280156128c65781602001602082028036833780820191505090505b50905030815f815181106128dd576128dc613d54565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061294d5761294c613d54565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129e9959493929190613e71565b5f604051808303815f87803b158015612a00575f80fd5b505af1158015612a12573d5f803e3d5ffd5b505050505f4790505f606460155f015483612a2d9190613589565b612a379190613ef6565b90505f606460156001015484612a4d9190613589565b612a579190613ef6565b90505f818385612a6791906136c0565b612a7191906136c0565b90505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612ab990613f53565b5f6040518083038185875af1925050503d805f8114612af3576040519150601f19603f3d011682016040523d82523d5f602084013e612af8565b606091505b5050905060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612b4190613f53565b5f6040518083038185875af1925050503d805f8114612b7b576040519150601f19603f3d011682016040523d82523d5f602084013e612b80565b606091505b50508091505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612bcb90613f53565b5f6040518083038185875af1925050503d805f8114612c05576040519150601f19603f3d011682016040523d82523d5f602084013e612c0a565b606091505b5050809150505f9050505050505050505f601a60166101000a81548160ff021916908315150217905550565b5f805f9050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb0576064600b5485612c9f9190613589565b612ca99190613ef6565b9050612d43565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612d25576064600a5485612d149190613589565b612d1e9190613ef6565b9050612d42565b6064600c5485612d359190613589565b612d3f9190613ef6565b90505b5b8060065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612d8f9190613b70565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612df39190612ecf565b60405180910390a35f8185612e0891906136c0565b905080925050509392505050565b5f80fd5b5f8115159050919050565b612e2e81612e1a565b8114612e38575f80fd5b50565b5f81359050612e4981612e25565b92915050565b5f819050919050565b612e6181612e4f565b8114612e6b575f80fd5b50565b5f81359050612e7c81612e58565b92915050565b5f8060408385031215612e9857612e97612e16565b5b5f612ea585828601612e3b565b9250506020612eb685828601612e6e565b9150509250929050565b612ec981612e4f565b82525050565b5f602082019050612ee25f830184612ec0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612f2a82612ee8565b612f348185612ef2565b9350612f44818560208601612f02565b612f4d81612f10565b840191505092915050565b5f6020820190508181035f830152612f708184612f20565b905092915050565b612f8181612e1a565b82525050565b5f602082019050612f9a5f830184612f78565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fc982612fa0565b9050919050565b612fd981612fbf565b8114612fe3575f80fd5b50565b5f81359050612ff481612fd0565b92915050565b5f80604083850312156130105761300f612e16565b5b5f61301d85828601612fe6565b925050602061302e85828601612e6e565b9150509250929050565b5f805f6060848603121561304f5761304e612e16565b5b5f61305c86828701612fe6565b935050602061306d86828701612fe6565b925050604061307e86828701612e6e565b9150509250925092565b5f60608201905061309b5f830186612ec0565b6130a86020830185612ec0565b6130b56040830184612ec0565b949350505050565b5f60ff82169050919050565b6130d2816130bd565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f6020828403121561310657613105612e16565b5b5f61311384828501612e6e565b91505092915050565b5f806040838503121561313257613131612e16565b5b5f61313f85828601612e6e565b925050602061315085828601612e6e565b9150509250929050565b5f6020828403121561316f5761316e612e16565b5b5f61317c84828501612fe6565b91505092915050565b61318e81612fbf565b82525050565b5f6020820190506131a75f830184613185565b92915050565b5f80604083850312156131c3576131c2612e16565b5b5f6131d085828601612fe6565b92505060206131e185828601612e3b565b9150509250929050565b5f805f6060848603121561320257613201612e16565b5b5f61320f86828701612fe6565b935050602061322086828701612fe6565b925050604061323186828701612fe6565b9150509250925092565b5f806040838503121561325157613250612e16565b5b5f61325e85828601612fe6565b925050602061326f85828601612fe6565b9150509250929050565b5f819050919050565b5f61329c61329761329284612fa0565b613279565b612fa0565b9050919050565b5f6132ad82613282565b9050919050565b5f6132be826132a3565b9050919050565b6132ce816132b4565b82525050565b5f6020820190506132e75f8301846132c5565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613321602083612ef2565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f5377617020616d6f756e742063616e206e6f74206265206d6f7265207468616e5f8201527f20302e3525206f72206c657373207468616e20302e3125000000000000000000602082015250565b5f6133af603783612ef2565b91506133ba82613355565b604082019050919050565b5f6020820190508181035f8301526133dc816133a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561346557808604811115613441576134406133e3565b5b60018516156134505780820291505b808102905061345e85613410565b9450613425565b94509492505050565b5f8261347d5760019050613538565b8161348a575f9050613538565b81600181146134a057600281146134aa576134d9565b6001915050613538565b60ff8411156134bc576134bb6133e3565b5b8360020a9150848211156134d3576134d26133e3565b5b50613538565b5060208310610133831016604e8410600b841016171561350e5782820a905083811115613509576135086133e3565b5b613538565b61351b848484600161341c565b92509050818404811115613532576135316133e3565b5b81810290505b9392505050565b5f61354982612e4f565b9150613554836130bd565b92506135817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461346e565b905092915050565b5f61359382612e4f565b915061359e83612e4f565b92508282026135ac81612e4f565b915082820484148315176135c3576135c26133e3565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613624602883612ef2565b915061362f826135ca565b604082019050919050565b5f6020820190508181035f83015261365181613618565b9050919050565b7f54726164696e6720616c726561647920456e61626c65642e00000000000000005f82015250565b5f61368c601883612ef2565b915061369782613658565b602082019050919050565b5f6020820190508181035f8301526136b981613680565b9050919050565b5f6136ca82612e4f565b91506136d583612e4f565b92508282039050818111156136ed576136ec6133e3565b5b92915050565b7f4d61782077616c6c65742063616e6e6f74206265206c657373207468616e20305f8201527f2e35252e00000000000000000000000000000000000000000000000000000000602082015250565b5f61374d602483612ef2565b9150613758826136f3565b604082019050919050565b5f6020820190508181035f83015261377a81613741565b9050919050565b7f466565732063616e206e6f74206265206d6f7265207468616e203230252062755f8201527f79203330252073656c6c00000000000000000000000000000000000000000000602082015250565b5f6137db602a83612ef2565b91506137e682613781565b604082019050919050565b5f6020820190508181035f830152613808816137cf565b9050919050565b7f43616e6e6f742077697468647261772045414920746f6b656e730000000000005f82015250565b5f613843601a83612ef2565b915061384e8261380f565b602082019050919050565b5f6020820190508181035f83015261387081613837565b9050919050565b5f8151905061388581612e58565b92915050565b5f602082840312156138a05761389f612e16565b5b5f6138ad84828501613877565b91505092915050565b5f6040820190506138c95f830185613185565b6138d66020830184612ec0565b9392505050565b5f815190506138eb81612e25565b92915050565b5f6020828403121561390657613905612e16565b5b5f613913848285016138dd565b91505092915050565b7f486f6c64657220697320746865207a65726f20616464726573730000000000005f82015250565b5f613950601a83612ef2565b915061395b8261391c565b602082019050919050565b5f6020820190508181035f83015261397d81613944565b9050919050565b7f4665652072656365697665722063616e6e6f74206265207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139de602383612ef2565b91506139e982613984565b604082019050919050565b5f6020820190508181035f830152613a0b816139d2565b9050919050565b7f4d61782074782063616e6e6f74206265206c657373207468616e20302e33252e5f82015250565b5f613a46602083612ef2565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ad4602683612ef2565b9150613adf82613a7a565b604082019050919050565b5f6020820190508181035f830152613b0181613ac8565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613b3c601483612ef2565b9150613b4782613b08565b602082019050919050565b5f6020820190508181035f830152613b6981613b30565b9050919050565b5f613b7a82612e4f565b9150613b8583612e4f565b9250828201905080821115613b9d57613b9c6133e3565b5b92915050565b7f4d6178696d756d2057616c6c65742073697a6520686173206265656e207265615f8201527f6368656400000000000000000000000000000000000000000000000000000000602082015250565b5f613bfd602483612ef2565b9150613c0882613ba3565b604082019050919050565b5f6020820190508181035f830152613c2a81613bf1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c8b602683612ef2565b9150613c9682613c31565b604082019050919050565b5f6020820190508181035f830152613cb881613c7f565b9050919050565b7f5478204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613cf3601183612ef2565b9150613cfe82613cbf565b602082019050919050565b5f6020820190508181035f830152613d2081613ce7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613da4613d9f613d9a84613d81565b613279565b612e4f565b9050919050565b613db481613d8a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dec81612fbf565b82525050565b5f613dfd8383613de3565b60208301905092915050565b5f602082019050919050565b5f613e1f82613dba565b613e298185613dc4565b9350613e3483613dd4565b805f5b83811015613e64578151613e4b8882613df2565b9750613e5683613e09565b925050600181019050613e37565b5085935050505092915050565b5f60a082019050613e845f830188612ec0565b613e916020830187613dab565b8181036040830152613ea38186613e15565b9050613eb26060830185613185565b613ebf6080830184612ec0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f0082612e4f565b9150613f0b83612e4f565b925082613f1b57613f1a613ec9565b5b828204905092915050565b5f81905092915050565b50565b5f613f3e5f83613f26565b9150613f4982613f30565b5f82019050919050565b5f613f5d82613f33565b915081905091905056fea2646970667358221220206a8c3c5e9eda7e07709acd895084f24bb4a2efd975ab7f61eb720de8e351d364736f6c63430008190033

Deployed Bytecode

0x608060405260043610610207575f3560e01c806370a0823111610117578063a8aa1b311161009f578063ccf8c0361161006e578063ccf8c03614610726578063dd62ed3e1461074e578063f2fde38b1461078a578063f6a78e17146107b2578063f887ea40146107c85761020e565b8063a8aa1b311461066e578063a9059cbb14610698578063b2bdfa7b146106d4578063bc337182146106fe5761020e565b8063893d20e8116100e6578063893d20e8146105a05780638d7a8ba7146105ca5780638da5cb5b146105f2578063937ebc301461061c57806395d89b41146106445761020e565b806370a08231146104e8578063715018a61461052457806377b54bad1461053a5780637d1db4a5146105765761020e565b80632b112e491161019a5780634706240211610169578063470624021461041a5780635d0044ca146104445780636c0a24eb1461046c5780636db79437146104965780636ddd1713146104be5761020e565b80632b112e49146103705780632b14ca561461039a5780632b6f6a17146103c4578063313ce567146103f05761020e565b8063095ea7b3116101d6578063095ea7b3146102b857806318160ddd146102f457806323b872dd1461031e578063293230b81461035a5761020e565b806304368f65146102125780630445b6671461023a57806306fdde031461026457806308fd3d051461028e5761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b5061023860048036038101906102339190612e82565b6107f2565b005b348015610245575f80fd5b5061024e610948565b60405161025b9190612ecf565b60405180910390f35b34801561026f575f80fd5b5061027861094e565b6040516102859190612f58565b60405180910390f35b348015610299575f80fd5b506102a261098b565b6040516102af9190612f87565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612ffa565b61099e565b6040516102eb9190612f87565b60405180910390f35b3480156102ff575f80fd5b50610308610a8b565b6040516103159190612ecf565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613038565b610a94565b6040516103519190612f87565b60405180910390f35b348015610365575f80fd5b5061036e610c1e565b005b34801561037b575f80fd5b50610384610d71565b6040516103919190612ecf565b60405180910390f35b3480156103a5575f80fd5b506103ae610da2565b6040516103bb9190612ecf565b60405180910390f35b3480156103cf575f80fd5b506103d8610da8565b6040516103e793929190613088565b60405180910390f35b3480156103fb575f80fd5b50610404610dbf565b60405161041191906130d8565b60405180910390f35b348015610425575f80fd5b5061042e610dc7565b60405161043b9190612ecf565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906130f1565b610dcd565b005b348015610477575f80fd5b50610480610ef8565b60405161048d9190612ecf565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b7919061311c565b610efe565b005b3480156104c9575f80fd5b506104d2611027565b6040516104df9190612f87565b60405180910390f35b3480156104f3575f80fd5b5061050e6004803603810190610509919061315a565b61103a565b60405161051b9190612ecf565b60405180910390f35b34801561052f575f80fd5b50610538611080565b005b348015610545575f80fd5b50610560600480360381019061055b9190612ffa565b6111ce565b60405161056d9190612f87565b60405180910390f35b348015610581575f80fd5b5061058a6113d6565b6040516105979190612ecf565b60405180910390f35b3480156105ab575f80fd5b506105b46113dc565b6040516105c19190613194565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb91906131ad565b6113ea565b005b3480156105fd575f80fd5b5061060661158a565b6040516106139190613194565b60405180910390f35b348015610627575f80fd5b50610642600480360381019061063d91906131eb565b6115b1565b005b34801561064f575f80fd5b506106586118bd565b6040516106659190612f58565b60405180910390f35b348015610679575f80fd5b506106826118fa565b60405161068f9190613194565b60405180910390f35b3480156106a3575f80fd5b506106be60048036038101906106b99190612ffa565b61191f565b6040516106cb9190612f87565b60405180910390f35b3480156106df575f80fd5b506106e8611933565b6040516106f59190613194565b60405180910390f35b348015610709575f80fd5b50610724600480360381019061071f91906130f1565b611956565b005b348015610731575f80fd5b5061074c600480360381019061074791906131ad565b611a81565b005b348015610759575f80fd5b50610774600480360381019061076f919061323b565b611c75565b6040516107819190612ecf565b60405180910390f35b348015610795575f80fd5b506107b060048036038101906107ab919061315a565b611cf7565b005b3480156107bd575f80fd5b506107c6611eb4565b005b3480156107d3575f80fd5b506107dc611f8e565b6040516107e991906132d4565b60405180910390f35b6107fa611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d90613337565b60405180910390fd5b6207a120811115801561089c5750620186a08110155b6108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d2906133c5565b60405180910390fd5b81601a60156101000a81548160ff0219169083151502179055506012600a610903919061353f565b8161090e9190613589565b600581905550808215157fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd960405160405180910390a35050565b60055481565b60606040518060400160405280600981526020017f456e68616e636541490000000000000000000000000000000000000000000000815250905090565b601a60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a799190612ecf565b60405180910390a36001905092915050565b5f600254905090565b5f8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610adc611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c095782811015610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b799061363a565b60405180910390fd5b82810360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bcb611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610c14858585611fba565b9150509392505050565b610c26611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990613337565b60405180910390fd5b601a60149054906101000a900460ff1615610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906136a2565b60405180910390fd5b6001601a60146101000a81548160ff02191690831515021790555042600e8190555043600d81905550600d54600e54601a60149054906101000a900460ff1615157f6a88444adba589164a0c0f1f33a72555328570cbb508a11c3213089c63c6378b60405160405180910390a4565b5f610d7b5f61103a565b610d8661dead61103a565b600254610d9391906136c0565b610d9d91906136c0565b905090565b600b5481565b6012805f0154908060010154908060020154905083565b5f6012905090565b600a5481565b610dd5611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613337565b60405180910390fd5b620f4240811015610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e90613763565b60405180910390fd5b6012600a610eb5919061353f565b81610ec09190613589565b6004819055506004547ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c3560405160405180910390a250565b60045481565b610f06611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990613337565b60405180910390fd5b60148211158015610fa45750601e8111155b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906137f1565b60405180910390fd5b81600a8190555080600b81905550600b54600a547f3708aaa16bcac28f689a62245e6afcba1ccda04df915fc9f43b0c1a7570d1b5e60405160405180910390a35050565b601a60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611088611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6111d7611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90613337565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890613859565b60405180910390fd5b5f8203611353578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113119190613194565b602060405180830381865afa15801561132c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611350919061388b565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161138e9291906138b6565b6020604051808303815f875af11580156113aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ce91906138f1565b905092915050565b60035481565b5f6113e561158a565b905090565b6113f2611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613966565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377560405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b9611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ad57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116e557505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b906139f4565b60405180910390fd5b82600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fabe0d5e54c3b508d0c57b7b623c2be48ed55805564807278933d61d0012eec2460405160405180910390a4505050565b60606040518060400160405280600381526020017f4541490000000000000000000000000000000000000000000000000000000000815250905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61192b338484611fba565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61195e611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613337565b60405180910390fd5b6207a120811015611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790613a5c565b60405180910390fd5b6012600a611a3e919061353f565b81611a499190613589565b6003819055506003547f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c504160405160405180910390a250565b611a89611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90613966565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734660405160405180910390a35050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611cff611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090613aea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ebc611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613337565b60405180910390fd5b6002546004819055506002546003819055506003546004547fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa960405160405180910390a3565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f601a60169054906101000a900460ff1615611fe257611fdb8484846125b7565b90506125b0565b611fea61158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461206c57601a60149054906101000a900460ff1661206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290613b52565b60405180910390fd5b5b61207461158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158061221957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612113575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561216c5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121c55750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612218575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b1561227c575f6122288461103a565b905060045483826122399190613b70565b111561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613c13565b60405180910390fd5b505b6122868483612744565b43600d54141580156122d7575060055460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b80156122ef5750601a60159054906101000a900460ff165b80156123085750601a60169054906101000a900460ff16155b80156123605750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156123755761236d6127de565b43600d819055505b5f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f090613ca1565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124d9575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124ed576124e8868587612c36565b6124ef565b835b90508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461253d9190613b70565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a19190612ecf565b60405180910390a36001925050505b9392505050565b5f8060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390613ca1565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126cc9190613b70565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127309190612ecf565b60405180910390a360019150509392505050565b6003548111158061279b575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d190613d09565b60405180910390fd5b5050565b6001601a60166101000a81548160ff021916908315150217905550610258600e546128099190613b70565b421015612852576040518060600160405280606481526020015f81526020015f81525060155f820151815f01556020820151816001015560408201518160020155905050612876565b601260155f820154815f015560018201548160010155600282015481600201559050505b5f60055490505f600267ffffffffffffffff81111561289857612897613d27565b5b6040519080825280602002602001820160405280156128c65781602001602082028036833780820191505090505b50905030815f815181106128dd576128dc613d54565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061294d5761294c613d54565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129e9959493929190613e71565b5f604051808303815f87803b158015612a00575f80fd5b505af1158015612a12573d5f803e3d5ffd5b505050505f4790505f606460155f015483612a2d9190613589565b612a379190613ef6565b90505f606460156001015484612a4d9190613589565b612a579190613ef6565b90505f818385612a6791906136c0565b612a7191906136c0565b90505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612ab990613f53565b5f6040518083038185875af1925050503d805f8114612af3576040519150601f19603f3d011682016040523d82523d5f602084013e612af8565b606091505b5050905060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612b4190613f53565b5f6040518083038185875af1925050503d805f8114612b7b576040519150601f19603f3d011682016040523d82523d5f602084013e612b80565b606091505b50508091505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612bcb90613f53565b5f6040518083038185875af1925050503d805f8114612c05576040519150601f19603f3d011682016040523d82523d5f602084013e612c0a565b606091505b5050809150505f9050505050505050505f601a60166101000a81548160ff021916908315150217905550565b5f805f9050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb0576064600b5485612c9f9190613589565b612ca99190613ef6565b9050612d43565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612d25576064600a5485612d149190613589565b612d1e9190613ef6565b9050612d42565b6064600c5485612d359190613589565b612d3f9190613ef6565b90505b5b8060065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612d8f9190613b70565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612df39190612ecf565b60405180910390a35f8185612e0891906136c0565b905080925050509392505050565b5f80fd5b5f8115159050919050565b612e2e81612e1a565b8114612e38575f80fd5b50565b5f81359050612e4981612e25565b92915050565b5f819050919050565b612e6181612e4f565b8114612e6b575f80fd5b50565b5f81359050612e7c81612e58565b92915050565b5f8060408385031215612e9857612e97612e16565b5b5f612ea585828601612e3b565b9250506020612eb685828601612e6e565b9150509250929050565b612ec981612e4f565b82525050565b5f602082019050612ee25f830184612ec0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612f2a82612ee8565b612f348185612ef2565b9350612f44818560208601612f02565b612f4d81612f10565b840191505092915050565b5f6020820190508181035f830152612f708184612f20565b905092915050565b612f8181612e1a565b82525050565b5f602082019050612f9a5f830184612f78565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fc982612fa0565b9050919050565b612fd981612fbf565b8114612fe3575f80fd5b50565b5f81359050612ff481612fd0565b92915050565b5f80604083850312156130105761300f612e16565b5b5f61301d85828601612fe6565b925050602061302e85828601612e6e565b9150509250929050565b5f805f6060848603121561304f5761304e612e16565b5b5f61305c86828701612fe6565b935050602061306d86828701612fe6565b925050604061307e86828701612e6e565b9150509250925092565b5f60608201905061309b5f830186612ec0565b6130a86020830185612ec0565b6130b56040830184612ec0565b949350505050565b5f60ff82169050919050565b6130d2816130bd565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f6020828403121561310657613105612e16565b5b5f61311384828501612e6e565b91505092915050565b5f806040838503121561313257613131612e16565b5b5f61313f85828601612e6e565b925050602061315085828601612e6e565b9150509250929050565b5f6020828403121561316f5761316e612e16565b5b5f61317c84828501612fe6565b91505092915050565b61318e81612fbf565b82525050565b5f6020820190506131a75f830184613185565b92915050565b5f80604083850312156131c3576131c2612e16565b5b5f6131d085828601612fe6565b92505060206131e185828601612e3b565b9150509250929050565b5f805f6060848603121561320257613201612e16565b5b5f61320f86828701612fe6565b935050602061322086828701612fe6565b925050604061323186828701612fe6565b9150509250925092565b5f806040838503121561325157613250612e16565b5b5f61325e85828601612fe6565b925050602061326f85828601612fe6565b9150509250929050565b5f819050919050565b5f61329c61329761329284612fa0565b613279565b612fa0565b9050919050565b5f6132ad82613282565b9050919050565b5f6132be826132a3565b9050919050565b6132ce816132b4565b82525050565b5f6020820190506132e75f8301846132c5565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613321602083612ef2565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f5377617020616d6f756e742063616e206e6f74206265206d6f7265207468616e5f8201527f20302e3525206f72206c657373207468616e20302e3125000000000000000000602082015250565b5f6133af603783612ef2565b91506133ba82613355565b604082019050919050565b5f6020820190508181035f8301526133dc816133a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561346557808604811115613441576134406133e3565b5b60018516156134505780820291505b808102905061345e85613410565b9450613425565b94509492505050565b5f8261347d5760019050613538565b8161348a575f9050613538565b81600181146134a057600281146134aa576134d9565b6001915050613538565b60ff8411156134bc576134bb6133e3565b5b8360020a9150848211156134d3576134d26133e3565b5b50613538565b5060208310610133831016604e8410600b841016171561350e5782820a905083811115613509576135086133e3565b5b613538565b61351b848484600161341c565b92509050818404811115613532576135316133e3565b5b81810290505b9392505050565b5f61354982612e4f565b9150613554836130bd565b92506135817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461346e565b905092915050565b5f61359382612e4f565b915061359e83612e4f565b92508282026135ac81612e4f565b915082820484148315176135c3576135c26133e3565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613624602883612ef2565b915061362f826135ca565b604082019050919050565b5f6020820190508181035f83015261365181613618565b9050919050565b7f54726164696e6720616c726561647920456e61626c65642e00000000000000005f82015250565b5f61368c601883612ef2565b915061369782613658565b602082019050919050565b5f6020820190508181035f8301526136b981613680565b9050919050565b5f6136ca82612e4f565b91506136d583612e4f565b92508282039050818111156136ed576136ec6133e3565b5b92915050565b7f4d61782077616c6c65742063616e6e6f74206265206c657373207468616e20305f8201527f2e35252e00000000000000000000000000000000000000000000000000000000602082015250565b5f61374d602483612ef2565b9150613758826136f3565b604082019050919050565b5f6020820190508181035f83015261377a81613741565b9050919050565b7f466565732063616e206e6f74206265206d6f7265207468616e203230252062755f8201527f79203330252073656c6c00000000000000000000000000000000000000000000602082015250565b5f6137db602a83612ef2565b91506137e682613781565b604082019050919050565b5f6020820190508181035f830152613808816137cf565b9050919050565b7f43616e6e6f742077697468647261772045414920746f6b656e730000000000005f82015250565b5f613843601a83612ef2565b915061384e8261380f565b602082019050919050565b5f6020820190508181035f83015261387081613837565b9050919050565b5f8151905061388581612e58565b92915050565b5f602082840312156138a05761389f612e16565b5b5f6138ad84828501613877565b91505092915050565b5f6040820190506138c95f830185613185565b6138d66020830184612ec0565b9392505050565b5f815190506138eb81612e25565b92915050565b5f6020828403121561390657613905612e16565b5b5f613913848285016138dd565b91505092915050565b7f486f6c64657220697320746865207a65726f20616464726573730000000000005f82015250565b5f613950601a83612ef2565b915061395b8261391c565b602082019050919050565b5f6020820190508181035f83015261397d81613944565b9050919050565b7f4665652072656365697665722063616e6e6f74206265207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139de602383612ef2565b91506139e982613984565b604082019050919050565b5f6020820190508181035f830152613a0b816139d2565b9050919050565b7f4d61782074782063616e6e6f74206265206c657373207468616e20302e33252e5f82015250565b5f613a46602083612ef2565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ad4602683612ef2565b9150613adf82613a7a565b604082019050919050565b5f6020820190508181035f830152613b0181613ac8565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613b3c601483612ef2565b9150613b4782613b08565b602082019050919050565b5f6020820190508181035f830152613b6981613b30565b9050919050565b5f613b7a82612e4f565b9150613b8583612e4f565b9250828201905080821115613b9d57613b9c6133e3565b5b92915050565b7f4d6178696d756d2057616c6c65742073697a6520686173206265656e207265615f8201527f6368656400000000000000000000000000000000000000000000000000000000602082015250565b5f613bfd602483612ef2565b9150613c0882613ba3565b604082019050919050565b5f6020820190508181035f830152613c2a81613bf1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c8b602683612ef2565b9150613c9682613c31565b604082019050919050565b5f6020820190508181035f830152613cb881613c7f565b9050919050565b7f5478204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613cf3601183612ef2565b9150613cfe82613cbf565b602082019050919050565b5f6020820190508181035f830152613d2081613ce7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613da4613d9f613d9a84613d81565b613279565b612e4f565b9050919050565b613db481613d8a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dec81612fbf565b82525050565b5f613dfd8383613de3565b60208301905092915050565b5f602082019050919050565b5f613e1f82613dba565b613e298185613dc4565b9350613e3483613dd4565b805f5b83811015613e64578151613e4b8882613df2565b9750613e5683613e09565b925050600181019050613e37565b5085935050505092915050565b5f60a082019050613e845f830188612ec0565b613e916020830187613dab565b8181036040830152613ea38186613e15565b9050613eb26060830185613185565b613ebf6080830184612ec0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f0082612e4f565b9150613f0b83612e4f565b925082613f1b57613f1a613ec9565b5b828204905092915050565b5f81905092915050565b50565b5f613f3e5f83613f26565b9150613f4982613f30565b5f82019050919050565b5f613f5d82613f33565b915081905091905056fea2646970667358221220206a8c3c5e9eda7e07709acd895084f24bb4a2efd975ab7f61eb720de8e351d364736f6c63430008190033

Deployed Bytecode Sourcemap

3712:12415:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15632:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4215:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7391:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5114:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7813:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7121:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8201:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12693:289;;;;;;;;;;;;;:::i;:::-;;15987:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4523:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4920:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7215:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4489:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8731:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4155:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14746:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5158:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7561:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1800:150;;;;;;;;;;;;;:::i;:::-;;12319:364;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4099:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7477:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14498:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1586:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15035:589;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7301:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5082:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8037:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1302:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9013:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14221:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7672:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1958:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12112:199;;;;;;;;;;;;;:::i;:::-;;5012:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15632:343;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15744:3:::1;15733:7;:14;;:32;;;;;15762:3;15751:7;:14;;15733:32;15724:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;15851:8;15837:11;;:22;;;;;;;;;;;;;;;;;;4032:2;15896;:13;;;;:::i;:::-;15886:7;:23;;;;:::i;:::-;15870:13;:39;;;;15959:7;15949:8;15925:42;;;;;;;;;;;;15632:343:::0;;:::o;4215:50::-;;;;:::o;7391:80::-;7439:13;7463:5;;;;;;;;;;;;;;;;;7456:12;;7391:80;:::o;5114:31::-;;;;;;;;;;;;;:::o;7813:216::-;7888:4;7940:6;7905:11;:23;7917:10;7905:23;;;;;;;;;;;;;;;:32;7929:7;7905:32;;;;;;;;;;;;;;;:41;;;;7983:7;7962:37;;7971:10;7962:37;;;7992:6;7962:37;;;;;;:::i;:::-;;;;;;;;8017:4;8010:11;;7813:216;;;;:::o;7121:88::-;7176:7;7194:12;;7187:19;;7121:88;:::o;8201:522::-;8301:4;8318:24;8345:11;:19;8357:6;8345:19;;;;;;;;;;;;;;;:33;8365:12;:10;:12::i;:::-;8345:33;;;;;;;;;;;;;;;;8318:60;;8412:17;8392:16;:37;8389:267;;8473:6;8453:16;:26;;8445:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8623:6;8604:16;:25;8568:11;:19;8580:6;8568:19;;;;;;;;;;;;;;;:33;8588:12;:10;:12::i;:::-;8568:33;;;;;;;;;;;;;;;:61;;;;8389:267;8675:40;8689:6;8697:9;8708:6;8675:13;:40::i;:::-;8668:47;;;8201:522;;;;;:::o;12693:289::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12756:11:::1;;;;;;;;;;;12755:12;12747:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12820:4;12806:11;;:18;;;;;;;;;;;;;;;;;;12854:15;12835:16;:34;;;;12891:12;12880:8;:23;;;;12965:8;;12947:16;;12934:11;;;;;;;;;;;12919:55;;;;;;;;;;;;12693:289::o:0;15987:135::-;16040:7;16099:15;3874:42;16099:9;:15::i;:::-;16082;3801:42;16082:9;:15::i;:::-;16067:12;;:30;;;;:::i;:::-;:47;;;;:::i;:::-;16060:54;;15987:135;:::o;4523:28::-;;;;:::o;4920:51::-;;;;;;;;;;;;;;;;;;;:::o;7215:80::-;7267:5;4032:2;7276:16;;7215:80;:::o;4489:27::-;;;;:::o;8731:274::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8835:3:::1;8816:15;:22;;8808:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4032:2;8927;:13;;;;:::i;:::-;8909:15;:31;;;;:::i;:::-;8890:16;:50;;;;8973:16;;8956:34;;;;;;;;;;8731:274:::0;:::o;4155:53::-;;;;:::o;14746:281::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14851:2:::1;14840:7;:13;;:31;;;;;14869:2;14857:8;:14;;14840:31;14831:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14939:7;14930:6;:16;;;;14967:8;14957:7;:18;;;;15011:7;;15003:6;;14991:28;;;;;;;;;;14746:281:::0;;:::o;5158:30::-;;;;;;;;;;;;;:::o;7561:105::-;7627:7;7645:9;:18;7655:7;7645:18;;;;;;;;;;;;;;;;7638:25;;7561:105;;;:::o;1800:150::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1909:1:::1;1872:40;;1893:6;::::0;::::1;;;;;;;;1872:40;;;;;;;;;;;;1940:1;1923:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1800:150::o:0;12319:364::-;12410:4;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12468:4:::1;12435:38;;12443:12;12435:38;;::::0;12427:77:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12528:1;12518:6;:11:::0;12515:95:::1;;12560:12;12554:29;;;12592:4;12554:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12545:53;;12515:95;12633:12;12627:28;;;12656:10;12668:6;12627:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12620:55;;12319:364:::0;;;;:::o;4099:49::-;;;;:::o;7477:78::-;7529:7;7546;:5;:7::i;:::-;7539:14;;7477:78;:::o;14498:240::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14609:1:::1;14591:20;;:6;:20;;::::0;14583:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14679:6;14653:15;:23;14669:6;14653:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14723:6;14701:29;;14715:6;14701:29;;;;;;;;;;;;14498:240:::0;;:::o;1586:79::-;1624:7;1651:6;;;;;;;;;;;1644:13;;1586:79;:::o;15035:589::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15227:1:::1;15194:35;;:21;:35;;;;:76;;;;;15268:1;15233:37;;:23;:37;;;;15194:76;:114;;;;;15306:1;15274:34;;:20;:34;;;;15194:114;15186:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;15382:21;15359:20;;:44;;;;;;;;;;;;;;;;;;15439:23;15414:22;;:48;;;;;;;;;;;;;;;;;;15495:20;15473:19;;:42;;;;;;;;;;;;;;;;;;15596:19;;;;;;;;;;;15531:85;;15572:22;;;;;;;;;;;15531:85;;15550:20;;;;;;;;;;;15531:85;;;;;;;;;;;;15035:589:::0;;;:::o;7301:84::-;7351:13;7375:7;;;;;;;;;;;;;;;;;7368:14;;7301:84;:::o;5082:19::-;;;;;;;;;;;;;:::o;8037:156::-;8117:4;8141:44;8155:10;8167:9;8178:6;8141:13;:44::i;:::-;8134:51;;8037:156;;;;:::o;1302:21::-;;;;;;;;;;;;:::o;9013:237::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9105:3:::1;9090:11;:18;;9082:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4032:2;9187;:13;;;;:::i;:::-;9173:11;:27;;;;:::i;:::-;9158:12;:42;;;;9229:12;;9216:26;;;;;;;;;;9013:237:::0;:::o;14221:269::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14325:1:::1;14307:20;;:6;:20;;::::0;14299:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14391:6;14369:11;:19;14381:6;14369:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14434:6;14408:15;:23;14424:6;14408:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14475:6;14456:26;;14467:6;14456:26;;;;;;;;;;;;14221:269:::0;;:::o;7672:133::-;7756:7;7774:11;:19;7786:6;7774:19;;;;;;;;;;;;;;;:28;7794:7;7774:28;;;;;;;;;;;;;;;;7767:35;;7672:133;;;;:::o;1958:244::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2067:1:::1;2047:22;;:8;:22;;::::0;2039:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2157:8;2128:38;;2149:6;::::0;::::1;;;;;;;;2128:38;;;;;;;;;;;;2186:8;2177:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1958:244:::0;:::o;12112:199::-;1723:12;:10;:12::i;:::-;1713:22;;:6;;;;;;;;;;:22;;;1705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12189:12:::1;;12170:16;:31;;;;12227:12;;12212;:27;;;;12290:12;;12272:16;;12255:48;;;;;;;;;;12112:199::o:0;5012:24::-;;;;;;;;;;;;;:::o;1145:115::-;1198:15;1241:10;1226:26;;1145:115;:::o;9258:1501::-;9350:4;9372:6;;;;;;;;;;;9369:63;;;9388:41;9403:6;9411:9;9422:6;9388:14;:41::i;:::-;9381:48;;;;9369:63;9457:7;:5;:7::i;:::-;9447:17;;:6;:17;;;9444:104;;9488:11;;;;;;;;;;;9480:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9444:104;9581:7;:5;:7::i;:::-;9571:17;;:6;:17;;;;:169;;;;9614:4;9593:26;;:9;:26;;;;:57;;;;;3801:42;9624:26;;:9;:26;;;;9593:57;:78;;;;;9667:4;;;;;;;;;;;9654:17;;:9;:17;;;;9593:78;:115;;;;;9688:20;;;;;;;;;;;9675:33;;:9;:33;;;;9593:115;:146;;;;;9713:15;:26;9729:9;9713:26;;;;;;;;;;;;;;;;;;;;;;;;;9712:27;9593:146;9571:169;9567:336;;;9756:18;9777:20;9787:9;9777;:20::i;:::-;9756:41;;9845:16;;9834:6;9821:10;:19;;;;:::i;:::-;9820:41;;9812:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;9741:162;9567:336;9936:28;9949:6;9957;9936:12;:28::i;:::-;10006:12;9994:8;;:24;;:82;;;;;10063:13;;10035:9;:24;10053:4;10035:24;;;;;;;;;;;;;;;;:41;;9994:82;:110;;;;;10093:11;;;;;;;;;;;9994:110;:134;;;;;10122:6;;;;;;;;;;;10121:7;9994:134;:168;;;;;10158:4;;;;;;;;;;;10145:17;;:9;:17;;;9994:168;9977:276;;;10189:10;:8;:10::i;:::-;10225:12;10214:8;:23;;;;9977:276;10273:21;10297:9;:17;10307:6;10297:17;;;;;;;;;;;;;;;;10273:41;;10350:6;10333:13;:23;;10325:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10471:6;10455:13;:22;10435:9;:17;10445:6;10435:17;;;;;;;;;;;;;;;:42;;;;10501:22;10527:11;:19;10539:6;10527:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;10550:11;:22;10562:9;10550:22;;;;;;;;;;;;;;;;;;;;;;;;;10527:45;10526:93;;10585:34;10593:6;10601;10609:9;10585:7;:34::i;:::-;10526:93;;;10576:6;10526:93;10501:118;;10654:14;10630:9;:20;10640:9;10630:20;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;10703:9;10686:43;;10695:6;10686:43;;;10714:14;10686:43;;;;;;:::i;:::-;;;;;;;;10747:4;10740:11;;;;9258:1501;;;;;;:::o;10771:447::-;10864:4;10881:21;10905:9;:17;10915:6;10905:17;;;;;;;;;;;;;;;;10881:41;;10958:6;10941:13;:23;;10933:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11079:6;11063:13;:22;11043:9;:17;11053:6;11043:17;;;;;;;;;;;;;;;:42;;;;11131:6;11107:9;:20;11117:9;11107:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;11170:9;11153:35;;11162:6;11153:35;;;11181:6;11153:35;;;;;;:::i;:::-;;;;;;;;11206:4;11199:11;;;10771:447;;;;;:::o;11226:166::-;11323:12;;11313:6;:22;;:49;;;;11339:15;:23;11355:6;11339:23;;;;;;;;;;;;;;;;;;;;;;;;;11313:49;11305:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11226:166;;:::o;12990:1223::-;5244:4;5235:6;;:13;;;;;;;;;;;;;;;;;;13080:10:::1;13061:16;;:29;;;;:::i;:::-;13043:15;:47;13039:165;;;13118:19;;;;;;;;13127:3;13118:19;;;;13132:1;13118:19;;;;13135:1;13118:19;;::::0;13107:8:::1;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;13039:165;;;13180:12;13169:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;13039:165;13216:20;13239:13;;13216:36;;13265:21;13303:1;13289:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13265:40;;13334:4;13316;13321:1;13316:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13360:4;;;;;;;;;;;13350;13355:1;13350:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;13377:6;;;;;;;;;;;:57;;;13449:12;13476:1;13492:4;13519;13539:15;13377:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13578:19;13600:21;13578:43;;13632:26;13698:3;13676:8;:18;;;13662:11;:32;;;;:::i;:::-;13661:40;;;;:::i;:::-;13632:69;;13712:28;13782:3;13758:8;:20;;;13744:11;:34;;;;:::i;:::-;13743:42;;;;:::i;:::-;13712:73;;13796:25;13859:20;13838:18;13824:11;:32;;;;:::i;:::-;:55;;;;:::i;:::-;13796:83;;13893:15;13921:20;;;;;;;;;;;13913:34;;13955:18;13913:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13892:86;;;14013:22;;;;;;;;;;;14005:36;;14049:20;14005:69;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13989:85;;;;;14109:19;;;;;;;;;;;14101:33;;14142:17;14101:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14085:79;;;;;14198:5;14185:18;;13028:1185;;;;;;;5262:5:::0;5253:6;;:14;;;;;;;;;;;;;;;;;;12990:1223::o;11522:582::-;11608:7;11628:17;11648:1;11628:21;;11678:4;;;;;;;;;;;11665:17;;:9;:17;;;11662:243;;11732:3;11721:7;;11712:6;:16;;;;:::i;:::-;11711:24;;;;:::i;:::-;11699:36;;11662:243;;;11766:4;;;;;;;;;;;11756:14;;:6;:14;;;11753:152;;11819:3;11809:6;;11800;:15;;;;:::i;:::-;11799:23;;;;:::i;:::-;11787:35;;11753:152;;;11890:3;11875:11;;11866:6;:20;;;;:::i;:::-;11865:28;;;;:::i;:::-;11853:40;;11753:152;11662:243;11945:9;11917;:24;11935:4;11917:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11995:4;11970:42;;11979:6;11970:42;;;12002:9;11970:42;;;;;;:::i;:::-;;;;;;;;12023:20;12055:9;12046:6;:18;;;;:::i;:::-;12023:41;;12084:12;12077:19;;;;11522:582;;;;;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:77::-;728:7;757:5;746:16;;691:77;;;:::o;774:122::-;847:24;865:5;847:24;:::i;:::-;840:5;837:35;827:63;;886:1;883;876:12;827:63;774:122;:::o;902:139::-;948:5;986:6;973:20;964:29;;1002:33;1029:5;1002:33;:::i;:::-;902:139;;;;:::o;1047:468::-;1112:6;1120;1169:2;1157:9;1148:7;1144:23;1140:32;1137:119;;;1175:79;;:::i;:::-;1137:119;1295:1;1320:50;1362:7;1353:6;1342:9;1338:22;1320:50;:::i;:::-;1310:60;;1266:114;1419:2;1445:53;1490:7;1481:6;1470:9;1466:22;1445:53;:::i;:::-;1435:63;;1390:118;1047:468;;;;;:::o;1521:118::-;1608:24;1626:5;1608:24;:::i;:::-;1603:3;1596:37;1521:118;;:::o;1645:222::-;1738:4;1776:2;1765:9;1761:18;1753:26;;1789:71;1857:1;1846:9;1842:17;1833:6;1789:71;:::i;:::-;1645:222;;;;:::o;1873:99::-;1925:6;1959:5;1953:12;1943:22;;1873:99;;;:::o;1978:169::-;2062:11;2096:6;2091:3;2084:19;2136:4;2131:3;2127:14;2112:29;;1978:169;;;;:::o;2153:139::-;2242:6;2237:3;2232;2226:23;2283:1;2274:6;2269:3;2265:16;2258:27;2153:139;;;:::o;2298:102::-;2339:6;2390:2;2386:7;2381:2;2374:5;2370:14;2366:28;2356:38;;2298:102;;;:::o;2406:377::-;2494:3;2522:39;2555:5;2522:39;:::i;:::-;2577:71;2641:6;2636:3;2577:71;:::i;:::-;2570:78;;2657:65;2715:6;2710:3;2703:4;2696:5;2692:16;2657:65;:::i;:::-;2747:29;2769:6;2747:29;:::i;:::-;2742:3;2738:39;2731:46;;2498:285;2406:377;;;;:::o;2789:313::-;2902:4;2940:2;2929:9;2925:18;2917:26;;2989:9;2983:4;2979:20;2975:1;2964:9;2960:17;2953:47;3017:78;3090:4;3081:6;3017:78;:::i;:::-;3009:86;;2789:313;;;;:::o;3108:109::-;3189:21;3204:5;3189:21;:::i;:::-;3184:3;3177:34;3108:109;;:::o;3223:210::-;3310:4;3348:2;3337:9;3333:18;3325:26;;3361:65;3423:1;3412:9;3408:17;3399:6;3361:65;:::i;:::-;3223:210;;;;:::o;3439:126::-;3476:7;3516:42;3509:5;3505:54;3494:65;;3439:126;;;:::o;3571:96::-;3608:7;3637:24;3655:5;3637:24;:::i;:::-;3626:35;;3571:96;;;:::o;3673:122::-;3746:24;3764:5;3746:24;:::i;:::-;3739:5;3736:35;3726:63;;3785:1;3782;3775:12;3726:63;3673:122;:::o;3801:139::-;3847:5;3885:6;3872:20;3863:29;;3901:33;3928:5;3901:33;:::i;:::-;3801:139;;;;:::o;3946:474::-;4014:6;4022;4071:2;4059:9;4050:7;4046:23;4042:32;4039:119;;;4077:79;;:::i;:::-;4039:119;4197:1;4222:53;4267:7;4258:6;4247:9;4243:22;4222:53;:::i;:::-;4212:63;;4168:117;4324:2;4350:53;4395:7;4386:6;4375:9;4371:22;4350:53;:::i;:::-;4340:63;;4295:118;3946:474;;;;;:::o;4426:619::-;4503:6;4511;4519;4568:2;4556:9;4547:7;4543:23;4539:32;4536:119;;;4574:79;;:::i;:::-;4536:119;4694:1;4719:53;4764:7;4755:6;4744:9;4740:22;4719:53;:::i;:::-;4709:63;;4665:117;4821:2;4847:53;4892:7;4883:6;4872:9;4868:22;4847:53;:::i;:::-;4837:63;;4792:118;4949:2;4975:53;5020:7;5011:6;5000:9;4996:22;4975:53;:::i;:::-;4965:63;;4920:118;4426:619;;;;;:::o;5051:442::-;5200:4;5238:2;5227:9;5223:18;5215:26;;5251:71;5319:1;5308:9;5304:17;5295:6;5251:71;:::i;:::-;5332:72;5400:2;5389:9;5385:18;5376:6;5332:72;:::i;:::-;5414;5482:2;5471:9;5467:18;5458:6;5414:72;:::i;:::-;5051:442;;;;;;:::o;5499:86::-;5534:7;5574:4;5567:5;5563:16;5552:27;;5499:86;;;:::o;5591:112::-;5674:22;5690:5;5674:22;:::i;:::-;5669:3;5662:35;5591:112;;:::o;5709:214::-;5798:4;5836:2;5825:9;5821:18;5813:26;;5849:67;5913:1;5902:9;5898:17;5889:6;5849:67;:::i;:::-;5709:214;;;;:::o;5929:329::-;5988:6;6037:2;6025:9;6016:7;6012:23;6008:32;6005:119;;;6043:79;;:::i;:::-;6005:119;6163:1;6188:53;6233:7;6224:6;6213:9;6209:22;6188:53;:::i;:::-;6178:63;;6134:117;5929:329;;;;:::o;6264:474::-;6332:6;6340;6389:2;6377:9;6368:7;6364:23;6360:32;6357:119;;;6395:79;;:::i;:::-;6357:119;6515:1;6540:53;6585:7;6576:6;6565:9;6561:22;6540:53;:::i;:::-;6530:63;;6486:117;6642:2;6668:53;6713:7;6704:6;6693:9;6689:22;6668:53;:::i;:::-;6658:63;;6613:118;6264:474;;;;;:::o;6744:329::-;6803:6;6852:2;6840:9;6831:7;6827:23;6823:32;6820:119;;;6858:79;;:::i;:::-;6820:119;6978:1;7003:53;7048:7;7039:6;7028:9;7024:22;7003:53;:::i;:::-;6993:63;;6949:117;6744:329;;;;:::o;7079:118::-;7166:24;7184:5;7166:24;:::i;:::-;7161:3;7154:37;7079:118;;:::o;7203:222::-;7296:4;7334:2;7323:9;7319:18;7311:26;;7347:71;7415:1;7404:9;7400:17;7391:6;7347:71;:::i;:::-;7203:222;;;;:::o;7431:468::-;7496:6;7504;7553:2;7541:9;7532:7;7528:23;7524:32;7521:119;;;7559:79;;:::i;:::-;7521:119;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:50;7874:7;7865:6;7854:9;7850:22;7832:50;:::i;:::-;7822:60;;7777:115;7431:468;;;;;:::o;7905:619::-;7982:6;7990;7998;8047:2;8035:9;8026:7;8022:23;8018:32;8015:119;;;8053:79;;:::i;:::-;8015:119;8173:1;8198:53;8243:7;8234:6;8223:9;8219:22;8198:53;:::i;:::-;8188:63;;8144:117;8300:2;8326:53;8371:7;8362:6;8351:9;8347:22;8326:53;:::i;:::-;8316:63;;8271:118;8428:2;8454:53;8499:7;8490:6;8479:9;8475:22;8454:53;:::i;:::-;8444:63;;8399:118;7905:619;;;;;:::o;8530:474::-;8598:6;8606;8655:2;8643:9;8634:7;8630:23;8626:32;8623:119;;;8661:79;;:::i;:::-;8623:119;8781:1;8806:53;8851:7;8842:6;8831:9;8827:22;8806:53;:::i;:::-;8796:63;;8752:117;8908:2;8934:53;8979:7;8970:6;8959:9;8955:22;8934:53;:::i;:::-;8924:63;;8879:118;8530:474;;;;;:::o;9010:60::-;9038:3;9059:5;9052:12;;9010:60;;;:::o;9076:142::-;9126:9;9159:53;9177:34;9186:24;9204:5;9186:24;:::i;:::-;9177:34;:::i;:::-;9159:53;:::i;:::-;9146:66;;9076:142;;;:::o;9224:126::-;9274:9;9307:37;9338:5;9307:37;:::i;:::-;9294:50;;9224:126;;;:::o;9356:144::-;9424:9;9457:37;9488:5;9457:37;:::i;:::-;9444:50;;9356:144;;;:::o;9506:167::-;9611:55;9660:5;9611:55;:::i;:::-;9606:3;9599:68;9506:167;;:::o;9679:258::-;9790:4;9828:2;9817:9;9813:18;9805:26;;9841:89;9927:1;9916:9;9912:17;9903:6;9841:89;:::i;:::-;9679:258;;;;:::o;9943:182::-;10083:34;10079:1;10071:6;10067:14;10060:58;9943:182;:::o;10131:366::-;10273:3;10294:67;10358:2;10353:3;10294:67;:::i;:::-;10287:74;;10370:93;10459:3;10370:93;:::i;:::-;10488:2;10483:3;10479:12;10472:19;;10131:366;;;:::o;10503:419::-;10669:4;10707:2;10696:9;10692:18;10684:26;;10756:9;10750:4;10746:20;10742:1;10731:9;10727:17;10720:47;10784:131;10910:4;10784:131;:::i;:::-;10776:139;;10503:419;;;:::o;10928:242::-;11068:34;11064:1;11056:6;11052:14;11045:58;11137:25;11132:2;11124:6;11120:15;11113:50;10928:242;:::o;11176:366::-;11318:3;11339:67;11403:2;11398:3;11339:67;:::i;:::-;11332:74;;11415:93;11504:3;11415:93;:::i;:::-;11533:2;11528:3;11524:12;11517:19;;11176:366;;;:::o;11548:419::-;11714:4;11752:2;11741:9;11737:18;11729:26;;11801:9;11795:4;11791:20;11787:1;11776:9;11772:17;11765:47;11829:131;11955:4;11829:131;:::i;:::-;11821:139;;11548:419;;;:::o;11973:180::-;12021:77;12018:1;12011:88;12118:4;12115:1;12108:15;12142:4;12139:1;12132:15;12159:102;12201:8;12248:5;12245:1;12241:13;12220:34;;12159:102;;;:::o;12267:848::-;12328:5;12335:4;12359:6;12350:15;;12383:5;12374:14;;12397:712;12418:1;12408:8;12405:15;12397:712;;;12513:4;12508:3;12504:14;12498:4;12495:24;12492:50;;;12522:18;;:::i;:::-;12492:50;12572:1;12562:8;12558:16;12555:451;;;12987:4;12980:5;12976:16;12967:25;;12555:451;13037:4;13031;13027:15;13019:23;;13067:32;13090:8;13067:32;:::i;:::-;13055:44;;12397:712;;;12267:848;;;;;;;:::o;13121:1073::-;13175:5;13366:8;13356:40;;13387:1;13378:10;;13389:5;;13356:40;13415:4;13405:36;;13432:1;13423:10;;13434:5;;13405:36;13501:4;13549:1;13544:27;;;;13585:1;13580:191;;;;13494:277;;13544:27;13562:1;13553:10;;13564:5;;;13580:191;13625:3;13615:8;13612:17;13609:43;;;13632:18;;:::i;:::-;13609:43;13681:8;13678:1;13674:16;13665:25;;13716:3;13709:5;13706:14;13703:40;;;13723:18;;:::i;:::-;13703:40;13756:5;;;13494:277;;13880:2;13870:8;13867:16;13861:3;13855:4;13852:13;13848:36;13830:2;13820:8;13817:16;13812:2;13806:4;13803:12;13799:35;13783:111;13780:246;;;13936:8;13930:4;13926:19;13917:28;;13971:3;13964:5;13961:14;13958:40;;;13978:18;;:::i;:::-;13958:40;14011:5;;13780:246;14051:42;14089:3;14079:8;14073:4;14070:1;14051:42;:::i;:::-;14036:57;;;;14125:4;14120:3;14116:14;14109:5;14106:25;14103:51;;;14134:18;;:::i;:::-;14103:51;14183:4;14176:5;14172:16;14163:25;;13121:1073;;;;;;:::o;14200:281::-;14258:5;14282:23;14300:4;14282:23;:::i;:::-;14274:31;;14326:25;14342:8;14326:25;:::i;:::-;14314:37;;14370:104;14407:66;14397:8;14391:4;14370:104;:::i;:::-;14361:113;;14200:281;;;;:::o;14487:410::-;14527:7;14550:20;14568:1;14550:20;:::i;:::-;14545:25;;14584:20;14602:1;14584:20;:::i;:::-;14579:25;;14639:1;14636;14632:9;14661:30;14679:11;14661:30;:::i;:::-;14650:41;;14840:1;14831:7;14827:15;14824:1;14821:22;14801:1;14794:9;14774:83;14751:139;;14870:18;;:::i;:::-;14751:139;14535:362;14487:410;;;;:::o;14903:227::-;15043:34;15039:1;15031:6;15027:14;15020:58;15112:10;15107:2;15099:6;15095:15;15088:35;14903:227;:::o;15136:366::-;15278:3;15299:67;15363:2;15358:3;15299:67;:::i;:::-;15292:74;;15375:93;15464:3;15375:93;:::i;:::-;15493:2;15488:3;15484:12;15477:19;;15136:366;;;:::o;15508:419::-;15674:4;15712:2;15701:9;15697:18;15689:26;;15761:9;15755:4;15751:20;15747:1;15736:9;15732:17;15725:47;15789:131;15915:4;15789:131;:::i;:::-;15781:139;;15508:419;;;:::o;15933:174::-;16073:26;16069:1;16061:6;16057:14;16050:50;15933:174;:::o;16113:366::-;16255:3;16276:67;16340:2;16335:3;16276:67;:::i;:::-;16269:74;;16352:93;16441:3;16352:93;:::i;:::-;16470:2;16465:3;16461:12;16454:19;;16113:366;;;:::o;16485:419::-;16651:4;16689:2;16678:9;16674:18;16666:26;;16738:9;16732:4;16728:20;16724:1;16713:9;16709:17;16702:47;16766:131;16892:4;16766:131;:::i;:::-;16758:139;;16485:419;;;:::o;16910:194::-;16950:4;16970:20;16988:1;16970:20;:::i;:::-;16965:25;;17004:20;17022:1;17004:20;:::i;:::-;16999:25;;17048:1;17045;17041:9;17033:17;;17072:1;17066:4;17063:11;17060:37;;;17077:18;;:::i;:::-;17060:37;16910:194;;;;:::o;17110:223::-;17250:34;17246:1;17238:6;17234:14;17227:58;17319:6;17314:2;17306:6;17302:15;17295:31;17110:223;:::o;17339:366::-;17481:3;17502:67;17566:2;17561:3;17502:67;:::i;:::-;17495:74;;17578:93;17667:3;17578:93;:::i;:::-;17696:2;17691:3;17687:12;17680:19;;17339:366;;;:::o;17711:419::-;17877:4;17915:2;17904:9;17900:18;17892:26;;17964:9;17958:4;17954:20;17950:1;17939:9;17935:17;17928:47;17992:131;18118:4;17992:131;:::i;:::-;17984:139;;17711:419;;;:::o;18136:229::-;18276:34;18272:1;18264:6;18260:14;18253:58;18345:12;18340:2;18332:6;18328:15;18321:37;18136:229;:::o;18371:366::-;18513:3;18534:67;18598:2;18593:3;18534:67;:::i;:::-;18527:74;;18610:93;18699:3;18610:93;:::i;:::-;18728:2;18723:3;18719:12;18712:19;;18371:366;;;:::o;18743:419::-;18909:4;18947:2;18936:9;18932:18;18924:26;;18996:9;18990:4;18986:20;18982:1;18971:9;18967:17;18960:47;19024:131;19150:4;19024:131;:::i;:::-;19016:139;;18743:419;;;:::o;19168:176::-;19308:28;19304:1;19296:6;19292:14;19285:52;19168:176;:::o;19350:366::-;19492:3;19513:67;19577:2;19572:3;19513:67;:::i;:::-;19506:74;;19589:93;19678:3;19589:93;:::i;:::-;19707:2;19702:3;19698:12;19691:19;;19350:366;;;:::o;19722:419::-;19888:4;19926:2;19915:9;19911:18;19903:26;;19975:9;19969:4;19965:20;19961:1;19950:9;19946:17;19939:47;20003:131;20129:4;20003:131;:::i;:::-;19995:139;;19722:419;;;:::o;20147:143::-;20204:5;20235:6;20229:13;20220:22;;20251:33;20278:5;20251:33;:::i;:::-;20147:143;;;;:::o;20296:351::-;20366:6;20415:2;20403:9;20394:7;20390:23;20386:32;20383:119;;;20421:79;;:::i;:::-;20383:119;20541:1;20566:64;20622:7;20613:6;20602:9;20598:22;20566:64;:::i;:::-;20556:74;;20512:128;20296:351;;;;:::o;20653:332::-;20774:4;20812:2;20801:9;20797:18;20789:26;;20825:71;20893:1;20882:9;20878:17;20869:6;20825:71;:::i;:::-;20906:72;20974:2;20963:9;20959:18;20950:6;20906:72;:::i;:::-;20653:332;;;;;:::o;20991:137::-;21045:5;21076:6;21070:13;21061:22;;21092:30;21116:5;21092:30;:::i;:::-;20991:137;;;;:::o;21134:345::-;21201:6;21250:2;21238:9;21229:7;21225:23;21221:32;21218:119;;;21256:79;;:::i;:::-;21218:119;21376:1;21401:61;21454:7;21445:6;21434:9;21430:22;21401:61;:::i;:::-;21391:71;;21347:125;21134:345;;;;:::o;21485:176::-;21625:28;21621:1;21613:6;21609:14;21602:52;21485:176;:::o;21667:366::-;21809:3;21830:67;21894:2;21889:3;21830:67;:::i;:::-;21823:74;;21906:93;21995:3;21906:93;:::i;:::-;22024:2;22019:3;22015:12;22008:19;;21667:366;;;:::o;22039:419::-;22205:4;22243:2;22232:9;22228:18;22220:26;;22292:9;22286:4;22282:20;22278:1;22267:9;22263:17;22256:47;22320:131;22446:4;22320:131;:::i;:::-;22312:139;;22039:419;;;:::o;22464:222::-;22604:34;22600:1;22592:6;22588:14;22581:58;22673:5;22668:2;22660:6;22656:15;22649:30;22464:222;:::o;22692:366::-;22834:3;22855:67;22919:2;22914:3;22855:67;:::i;:::-;22848:74;;22931:93;23020:3;22931:93;:::i;:::-;23049:2;23044:3;23040:12;23033:19;;22692:366;;;:::o;23064:419::-;23230:4;23268:2;23257:9;23253:18;23245:26;;23317:9;23311:4;23307:20;23303:1;23292:9;23288:17;23281:47;23345:131;23471:4;23345:131;:::i;:::-;23337:139;;23064:419;;;:::o;23489:182::-;23629:34;23625:1;23617:6;23613:14;23606:58;23489:182;:::o;23677:366::-;23819:3;23840:67;23904:2;23899:3;23840:67;:::i;:::-;23833:74;;23916:93;24005:3;23916:93;:::i;:::-;24034:2;24029:3;24025:12;24018:19;;23677:366;;;:::o;24049:419::-;24215:4;24253:2;24242:9;24238:18;24230:26;;24302:9;24296:4;24292:20;24288:1;24277:9;24273:17;24266:47;24330:131;24456:4;24330:131;:::i;:::-;24322:139;;24049:419;;;:::o;24474:225::-;24614:34;24610:1;24602:6;24598:14;24591:58;24683:8;24678:2;24670:6;24666:15;24659:33;24474:225;:::o;24705:366::-;24847:3;24868:67;24932:2;24927:3;24868:67;:::i;:::-;24861:74;;24944:93;25033:3;24944:93;:::i;:::-;25062:2;25057:3;25053:12;25046:19;;24705:366;;;:::o;25077:419::-;25243:4;25281:2;25270:9;25266:18;25258:26;;25330:9;25324:4;25320:20;25316:1;25305:9;25301:17;25294:47;25358:131;25484:4;25358:131;:::i;:::-;25350:139;;25077:419;;;:::o;25502:170::-;25642:22;25638:1;25630:6;25626:14;25619:46;25502:170;:::o;25678:366::-;25820:3;25841:67;25905:2;25900:3;25841:67;:::i;:::-;25834:74;;25917:93;26006:3;25917:93;:::i;:::-;26035:2;26030:3;26026:12;26019:19;;25678:366;;;:::o;26050:419::-;26216:4;26254:2;26243:9;26239:18;26231:26;;26303:9;26297:4;26293:20;26289:1;26278:9;26274:17;26267:47;26331:131;26457:4;26331:131;:::i;:::-;26323:139;;26050:419;;;:::o;26475:191::-;26515:3;26534:20;26552:1;26534:20;:::i;:::-;26529:25;;26568:20;26586:1;26568:20;:::i;:::-;26563:25;;26611:1;26608;26604:9;26597:16;;26632:3;26629:1;26626:10;26623:36;;;26639:18;;:::i;:::-;26623:36;26475:191;;;;:::o;26672:223::-;26812:34;26808:1;26800:6;26796:14;26789:58;26881:6;26876:2;26868:6;26864:15;26857:31;26672:223;:::o;26901:366::-;27043:3;27064:67;27128:2;27123:3;27064:67;:::i;:::-;27057:74;;27140:93;27229:3;27140:93;:::i;:::-;27258:2;27253:3;27249:12;27242:19;;26901:366;;;:::o;27273:419::-;27439:4;27477:2;27466:9;27462:18;27454:26;;27526:9;27520:4;27516:20;27512:1;27501:9;27497:17;27490:47;27554:131;27680:4;27554:131;:::i;:::-;27546:139;;27273:419;;;:::o;27698:225::-;27838:34;27834:1;27826:6;27822:14;27815:58;27907:8;27902:2;27894:6;27890:15;27883:33;27698:225;:::o;27929:366::-;28071:3;28092:67;28156:2;28151:3;28092:67;:::i;:::-;28085:74;;28168:93;28257:3;28168:93;:::i;:::-;28286:2;28281:3;28277:12;28270:19;;27929:366;;;:::o;28301:419::-;28467:4;28505:2;28494:9;28490:18;28482:26;;28554:9;28548:4;28544:20;28540:1;28529:9;28525:17;28518:47;28582:131;28708:4;28582:131;:::i;:::-;28574:139;;28301:419;;;:::o;28726:167::-;28866:19;28862:1;28854:6;28850:14;28843:43;28726:167;:::o;28899:366::-;29041:3;29062:67;29126:2;29121:3;29062:67;:::i;:::-;29055:74;;29138:93;29227:3;29138:93;:::i;:::-;29256:2;29251:3;29247:12;29240:19;;28899:366;;;:::o;29271:419::-;29437:4;29475:2;29464:9;29460:18;29452:26;;29524:9;29518:4;29514:20;29510:1;29499:9;29495:17;29488:47;29552:131;29678:4;29552:131;:::i;:::-;29544:139;;29271:419;;;:::o;29696:180::-;29744:77;29741:1;29734:88;29841:4;29838:1;29831:15;29865:4;29862:1;29855:15;29882:180;29930:77;29927:1;29920:88;30027:4;30024:1;30017:15;30051:4;30048:1;30041:15;30068:85;30113:7;30142:5;30131:16;;30068:85;;;:::o;30159:158::-;30217:9;30250:61;30268:42;30277:32;30303:5;30277:32;:::i;:::-;30268:42;:::i;:::-;30250:61;:::i;:::-;30237:74;;30159:158;;;:::o;30323:147::-;30418:45;30457:5;30418:45;:::i;:::-;30413:3;30406:58;30323:147;;:::o;30476:114::-;30543:6;30577:5;30571:12;30561:22;;30476:114;;;:::o;30596:184::-;30695:11;30729:6;30724:3;30717:19;30769:4;30764:3;30760:14;30745:29;;30596:184;;;;:::o;30786:132::-;30853:4;30876:3;30868:11;;30906:4;30901:3;30897:14;30889:22;;30786:132;;;:::o;30924:108::-;31001:24;31019:5;31001:24;:::i;:::-;30996:3;30989:37;30924:108;;:::o;31038:179::-;31107:10;31128:46;31170:3;31162:6;31128:46;:::i;:::-;31206:4;31201:3;31197:14;31183:28;;31038:179;;;;:::o;31223:113::-;31293:4;31325;31320:3;31316:14;31308:22;;31223:113;;;:::o;31372:732::-;31491:3;31520:54;31568:5;31520:54;:::i;:::-;31590:86;31669:6;31664:3;31590:86;:::i;:::-;31583:93;;31700:56;31750:5;31700:56;:::i;:::-;31779:7;31810:1;31795:284;31820:6;31817:1;31814:13;31795:284;;;31896:6;31890:13;31923:63;31982:3;31967:13;31923:63;:::i;:::-;31916:70;;32009:60;32062:6;32009:60;:::i;:::-;31999:70;;31855:224;31842:1;31839;31835:9;31830:14;;31795:284;;;31799:14;32095:3;32088:10;;31496:608;;;31372:732;;;;:::o;32110:831::-;32373:4;32411:3;32400:9;32396:19;32388:27;;32425:71;32493:1;32482:9;32478:17;32469:6;32425:71;:::i;:::-;32506:80;32582:2;32571:9;32567:18;32558:6;32506:80;:::i;:::-;32633:9;32627:4;32623:20;32618:2;32607:9;32603:18;32596:48;32661:108;32764:4;32755:6;32661:108;:::i;:::-;32653:116;;32779:72;32847:2;32836:9;32832:18;32823:6;32779:72;:::i;:::-;32861:73;32929:3;32918:9;32914:19;32905:6;32861:73;:::i;:::-;32110:831;;;;;;;;:::o;32947:180::-;32995:77;32992:1;32985:88;33092:4;33089:1;33082:15;33116:4;33113:1;33106:15;33133:185;33173:1;33190:20;33208:1;33190:20;:::i;:::-;33185:25;;33224:20;33242:1;33224:20;:::i;:::-;33219:25;;33263:1;33253:35;;33268:18;;:::i;:::-;33253:35;33310:1;33307;33303:9;33298:14;;33133:185;;;;:::o;33324:147::-;33425:11;33462:3;33447:18;;33324:147;;;;:::o;33477:114::-;;:::o;33597:398::-;33756:3;33777:83;33858:1;33853:3;33777:83;:::i;:::-;33770:90;;33869:93;33958:3;33869:93;:::i;:::-;33987:1;33982:3;33978:11;33971:18;;33597:398;;;:::o;34001:379::-;34185:3;34207:147;34350:3;34207:147;:::i;:::-;34200:154;;34371:3;34364:10;;34001:379;;;:::o

Swarm Source

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