ETH Price: $2,360.65 (+0.87%)

Token

SPORTSMANIA (SPORTSMANIA)
 

Overview

Max Total Supply

1,000,000 SPORTSMANIA

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
28,200 SPORTSMANIA

Value
$0.00
0xff82598087e2b56d149f3290668d72f916f37978
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:
SPORTSMANIA

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-13
*/

/**


*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

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

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

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

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

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

interface IERC20 {
    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 Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

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

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

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

contract SPORTSMANIA is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "SPORTSMANIA";
    string constant _symbol = "SPORTSMANIA";
    uint8 constant _decimals = 4;

    uint256 _totalSupply =  1000000 * (10 ** _decimals);

    uint256 public _maxTxAmount = 30000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 30000 * (10 ** _decimals);

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

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

    uint256 public liquidityFee     = 2;
    uint256 public marketingFee     = 2;
    uint256 public projectFee       = 2;
    uint256 public devandcharityFee = 0;
    uint256 public utilityFee       = 0;
    uint256 public totalFee         = devandcharityFee + marketingFee + liquidityFee + projectFee + utilityFee;
    uint256 public feeDenominator   = 100;

    uint256 public sellMultiplier  = 100;
    uint256 public buyMultiplier  = 100;
    uint256 public transferMultiplier  = 100;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private projectFeeReceiver;
    address private devandcharityFeeReceiver;
    address private utilityFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 250;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        projectFeeReceiver = msg.sender;
        devandcharityFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender; 

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

    receive() external payable { }

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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

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

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

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

        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || 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 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(utilityTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[utilityFeeReceiver] = _balances[utilityFeeReceiver].add(utilityTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(utilityTokens > 0){
            emit Transfer(sender, utilityFeeReceiver, utilityTokens);    
        }

        return amount.sub(feeAmount);
    }

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

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

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHdevandcharityFee = amountETH.mul(devandcharityFee).div(totalETHFee);
        uint256 amountETHproject = amountETH.mul(projectFee).div(totalETHFee).div(10);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, gas: 30000}("");
        (tmpSuccess,) = payable(devandcharityFeeReceiver).call{value: amountETHdevandcharityFee, gas: 30000}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    // Public function starts

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        require(maxWallPercent_base1000 >= 10, "Max Wallet cannot be lower than 1% total supply.");
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) public {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function validate(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IERC20(tokenAddress).transfer(marketingFeeReceiver, tokens);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner{
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _projectFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        projectFee = _projectFee;
        totalFee = _liquidityFee.add(_marketingFee).add(_projectFee);
        require(totalFee < 10);
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _utilityFeeReceiver, address _devandcharityFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        projectFeeReceiver = _projectFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        devandcharityFeeReceiver = _devandcharityFeeReceiver;
    }

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

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

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

    function Approve(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devandcharityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_devandcharityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_projectFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee919062000984565b620f4240620000fe9190620009d5565b6005556004600a62000111919062000984565b617530620001209190620009d5565b6006556004600a62000133919062000984565b617530620001429190620009d5565b6007556002600c556002600d556002600e556000600f556000601055601054600e54600c54600d54600f5462000179919062000a20565b62000185919062000a20565b62000191919062000a20565b6200019d919062000a20565b6011556064601255606460135560646014556064601555601e601b556064601c556001601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff02191690831515021790555060fa60055462000205919062000a8a565b601f553480156200021557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000372573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000398919062000b2c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003f692919062000b6f565b6020604051808303816000875af115801562000416573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043c919062000b2c565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007dc919062000bad565b60405180910390a362000bca565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008785780860481111562000850576200084f620007ea565b5b6001851615620008605780820291505b8081029050620008708562000819565b945062000830565b94509492505050565b60008262000893576001905062000966565b81620008a3576000905062000966565b8160018114620008bc5760028114620008c757620008fd565b600191505062000966565b60ff841115620008dc57620008db620007ea565b5b8360020a915084821115620008f657620008f5620007ea565b5b5062000966565b5060208310610133831016604e8410600b8410161715620009375782820a905083811115620009315762000930620007ea565b5b62000966565b62000946848484600162000826565b9250905081840481111562000960576200095f620007ea565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000991826200096d565b91506200099e8362000977565b9250620009cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000881565b905092915050565b6000620009e2826200096d565b9150620009ef836200096d565b9250828202620009ff816200096d565b9150828204841483151762000a195762000a18620007ea565b5b5092915050565b600062000a2d826200096d565b915062000a3a836200096d565b925082820190508082111562000a555762000a54620007ea565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a97826200096d565b915062000aa4836200096d565b92508262000ab75762000ab662000a5b565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000af48262000ac7565b9050919050565b62000b068162000ae7565b811462000b1257600080fd5b50565b60008151905062000b268162000afb565b92915050565b60006020828403121562000b455762000b4462000ac2565b5b600062000b558482850162000b15565b91505092915050565b62000b698162000ae7565b82525050565b600060408201905062000b86600083018562000b5e565b62000b95602083018462000b5e565b9392505050565b62000ba7816200096d565b82525050565b600060208201905062000bc4600083018462000b9c565b92915050565b6146a78062000bda6000396000f3fe60806040526004361061028b5760003560e01c80636ce46bc31161015a578063bd9ab537116100c1578063df20fd491161007a578063df20fd4914610a18578063f2fde38b14610a41578063f84ba65d14610a6a578063f887ea4014610a93578063fed0d2a114610abe578063ffb54a9914610ae957610292565b8063bd9ab537146108f6578063cec10c111461091f578063d51ed1c814610948578063d58f2f2714610985578063dccd8bd2146109b0578063dd62ed3e146109db57610292565b806395d89b411161011357806395d89b41146107d257806398118cb4146107fd57806398e0ae14146108285780639c75dd3514610865578063a8aa1b311461088e578063a9059cbb146108b957610292565b80636ce46bc3146106c05780636ddd1713146106e957806370a082311461071457806378109e54146107515780637d1db4a51461077c578063893d20e8146107a757610292565b8063201e7991116101fe578063313ce567116101b7578063313ce567146105b05780634be9d869146105db578063571ac8b0146106045780635921652f14610641578063658d4b7f1461066c5780636b67c4df1461069557610292565b8063201e79911461048c57806323b872dd146104b557806323eeb2b0146104f25780632b112e491461051d5780632f54bf6e146105485780633121c7c01461058557610292565b80631161ae39116102505780631161ae391461037c57806317deb770146103b9578063180b0d7e146103e257806318160ddd1461040d57806318abb635146104385780631df4ccfc1461046157610292565b8062bff446146102975780630445b667146102c057806306fdde03146102eb57806309302dc614610316578063095ea7b31461033f57610292565b3661029257005b600080fd5b3480156102a357600080fd5b506102be60048036038101906102b99190613460565b610b14565b005b3480156102cc57600080fd5b506102d5610c46565b6040516102e291906134d9565b60405180910390f35b3480156102f757600080fd5b50610300610c4c565b60405161030d9190613584565b60405180910390f35b34801561032257600080fd5b5061033d600480360381019061033891906135d2565b610c89565b005b34801561034b57600080fd5b506103666004803603810190610361919061365d565b610d39565b60405161037391906136ac565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906136c7565b610e2b565b6040516103b091906136ac565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db919061375d565b610e40565b005b3480156103ee57600080fd5b506103f7611022565b60405161040491906134d9565b60405180910390f35b34801561041957600080fd5b50610422611028565b60405161042f91906134d9565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a91906137f2565b611032565b005b34801561046d57600080fd5b506104766111c6565b60405161048391906134d9565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906136c7565b6111cc565b005b3480156104c157600080fd5b506104dc60048036038101906104d7919061386d565b611226565b6040516104e991906136ac565b60405180910390f35b3480156104fe57600080fd5b50610507611426565b60405161051491906134d9565b60405180910390f35b34801561052957600080fd5b5061053261142c565b60405161053f91906134d9565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a91906138c0565b6114ae565b60405161057c91906136ac565b60405180910390f35b34801561059157600080fd5b5061059a611507565b6040516105a791906134d9565b60405180910390f35b3480156105bc57600080fd5b506105c561150d565b6040516105d29190613909565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613460565b611516565b005b34801561061057600080fd5b5061062b600480360381019061062691906138c0565b611648565b60405161063891906136ac565b60405180910390f35b34801561064d57600080fd5b5061065661167b565b60405161066391906134d9565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190613924565b611681565b005b3480156106a157600080fd5b506106aa611724565b6040516106b791906134d9565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190613964565b61172a565b005b3480156106f557600080fd5b506106fe61178c565b60405161070b91906136ac565b60405180910390f35b34801561072057600080fd5b5061073b600480360381019061073691906138c0565b61179f565b60405161074891906134d9565b60405180910390f35b34801561075d57600080fd5b506107666117e8565b60405161077391906134d9565b60405180910390f35b34801561078857600080fd5b506107916117ee565b60405161079e91906134d9565b60405180910390f35b3480156107b357600080fd5b506107bc6117f4565b6040516107c991906139c6565b60405180910390f35b3480156107de57600080fd5b506107e761181d565b6040516107f49190613584565b60405180910390f35b34801561080957600080fd5b5061081261185a565b60405161081f91906134d9565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a919061365d565b611860565b60405161085c91906136ac565b60405180910390f35b34801561087157600080fd5b5061088c600480360381019061088791906135d2565b61190a565b005b34801561089a57600080fd5b506108a3611993565b6040516108b091906139c6565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061365d565b6119b9565b6040516108ed91906136ac565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906135d2565b6119ce565b005b34801561092b57600080fd5b5061094660048036038101906109419190613964565b611a7e565b005b34801561095457600080fd5b5061096f600480360381019061096a91906135d2565b611b1a565b60405161097c91906134d9565b60405180910390f35b34801561099157600080fd5b5061099a611b8c565b6040516109a791906134d9565b60405180910390f35b3480156109bc57600080fd5b506109c5611b92565b6040516109d291906134d9565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906139e1565b611b98565b604051610a0f91906134d9565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613a21565b611c1f565b005b348015610a4d57600080fd5b50610a686004803603810190610a639190613a9f565b611c8c565b005b348015610a7657600080fd5b50610a916004803603810190610a8c9190613924565b611da5565b005b348015610a9f57600080fd5b50610aa8611e48565b604051610ab59190613b2b565b60405180910390f35b348015610aca57600080fd5b50610ad3611e6e565b604051610ae091906134d9565b60405180910390f35b348015610af557600080fd5b50610afe611e74565b604051610b0b91906136ac565b60405180910390f35b610b1d336114ae565b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390613b92565b60405180910390fd5b6101f58383905010610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90613c24565b60405180910390fd5b60005b83839050811015610c405781600a6000868685818110610bc957610bc8613c44565b5b9050602002016020810190610bde91906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c3990613ca2565b9050610ba6565b50505050565b601f5481565b60606040518060400160405280600b81526020017f53504f5254534d414e4941000000000000000000000000000000000000000000815250905090565b610c92336114ae565b610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890613b92565b60405180910390fd5b600a811015610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613d5c565b60405180910390fd5b6103e881600554610d269190613d7c565b610d309190613ded565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e1991906134d9565b60405180910390a36001905092915050565b600082610e3783611b1a565b11905092915050565b610e49336114ae565b610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90613b92565b60405180910390fd5b6101f58484905010610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690613e90565b60405180910390fd5b818190508484905014610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90613f22565b60405180910390fd5b6000805b85859050811015610f6057838382818110610f3957610f38613c44565b5b9050602002013582610f4b9190613f42565b91508080610f5890613ca2565b915050610f1b565b5080610f6b8761179f565b1015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613fc2565b60405180910390fd5b60005b858590508110156110195761100587878784818110610fd157610fd0613c44565b5b9050602002016020810190610fe691906138c0565b868685818110610ff957610ff8613c44565b5b90506020020135611e87565b50808061101190613ca2565b915050610faf565b50505050505050565b60125481565b6000600554905090565b61103b336114ae565b61107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190613b92565b60405180910390fd5b84601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60115481565b6111d5336114ae565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90613b92565b60405180910390fd5b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461141257611391826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61141d8484846120be565b90509392505050565b600f5481565b60006114a961145c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b61149b61148a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b60055461260090919063ffffffff16565b61260090919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61151f336114ae565b61155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613b92565b60405180910390fd5b6101f583839050106115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613c24565b60405180910390fd5b60005b838390508110156116425781600b60008686858181106115cb576115ca613c44565b5b90506020020160208101906115e091906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061163b90613ca2565b90506115a8565b50505050565b6000611674827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d39565b9050919050565b60155481565b61168a336114ae565b6116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b92565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b611733336114ae565b611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613b92565b60405180910390fd5b816013819055508260148190555080601581905550505050565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f53504f5254534d414e4941000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016118bf929190613fe2565b6020604051808303816000875af11580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190614020565b905092915050565b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846119599190613d7c565b6119639190613ded565b9081150290604051600060405180830381858888f1935050505015801561198e573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119c63384846120be565b905092915050565b6119d7336114ae565b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613b92565b60405180910390fd5b6001811015611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a51906140bf565b60405180910390fd5b6103e881600554611a6b9190613d7c565b611a759190613ded565b60068190555050565b611a87336114ae565b611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613b92565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611b0081611af2848661264a90919063ffffffff16565b61264a90919063ffffffff16565b601181905550600a60115410611b1557600080fd5b505050565b6000611b85611b2761142c565b611b77611b686002611b5a601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b6126a890919063ffffffff16565b856126a890919063ffffffff16565b61272290919063ffffffff16565b9050919050565b600e5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c28336114ae565b611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613b92565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b611c95336114ae565b611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613b92565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d9a9190614100565b60405180910390a150565b611dae336114ae565b611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de490613b92565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b601e60149054906101000a900460ff1681565b6000611f12826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161204791906134d9565b60405180910390a3600190509392505050565b60008383111582906120a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120999190613584565b60405180910390fd5b50600083856120b1919061411b565b9050809150509392505050565b6000602060009054906101000a900460ff16156120e7576120e0848484611e87565b90506125f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e057601e60149054906101000a900460ff166121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d69061419b565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561226657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122c05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231a5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123745750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123d85760006123848461179f565b905060075483826123959190613f42565b11156123d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cd9061422d565b60405180910390fd5b505b6123e2848361276c565b6123ea612809565b156123f8576123f76128e0565b5b612481826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006124cf85612f29565b15806124e157506124df84612f29565b155b6124f5576124f0858486612f80565b6124f7565b825b905061254b81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125eb91906134d9565b60405180910390a360019150505b9392505050565b600061264283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205a565b905092915050565b60008082846126599190613f42565b90508381101561269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269590614299565b60405180910390fd5b8091505092915050565b60008083036126ba576000905061271c565b600082846126c89190613d7c565b90508284826126d79190613ded565b14612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e9061432b565b60405180910390fd5b809150505b92915050565b600061276483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613356565b905092915050565b600654811115806127c65750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc90614397565b60405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128765750602060009054906101000a900460ff16155b801561288e5750601e60159054906101000a900460ff165b80156128db5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff021916908315150217905550600061290b601b54601c54610e2b565b61291757600c5461291a565b60005b9050600061295a600261294c60115461293e86601f546126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b9050600061297382601f5461260090919063ffffffff16565b90506000600267ffffffffffffffff811115612992576129916143b7565b5b6040519080825280602002602001820160405280156129c05781602001602082028036833780820191505090505b50905030816000815181106129d8576129d7613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612a4957612a48613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612aec9594939291906144df565b600060405180830381600087803b158015612b0657600080fd5b505af1158015612b1a573d6000803e3d6000fd5b505050506000612b33824761260090919063ffffffff16565b90506000612b5f612b4e60028961272290919063ffffffff16565b60115461260090919063ffffffff16565b90506000612b9b6002612b8d84612b7f8c886126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000612bc683612bb8600d54876126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612bf184612be3600f54886126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612c2f600a612c2187612c13600e548b6126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051612c7d9061456a565b600060405180830381858888f193505050503d8060008114612cbb576040519150601f19603f3d011682016040523d82523d6000602084013e612cc0565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612d0e9061456a565b600060405180830381858888f193505050503d8060008114612d4c576040519150601f19603f3d011682016040523d82523d6000602084013e612d51565b606091505b505080915050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612da19061456a565b600060405180830381858888f193505050503d8060008114612ddf576040519150601f19603f3d011682016040523d82523d6000602084013e612de4565b606091505b5050809150506000905060008b1115612f0057601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e809695949392919061457f565b60606040518083038185885af1158015612e9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec391906145f5565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612ef7929190614648565b60405180910390a15b5050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe7576013549050613043565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130425760145490505b5b600061308c60646012546130579190613d7c565b61307e846130706011548a6126a890919063ffffffff16565b6126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130b96011546130ab601054856126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130d0828461260090919063ffffffff16565b905061312481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131db8260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161329d91906134d9565b60405180910390a3600082111561333657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161332d91906134d9565b60405180910390a35b613349838861260090919063ffffffff16565b9450505050509392505050565b6000808311829061339d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133949190613584565b60405180910390fd5b50600083856133ac9190613ded565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126133e8576133e76133c3565b5b8235905067ffffffffffffffff811115613405576134046133c8565b5b602083019150836020820283011115613421576134206133cd565b5b9250929050565b60008115159050919050565b61343d81613428565b811461344857600080fd5b50565b60008135905061345a81613434565b92915050565b600080600060408486031215613479576134786133b9565b5b600084013567ffffffffffffffff811115613497576134966133be565b5b6134a3868287016133d2565b935093505060206134b68682870161344b565b9150509250925092565b6000819050919050565b6134d3816134c0565b82525050565b60006020820190506134ee60008301846134ca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561352e578082015181840152602081019050613513565b60008484015250505050565b6000601f19601f8301169050919050565b6000613556826134f4565b61356081856134ff565b9350613570818560208601613510565b6135798161353a565b840191505092915050565b6000602082019050818103600083015261359e818461354b565b905092915050565b6135af816134c0565b81146135ba57600080fd5b50565b6000813590506135cc816135a6565b92915050565b6000602082840312156135e8576135e76133b9565b5b60006135f6848285016135bd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061362a826135ff565b9050919050565b61363a8161361f565b811461364557600080fd5b50565b60008135905061365781613631565b92915050565b60008060408385031215613674576136736133b9565b5b600061368285828601613648565b9250506020613693858286016135bd565b9150509250929050565b6136a681613428565b82525050565b60006020820190506136c1600083018461369d565b92915050565b600080604083850312156136de576136dd6133b9565b5b60006136ec858286016135bd565b92505060206136fd858286016135bd565b9150509250929050565b60008083601f84011261371d5761371c6133c3565b5b8235905067ffffffffffffffff81111561373a576137396133c8565b5b602083019150836020820283011115613756576137556133cd565b5b9250929050565b600080600080600060608688031215613779576137786133b9565b5b600061378788828901613648565b955050602086013567ffffffffffffffff8111156137a8576137a76133be565b5b6137b4888289016133d2565b9450945050604086013567ffffffffffffffff8111156137d7576137d66133be565b5b6137e388828901613707565b92509250509295509295909350565b600080600080600060a0868803121561380e5761380d6133b9565b5b600061381c88828901613648565b955050602061382d88828901613648565b945050604061383e88828901613648565b935050606061384f88828901613648565b925050608061386088828901613648565b9150509295509295909350565b600080600060608486031215613886576138856133b9565b5b600061389486828701613648565b93505060206138a586828701613648565b92505060406138b6868287016135bd565b9150509250925092565b6000602082840312156138d6576138d56133b9565b5b60006138e484828501613648565b91505092915050565b600060ff82169050919050565b613903816138ed565b82525050565b600060208201905061391e60008301846138fa565b92915050565b6000806040838503121561393b5761393a6133b9565b5b600061394985828601613648565b925050602061395a8582860161344b565b9150509250929050565b60008060006060848603121561397d5761397c6133b9565b5b600061398b868287016135bd565b935050602061399c868287016135bd565b92505060406139ad868287016135bd565b9150509250925092565b6139c08161361f565b82525050565b60006020820190506139db60008301846139b7565b92915050565b600080604083850312156139f8576139f76133b9565b5b6000613a0685828601613648565b9250506020613a1785828601613648565b9150509250929050565b60008060408385031215613a3857613a376133b9565b5b6000613a468582860161344b565b9250506020613a57858286016135bd565b9150509250929050565b6000613a6c826135ff565b9050919050565b613a7c81613a61565b8114613a8757600080fd5b50565b600081359050613a9981613a73565b92915050565b600060208284031215613ab557613ab46133b9565b5b6000613ac384828501613a8a565b91505092915050565b6000819050919050565b6000613af1613aec613ae7846135ff565b613acc565b6135ff565b9050919050565b6000613b0382613ad6565b9050919050565b6000613b1582613af8565b9050919050565b613b2581613b0a565b82525050565b6000602082019050613b406000830184613b1c565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613b7c6006836134ff565b9150613b8782613b46565b602082019050919050565b60006020820190508181036000830152613bab81613b6f565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613c0e6025836134ff565b9150613c1982613bb2565b604082019050919050565b60006020820190508181036000830152613c3d81613c01565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cad826134c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cdf57613cde613c73565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613d466030836134ff565b9150613d5182613cea565b604082019050919050565b60006020820190508181036000830152613d7581613d39565b9050919050565b6000613d87826134c0565b9150613d92836134c0565b9250828202613da0816134c0565b91508282048414831517613db757613db6613c73565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df8826134c0565b9150613e03836134c0565b925082613e1357613e12613dbe565b5b828204905092915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000613e7a602d836134ff565b9150613e8582613e1e565b604082019050919050565b60006020820190508181036000830152613ea981613e6d565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613f0c6028836134ff565b9150613f1782613eb0565b604082019050919050565b60006020820190508181036000830152613f3b81613eff565b9050919050565b6000613f4d826134c0565b9150613f58836134c0565b9250828201905080821115613f7057613f6f613c73565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613fac601b836134ff565b9150613fb782613f76565b602082019050919050565b60006020820190508181036000830152613fdb81613f9f565b9050919050565b6000604082019050613ff760008301856139b7565b61400460208301846134ca565b9392505050565b60008151905061401a81613434565b92915050565b600060208284031215614036576140356133b9565b5b60006140448482850161400b565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140a96037836134ff565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b60006140ea82613af8565b9050919050565b6140fa816140df565b82525050565b600060208201905061411560008301846140f1565b92915050565b6000614126826134c0565b9150614131836134c0565b925082820390508181111561414957614148613c73565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006141856014836134ff565b91506141908261414f565b602082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614217603e836134ff565b9150614222826141bb565b604082019050919050565b600060208201905081810360008301526142468161420a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614283601b836134ff565b915061428e8261424d565b602082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143156021836134ff565b9150614320826142b9565b604082019050919050565b6000602082019050818103600083015261434481614308565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006143816011836134ff565b915061438c8261434b565b602082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061440b614406614401846143e6565b613acc565b6134c0565b9050919050565b61441b816143f0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144568161361f565b82525050565b6000614468838361444d565b60208301905092915050565b6000602082019050919050565b600061448c82614421565b614496818561442c565b93506144a18361443d565b8060005b838110156144d25781516144b9888261445c565b97506144c483614474565b9250506001810190506144a5565b5085935050505092915050565b600060a0820190506144f460008301886134ca565b6145016020830187614412565b81810360408301526145138186614481565b905061452260608301856139b7565b61452f60808301846134ca565b9695505050505050565b600081905092915050565b50565b6000614554600083614539565b915061455f82614544565b600082019050919050565b600061457582614547565b9150819050919050565b600060c08201905061459460008301896139b7565b6145a160208301886134ca565b6145ae6040830187614412565b6145bb6060830186614412565b6145c860808301856139b7565b6145d560a08301846134ca565b979650505050505050565b6000815190506145ef816135a6565b92915050565b60008060006060848603121561460e5761460d6133b9565b5b600061461c868287016145e0565b935050602061462d868287016145e0565b925050604061463e868287016145e0565b9150509250925092565b600060408201905061465d60008301856134ca565b61466a60208301846134ca565b939250505056fea264697066735822122079955b05f6dfc3ecfda5e27f57da33998d4289fa7aa3464c7782706159c9cffb64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061028b5760003560e01c80636ce46bc31161015a578063bd9ab537116100c1578063df20fd491161007a578063df20fd4914610a18578063f2fde38b14610a41578063f84ba65d14610a6a578063f887ea4014610a93578063fed0d2a114610abe578063ffb54a9914610ae957610292565b8063bd9ab537146108f6578063cec10c111461091f578063d51ed1c814610948578063d58f2f2714610985578063dccd8bd2146109b0578063dd62ed3e146109db57610292565b806395d89b411161011357806395d89b41146107d257806398118cb4146107fd57806398e0ae14146108285780639c75dd3514610865578063a8aa1b311461088e578063a9059cbb146108b957610292565b80636ce46bc3146106c05780636ddd1713146106e957806370a082311461071457806378109e54146107515780637d1db4a51461077c578063893d20e8146107a757610292565b8063201e7991116101fe578063313ce567116101b7578063313ce567146105b05780634be9d869146105db578063571ac8b0146106045780635921652f14610641578063658d4b7f1461066c5780636b67c4df1461069557610292565b8063201e79911461048c57806323b872dd146104b557806323eeb2b0146104f25780632b112e491461051d5780632f54bf6e146105485780633121c7c01461058557610292565b80631161ae39116102505780631161ae391461037c57806317deb770146103b9578063180b0d7e146103e257806318160ddd1461040d57806318abb635146104385780631df4ccfc1461046157610292565b8062bff446146102975780630445b667146102c057806306fdde03146102eb57806309302dc614610316578063095ea7b31461033f57610292565b3661029257005b600080fd5b3480156102a357600080fd5b506102be60048036038101906102b99190613460565b610b14565b005b3480156102cc57600080fd5b506102d5610c46565b6040516102e291906134d9565b60405180910390f35b3480156102f757600080fd5b50610300610c4c565b60405161030d9190613584565b60405180910390f35b34801561032257600080fd5b5061033d600480360381019061033891906135d2565b610c89565b005b34801561034b57600080fd5b506103666004803603810190610361919061365d565b610d39565b60405161037391906136ac565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906136c7565b610e2b565b6040516103b091906136ac565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db919061375d565b610e40565b005b3480156103ee57600080fd5b506103f7611022565b60405161040491906134d9565b60405180910390f35b34801561041957600080fd5b50610422611028565b60405161042f91906134d9565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a91906137f2565b611032565b005b34801561046d57600080fd5b506104766111c6565b60405161048391906134d9565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906136c7565b6111cc565b005b3480156104c157600080fd5b506104dc60048036038101906104d7919061386d565b611226565b6040516104e991906136ac565b60405180910390f35b3480156104fe57600080fd5b50610507611426565b60405161051491906134d9565b60405180910390f35b34801561052957600080fd5b5061053261142c565b60405161053f91906134d9565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a91906138c0565b6114ae565b60405161057c91906136ac565b60405180910390f35b34801561059157600080fd5b5061059a611507565b6040516105a791906134d9565b60405180910390f35b3480156105bc57600080fd5b506105c561150d565b6040516105d29190613909565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613460565b611516565b005b34801561061057600080fd5b5061062b600480360381019061062691906138c0565b611648565b60405161063891906136ac565b60405180910390f35b34801561064d57600080fd5b5061065661167b565b60405161066391906134d9565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190613924565b611681565b005b3480156106a157600080fd5b506106aa611724565b6040516106b791906134d9565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190613964565b61172a565b005b3480156106f557600080fd5b506106fe61178c565b60405161070b91906136ac565b60405180910390f35b34801561072057600080fd5b5061073b600480360381019061073691906138c0565b61179f565b60405161074891906134d9565b60405180910390f35b34801561075d57600080fd5b506107666117e8565b60405161077391906134d9565b60405180910390f35b34801561078857600080fd5b506107916117ee565b60405161079e91906134d9565b60405180910390f35b3480156107b357600080fd5b506107bc6117f4565b6040516107c991906139c6565b60405180910390f35b3480156107de57600080fd5b506107e761181d565b6040516107f49190613584565b60405180910390f35b34801561080957600080fd5b5061081261185a565b60405161081f91906134d9565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a919061365d565b611860565b60405161085c91906136ac565b60405180910390f35b34801561087157600080fd5b5061088c600480360381019061088791906135d2565b61190a565b005b34801561089a57600080fd5b506108a3611993565b6040516108b091906139c6565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061365d565b6119b9565b6040516108ed91906136ac565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906135d2565b6119ce565b005b34801561092b57600080fd5b5061094660048036038101906109419190613964565b611a7e565b005b34801561095457600080fd5b5061096f600480360381019061096a91906135d2565b611b1a565b60405161097c91906134d9565b60405180910390f35b34801561099157600080fd5b5061099a611b8c565b6040516109a791906134d9565b60405180910390f35b3480156109bc57600080fd5b506109c5611b92565b6040516109d291906134d9565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906139e1565b611b98565b604051610a0f91906134d9565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613a21565b611c1f565b005b348015610a4d57600080fd5b50610a686004803603810190610a639190613a9f565b611c8c565b005b348015610a7657600080fd5b50610a916004803603810190610a8c9190613924565b611da5565b005b348015610a9f57600080fd5b50610aa8611e48565b604051610ab59190613b2b565b60405180910390f35b348015610aca57600080fd5b50610ad3611e6e565b604051610ae091906134d9565b60405180910390f35b348015610af557600080fd5b50610afe611e74565b604051610b0b91906136ac565b60405180910390f35b610b1d336114ae565b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390613b92565b60405180910390fd5b6101f58383905010610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90613c24565b60405180910390fd5b60005b83839050811015610c405781600a6000868685818110610bc957610bc8613c44565b5b9050602002016020810190610bde91906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c3990613ca2565b9050610ba6565b50505050565b601f5481565b60606040518060400160405280600b81526020017f53504f5254534d414e4941000000000000000000000000000000000000000000815250905090565b610c92336114ae565b610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890613b92565b60405180910390fd5b600a811015610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613d5c565b60405180910390fd5b6103e881600554610d269190613d7c565b610d309190613ded565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e1991906134d9565b60405180910390a36001905092915050565b600082610e3783611b1a565b11905092915050565b610e49336114ae565b610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90613b92565b60405180910390fd5b6101f58484905010610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690613e90565b60405180910390fd5b818190508484905014610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90613f22565b60405180910390fd5b6000805b85859050811015610f6057838382818110610f3957610f38613c44565b5b9050602002013582610f4b9190613f42565b91508080610f5890613ca2565b915050610f1b565b5080610f6b8761179f565b1015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613fc2565b60405180910390fd5b60005b858590508110156110195761100587878784818110610fd157610fd0613c44565b5b9050602002016020810190610fe691906138c0565b868685818110610ff957610ff8613c44565b5b90506020020135611e87565b50808061101190613ca2565b915050610faf565b50505050505050565b60125481565b6000600554905090565b61103b336114ae565b61107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190613b92565b60405180910390fd5b84601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60115481565b6111d5336114ae565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90613b92565b60405180910390fd5b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461141257611391826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61141d8484846120be565b90509392505050565b600f5481565b60006114a961145c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b61149b61148a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b60055461260090919063ffffffff16565b61260090919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61151f336114ae565b61155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613b92565b60405180910390fd5b6101f583839050106115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613c24565b60405180910390fd5b60005b838390508110156116425781600b60008686858181106115cb576115ca613c44565b5b90506020020160208101906115e091906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061163b90613ca2565b90506115a8565b50505050565b6000611674827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d39565b9050919050565b60155481565b61168a336114ae565b6116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b92565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b611733336114ae565b611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613b92565b60405180910390fd5b816013819055508260148190555080601581905550505050565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f53504f5254534d414e4941000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016118bf929190613fe2565b6020604051808303816000875af11580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190614020565b905092915050565b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846119599190613d7c565b6119639190613ded565b9081150290604051600060405180830381858888f1935050505015801561198e573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119c63384846120be565b905092915050565b6119d7336114ae565b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613b92565b60405180910390fd5b6001811015611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a51906140bf565b60405180910390fd5b6103e881600554611a6b9190613d7c565b611a759190613ded565b60068190555050565b611a87336114ae565b611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613b92565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611b0081611af2848661264a90919063ffffffff16565b61264a90919063ffffffff16565b601181905550600a60115410611b1557600080fd5b505050565b6000611b85611b2761142c565b611b77611b686002611b5a601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b6126a890919063ffffffff16565b856126a890919063ffffffff16565b61272290919063ffffffff16565b9050919050565b600e5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c28336114ae565b611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613b92565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b611c95336114ae565b611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613b92565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d9a9190614100565b60405180910390a150565b611dae336114ae565b611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de490613b92565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b601e60149054906101000a900460ff1681565b6000611f12826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161204791906134d9565b60405180910390a3600190509392505050565b60008383111582906120a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120999190613584565b60405180910390fd5b50600083856120b1919061411b565b9050809150509392505050565b6000602060009054906101000a900460ff16156120e7576120e0848484611e87565b90506125f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e057601e60149054906101000a900460ff166121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d69061419b565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561226657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122c05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231a5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123745750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123d85760006123848461179f565b905060075483826123959190613f42565b11156123d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cd9061422d565b60405180910390fd5b505b6123e2848361276c565b6123ea612809565b156123f8576123f76128e0565b5b612481826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006124cf85612f29565b15806124e157506124df84612f29565b155b6124f5576124f0858486612f80565b6124f7565b825b905061254b81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125eb91906134d9565b60405180910390a360019150505b9392505050565b600061264283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205a565b905092915050565b60008082846126599190613f42565b90508381101561269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269590614299565b60405180910390fd5b8091505092915050565b60008083036126ba576000905061271c565b600082846126c89190613d7c565b90508284826126d79190613ded565b14612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e9061432b565b60405180910390fd5b809150505b92915050565b600061276483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613356565b905092915050565b600654811115806127c65750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc90614397565b60405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128765750602060009054906101000a900460ff16155b801561288e5750601e60159054906101000a900460ff165b80156128db5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff021916908315150217905550600061290b601b54601c54610e2b565b61291757600c5461291a565b60005b9050600061295a600261294c60115461293e86601f546126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b9050600061297382601f5461260090919063ffffffff16565b90506000600267ffffffffffffffff811115612992576129916143b7565b5b6040519080825280602002602001820160405280156129c05781602001602082028036833780820191505090505b50905030816000815181106129d8576129d7613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612a4957612a48613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612aec9594939291906144df565b600060405180830381600087803b158015612b0657600080fd5b505af1158015612b1a573d6000803e3d6000fd5b505050506000612b33824761260090919063ffffffff16565b90506000612b5f612b4e60028961272290919063ffffffff16565b60115461260090919063ffffffff16565b90506000612b9b6002612b8d84612b7f8c886126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000612bc683612bb8600d54876126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612bf184612be3600f54886126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612c2f600a612c2187612c13600e548b6126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051612c7d9061456a565b600060405180830381858888f193505050503d8060008114612cbb576040519150601f19603f3d011682016040523d82523d6000602084013e612cc0565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612d0e9061456a565b600060405180830381858888f193505050503d8060008114612d4c576040519150601f19603f3d011682016040523d82523d6000602084013e612d51565b606091505b505080915050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612da19061456a565b600060405180830381858888f193505050503d8060008114612ddf576040519150601f19603f3d011682016040523d82523d6000602084013e612de4565b606091505b5050809150506000905060008b1115612f0057601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e809695949392919061457f565b60606040518083038185885af1158015612e9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec391906145f5565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612ef7929190614648565b60405180910390a15b5050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe7576013549050613043565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130425760145490505b5b600061308c60646012546130579190613d7c565b61307e846130706011548a6126a890919063ffffffff16565b6126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130b96011546130ab601054856126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130d0828461260090919063ffffffff16565b905061312481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131db8260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161329d91906134d9565b60405180910390a3600082111561333657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161332d91906134d9565b60405180910390a35b613349838861260090919063ffffffff16565b9450505050509392505050565b6000808311829061339d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133949190613584565b60405180910390fd5b50600083856133ac9190613ded565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126133e8576133e76133c3565b5b8235905067ffffffffffffffff811115613405576134046133c8565b5b602083019150836020820283011115613421576134206133cd565b5b9250929050565b60008115159050919050565b61343d81613428565b811461344857600080fd5b50565b60008135905061345a81613434565b92915050565b600080600060408486031215613479576134786133b9565b5b600084013567ffffffffffffffff811115613497576134966133be565b5b6134a3868287016133d2565b935093505060206134b68682870161344b565b9150509250925092565b6000819050919050565b6134d3816134c0565b82525050565b60006020820190506134ee60008301846134ca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561352e578082015181840152602081019050613513565b60008484015250505050565b6000601f19601f8301169050919050565b6000613556826134f4565b61356081856134ff565b9350613570818560208601613510565b6135798161353a565b840191505092915050565b6000602082019050818103600083015261359e818461354b565b905092915050565b6135af816134c0565b81146135ba57600080fd5b50565b6000813590506135cc816135a6565b92915050565b6000602082840312156135e8576135e76133b9565b5b60006135f6848285016135bd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061362a826135ff565b9050919050565b61363a8161361f565b811461364557600080fd5b50565b60008135905061365781613631565b92915050565b60008060408385031215613674576136736133b9565b5b600061368285828601613648565b9250506020613693858286016135bd565b9150509250929050565b6136a681613428565b82525050565b60006020820190506136c1600083018461369d565b92915050565b600080604083850312156136de576136dd6133b9565b5b60006136ec858286016135bd565b92505060206136fd858286016135bd565b9150509250929050565b60008083601f84011261371d5761371c6133c3565b5b8235905067ffffffffffffffff81111561373a576137396133c8565b5b602083019150836020820283011115613756576137556133cd565b5b9250929050565b600080600080600060608688031215613779576137786133b9565b5b600061378788828901613648565b955050602086013567ffffffffffffffff8111156137a8576137a76133be565b5b6137b4888289016133d2565b9450945050604086013567ffffffffffffffff8111156137d7576137d66133be565b5b6137e388828901613707565b92509250509295509295909350565b600080600080600060a0868803121561380e5761380d6133b9565b5b600061381c88828901613648565b955050602061382d88828901613648565b945050604061383e88828901613648565b935050606061384f88828901613648565b925050608061386088828901613648565b9150509295509295909350565b600080600060608486031215613886576138856133b9565b5b600061389486828701613648565b93505060206138a586828701613648565b92505060406138b6868287016135bd565b9150509250925092565b6000602082840312156138d6576138d56133b9565b5b60006138e484828501613648565b91505092915050565b600060ff82169050919050565b613903816138ed565b82525050565b600060208201905061391e60008301846138fa565b92915050565b6000806040838503121561393b5761393a6133b9565b5b600061394985828601613648565b925050602061395a8582860161344b565b9150509250929050565b60008060006060848603121561397d5761397c6133b9565b5b600061398b868287016135bd565b935050602061399c868287016135bd565b92505060406139ad868287016135bd565b9150509250925092565b6139c08161361f565b82525050565b60006020820190506139db60008301846139b7565b92915050565b600080604083850312156139f8576139f76133b9565b5b6000613a0685828601613648565b9250506020613a1785828601613648565b9150509250929050565b60008060408385031215613a3857613a376133b9565b5b6000613a468582860161344b565b9250506020613a57858286016135bd565b9150509250929050565b6000613a6c826135ff565b9050919050565b613a7c81613a61565b8114613a8757600080fd5b50565b600081359050613a9981613a73565b92915050565b600060208284031215613ab557613ab46133b9565b5b6000613ac384828501613a8a565b91505092915050565b6000819050919050565b6000613af1613aec613ae7846135ff565b613acc565b6135ff565b9050919050565b6000613b0382613ad6565b9050919050565b6000613b1582613af8565b9050919050565b613b2581613b0a565b82525050565b6000602082019050613b406000830184613b1c565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613b7c6006836134ff565b9150613b8782613b46565b602082019050919050565b60006020820190508181036000830152613bab81613b6f565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613c0e6025836134ff565b9150613c1982613bb2565b604082019050919050565b60006020820190508181036000830152613c3d81613c01565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cad826134c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cdf57613cde613c73565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613d466030836134ff565b9150613d5182613cea565b604082019050919050565b60006020820190508181036000830152613d7581613d39565b9050919050565b6000613d87826134c0565b9150613d92836134c0565b9250828202613da0816134c0565b91508282048414831517613db757613db6613c73565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df8826134c0565b9150613e03836134c0565b925082613e1357613e12613dbe565b5b828204905092915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000613e7a602d836134ff565b9150613e8582613e1e565b604082019050919050565b60006020820190508181036000830152613ea981613e6d565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613f0c6028836134ff565b9150613f1782613eb0565b604082019050919050565b60006020820190508181036000830152613f3b81613eff565b9050919050565b6000613f4d826134c0565b9150613f58836134c0565b9250828201905080821115613f7057613f6f613c73565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613fac601b836134ff565b9150613fb782613f76565b602082019050919050565b60006020820190508181036000830152613fdb81613f9f565b9050919050565b6000604082019050613ff760008301856139b7565b61400460208301846134ca565b9392505050565b60008151905061401a81613434565b92915050565b600060208284031215614036576140356133b9565b5b60006140448482850161400b565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140a96037836134ff565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b60006140ea82613af8565b9050919050565b6140fa816140df565b82525050565b600060208201905061411560008301846140f1565b92915050565b6000614126826134c0565b9150614131836134c0565b925082820390508181111561414957614148613c73565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006141856014836134ff565b91506141908261414f565b602082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614217603e836134ff565b9150614222826141bb565b604082019050919050565b600060208201905081810360008301526142468161420a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614283601b836134ff565b915061428e8261424d565b602082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143156021836134ff565b9150614320826142b9565b604082019050919050565b6000602082019050818103600083015261434481614308565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006143816011836134ff565b915061438c8261434b565b602082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061440b614406614401846143e6565b613acc565b6134c0565b9050919050565b61441b816143f0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144568161361f565b82525050565b6000614468838361444d565b60208301905092915050565b6000602082019050919050565b600061448c82614421565b614496818561442c565b93506144a18361443d565b8060005b838110156144d25781516144b9888261445c565b97506144c483614474565b9250506001810190506144a5565b5085935050505092915050565b600060a0820190506144f460008301886134ca565b6145016020830187614412565b81810360408301526145138186614481565b905061452260608301856139b7565b61452f60808301846134ca565b9695505050505050565b600081905092915050565b50565b6000614554600083614539565b915061455f82614544565b600082019050919050565b600061457582614547565b9150819050919050565b600060c08201905061459460008301896139b7565b6145a160208301886134ca565b6145ae6040830187614412565b6145bb6060830186614412565b6145c860808301856139b7565b6145d560a08301846134ca565b979650505050505050565b6000815190506145ef816135a6565b92915050565b60008060006060848603121561460e5761460d6133b9565b5b600061461c868287016145e0565b935050602061462d868287016145e0565b925050604061463e868287016145e0565b9150509250925092565b600060408201905061465d60008301856134ca565b61466a60208301846134ca565b939250505056fea264697066735822122079955b05f6dfc3ecfda5e27f57da33998d4289fa7aa3464c7782706159c9cffb64736f6c63430008110033

Deployed Bytecode Sourcemap

4270:13640:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15007:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6008:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7163:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13509:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7585:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17052:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17210:632;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5391:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6893:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15877:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5278:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16533:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8103:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5194:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16727:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2454:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5480:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6987:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15307:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7809:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5522:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15615:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5110:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14466:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5971:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7333:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4792:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4730:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7249:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7073:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5068:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14287:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14083:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5904:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7939:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13795:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14671:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16877:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5152:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5236;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7444:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16370:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2565:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15742:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5873:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5437:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5932:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15007:292;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15133:3:::1;15114:9;;:16;;:22;15106:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15193:9;15188:104;15208:9;;:16;;15204:1;:20;15188:104;;;15274:6;15246:11;:25;15258:9;;15268:1;15258:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15246:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15226:3;;;;:::i;:::-;;;15188:104;;;;15007:292:::0;;;:::o;6008:49::-;;;;:::o;7163:80::-;7211:13;7235:5;;;;;;;;;;;;;;;;;7228:12;;7163:80;:::o;13509:278::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13647:2:::1;13620:23;:29;;13612:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13775:4;13747:23;13732:12;;:38;;;;:::i;:::-;13731:48;;;;:::i;:::-;13713:15;:66;;;;13509:278:::0;:::o;7585:216::-;7660:4;7712:6;7677:11;:23;7689:10;7677:23;;;;;;;;;;;;;;;:32;7701:7;7677:32;;;;;;;;;;;;;;;:41;;;;7755:7;7734:37;;7743:10;7734:37;;;7764:6;7734:37;;;;;;:::i;:::-;;;;;;;;7789:4;7782:11;;7585:216;;;;:::o;17052:150::-;17132:4;17188:6;17156:29;17176:8;17156:19;:29::i;:::-;:38;17149:45;;17052:150;;;;:::o;17210:632::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17357:3:::1;17338:9;;:16;;:22;17330:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17448:6;;:13;;17428:9;;:16;;:33;17420:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17518:12;17551:6:::0;17547:90:::1;17565:9;;:16;;17561:1;:20;17547:90;;;17616:6;;17623:1;17616:9;;;;;;;:::i;:::-;;;;;;;;17609:4;:16;;;;:::i;:::-;17602:23;;17583:3;;;;;:::i;:::-;;;;17547:90;;;;17676:4;17657:15;17667:4;17657:9;:15::i;:::-;:23;;17649:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17729:6;17725:110;17743:9;;:16;;17739:1;:20;17725:110;;;17780:43;17795:4;17800:9;;17810:1;17800:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17813:6;;17820:1;17813:9;;;;;;;:::i;:::-;;;;;;;;17780:14;:43::i;:::-;;17761:3;;;;;:::i;:::-;;;;17725:110;;;;17317:525;17210:632:::0;;;;;:::o;5391:37::-;;;;:::o;6893:88::-;6948:7;6966:12;;6959:19;;6893:88;:::o;15877:485::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16112:22:::1;16088:21;;:46;;;;;;;;;;;;;;;;;;16168:21;16145:20;;:44;;;;;;;;;;;;;;;;;;16221:19;16200:18;;:40;;;;;;;;;;;;;;;;;;16272:19;16251:18;;:40;;;;;;;;;;;;;;;;;;16329:25;16302:24;;:52;;;;;;;;;;;;;;;;;;15877:485:::0;;;;;:::o;5278:106::-;;;;:::o;16533:182::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16648:7:::1;16630:15;:25;;;;16695:12;16666:26;:41;;;;16533:182:::0;;:::o;8103:370::-;8203:4;8258:17;8223:11;:19;8235:6;8223:19;;;;;;;;;;;;;;;:31;8243:10;8223:31;;;;;;;;;;;;;;;;:52;8220:186;;8325:69;8361:6;8325:69;;;;;;;;;;;;;;;;;:11;:19;8337:6;8325:19;;;;;;;;;;;;;;;:31;8345:10;8325:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8291:11;:19;8303:6;8291:19;;;;;;;;;;;;;;;:31;8311:10;8291:31;;;;;;;;;;;;;;;:103;;;;8220:186;8425:40;8439:6;8447:9;8458:6;8425:13;:40::i;:::-;8418:47;;8103:370;;;;;:::o;5194:35::-;;;;:::o;16727:142::-;16780:7;16807:54;16845:15;16855:4;;;;;;;;;;;16845:9;:15::i;:::-;16807:33;16824:15;16834:4;;;;;;;;;;;16824:9;:15::i;:::-;16807:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16800:61;;16727:142;:::o;2454:103::-;2509:4;2544:5;;;;;;;;;;;2533:16;;:7;:16;;;2526:23;;2454:103;;;:::o;5480:35::-;;;;:::o;6987:80::-;7039:5;4660:1;7048:16;;6987:80;:::o;15307:300::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15437:3:::1;15418:9;;:16;;:22;15410:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15497:9;15492:108;15512:9;;:16;;15508:1;:20;15492:108;;;15582:6;15550:15;:29;15566:9;;15576:1;15566:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15550:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15530:3;;;;:::i;:::-;;;15492:108;;;;15307:300:::0;;;:::o;7809:122::-;7864:4;7888:35;7896:7;7905:17;7888:7;:35::i;:::-;7881:42;;7809:122;;;:::o;5522:40::-;;;;:::o;15615:119::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15720:6:::1;15698:11;:19;15710:6;15698:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15615:119:::0;;:::o;5110:35::-;;;;:::o;14466:197::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14581:5:::1;14564:14;:22;;;;14613:4;14597:13;:20;;;;14649:6;14628:18;:27;;;;14466:197:::0;;;:::o;5971:30::-;;;;;;;;;;;;;:::o;7333:105::-;7399:7;7417:9;:18;7427:7;7417:18;;;;;;;;;;;;;;;;7410:25;;7333:105;;;:::o;4792:58::-;;;;:::o;4730:55::-;;;;:::o;7249:78::-;7301:7;7319:5;;;;;;;;;;;7312:12;;7249:78;:::o;7073:84::-;7123:13;7147:7;;;;;;;;;;;;;;;;;7140:14;;7073:84;:::o;5068:35::-;;;;:::o;14287:171::-;14359:12;14398;14391:29;;;14421:20;;;;;;;;;;;14443:6;14391:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14384:66;;14287:171;;;;:::o;14083:196::-;14145:17;14165:21;14145:41;;14205:20;;;;;;;;;;;14197:38;;:74;14267:3;14248:16;14236:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14197:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14134:145;14083:196;:::o;5904:19::-;;;;;;;;;;;;;:::o;7939:156::-;8019:4;8043:44;8057:10;8069:9;8080:6;8043:13;:44::i;:::-;8036:51;;7939:156;;;;:::o;13795:280::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13931:1:::1;13903:24;:29;;13895:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14063:4;14034:24;14019:12;;:39;;;;:::i;:::-;14018:49;;;;:::i;:::-;14003:12;:64;;;;13795:280:::0;:::o;14671:328::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14800:13:::1;14785:12;:28;;;;14839:13;14824:12;:28;;;;14876:11;14863:10;:24;;;;14909:49;14946:11;14909:32;14927:13;14909;:17;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;14898:8;:60;;;;14988:2;14977:8;;:13;14969:22;;;::::0;::::1;;14671:328:::0;;;:::o;16877:167::-;16945:7;16972:64;17013:22;:20;:22::i;:::-;16972:36;16985:22;17005:1;16985:15;16995:4;;;;;;;;;;;16985:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;16972:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;16965:71;;16877:167;;;:::o;5152:35::-;;;;:::o;5236:::-;;;;:::o;7444:133::-;7528:7;7546:11;:19;7558:6;7546:19;;;;;;;;;;;;;;;:28;7566:7;7546:28;;;;;;;;;;;;;;;;7539:35;;7444:133;;;;:::o;16370:155::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16475:8:::1;16461:11;;:22;;;;;;;;;;;;;;;;;;16510:7;16494:13;:23;;;;16370:155:::0;;:::o;2565:173::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2649:3:::1;2641:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2685:4;2663:14:::0;:19:::1;2678:3;2663:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2705:25;2726:3;2705:25;;;;;;:::i;:::-;;;;;;;;2565:173:::0;:::o;15742:127::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15855:6:::1;15829:15;:23;15845:6;15829:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15742:127:::0;;:::o;5873:24::-;;;;;;;;;;;;;:::o;5437:36::-;;;;:::o;5932:30::-;;;;;;;;;;;;;:::o;9691:330::-;9784:4;9821:53;9843:6;9821:53;;;;;;;;;;;;;;;;;:9;:17;9831:6;9821:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9801:9;:17;9811:6;9801:17;;;;;;;;;;;;;;;:73;;;;9908:32;9933:6;9908:9;:20;9918:9;9908:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9885:9;:20;9895:9;9885:20;;;;;;;;;;;;;;;:55;;;;9973:9;9956:35;;9965:6;9956:35;;;9984:6;9956:35;;;;;;:::i;:::-;;;;;;;;10009:4;10002:11;;9691:330;;;;;:::o;437:192::-;523:7;556:1;551;:6;;559:12;543:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;583:9;599:1;595;:5;;;;:::i;:::-;583:17;;620:1;613:8;;;437:192;;;;;:::o;8481:1198::-;8573:4;8593:6;;;;;;;;;;;8590:63;;;8609:41;8624:6;8632:9;8643:6;8609:14;:41::i;:::-;8602:48;;;;8590:63;8669:14;:22;8684:6;8669:22;;;;;;;;;;;;;;;;;;;;;;;;;8668:23;:53;;;;;8696:14;:25;8711:9;8696:25;;;;;;;;;;;;;;;;;;;;;;;;;8695:26;8668:53;8665:127;;;8745:11;;;;;;;;;;;8737:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8665:127;8809:14;:22;8824:6;8809:22;;;;;;;;;;;;;;;;;;;;;;;;;8808:23;:53;;;;;8856:4;8835:26;;:9;:26;;;;8808:53;:84;;;;;8887:4;;;;;;;;;;;8866:26;;:9;:26;;;;8808:84;:105;;;;;8909:4;;;;;;;;;;;8896:17;;:9;:17;;;;8808:105;:140;;;;;8930:18;;;;;;;;;;;8917:31;;:9;:31;;;;8808:140;8804:332;;;8964:18;8985:20;8995:9;8985;:20::i;:::-;8964:41;;9053:15;;9042:6;9029:10;:19;;;;:::i;:::-;9028:40;;9020:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8949:187;8804:332;9189:28;9202:6;9210;9189:12;:28::i;:::-;9233:16;:14;:16::i;:::-;9230:35;;;9252:10;:8;:10::i;:::-;9230:35;9324:53;9346:6;9324:53;;;;;;;;;;;;;;;;;:9;:17;9334:6;9324:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9304:9;:17;9314:6;9304:17;;;;;;;;;;;;;;;:73;;;;9390:22;9417:21;9431:6;9417:13;:21::i;:::-;9416:22;:51;;;;9443:24;9457:9;9443:13;:24::i;:::-;9442:25;9416:51;9415:99;;9480:34;9488:6;9496;9504:9;9480:7;:34::i;:::-;9415:99;;;9471:6;9415:99;9390:124;;9548:40;9573:14;9548:9;:20;9558:9;9548:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9525:9;:20;9535:9;9525:20;;;;;;;;;;;;;;;:63;;;;9623:9;9606:43;;9615:6;9606:43;;;9634:14;9606:43;;;;;;:::i;:::-;;;;;;;;9667:4;9660:11;;;8481:1198;;;;;;:::o;295:136::-;353:7;380:43;384:1;387;380:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;373:50;;295:136;;;;:::o;108:181::-;166:7;186:9;202:1;198;:5;;;;:::i;:::-;186:17;;227:1;222;:6;;214:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;280:1;273:8;;;108:181;;;;:::o;635:250::-;693:7;722:1;717;:6;713:47;;747:1;740:8;;;;713:47;772:9;788:1;784;:5;;;;:::i;:::-;772:17;;817:1;812;808;:5;;;;:::i;:::-;:10;800:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;876:1;869:8;;;635:250;;;;;:::o;891:132::-;949:7;976:39;980:1;983;976:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;969:46;;891:132;;;;:::o;10029:166::-;10126:12;;10116:6;:22;;:49;;;;10142:15;:23;10158:6;10142:23;;;;;;;;;;;;;;;;;;;;;;;;;10116:49;10108:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:166;;:::o;11300:197::-;11349:4;11387;;;;;;;;;;;11373:18;;:10;:18;;;;:38;;;;;11405:6;;;;;;;;;;;11404:7;11373:38;:62;;;;;11424:11;;;;;;;;;;;11373:62;:116;;;;;11476:13;;11448:9;:24;11466:4;11448:24;;;;;;;;;;;;;;;;:41;;11373:116;11366:123;;11300:197;:::o;11505:1963::-;6113:4;6104:6;;:13;;;;;;;;;;;;;;;;;;11554:27:::1;11584:60;11600:15;;11617:26;;11584:15;:60::i;:::-;:79;;11651:12;;11584:79;;;11647:1;11584:79;11554:109;;11674:23;11700:59;11757:1;11700:52;11743:8;;11700:38;11718:19;11700:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11674:85;;11770:20;11793:34;11811:15;11793:13;;:17;;:34;;;;:::i;:::-;11770:57;;11840:21;11878:1;11864:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11840:40;;11909:4;11891;11896:1;11891:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11935:4;;;;;;;;;;;11925;11930:1;11925:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11952:21;11976;11952:45;;12010:6;;;;;;;;;;;:57;;;12082:12;12109:1;12125:4;12152;12172:15;12010:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12211:17;12231:40;12257:13;12231:21;:25;;:40;;;;:::i;:::-;12211:60;;12284:19;12306:40;12319:26;12343:1;12319:19;:23;;:26;;;;:::i;:::-;12306:8;;:12;;:40;;;;:::i;:::-;12284:62;;12367:26;12396:58;12452:1;12396:51;12435:11;12396:34;12410:19;12396:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12367:87;;12465:26;12494:44;12526:11;12494:27;12508:12;;12494:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12465:73;;12549:33;12585:48;12621:11;12585:31;12599:16;;12585:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;12549:84;;12644:24;12671:50;12718:2;12671:42;12701:11;12671:25;12685:10;;12671:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;:46;;:50;;;;:::i;:::-;12644:77;;12735:15;12763:20;;;;;;;;;;;12755:34;;12797:18;12822:5;12755:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12734:98;;;12867:18;;;;;;;;;;;12859:32;;12899:16;12922:5;12859:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12843:89;;;;;12967:24;;;;;;;;;;;12959:38;;13005:25;13037:5;12959:88;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12943:104;;;;;13081:5;13068:18;;13120:1;13102:15;:19;13099:362;;;13137:6;;;;;;;;;;;:22;;;13167:18;13213:4;13237:15;13271:1;13291::::0;13311:21:::1;;;;;;;;;;;13351:15;13137:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13401:48;13413:18;13433:15;13401:48;;;;;;;:::i;:::-;;;;;;;;13099:362;11543:1925;;;;;;;;;;;;6131:5:::0;6122:6;;:14;;;;;;;;;;;;;;;;;;11505:1963::o;10203:114::-;10265:4;10290:11;:19;10302:6;10290:19;;;;;;;;;;;;;;;;;;;;;;;;;10289:20;10282:27;;10203:114;;;:::o;10325:967::-;10411:7;10441:18;10462;;10441:39;;10507:4;;;;;;;;;;;10494:17;;:9;:17;;;10491:152;;10540:14;;10527:27;;10491:152;;;10585:4;;;;;;;;;;;10575:14;;:6;:14;;;10572:71;;10618:13;;10605:26;;10572:71;10491:152;10655:17;10675:62;10733:3;10716:14;;:20;;;;:::i;:::-;10675:36;10700:10;10675:20;10686:8;;10675:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10655:82;;10750:21;10774:39;10804:8;;10774:25;10788:10;;10774:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;10750:63;;10824:22;10849:28;10863:13;10849:9;:13;;:28;;;;:::i;:::-;10824:53;;10917:44;10946:14;10917:9;:24;10935:4;10917:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10890:9;:24;10908:4;10890:24;;;;;;;;;;;;;;;:71;;;;11004:48;11038:13;11004:9;:29;11014:18;;;;;;;;;;;11004:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;10972:9;:29;10982:18;;;;;;;;;;;10972:29;;;;;;;;;;;;;;;:80;;;;11093:4;11068:47;;11077:6;11068:47;;;11100:14;11068:47;;;;;;:::i;:::-;;;;;;;;11155:1;11139:13;:17;11136:108;;;11194:18;;;;;;;;;;;11177:51;;11186:6;11177:51;;;11214:13;11177:51;;;;;;:::i;:::-;;;;;;;;11136:108;11263:21;11274:9;11263:6;:10;;:21;;;;:::i;:::-;11256:28;;;;;;10325:967;;;;;:::o;1029:189::-;1115:7;1147:1;1143;:5;1150:12;1135:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1174:9;1190:1;1186;:5;;;;:::i;:::-;1174:17;;1209:1;1202:8;;;1029:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:77::-;2392:7;2421:5;2410:16;;2355:77;;;:::o;2438:118::-;2525:24;2543:5;2525:24;:::i;:::-;2520:3;2513:37;2438:118;;:::o;2562:222::-;2655:4;2693:2;2682:9;2678:18;2670:26;;2706:71;2774:1;2763:9;2759:17;2750:6;2706:71;:::i;:::-;2562:222;;;;:::o;2790:99::-;2842:6;2876:5;2870:12;2860:22;;2790:99;;;:::o;2895:169::-;2979:11;3013:6;3008:3;3001:19;3053:4;3048:3;3044:14;3029:29;;2895:169;;;;:::o;3070:246::-;3151:1;3161:113;3175:6;3172:1;3169:13;3161:113;;;3260:1;3255:3;3251:11;3245:18;3241:1;3236:3;3232:11;3225:39;3197:2;3194:1;3190:10;3185:15;;3161:113;;;3308:1;3299:6;3294:3;3290:16;3283:27;3132:184;3070:246;;;:::o;3322:102::-;3363:6;3414:2;3410:7;3405:2;3398:5;3394:14;3390:28;3380:38;;3322:102;;;:::o;3430:377::-;3518:3;3546:39;3579:5;3546:39;:::i;:::-;3601:71;3665:6;3660:3;3601:71;:::i;:::-;3594:78;;3681:65;3739:6;3734:3;3727:4;3720:5;3716:16;3681:65;:::i;:::-;3771:29;3793:6;3771:29;:::i;:::-;3766:3;3762:39;3755:46;;3522:285;3430:377;;;;:::o;3813:313::-;3926:4;3964:2;3953:9;3949:18;3941:26;;4013:9;4007:4;4003:20;3999:1;3988:9;3984:17;3977:47;4041:78;4114:4;4105:6;4041:78;:::i;:::-;4033:86;;3813:313;;;;:::o;4132:122::-;4205:24;4223:5;4205:24;:::i;:::-;4198:5;4195:35;4185:63;;4244:1;4241;4234:12;4185:63;4132:122;:::o;4260:139::-;4306:5;4344:6;4331:20;4322:29;;4360:33;4387:5;4360:33;:::i;:::-;4260:139;;;;:::o;4405:329::-;4464:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4405:329;;;;:::o;4740:126::-;4777:7;4817:42;4810:5;4806:54;4795:65;;4740:126;;;:::o;4872:96::-;4909:7;4938:24;4956:5;4938:24;:::i;:::-;4927:35;;4872:96;;;:::o;4974:122::-;5047:24;5065:5;5047:24;:::i;:::-;5040:5;5037:35;5027:63;;5086:1;5083;5076:12;5027:63;4974:122;:::o;5102:139::-;5148:5;5186:6;5173:20;5164:29;;5202:33;5229:5;5202:33;:::i;:::-;5102:139;;;;:::o;5247:474::-;5315:6;5323;5372:2;5360:9;5351:7;5347:23;5343:32;5340:119;;;5378:79;;:::i;:::-;5340:119;5498:1;5523:53;5568:7;5559:6;5548:9;5544:22;5523:53;:::i;:::-;5513:63;;5469:117;5625:2;5651:53;5696:7;5687:6;5676:9;5672:22;5651:53;:::i;:::-;5641:63;;5596:118;5247:474;;;;;:::o;5727:109::-;5808:21;5823:5;5808:21;:::i;:::-;5803:3;5796:34;5727:109;;:::o;5842:210::-;5929:4;5967:2;5956:9;5952:18;5944:26;;5980:65;6042:1;6031:9;6027:17;6018:6;5980:65;:::i;:::-;5842:210;;;;:::o;6058:474::-;6126:6;6134;6183:2;6171:9;6162:7;6158:23;6154:32;6151:119;;;6189:79;;:::i;:::-;6151:119;6309:1;6334:53;6379:7;6370:6;6359:9;6355:22;6334:53;:::i;:::-;6324:63;;6280:117;6436:2;6462:53;6507:7;6498:6;6487:9;6483:22;6462:53;:::i;:::-;6452:63;;6407:118;6058:474;;;;;:::o;6555:568::-;6628:8;6638:6;6688:3;6681:4;6673:6;6669:17;6665:27;6655:122;;6696:79;;:::i;:::-;6655:122;6809:6;6796:20;6786:30;;6839:18;6831:6;6828:30;6825:117;;;6861:79;;:::i;:::-;6825:117;6975:4;6967:6;6963:17;6951:29;;7029:3;7021:4;7013:6;7009:17;6999:8;6995:32;6992:41;6989:128;;;7036:79;;:::i;:::-;6989:128;6555:568;;;;;:::o;7129:1079::-;7260:6;7268;7276;7284;7292;7341:2;7329:9;7320:7;7316:23;7312:32;7309:119;;;7347:79;;:::i;:::-;7309:119;7467:1;7492:53;7537:7;7528:6;7517:9;7513:22;7492:53;:::i;:::-;7482:63;;7438:117;7622:2;7611:9;7607:18;7594:32;7653:18;7645:6;7642:30;7639:117;;;7675:79;;:::i;:::-;7639:117;7788:80;7860:7;7851:6;7840:9;7836:22;7788:80;:::i;:::-;7770:98;;;;7565:313;7945:2;7934:9;7930:18;7917:32;7976:18;7968:6;7965:30;7962:117;;;7998:79;;:::i;:::-;7962:117;8111:80;8183:7;8174:6;8163:9;8159:22;8111:80;:::i;:::-;8093:98;;;;7888:313;7129:1079;;;;;;;;:::o;8214:911::-;8309:6;8317;8325;8333;8341;8390:3;8378:9;8369:7;8365:23;8361:33;8358:120;;;8397:79;;:::i;:::-;8358:120;8517:1;8542:53;8587:7;8578:6;8567:9;8563:22;8542:53;:::i;:::-;8532:63;;8488:117;8644:2;8670:53;8715:7;8706:6;8695:9;8691:22;8670:53;:::i;:::-;8660:63;;8615:118;8772:2;8798:53;8843:7;8834:6;8823:9;8819:22;8798:53;:::i;:::-;8788:63;;8743:118;8900:2;8926:53;8971:7;8962:6;8951:9;8947:22;8926:53;:::i;:::-;8916:63;;8871:118;9028:3;9055:53;9100:7;9091:6;9080:9;9076:22;9055:53;:::i;:::-;9045:63;;8999:119;8214:911;;;;;;;;:::o;9131:619::-;9208:6;9216;9224;9273:2;9261:9;9252:7;9248:23;9244:32;9241:119;;;9279:79;;:::i;:::-;9241:119;9399:1;9424:53;9469:7;9460:6;9449:9;9445:22;9424:53;:::i;:::-;9414:63;;9370:117;9526:2;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9497:118;9654:2;9680:53;9725:7;9716:6;9705:9;9701:22;9680:53;:::i;:::-;9670:63;;9625:118;9131:619;;;;;:::o;9756:329::-;9815:6;9864:2;9852:9;9843:7;9839:23;9835:32;9832:119;;;9870:79;;:::i;:::-;9832:119;9990:1;10015:53;10060:7;10051:6;10040:9;10036:22;10015:53;:::i;:::-;10005:63;;9961:117;9756:329;;;;:::o;10091:86::-;10126:7;10166:4;10159:5;10155:16;10144:27;;10091:86;;;:::o;10183:112::-;10266:22;10282:5;10266:22;:::i;:::-;10261:3;10254:35;10183:112;;:::o;10301:214::-;10390:4;10428:2;10417:9;10413:18;10405:26;;10441:67;10505:1;10494:9;10490:17;10481:6;10441:67;:::i;:::-;10301:214;;;;:::o;10521:468::-;10586:6;10594;10643:2;10631:9;10622:7;10618:23;10614:32;10611:119;;;10649:79;;:::i;:::-;10611:119;10769:1;10794:53;10839:7;10830:6;10819:9;10815:22;10794:53;:::i;:::-;10784:63;;10740:117;10896:2;10922:50;10964:7;10955:6;10944:9;10940:22;10922:50;:::i;:::-;10912:60;;10867:115;10521:468;;;;;:::o;10995:619::-;11072:6;11080;11088;11137:2;11125:9;11116:7;11112:23;11108:32;11105:119;;;11143:79;;:::i;:::-;11105:119;11263:1;11288:53;11333:7;11324:6;11313:9;11309:22;11288:53;:::i;:::-;11278:63;;11234:117;11390:2;11416:53;11461:7;11452:6;11441:9;11437:22;11416:53;:::i;:::-;11406:63;;11361:118;11518:2;11544:53;11589:7;11580:6;11569:9;11565:22;11544:53;:::i;:::-;11534:63;;11489:118;10995:619;;;;;:::o;11620:118::-;11707:24;11725:5;11707:24;:::i;:::-;11702:3;11695:37;11620:118;;:::o;11744:222::-;11837:4;11875:2;11864:9;11860:18;11852:26;;11888:71;11956:1;11945:9;11941:17;11932:6;11888:71;:::i;:::-;11744:222;;;;:::o;11972:474::-;12040:6;12048;12097:2;12085:9;12076:7;12072:23;12068:32;12065:119;;;12103:79;;:::i;:::-;12065:119;12223:1;12248:53;12293:7;12284:6;12273:9;12269:22;12248:53;:::i;:::-;12238:63;;12194:117;12350:2;12376:53;12421:7;12412:6;12401:9;12397:22;12376:53;:::i;:::-;12366:63;;12321:118;11972:474;;;;;:::o;12452:468::-;12517:6;12525;12574:2;12562:9;12553:7;12549:23;12545:32;12542:119;;;12580:79;;:::i;:::-;12542:119;12700:1;12725:50;12767:7;12758:6;12747:9;12743:22;12725:50;:::i;:::-;12715:60;;12671:114;12824:2;12850:53;12895:7;12886:6;12875:9;12871:22;12850:53;:::i;:::-;12840:63;;12795:118;12452:468;;;;;:::o;12926:104::-;12971:7;13000:24;13018:5;13000:24;:::i;:::-;12989:35;;12926:104;;;:::o;13036:138::-;13117:32;13143:5;13117:32;:::i;:::-;13110:5;13107:43;13097:71;;13164:1;13161;13154:12;13097:71;13036:138;:::o;13180:155::-;13234:5;13272:6;13259:20;13250:29;;13288:41;13323:5;13288:41;:::i;:::-;13180:155;;;;:::o;13341:345::-;13408:6;13457:2;13445:9;13436:7;13432:23;13428:32;13425:119;;;13463:79;;:::i;:::-;13425:119;13583:1;13608:61;13661:7;13652:6;13641:9;13637:22;13608:61;:::i;:::-;13598:71;;13554:125;13341:345;;;;:::o;13692:60::-;13720:3;13741:5;13734:12;;13692:60;;;:::o;13758:142::-;13808:9;13841:53;13859:34;13868:24;13886:5;13868:24;:::i;:::-;13859:34;:::i;:::-;13841:53;:::i;:::-;13828:66;;13758:142;;;:::o;13906:126::-;13956:9;13989:37;14020:5;13989:37;:::i;:::-;13976:50;;13906:126;;;:::o;14038:144::-;14106:9;14139:37;14170:5;14139:37;:::i;:::-;14126:50;;14038:144;;;:::o;14188:167::-;14293:55;14342:5;14293:55;:::i;:::-;14288:3;14281:68;14188:167;;:::o;14361:258::-;14472:4;14510:2;14499:9;14495:18;14487:26;;14523:89;14609:1;14598:9;14594:17;14585:6;14523:89;:::i;:::-;14361:258;;;;:::o;14625:156::-;14765:8;14761:1;14753:6;14749:14;14742:32;14625:156;:::o;14787:365::-;14929:3;14950:66;15014:1;15009:3;14950:66;:::i;:::-;14943:73;;15025:93;15114:3;15025:93;:::i;:::-;15143:2;15138:3;15134:12;15127:19;;14787:365;;;:::o;15158:419::-;15324:4;15362:2;15351:9;15347:18;15339:26;;15411:9;15405:4;15401:20;15397:1;15386:9;15382:17;15375:47;15439:131;15565:4;15439:131;:::i;:::-;15431:139;;15158:419;;;:::o;15583:224::-;15723:34;15719:1;15711:6;15707:14;15700:58;15792:7;15787:2;15779:6;15775:15;15768:32;15583:224;:::o;15813:366::-;15955:3;15976:67;16040:2;16035:3;15976:67;:::i;:::-;15969:74;;16052:93;16141:3;16052:93;:::i;:::-;16170:2;16165:3;16161:12;16154:19;;15813:366;;;:::o;16185:419::-;16351:4;16389:2;16378:9;16374:18;16366:26;;16438:9;16432:4;16428:20;16424:1;16413:9;16409:17;16402:47;16466:131;16592:4;16466:131;:::i;:::-;16458:139;;16185:419;;;:::o;16610:180::-;16658:77;16655:1;16648:88;16755:4;16752:1;16745:15;16779:4;16776:1;16769:15;16796:180;16844:77;16841:1;16834:88;16941:4;16938:1;16931:15;16965:4;16962:1;16955:15;16982:233;17021:3;17044:24;17062:5;17044:24;:::i;:::-;17035:33;;17090:66;17083:5;17080:77;17077:103;;17160:18;;:::i;:::-;17077:103;17207:1;17200:5;17196:13;17189:20;;16982:233;;;:::o;17221:235::-;17361:34;17357:1;17349:6;17345:14;17338:58;17430:18;17425:2;17417:6;17413:15;17406:43;17221:235;:::o;17462:366::-;17604:3;17625:67;17689:2;17684:3;17625:67;:::i;:::-;17618:74;;17701:93;17790:3;17701:93;:::i;:::-;17819:2;17814:3;17810:12;17803:19;;17462:366;;;:::o;17834:419::-;18000:4;18038:2;18027:9;18023:18;18015:26;;18087:9;18081:4;18077:20;18073:1;18062:9;18058:17;18051:47;18115:131;18241:4;18115:131;:::i;:::-;18107:139;;17834:419;;;:::o;18259:410::-;18299:7;18322:20;18340:1;18322:20;:::i;:::-;18317:25;;18356:20;18374:1;18356:20;:::i;:::-;18351:25;;18411:1;18408;18404:9;18433:30;18451:11;18433:30;:::i;:::-;18422:41;;18612:1;18603:7;18599:15;18596:1;18593:22;18573:1;18566:9;18546:83;18523:139;;18642:18;;:::i;:::-;18523:139;18307:362;18259:410;;;;:::o;18675:180::-;18723:77;18720:1;18713:88;18820:4;18817:1;18810:15;18844:4;18841:1;18834:15;18861:185;18901:1;18918:20;18936:1;18918:20;:::i;:::-;18913:25;;18952:20;18970:1;18952:20;:::i;:::-;18947:25;;18991:1;18981:35;;18996:18;;:::i;:::-;18981:35;19038:1;19035;19031:9;19026:14;;18861:185;;;;:::o;19052:232::-;19192:34;19188:1;19180:6;19176:14;19169:58;19261:15;19256:2;19248:6;19244:15;19237:40;19052:232;:::o;19290:366::-;19432:3;19453:67;19517:2;19512:3;19453:67;:::i;:::-;19446:74;;19529:93;19618:3;19529:93;:::i;:::-;19647:2;19642:3;19638:12;19631:19;;19290:366;;;:::o;19662:419::-;19828:4;19866:2;19855:9;19851:18;19843:26;;19915:9;19909:4;19905:20;19901:1;19890:9;19886:17;19879:47;19943:131;20069:4;19943:131;:::i;:::-;19935:139;;19662:419;;;:::o;20087:227::-;20227:34;20223:1;20215:6;20211:14;20204:58;20296:10;20291:2;20283:6;20279:15;20272:35;20087:227;:::o;20320:366::-;20462:3;20483:67;20547:2;20542:3;20483:67;:::i;:::-;20476:74;;20559:93;20648:3;20559:93;:::i;:::-;20677:2;20672:3;20668:12;20661:19;;20320:366;;;:::o;20692:419::-;20858:4;20896:2;20885:9;20881:18;20873:26;;20945:9;20939:4;20935:20;20931:1;20920:9;20916:17;20909:47;20973:131;21099:4;20973:131;:::i;:::-;20965:139;;20692:419;;;:::o;21117:191::-;21157:3;21176:20;21194:1;21176:20;:::i;:::-;21171:25;;21210:20;21228:1;21210:20;:::i;:::-;21205:25;;21253:1;21250;21246:9;21239:16;;21274:3;21271:1;21268:10;21265:36;;;21281:18;;:::i;:::-;21265:36;21117:191;;;;:::o;21314:177::-;21454:29;21450:1;21442:6;21438:14;21431:53;21314:177;:::o;21497:366::-;21639:3;21660:67;21724:2;21719:3;21660:67;:::i;:::-;21653:74;;21736:93;21825:3;21736:93;:::i;:::-;21854:2;21849:3;21845:12;21838:19;;21497:366;;;:::o;21869:419::-;22035:4;22073:2;22062:9;22058:18;22050:26;;22122:9;22116:4;22112:20;22108:1;22097:9;22093:17;22086:47;22150:131;22276:4;22150:131;:::i;:::-;22142:139;;21869:419;;;:::o;22294:332::-;22415:4;22453:2;22442:9;22438:18;22430:26;;22466:71;22534:1;22523:9;22519:17;22510:6;22466:71;:::i;:::-;22547:72;22615:2;22604:9;22600:18;22591:6;22547:72;:::i;:::-;22294:332;;;;;:::o;22632:137::-;22686:5;22717:6;22711:13;22702:22;;22733:30;22757:5;22733:30;:::i;:::-;22632:137;;;;:::o;22775:345::-;22842:6;22891:2;22879:9;22870:7;22866:23;22862:32;22859:119;;;22897:79;;:::i;:::-;22859:119;23017:1;23042:61;23095:7;23086:6;23075:9;23071:22;23042:61;:::i;:::-;23032:71;;22988:125;22775:345;;;;:::o;23126:242::-;23266:34;23262:1;23254:6;23250:14;23243:58;23335:25;23330:2;23322:6;23318:15;23311:50;23126:242;:::o;23374:366::-;23516:3;23537:67;23601:2;23596:3;23537:67;:::i;:::-;23530:74;;23613:93;23702:3;23613:93;:::i;:::-;23731:2;23726:3;23722:12;23715:19;;23374:366;;;:::o;23746:419::-;23912:4;23950:2;23939:9;23935:18;23927:26;;23999:9;23993:4;23989:20;23985:1;23974:9;23970:17;23963:47;24027:131;24153:4;24027:131;:::i;:::-;24019:139;;23746:419;;;:::o;24171:134::-;24229:9;24262:37;24293:5;24262:37;:::i;:::-;24249:50;;24171:134;;;:::o;24311:147::-;24406:45;24445:5;24406:45;:::i;:::-;24401:3;24394:58;24311:147;;:::o;24464:238::-;24565:4;24603:2;24592:9;24588:18;24580:26;;24616:79;24692:1;24681:9;24677:17;24668:6;24616:79;:::i;:::-;24464:238;;;;:::o;24708:194::-;24748:4;24768:20;24786:1;24768:20;:::i;:::-;24763:25;;24802:20;24820:1;24802:20;:::i;:::-;24797:25;;24846:1;24843;24839:9;24831:17;;24870:1;24864:4;24861:11;24858:37;;;24875:18;;:::i;:::-;24858:37;24708:194;;;;:::o;24908:170::-;25048:22;25044:1;25036:6;25032:14;25025:46;24908:170;:::o;25084:366::-;25226:3;25247:67;25311:2;25306:3;25247:67;:::i;:::-;25240:74;;25323:93;25412:3;25323:93;:::i;:::-;25441:2;25436:3;25432:12;25425:19;;25084:366;;;:::o;25456:419::-;25622:4;25660:2;25649:9;25645:18;25637:26;;25709:9;25703:4;25699:20;25695:1;25684:9;25680:17;25673:47;25737:131;25863:4;25737:131;:::i;:::-;25729:139;;25456:419;;;:::o;25881:249::-;26021:34;26017:1;26009:6;26005:14;25998:58;26090:32;26085:2;26077:6;26073:15;26066:57;25881:249;:::o;26136:366::-;26278:3;26299:67;26363:2;26358:3;26299:67;:::i;:::-;26292:74;;26375:93;26464:3;26375:93;:::i;:::-;26493:2;26488:3;26484:12;26477:19;;26136:366;;;:::o;26508:419::-;26674:4;26712:2;26701:9;26697:18;26689:26;;26761:9;26755:4;26751:20;26747:1;26736:9;26732:17;26725:47;26789:131;26915:4;26789:131;:::i;:::-;26781:139;;26508:419;;;:::o;26933:177::-;27073:29;27069:1;27061:6;27057:14;27050:53;26933:177;:::o;27116:366::-;27258:3;27279:67;27343:2;27338:3;27279:67;:::i;:::-;27272:74;;27355:93;27444:3;27355:93;:::i;:::-;27473:2;27468:3;27464:12;27457:19;;27116:366;;;:::o;27488:419::-;27654:4;27692:2;27681:9;27677:18;27669:26;;27741:9;27735:4;27731:20;27727:1;27716:9;27712:17;27705:47;27769:131;27895:4;27769:131;:::i;:::-;27761:139;;27488:419;;;:::o;27913:220::-;28053:34;28049:1;28041:6;28037:14;28030:58;28122:3;28117:2;28109:6;28105:15;28098:28;27913:220;:::o;28139:366::-;28281:3;28302:67;28366:2;28361:3;28302:67;:::i;:::-;28295:74;;28378:93;28467:3;28378:93;:::i;:::-;28496:2;28491:3;28487:12;28480:19;;28139:366;;;:::o;28511:419::-;28677:4;28715:2;28704:9;28700:18;28692:26;;28764:9;28758:4;28754:20;28750:1;28739:9;28735:17;28728:47;28792:131;28918:4;28792:131;:::i;:::-;28784:139;;28511:419;;;:::o;28936:167::-;29076:19;29072:1;29064:6;29060:14;29053:43;28936:167;:::o;29109:366::-;29251:3;29272:67;29336:2;29331:3;29272:67;:::i;:::-;29265:74;;29348:93;29437:3;29348:93;:::i;:::-;29466:2;29461:3;29457:12;29450:19;;29109:366;;;:::o;29481:419::-;29647:4;29685:2;29674:9;29670:18;29662:26;;29734:9;29728:4;29724:20;29720:1;29709:9;29705:17;29698:47;29762:131;29888:4;29762:131;:::i;:::-;29754:139;;29481:419;;;:::o;29906:180::-;29954:77;29951:1;29944:88;30051:4;30048:1;30041:15;30075:4;30072:1;30065:15;30092:85;30137:7;30166:5;30155:16;;30092:85;;;:::o;30183:158::-;30241:9;30274:61;30292:42;30301:32;30327:5;30301:32;:::i;:::-;30292:42;:::i;:::-;30274:61;:::i;:::-;30261:74;;30183:158;;;:::o;30347:147::-;30442:45;30481:5;30442:45;:::i;:::-;30437:3;30430:58;30347:147;;:::o;30500:114::-;30567:6;30601:5;30595:12;30585:22;;30500:114;;;:::o;30620:184::-;30719:11;30753:6;30748:3;30741:19;30793:4;30788:3;30784:14;30769:29;;30620:184;;;;:::o;30810:132::-;30877:4;30900:3;30892:11;;30930:4;30925:3;30921:14;30913:22;;30810:132;;;:::o;30948:108::-;31025:24;31043:5;31025:24;:::i;:::-;31020:3;31013:37;30948:108;;:::o;31062:179::-;31131:10;31152:46;31194:3;31186:6;31152:46;:::i;:::-;31230:4;31225:3;31221:14;31207:28;;31062:179;;;;:::o;31247:113::-;31317:4;31349;31344:3;31340:14;31332:22;;31247:113;;;:::o;31396:732::-;31515:3;31544:54;31592:5;31544:54;:::i;:::-;31614:86;31693:6;31688:3;31614:86;:::i;:::-;31607:93;;31724:56;31774:5;31724:56;:::i;:::-;31803:7;31834:1;31819:284;31844:6;31841:1;31838:13;31819:284;;;31920:6;31914:13;31947:63;32006:3;31991:13;31947:63;:::i;:::-;31940:70;;32033:60;32086:6;32033:60;:::i;:::-;32023:70;;31879:224;31866:1;31863;31859:9;31854:14;;31819:284;;;31823:14;32119:3;32112:10;;31520:608;;;31396:732;;;;:::o;32134:831::-;32397:4;32435:3;32424:9;32420:19;32412:27;;32449:71;32517:1;32506:9;32502:17;32493:6;32449:71;:::i;:::-;32530:80;32606:2;32595:9;32591:18;32582:6;32530:80;:::i;:::-;32657:9;32651:4;32647:20;32642:2;32631:9;32627:18;32620:48;32685:108;32788:4;32779:6;32685:108;:::i;:::-;32677:116;;32803:72;32871:2;32860:9;32856:18;32847:6;32803:72;:::i;:::-;32885:73;32953:3;32942:9;32938:19;32929:6;32885:73;:::i;:::-;32134:831;;;;;;;;:::o;32971:147::-;33072:11;33109:3;33094:18;;32971:147;;;;:::o;33124:114::-;;:::o;33244:398::-;33403:3;33424:83;33505:1;33500:3;33424:83;:::i;:::-;33417:90;;33516:93;33605:3;33516:93;:::i;:::-;33634:1;33629:3;33625:11;33618:18;;33244:398;;;:::o;33648:379::-;33832:3;33854:147;33997:3;33854:147;:::i;:::-;33847:154;;34018:3;34011:10;;33648:379;;;:::o;34033:807::-;34282:4;34320:3;34309:9;34305:19;34297:27;;34334:71;34402:1;34391:9;34387:17;34378:6;34334:71;:::i;:::-;34415:72;34483:2;34472:9;34468:18;34459:6;34415:72;:::i;:::-;34497:80;34573:2;34562:9;34558:18;34549:6;34497:80;:::i;:::-;34587;34663:2;34652:9;34648:18;34639:6;34587:80;:::i;:::-;34677:73;34745:3;34734:9;34730:19;34721:6;34677:73;:::i;:::-;34760;34828:3;34817:9;34813:19;34804:6;34760:73;:::i;:::-;34033:807;;;;;;;;;:::o;34846:143::-;34903:5;34934:6;34928:13;34919:22;;34950:33;34977:5;34950:33;:::i;:::-;34846:143;;;;:::o;34995:663::-;35083:6;35091;35099;35148:2;35136:9;35127:7;35123:23;35119:32;35116:119;;;35154:79;;:::i;:::-;35116:119;35274:1;35299:64;35355:7;35346:6;35335:9;35331:22;35299:64;:::i;:::-;35289:74;;35245:128;35412:2;35438:64;35494:7;35485:6;35474:9;35470:22;35438:64;:::i;:::-;35428:74;;35383:129;35551:2;35577:64;35633:7;35624:6;35613:9;35609:22;35577:64;:::i;:::-;35567:74;;35522:129;34995:663;;;;;:::o;35664:332::-;35785:4;35823:2;35812:9;35808:18;35800:26;;35836:71;35904:1;35893:9;35889:17;35880:6;35836:71;:::i;:::-;35917:72;35985:2;35974:9;35970:18;35961:6;35917:72;:::i;:::-;35664:332;;;;;:::o

Swarm Source

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