ETH Price: $3,360.65 (-3.09%)

Token

ProofOfSnoop (PoS)
 

Overview

Max Total Supply

1,000,000,000,000 PoS

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,506,968,198.646179435 PoS

Value
$0.00
0xc2678dd17d570d961f971762eedfe27467bba01b
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:
ProofOfSnoop

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-16
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.5;

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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    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);
}


/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

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

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

contract ProofOfSnoop is IBEP20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "ProofOfSnoop";
    string constant _symbol = "PoS";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 1) / 100;  //1% max tx
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100;  //1% max wallet

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

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

    uint256 liquidityFee = 3;
    uint256 teamFee =2;
    uint256 marketingFee = 0;
    uint256 totalFee = 5;
    uint256 feeDenominator = 100;
    
    address private marketingFeeReceiver = 0x9442e35484342e513072E9766FFCaf7857A11185;
    address private teamFeeReceiver = 0x9442e35484342e513072E9766FFCaf7857A11185;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 3; // 0.3%
    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;

        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); }

        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

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

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _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 getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling) { return totalFee.add(1); }
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        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 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.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 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBdevelopment = amountBNB.mul(teamFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        (bool developmentSuccess, /* bytes memory data */) = payable(teamFeeReceiver).call{value: amountBNBdevelopment, gas: 30000}("");
        require(developmentSuccess, "receiver rejected ETH transfer");

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

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

   function setMaxWallet(uint256 amount) external onlyOwner() {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }    

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

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

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

    function setFeeReceiver(address _marketingFeeReceiver, address _teamFeeReceiver) external authorized {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

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

    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }

    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).transfer(_contractBalance);
    }
        
    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;
    }
    
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","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":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","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":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","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":"amount","type":"uint256"}],"name":"setMaxWallet","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":"amount","type":"uint256"}],"name":"setTxLimit","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee919062000874565b64e8d4a51000620001009190620009b1565b60055560646001600554620001169190620009b1565b620001229190620007e1565b60065560646001600554620001389190620009b1565b620001449190620007e1565b6007556003600c556002600d556000600e556005600f556064601055739442e35484342e513072e9766ffcaf7857a11185601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739442e35484342e513072e9766ffcaf7857a11185601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006101000a81548160ff02191690831515021790555060036103e8600554620002399190620007e1565b620002459190620009b1565b6017553480156200025557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ad57600080fd5b505afa158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e8919062000743565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044692919062000797565b602060405180830381600087803b1580156200046157600080fd5b505af115801562000476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049c919062000743565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200071d9190620007c4565b60405180910390a35062000ae7565b6000815190506200073d8162000acd565b92915050565b6000602082840312156200075c576200075b62000abb565b5b60006200076c848285016200072c565b91505092915050565b620007808162000a12565b82525050565b620007918162000a46565b82525050565b6000604082019050620007ae600083018562000775565b620007bd602083018462000775565b9392505050565b6000602082019050620007db600083018462000786565b92915050565b6000620007ee8262000a46565b9150620007fb8362000a46565b9250826200080e576200080d62000a8c565b5b828204905092915050565b6000808291508390505b60018511156200086b5780860481111562000843576200084262000a5d565b5b6001851615620008535780820291505b8081029050620008638562000ac0565b945062000823565b94509492505050565b6000620008818262000a46565b91506200088e8362000a50565b9250620008bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c5565b905092915050565b600082620008d75760019050620009aa565b81620008e75760009050620009aa565b81600181146200090057600281146200090b5762000941565b6001915050620009aa565b60ff84111562000920576200091f62000a5d565b5b8360020a9150848211156200093a576200093962000a5d565b5b50620009aa565b5060208310610133831016604e8410600b84101617156200097b5782820a90508381111562000975576200097462000a5d565b5b620009aa565b6200098a848484600162000819565b92509050818404811115620009a457620009a362000a5d565b5b81810290505b9392505050565b6000620009be8262000a46565b9150620009cb8362000a46565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a075762000a0662000a5d565b5b828202905092915050565b600062000a1f8262000a26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ad88162000a12565b811462000ae457600080fd5b50565b6139288062000af76000396000f3fe6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b146107f6578063f42938901461081f578063f84ba65d14610836578063f887ea401461085f578063fe9fbb801461088a5761021a565b8063df20fd491461073e578063e66db25e14610767578063f0b37c0414610790578063f1f3bca3146107b95761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b80638f9a55c01461058957806395d89b41146105b4578063a8aa1b31146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f65780637d1db4a514610533578063893d20e81461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b60405161024191906132d3565b60405180910390f35b34801561025657600080fd5b5061025f6108cd565b60405161026c91906131b1565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c6c565b61090a565b6040516102a9919061317b565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612d73565b6109fc565b6040516102e6919061317b565b60405180910390f35b3480156102fb57600080fd5b50610304610a11565b60405161031191906132d3565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612bd9565b610a1b565b60405161034e919061317b565b60405180910390f35b34801561036357600080fd5b5061036c610c1b565b60405161037991906132d3565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b3f565b610c9d565b6040516103b6919061317b565b60405180910390f35b3480156103cb57600080fd5b506103d4610cf6565b6040516103e19190613371565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b3f565b610cff565b60405161041e919061317b565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d19565b610d32565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d19565b610da0565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c2c565b610e0e565b005b3480156104ae57600080fd5b506104b7610eb1565b6040516104c4919061317b565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e06565b610ec4565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b3f565b610f59565b60405161052a91906132d3565b60405180910390f35b34801561053f57600080fd5b50610548610fa2565b60405161055591906132d3565b60405180910390f35b34801561056a57600080fd5b50610573610fa8565b60405161058091906130e4565b60405180910390f35b34801561059557600080fd5b5061059e610fd1565b6040516105ab91906132d3565b60405180910390f35b3480156105c057600080fd5b506105c9610fd7565b6040516105d691906131b1565b60405180910390f35b3480156105eb57600080fd5b506105f4611014565b60405161060191906130e4565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c6c565b61103a565b60405161063e919061317b565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b3f565b61104f565b005b34801561067c57600080fd5b506106856110f1565b60405161069291906132d3565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d19565b6110f7565b6040516106cf91906132d3565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b3f565b611169565b005b34801561070d57600080fd5b5061072860048036038101906107239190612b99565b61131a565b60405161073591906132d3565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612cd9565b6113a1565b005b34801561077357600080fd5b5061078e60048036038101906107899190612b99565b61140e565b005b34801561079c57600080fd5b506107b760048036038101906107b29190612b3f565b6114dc565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612cac565b61157f565b6040516107ed91906132d3565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b6c565b6115e1565b005b34801561082b57600080fd5b506108346116fa565b005b34801561084257600080fd5b5061085d60048036038101906108589190612c2c565b6117b3565b005b34801561086b57600080fd5b50610874611856565b6040516108819190613196565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190612b3f565b61187c565b6040516108be919061317b565b60405180910390f35b60175481565b60606040518060400160405280600c81526020017f50726f6f664f66536e6f6f700000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ea91906132d3565b60405180910390a36001905092915050565b600082610a08836110f7565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0757610b86826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c12848484611936565b90509392505050565b6000610c98610c4b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b610c8a610c79600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b600554611dc690919063ffffffff16565b611dc690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d2b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61090a565b9050919050565b610d3b3361187c565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906132b3565b60405180910390fd5b6103e8600554610d8a9190613442565b811015610d9657600080fd5b8060068190555050565b610da933610c9d565b610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90613293565b60405180910390fd5b6103e8600554610df89190613442565b811015610e0457600080fd5b8060078190555050565b610e173361187c565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906132b3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610ecd3361187c565b610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906132b3565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610f4682610f388587611e1090919063ffffffff16565b611e1090919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600381526020017f506f530000000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611047338484611936565b905092915050565b61105833610c9d565b611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613293565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b6000611162611104610c1b565b6111546111456002611137601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b611e6e90919063ffffffff16565b85611e6e90919063ffffffff16565b611ee990919063ffffffff16565b9050919050565b6111723361187c565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906132b3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613213565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b91906130e4565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab9190612d46565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611315573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113aa3361187c565b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906132b3565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6114173361187c565b611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906132b3565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114e533610c9d565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613293565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160155461159191906133ec565b106115b3576115ac6001601054611dc690919063ffffffff16565b90506115dc565b81156115d6576115cf6001600f54611e1090919063ffffffff16565b90506115dc565b600f5490505b919050565b6115ea33610c9d565b611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613293565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116ef91906130ff565b60405180910390a150565b6117033361187c565b611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906132b3565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117af573d6000803e3d6000fd5b5050565b6117bc3361187c565b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f2906132b3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191191906131b1565b60405180910390fd5b506000838561192991906134cd565b9050809150509392505050565b6000601860009054906101000a900460ff161561195f57611958848484611f33565b9050611dbf565b6119698483612106565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a155750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611afe57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611abe575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abb91906133ec565b11155b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af4906131d3565b60405180910390fd5b5b611b066121a3565b15611b1457611b1361227a565b5b611b1c61286b565b158015611b765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bd0576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611bc757600080fd5b611bcf612878565b5b611c59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ca785612881565b611cb15782611cbd565b611cbc8585856128d8565b5b9050611d1181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db191906132d3565b60405180910390a360019150505b9392505050565b6000611e0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d2565b905092915050565b6000808284611e1f91906133ec565b905083811015611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613233565b60405180910390fd5b8091505092915050565b600080831415611e815760009050611ee3565b60008284611e8f9190613473565b9050828482611e9e9190613442565b14611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613273565b60405180910390fd5b809150505b92915050565b6000611f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a73565b905092915050565b6000611fbe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f391906132d3565b60405180910390a3600190509392505050565b600654811115806121605750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61219f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612196906131f3565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122105750601860009054906101000a900460ff16155b80156122285750601660009054906101000a900460ff165b80156122755750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006122a030610f59565b905060006122e060026122d2600f546122c4600c5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b905060006122f78284611dc690919063ffffffff16565b90506000600267ffffffffffffffff81111561231657612315613694565b5b6040519080825280602002602001820160405280156123445781602001602082028036833780820191505090505b509050308160008151811061235c5761235b613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123cd576123cc613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016124709594939291906132ee565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b5050505060006124b78247611dc690919063ffffffff16565b905060006124e56124d46002600c54611ee990919063ffffffff16565b600f54611dc690919063ffffffff16565b90506000612523600261251584612507600c5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b9050600061254e83612540600d5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b905060006125798461256b600e5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125c7906130cf565b600060405180830381858888f193505050503d8060008114612605576040519150601f19603f3d011682016040523d82523d6000602084013e61260a565b606091505b505090508061264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613253565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161269a906130cf565b600060405180830381858888f193505050503d80600081146126d8576040519150601f19603f3d011682016040523d82523d6000602084013e6126dd565b606091505b5050905080612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271890613253565b60405180910390fd5b60008b111561284257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b39695949392919061311a565b6060604051808303818588803b1580156127cc57600080fd5b505af11580156127e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128059190612db3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612839929190613348565b60405180910390a15b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061295a60105461294c61293d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461157f565b86611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506129ae81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a4e91906132d3565b60405180910390a3612a698184611dc690919063ffffffff16565b9150509392505050565b60008083118290612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab191906131b1565b60405180910390fd5b5060008385612ac99190613442565b9050809150509392505050565b600081359050612ae581613896565b92915050565b600081359050612afa816138ad565b92915050565b600081359050612b0f816138c4565b92915050565b600081359050612b24816138db565b92915050565b600081519050612b39816138db565b92915050565b600060208284031215612b5557612b546136c3565b5b6000612b6384828501612ad6565b91505092915050565b600060208284031215612b8257612b816136c3565b5b6000612b9084828501612aeb565b91505092915050565b60008060408385031215612bb057612baf6136c3565b5b6000612bbe85828601612ad6565b9250506020612bcf85828601612ad6565b9150509250929050565b600080600060608486031215612bf257612bf16136c3565b5b6000612c0086828701612ad6565b9350506020612c1186828701612ad6565b9250506040612c2286828701612b15565b9150509250925092565b60008060408385031215612c4357612c426136c3565b5b6000612c5185828601612ad6565b9250506020612c6285828601612b00565b9150509250929050565b60008060408385031215612c8357612c826136c3565b5b6000612c9185828601612ad6565b9250506020612ca285828601612b15565b9150509250929050565b600060208284031215612cc257612cc16136c3565b5b6000612cd084828501612b00565b91505092915050565b60008060408385031215612cf057612cef6136c3565b5b6000612cfe85828601612b00565b9250506020612d0f85828601612b15565b9150509250929050565b600060208284031215612d2f57612d2e6136c3565b5b6000612d3d84828501612b15565b91505092915050565b600060208284031215612d5c57612d5b6136c3565b5b6000612d6a84828501612b2a565b91505092915050565b60008060408385031215612d8a57612d896136c3565b5b6000612d9885828601612b15565b9250506020612da985828601612b15565b9150509250929050565b600080600060608486031215612dcc57612dcb6136c3565b5b6000612dda86828701612b2a565b9350506020612deb86828701612b2a565b9250506040612dfc86828701612b2a565b9150509250925092565b60008060008060808587031215612e2057612e1f6136c3565b5b6000612e2e87828801612b15565b9450506020612e3f87828801612b15565b9350506040612e5087828801612b15565b9250506060612e6187828801612b15565b91505092959194509250565b6000612e798383612e94565b60208301905092915050565b612e8e81613568565b82525050565b612e9d81613501565b82525050565b612eac81613501565b82525050565b6000612ebd8261339c565b612ec781856133bf565b9350612ed28361338c565b8060005b83811015612f03578151612eea8882612e6d565b9750612ef5836133b2565b925050600181019050612ed6565b5085935050505092915050565b612f1981613525565b82525050565b612f288161357a565b82525050565b612f378161359e565b82525050565b6000612f48826133a7565b612f5281856133db565b9350612f628185602086016135d4565b612f6b816136c8565b840191505092915050565b6000612f836025836133db565b9150612f8e826136d9565b604082019050919050565b6000612fa66011836133db565b9150612fb182613728565b602082019050919050565b6000612fc96023836133db565b9150612fd482613751565b604082019050919050565b6000612fec601b836133db565b9150612ff7826137a0565b602082019050919050565b600061300f601e836133db565b915061301a826137c9565b602082019050919050565b60006130326021836133db565b915061303d826137f2565b604082019050919050565b60006130556006836133db565b915061306082613841565b602082019050919050565b60006130786000836133d0565b91506130838261386a565b600082019050919050565b600061309b600b836133db565b91506130a68261386d565b602082019050919050565b6130ba81613551565b82525050565b6130c98161355b565b82525050565b60006130da8261306b565b9150819050919050565b60006020820190506130f96000830184612ea3565b92915050565b60006020820190506131146000830184612e85565b92915050565b600060c08201905061312f6000830189612ea3565b61313c60208301886130b1565b6131496040830187612f2e565b6131566060830186612f2e565b6131636080830185612ea3565b61317060a08301846130b1565b979650505050505050565b60006020820190506131906000830184612f10565b92915050565b60006020820190506131ab6000830184612f1f565b92915050565b600060208201905081810360008301526131cb8184612f3d565b905092915050565b600060208201905081810360008301526131ec81612f76565b9050919050565b6000602082019050818103600083015261320c81612f99565b9050919050565b6000602082019050818103600083015261322c81612fbc565b9050919050565b6000602082019050818103600083015261324c81612fdf565b9050919050565b6000602082019050818103600083015261326c81613002565b9050919050565b6000602082019050818103600083015261328c81613025565b9050919050565b600060208201905081810360008301526132ac81613048565b9050919050565b600060208201905081810360008301526132cc8161308e565b9050919050565b60006020820190506132e860008301846130b1565b92915050565b600060a08201905061330360008301886130b1565b6133106020830187612f2e565b81810360408301526133228186612eb2565b90506133316060830185612ea3565b61333e60808301846130b1565b9695505050505050565b600060408201905061335d60008301856130b1565b61336a60208301846130b1565b9392505050565b600060208201905061338660008301846130c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f782613551565b915061340283613551565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343757613436613607565b5b828201905092915050565b600061344d82613551565b915061345883613551565b92508261346857613467613636565b5b828204905092915050565b600061347e82613551565b915061348983613551565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134c2576134c1613607565b5b828202905092915050565b60006134d882613551565b91506134e383613551565b9250828210156134f6576134f5613607565b5b828203905092915050565b600061350c82613531565b9050919050565b600061351e82613531565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613573826135b0565b9050919050565b60006135858261358c565b9050919050565b600061359782613531565b9050919050565b60006135a982613551565b9050919050565b60006135bb826135c2565b9050919050565b60006135cd82613531565b9050919050565b60005b838110156135f25780820151818401526020810190506135d7565b83811115613601576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61389f81613501565b81146138aa57600080fd5b50565b6138b681613513565b81146138c157600080fd5b50565b6138cd81613525565b81146138d857600080fd5b50565b6138e481613551565b81146138ef57600080fd5b5056fea2646970667358221220019989738987556bb7d20bcd7c5cb630108a535495b87a7219025d45d1707e8664736f6c63430008050033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b146107f6578063f42938901461081f578063f84ba65d14610836578063f887ea401461085f578063fe9fbb801461088a5761021a565b8063df20fd491461073e578063e66db25e14610767578063f0b37c0414610790578063f1f3bca3146107b95761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b80638f9a55c01461058957806395d89b41146105b4578063a8aa1b31146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f65780637d1db4a514610533578063893d20e81461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b60405161024191906132d3565b60405180910390f35b34801561025657600080fd5b5061025f6108cd565b60405161026c91906131b1565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c6c565b61090a565b6040516102a9919061317b565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612d73565b6109fc565b6040516102e6919061317b565b60405180910390f35b3480156102fb57600080fd5b50610304610a11565b60405161031191906132d3565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612bd9565b610a1b565b60405161034e919061317b565b60405180910390f35b34801561036357600080fd5b5061036c610c1b565b60405161037991906132d3565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b3f565b610c9d565b6040516103b6919061317b565b60405180910390f35b3480156103cb57600080fd5b506103d4610cf6565b6040516103e19190613371565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b3f565b610cff565b60405161041e919061317b565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d19565b610d32565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d19565b610da0565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c2c565b610e0e565b005b3480156104ae57600080fd5b506104b7610eb1565b6040516104c4919061317b565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e06565b610ec4565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b3f565b610f59565b60405161052a91906132d3565b60405180910390f35b34801561053f57600080fd5b50610548610fa2565b60405161055591906132d3565b60405180910390f35b34801561056a57600080fd5b50610573610fa8565b60405161058091906130e4565b60405180910390f35b34801561059557600080fd5b5061059e610fd1565b6040516105ab91906132d3565b60405180910390f35b3480156105c057600080fd5b506105c9610fd7565b6040516105d691906131b1565b60405180910390f35b3480156105eb57600080fd5b506105f4611014565b60405161060191906130e4565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c6c565b61103a565b60405161063e919061317b565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b3f565b61104f565b005b34801561067c57600080fd5b506106856110f1565b60405161069291906132d3565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d19565b6110f7565b6040516106cf91906132d3565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b3f565b611169565b005b34801561070d57600080fd5b5061072860048036038101906107239190612b99565b61131a565b60405161073591906132d3565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612cd9565b6113a1565b005b34801561077357600080fd5b5061078e60048036038101906107899190612b99565b61140e565b005b34801561079c57600080fd5b506107b760048036038101906107b29190612b3f565b6114dc565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612cac565b61157f565b6040516107ed91906132d3565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b6c565b6115e1565b005b34801561082b57600080fd5b506108346116fa565b005b34801561084257600080fd5b5061085d60048036038101906108589190612c2c565b6117b3565b005b34801561086b57600080fd5b50610874611856565b6040516108819190613196565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190612b3f565b61187c565b6040516108be919061317b565b60405180910390f35b60175481565b60606040518060400160405280600c81526020017f50726f6f664f66536e6f6f700000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ea91906132d3565b60405180910390a36001905092915050565b600082610a08836110f7565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0757610b86826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c12848484611936565b90509392505050565b6000610c98610c4b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b610c8a610c79600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b600554611dc690919063ffffffff16565b611dc690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d2b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61090a565b9050919050565b610d3b3361187c565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906132b3565b60405180910390fd5b6103e8600554610d8a9190613442565b811015610d9657600080fd5b8060068190555050565b610da933610c9d565b610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90613293565b60405180910390fd5b6103e8600554610df89190613442565b811015610e0457600080fd5b8060078190555050565b610e173361187c565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906132b3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610ecd3361187c565b610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906132b3565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610f4682610f388587611e1090919063ffffffff16565b611e1090919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600381526020017f506f530000000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611047338484611936565b905092915050565b61105833610c9d565b611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613293565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b6000611162611104610c1b565b6111546111456002611137601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b611e6e90919063ffffffff16565b85611e6e90919063ffffffff16565b611ee990919063ffffffff16565b9050919050565b6111723361187c565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906132b3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613213565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b91906130e4565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab9190612d46565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611315573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113aa3361187c565b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906132b3565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6114173361187c565b611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906132b3565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114e533610c9d565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613293565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160155461159191906133ec565b106115b3576115ac6001601054611dc690919063ffffffff16565b90506115dc565b81156115d6576115cf6001600f54611e1090919063ffffffff16565b90506115dc565b600f5490505b919050565b6115ea33610c9d565b611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613293565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116ef91906130ff565b60405180910390a150565b6117033361187c565b611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906132b3565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117af573d6000803e3d6000fd5b5050565b6117bc3361187c565b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f2906132b3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191191906131b1565b60405180910390fd5b506000838561192991906134cd565b9050809150509392505050565b6000601860009054906101000a900460ff161561195f57611958848484611f33565b9050611dbf565b6119698483612106565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a155750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611afe57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611abe575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abb91906133ec565b11155b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af4906131d3565b60405180910390fd5b5b611b066121a3565b15611b1457611b1361227a565b5b611b1c61286b565b158015611b765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bd0576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611bc757600080fd5b611bcf612878565b5b611c59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ca785612881565b611cb15782611cbd565b611cbc8585856128d8565b5b9050611d1181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db191906132d3565b60405180910390a360019150505b9392505050565b6000611e0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d2565b905092915050565b6000808284611e1f91906133ec565b905083811015611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613233565b60405180910390fd5b8091505092915050565b600080831415611e815760009050611ee3565b60008284611e8f9190613473565b9050828482611e9e9190613442565b14611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613273565b60405180910390fd5b809150505b92915050565b6000611f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a73565b905092915050565b6000611fbe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f391906132d3565b60405180910390a3600190509392505050565b600654811115806121605750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61219f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612196906131f3565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122105750601860009054906101000a900460ff16155b80156122285750601660009054906101000a900460ff165b80156122755750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006122a030610f59565b905060006122e060026122d2600f546122c4600c5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b905060006122f78284611dc690919063ffffffff16565b90506000600267ffffffffffffffff81111561231657612315613694565b5b6040519080825280602002602001820160405280156123445781602001602082028036833780820191505090505b509050308160008151811061235c5761235b613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123cd576123cc613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016124709594939291906132ee565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b5050505060006124b78247611dc690919063ffffffff16565b905060006124e56124d46002600c54611ee990919063ffffffff16565b600f54611dc690919063ffffffff16565b90506000612523600261251584612507600c5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b9050600061254e83612540600d5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b905060006125798461256b600e5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125c7906130cf565b600060405180830381858888f193505050503d8060008114612605576040519150601f19603f3d011682016040523d82523d6000602084013e61260a565b606091505b505090508061264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613253565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161269a906130cf565b600060405180830381858888f193505050503d80600081146126d8576040519150601f19603f3d011682016040523d82523d6000602084013e6126dd565b606091505b5050905080612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271890613253565b60405180910390fd5b60008b111561284257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b39695949392919061311a565b6060604051808303818588803b1580156127cc57600080fd5b505af11580156127e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128059190612db3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612839929190613348565b60405180910390a15b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061295a60105461294c61293d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461157f565b86611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506129ae81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a4e91906132d3565b60405180910390a3612a698184611dc690919063ffffffff16565b9150509392505050565b60008083118290612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab191906131b1565b60405180910390fd5b5060008385612ac99190613442565b9050809150509392505050565b600081359050612ae581613896565b92915050565b600081359050612afa816138ad565b92915050565b600081359050612b0f816138c4565b92915050565b600081359050612b24816138db565b92915050565b600081519050612b39816138db565b92915050565b600060208284031215612b5557612b546136c3565b5b6000612b6384828501612ad6565b91505092915050565b600060208284031215612b8257612b816136c3565b5b6000612b9084828501612aeb565b91505092915050565b60008060408385031215612bb057612baf6136c3565b5b6000612bbe85828601612ad6565b9250506020612bcf85828601612ad6565b9150509250929050565b600080600060608486031215612bf257612bf16136c3565b5b6000612c0086828701612ad6565b9350506020612c1186828701612ad6565b9250506040612c2286828701612b15565b9150509250925092565b60008060408385031215612c4357612c426136c3565b5b6000612c5185828601612ad6565b9250506020612c6285828601612b00565b9150509250929050565b60008060408385031215612c8357612c826136c3565b5b6000612c9185828601612ad6565b9250506020612ca285828601612b15565b9150509250929050565b600060208284031215612cc257612cc16136c3565b5b6000612cd084828501612b00565b91505092915050565b60008060408385031215612cf057612cef6136c3565b5b6000612cfe85828601612b00565b9250506020612d0f85828601612b15565b9150509250929050565b600060208284031215612d2f57612d2e6136c3565b5b6000612d3d84828501612b15565b91505092915050565b600060208284031215612d5c57612d5b6136c3565b5b6000612d6a84828501612b2a565b91505092915050565b60008060408385031215612d8a57612d896136c3565b5b6000612d9885828601612b15565b9250506020612da985828601612b15565b9150509250929050565b600080600060608486031215612dcc57612dcb6136c3565b5b6000612dda86828701612b2a565b9350506020612deb86828701612b2a565b9250506040612dfc86828701612b2a565b9150509250925092565b60008060008060808587031215612e2057612e1f6136c3565b5b6000612e2e87828801612b15565b9450506020612e3f87828801612b15565b9350506040612e5087828801612b15565b9250506060612e6187828801612b15565b91505092959194509250565b6000612e798383612e94565b60208301905092915050565b612e8e81613568565b82525050565b612e9d81613501565b82525050565b612eac81613501565b82525050565b6000612ebd8261339c565b612ec781856133bf565b9350612ed28361338c565b8060005b83811015612f03578151612eea8882612e6d565b9750612ef5836133b2565b925050600181019050612ed6565b5085935050505092915050565b612f1981613525565b82525050565b612f288161357a565b82525050565b612f378161359e565b82525050565b6000612f48826133a7565b612f5281856133db565b9350612f628185602086016135d4565b612f6b816136c8565b840191505092915050565b6000612f836025836133db565b9150612f8e826136d9565b604082019050919050565b6000612fa66011836133db565b9150612fb182613728565b602082019050919050565b6000612fc96023836133db565b9150612fd482613751565b604082019050919050565b6000612fec601b836133db565b9150612ff7826137a0565b602082019050919050565b600061300f601e836133db565b915061301a826137c9565b602082019050919050565b60006130326021836133db565b915061303d826137f2565b604082019050919050565b60006130556006836133db565b915061306082613841565b602082019050919050565b60006130786000836133d0565b91506130838261386a565b600082019050919050565b600061309b600b836133db565b91506130a68261386d565b602082019050919050565b6130ba81613551565b82525050565b6130c98161355b565b82525050565b60006130da8261306b565b9150819050919050565b60006020820190506130f96000830184612ea3565b92915050565b60006020820190506131146000830184612e85565b92915050565b600060c08201905061312f6000830189612ea3565b61313c60208301886130b1565b6131496040830187612f2e565b6131566060830186612f2e565b6131636080830185612ea3565b61317060a08301846130b1565b979650505050505050565b60006020820190506131906000830184612f10565b92915050565b60006020820190506131ab6000830184612f1f565b92915050565b600060208201905081810360008301526131cb8184612f3d565b905092915050565b600060208201905081810360008301526131ec81612f76565b9050919050565b6000602082019050818103600083015261320c81612f99565b9050919050565b6000602082019050818103600083015261322c81612fbc565b9050919050565b6000602082019050818103600083015261324c81612fdf565b9050919050565b6000602082019050818103600083015261326c81613002565b9050919050565b6000602082019050818103600083015261328c81613025565b9050919050565b600060208201905081810360008301526132ac81613048565b9050919050565b600060208201905081810360008301526132cc8161308e565b9050919050565b60006020820190506132e860008301846130b1565b92915050565b600060a08201905061330360008301886130b1565b6133106020830187612f2e565b81810360408301526133228186612eb2565b90506133316060830185612ea3565b61333e60808301846130b1565b9695505050505050565b600060408201905061335d60008301856130b1565b61336a60208301846130b1565b9392505050565b600060208201905061338660008301846130c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f782613551565b915061340283613551565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343757613436613607565b5b828201905092915050565b600061344d82613551565b915061345883613551565b92508261346857613467613636565b5b828204905092915050565b600061347e82613551565b915061348983613551565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134c2576134c1613607565b5b828202905092915050565b60006134d882613551565b91506134e383613551565b9250828210156134f6576134f5613607565b5b828203905092915050565b600061350c82613531565b9050919050565b600061351e82613531565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613573826135b0565b9050919050565b60006135858261358c565b9050919050565b600061359782613531565b9050919050565b60006135a982613551565b9050919050565b60006135bb826135c2565b9050919050565b60006135cd82613531565b9050919050565b60005b838110156135f25780820151818401526020810190506135d7565b83811115613601576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61389f81613501565b81146138aa57600080fd5b50565b6138b681613513565b81146138c157600080fd5b50565b6138cd81613525565b81146138d857600080fd5b50565b6138e481613551565b81146138ef57600080fd5b5056fea2646970667358221220019989738987556bb7d20bcd7c5cb630108a535495b87a7219025d45d1707e8664736f6c63430008050033

