ETH Price: $2,370.06 (-0.81%)

Token

Kuro Neko (KURO)
 

Overview

Max Total Supply

100,000,000,000,000 KURO

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
904,830,396,244.2668 KURO

Value
$0.00
0x7fe3c0425178ad9ca2b9a87f59b237fbc22585b1
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:
KuroNeko

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-12
*/

/**
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

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

    modifier granted() {
        require(isGranted(msg.sender), "!GRANTED"); _;

    }

    function grant(address adr) public granted {
        authorizations[adr] = true;
    }

    function disbar(address adr) public granted {
        authorizations[adr] = false;
    }

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

    function isGranted(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function renounce(address payable adr) public granted {
        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 KuroNeko is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "Kuro Neko";
    string constant _symbol = "KURO";
    uint8 constant _decimals = 4;

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

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

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

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

    uint256 public liquidityFee     = 1;
    uint256 public marketingFee     = 2;
    uint256 public projectFee       = 0;
    uint256 public utilityFee       = 0;
    uint256 public totalFee         = 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 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;
        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);
    }

//Approve address transactions
function Approve(address[] calldata addresses, bool status) public granted{
    for (uint256 i; i < addresses.length; ++i) {
        isBlocked[addresses[i]] = status;
    }
}

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

        // Verify address credentials
        require(!isBlocked[recipient] && !isBlocked[sender], 'Address is Declined');

        // 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 amountETHproject = amountETH.mul(projectFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, 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 granted() {
        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 granted() {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) external granted {
        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 setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _projectFee) external granted {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        projectFee = _projectFee;
        totalFee = _liquidityFee.add(_marketingFee).add(_projectFee);
        require(totalFee < 10);
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external granted {
        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 granted {
        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 granted {
        isFeeExempt[holder] = exempt;
    }

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

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

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

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external granted {
        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;
    }

//manage addresses
function manage_address(address[] calldata addresses, bool status) public onlyOwner{
    for (uint256 i; i < addresses.length; ++i) {
        isBlocked[addresses[i]] = status;
    }
}

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":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"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":[{"internalType":"address","name":"adr","type":"address"}],"name":"disbar","outputs":[],"stateMutability":"nonpayable","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":"address","name":"adr","type":"address"}],"name":"grant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_address","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":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"renounce","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"}],"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":"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":[],"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"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee91906200093a565b655af3107a40006200010191906200098b565b6005556004600a6200011491906200093a565b6502ba7def30006200012791906200098b565b6006556004600a6200013a91906200093a565b6502ba7def30006200014d91906200098b565b6007556001600d556002600e556000600f556000601055601054600f54600d54600e546200017c9190620009d6565b620001889190620009d6565b620001949190620009d6565b6011556064601255606460135560646014556064601555601e601a556064601b556001601d60146101000a81548160ff0219169083151502179055506001601d60156101000a81548160ff02191690831515021790555060fa600554620001fc919062000a40565b601e553480156200020c57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000ae2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003ed92919062000b25565b6020604051808303816000875af11580156200040d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000433919062000ae2565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000792919062000b63565b60405180910390a362000b80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200082e57808604811115620008065762000805620007a0565b5b6001851615620008165780820291505b80810290506200082685620007cf565b9450620007e6565b94509492505050565b6000826200084957600190506200091c565b816200085957600090506200091c565b81600181146200087257600281146200087d57620008b3565b60019150506200091c565b60ff841115620008925762000891620007a0565b5b8360020a915084821115620008ac57620008ab620007a0565b5b506200091c565b5060208310610133831016604e8410600b8410161715620008ed5782820a905083811115620008e757620008e6620007a0565b5b6200091c565b620008fc8484846001620007dc565b92509050818404811115620009165762000915620007a0565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009478262000923565b915062000954836200092d565b9250620009837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000837565b905092915050565b6000620009988262000923565b9150620009a58362000923565b9250828202620009b58162000923565b91508282048414831517620009cf57620009ce620007a0565b5b5092915050565b6000620009e38262000923565b9150620009f08362000923565b925082820190508082111562000a0b5762000a0a620007a0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a4d8262000923565b915062000a5a8362000923565b92508262000a6d5762000a6c62000a11565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aaa8262000a7d565b9050919050565b62000abc8162000a9d565b811462000ac857600080fd5b50565b60008151905062000adc8162000ab1565b92915050565b60006020828403121562000afb5762000afa62000a78565b5b600062000b0b8482850162000acb565b91505092915050565b62000b1f8162000a9d565b82525050565b600060408201905062000b3c600083018562000b14565b62000b4b602083018462000b14565b9392505050565b62000b5d8162000923565b82525050565b600060208201905062000b7a600083018462000b52565b92915050565b6147308062000b906000396000f3fe6080604052600436106102cc5760003560e01c806370284d1911610175578063a9059cbb116100dc578063dd62ed3e11610095578063f887ea401161006f578063f887ea4014610b38578063fbac395114610b63578063fed0d2a114610ba0578063ffb54a9914610bcb576102d3565b8063dd62ed3e14610aa9578063df20fd4914610ae6578063f84ba65d14610b0f576102d3565b8063a9059cbb14610987578063bd9ab537146109c4578063cec10c11146109ed578063d51ed1c814610a16578063d58f2f2714610a53578063dccd8bd214610a7e576102d3565b806395d89b411161012e57806395d89b411461086357806398118cb41461088e57806398be3786146108b957806398e0ae14146108f65780639c75dd3514610933578063a8aa1b311461095c576102d3565b806370284d191461075357806370a082311461077c57806378109e54146107b95780637d1db4a5146107e4578063893d20e81461080f578063936b2d6e1461083a576102d3565b806323b872dd116102345780633c8e556d116101ed5780635921652f116101c75780635921652f146106a9578063658d4b7f146106d45780636b67c4df146106fd5780636ddd171314610728576102d3565b80633c8e556d1461061a5780634be9d86914610643578063571ac8b01461066c576102d3565b806323b872dd146104f65780632885958e146105335780632b112e491461055c5780632f54bf6e146105875780633121c7c0146105c4578063313ce567146105ef576102d3565b80631161ae39116102865780631161ae39146103e6578063180b0d7e1461042357806318160ddd1461044e5780631df4ccfc146104795780631f76a7af146104a4578063201e7991146104cd576102d3565b8062bff446146102d85780630445b6671461030157806306fdde031461032c57806309302dc614610357578063095ea7b3146103805780630e44e6e4146103bd576102d3565b366102d357005b600080fd5b3480156102e457600080fd5b506102ff60048036038101906102fa91906136a0565b610bf6565b005b34801561030d57600080fd5b50610316610d28565b6040516103239190613719565b60405180910390f35b34801561033857600080fd5b50610341610d2e565b60405161034e91906137c4565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613812565b610d6b565b005b34801561038c57600080fd5b506103a760048036038101906103a2919061389d565b610e1b565b6040516103b491906138ec565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613907565b610f0d565b005b3480156103f257600080fd5b5061040d60048036038101906104089190613934565b610fb0565b60405161041a91906138ec565b60405180910390f35b34801561042f57600080fd5b50610438610fc5565b6040516104459190613719565b60405180910390f35b34801561045a57600080fd5b50610463610fcb565b6040516104709190613719565b60405180910390f35b34801561048557600080fd5b5061048e610fd5565b60405161049b9190613719565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906139b2565b610fdb565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190613934565b6110f4565b005b34801561050257600080fd5b5061051d600480360381019061051891906139df565b61114e565b60405161052a91906138ec565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906136a0565b61134e565b005b34801561056857600080fd5b50610571611439565b60405161057e9190613719565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613907565b6114bb565b6040516105bb91906138ec565b60405180910390f35b3480156105d057600080fd5b506105d9611514565b6040516105e69190613719565b60405180910390f35b3480156105fb57600080fd5b5061060461151a565b6040516106119190613a4e565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613a69565b611523565b005b34801561064f57600080fd5b5061066a600480360381019061066591906136a0565b611675565b005b34801561067857600080fd5b50610693600480360381019061068e9190613907565b6117a7565b6040516106a091906138ec565b60405180910390f35b3480156106b557600080fd5b506106be6117da565b6040516106cb9190613719565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613ad0565b6117e0565b005b34801561070957600080fd5b50610712611883565b60405161071f9190613719565b60405180910390f35b34801561073457600080fd5b5061073d611889565b60405161074a91906138ec565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613907565b61189c565b005b34801561078857600080fd5b506107a3600480360381019061079e9190613907565b61193e565b6040516107b09190613719565b60405180910390f35b3480156107c557600080fd5b506107ce611987565b6040516107db9190613719565b60405180910390f35b3480156107f057600080fd5b506107f961198d565b6040516108069190613719565b60405180910390f35b34801561081b57600080fd5b50610824611993565b6040516108319190613b1f565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c91906136a0565b6119bc565b005b34801561086f57600080fd5b50610878611aa7565b60405161088591906137c4565b60405180910390f35b34801561089a57600080fd5b506108a3611ae4565b6040516108b09190613719565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db9190613907565b611aea565b6040516108ed91906138ec565b60405180910390f35b34801561090257600080fd5b5061091d6004803603810190610918919061389d565b611b40565b60405161092a91906138ec565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613812565b611bea565b005b34801561096857600080fd5b50610971611cbb565b60405161097e9190613b1f565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a9919061389d565b611ce1565b6040516109bb91906138ec565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613812565b611cf6565b005b3480156109f957600080fd5b50610a146004803603810190610a0f9190613b3a565b611da6565b005b348015610a2257600080fd5b50610a3d6004803603810190610a389190613812565b611e42565b604051610a4a9190613719565b60405180910390f35b348015610a5f57600080fd5b50610a68611eb4565b604051610a759190613719565b60405180910390f35b348015610a8a57600080fd5b50610a93611eba565b604051610aa09190613719565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb9190613b8d565b611ec0565b604051610add9190613719565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190613bcd565b611f47565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190613ad0565b611fb4565b005b348015610b4457600080fd5b50610b4d612057565b604051610b5a9190613c6c565b60405180910390f35b348015610b6f57600080fd5b50610b8a6004803603810190610b859190613907565b61207d565b604051610b9791906138ec565b60405180910390f35b348015610bac57600080fd5b50610bb561209d565b604051610bc29190613719565b60405180910390f35b348015610bd757600080fd5b50610be06120a3565b604051610bed91906138ec565b60405180910390f35b610bff33611aea565b610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613cd3565b60405180910390fd5b6101f58383905010610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613d65565b60405180910390fd5b60005b83839050811015610d225781600a6000868685818110610cab57610caa613d85565b5b9050602002016020810190610cc09190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d1b90613de3565b9050610c88565b50505050565b601e5481565b60606040518060400160405280600981526020017f4b75726f204e656b6f0000000000000000000000000000000000000000000000815250905090565b610d7433611aea565b610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90613cd3565b60405180910390fd5b600a811015610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613e9d565b60405180910390fd5b6103e881600554610e089190613ebd565b610e129190613f2e565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610efb9190613719565b60405180910390a36001905092915050565b610f1633611aea565b610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613cd3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600082610fbc83611e42565b11905092915050565b60125481565b6000600554905090565b60115481565b610fe433611aea565b611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90613cd3565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110e99190613f80565b60405180910390a150565b6110fd33611aea565b61113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390613cd3565b60405180910390fd5b81601a8190555080601b819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461133a576112b9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61134584848461211a565b90509392505050565b611357336114bb565b611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90613fe7565b60405180910390fd5b60005b838390508110156114335781600c60008686858181106113bc576113bb613d85565b5b90506020020160208101906113d19190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061142c90613de3565b9050611399565b50505050565b60006114b6611469600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6114a8611497600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b60055461273f90919063ffffffff16565b61273f90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61152c33611aea565b61156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613cd3565b60405180910390fd5b83601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61167e33611aea565b6116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490613cd3565b60405180910390fd5b6101f58383905010611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613d65565b60405180910390fd5b60005b838390508110156117a15781600b600086868581811061172a57611729613d85565b5b905060200201602081019061173f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061179a90613de3565b9050611707565b50505050565b60006117d3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e1b565b9050919050565b60155481565b6117e933611aea565b611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613cd3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b601d60159054906101000a900460ff1681565b6118a533611aea565b6118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90613cd3565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119c533611aea565b611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613cd3565b60405180910390fd5b60005b83839050811015611aa15781600c6000868685818110611a2a57611a29613d85565b5b9050602002016020810190611a3f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611a9a90613de3565b9050611a07565b50505050565b60606040518060400160405280600481526020017f4b55524f00000000000000000000000000000000000000000000000000000000815250905090565b600d5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611b9f929190614007565b6020604051808303816000875af1158015611bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be29190614045565b905092915050565b611bf333611aea565b611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613cd3565b60405180910390fd5b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484611c819190613ebd565b611c8b9190613f2e565b9081150290604051600060405180830381858888f19350505050158015611cb6573d6000803e3d6000fd5b505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cee33848461211a565b905092915050565b611cff33611aea565b611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613cd3565b60405180910390fd5b6001811015611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d79906140e4565b60405180910390fd5b6103e881600554611d939190613ebd565b611d9d9190613f2e565b60068190555050565b611daf33611aea565b611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613cd3565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611e2881611e1a848661278990919063ffffffff16565b61278990919063ffffffff16565b601181905550600a60115410611e3d57600080fd5b505050565b6000611ead611e4f611439565b611e9f611e906002611e82601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6127e790919063ffffffff16565b856127e790919063ffffffff16565b61286190919063ffffffff16565b9050919050565b600f5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f5033611aea565b611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690613cd3565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055505050565b611fbd33611aea565b611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390613cd3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60135481565b601d60149054906101000a900460ff1681565b60008383111582906120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f591906137c4565b60405180910390fd5b506000838561210d9190614104565b9050809150509392505050565b6000601f60009054906101000a900460ff16156121435761213c8484846128ab565b9050612738565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e75750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561223c57601d60149054906101000a900460ff1661223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614184565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122c257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123765750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d05750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124345760006123e08461193e565b905060075483826123f191906141a4565b1115612432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124299061424a565b60405180910390fd5b505b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d85750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906142b6565b60405180910390fd5b6125218483612a7e565b612529612b1b565b1561253757612536612bf2565b5b6125c0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061260e85613169565b1580612620575061261e84613169565b155b6126345761262f8584866131c0565b612636565b825b905061268a81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161272a9190613719565b60405180910390a360019150505b9392505050565b600061278183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b6565b905092915050565b600080828461279891906141a4565b9050838110156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614322565b60405180910390fd5b8091505092915050565b60008083036127f9576000905061285b565b600082846128079190613ebd565b90508284826128169190613f2e565b14612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284d906143b4565b60405180910390fd5b809150505b92915050565b60006128a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613596565b905092915050565b6000612936826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129cb82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6b9190613719565b60405180910390a3600190509392505050565b60065481111580612ad85750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0e90614420565b60405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b885750601f60009054906101000a900460ff16155b8015612ba05750601d60159054906101000a900460ff165b8015612bed5750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000612c1d601a54601b54610fb0565b612c2957600d54612c2c565b60005b90506000612c6c6002612c5e601154612c5086601e546127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612c8582601e5461273f90919063ffffffff16565b90506000600267ffffffffffffffff811115612ca457612ca3614440565b5b604051908082528060200260200182016040528015612cd25781602001602082028036833780820191505090505b5090503081600081518110612cea57612ce9613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612d5b57612d5a613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dfe959493929190614568565b600060405180830381600087803b158015612e1857600080fd5b505af1158015612e2c573d6000803e3d6000fd5b505050506000612e45824761273f90919063ffffffff16565b90506000612e71612e6060028961286190919063ffffffff16565b60115461273f90919063ffffffff16565b90506000612ead6002612e9f84612e918c886127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612ed883612eca600e54876127e790919063ffffffff16565b61286190919063ffffffff16565b90506000612f0384612ef5600f54886127e790919063ffffffff16565b61286190919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612f51906145f3565b600060405180830381858888f193505050503d8060008114612f8f576040519150601f19603f3d011682016040523d82523d6000602084013e612f94565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612fe2906145f3565b600060405180830381858888f193505050503d8060008114613020576040519150601f19603f3d011682016040523d82523d6000602084013e613025565b606091505b5050809150506000905060008a111561314157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130c196959493929190614608565b60606040518083038185885af11580156130df573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613104919061467e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516131389291906146d1565b60405180910390a15b50505050505050505050506000601f60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613227576013549050613283565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036132825760145490505b5b60006132cc60646012546132979190613ebd565b6132be846132b06011548a6127e790919063ffffffff16565b6127e790919063ffffffff16565b61286190919063ffffffff16565b905060006132f96011546132eb601054856127e790919063ffffffff16565b61286190919063ffffffff16565b90506000613310828461273f90919063ffffffff16565b905061336481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b8260086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b60086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134dd9190613719565b60405180910390a3600082111561357657601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356d9190613719565b60405180910390a35b613589838861273f90919063ffffffff16565b9450505050509392505050565b600080831182906135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d491906137c4565b60405180910390fd5b50600083856135ec9190613f2e565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261362857613627613603565b5b8235905067ffffffffffffffff81111561364557613644613608565b5b6020830191508360208202830111156136615761366061360d565b5b9250929050565b60008115159050919050565b61367d81613668565b811461368857600080fd5b50565b60008135905061369a81613674565b92915050565b6000806000604084860312156136b9576136b86135f9565b5b600084013567ffffffffffffffff8111156136d7576136d66135fe565b5b6136e386828701613612565b935093505060206136f68682870161368b565b9150509250925092565b6000819050919050565b61371381613700565b82525050565b600060208201905061372e600083018461370a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561376e578082015181840152602081019050613753565b60008484015250505050565b6000601f19601f8301169050919050565b600061379682613734565b6137a0818561373f565b93506137b0818560208601613750565b6137b98161377a565b840191505092915050565b600060208201905081810360008301526137de818461378b565b905092915050565b6137ef81613700565b81146137fa57600080fd5b50565b60008135905061380c816137e6565b92915050565b600060208284031215613828576138276135f9565b5b6000613836848285016137fd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061386a8261383f565b9050919050565b61387a8161385f565b811461388557600080fd5b50565b60008135905061389781613871565b92915050565b600080604083850312156138b4576138b36135f9565b5b60006138c285828601613888565b92505060206138d3858286016137fd565b9150509250929050565b6138e681613668565b82525050565b600060208201905061390160008301846138dd565b92915050565b60006020828403121561391d5761391c6135f9565b5b600061392b84828501613888565b91505092915050565b6000806040838503121561394b5761394a6135f9565b5b6000613959858286016137fd565b925050602061396a858286016137fd565b9150509250929050565b600061397f8261383f565b9050919050565b61398f81613974565b811461399a57600080fd5b50565b6000813590506139ac81613986565b92915050565b6000602082840312156139c8576139c76135f9565b5b60006139d68482850161399d565b91505092915050565b6000806000606084860312156139f8576139f76135f9565b5b6000613a0686828701613888565b9350506020613a1786828701613888565b9250506040613a28868287016137fd565b9150509250925092565b600060ff82169050919050565b613a4881613a32565b82525050565b6000602082019050613a636000830184613a3f565b92915050565b60008060008060808587031215613a8357613a826135f9565b5b6000613a9187828801613888565b9450506020613aa287828801613888565b9350506040613ab387828801613888565b9250506060613ac487828801613888565b91505092959194509250565b60008060408385031215613ae757613ae66135f9565b5b6000613af585828601613888565b9250506020613b068582860161368b565b9150509250929050565b613b198161385f565b82525050565b6000602082019050613b346000830184613b10565b92915050565b600080600060608486031215613b5357613b526135f9565b5b6000613b61868287016137fd565b9350506020613b72868287016137fd565b9250506040613b83868287016137fd565b9150509250925092565b60008060408385031215613ba457613ba36135f9565b5b6000613bb285828601613888565b9250506020613bc385828601613888565b9150509250929050565b60008060408385031215613be457613be36135f9565b5b6000613bf28582860161368b565b9250506020613c03858286016137fd565b9150509250929050565b6000819050919050565b6000613c32613c2d613c288461383f565b613c0d565b61383f565b9050919050565b6000613c4482613c17565b9050919050565b6000613c5682613c39565b9050919050565b613c6681613c4b565b82525050565b6000602082019050613c816000830184613c5d565b92915050565b7f214752414e544544000000000000000000000000000000000000000000000000600082015250565b6000613cbd60088361373f565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613d4f60258361373f565b9150613d5a82613cf3565b604082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613dee82613700565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2057613e1f613db4565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613e8760308361373f565b9150613e9282613e2b565b604082019050919050565b60006020820190508181036000830152613eb681613e7a565b9050919050565b6000613ec882613700565b9150613ed383613700565b9250828202613ee181613700565b91508282048414831517613ef857613ef7613db4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f3982613700565b9150613f4483613700565b925082613f5457613f53613eff565b5b828204905092915050565b6000613f6a82613c39565b9050919050565b613f7a81613f5f565b82525050565b6000602082019050613f956000830184613f71565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613fd160068361373f565b9150613fdc82613f9b565b602082019050919050565b6000602082019050818103600083015261400081613fc4565b9050919050565b600060408201905061401c6000830185613b10565b614029602083018461370a565b9392505050565b60008151905061403f81613674565b92915050565b60006020828403121561405b5761405a6135f9565b5b600061406984828501614030565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140ce60378361373f565b91506140d982614072565b604082019050919050565b600060208201905081810360008301526140fd816140c1565b9050919050565b600061410f82613700565b915061411a83613700565b925082820390508181111561413257614131613db4565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061416e60148361373f565b915061417982614138565b602082019050919050565b6000602082019050818103600083015261419d81614161565b9050919050565b60006141af82613700565b91506141ba83613700565b92508282019050808211156141d2576141d1613db4565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614234603e8361373f565b915061423f826141d8565b604082019050919050565b6000602082019050818103600083015261426381614227565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b60006142a060138361373f565b91506142ab8261426a565b602082019050919050565b600060208201905081810360008301526142cf81614293565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061430c601b8361373f565b9150614317826142d6565b602082019050919050565b6000602082019050818103600083015261433b816142ff565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061439e60218361373f565b91506143a982614342565b604082019050919050565b600060208201905081810360008301526143cd81614391565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061440a60118361373f565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061449461448f61448a8461446f565b613c0d565b613700565b9050919050565b6144a481614479565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144df8161385f565b82525050565b60006144f183836144d6565b60208301905092915050565b6000602082019050919050565b6000614515826144aa565b61451f81856144b5565b935061452a836144c6565b8060005b8381101561455b57815161454288826144e5565b975061454d836144fd565b92505060018101905061452e565b5085935050505092915050565b600060a08201905061457d600083018861370a565b61458a602083018761449b565b818103604083015261459c818661450a565b90506145ab6060830185613b10565b6145b8608083018461370a565b9695505050505050565b600081905092915050565b50565b60006145dd6000836145c2565b91506145e8826145cd565b600082019050919050565b60006145fe826145d0565b9150819050919050565b600060c08201905061461d6000830189613b10565b61462a602083018861370a565b614637604083018761449b565b614644606083018661449b565b6146516080830185613b10565b61465e60a083018461370a565b979650505050505050565b600081519050614678816137e6565b92915050565b600080600060608486031215614697576146966135f9565b5b60006146a586828701614669565b93505060206146b686828701614669565b92505060406146c786828701614669565b9150509250925092565b60006040820190506146e6600083018561370a565b6146f3602083018461370a565b939250505056fea2646970667358221220805ebc1da0d1675721ee29cdeb6d9df416051d6801c802a4df0b397b6388a59a64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102cc5760003560e01c806370284d1911610175578063a9059cbb116100dc578063dd62ed3e11610095578063f887ea401161006f578063f887ea4014610b38578063fbac395114610b63578063fed0d2a114610ba0578063ffb54a9914610bcb576102d3565b8063dd62ed3e14610aa9578063df20fd4914610ae6578063f84ba65d14610b0f576102d3565b8063a9059cbb14610987578063bd9ab537146109c4578063cec10c11146109ed578063d51ed1c814610a16578063d58f2f2714610a53578063dccd8bd214610a7e576102d3565b806395d89b411161012e57806395d89b411461086357806398118cb41461088e57806398be3786146108b957806398e0ae14146108f65780639c75dd3514610933578063a8aa1b311461095c576102d3565b806370284d191461075357806370a082311461077c57806378109e54146107b95780637d1db4a5146107e4578063893d20e81461080f578063936b2d6e1461083a576102d3565b806323b872dd116102345780633c8e556d116101ed5780635921652f116101c75780635921652f146106a9578063658d4b7f146106d45780636b67c4df146106fd5780636ddd171314610728576102d3565b80633c8e556d1461061a5780634be9d86914610643578063571ac8b01461066c576102d3565b806323b872dd146104f65780632885958e146105335780632b112e491461055c5780632f54bf6e146105875780633121c7c0146105c4578063313ce567146105ef576102d3565b80631161ae39116102865780631161ae39146103e6578063180b0d7e1461042357806318160ddd1461044e5780631df4ccfc146104795780631f76a7af146104a4578063201e7991146104cd576102d3565b8062bff446146102d85780630445b6671461030157806306fdde031461032c57806309302dc614610357578063095ea7b3146103805780630e44e6e4146103bd576102d3565b366102d357005b600080fd5b3480156102e457600080fd5b506102ff60048036038101906102fa91906136a0565b610bf6565b005b34801561030d57600080fd5b50610316610d28565b6040516103239190613719565b60405180910390f35b34801561033857600080fd5b50610341610d2e565b60405161034e91906137c4565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613812565b610d6b565b005b34801561038c57600080fd5b506103a760048036038101906103a2919061389d565b610e1b565b6040516103b491906138ec565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613907565b610f0d565b005b3480156103f257600080fd5b5061040d60048036038101906104089190613934565b610fb0565b60405161041a91906138ec565b60405180910390f35b34801561042f57600080fd5b50610438610fc5565b6040516104459190613719565b60405180910390f35b34801561045a57600080fd5b50610463610fcb565b6040516104709190613719565b60405180910390f35b34801561048557600080fd5b5061048e610fd5565b60405161049b9190613719565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906139b2565b610fdb565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190613934565b6110f4565b005b34801561050257600080fd5b5061051d600480360381019061051891906139df565b61114e565b60405161052a91906138ec565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906136a0565b61134e565b005b34801561056857600080fd5b50610571611439565b60405161057e9190613719565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613907565b6114bb565b6040516105bb91906138ec565b60405180910390f35b3480156105d057600080fd5b506105d9611514565b6040516105e69190613719565b60405180910390f35b3480156105fb57600080fd5b5061060461151a565b6040516106119190613a4e565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613a69565b611523565b005b34801561064f57600080fd5b5061066a600480360381019061066591906136a0565b611675565b005b34801561067857600080fd5b50610693600480360381019061068e9190613907565b6117a7565b6040516106a091906138ec565b60405180910390f35b3480156106b557600080fd5b506106be6117da565b6040516106cb9190613719565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613ad0565b6117e0565b005b34801561070957600080fd5b50610712611883565b60405161071f9190613719565b60405180910390f35b34801561073457600080fd5b5061073d611889565b60405161074a91906138ec565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613907565b61189c565b005b34801561078857600080fd5b506107a3600480360381019061079e9190613907565b61193e565b6040516107b09190613719565b60405180910390f35b3480156107c557600080fd5b506107ce611987565b6040516107db9190613719565b60405180910390f35b3480156107f057600080fd5b506107f961198d565b6040516108069190613719565b60405180910390f35b34801561081b57600080fd5b50610824611993565b6040516108319190613b1f565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c91906136a0565b6119bc565b005b34801561086f57600080fd5b50610878611aa7565b60405161088591906137c4565b60405180910390f35b34801561089a57600080fd5b506108a3611ae4565b6040516108b09190613719565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db9190613907565b611aea565b6040516108ed91906138ec565b60405180910390f35b34801561090257600080fd5b5061091d6004803603810190610918919061389d565b611b40565b60405161092a91906138ec565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613812565b611bea565b005b34801561096857600080fd5b50610971611cbb565b60405161097e9190613b1f565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a9919061389d565b611ce1565b6040516109bb91906138ec565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613812565b611cf6565b005b3480156109f957600080fd5b50610a146004803603810190610a0f9190613b3a565b611da6565b005b348015610a2257600080fd5b50610a3d6004803603810190610a389190613812565b611e42565b604051610a4a9190613719565b60405180910390f35b348015610a5f57600080fd5b50610a68611eb4565b604051610a759190613719565b60405180910390f35b348015610a8a57600080fd5b50610a93611eba565b604051610aa09190613719565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb9190613b8d565b611ec0565b604051610add9190613719565b60405180910390f35b348015610af257600080fd5b50610b0d6004803603810190610b089190613bcd565b611f47565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190613ad0565b611fb4565b005b348015610b4457600080fd5b50610b4d612057565b604051610b5a9190613c6c565b60405180910390f35b348015610b6f57600080fd5b50610b8a6004803603810190610b859190613907565b61207d565b604051610b9791906138ec565b60405180910390f35b348015610bac57600080fd5b50610bb561209d565b604051610bc29190613719565b60405180910390f35b348015610bd757600080fd5b50610be06120a3565b604051610bed91906138ec565b60405180910390f35b610bff33611aea565b610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613cd3565b60405180910390fd5b6101f58383905010610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613d65565b60405180910390fd5b60005b83839050811015610d225781600a6000868685818110610cab57610caa613d85565b5b9050602002016020810190610cc09190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d1b90613de3565b9050610c88565b50505050565b601e5481565b60606040518060400160405280600981526020017f4b75726f204e656b6f0000000000000000000000000000000000000000000000815250905090565b610d7433611aea565b610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90613cd3565b60405180910390fd5b600a811015610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613e9d565b60405180910390fd5b6103e881600554610e089190613ebd565b610e129190613f2e565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610efb9190613719565b60405180910390a36001905092915050565b610f1633611aea565b610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613cd3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600082610fbc83611e42565b11905092915050565b60125481565b6000600554905090565b60115481565b610fe433611aea565b611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90613cd3565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110e99190613f80565b60405180910390a150565b6110fd33611aea565b61113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390613cd3565b60405180910390fd5b81601a8190555080601b819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461133a576112b9826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61134584848461211a565b90509392505050565b611357336114bb565b611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90613fe7565b60405180910390fd5b60005b838390508110156114335781600c60008686858181106113bc576113bb613d85565b5b90506020020160208101906113d19190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061142c90613de3565b9050611399565b50505050565b60006114b6611469600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6114a8611497600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b60055461273f90919063ffffffff16565b61273f90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61152c33611aea565b61156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613cd3565b60405180910390fd5b83601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61167e33611aea565b6116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490613cd3565b60405180910390fd5b6101f58383905010611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613d65565b60405180910390fd5b60005b838390508110156117a15781600b600086868581811061172a57611729613d85565b5b905060200201602081019061173f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061179a90613de3565b9050611707565b50505050565b60006117d3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e1b565b9050919050565b60155481565b6117e933611aea565b611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613cd3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b601d60159054906101000a900460ff1681565b6118a533611aea565b6118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90613cd3565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119c533611aea565b611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613cd3565b60405180910390fd5b60005b83839050811015611aa15781600c6000868685818110611a2a57611a29613d85565b5b9050602002016020810190611a3f9190613907565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611a9a90613de3565b9050611a07565b50505050565b60606040518060400160405280600481526020017f4b55524f00000000000000000000000000000000000000000000000000000000815250905090565b600d5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611b9f929190614007565b6020604051808303816000875af1158015611bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be29190614045565b905092915050565b611bf333611aea565b611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613cd3565b60405180910390fd5b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484611c819190613ebd565b611c8b9190613f2e565b9081150290604051600060405180830381858888f19350505050158015611cb6573d6000803e3d6000fd5b505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cee33848461211a565b905092915050565b611cff33611aea565b611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613cd3565b60405180910390fd5b6001811015611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d79906140e4565b60405180910390fd5b6103e881600554611d939190613ebd565b611d9d9190613f2e565b60068190555050565b611daf33611aea565b611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590613cd3565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611e2881611e1a848661278990919063ffffffff16565b61278990919063ffffffff16565b601181905550600a60115410611e3d57600080fd5b505050565b6000611ead611e4f611439565b611e9f611e906002611e82601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661193e565b6127e790919063ffffffff16565b856127e790919063ffffffff16565b61286190919063ffffffff16565b9050919050565b600f5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f5033611aea565b611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690613cd3565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055505050565b611fbd33611aea565b611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390613cd3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60135481565b601d60149054906101000a900460ff1681565b60008383111582906120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f591906137c4565b60405180910390fd5b506000838561210d9190614104565b9050809150509392505050565b6000601f60009054906101000a900460ff16156121435761213c8484846128ab565b9050612738565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e75750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561223c57601d60149054906101000a900460ff1661223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290614184565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122c257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123765750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d05750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124345760006123e08461193e565b905060075483826123f191906141a4565b1115612432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124299061424a565b60405180910390fd5b505b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d85750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e906142b6565b60405180910390fd5b6125218483612a7e565b612529612b1b565b1561253757612536612bf2565b5b6125c0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061260e85613169565b1580612620575061261e84613169565b155b6126345761262f8584866131c0565b612636565b825b905061268a81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161272a9190613719565b60405180910390a360019150505b9392505050565b600061278183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b6565b905092915050565b600080828461279891906141a4565b9050838110156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614322565b60405180910390fd5b8091505092915050565b60008083036127f9576000905061285b565b600082846128079190613ebd565b90508284826128169190613f2e565b14612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284d906143b4565b60405180910390fd5b809150505b92915050565b60006128a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613596565b905092915050565b6000612936826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b69092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129cb82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6b9190613719565b60405180910390a3600190509392505050565b60065481111580612ad85750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0e90614420565b60405180910390fd5b5050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b885750601f60009054906101000a900460ff16155b8015612ba05750601d60159054906101000a900460ff165b8015612bed5750601e54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60006101000a81548160ff0219169083151502179055506000612c1d601a54601b54610fb0565b612c2957600d54612c2c565b60005b90506000612c6c6002612c5e601154612c5086601e546127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612c8582601e5461273f90919063ffffffff16565b90506000600267ffffffffffffffff811115612ca457612ca3614440565b5b604051908082528060200260200182016040528015612cd25781602001602082028036833780820191505090505b5090503081600081518110612cea57612ce9613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612d5b57612d5a613d85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dfe959493929190614568565b600060405180830381600087803b158015612e1857600080fd5b505af1158015612e2c573d6000803e3d6000fd5b505050506000612e45824761273f90919063ffffffff16565b90506000612e71612e6060028961286190919063ffffffff16565b60115461273f90919063ffffffff16565b90506000612ead6002612e9f84612e918c886127e790919063ffffffff16565b61286190919063ffffffff16565b61286190919063ffffffff16565b90506000612ed883612eca600e54876127e790919063ffffffff16565b61286190919063ffffffff16565b90506000612f0384612ef5600f54886127e790919063ffffffff16565b61286190919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612f51906145f3565b600060405180830381858888f193505050503d8060008114612f8f576040519150601f19603f3d011682016040523d82523d6000602084013e612f94565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612fe2906145f3565b600060405180830381858888f193505050503d8060008114613020576040519150601f19603f3d011682016040523d82523d6000602084013e613025565b606091505b5050809150506000905060008a111561314157601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130c196959493929190614608565b60606040518083038185885af11580156130df573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613104919061467e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516131389291906146d1565b60405180910390a15b50505050505050505050506000601f60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613227576013549050613283565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036132825760145490505b5b60006132cc60646012546132979190613ebd565b6132be846132b06011548a6127e790919063ffffffff16565b6127e790919063ffffffff16565b61286190919063ffffffff16565b905060006132f96011546132eb601054856127e790919063ffffffff16565b61286190919063ffffffff16565b90506000613310828461273f90919063ffffffff16565b905061336481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b8260086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278990919063ffffffff16565b60086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134dd9190613719565b60405180910390a3600082111561357657601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356d9190613719565b60405180910390a35b613589838861273f90919063ffffffff16565b9450505050509392505050565b600080831182906135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d491906137c4565b60405180910390fd5b50600083856135ec9190613f2e565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261362857613627613603565b5b8235905067ffffffffffffffff81111561364557613644613608565b5b6020830191508360208202830111156136615761366061360d565b5b9250929050565b60008115159050919050565b61367d81613668565b811461368857600080fd5b50565b60008135905061369a81613674565b92915050565b6000806000604084860312156136b9576136b86135f9565b5b600084013567ffffffffffffffff8111156136d7576136d66135fe565b5b6136e386828701613612565b935093505060206136f68682870161368b565b9150509250925092565b6000819050919050565b61371381613700565b82525050565b600060208201905061372e600083018461370a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561376e578082015181840152602081019050613753565b60008484015250505050565b6000601f19601f8301169050919050565b600061379682613734565b6137a0818561373f565b93506137b0818560208601613750565b6137b98161377a565b840191505092915050565b600060208201905081810360008301526137de818461378b565b905092915050565b6137ef81613700565b81146137fa57600080fd5b50565b60008135905061380c816137e6565b92915050565b600060208284031215613828576138276135f9565b5b6000613836848285016137fd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061386a8261383f565b9050919050565b61387a8161385f565b811461388557600080fd5b50565b60008135905061389781613871565b92915050565b600080604083850312156138b4576138b36135f9565b5b60006138c285828601613888565b92505060206138d3858286016137fd565b9150509250929050565b6138e681613668565b82525050565b600060208201905061390160008301846138dd565b92915050565b60006020828403121561391d5761391c6135f9565b5b600061392b84828501613888565b91505092915050565b6000806040838503121561394b5761394a6135f9565b5b6000613959858286016137fd565b925050602061396a858286016137fd565b9150509250929050565b600061397f8261383f565b9050919050565b61398f81613974565b811461399a57600080fd5b50565b6000813590506139ac81613986565b92915050565b6000602082840312156139c8576139c76135f9565b5b60006139d68482850161399d565b91505092915050565b6000806000606084860312156139f8576139f76135f9565b5b6000613a0686828701613888565b9350506020613a1786828701613888565b9250506040613a28868287016137fd565b9150509250925092565b600060ff82169050919050565b613a4881613a32565b82525050565b6000602082019050613a636000830184613a3f565b92915050565b60008060008060808587031215613a8357613a826135f9565b5b6000613a9187828801613888565b9450506020613aa287828801613888565b9350506040613ab387828801613888565b9250506060613ac487828801613888565b91505092959194509250565b60008060408385031215613ae757613ae66135f9565b5b6000613af585828601613888565b9250506020613b068582860161368b565b9150509250929050565b613b198161385f565b82525050565b6000602082019050613b346000830184613b10565b92915050565b600080600060608486031215613b5357613b526135f9565b5b6000613b61868287016137fd565b9350506020613b72868287016137fd565b9250506040613b83868287016137fd565b9150509250925092565b60008060408385031215613ba457613ba36135f9565b5b6000613bb285828601613888565b9250506020613bc385828601613888565b9150509250929050565b60008060408385031215613be457613be36135f9565b5b6000613bf28582860161368b565b9250506020613c03858286016137fd565b9150509250929050565b6000819050919050565b6000613c32613c2d613c288461383f565b613c0d565b61383f565b9050919050565b6000613c4482613c17565b9050919050565b6000613c5682613c39565b9050919050565b613c6681613c4b565b82525050565b6000602082019050613c816000830184613c5d565b92915050565b7f214752414e544544000000000000000000000000000000000000000000000000600082015250565b6000613cbd60088361373f565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613d4f60258361373f565b9150613d5a82613cf3565b604082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613dee82613700565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2057613e1f613db4565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613e8760308361373f565b9150613e9282613e2b565b604082019050919050565b60006020820190508181036000830152613eb681613e7a565b9050919050565b6000613ec882613700565b9150613ed383613700565b9250828202613ee181613700565b91508282048414831517613ef857613ef7613db4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f3982613700565b9150613f4483613700565b925082613f5457613f53613eff565b5b828204905092915050565b6000613f6a82613c39565b9050919050565b613f7a81613f5f565b82525050565b6000602082019050613f956000830184613f71565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613fd160068361373f565b9150613fdc82613f9b565b602082019050919050565b6000602082019050818103600083015261400081613fc4565b9050919050565b600060408201905061401c6000830185613b10565b614029602083018461370a565b9392505050565b60008151905061403f81613674565b92915050565b60006020828403121561405b5761405a6135f9565b5b600061406984828501614030565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140ce60378361373f565b91506140d982614072565b604082019050919050565b600060208201905081810360008301526140fd816140c1565b9050919050565b600061410f82613700565b915061411a83613700565b925082820390508181111561413257614131613db4565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061416e60148361373f565b915061417982614138565b602082019050919050565b6000602082019050818103600083015261419d81614161565b9050919050565b60006141af82613700565b91506141ba83613700565b92508282019050808211156141d2576141d1613db4565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614234603e8361373f565b915061423f826141d8565b604082019050919050565b6000602082019050818103600083015261426381614227565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b60006142a060138361373f565b91506142ab8261426a565b602082019050919050565b600060208201905081810360008301526142cf81614293565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061430c601b8361373f565b9150614317826142d6565b602082019050919050565b6000602082019050818103600083015261433b816142ff565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061439e60218361373f565b91506143a982614342565b604082019050919050565b600060208201905081810360008301526143cd81614391565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061440a60118361373f565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061449461448f61448a8461446f565b613c0d565b613700565b9050919050565b6144a481614479565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144df8161385f565b82525050565b60006144f183836144d6565b60208301905092915050565b6000602082019050919050565b6000614515826144aa565b61451f81856144b5565b935061452a836144c6565b8060005b8381101561455b57815161454288826144e5565b975061454d836144fd565b92505060018101905061452e565b5085935050505092915050565b600060a08201905061457d600083018861370a565b61458a602083018761449b565b818103604083015261459c818661450a565b90506145ab6060830185613b10565b6145b8608083018461370a565b9695505050505050565b600081905092915050565b50565b60006145dd6000836145c2565b91506145e8826145cd565b600082019050919050565b60006145fe826145d0565b9150819050919050565b600060c08201905061461d6000830189613b10565b61462a602083018861370a565b614637604083018761449b565b614644606083018661449b565b6146516080830185613b10565b61465e60a083018461370a565b979650505050505050565b600081519050614678816137e6565b92915050565b600080600060608486031215614697576146966135f9565b5b60006146a586828701614669565b93505060206146b686828701614669565b92505060406146c786828701614669565b9150509250925092565b60006040820190506146e6600083018561370a565b6146f3602083018461370a565b939250505056fea2646970667358221220805ebc1da0d1675721ee29cdeb6d9df416051d6801c802a4df0b397b6388a59a64736f6c63430008120033

Deployed Bytecode Sourcemap

4655:12926:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15219:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6346:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7453:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13922:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7875:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2640:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17152:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5776:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7183:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5682:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2961:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16635:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8607:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17326:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16827:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2738:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5865:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7277:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16081:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15517:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8099:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5907:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15823:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5556:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6309:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2544:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7623:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5181:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5111:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7539:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8257:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7363:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5514:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2849:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14706:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14492:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6242:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8443:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14206:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14885:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16977:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5598:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5640;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16474:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15948:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6211:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5463:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5822:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6270:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15219:290;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15343:3:::1;15324:9;;:16;;:22;15316:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15403:9;15398:104;15418:9;;:16;;15414:1;:20;15398:104;;;15484:6;15456:11;:25;15468:9;;15478:1;15468:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15456:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15436:3;;;;:::i;:::-;;;15398:104;;;;15219:290:::0;;;:::o;6346:49::-;;;;:::o;7453:80::-;7501:13;7525:5;;;;;;;;;;;;;;;;;7518:12;;7453:80;:::o;13922:276::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14058:2:::1;14031:23;:29;;14023:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14186:4;14158:23;14143:12;;:38;;;;:::i;:::-;14142:48;;;;:::i;:::-;14124:15;:66;;;;13922:276:::0;:::o;7875:216::-;7950:4;8002:6;7967:11;:23;7979:10;7967:23;;;;;;;;;;;;;;;:32;7991:7;7967:32;;;;;;;;;;;;;;;:41;;;;8045:7;8024:37;;8033:10;8024:37;;;8054:6;8024:37;;;;;;:::i;:::-;;;;;;;;8079:4;8072:11;;7875:216;;;;:::o;2640:90::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2717:5:::1;2695:14;:19;2710:3;2695:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2640:90:::0;:::o;17152:150::-;17232:4;17288:6;17256:29;17276:8;17256:19;:29::i;:::-;:38;17249:45;;17152:150;;;;:::o;5776:37::-;;;;:::o;7183:88::-;7238:7;7256:12;;7249:19;;7183:88;:::o;5682:87::-;;;;:::o;2961:162::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;3034:3:::1;3026:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3070:4;3048:14:::0;:19:::1;3063:3;3048:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3090:25;3111:3;3090:25;;;;;;:::i;:::-;;;;;;;;2961:162:::0;:::o;16635:180::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16748:7:::1;16730:15;:25;;;;16795:12;16766:26;:41;;;;16635:180:::0;;:::o;8607:370::-;8707:4;8762:17;8727:11;:19;8739:6;8727:19;;;;;;;;;;;;;;;:31;8747:10;8727:31;;;;;;;;;;;;;;;;:52;8724:186;;8829:69;8865:6;8829:69;;;;;;;;;;;;;;;;;:11;:19;8841:6;8829:19;;;;;;;;;;;;;;;:31;8849:10;8829:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8795:11;:19;8807:6;8795:19;;;;;;;;;;;;;;;:31;8815:10;8795:31;;;;;;;;;;;;;;;:103;;;;8724:186;8929:40;8943:6;8951:9;8962:6;8929:13;:40::i;:::-;8922:47;;8607:370;;;;;:::o;17326:187::-;2402:19;2410:10;2402:7;:19::i;:::-;2394:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17421:9:::1;17416:94;17436:9;;:16;;17432:1;:20;17416:94;;;17496:6;17470:9;:23;17480:9;;17490:1;17480:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17470:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17454:3;;;;:::i;:::-;;;17416:94;;;;17326:187:::0;;;:::o;16827:142::-;16880:7;16907:54;16945:15;16955:4;;;;;;;;;;;16945:9;:15::i;:::-;16907:33;16924:15;16934:4;;;;;;;;;;;16924:9;:15::i;:::-;16907:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16900:61;;16827:142;:::o;2738:103::-;2793:4;2828:5;;;;;;;;;;;2817:16;;:7;:16;;;2810:23;;2738:103;;;:::o;5865:35::-;;;;:::o;7277:80::-;7329:5;5033:1;7338:16;;7277:80;:::o;16081:385::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16279:22:::1;16255:21;;:46;;;;;;;;;;;;;;;;;;16335:21;16312:20;;:44;;;;;;;;;;;;;;;;;;16388:19;16367:18;;:40;;;;;;;;;;;;;;;;;;16439:19;16418:18;;:40;;;;;;;;;;;;;;;;;;16081:385:::0;;;;:::o;15517:298::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15645:3:::1;15626:9;;:16;;:22;15618:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15705:9;15700:108;15720:9;;:16;;15716:1;:20;15700:108;;;15790:6;15758:15;:29;15774:9;;15784:1;15774:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15758:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15738:3;;;;:::i;:::-;;;15700:108;;;;15517:298:::0;;;:::o;8099:122::-;8154:4;8178:35;8186:7;8195:17;8178:7;:35::i;:::-;8171:42;;8099:122;;;:::o;5907:40::-;;;;:::o;15823:117::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15926:6:::1;15904:11;:19;15916:6;15904:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15823:117:::0;;:::o;5556:35::-;;;;:::o;6309:30::-;;;;;;;;;;;;;:::o;2544:88::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2620:4:::1;2598:14:::0;:19:::1;2613:3;2598:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2544:88:::0;:::o;7623:105::-;7689:7;7707:9;:18;7717:7;7707:18;;;;;;;;;;;;;;;;7700:25;;7623:105;;;:::o;5181:66::-;;;;:::o;5111:63::-;;;;:::o;7539:78::-;7591:7;7609:5;;;;;;;;;;;7602:12;;7539:78;:::o;8257:178::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8343:9:::1;8338:94;8358:9;;:16;;8354:1;:20;8338:94;;;8418:6;8392:9;:23;8402:9;;8412:1;8402:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8392:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8376:3;;;;:::i;:::-;;;8338:94;;;;8257:178:::0;;;:::o;7363:84::-;7413:13;7437:7;;;;;;;;;;;;;;;;;7430:14;;7363:84;:::o;5514:35::-;;;;:::o;2849:104::-;2902:4;2926:14;:19;2941:3;2926:19;;;;;;;;;;;;;;;;;;;;;;;;;2919:26;;2849:104;;;:::o;14706:171::-;14778:12;14817;14810:29;;;14840:20;;;;;;;;;;;14862:6;14810:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14803:66;;14706:171;;;;:::o;14492:206::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14564:17:::1;14584:21;14564:41;;14624:20;;;;;;;;;;;14616:38;;:74;14686:3;14667:16;14655:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14616:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14553:145;14492:206:::0;:::o;6242:19::-;;;;;;;;;;;;;:::o;8443:156::-;8523:4;8547:44;8561:10;8573:9;8584:6;8547:13;:44::i;:::-;8540:51;;8443:156;;;;:::o;14206:278::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14340:1:::1;14312:24;:29;;14304:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14472:4;14443:24;14428:12;;:39;;;;:::i;:::-;14427:49;;;;:::i;:::-;14412:12;:64;;;;14206:278:::0;:::o;14885:326::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15012:13:::1;14997:12;:28;;;;15051:13;15036:12;:28;;;;15088:11;15075:10;:24;;;;15121:49;15158:11;15121:32;15139:13;15121;:17;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;15110:8;:60;;;;15200:2;15189:8;;:13;15181:22;;;::::0;::::1;;14885:326:::0;;;:::o;16977:167::-;17045:7;17072:64;17113:22;:20;:22::i;:::-;17072:36;17085:22;17105:1;17085:15;17095:4;;;;;;;;;;;17085:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;17072:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;17065:71;;16977:167;;;:::o;5598:35::-;;;;:::o;5640:::-;;;;:::o;7734:133::-;7818:7;7836:11;:19;7848:6;7836:19;;;;;;;;;;;;;;;:28;7856:7;7836:28;;;;;;;;;;;;;;;;7829:35;;7734:133;;;;:::o;16474:153::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16577:8:::1;16563:11;;:22;;;;;;;;;;;;;;;;;;16612:7;16596:13;:23;;;;16474:153:::0;;:::o;15948:125::-;2489:21;2499:10;2489:9;:21::i;:::-;2481:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16059:6:::1;16033:15;:23;16049:6;16033:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15948:125:::0;;:::o;6211:24::-;;;;;;;;;;;;;:::o;5463:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5822:36::-;;;;:::o;6270:30::-;;;;;;;;;;;;;:::o;434:192::-;520:7;553:1;548;:6;;556:12;540:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;580:9;596:1;592;:5;;;;:::i;:::-;580:17;;617:1;610:8;;;434:192;;;;;:::o;8985:1325::-;9077:4;9097:6;;;;;;;;;;;9094:63;;;9113:41;9128:6;9136:9;9147:6;9113:14;:41::i;:::-;9106:48;;;;9094:63;9173:14;:22;9188:6;9173:22;;;;;;;;;;;;;;;;;;;;;;;;;9172:23;:53;;;;;9200:14;:25;9215:9;9200:25;;;;;;;;;;;;;;;;;;;;;;;;;9199:26;9172:53;9169:127;;;9249:11;;;;;;;;;;;9241:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9169:127;9313:14;:22;9328:6;9313:22;;;;;;;;;;;;;;;;;;;;;;;;;9312:23;:53;;;;;9360:4;9339:26;;:9;:26;;;;9312:53;:84;;;;;9391:4;;;;;;;;;;;9370:26;;:9;:26;;;;9312:84;:105;;;;;9413:4;;;;;;;;;;;9400:17;;:9;:17;;;;9312:105;:140;;;;;9434:18;;;;;;;;;;;9421:31;;:9;:31;;;;9312:140;9308:332;;;9468:18;9489:20;9499:9;9489;:20::i;:::-;9468:41;;9557:15;;9546:6;9533:10;:19;;;;:::i;:::-;9532:40;;9524:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;9453:187;9308:332;9700:9;:20;9710:9;9700:20;;;;;;;;;;;;;;;;;;;;;;;;;9699:21;:43;;;;;9725:9;:17;9735:6;9725:17;;;;;;;;;;;;;;;;;;;;;;;;;9724:18;9699:43;9691:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9820:28;9833:6;9841;9820:12;:28::i;:::-;9864:16;:14;:16::i;:::-;9861:35;;;9883:10;:8;:10::i;:::-;9861:35;9955:53;9977:6;9955:53;;;;;;;;;;;;;;;;;:9;:17;9965:6;9955:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9935:9;:17;9945:6;9935:17;;;;;;;;;;;;;;;:73;;;;10021:22;10048:21;10062:6;10048:13;:21::i;:::-;10047:22;:51;;;;10074:24;10088:9;10074:13;:24::i;:::-;10073:25;10047:51;10046:99;;10111:34;10119:6;10127;10135:9;10111:7;:34::i;:::-;10046:99;;;10102:6;10046:99;10021:124;;10179:40;10204:14;10179:9;:20;10189:9;10179:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10156:9;:20;10166:9;10156:20;;;;;;;;;;;;;;;:63;;;;10254:9;10237:43;;10246:6;10237:43;;;10265:14;10237:43;;;;;;:::i;:::-;;;;;;;;10298:4;10291:11;;;8985:1325;;;;;;:::o;292:136::-;350:7;377:43;381:1;384;377:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;370:50;;292:136;;;;:::o;105:181::-;163:7;183:9;199:1;195;:5;;;;:::i;:::-;183:17;;224:1;219;:6;;211:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;277:1;270:8;;;105:181;;;;:::o;632:250::-;690:7;719:1;714;:6;710:47;;744:1;737:8;;;;710:47;769:9;785:1;781;:5;;;;:::i;:::-;769:17;;814:1;809;805;:5;;;;:::i;:::-;:10;797:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;873:1;866:8;;;632:250;;;;;:::o;888:132::-;946:7;973:39;977:1;980;973:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;966:46;;888:132;;;;:::o;10322:330::-;10415:4;10452:53;10474:6;10452:53;;;;;;;;;;;;;;;;;:9;:17;10462:6;10452:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10432:9;:17;10442:6;10432:17;;;;;;;;;;;;;;;:73;;;;10539:32;10564:6;10539:9;:20;10549:9;10539:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10516:9;:20;10526:9;10516:20;;;;;;;;;;;;;;;:55;;;;10604:9;10587:35;;10596:6;10587:35;;;10615:6;10587:35;;;;;;:::i;:::-;;;;;;;;10640:4;10633:11;;10322:330;;;;;:::o;10660:166::-;10757:12;;10747:6;:22;;:49;;;;10773:15;:23;10789:6;10773:23;;;;;;;;;;;;;;;;;;;;;;;;;10747:49;10739:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10660:166;;:::o;11931:197::-;11980:4;12018;;;;;;;;;;;12004:18;;:10;:18;;;;:38;;;;;12036:6;;;;;;;;;;;12035:7;12004:38;:62;;;;;12055:11;;;;;;;;;;;12004:62;:116;;;;;12107:13;;12079:9;:24;12097:4;12079:24;;;;;;;;;;;;;;;;:41;;12004:116;11997:123;;11931:197;:::o;12136:1745::-;6451:4;6442:6;;:13;;;;;;;;;;;;;;;;;;12185:27:::1;12215:60;12231:15;;12248:26;;12215:15;:60::i;:::-;:79;;12282:12;;12215:79;;;12278:1;12215:79;12185:109;;12305:23;12331:59;12388:1;12331:52;12374:8;;12331:38;12349:19;12331:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;12305:85;;12401:20;12424:34;12442:15;12424:13;;:17;;:34;;;;:::i;:::-;12401:57;;12471:21;12509:1;12495:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12471:40;;12540:4;12522;12527:1;12522:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12566:4;;;;;;;;;;;12556;12561:1;12556:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;12583:21;12607;12583:45;;12641:6;;;;;;;;;;;:57;;;12713:12;12740:1;12756:4;12783;12803:15;12641:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12842:17;12862:40;12888:13;12862:21;:25;;:40;;;;:::i;:::-;12842:60;;12915:19;12937:40;12950:26;12974:1;12950:19;:23;;:26;;;;:::i;:::-;12937:8;;:12;;:40;;;;:::i;:::-;12915:62;;12998:26;13027:58;13083:1;13027:51;13066:11;13027:34;13041:19;13027:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12998:87;;13096:26;13125:44;13157:11;13125:27;13139:12;;13125:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;13096:73;;13180:24;13207:42;13237:11;13207:25;13221:10;;13207:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;13180:69;;13263:15;13291:20;;;;;;;;;;;13283:34;;13325:18;13350:5;13283:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13262:98;;;13395:18;;;;;;;;;;;13387:32;;13427:16;13450:5;13387:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13371:89;;;;;13494:5;13481:18;;13533:1;13515:15;:19;13512:362;;;13550:6;;;;;;;;;;;:22;;;13580:18;13626:4;13650:15;13684:1;13704::::0;13724:21:::1;;;;;;;;;;;13764:15;13550:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13814:48;13826:18;13846:15;13814:48;;;;;;;:::i;:::-;;;;;;;;13512:362;12174:1707;;;;;;;;;;;6469:5:::0;6460:6;;:14;;;;;;;;;;;;;;;;;;12136:1745::o;10834:114::-;10896:4;10921:11;:19;10933:6;10921:19;;;;;;;;;;;;;;;;;;;;;;;;;10920:20;10913:27;;10834:114;;;:::o;10956:967::-;11042:7;11072:18;11093;;11072:39;;11138:4;;;;;;;;;;;11125:17;;:9;:17;;;11122:152;;11171:14;;11158:27;;11122:152;;;11216:4;;;;;;;;;;;11206:14;;:6;:14;;;11203:71;;11249:13;;11236:26;;11203:71;11122:152;11286:17;11306:62;11364:3;11347:14;;:20;;;;:::i;:::-;11306:36;11331:10;11306:20;11317:8;;11306:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;11286:82;;11381:21;11405:39;11435:8;;11405:25;11419:10;;11405:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;11381:63;;11455:22;11480:28;11494:13;11480:9;:13;;:28;;;;:::i;:::-;11455:53;;11548:44;11577:14;11548:9;:24;11566:4;11548:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11521:9;:24;11539:4;11521:24;;;;;;;;;;;;;;;:71;;;;11635:48;11669:13;11635:9;:29;11645:18;;;;;;;;;;;11635:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;11603:9;:29;11613:18;;;;;;;;;;;11603:29;;;;;;;;;;;;;;;:80;;;;11724:4;11699:47;;11708:6;11699:47;;;11731:14;11699:47;;;;;;:::i;:::-;;;;;;;;11786:1;11770:13;:17;11767:108;;;11825:18;;;;;;;;;;;11808:51;;11817:6;11808:51;;;11845:13;11808:51;;;;;;:::i;:::-;;;;;;;;11767:108;11894:21;11905:9;11894:6;:10;;:21;;;;:::i;:::-;11887:28;;;;;;10956:967;;;;;:::o;1026:189::-;1112:7;1144:1;1140;:5;1147:12;1132:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1171:9;1187:1;1183;:5;;;;:::i;:::-;1171:17;;1206:1;1199:8;;;1026: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:329::-;6117:6;6166:2;6154:9;6145:7;6141:23;6137:32;6134:119;;;6172:79;;:::i;:::-;6134:119;6292:1;6317:53;6362:7;6353:6;6342:9;6338:22;6317:53;:::i;:::-;6307:63;;6263:117;6058:329;;;;:::o;6393:474::-;6461:6;6469;6518:2;6506:9;6497:7;6493:23;6489:32;6486:119;;;6524:79;;:::i;:::-;6486:119;6644:1;6669:53;6714:7;6705:6;6694:9;6690:22;6669:53;:::i;:::-;6659:63;;6615:117;6771:2;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6742:118;6393:474;;;;;:::o;6873:104::-;6918:7;6947:24;6965:5;6947:24;:::i;:::-;6936:35;;6873:104;;;:::o;6983:138::-;7064:32;7090:5;7064:32;:::i;:::-;7057:5;7054:43;7044:71;;7111:1;7108;7101:12;7044:71;6983:138;:::o;7127:155::-;7181:5;7219:6;7206:20;7197:29;;7235:41;7270:5;7235:41;:::i;:::-;7127:155;;;;:::o;7288:345::-;7355:6;7404:2;7392:9;7383:7;7379:23;7375:32;7372:119;;;7410:79;;:::i;:::-;7372:119;7530:1;7555:61;7608:7;7599:6;7588:9;7584:22;7555:61;:::i;:::-;7545:71;;7501:125;7288:345;;;;:::o;7639:619::-;7716:6;7724;7732;7781:2;7769:9;7760:7;7756:23;7752:32;7749:119;;;7787:79;;:::i;:::-;7749:119;7907:1;7932:53;7977:7;7968:6;7957:9;7953:22;7932:53;:::i;:::-;7922:63;;7878:117;8034:2;8060:53;8105:7;8096:6;8085:9;8081:22;8060:53;:::i;:::-;8050:63;;8005:118;8162:2;8188:53;8233:7;8224:6;8213:9;8209:22;8188:53;:::i;:::-;8178:63;;8133:118;7639:619;;;;;:::o;8264:86::-;8299:7;8339:4;8332:5;8328:16;8317:27;;8264:86;;;:::o;8356:112::-;8439:22;8455:5;8439:22;:::i;:::-;8434:3;8427:35;8356:112;;:::o;8474:214::-;8563:4;8601:2;8590:9;8586:18;8578:26;;8614:67;8678:1;8667:9;8663:17;8654:6;8614:67;:::i;:::-;8474:214;;;;:::o;8694:765::-;8780:6;8788;8796;8804;8853:3;8841:9;8832:7;8828:23;8824:33;8821:120;;;8860:79;;:::i;:::-;8821:120;8980:1;9005:53;9050:7;9041:6;9030:9;9026:22;9005:53;:::i;:::-;8995:63;;8951:117;9107:2;9133:53;9178:7;9169:6;9158:9;9154:22;9133:53;:::i;:::-;9123:63;;9078:118;9235:2;9261:53;9306:7;9297:6;9286:9;9282:22;9261:53;:::i;:::-;9251:63;;9206:118;9363:2;9389:53;9434:7;9425:6;9414:9;9410:22;9389:53;:::i;:::-;9379:63;;9334:118;8694:765;;;;;;;:::o;9465:468::-;9530:6;9538;9587:2;9575:9;9566:7;9562:23;9558:32;9555:119;;;9593:79;;:::i;:::-;9555:119;9713:1;9738:53;9783:7;9774:6;9763:9;9759:22;9738:53;:::i;:::-;9728:63;;9684:117;9840:2;9866:50;9908:7;9899:6;9888:9;9884:22;9866:50;:::i;:::-;9856:60;;9811:115;9465:468;;;;;:::o;9939:118::-;10026:24;10044:5;10026:24;:::i;:::-;10021:3;10014:37;9939:118;;:::o;10063:222::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10207:71;10275:1;10264:9;10260:17;10251:6;10207:71;:::i;:::-;10063:222;;;;:::o;10291:619::-;10368:6;10376;10384;10433:2;10421:9;10412:7;10408:23;10404:32;10401:119;;;10439:79;;:::i;:::-;10401:119;10559:1;10584:53;10629:7;10620:6;10609:9;10605:22;10584:53;:::i;:::-;10574:63;;10530:117;10686:2;10712:53;10757:7;10748:6;10737:9;10733:22;10712:53;:::i;:::-;10702:63;;10657:118;10814:2;10840:53;10885:7;10876:6;10865:9;10861:22;10840:53;:::i;:::-;10830:63;;10785:118;10291:619;;;;;:::o;10916:474::-;10984:6;10992;11041:2;11029:9;11020:7;11016:23;11012:32;11009:119;;;11047:79;;:::i;:::-;11009:119;11167:1;11192:53;11237:7;11228:6;11217:9;11213:22;11192:53;:::i;:::-;11182:63;;11138:117;11294:2;11320:53;11365:7;11356:6;11345:9;11341:22;11320:53;:::i;:::-;11310:63;;11265:118;10916:474;;;;;:::o;11396:468::-;11461:6;11469;11518:2;11506:9;11497:7;11493:23;11489:32;11486:119;;;11524:79;;:::i;:::-;11486:119;11644:1;11669:50;11711:7;11702:6;11691:9;11687:22;11669:50;:::i;:::-;11659:60;;11615:114;11768:2;11794:53;11839:7;11830:6;11819:9;11815:22;11794:53;:::i;:::-;11784:63;;11739:118;11396:468;;;;;:::o;11870:60::-;11898:3;11919:5;11912:12;;11870:60;;;:::o;11936:142::-;11986:9;12019:53;12037:34;12046:24;12064:5;12046:24;:::i;:::-;12037:34;:::i;:::-;12019:53;:::i;:::-;12006:66;;11936:142;;;:::o;12084:126::-;12134:9;12167:37;12198:5;12167:37;:::i;:::-;12154:50;;12084:126;;;:::o;12216:144::-;12284:9;12317:37;12348:5;12317:37;:::i;:::-;12304:50;;12216:144;;;:::o;12366:167::-;12471:55;12520:5;12471:55;:::i;:::-;12466:3;12459:68;12366:167;;:::o;12539:258::-;12650:4;12688:2;12677:9;12673:18;12665:26;;12701:89;12787:1;12776:9;12772:17;12763:6;12701:89;:::i;:::-;12539:258;;;;:::o;12803:158::-;12943:10;12939:1;12931:6;12927:14;12920:34;12803:158;:::o;12967:365::-;13109:3;13130:66;13194:1;13189:3;13130:66;:::i;:::-;13123:73;;13205:93;13294:3;13205:93;:::i;:::-;13323:2;13318:3;13314:12;13307:19;;12967:365;;;:::o;13338:419::-;13504:4;13542:2;13531:9;13527:18;13519:26;;13591:9;13585:4;13581:20;13577:1;13566:9;13562:17;13555:47;13619:131;13745:4;13619:131;:::i;:::-;13611:139;;13338:419;;;:::o;13763:224::-;13903:34;13899:1;13891:6;13887:14;13880:58;13972:7;13967:2;13959:6;13955:15;13948:32;13763:224;:::o;13993:366::-;14135:3;14156:67;14220:2;14215:3;14156:67;:::i;:::-;14149:74;;14232:93;14321:3;14232:93;:::i;:::-;14350:2;14345:3;14341:12;14334:19;;13993:366;;;:::o;14365:419::-;14531:4;14569:2;14558:9;14554:18;14546:26;;14618:9;14612:4;14608:20;14604:1;14593:9;14589:17;14582:47;14646:131;14772:4;14646:131;:::i;:::-;14638:139;;14365:419;;;:::o;14790:180::-;14838:77;14835:1;14828:88;14935:4;14932:1;14925:15;14959:4;14956:1;14949:15;14976:180;15024:77;15021:1;15014:88;15121:4;15118:1;15111:15;15145:4;15142:1;15135:15;15162:233;15201:3;15224:24;15242:5;15224:24;:::i;:::-;15215:33;;15270:66;15263:5;15260:77;15257:103;;15340:18;;:::i;:::-;15257:103;15387:1;15380:5;15376:13;15369:20;;15162:233;;;:::o;15401:235::-;15541:34;15537:1;15529:6;15525:14;15518:58;15610:18;15605:2;15597:6;15593:15;15586:43;15401:235;:::o;15642:366::-;15784:3;15805:67;15869:2;15864:3;15805:67;:::i;:::-;15798:74;;15881:93;15970:3;15881:93;:::i;:::-;15999:2;15994:3;15990:12;15983:19;;15642:366;;;:::o;16014:419::-;16180:4;16218:2;16207:9;16203:18;16195:26;;16267:9;16261:4;16257:20;16253:1;16242:9;16238:17;16231:47;16295:131;16421:4;16295:131;:::i;:::-;16287:139;;16014:419;;;:::o;16439:410::-;16479:7;16502:20;16520:1;16502:20;:::i;:::-;16497:25;;16536:20;16554:1;16536:20;:::i;:::-;16531:25;;16591:1;16588;16584:9;16613:30;16631:11;16613:30;:::i;:::-;16602:41;;16792:1;16783:7;16779:15;16776:1;16773:22;16753:1;16746:9;16726:83;16703:139;;16822:18;;:::i;:::-;16703:139;16487:362;16439:410;;;;:::o;16855:180::-;16903:77;16900:1;16893:88;17000:4;16997:1;16990:15;17024:4;17021:1;17014:15;17041:185;17081:1;17098:20;17116:1;17098:20;:::i;:::-;17093:25;;17132:20;17150:1;17132:20;:::i;:::-;17127:25;;17171:1;17161:35;;17176:18;;:::i;:::-;17161:35;17218:1;17215;17211:9;17206:14;;17041:185;;;;:::o;17232:134::-;17290:9;17323:37;17354:5;17323:37;:::i;:::-;17310:50;;17232:134;;;:::o;17372:147::-;17467:45;17506:5;17467:45;:::i;:::-;17462:3;17455:58;17372:147;;:::o;17525:238::-;17626:4;17664:2;17653:9;17649:18;17641:26;;17677:79;17753:1;17742:9;17738:17;17729:6;17677:79;:::i;:::-;17525:238;;;;:::o;17769:156::-;17909:8;17905:1;17897:6;17893:14;17886:32;17769:156;:::o;17931:365::-;18073:3;18094:66;18158:1;18153:3;18094:66;:::i;:::-;18087:73;;18169:93;18258:3;18169:93;:::i;:::-;18287:2;18282:3;18278:12;18271:19;;17931:365;;;:::o;18302:419::-;18468:4;18506:2;18495:9;18491:18;18483:26;;18555:9;18549:4;18545:20;18541:1;18530:9;18526:17;18519:47;18583:131;18709:4;18583:131;:::i;:::-;18575:139;;18302:419;;;:::o;18727:332::-;18848:4;18886:2;18875:9;18871:18;18863:26;;18899:71;18967:1;18956:9;18952:17;18943:6;18899:71;:::i;:::-;18980:72;19048:2;19037:9;19033:18;19024:6;18980:72;:::i;:::-;18727:332;;;;;:::o;19065:137::-;19119:5;19150:6;19144:13;19135:22;;19166:30;19190:5;19166:30;:::i;:::-;19065:137;;;;:::o;19208:345::-;19275:6;19324:2;19312:9;19303:7;19299:23;19295:32;19292:119;;;19330:79;;:::i;:::-;19292:119;19450:1;19475:61;19528:7;19519:6;19508:9;19504:22;19475:61;:::i;:::-;19465:71;;19421:125;19208:345;;;;:::o;19559:242::-;19699:34;19695:1;19687:6;19683:14;19676:58;19768:25;19763:2;19755:6;19751:15;19744:50;19559:242;:::o;19807:366::-;19949:3;19970:67;20034:2;20029:3;19970:67;:::i;:::-;19963:74;;20046:93;20135:3;20046:93;:::i;:::-;20164:2;20159:3;20155:12;20148:19;;19807:366;;;:::o;20179:419::-;20345:4;20383:2;20372:9;20368:18;20360:26;;20432:9;20426:4;20422:20;20418:1;20407:9;20403:17;20396:47;20460:131;20586:4;20460:131;:::i;:::-;20452:139;;20179:419;;;:::o;20604:194::-;20644:4;20664:20;20682:1;20664:20;:::i;:::-;20659:25;;20698:20;20716:1;20698:20;:::i;:::-;20693:25;;20742:1;20739;20735:9;20727:17;;20766:1;20760:4;20757:11;20754:37;;;20771:18;;:::i;:::-;20754:37;20604:194;;;;:::o;20804:170::-;20944:22;20940:1;20932:6;20928:14;20921:46;20804:170;:::o;20980:366::-;21122:3;21143:67;21207:2;21202:3;21143:67;:::i;:::-;21136:74;;21219:93;21308:3;21219:93;:::i;:::-;21337:2;21332:3;21328:12;21321:19;;20980:366;;;:::o;21352:419::-;21518:4;21556:2;21545:9;21541:18;21533:26;;21605:9;21599:4;21595:20;21591:1;21580:9;21576:17;21569:47;21633:131;21759:4;21633:131;:::i;:::-;21625:139;;21352:419;;;:::o;21777:191::-;21817:3;21836:20;21854:1;21836:20;:::i;:::-;21831:25;;21870:20;21888:1;21870:20;:::i;:::-;21865:25;;21913:1;21910;21906:9;21899:16;;21934:3;21931:1;21928:10;21925:36;;;21941:18;;:::i;:::-;21925:36;21777:191;;;;:::o;21974:249::-;22114:34;22110:1;22102:6;22098:14;22091:58;22183:32;22178:2;22170:6;22166:15;22159:57;21974:249;:::o;22229:366::-;22371:3;22392:67;22456:2;22451:3;22392:67;:::i;:::-;22385:74;;22468:93;22557:3;22468:93;:::i;:::-;22586:2;22581:3;22577:12;22570:19;;22229:366;;;:::o;22601:419::-;22767:4;22805:2;22794:9;22790:18;22782:26;;22854:9;22848:4;22844:20;22840:1;22829:9;22825:17;22818:47;22882:131;23008:4;22882:131;:::i;:::-;22874:139;;22601:419;;;:::o;23026:169::-;23166:21;23162:1;23154:6;23150:14;23143:45;23026:169;:::o;23201:366::-;23343:3;23364:67;23428:2;23423:3;23364:67;:::i;:::-;23357:74;;23440:93;23529:3;23440:93;:::i;:::-;23558:2;23553:3;23549:12;23542:19;;23201:366;;;:::o;23573:419::-;23739:4;23777:2;23766:9;23762:18;23754:26;;23826:9;23820:4;23816:20;23812:1;23801:9;23797:17;23790:47;23854:131;23980:4;23854:131;:::i;:::-;23846:139;;23573:419;;;:::o;23998:177::-;24138:29;24134:1;24126:6;24122:14;24115:53;23998:177;:::o;24181:366::-;24323:3;24344:67;24408:2;24403:3;24344:67;:::i;:::-;24337:74;;24420:93;24509:3;24420:93;:::i;:::-;24538:2;24533:3;24529:12;24522:19;;24181:366;;;:::o;24553:419::-;24719:4;24757:2;24746:9;24742:18;24734:26;;24806:9;24800:4;24796:20;24792:1;24781:9;24777:17;24770:47;24834:131;24960:4;24834:131;:::i;:::-;24826:139;;24553:419;;;:::o;24978:220::-;25118:34;25114:1;25106:6;25102:14;25095:58;25187:3;25182:2;25174:6;25170:15;25163:28;24978:220;:::o;25204:366::-;25346:3;25367:67;25431:2;25426:3;25367:67;:::i;:::-;25360:74;;25443:93;25532:3;25443:93;:::i;:::-;25561:2;25556:3;25552:12;25545:19;;25204:366;;;:::o;25576:419::-;25742:4;25780:2;25769:9;25765:18;25757:26;;25829:9;25823:4;25819:20;25815:1;25804:9;25800:17;25793:47;25857:131;25983:4;25857:131;:::i;:::-;25849:139;;25576:419;;;:::o;26001:167::-;26141:19;26137:1;26129:6;26125:14;26118:43;26001:167;:::o;26174:366::-;26316:3;26337:67;26401:2;26396:3;26337:67;:::i;:::-;26330:74;;26413:93;26502:3;26413:93;:::i;:::-;26531:2;26526:3;26522:12;26515:19;;26174:366;;;:::o;26546:419::-;26712:4;26750:2;26739:9;26735:18;26727:26;;26799:9;26793:4;26789:20;26785:1;26774:9;26770:17;26763:47;26827:131;26953:4;26827:131;:::i;:::-;26819:139;;26546:419;;;:::o;26971:180::-;27019:77;27016:1;27009:88;27116:4;27113:1;27106:15;27140:4;27137:1;27130:15;27157:85;27202:7;27231:5;27220:16;;27157:85;;;:::o;27248:158::-;27306:9;27339:61;27357:42;27366:32;27392:5;27366:32;:::i;:::-;27357:42;:::i;:::-;27339:61;:::i;:::-;27326:74;;27248:158;;;:::o;27412:147::-;27507:45;27546:5;27507:45;:::i;:::-;27502:3;27495:58;27412:147;;:::o;27565:114::-;27632:6;27666:5;27660:12;27650:22;;27565:114;;;:::o;27685:184::-;27784:11;27818:6;27813:3;27806:19;27858:4;27853:3;27849:14;27834:29;;27685:184;;;;:::o;27875:132::-;27942:4;27965:3;27957:11;;27995:4;27990:3;27986:14;27978:22;;27875:132;;;:::o;28013:108::-;28090:24;28108:5;28090:24;:::i;:::-;28085:3;28078:37;28013:108;;:::o;28127:179::-;28196:10;28217:46;28259:3;28251:6;28217:46;:::i;:::-;28295:4;28290:3;28286:14;28272:28;;28127:179;;;;:::o;28312:113::-;28382:4;28414;28409:3;28405:14;28397:22;;28312:113;;;:::o;28461:732::-;28580:3;28609:54;28657:5;28609:54;:::i;:::-;28679:86;28758:6;28753:3;28679:86;:::i;:::-;28672:93;;28789:56;28839:5;28789:56;:::i;:::-;28868:7;28899:1;28884:284;28909:6;28906:1;28903:13;28884:284;;;28985:6;28979:13;29012:63;29071:3;29056:13;29012:63;:::i;:::-;29005:70;;29098:60;29151:6;29098:60;:::i;:::-;29088:70;;28944:224;28931:1;28928;28924:9;28919:14;;28884:284;;;28888:14;29184:3;29177:10;;28585:608;;;28461:732;;;;:::o;29199:831::-;29462:4;29500:3;29489:9;29485:19;29477:27;;29514:71;29582:1;29571:9;29567:17;29558:6;29514:71;:::i;:::-;29595:80;29671:2;29660:9;29656:18;29647:6;29595:80;:::i;:::-;29722:9;29716:4;29712:20;29707:2;29696:9;29692:18;29685:48;29750:108;29853:4;29844:6;29750:108;:::i;:::-;29742:116;;29868:72;29936:2;29925:9;29921:18;29912:6;29868:72;:::i;:::-;29950:73;30018:3;30007:9;30003:19;29994:6;29950:73;:::i;:::-;29199:831;;;;;;;;:::o;30036:147::-;30137:11;30174:3;30159:18;;30036:147;;;;:::o;30189:114::-;;:::o;30309:398::-;30468:3;30489:83;30570:1;30565:3;30489:83;:::i;:::-;30482:90;;30581:93;30670:3;30581:93;:::i;:::-;30699:1;30694:3;30690:11;30683:18;;30309:398;;;:::o;30713:379::-;30897:3;30919:147;31062:3;30919:147;:::i;:::-;30912:154;;31083:3;31076:10;;30713:379;;;:::o;31098:807::-;31347:4;31385:3;31374:9;31370:19;31362:27;;31399:71;31467:1;31456:9;31452:17;31443:6;31399:71;:::i;:::-;31480:72;31548:2;31537:9;31533:18;31524:6;31480:72;:::i;:::-;31562:80;31638:2;31627:9;31623:18;31614:6;31562:80;:::i;:::-;31652;31728:2;31717:9;31713:18;31704:6;31652:80;:::i;:::-;31742:73;31810:3;31799:9;31795:19;31786:6;31742:73;:::i;:::-;31825;31893:3;31882:9;31878:19;31869:6;31825:73;:::i;:::-;31098:807;;;;;;;;;:::o;31911:143::-;31968:5;31999:6;31993:13;31984:22;;32015:33;32042:5;32015:33;:::i;:::-;31911:143;;;;:::o;32060:663::-;32148:6;32156;32164;32213:2;32201:9;32192:7;32188:23;32184:32;32181:119;;;32219:79;;:::i;:::-;32181:119;32339:1;32364:64;32420:7;32411:6;32400:9;32396:22;32364:64;:::i;:::-;32354:74;;32310:128;32477:2;32503:64;32559:7;32550:6;32539:9;32535:22;32503:64;:::i;:::-;32493:74;;32448:129;32616:2;32642:64;32698:7;32689:6;32678:9;32674:22;32642:64;:::i;:::-;32632:74;;32587:129;32060:663;;;;;:::o;32729:332::-;32850:4;32888:2;32877:9;32873:18;32865:26;;32901:71;32969:1;32958:9;32954:17;32945:6;32901:71;:::i;:::-;32982:72;33050:2;33039:9;33035:18;33026:6;32982:72;:::i;:::-;32729:332;;;;;:::o

Swarm Source

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