Deployed Bytecode Sourcemap

5468:10724:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6748:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7699:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8121:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15971:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7429:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8639:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15646:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3363:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7523:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8345:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13824:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13976:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14139:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6711:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14403:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7869:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5925:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7785:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5999:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7609:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6649:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8475:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3036:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6677:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15796:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15332:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7980:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14980:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14763:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3206:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10609:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3763:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15144:180;;;;;;;;;;;;;:::i;:::-;;14267:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6618:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3537:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6748:54;;;;:::o;7699:80::-;7747:13;7771:5;;;;;;;;;;;;;;;;;7764:12;;7699:80;:::o;8121:216::-;8196:4;8248:6;8213:11;:23;8225:10;8213:23;;;;;;;;;;;;;;;:32;8237:7;8213:32;;;;;;;;;;;;;;;:41;;;;8291:7;8270:37;;8279:10;8270:37;;;8300:6;8270:37;;;;;;:::i;:::-;;;;;;;;8325:4;8318:11;;8121:216;;;;:::o;15971:150::-;16051:4;16107:6;16075:29;16095:8;16075:19;:29::i;:::-;:38;16068:45;;15971:150;;;;:::o;7429:88::-;7484:7;7502:12;;7495:19;;7429:88;:::o;8639:370::-;8739:4;8794:17;8759:11;:19;8771:6;8759:19;;;;;;;;;;;;;;;:31;8779:10;8759:31;;;;;;;;;;;;;;;;:52;8756:186;;8861:69;8897:6;8861:69;;;;;;;;;;;;;;;;;:11;:19;8873:6;8861:19;;;;;;;;;;;;;;;:31;8881:10;8861:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8827:11;:19;8839:6;8827:19;;;;;;;;;;;;;;;:31;8847:10;8827:31;;;;;;;;;;;;;;;:103;;;;8756:186;8961:40;8975:6;8983:9;8994:6;8961:13;:40::i;:::-;8954:47;;8639:370;;;;;:::o;15646:142::-;15699:7;15726:54;15764:15;15774:4;;;;;;;;;;;15764:9;:15::i;:::-;15726:33;15743:15;15753:4;;;;;;;;;;;15743:9;:15::i;:::-;15726:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15719:61;;15646:142;:::o;3363:103::-;3418:4;3453:5;;;;;;;;;;;3442:16;;:7;:16;;;3435:23;;3363:103;;;:::o;7523:80::-;7575:5;5852:1;7584:16;;7523:80;:::o;8345:122::-;8400:4;8424:35;8432:7;8441:17;8424:7;:35::i;:::-;8417:42;;8345:122;;;:::o;13824:145::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13924:4:::1;13909:12;;:19;;;;:::i;:::-;13899:6;:29;;13891:38;;;::::0;::::1;;13955:6;13940:12;:21;;;;13824:145:::0;:::o;13976:151::-;2752:19;2760:10;2752:7;:19::i;:::-;2744:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14079:4:::1;14064:12;;:19;;;;:::i;:::-;14054:6;:29;;14046:39;;;::::0;::::1;;14113:6;14096:14;:23;;;;13976:151:::0;:::o;14139:120::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14245:6:::1;14223:11;:19;14235:6;14223:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14139:120:::0;;:::o;6711:30::-;;;;;;;;;;;;;:::o;14403:352::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14555:13:::1;14540:12;:28;;;;14589:8;14579:7;:18;;;;14623:13;14608:12;:28;;;;14658:46;14690:13;14658:27;14676:8;14658:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;14647:8;:57;;;;14732:15;14715:14;:32;;;;14403:352:::0;;;;:::o;7869:105::-;7935:7;7953:9;:18;7963:7;7953:18;;;;;;;;;;;;;;;;7946:25;;7869:105;;;:::o;5925:54::-;;;;:::o;7785:78::-;7837:7;7855:5;;;;;;;;;;;7848:12;;7785:78;:::o;5999:56::-;;;;:::o;7609:84::-;7659:13;7683:7;;;;;;;;;;;;;;;;;7676:14;;7609:84;:::o;6649:19::-;;;;;;;;;;;;;:::o;8475:156::-;8555:4;8579:44;8593:10;8605:9;8616:6;8579:13;:44::i;:::-;8572:51;;8475:156;;;;:::o;3036:94::-;2752:19;2760:10;2752:7;:19::i;:::-;2744:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3118:4:::1;3096:14:::0;:19:::1;3111:3;3096:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3036:94:::0;:::o;6677:25::-;;;;:::o;15796:167::-;15864:7;15891:64;15932:22;:20;:22::i;:::-;15891:36;15904:22;15924:1;15904:15;15914:4;;;;;;;;;;;15904:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15891:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15884:71;;15796:167;;;:::o;15332:298::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15433:4:::1;15415:23;;:6;:23;;;;15407:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15489:24;15523:6;15516:24;;;15549:4;15516:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15489:66;;15574:20;;;;;;;;;;;15566:38;;:56;15605:16;15566:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15396:234;15332:298:::0;:::o;7980:133::-;8064:7;8082:11;:19;8094:6;8082:19;;;;;;;;;;;;;;;:28;8102:7;8082:28;;;;;;;;;;;;;;;;8075:35;;7980:133;;;;:::o;14980:156::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15086:8:::1;15072:11;;:22;;;;;;;;;;;;;;;;;;15121:7;15105:13;:23;;;;14980:156:::0;;:::o;14763:209::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14898:21:::1;14875:20;;:44;;;;;;;;;;;;;;;;;;14948:16;14930:15;;:34;;;;;;;;;;;;;;;;;;14763:209:::0;;:::o;3206:97::-;2752:19;2760:10;2752:7;:19::i;:::-;2744:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3290:5:::1;3268:14;:19;3283:3;3268:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3206:97:::0;:::o;10609:225::-;10665:7;10706:12;10701:1;10688:10;;:14;;;;:::i;:::-;:30;10685:67;;10728:21;10747:1;10728:14;;:18;;:21;;;;:::i;:::-;10721:28;;;;10685:67;10765:7;10762:39;;;10783:15;10796:1;10783:8;;:12;;:15;;;;:::i;:::-;10776:22;;;;10762:39;10818:8;;10811:15;;10609:225;;;;:::o;3763:173::-;2752:19;2760:10;2752:7;:19::i;:::-;2744:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3847:3:::1;3839:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3883:4;3861:14:::0;:19:::1;3876:3;3861:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3903:25;3924:3;3903:25;;;;;;:::i;:::-;;;;;;;;3763:173:::0;:::o;15144:180::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15197:26:::1;15226:21;15197:50;;15266:20;;;;;;;;;;;15258:38;;:58;15297:18;15258:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15186:138;15144:180::o:0;14267:128::-;2921:24;2934:10;2921:12;:24::i;:::-;2913:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14381:6:::1;14355:15;:23;14371:6;14355:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14267:128:::0;;:::o;6618:24::-;;;;;;;;;;;;;:::o;3537:107::-;3593:4;3617:14;:19;3632:3;3617:19;;;;;;;;;;;;;;;;;;;;;;;;;3610:26;;3537:107;;;:::o;420:192::-;506:7;539:1;534;:6;;542:12;526:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;566:9;582:1;578;:5;;;;:::i;:::-;566:17;;603:1;596:8;;;420:192;;;;;:::o;9017:942::-;9109:4;9129:6;;;;;;;;;;;9126:63;;;9145:41;9160:6;9168:9;9179:6;9145:14;:41::i;:::-;9138:48;;;;9126:63;9209:28;9222:6;9230;9209:12;:28::i;:::-;9275:4;;;;;;;;;;;9262:17;;:9;:17;;;;:38;;;;;9296:4;;;;;;;;;;;9283:17;;:9;:17;;;;9262:38;9258:198;;;9325:15;:26;9341:9;9325:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9388:14;;9378:6;9355:9;:20;9365:9;9355:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9325:77;9317:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9258:198;9479:16;:14;:16::i;:::-;9476:35;;;9498:10;:8;:10::i;:::-;9476:35;9527:10;:8;:10::i;:::-;9526:11;:32;;;;;9554:4;;;;;;;;;;;9541:17;;:9;:17;;;9526:32;9523:81;;;9589:1;9569:9;:17;9579:6;9569:17;;;;;;;;;;;;;;;;:21;9561:30;;;;;;9593:8;:6;:8::i;:::-;9523:81;9636:53;9658:6;9636:53;;;;;;;;;;;;;;;;;:9;:17;9646:6;9636:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9616:9;:17;9626:6;9616:17;;;;;;;;;;;;;;;:73;;;;9702:22;9727:21;9741:6;9727:13;:21::i;:::-;:67;;9788:6;9727:67;;;9751:34;9759:6;9767:9;9778:6;9751:7;:34::i;:::-;9727:67;9702:92;;9828:40;9853:14;9828:9;:20;9838:9;9828:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9805:9;:20;9815:9;9805:20;;;;;;;;;;;;;;;:63;;;;9903:9;9886:43;;9895:6;9886:43;;;9914:14;9886:43;;;;;;:::i;:::-;;;;;;;;9947:4;9940:11;;;9017:942;;;;;;:::o;278:136::-;336:7;363:43;367:1;370;363:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;356:50;;278:136;;;;:::o;91:181::-;149:7;169:9;185:1;181;:5;;;;:::i;:::-;169:17;;210:1;205;:6;;197:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;263:1;256:8;;;91:181;;;;:::o;618:250::-;676:7;705:1;700;:6;696:47;;;730:1;723:8;;;;696:47;755:9;771:1;767;:5;;;;:::i;:::-;755:17;;800:1;795;791;:5;;;;:::i;:::-;:10;783:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;859:1;852:8;;;618:250;;;;;:::o;874:132::-;932:7;959:39;963:1;966;959:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;952:46;;874:132;;;;:::o;9971:330::-;10064:4;10101:53;10123:6;10101:53;;;;;;;;;;;;;;;;;:9;:17;10111:6;10101:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10081:9;:17;10091:6;10081:17;;;;;;;;;;;;;;;:73;;;;10188:32;10213:6;10188:9;:20;10198:9;10188:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10165:9;:20;10175:9;10165:20;;;;;;;;;;;;;;;:55;;;;10253:9;10236:35;;10245:6;10236:35;;;10264:6;10236:35;;;;;;:::i;:::-;;;;;;;;10289:4;10282:11;;9971:330;;;;;:::o;10309:166::-;10406:12;;10396:6;:22;;:49;;;;10422:15;:23;10438:6;10422:23;;;;;;;;;;;;;;;;;;;;;;;;;10396:49;10388:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10309:166;;:::o;11222:197::-;11271:4;11309;;;;;;;;;;;11295:18;;:10;:18;;;;:38;;;;;11327:6;;;;;;;;;;;11326:7;11295:38;:62;;;;;11346:11;;;;;;;;;;;11295:62;:116;;;;;11398:13;;11370:9;:24;11388:4;11370:24;;;;;;;;;;;;;;;;:41;;11295:116;11288:123;;11222:197;:::o;11427:1843::-;6866:4;6857:6;;:13;;;;;;;;;;;;;;;;;;11476:28:::1;11507:24;11525:4;11507:9;:24::i;:::-;11476:55;;11542:23;11568:59;11625:1;11568:52;11611:8;;11568:38;11593:12;;11568:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11542:85;;11638:20;11661:41;11686:15;11661:20;:24;;:41;;;;:::i;:::-;11638:64;;11715:21;11753:1;11739:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11715:40;;11784:4;11766;11771:1;11766:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11810:4;;;;;;;;;;;11800;11805:1;11800:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11827:21;11851;11827:45;;11885:6;;;;;;;;;;;:57;;;11957:12;11984:1;12000:4;12027;12047:15;11885:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12084:17;12104:40;12130:13;12104:21;:25;;:40;;;;:::i;:::-;12084:60;;12155:19;12177:33;12190:19;12207:1;12190:12;;:16;;:19;;;;:::i;:::-;12177:8;;:12;;:33;;;;:::i;:::-;12155:55;;12221:26;12250:51;12299:1;12250:44;12282:11;12250:27;12264:12;;12250:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12221:80;;12312:28;12343:39;12370:11;12343:22;12357:7;;12343:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;12312:70;;12393:26;12422:44;12454:11;12422:27;12436:12;;12422:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12393:73;;12482:21;12540:20;;;;;;;;;;;12532:34;;12574:18;12599:5;12532:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12481:128;;;12628:16;12620:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12691:23;12751:15;;;;;;;;;;;12743:29;;12780:20;12807:5;12743:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12690:127;;;12836:18;12828:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12923:1;12905:15;:19;12902:361;;;12940:6;;;;;;;;;;;:22;;;12970:18;13016:4;13040:15;13074:1;13094::::0;13114:20:::1;;;;;;;;;;;13153:15;12940:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13203:48;13215:18;13235:15;13203:48;;;;;;;:::i;:::-;;;;;;;;12902:361;11465:1805;;;;;;;;;;;;6884:5:::0;6875:6;;:14;;;;;;;;;;;;;;;;;;11427:1843::o;13647:90::-;13690:4;13728:1;13714:10;;:15;;13707:22;;13647:90;:::o;13745:71::-;13796:12;13783:10;:25;;;;13745:71::o;10487:114::-;10549:4;10574:11;:19;10586:6;10574:19;;;;;;;;;;;;;;;;;;;;;;;;;10573:20;10566:27;;10487:114;;;:::o;10842:372::-;10927:7;10947:17;10967:61;11013:14;;10967:41;10978:29;11002:4;;;;;;;;;;;10990:16;;:8;:16;;;10978:11;:29::i;:::-;10967:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;10947:81;;11068:39;11097:9;11068;:24;11086:4;11068:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11041:9;:24;11059:4;11041:24;;;;;;;;;;;;;;;:66;;;;11148:4;11123:42;;11132:6;11123:42;;;11155:9;11123:42;;;;;;:::i;:::-;;;;;;;;11185:21;11196:9;11185:6;:10;;:21;;;;:::i;:::-;11178:28;;;10842:372;;;;;:::o;1012:345::-;1098:7;1197:1;1193;:5;1200:12;1185:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1224:9;1240:1;1236;:5;;;;:::i;:::-;1224:17;;1348:1;1341:8;;;1012:345;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:2;;;860:79;;:::i;:::-;822:2;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;812:263;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:2;;;1203:79;;:::i;:::-;1165:2;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1155:271;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:2;;;1563:79;;:::i;:::-;1525:2;1683:1;1708:53;1753:7;1744:6;1733:9;1729:22;1708:53;:::i;:::-;1698:63;;1654:117;1810:2;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1781:118;1515:391;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:2;;;2060:79;;:::i;:::-;2022:2;2180:1;2205:53;2250:7;2241:6;2230:9;2226:22;2205:53;:::i;:::-;2195:63;;2151:117;2307:2;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2278:118;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;2012:519;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:2;;;2665:79;;:::i;:::-;2627:2;2785:1;2810:53;2855:7;2846:6;2835:9;2831:22;2810:53;:::i;:::-;2800:63;;2756:117;2912:2;2938:50;2980:7;2971:6;2960:9;2956:22;2938:50;:::i;:::-;2928:60;;2883:115;2617:388;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:2;;;3142:79;;:::i;:::-;3104:2;3262:1;3287:53;3332:7;3323:6;3312:9;3308:22;3287:53;:::i;:::-;3277:63;;3233:117;3389:2;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;:::i;:::-;3405:63;;3360:118;3094:391;;;;;:::o;3491:323::-;3547:6;3596:2;3584:9;3575:7;3571:23;3567:32;3564:2;;;3602:79;;:::i;:::-;3564:2;3722:1;3747:50;3789:7;3780:6;3769:9;3765:22;3747:50;:::i;:::-;3737:60;;3693:114;3554:260;;;;:::o;3820:468::-;3885:6;3893;3942:2;3930:9;3921:7;3917:23;3913:32;3910:2;;;3948:79;;:::i;:::-;3910:2;4068:1;4093:50;4135:7;4126:6;4115:9;4111:22;4093:50;:::i;:::-;4083:60;;4039:114;4192:2;4218:53;4263:7;4254:6;4243:9;4239:22;4218:53;:::i;:::-;4208:63;;4163:118;3900:388;;;;;:::o;4294:329::-;4353:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:2;;;4408:79;;:::i;:::-;4370:2;4528:1;4553:53;4598:7;4589:6;4578:9;4574:22;4553:53;:::i;:::-;4543:63;;4499:117;4360:263;;;;:::o;4629:351::-;4699:6;4748:2;4736:9;4727:7;4723:23;4719:32;4716:2;;;4754:79;;:::i;:::-;4716:2;4874:1;4899:64;4955:7;4946:6;4935:9;4931:22;4899:64;:::i;:::-;4889:74;;4845:128;4706:274;;;;:::o;4986:474::-;5054:6;5062;5111:2;5099:9;5090:7;5086:23;5082:32;5079:2;;;5117:79;;:::i;:::-;5079:2;5237:1;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5208:117;5364:2;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5335:118;5069:391;;;;;:::o;5466:663::-;5554:6;5562;5570;5619:2;5607:9;5598:7;5594:23;5590:32;5587:2;;;5625:79;;:::i;:::-;5587:2;5745:1;5770:64;5826:7;5817:6;5806:9;5802:22;5770:64;:::i;:::-;5760:74;;5716:128;5883:2;5909:64;5965:7;5956:6;5945:9;5941:22;5909:64;:::i;:::-;5899:74;;5854:129;6022:2;6048:64;6104:7;6095:6;6084:9;6080:22;6048:64;:::i;:::-;6038:74;;5993:129;5577:552;;;;;:::o;6135:765::-;6221:6;6229;6237;6245;6294:3;6282:9;6273:7;6269:23;6265:33;6262:2;;;6301:79;;:::i;:::-;6262:2;6421:1;6446:53;6491:7;6482:6;6471:9;6467:22;6446:53;:::i;:::-;6436:63;;6392:117;6548:2;6574:53;6619:7;6610:6;6599:9;6595:22;6574:53;:::i;:::-;6564:63;;6519:118;6676:2;6702:53;6747:7;6738:6;6727:9;6723:22;6702:53;:::i;:::-;6692:63;;6647:118;6804:2;6830:53;6875:7;6866:6;6855:9;6851:22;6830:53;:::i;:::-;6820:63;;6775:118;6252:648;;;;;;;:::o;6906:179::-;6975:10;6996:46;7038:3;7030:6;6996:46;:::i;:::-;7074:4;7069:3;7065:14;7051:28;;6986:99;;;;:::o;7091:147::-;7186:45;7225:5;7186:45;:::i;:::-;7181:3;7174:58;7164:74;;:::o;7244:108::-;7321:24;7339:5;7321:24;:::i;:::-;7316:3;7309:37;7299:53;;:::o;7358:118::-;7445:24;7463:5;7445:24;:::i;:::-;7440:3;7433:37;7423:53;;:::o;7512:732::-;7631:3;7660:54;7708:5;7660:54;:::i;:::-;7730:86;7809:6;7804:3;7730:86;:::i;:::-;7723:93;;7840:56;7890:5;7840:56;:::i;:::-;7919:7;7950:1;7935:284;7960:6;7957:1;7954:13;7935:284;;;8036:6;8030:13;8063:63;8122:3;8107:13;8063:63;:::i;:::-;8056:70;;8149:60;8202:6;8149:60;:::i;:::-;8139:70;;7995:224;7982:1;7979;7975:9;7970:14;;7935:284;;;7939:14;8235:3;8228:10;;7636:608;;;;;;;:::o;8250:109::-;8331:21;8346:5;8331:21;:::i;:::-;8326:3;8319:34;8309:50;;:::o;8365:167::-;8470:55;8519:5;8470:55;:::i;:::-;8465:3;8458:68;8448:84;;:::o;8538:147::-;8633:45;8672:5;8633:45;:::i;:::-;8628:3;8621:58;8611:74;;:::o;8691:364::-;8779:3;8807:39;8840:5;8807:39;:::i;:::-;8862:71;8926:6;8921:3;8862:71;:::i;:::-;8855:78;;8942:52;8987:6;8982:3;8975:4;8968:5;8964:16;8942:52;:::i;:::-;9019:29;9041:6;9019:29;:::i;:::-;9014:3;9010:39;9003:46;;8783:272;;;;;:::o;9061:366::-;9203:3;9224:67;9288:2;9283:3;9224:67;:::i;:::-;9217:74;;9300:93;9389:3;9300:93;:::i;:::-;9418:2;9413:3;9409:12;9402:19;;9207:220;;;:::o;9433:366::-;9575:3;9596:67;9660:2;9655:3;9596:67;:::i;:::-;9589:74;;9672:93;9761:3;9672:93;:::i;:::-;9790:2;9785:3;9781:12;9774:19;;9579:220;;;:::o;9805:366::-;9947:3;9968:67;10032:2;10027:3;9968:67;:::i;:::-;9961:74;;10044:93;10133:3;10044:93;:::i;:::-;10162:2;10157:3;10153:12;10146:19;;9951:220;;;:::o;10177:366::-;10319:3;10340:67;10404:2;10399:3;10340:67;:::i;:::-;10333:74;;10416:93;10505:3;10416:93;:::i;:::-;10534:2;10529:3;10525:12;10518:19;;10323:220;;;:::o;10549:366::-;10691:3;10712:67;10776:2;10771:3;10712:67;:::i;:::-;10705:74;;10788:93;10877:3;10788:93;:::i;:::-;10906:2;10901:3;10897:12;10890:19;;10695:220;;;:::o;10921:366::-;11063:3;11084:67;11148:2;11143:3;11084:67;:::i;:::-;11077:74;;11160:93;11249:3;11160:93;:::i;:::-;11278:2;11273:3;11269:12;11262:19;;11067:220;;;:::o;11293:365::-;11435:3;11456:66;11520:1;11515:3;11456:66;:::i;:::-;11449:73;;11531:93;11620:3;11531:93;:::i;:::-;11649:2;11644:3;11640:12;11633:19;;11439:219;;;:::o;11664:398::-;11823:3;11844:83;11925:1;11920:3;11844:83;:::i;:::-;11837:90;;11936:93;12025:3;11936:93;:::i;:::-;12054:1;12049:3;12045:11;12038:18;;11827:235;;;:::o;12068:366::-;12210:3;12231:67;12295:2;12290:3;12231:67;:::i;:::-;12224:74;;12307:93;12396:3;12307:93;:::i;:::-;12425:2;12420:3;12416:12;12409:19;;12214:220;;;:::o;12440:118::-;12527:24;12545:5;12527:24;:::i;:::-;12522:3;12515:37;12505:53;;:::o;12564:112::-;12647:22;12663:5;12647:22;:::i;:::-;12642:3;12635:35;12625:51;;:::o;12682:379::-;12866:3;12888:147;13031:3;12888:147;:::i;:::-;12881:154;;13052:3;13045:10;;12870:191;;;:::o;13067:222::-;13160:4;13198:2;13187:9;13183:18;13175:26;;13211:71;13279:1;13268:9;13264:17;13255:6;13211:71;:::i;:::-;13165:124;;;;:::o;13295:238::-;13396:4;13434:2;13423:9;13419:18;13411:26;;13447:79;13523:1;13512:9;13508:17;13499:6;13447:79;:::i;:::-;13401:132;;;;:::o;13539:807::-;13788:4;13826:3;13815:9;13811:19;13803:27;;13840:71;13908:1;13897:9;13893:17;13884:6;13840:71;:::i;:::-;13921:72;13989:2;13978:9;13974:18;13965:6;13921:72;:::i;:::-;14003:80;14079:2;14068:9;14064:18;14055:6;14003:80;:::i;:::-;14093;14169:2;14158:9;14154:18;14145:6;14093:80;:::i;:::-;14183:73;14251:3;14240:9;14236:19;14227:6;14183:73;:::i;:::-;14266;14334:3;14323:9;14319:19;14310:6;14266:73;:::i;:::-;13793:553;;;;;;;;;:::o;14352:210::-;14439:4;14477:2;14466:9;14462:18;14454:26;;14490:65;14552:1;14541:9;14537:17;14528:6;14490:65;:::i;:::-;14444:118;;;;:::o;14568:258::-;14679:4;14717:2;14706:9;14702:18;14694:26;;14730:89;14816:1;14805:9;14801:17;14792:6;14730:89;:::i;:::-;14684:142;;;;:::o;14832:313::-;14945:4;14983:2;14972:9;14968:18;14960:26;;15032:9;15026:4;15022:20;15018:1;15007:9;15003:17;14996:47;15060:78;15133:4;15124:6;15060:78;:::i;:::-;15052:86;;14950:195;;;;:::o;15151:419::-;15317:4;15355:2;15344:9;15340:18;15332:26;;15404:9;15398:4;15394:20;15390:1;15379:9;15375:17;15368:47;15432:131;15558:4;15432:131;:::i;:::-;15424:139;;15322:248;;;:::o;15576:419::-;15742:4;15780:2;15769:9;15765:18;15757:26;;15829:9;15823:4;15819:20;15815:1;15804:9;15800:17;15793:47;15857:131;15983:4;15857:131;:::i;:::-;15849:139;;15747:248;;;:::o;16001:419::-;16167:4;16205:2;16194:9;16190:18;16182:26;;16254:9;16248:4;16244:20;16240:1;16229:9;16225:17;16218:47;16282:131;16408:4;16282:131;:::i;:::-;16274:139;;16172:248;;;:::o;16426:419::-;16592:4;16630:2;16619:9;16615:18;16607:26;;16679:9;16673:4;16669:20;16665:1;16654:9;16650:17;16643:47;16707:131;16833:4;16707:131;:::i;:::-;16699:139;;16597:248;;;:::o;16851:419::-;17017:4;17055:2;17044:9;17040:18;17032:26;;17104:9;17098:4;17094:20;17090:1;17079:9;17075:17;17068:47;17132:131;17258:4;17132:131;:::i;:::-;17124:139;;17022:248;;;:::o;17276:419::-;17442:4;17480:2;17469:9;17465:18;17457:26;;17529:9;17523:4;17519:20;17515:1;17504:9;17500:17;17493:47;17557:131;17683:4;17557:131;:::i;:::-;17549:139;;17447:248;;;:::o;17701:419::-;17867:4;17905:2;17894:9;17890:18;17882:26;;17954:9;17948:4;17944:20;17940:1;17929:9;17925:17;17918:47;17982:131;18108:4;17982:131;:::i;:::-;17974:139;;17872:248;;;:::o;18126:419::-;18292:4;18330:2;18319:9;18315:18;18307:26;;18379:9;18373:4;18369:20;18365:1;18354:9;18350:17;18343:47;18407:131;18533:4;18407:131;:::i;:::-;18399:139;;18297:248;;;:::o;18551:222::-;18644:4;18682:2;18671:9;18667:18;18659:26;;18695:71;18763:1;18752:9;18748:17;18739:6;18695:71;:::i;:::-;18649:124;;;;:::o;18779:831::-;19042:4;19080:3;19069:9;19065:19;19057:27;;19094:71;19162:1;19151:9;19147:17;19138:6;19094:71;:::i;:::-;19175:80;19251:2;19240:9;19236:18;19227:6;19175:80;:::i;:::-;19302:9;19296:4;19292:20;19287:2;19276:9;19272:18;19265:48;19330:108;19433:4;19424:6;19330:108;:::i;:::-;19322:116;;19448:72;19516:2;19505:9;19501:18;19492:6;19448:72;:::i;:::-;19530:73;19598:3;19587:9;19583:19;19574:6;19530:73;:::i;:::-;19047:563;;;;;;;;:::o;19616:332::-;19737:4;19775:2;19764:9;19760:18;19752:26;;19788:71;19856:1;19845:9;19841:17;19832:6;19788:71;:::i;:::-;19869:72;19937:2;19926:9;19922:18;19913:6;19869:72;:::i;:::-;19742:206;;;;;:::o;19954:214::-;20043:4;20081:2;20070:9;20066:18;20058:26;;20094:67;20158:1;20147:9;20143:17;20134:6;20094:67;:::i;:::-;20048:120;;;;:::o;20255:132::-;20322:4;20345:3;20337:11;;20375:4;20370:3;20366:14;20358:22;;20327:60;;;:::o;20393:114::-;20460:6;20494:5;20488:12;20478:22;;20467:40;;;:::o;20513:99::-;20565:6;20599:5;20593:12;20583:22;;20572:40;;;:::o;20618:113::-;20688:4;20720;20715:3;20711:14;20703:22;;20693:38;;;:::o;20737:184::-;20836:11;20870:6;20865:3;20858:19;20910:4;20905:3;20901:14;20886:29;;20848:73;;;;:::o;20927:147::-;21028:11;21065:3;21050:18;;21040:34;;;;:::o;21080:169::-;21164:11;21198:6;21193:3;21186:19;21238:4;21233:3;21229:14;21214:29;;21176:73;;;;:::o;21255:305::-;21295:3;21314:20;21332:1;21314:20;:::i;:::-;21309:25;;21348:20;21366:1;21348:20;:::i;:::-;21343:25;;21502:1;21434:66;21430:74;21427:1;21424:81;21421:2;;;21508:18;;:::i;:::-;21421:2;21552:1;21549;21545:9;21538:16;;21299:261;;;;:::o;21566:185::-;21606:1;21623:20;21641:1;21623:20;:::i;:::-;21618:25;;21657:20;21675:1;21657:20;:::i;:::-;21652:25;;21696:1;21686:2;;21701:18;;:::i;:::-;21686:2;21743:1;21740;21736:9;21731:14;;21608:143;;;;:::o;21757:348::-;21797:7;21820:20;21838:1;21820:20;:::i;:::-;21815:25;;21854:20;21872:1;21854:20;:::i;:::-;21849:25;;22042:1;21974:66;21970:74;21967:1;21964:81;21959:1;21952:9;21945:17;21941:105;21938:2;;;22049:18;;:::i;:::-;21938:2;22097:1;22094;22090:9;22079:20;;21805:300;;;;:::o;22111:191::-;22151:4;22171:20;22189:1;22171:20;:::i;:::-;22166:25;;22205:20;22223:1;22205:20;:::i;:::-;22200:25;;22244:1;22241;22238:8;22235:2;;;22249:18;;:::i;:::-;22235:2;22294:1;22291;22287:9;22279:17;;22156:146;;;;:::o;22308:96::-;22345:7;22374:24;22392:5;22374:24;:::i;:::-;22363:35;;22353:51;;;:::o;22410:104::-;22455:7;22484:24;22502:5;22484:24;:::i;:::-;22473:35;;22463:51;;;:::o;22520:90::-;22554:7;22597:5;22590:13;22583:21;22572:32;;22562:48;;;:::o;22616:126::-;22653:7;22693:42;22686:5;22682:54;22671:65;;22661:81;;;:::o;22748:77::-;22785:7;22814:5;22803:16;;22793:32;;;:::o;22831:86::-;22866:7;22906:4;22899:5;22895:16;22884:27;;22874:43;;;:::o;22923:134::-;22981:9;23014:37;23045:5;23014:37;:::i;:::-;23001:50;;22991:66;;;:::o;23063:162::-;23131:9;23164:55;23213:5;23164:55;:::i;:::-;23151:68;;23141:84;;;:::o;23231:131::-;23299:9;23332:24;23350:5;23332:24;:::i;:::-;23319:37;;23309:53;;;:::o;23368:121::-;23426:9;23459:24;23477:5;23459:24;:::i;:::-;23446:37;;23436:53;;;:::o;23495:126::-;23545:9;23578:37;23609:5;23578:37;:::i;:::-;23565:50;;23555:66;;;:::o;23627:113::-;23677:9;23710:24;23728:5;23710:24;:::i;:::-;23697:37;;23687:53;;;:::o;23746:307::-;23814:1;23824:113;23838:6;23835:1;23832:13;23824:113;;;23923:1;23918:3;23914:11;23908:18;23904:1;23899:3;23895:11;23888:39;23860:2;23857:1;23853:10;23848:15;;23824:113;;;23955:6;23952:1;23949:13;23946:2;;;24035:1;24026:6;24021:3;24017:16;24010:27;23946:2;23795:258;;;;:::o;24059:180::-;24107:77;24104:1;24097:88;24204:4;24201:1;24194:15;24228:4;24225:1;24218:15;24245:180;24293:77;24290:1;24283:88;24390:4;24387:1;24380:15;24414:4;24411:1;24404:15;24431:180;24479:77;24476:1;24469:88;24576:4;24573:1;24566:15;24600:4;24597:1;24590:15;24617:180;24665:77;24662:1;24655:88;24762:4;24759:1;24752:15;24786:4;24783:1;24776:15;24926:117;25035:1;25032;25025:12;25049:102;25090:6;25141:2;25137:7;25132:2;25125:5;25121:14;25117:28;25107:38;;25097:54;;;:::o;25157:224::-;25297:34;25293:1;25285:6;25281:14;25274:58;25366:7;25361:2;25353:6;25349:15;25342:32;25263:118;:::o;25387:167::-;25527:19;25523:1;25515:6;25511:14;25504:43;25493:61;:::o;25560:222::-;25700:34;25696:1;25688:6;25684:14;25677:58;25769:5;25764:2;25756:6;25752:15;25745:30;25666:116;:::o;25788:177::-;25928:29;25924:1;25916:6;25912:14;25905:53;25894:71;:::o;25971:180::-;26111:32;26107:1;26099:6;26095:14;26088:56;26077:74;:::o;26157:220::-;26297:34;26293:1;26285:6;26281:14;26274:58;26366:3;26361:2;26353:6;26349:15;26342:28;26263:114;:::o;26383:156::-;26523:8;26519:1;26511:6;26507:14;26500:32;26489:50;:::o;26545:114::-;26651:8;:::o;26665:161::-;26805:13;26801:1;26793:6;26789:14;26782:37;26771:55;:::o;26832:122::-;26905:24;26923:5;26905:24;:::i;:::-;26898:5;26895:35;26885:2;;26944:1;26941;26934:12;26885:2;26875:79;:::o;26960:138::-;27041:32;27067:5;27041:32;:::i;:::-;27034:5;27031:43;27021:2;;27088:1;27085;27078:12;27021:2;27011:87;:::o;27104:116::-;27174:21;27189:5;27174:21;:::i;:::-;27167:5;27164:32;27154:2;;27210:1;27207;27200:12;27154:2;27144:76;:::o;27226:122::-;27299:24;27317:5;27299:24;:::i;:::-;27292:5;27289:35;27279:2;;27338:1;27335;27328:12;27279:2;27269:79;:::o

Swarm Source

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