ETH Price: $3,397.00 (+6.56%)
Gas: 16 Gwei

Token

Kitsune (Kitsune)
 

Overview

Max Total Supply

9,999,999 Kitsune

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
jirencrypto.eth
Balance
24,514.487769057602392482 Kitsune

Value
$0.00
0xf5e18146ffd63a95df4b4ad8f0e25dad795cbcca
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:
Kitsune

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-11
*/

/**

Bewitchers are strong. They are misusing the power. Kitsune sightings were whispered. Yes it was him The golden fur and 9 tails
Kitsune arrived.

*/
//SPDX-License-Identifier: MIT
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;
    }
}


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


abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;


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


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


    
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }


    
    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 Kitsune is IBEP20, Auth {
    using SafeMath for uint256;


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


    string constant _name = "Kitsune";
    string constant _symbol = "Kitsune";
    uint8 constant _decimals = 18;


    uint256 _totalSupply = 9999999 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100; 
    uint256 public _maxWalletSize = (_totalSupply * 2) / 100; 


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


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


    uint256 liquidityFee = 3;
    uint256 OPFee = 1;
    uint256 DFee = 5;
    uint256 totalFee = 9;
    uint256 feeDenominator = 100;
    
    address private DFeeReceiver = 0x5B9A7782b449f7428eF2261E95F9fBabCE76d9df;
    address private OPFeeReceiver = 0x40d8A300267CAE50565C51cec245d33C3e7579Fe;


    IDEXRouter public router;
    address public pair;


    uint256 public launchedAt;


    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000000 * 1; // 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, 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 takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).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 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHOP = amountETH.mul(OPFee).div(totalETHFee);
        uint256 amountETHChad = amountETH - amountETHLiquidity - amountETHOP;


        (bool ChadSuccess, /* bytes memory data */) = payable(DFeeReceiver).call{value: amountETHChad, gas: 30000}("");
        require(ChadSuccess, "receiver rejected ETH transfer");
        (bool OPSuccess, /* bytes memory data */) = payable(OPFeeReceiver).call{value: amountETHOP, gas: 30000}("");
        require(OPSuccess, "receiver rejected ETH transfer");
        addLiquidity(amountToLiquify, amountETHLiquidity);
    }


    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
    if(tokenAmount > 0){
            router.addLiquidityETH{value: ETHAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(ETHAmount, tokenAmount);
        }
    }


    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 _OPFee, uint256 _DFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        OPFee = _OPFee;
        DFee = _DFee;
        totalFee = _liquidityFee.add(_OPFee).add(_DFee);
        feeDenominator = _feeDenominator;
    }


    function setFeeReceiver(address _DFeeReceiver, address _OPFeeReceiver) external authorized {
        DFeeReceiver = _DFeeReceiver;
        OPFeeReceiver = _OPFeeReceiver;
    }


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


    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(DFeeReceiver).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(DFeeReceiver).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 amountETH, 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":"amountETH","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":"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":"_DFeeReceiver","type":"address"},{"internalType":"address","name":"_OPFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_OPFee","type":"uint256"},{"internalType":"uint256","name":"_DFee","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"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee919062000873565b6298967f620000fe9190620009b0565b60055560646002600554620001149190620009b0565b620001209190620007e0565b60065560646002600554620001369190620009b0565b620001429190620007e0565b6007556003600c556001600d556005600e556009600f556064601055735b9a7782b449f7428ef2261e95f9fbabce76d9df601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507340d8a300267cae50565c51cec245d33c3e7579fe601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006101000a81548160ff0219169083151502179055506001620f4240600554620002389190620007e0565b620002449190620009b0565b6017553480156200025457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ac57600080fd5b505afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000742565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044592919062000796565b602060405180830381600087803b1580156200046057600080fd5b505af115801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b919062000742565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200071c9190620007c3565b60405180910390a35062000ae6565b6000815190506200073c8162000acc565b92915050565b6000602082840312156200075b576200075a62000aba565b5b60006200076b848285016200072b565b91505092915050565b6200077f8162000a11565b82525050565b620007908162000a45565b82525050565b6000604082019050620007ad600083018562000774565b620007bc602083018462000774565b9392505050565b6000602082019050620007da600083018462000785565b92915050565b6000620007ed8262000a45565b9150620007fa8362000a45565b9250826200080d576200080c62000a8b565b5b828204905092915050565b6000808291508390505b60018511156200086a5780860481111562000842576200084162000a5c565b5b6001851615620008525780820291505b8081029050620008628562000abf565b945062000822565b94509492505050565b6000620008808262000a45565b91506200088d8362000a4f565b9250620008bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c4565b905092915050565b600082620008d65760019050620009a9565b81620008e65760009050620009a9565b8160018114620008ff57600281146200090a5762000940565b6001915050620009a9565b60ff8411156200091f576200091e62000a5c565b5b8360020a91508482111562000939576200093862000a5c565b5b50620009a9565b5060208310610133831016604e8410600b84101617156200097a5782820a90508381111562000974576200097362000a5c565b5b620009a9565b62000989848484600162000818565b92509050818404811115620009a357620009a262000a5c565b5b81810290505b9392505050565b6000620009bd8262000a45565b9150620009ca8362000a45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a065762000a0562000a5c565b5b828202905092915050565b600062000a1e8262000a25565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ad78162000a11565b811462000ae357600080fd5b50565b6137c38062000af66000396000f3fe6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b6040516102369190613180565b60405180910390f35b34801561024b57600080fd5b50610254610885565b604051610261919061305e565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b46565b6108c2565b60405161029e9190613028565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612c20565b6109b4565b6040516102db9190613028565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b6040516103069190613180565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612ab3565b6109d3565b6040516103439190613028565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e9190613180565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612a19565b610c55565b6040516103ab9190613028565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d6919061321e565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612a19565b610cb7565b6040516104139190613028565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612bc6565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612bc6565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612b06565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190613028565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612cb3565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a19565b610f11565b60405161051f9190613180565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a9190613180565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612f91565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a09190613180565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb919061305e565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612f91565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b46565b610ff2565b6040516106339190613028565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612a19565b611007565b005b34801561067157600080fd5b5061067a6110a9565b6040516106879190613180565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612bc6565b6110af565b6040516106c49190613180565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612a19565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612a73565b6112d2565b60405161072a9190613180565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612b86565b611359565b005b34801561076857600080fd5b50610783600480360381019061077e9190612a73565b6113c6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612a19565b611494565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612a46565b611537565b005b3480156107e357600080fd5b506107ec611650565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612b06565b611709565b005b34801561082357600080fd5b5061082c6117ac565b6040516108399190613043565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612a19565b6117d2565b6040516108769190613028565b60405180910390f35b60175481565b60606040518060400160405280600781526020017f4b697473756e6500000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a29190613180565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461188c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d1b90919063ffffffff16565b611d1b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf3336117d2565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990613160565b60405180910390fd5b6103e8600554610d4291906132ef565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613140565b60405180910390fd5b6103e8600554610db091906132ef565b811015610dbc57600080fd5b8060078190555050565b610dcf336117d2565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590613160565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e85336117d2565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90613160565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d6590919063ffffffff16565b611d6590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f4b697473756e6500000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461188c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613140565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611dc390919063ffffffff16565b85611dc390919063ffffffff16565b611e3e90919063ffffffff16565b9050919050565b61112a336117d2565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613160565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906130c0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112139190612f91565b60206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612bf3565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112cd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611362336117d2565b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613160565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113cf336117d2565b61140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613160565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61149d33610c55565b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613140565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61154033610c55565b61157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613140565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116459190612fac565b60405180910390a150565b611659336117d2565b611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90613160565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611705573d6000803e3d6000fd5b5050565b611712336117d2565b611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890613160565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867919061305e565b60405180910390fd5b506000838561187f919061337a565b9050809150509392505050565b6000601860009054906101000a900460ff16156118b5576118ae848484611e88565b9050611d14565b6118bf848361205b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561196b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a14575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a119190613299565b11155b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613080565b60405180910390fd5b5b611a5c6120f8565b15611a6a57611a696121cf565b5b611a72612699565b158015611acc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b26576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b1d57600080fd5b611b256126a6565b5b611baf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bfd856126af565b611c075782611c12565b611c118584612706565b5b9050611c6681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d069190613180565b60405180910390a360019150505b9392505050565b6000611d5d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611828565b905092915050565b6000808284611d749190613299565b905083811015611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db0906130e0565b60405180910390fd5b8091505092915050565b600080831415611dd65760009050611e38565b60008284611de49190613320565b9050828482611df391906132ef565b14611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90613120565b60405180910390fd5b809150505b92915050565b6000611e8083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284a565b905092915050565b6000611f13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120489190613180565b60405180910390a3600190509392505050565b600654811115806120b55750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906130a0565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121655750601860009054906101000a900460ff16155b801561217d5750601660009054906101000a900460ff165b80156121ca5750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121f530610f11565b905060006122356002612227600f54612219600c5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050600061224c8284611d1b90919063ffffffff16565b90506000600267ffffffffffffffff81111561226b5761226a61352f565b5b6040519080825280602002602001820160405280156122995781602001602082028036833780820191505090505b50905030816000815181106122b1576122b0613500565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232257612321613500565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123c595949392919061319b565b600060405180830381600087803b1580156123df57600080fd5b505af11580156123f3573d6000803e3d6000fd5b50505050600061240c8247611d1b90919063ffffffff16565b9050600061243a6124296002600c54611e3e90919063ffffffff16565b600f54611d1b90919063ffffffff16565b90506000612478600261246a8461245c600c5488611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905060006124a383612495600d5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905060008183866124b4919061337a565b6124be919061337a565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161250c90612f7c565b600060405180830381858888f193505050503d806000811461254a576040519150601f19603f3d011682016040523d82523d6000602084013e61254f565b606091505b5050905080612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90613100565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125df90612f7c565b600060405180830381858888f193505050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613100565b60405180910390fd5b6126708b866128ad565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612732601054612724600f5486611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905061278681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128269190613180565b60405180910390a36128418184611d1b90919063ffffffff16565b91505092915050565b60008083118290612891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612888919061305e565b60405180910390fd5b50600083856128a091906132ef565b9050809150509392505050565b60008211156129ac57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161291d96959493929190612fc7565b6060604051808303818588803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296f9190612c60565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681836040516129a39291906131f5565b60405180910390a15b5050565b6000813590506129bf81613731565b92915050565b6000813590506129d481613748565b92915050565b6000813590506129e98161375f565b92915050565b6000813590506129fe81613776565b92915050565b600081519050612a1381613776565b92915050565b600060208284031215612a2f57612a2e61355e565b5b6000612a3d848285016129b0565b91505092915050565b600060208284031215612a5c57612a5b61355e565b5b6000612a6a848285016129c5565b91505092915050565b60008060408385031215612a8a57612a8961355e565b5b6000612a98858286016129b0565b9250506020612aa9858286016129b0565b9150509250929050565b600080600060608486031215612acc57612acb61355e565b5b6000612ada868287016129b0565b9350506020612aeb868287016129b0565b9250506040612afc868287016129ef565b9150509250925092565b60008060408385031215612b1d57612b1c61355e565b5b6000612b2b858286016129b0565b9250506020612b3c858286016129da565b9150509250929050565b60008060408385031215612b5d57612b5c61355e565b5b6000612b6b858286016129b0565b9250506020612b7c858286016129ef565b9150509250929050565b60008060408385031215612b9d57612b9c61355e565b5b6000612bab858286016129da565b9250506020612bbc858286016129ef565b9150509250929050565b600060208284031215612bdc57612bdb61355e565b5b6000612bea848285016129ef565b91505092915050565b600060208284031215612c0957612c0861355e565b5b6000612c1784828501612a04565b91505092915050565b60008060408385031215612c3757612c3661355e565b5b6000612c45858286016129ef565b9250506020612c56858286016129ef565b9150509250929050565b600080600060608486031215612c7957612c7861355e565b5b6000612c8786828701612a04565b9350506020612c9886828701612a04565b9250506040612ca986828701612a04565b9150509250925092565b60008060008060808587031215612ccd57612ccc61355e565b5b6000612cdb878288016129ef565b9450506020612cec878288016129ef565b9350506040612cfd878288016129ef565b9250506060612d0e878288016129ef565b91505092959194509250565b6000612d268383612d41565b60208301905092915050565b612d3b81613415565b82525050565b612d4a816133ae565b82525050565b612d59816133ae565b82525050565b6000612d6a82613249565b612d74818561326c565b9350612d7f83613239565b8060005b83811015612db0578151612d978882612d1a565b9750612da28361325f565b925050600181019050612d83565b5085935050505092915050565b612dc6816133d2565b82525050565b612dd581613427565b82525050565b612de481613439565b82525050565b6000612df582613254565b612dff8185613288565b9350612e0f81856020860161346f565b612e1881613563565b840191505092915050565b6000612e30602583613288565b9150612e3b82613574565b604082019050919050565b6000612e53601183613288565b9150612e5e826135c3565b602082019050919050565b6000612e76602383613288565b9150612e81826135ec565b604082019050919050565b6000612e99601b83613288565b9150612ea48261363b565b602082019050919050565b6000612ebc601e83613288565b9150612ec782613664565b602082019050919050565b6000612edf602183613288565b9150612eea8261368d565b604082019050919050565b6000612f02600683613288565b9150612f0d826136dc565b602082019050919050565b6000612f2560008361327d565b9150612f3082613705565b600082019050919050565b6000612f48600b83613288565b9150612f5382613708565b602082019050919050565b612f67816133fe565b82525050565b612f7681613408565b82525050565b6000612f8782612f18565b9150819050919050565b6000602082019050612fa66000830184612d50565b92915050565b6000602082019050612fc16000830184612d32565b92915050565b600060c082019050612fdc6000830189612d50565b612fe96020830188612f5e565b612ff66040830187612ddb565b6130036060830186612ddb565b6130106080830185612d50565b61301d60a0830184612f5e565b979650505050505050565b600060208201905061303d6000830184612dbd565b92915050565b60006020820190506130586000830184612dcc565b92915050565b600060208201905081810360008301526130788184612dea565b905092915050565b6000602082019050818103600083015261309981612e23565b9050919050565b600060208201905081810360008301526130b981612e46565b9050919050565b600060208201905081810360008301526130d981612e69565b9050919050565b600060208201905081810360008301526130f981612e8c565b9050919050565b6000602082019050818103600083015261311981612eaf565b9050919050565b6000602082019050818103600083015261313981612ed2565b9050919050565b6000602082019050818103600083015261315981612ef5565b9050919050565b6000602082019050818103600083015261317981612f3b565b9050919050565b60006020820190506131956000830184612f5e565b92915050565b600060a0820190506131b06000830188612f5e565b6131bd6020830187612ddb565b81810360408301526131cf8186612d5f565b90506131de6060830185612d50565b6131eb6080830184612f5e565b9695505050505050565b600060408201905061320a6000830185612f5e565b6132176020830184612f5e565b9392505050565b60006020820190506132336000830184612f6d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132a4826133fe565b91506132af836133fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132e4576132e36134a2565b5b828201905092915050565b60006132fa826133fe565b9150613305836133fe565b925082613315576133146134d1565b5b828204905092915050565b600061332b826133fe565b9150613336836133fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336f5761336e6134a2565b5b828202905092915050565b6000613385826133fe565b9150613390836133fe565b9250828210156133a3576133a26134a2565b5b828203905092915050565b60006133b9826133de565b9050919050565b60006133cb826133de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134208261344b565b9050919050565b60006134328261344b565b9050919050565b6000613444826133fe565b9050919050565b60006134568261345d565b9050919050565b6000613468826133de565b9050919050565b60005b8381101561348d578082015181840152602081019050613472565b8381111561349c576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61373a816133ae565b811461374557600080fd5b50565b613751816133c0565b811461375c57600080fd5b50565b613768816133d2565b811461377357600080fd5b50565b61377f816133fe565b811461378a57600080fd5b5056fea2646970667358221220e3e4ce3a76419ee53deca5c259f06dadf1c7e45df81bc4ef939a4a0d361bc84964736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063893d20e811610118578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b146107ae578063f4293890146107d7578063f84ba65d146107ee578063f887ea4014610817578063fe9fbb80146108425761020f565b8063dd62ed3e146106f6578063df20fd4914610733578063e66db25e1461075c578063f0b37c04146107855761020f565b8063a9059cbb116100e7578063a9059cbb146105ff578063b6a5d7de1461063c578063bf56b37114610665578063d51ed1c814610690578063dc93cf70146106cd5761020f565b8063893d20e8146105535780638f9a55c01461057e57806395d89b41146105a9578063a8aa1b31146105d45761020f565b8063313ce5671161019b578063658d4b7f1161016a578063658d4b7f1461046e5780636ddd1713146104975780636fcba377146104c257806370a08231146104eb5780637d1db4a5146105285761020f565b8063313ce567146103b4578063571ac8b0146103df5780635c85974f1461041c5780635d0044ca146104455761020f565b806318160ddd116101d757806318160ddd146102e457806323b872dd1461030f5780632b112e491461034c5780632f54bf6e146103775761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a5780631161ae39146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961087f565b6040516102369190613180565b60405180910390f35b34801561024b57600080fd5b50610254610885565b604051610261919061305e565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612b46565b6108c2565b60405161029e9190613028565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612c20565b6109b4565b6040516102db9190613028565b60405180910390f35b3480156102f057600080fd5b506102f96109c9565b6040516103069190613180565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612ab3565b6109d3565b6040516103439190613028565b60405180910390f35b34801561035857600080fd5b50610361610bd3565b60405161036e9190613180565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612a19565b610c55565b6040516103ab9190613028565b60405180910390f35b3480156103c057600080fd5b506103c9610cae565b6040516103d6919061321e565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190612a19565b610cb7565b6040516104139190613028565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612bc6565b610cea565b005b34801561045157600080fd5b5061046c60048036038101906104679190612bc6565b610d58565b005b34801561047a57600080fd5b5061049560048036038101906104909190612b06565b610dc6565b005b3480156104a357600080fd5b506104ac610e69565b6040516104b99190613028565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190612cb3565b610e7c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a19565b610f11565b60405161051f9190613180565b60405180910390f35b34801561053457600080fd5b5061053d610f5a565b60405161054a9190613180565b60405180910390f35b34801561055f57600080fd5b50610568610f60565b6040516105759190612f91565b60405180910390f35b34801561058a57600080fd5b50610593610f89565b6040516105a09190613180565b60405180910390f35b3480156105b557600080fd5b506105be610f8f565b6040516105cb919061305e565b60405180910390f35b3480156105e057600080fd5b506105e9610fcc565b6040516105f69190612f91565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612b46565b610ff2565b6040516106339190613028565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190612a19565b611007565b005b34801561067157600080fd5b5061067a6110a9565b6040516106879190613180565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190612bc6565b6110af565b6040516106c49190613180565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612a19565b611121565b005b34801561070257600080fd5b5061071d60048036038101906107189190612a73565b6112d2565b60405161072a9190613180565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612b86565b611359565b005b34801561076857600080fd5b50610783600480360381019061077e9190612a73565b6113c6565b005b34801561079157600080fd5b506107ac60048036038101906107a79190612a19565b611494565b005b3480156107ba57600080fd5b506107d560048036038101906107d09190612a46565b611537565b005b3480156107e357600080fd5b506107ec611650565b005b3480156107fa57600080fd5b5061081560048036038101906108109190612b06565b611709565b005b34801561082357600080fd5b5061082c6117ac565b6040516108399190613043565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190612a19565b6117d2565b6040516108769190613028565b60405180910390f35b60175481565b60606040518060400160405280600781526020017f4b697473756e6500000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a29190613180565b60405180910390a36001905092915050565b6000826109c0836110af565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bbf57610b3e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bca84848461188c565b90509392505050565b6000610c50610c03600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b610c42610c31600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b600554611d1b90919063ffffffff16565b611d1b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000610ce3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c2565b9050919050565b610cf3336117d2565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2990613160565b60405180910390fd5b6103e8600554610d4291906132ef565b811015610d4e57600080fd5b8060068190555050565b610d6133610c55565b610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613140565b60405180910390fd5b6103e8600554610db091906132ef565b811015610dbc57600080fd5b8060078190555050565b610dcf336117d2565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590613160565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610e85336117d2565b610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb90613160565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610efe82610ef08587611d6590919063ffffffff16565b611d6590919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f4b697473756e6500000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fff33848461188c565b905092915050565b61101033610c55565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690613140565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600061111a6110bc610bd3565b61110c6110fd60026110ef601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f11565b611dc390919063ffffffff16565b85611dc390919063ffffffff16565b611e3e90919063ffffffff16565b9050919050565b61112a336117d2565b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613160565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf906130c0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112139190612f91565b60206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612bf3565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112cd573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611362336117d2565b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613160565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6113cf336117d2565b61140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613160565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61149d33610c55565b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613140565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61154033610c55565b61157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613140565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116459190612fac565b60405180910390a150565b611659336117d2565b611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168f90613160565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611705573d6000803e3d6000fd5b5050565b611712336117d2565b611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890613160565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867919061305e565b60405180910390fd5b506000838561187f919061337a565b9050809150509392505050565b6000601860009054906101000a900460ff16156118b5576118ae848484611e88565b9050611d14565b6118bf848361205b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561196b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5457600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a14575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a119190613299565b11155b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613080565b60405180910390fd5b5b611a5c6120f8565b15611a6a57611a696121cf565b5b611a72612699565b158015611acc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b26576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b1d57600080fd5b611b256126a6565b5b611baf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bfd856126af565b611c075782611c12565b611c118584612706565b5b9050611c6681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d069190613180565b60405180910390a360019150505b9392505050565b6000611d5d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611828565b905092915050565b6000808284611d749190613299565b905083811015611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db0906130e0565b60405180910390fd5b8091505092915050565b600080831415611dd65760009050611e38565b60008284611de49190613320565b9050828482611df391906132ef565b14611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90613120565b60405180910390fd5b809150505b92915050565b6000611e8083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284a565b905092915050565b6000611f13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118289092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa882600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120489190613180565b60405180910390a3600190509392505050565b600654811115806120b55750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906130a0565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121655750601860009054906101000a900460ff16155b801561217d5750601660009054906101000a900460ff165b80156121ca5750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006121f530610f11565b905060006122356002612227600f54612219600c5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050600061224c8284611d1b90919063ffffffff16565b90506000600267ffffffffffffffff81111561226b5761226a61352f565b5b6040519080825280602002602001820160405280156122995781602001602082028036833780820191505090505b50905030816000815181106122b1576122b0613500565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232257612321613500565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016123c595949392919061319b565b600060405180830381600087803b1580156123df57600080fd5b505af11580156123f3573d6000803e3d6000fd5b50505050600061240c8247611d1b90919063ffffffff16565b9050600061243a6124296002600c54611e3e90919063ffffffff16565b600f54611d1b90919063ffffffff16565b90506000612478600261246a8461245c600c5488611dc390919063ffffffff16565b611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905060006124a383612495600d5487611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905060008183866124b4919061337a565b6124be919061337a565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161250c90612f7c565b600060405180830381858888f193505050503d806000811461254a576040519150601f19603f3d011682016040523d82523d6000602084013e61254f565b606091505b5050905080612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a90613100565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516125df90612f7c565b600060405180830381858888f193505050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613100565b60405180910390fd5b6126708b866128ad565b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080612732601054612724600f5486611dc390919063ffffffff16565b611e3e90919063ffffffff16565b905061278681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128269190613180565b60405180910390a36128418184611d1b90919063ffffffff16565b91505092915050565b60008083118290612891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612888919061305e565b60405180910390fd5b50600083856128a091906132ef565b9050809150509392505050565b60008211156129ac57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161291d96959493929190612fc7565b6060604051808303818588803b15801561293657600080fd5b505af115801561294a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296f9190612c60565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681836040516129a39291906131f5565b60405180910390a15b5050565b6000813590506129bf81613731565b92915050565b6000813590506129d481613748565b92915050565b6000813590506129e98161375f565b92915050565b6000813590506129fe81613776565b92915050565b600081519050612a1381613776565b92915050565b600060208284031215612a2f57612a2e61355e565b5b6000612a3d848285016129b0565b91505092915050565b600060208284031215612a5c57612a5b61355e565b5b6000612a6a848285016129c5565b91505092915050565b60008060408385031215612a8a57612a8961355e565b5b6000612a98858286016129b0565b9250506020612aa9858286016129b0565b9150509250929050565b600080600060608486031215612acc57612acb61355e565b5b6000612ada868287016129b0565b9350506020612aeb868287016129b0565b9250506040612afc868287016129ef565b9150509250925092565b60008060408385031215612b1d57612b1c61355e565b5b6000612b2b858286016129b0565b9250506020612b3c858286016129da565b9150509250929050565b60008060408385031215612b5d57612b5c61355e565b5b6000612b6b858286016129b0565b9250506020612b7c858286016129ef565b9150509250929050565b60008060408385031215612b9d57612b9c61355e565b5b6000612bab858286016129da565b9250506020612bbc858286016129ef565b9150509250929050565b600060208284031215612bdc57612bdb61355e565b5b6000612bea848285016129ef565b91505092915050565b600060208284031215612c0957612c0861355e565b5b6000612c1784828501612a04565b91505092915050565b60008060408385031215612c3757612c3661355e565b5b6000612c45858286016129ef565b9250506020612c56858286016129ef565b9150509250929050565b600080600060608486031215612c7957612c7861355e565b5b6000612c8786828701612a04565b9350506020612c9886828701612a04565b9250506040612ca986828701612a04565b9150509250925092565b60008060008060808587031215612ccd57612ccc61355e565b5b6000612cdb878288016129ef565b9450506020612cec878288016129ef565b9350506040612cfd878288016129ef565b9250506060612d0e878288016129ef565b91505092959194509250565b6000612d268383612d41565b60208301905092915050565b612d3b81613415565b82525050565b612d4a816133ae565b82525050565b612d59816133ae565b82525050565b6000612d6a82613249565b612d74818561326c565b9350612d7f83613239565b8060005b83811015612db0578151612d978882612d1a565b9750612da28361325f565b925050600181019050612d83565b5085935050505092915050565b612dc6816133d2565b82525050565b612dd581613427565b82525050565b612de481613439565b82525050565b6000612df582613254565b612dff8185613288565b9350612e0f81856020860161346f565b612e1881613563565b840191505092915050565b6000612e30602583613288565b9150612e3b82613574565b604082019050919050565b6000612e53601183613288565b9150612e5e826135c3565b602082019050919050565b6000612e76602383613288565b9150612e81826135ec565b604082019050919050565b6000612e99601b83613288565b9150612ea48261363b565b602082019050919050565b6000612ebc601e83613288565b9150612ec782613664565b602082019050919050565b6000612edf602183613288565b9150612eea8261368d565b604082019050919050565b6000612f02600683613288565b9150612f0d826136dc565b602082019050919050565b6000612f2560008361327d565b9150612f3082613705565b600082019050919050565b6000612f48600b83613288565b9150612f5382613708565b602082019050919050565b612f67816133fe565b82525050565b612f7681613408565b82525050565b6000612f8782612f18565b9150819050919050565b6000602082019050612fa66000830184612d50565b92915050565b6000602082019050612fc16000830184612d32565b92915050565b600060c082019050612fdc6000830189612d50565b612fe96020830188612f5e565b612ff66040830187612ddb565b6130036060830186612ddb565b6130106080830185612d50565b61301d60a0830184612f5e565b979650505050505050565b600060208201905061303d6000830184612dbd565b92915050565b60006020820190506130586000830184612dcc565b92915050565b600060208201905081810360008301526130788184612dea565b905092915050565b6000602082019050818103600083015261309981612e23565b9050919050565b600060208201905081810360008301526130b981612e46565b9050919050565b600060208201905081810360008301526130d981612e69565b9050919050565b600060208201905081810360008301526130f981612e8c565b9050919050565b6000602082019050818103600083015261311981612eaf565b9050919050565b6000602082019050818103600083015261313981612ed2565b9050919050565b6000602082019050818103600083015261315981612ef5565b9050919050565b6000602082019050818103600083015261317981612f3b565b9050919050565b60006020820190506131956000830184612f5e565b92915050565b600060a0820190506131b06000830188612f5e565b6131bd6020830187612ddb565b81810360408301526131cf8186612d5f565b90506131de6060830185612d50565b6131eb6080830184612f5e565b9695505050505050565b600060408201905061320a6000830185612f5e565b6132176020830184612f5e565b9392505050565b60006020820190506132336000830184612f6d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006132a4826133fe565b91506132af836133fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132e4576132e36134a2565b5b828201905092915050565b60006132fa826133fe565b9150613305836133fe565b925082613315576133146134d1565b5b828204905092915050565b600061332b826133fe565b9150613336836133fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336f5761336e6134a2565b5b828202905092915050565b6000613385826133fe565b9150613390836133fe565b9250828210156133a3576133a26134a2565b5b828203905092915050565b60006133b9826133de565b9050919050565b60006133cb826133de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134208261344b565b9050919050565b60006134328261344b565b9050919050565b6000613444826133fe565b9050919050565b60006134568261345d565b9050919050565b6000613468826133de565b9050919050565b60005b8381101561348d578082015181840152602081019050613472565b8381111561349c576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61373a816133ae565b811461374557600080fd5b50565b613751816133c0565b811461375c57600080fd5b50565b613768816133d2565b811461377357600080fd5b50565b61377f816133fe565b811461378a57600080fd5b5056fea2646970667358221220e3e4ce3a76419ee53deca5c259f06dadf1c7e45df81bc4ef939a4a0d361bc84964736f6c63430008070033

Deployed Bytecode Sourcemap

5345:10437:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6585:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7549:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7973:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15561:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7279:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8497:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15232:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3218:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7373:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8199:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13480:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13634:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13799:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6548:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14067:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7719:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5797:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5859:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7459:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6482:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8331:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2887:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6512:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15384:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14926:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7830:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14578:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14389:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3059:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3622:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14744:172;;;;;;;;;;;;;:::i;:::-;;13929:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6451:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3394:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6585:57;;;;:::o;7549:80::-;7597:13;7621:5;;;;;;;;;;;;;;;;;7614:12;;7549:80;:::o;7973:216::-;8048:4;8100:6;8065:11;:23;8077:10;8065:23;;;;;;;;;;;;;;;:32;8089:7;8065:32;;;;;;;;;;;;;;;:41;;;;8143:7;8122:37;;8131:10;8122:37;;;8152:6;8122:37;;;;;;:::i;:::-;;;;;;;;8177:4;8170:11;;7973:216;;;;:::o;15561:150::-;15641:4;15697:6;15665:29;15685:8;15665:19;:29::i;:::-;:38;15658:45;;15561:150;;;;:::o;7279:88::-;7334:7;7352:12;;7345:19;;7279:88;:::o;8497:372::-;8597:4;8652:17;8617:11;:19;8629:6;8617:19;;;;;;;;;;;;;;;:31;8637:10;8617:31;;;;;;;;;;;;;;;;:52;8614:186;;8719:69;8755:6;8719:69;;;;;;;;;;;;;;;;;:11;:19;8731:6;8719:19;;;;;;;;;;;;;;;:31;8739:10;8719:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8685:11;:19;8697:6;8685:19;;;;;;;;;;;;;;;:31;8705:10;8685:31;;;;;;;;;;;;;;;:103;;;;8614:186;8821:40;8835:6;8843:9;8854:6;8821:13;:40::i;:::-;8814:47;;8497:372;;;;;:::o;15232:142::-;15285:7;15312:54;15350:15;15360:4;;;;;;;;;;;15350:9;:15::i;:::-;15312:33;15329:15;15339:4;;;;;;;;;;;15329:9;:15::i;:::-;15312:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15305:61;;15232:142;:::o;3218:103::-;3273:4;3308:5;;;;;;;;;;;3297:16;;:7;:16;;;3290:23;;3218:103;;;:::o;7373:80::-;7425:5;5727:2;7434:16;;7373:80;:::o;8199:122::-;8254:4;8278:35;8286:7;8295:17;8278:7;:35::i;:::-;8271:42;;8199:122;;;:::o;13480:145::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13580:4:::1;13565:12;;:19;;;;:::i;:::-;13555:6;:29;;13547:38;;;::::0;::::1;;13611:6;13596:12;:21;;;;13480:145:::0;:::o;13634:151::-;2722:19;2730:10;2722:7;:19::i;:::-;2714:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13737:4:::1;13722:12;;:19;;;;:::i;:::-;13712:6;:29;;13704:39;;;::::0;::::1;;13771:6;13754:14;:23;;;;13634:151:::0;:::o;13799:120::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13905:6:::1;13883:11;:19;13895:6;13883:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13799:120:::0;;:::o;6548:30::-;;;;;;;;;;;;;:::o;14067:312::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14209:13:::1;14194:12;:28;;;;14241:6;14233:5;:14;;;;14265:5;14258:4;:12;;;;14292:36;14322:5;14292:25;14310:6;14292:13;:17;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;14281:8;:47;;;;14356:15;14339:14;:32;;;;14067:312:::0;;;;:::o;7719:105::-;7785:7;7803:9;:18;7813:7;7803:18;;;;;;;;;;;;;;;;7796:25;;7719:105;;;:::o;5797:54::-;;;;:::o;7635:78::-;7687:7;7705:5;;;;;;;;;;;7698:12;;7635:78;:::o;5859:56::-;;;;:::o;7459:84::-;7509:13;7533:7;;;;;;;;;;;;;;;;;7526:14;;7459:84;:::o;6482:19::-;;;;;;;;;;;;;:::o;8331:156::-;8411:4;8435:44;8449:10;8461:9;8472:6;8435:13;:44::i;:::-;8428:51;;8331:156;;;;:::o;2887:94::-;2722:19;2730:10;2722:7;:19::i;:::-;2714:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2969:4:::1;2947:14:::0;:19:::1;2962:3;2947:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2887:94:::0;:::o;6512:25::-;;;;:::o;15384:167::-;15452:7;15479:64;15520:22;:20;:22::i;:::-;15479:36;15492:22;15512:1;15492:15;15502:4;;;;;;;;;;;15492:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15479:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15472:71;;15384:167;;;:::o;14926:290::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15027:4:::1;15009:23;;:6;:23;;;;15001:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15083:24;15117:6;15110:24;;;15143:4;15110:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15083:66;;15168:12;;;;;;;;;;;15160:30;;:48;15191:16;15160:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14990:226;14926:290:::0;:::o;7830:133::-;7914:7;7932:11;:19;7944:6;7932:19;;;;;;;;;;;;;;;:28;7952:7;7932:28;;;;;;;;;;;;;;;;7925:35;;7830:133;;;;:::o;14578:156::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14684:8:::1;14670:11;;:22;;;;;;;;;;;;;;;;;;14719:7;14703:13;:23;;;;14578:156:::0;;:::o;14389:179::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14506:13:::1;14491:12;;:28;;;;;;;;;;;;;;;;;;14546:14;14530:13;;:30;;;;;;;;;;;;;;;;;;14389:179:::0;;:::o;3059:97::-;2722:19;2730:10;2722:7;:19::i;:::-;2714:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3143:5:::1;3121:14;:19;3136:3;3121:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3059:97:::0;:::o;3622:173::-;2722:19;2730:10;2722:7;:19::i;:::-;2714:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3706:3:::1;3698:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3742:4;3720:14:::0;:19:::1;3735:3;3720:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3762:25;3783:3;3762:25;;;;;;:::i;:::-;;;;;;;;3622:173:::0;:::o;14744:172::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14797:26:::1;14826:21;14797:50;;14866:12;;;;;;;;;;;14858:30;;:50;14889:18;14858:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14786:130;14744:172::o:0;13929:128::-;2820:24;2833:10;2820:12;:24::i;:::-;2812:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14043:6:::1;14017:15;:23;14033:6;14017:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13929:128:::0;;:::o;6451:24::-;;;;;;;;;;;;;:::o;3394:107::-;3450:4;3474:14;:19;3489:3;3474:19;;;;;;;;;;;;;;;;;;;;;;;;;3467:26;;3394:107;;;:::o;576:194::-;662:7;695:1;690;:6;;698:12;682:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;722:9;738:1;734;:5;;;;:::i;:::-;722:17;;761:1;754:8;;;576:194;;;;;:::o;8879:939::-;8971:4;8991:6;;;;;;;;;;;8988:63;;;9007:41;9022:6;9030:9;9041:6;9007:14;:41::i;:::-;9000:48;;;;8988:63;9071:28;9084:6;9092;9071:12;:28::i;:::-;9137:4;;;;;;;;;;;9124:17;;:9;:17;;;;:38;;;;;9158:4;;;;;;;;;;;9145:17;;:9;:17;;;;9124:38;9120:198;;;9187:15;:26;9203:9;9187:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9250:14;;9240:6;9217:9;:20;9227:9;9217:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9187:77;9179:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9120:198;9341:16;:14;:16::i;:::-;9338:35;;;9360:10;:8;:10::i;:::-;9338:35;9391:10;:8;:10::i;:::-;9390:11;:32;;;;;9418:4;;;;;;;;;;;9405:17;;:9;:17;;;9390:32;9387:81;;;9453:1;9433:9;:17;9443:6;9433:17;;;;;;;;;;;;;;;;:21;9425:30;;;;;;9457:8;:6;:8::i;:::-;9387:81;9502:53;9524:6;9502:53;;;;;;;;;;;;;;;;;:9;:17;9512:6;9502:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9482:9;:17;9492:6;9482:17;;;;;;;;;;;;;;;:73;;;;9570:22;9595:21;9609:6;9595:13;:21::i;:::-;:56;;9645:6;9595:56;;;9619:23;9627:6;9635;9619:7;:23::i;:::-;9595:56;9570:81;;9685:40;9710:14;9685:9;:20;9695:9;9685:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9662:9;:20;9672:9;9662:20;;;;;;;;;;;;;;;:63;;;;9762:9;9745:43;;9754:6;9745:43;;;9773:14;9745:43;;;;;;:::i;:::-;;;;;;;;9806:4;9799:11;;;8879:939;;;;;;:::o;434:136::-;492:7;519:43;523:1;526;519:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;512:50;;434:136;;;;:::o;245:183::-;303:7;323:9;339:1;335;:5;;;;:::i;:::-;323:17;;364:1;359;:6;;351:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;419:1;412:8;;;245:183;;;;:::o;776:254::-;834:7;863:1;858;:6;854:47;;;888:1;881:8;;;;854:47;915:9;931:1;927;:5;;;;:::i;:::-;915:17;;960:1;955;951;:5;;;;:::i;:::-;:10;943:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1021:1;1014:8;;;776:254;;;;;:::o;1036:132::-;1094:7;1121:39;1125:1;1128;1121:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1114:46;;1036:132;;;;:::o;9830:330::-;9923:4;9960:53;9982:6;9960:53;;;;;;;;;;;;;;;;;:9;:17;9970:6;9960:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9940:9;:17;9950:6;9940:17;;;;;;;;;;;;;;;:73;;;;10047:32;10072:6;10047:9;:20;10057:9;10047:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10024:9;:20;10034:9;10024:20;;;;;;;;;;;;;;;:55;;;;10112:9;10095:35;;10104:6;10095:35;;;10123:6;10095:35;;;;;;:::i;:::-;;;;;;;;10148:4;10141:11;;9830:330;;;;;:::o;10170:166::-;10267:12;;10257:6;:22;;:49;;;;10283:15;:23;10299:6;10283:23;;;;;;;;;;;;;;;;;;;;;;;;;10257:49;10249:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10170:166;;:::o;10823:197::-;10872:4;10910;;;;;;;;;;;10896:18;;:10;:18;;;;:38;;;;;10928:6;;;;;;;;;;;10927:7;10896:38;:62;;;;;10947:11;;;;;;;;;;;10896:62;:116;;;;;10999:13;;10971:9;:24;10989:4;10971:24;;;;;;;;;;;;;;;;:41;;10896:116;10889:123;;10823:197;:::o;11030:1468::-;6706:4;6697:6;;:13;;;;;;;;;;;;;;;;;;11079:28:::1;11110:24;11128:4;11110:9;:24::i;:::-;11079:55;;11145:23;11171:59;11228:1;11171:52;11214:8;;11171:38;11196:12;;11171:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11145:85;;11241:20;11264:41;11289:15;11264:20;:24;;:41;;;;:::i;:::-;11241:64;;11320:21;11358:1;11344:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11320:40;;11389:4;11371;11376:1;11371:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11415:4;;;;;;;;;;;11405;11410:1;11405:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11434:21;11458;11434:45;;11494:6;;;;;;;;;;;:57;;;11566:12;11593:1;11609:4;11636;11656:15;11494:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11693:17;11713:40;11739:13;11713:21;:25;;:40;;;;:::i;:::-;11693:60;;11764:19;11786:33;11799:19;11816:1;11799:12;;:16;;:19;;;;:::i;:::-;11786:8;;:12;;:33;;;;:::i;:::-;11764:55;;11830:26;11859:51;11908:1;11859:44;11891:11;11859:27;11873:12;;11859:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;11830:80;;11921:19;11943:37;11968:11;11943:20;11957:5;;11943:9;:13;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;11921:59;;11991:21;12048:11;12027:18;12015:9;:30;;;;:::i;:::-;:44;;;;:::i;:::-;11991:68;;12075:16;12128:12;;;;;;;;;;;12120:26;;12154:13;12174:5;12120:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12074:110;;;12203:11;12195:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;12261:14;12312:13;;;;;;;;;;;12304:27;;12339:11;12357:5;12304:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12260:107;;;12386:9;12378:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12441:49;12454:15;12471:18;12441:12;:49::i;:::-;11068:1430;;;;;;;;;;;;6724:5:::0;6715:6;;:14;;;;;;;;;;;;;;;;;;11030:1468::o;13299:90::-;13342:4;13380:1;13366:10;;:15;;13359:22;;13299:90;:::o;13399:71::-;13450:12;13437:10;:25;;;;13399:71::o;10348:114::-;10410:4;10435:11;:19;10447:6;10435:19;;;;;;;;;;;;;;;;;;;;;;;;;10434:20;10427:27;;10348:114;;;:::o;10476:337::-;10543:7;10563:17;10583:40;10608:14;;10583:20;10594:8;;10583:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;10563:60;;10665:39;10694:9;10665;:24;10683:4;10665:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10638:9;:24;10656:4;10638:24;;;;;;;;;;;;;;;:66;;;;10745:4;10720:42;;10729:6;10720:42;;;10752:9;10720:42;;;;;;:::i;:::-;;;;;;;;10784:21;10795:9;10784:6;:10;;:21;;;;:::i;:::-;10777:28;;;10476:337;;;;:::o;1174:347::-;1260:7;1359:1;1355;:5;1362:12;1347:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1386:9;1402:1;1398;:5;;;;:::i;:::-;1386:17;;1512:1;1505:8;;;1174:347;;;;;:::o;12508:408::-;12602:1;12588:11;:15;12585:324;;;12619:6;;;;;;;;;;;:22;;;12649:9;12686:4;12710:11;12740:1;12760;12788:4;12812:15;12619:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12862:35;12874:9;12885:11;12862:35;;;;;;;:::i;:::-;;;;;;;;12585:324;12508:408;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;313:133;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;452:139;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;597:143;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:119;;;860:79;;:::i;:::-;822:119;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;746:329;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:119;;;1203:79;;:::i;:::-;1165:119;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1081:345;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:119;;;1563:79;;:::i;:::-;1525:119;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;1432:474;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:119;;;2060:79;;:::i;:::-;2022:119;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;1912:619;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:119;;;2665:79;;:::i;:::-;2627:119;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;2537:468;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:119;;;3142:79;;:::i;:::-;3104:119;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;3011:474;;;;;:::o;3491:468::-;3556:6;3564;3613:2;3601:9;3592:7;3588:23;3584:32;3581:119;;;3619:79;;:::i;:::-;3581:119;3739:1;3764:50;3806:7;3797:6;3786:9;3782:22;3764:50;:::i;:::-;3754:60;;3710:114;3863:2;3889:53;3934:7;3925:6;3914:9;3910:22;3889:53;:::i;:::-;3879:63;;3834:118;3491:468;;;;;:::o;3965:329::-;4024:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:119;;;4079:79;;:::i;:::-;4041:119;4199:1;4224:53;4269:7;4260:6;4249:9;4245:22;4224:53;:::i;:::-;4214:63;;4170:117;3965:329;;;;:::o;4300:351::-;4370:6;4419:2;4407:9;4398:7;4394:23;4390:32;4387:119;;;4425:79;;:::i;:::-;4387:119;4545:1;4570:64;4626:7;4617:6;4606:9;4602:22;4570:64;:::i;:::-;4560:74;;4516:128;4300:351;;;;:::o;4657:474::-;4725:6;4733;4782:2;4770:9;4761:7;4757:23;4753:32;4750:119;;;4788:79;;:::i;:::-;4750:119;4908:1;4933:53;4978:7;4969:6;4958:9;4954:22;4933:53;:::i;:::-;4923:63;;4879:117;5035:2;5061:53;5106:7;5097:6;5086:9;5082:22;5061:53;:::i;:::-;5051:63;;5006:118;4657:474;;;;;:::o;5137:663::-;5225:6;5233;5241;5290:2;5278:9;5269:7;5265:23;5261:32;5258:119;;;5296:79;;:::i;:::-;5258:119;5416:1;5441:64;5497:7;5488:6;5477:9;5473:22;5441:64;:::i;:::-;5431:74;;5387:128;5554:2;5580:64;5636:7;5627:6;5616:9;5612:22;5580:64;:::i;:::-;5570:74;;5525:129;5693:2;5719:64;5775:7;5766:6;5755:9;5751:22;5719:64;:::i;:::-;5709:74;;5664:129;5137:663;;;;;:::o;5806:765::-;5892:6;5900;5908;5916;5965:3;5953:9;5944:7;5940:23;5936:33;5933:120;;;5972:79;;:::i;:::-;5933:120;6092:1;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6063:117;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;6347:2;6373:53;6418:7;6409:6;6398:9;6394:22;6373:53;:::i;:::-;6363:63;;6318:118;6475:2;6501:53;6546:7;6537:6;6526:9;6522:22;6501:53;:::i;:::-;6491:63;;6446:118;5806:765;;;;;;;:::o;6577:179::-;6646:10;6667:46;6709:3;6701:6;6667:46;:::i;:::-;6745:4;6740:3;6736:14;6722:28;;6577:179;;;;:::o;6762:147::-;6857:45;6896:5;6857:45;:::i;:::-;6852:3;6845:58;6762:147;;:::o;6915:108::-;6992:24;7010:5;6992:24;:::i;:::-;6987:3;6980:37;6915:108;;:::o;7029:118::-;7116:24;7134:5;7116:24;:::i;:::-;7111:3;7104:37;7029:118;;:::o;7183:732::-;7302:3;7331:54;7379:5;7331:54;:::i;:::-;7401:86;7480:6;7475:3;7401:86;:::i;:::-;7394:93;;7511:56;7561:5;7511:56;:::i;:::-;7590:7;7621:1;7606:284;7631:6;7628:1;7625:13;7606:284;;;7707:6;7701:13;7734:63;7793:3;7778:13;7734:63;:::i;:::-;7727:70;;7820:60;7873:6;7820:60;:::i;:::-;7810:70;;7666:224;7653:1;7650;7646:9;7641:14;;7606:284;;;7610:14;7906:3;7899:10;;7307:608;;;7183:732;;;;:::o;7921:109::-;8002:21;8017:5;8002:21;:::i;:::-;7997:3;7990:34;7921:109;;:::o;8036:167::-;8141:55;8190:5;8141:55;:::i;:::-;8136:3;8129:68;8036:167;;:::o;8209:147::-;8304:45;8343:5;8304:45;:::i;:::-;8299:3;8292:58;8209:147;;:::o;8362:364::-;8450:3;8478:39;8511:5;8478:39;:::i;:::-;8533:71;8597:6;8592:3;8533:71;:::i;:::-;8526:78;;8613:52;8658:6;8653:3;8646:4;8639:5;8635:16;8613:52;:::i;:::-;8690:29;8712:6;8690:29;:::i;:::-;8685:3;8681:39;8674:46;;8454:272;8362:364;;;;:::o;8732:366::-;8874:3;8895:67;8959:2;8954:3;8895:67;:::i;:::-;8888:74;;8971:93;9060:3;8971:93;:::i;:::-;9089:2;9084:3;9080:12;9073:19;;8732:366;;;:::o;9104:::-;9246:3;9267:67;9331:2;9326:3;9267:67;:::i;:::-;9260:74;;9343:93;9432:3;9343:93;:::i;:::-;9461:2;9456:3;9452:12;9445:19;;9104:366;;;:::o;9476:::-;9618:3;9639:67;9703:2;9698:3;9639:67;:::i;:::-;9632:74;;9715:93;9804:3;9715:93;:::i;:::-;9833:2;9828:3;9824:12;9817:19;;9476:366;;;:::o;9848:::-;9990:3;10011:67;10075:2;10070:3;10011:67;:::i;:::-;10004:74;;10087:93;10176:3;10087:93;:::i;:::-;10205:2;10200:3;10196:12;10189:19;;9848:366;;;:::o;10220:::-;10362:3;10383:67;10447:2;10442:3;10383:67;:::i;:::-;10376:74;;10459:93;10548:3;10459:93;:::i;:::-;10577:2;10572:3;10568:12;10561:19;;10220:366;;;:::o;10592:::-;10734:3;10755:67;10819:2;10814:3;10755:67;:::i;:::-;10748:74;;10831:93;10920:3;10831:93;:::i;:::-;10949:2;10944:3;10940:12;10933:19;;10592:366;;;:::o;10964:365::-;11106:3;11127:66;11191:1;11186:3;11127:66;:::i;:::-;11120:73;;11202:93;11291:3;11202:93;:::i;:::-;11320:2;11315:3;11311:12;11304:19;;10964:365;;;:::o;11335:398::-;11494:3;11515:83;11596:1;11591:3;11515:83;:::i;:::-;11508:90;;11607:93;11696:3;11607:93;:::i;:::-;11725:1;11720:3;11716:11;11709:18;;11335:398;;;:::o;11739:366::-;11881:3;11902:67;11966:2;11961:3;11902:67;:::i;:::-;11895:74;;11978:93;12067:3;11978:93;:::i;:::-;12096:2;12091:3;12087:12;12080:19;;11739:366;;;:::o;12111:118::-;12198:24;12216:5;12198:24;:::i;:::-;12193:3;12186:37;12111:118;;:::o;12235:112::-;12318:22;12334:5;12318:22;:::i;:::-;12313:3;12306:35;12235:112;;:::o;12353:379::-;12537:3;12559:147;12702:3;12559:147;:::i;:::-;12552:154;;12723:3;12716:10;;12353:379;;;:::o;12738:222::-;12831:4;12869:2;12858:9;12854:18;12846:26;;12882:71;12950:1;12939:9;12935:17;12926:6;12882:71;:::i;:::-;12738:222;;;;:::o;12966:238::-;13067:4;13105:2;13094:9;13090:18;13082:26;;13118:79;13194:1;13183:9;13179:17;13170:6;13118:79;:::i;:::-;12966:238;;;;:::o;13210:807::-;13459:4;13497:3;13486:9;13482:19;13474:27;;13511:71;13579:1;13568:9;13564:17;13555:6;13511:71;:::i;:::-;13592:72;13660:2;13649:9;13645:18;13636:6;13592:72;:::i;:::-;13674:80;13750:2;13739:9;13735:18;13726:6;13674:80;:::i;:::-;13764;13840:2;13829:9;13825:18;13816:6;13764:80;:::i;:::-;13854:73;13922:3;13911:9;13907:19;13898:6;13854:73;:::i;:::-;13937;14005:3;13994:9;13990:19;13981:6;13937:73;:::i;:::-;13210:807;;;;;;;;;:::o;14023:210::-;14110:4;14148:2;14137:9;14133:18;14125:26;;14161:65;14223:1;14212:9;14208:17;14199:6;14161:65;:::i;:::-;14023:210;;;;:::o;14239:258::-;14350:4;14388:2;14377:9;14373:18;14365:26;;14401:89;14487:1;14476:9;14472:17;14463:6;14401:89;:::i;:::-;14239:258;;;;:::o;14503:313::-;14616:4;14654:2;14643:9;14639:18;14631:26;;14703:9;14697:4;14693:20;14689:1;14678:9;14674:17;14667:47;14731:78;14804:4;14795:6;14731:78;:::i;:::-;14723:86;;14503:313;;;;:::o;14822:419::-;14988:4;15026:2;15015:9;15011:18;15003:26;;15075:9;15069:4;15065:20;15061:1;15050:9;15046:17;15039:47;15103:131;15229:4;15103:131;:::i;:::-;15095:139;;14822:419;;;:::o;15247:::-;15413:4;15451:2;15440:9;15436:18;15428:26;;15500:9;15494:4;15490:20;15486:1;15475:9;15471:17;15464:47;15528:131;15654:4;15528:131;:::i;:::-;15520:139;;15247:419;;;:::o;15672:::-;15838:4;15876:2;15865:9;15861:18;15853:26;;15925:9;15919:4;15915:20;15911:1;15900:9;15896:17;15889:47;15953:131;16079:4;15953:131;:::i;:::-;15945:139;;15672:419;;;:::o;16097:::-;16263:4;16301:2;16290:9;16286:18;16278:26;;16350:9;16344:4;16340:20;16336:1;16325:9;16321:17;16314:47;16378:131;16504:4;16378:131;:::i;:::-;16370:139;;16097:419;;;:::o;16522:::-;16688:4;16726:2;16715:9;16711:18;16703:26;;16775:9;16769:4;16765:20;16761:1;16750:9;16746:17;16739:47;16803:131;16929:4;16803:131;:::i;:::-;16795:139;;16522:419;;;:::o;16947:::-;17113:4;17151:2;17140:9;17136:18;17128:26;;17200:9;17194:4;17190:20;17186:1;17175:9;17171:17;17164:47;17228:131;17354:4;17228:131;:::i;:::-;17220:139;;16947:419;;;:::o;17372:::-;17538:4;17576:2;17565:9;17561:18;17553:26;;17625:9;17619:4;17615:20;17611:1;17600:9;17596:17;17589:47;17653:131;17779:4;17653:131;:::i;:::-;17645:139;;17372:419;;;:::o;17797:::-;17963:4;18001:2;17990:9;17986:18;17978:26;;18050:9;18044:4;18040:20;18036:1;18025:9;18021:17;18014:47;18078:131;18204:4;18078:131;:::i;:::-;18070:139;;17797:419;;;:::o;18222:222::-;18315:4;18353:2;18342:9;18338:18;18330:26;;18366:71;18434:1;18423:9;18419:17;18410:6;18366:71;:::i;:::-;18222:222;;;;:::o;18450:831::-;18713:4;18751:3;18740:9;18736:19;18728:27;;18765:71;18833:1;18822:9;18818:17;18809:6;18765:71;:::i;:::-;18846:80;18922:2;18911:9;18907:18;18898:6;18846:80;:::i;:::-;18973:9;18967:4;18963:20;18958:2;18947:9;18943:18;18936:48;19001:108;19104:4;19095:6;19001:108;:::i;:::-;18993:116;;19119:72;19187:2;19176:9;19172:18;19163:6;19119:72;:::i;:::-;19201:73;19269:3;19258:9;19254:19;19245:6;19201:73;:::i;:::-;18450:831;;;;;;;;:::o;19287:332::-;19408:4;19446:2;19435:9;19431:18;19423:26;;19459:71;19527:1;19516:9;19512:17;19503:6;19459:71;:::i;:::-;19540:72;19608:2;19597:9;19593:18;19584:6;19540:72;:::i;:::-;19287:332;;;;;:::o;19625:214::-;19714:4;19752:2;19741:9;19737:18;19729:26;;19765:67;19829:1;19818:9;19814:17;19805:6;19765:67;:::i;:::-;19625:214;;;;:::o;19926:132::-;19993:4;20016:3;20008:11;;20046:4;20041:3;20037:14;20029:22;;19926:132;;;:::o;20064:114::-;20131:6;20165:5;20159:12;20149:22;;20064:114;;;:::o;20184:99::-;20236:6;20270:5;20264:12;20254:22;;20184:99;;;:::o;20289:113::-;20359:4;20391;20386:3;20382:14;20374:22;;20289:113;;;:::o;20408:184::-;20507:11;20541:6;20536:3;20529:19;20581:4;20576:3;20572:14;20557:29;;20408:184;;;;:::o;20598:147::-;20699:11;20736:3;20721:18;;20598:147;;;;:::o;20751:169::-;20835:11;20869:6;20864:3;20857:19;20909:4;20904:3;20900:14;20885:29;;20751:169;;;;:::o;20926:305::-;20966:3;20985:20;21003:1;20985:20;:::i;:::-;20980:25;;21019:20;21037:1;21019:20;:::i;:::-;21014:25;;21173:1;21105:66;21101:74;21098:1;21095:81;21092:107;;;21179:18;;:::i;:::-;21092:107;21223:1;21220;21216:9;21209:16;;20926:305;;;;:::o;21237:185::-;21277:1;21294:20;21312:1;21294:20;:::i;:::-;21289:25;;21328:20;21346:1;21328:20;:::i;:::-;21323:25;;21367:1;21357:35;;21372:18;;:::i;:::-;21357:35;21414:1;21411;21407:9;21402:14;;21237:185;;;;:::o;21428:348::-;21468:7;21491:20;21509:1;21491:20;:::i;:::-;21486:25;;21525:20;21543:1;21525:20;:::i;:::-;21520:25;;21713:1;21645:66;21641:74;21638:1;21635:81;21630:1;21623:9;21616:17;21612:105;21609:131;;;21720:18;;:::i;:::-;21609:131;21768:1;21765;21761:9;21750:20;;21428:348;;;;:::o;21782:191::-;21822:4;21842:20;21860:1;21842:20;:::i;:::-;21837:25;;21876:20;21894:1;21876:20;:::i;:::-;21871:25;;21915:1;21912;21909:8;21906:34;;;21920:18;;:::i;:::-;21906:34;21965:1;21962;21958:9;21950:17;;21782:191;;;;:::o;21979:96::-;22016:7;22045:24;22063:5;22045:24;:::i;:::-;22034:35;;21979:96;;;:::o;22081:104::-;22126:7;22155:24;22173:5;22155:24;:::i;:::-;22144:35;;22081:104;;;:::o;22191:90::-;22225:7;22268:5;22261:13;22254:21;22243:32;;22191:90;;;:::o;22287:126::-;22324:7;22364:42;22357:5;22353:54;22342:65;;22287:126;;;:::o;22419:77::-;22456:7;22485:5;22474:16;;22419:77;;;:::o;22502:86::-;22537:7;22577:4;22570:5;22566:16;22555:27;;22502:86;;;:::o;22594:134::-;22652:9;22685:37;22716:5;22685:37;:::i;:::-;22672:50;;22594:134;;;:::o;22734:144::-;22802:9;22835:37;22866:5;22835:37;:::i;:::-;22822:50;;22734:144;;;:::o;22884:121::-;22942:9;22975:24;22993:5;22975:24;:::i;:::-;22962:37;;22884:121;;;:::o;23011:126::-;23061:9;23094:37;23125:5;23094:37;:::i;:::-;23081:50;;23011:126;;;:::o;23143:113::-;23193:9;23226:24;23244:5;23226:24;:::i;:::-;23213:37;;23143:113;;;:::o;23262:307::-;23330:1;23340:113;23354:6;23351:1;23348:13;23340:113;;;23439:1;23434:3;23430:11;23424:18;23420:1;23415:3;23411:11;23404:39;23376:2;23373:1;23369:10;23364:15;;23340:113;;;23471:6;23468:1;23465:13;23462:101;;;23551:1;23542:6;23537:3;23533:16;23526:27;23462:101;23311:258;23262:307;;;:::o;23575:180::-;23623:77;23620:1;23613:88;23720:4;23717:1;23710:15;23744:4;23741:1;23734:15;23761:180;23809:77;23806:1;23799:88;23906:4;23903:1;23896:15;23930:4;23927:1;23920:15;23947:180;23995:77;23992:1;23985:88;24092:4;24089:1;24082:15;24116:4;24113:1;24106:15;24133:180;24181:77;24178:1;24171:88;24278:4;24275:1;24268:15;24302:4;24299:1;24292:15;24442:117;24551:1;24548;24541:12;24565:102;24606:6;24657:2;24653:7;24648:2;24641:5;24637:14;24633:28;24623:38;;24565:102;;;:::o;24673:224::-;24813:34;24809:1;24801:6;24797:14;24790:58;24882:7;24877:2;24869:6;24865:15;24858:32;24673:224;:::o;24903:167::-;25043:19;25039:1;25031:6;25027:14;25020:43;24903:167;:::o;25076:222::-;25216:34;25212:1;25204:6;25200:14;25193:58;25285:5;25280:2;25272:6;25268:15;25261:30;25076:222;:::o;25304:177::-;25444:29;25440:1;25432:6;25428:14;25421:53;25304:177;:::o;25487:180::-;25627:32;25623:1;25615:6;25611:14;25604:56;25487:180;:::o;25673:220::-;25813:34;25809:1;25801:6;25797:14;25790:58;25882:3;25877:2;25869:6;25865:15;25858:28;25673:220;:::o;25899:156::-;26039:8;26035:1;26027:6;26023:14;26016:32;25899:156;:::o;26061:114::-;;:::o;26181:161::-;26321:13;26317:1;26309:6;26305:14;26298:37;26181:161;:::o;26348:122::-;26421:24;26439:5;26421:24;:::i;:::-;26414:5;26411:35;26401:63;;26460:1;26457;26450:12;26401:63;26348:122;:::o;26476:138::-;26557:32;26583:5;26557:32;:::i;:::-;26550:5;26547:43;26537:71;;26604:1;26601;26594:12;26537:71;26476:138;:::o;26620:116::-;26690:21;26705:5;26690:21;:::i;:::-;26683:5;26680:32;26670:60;;26726:1;26723;26716:12;26670:60;26620:116;:::o;26742:122::-;26815:24;26833:5;26815:24;:::i;:::-;26808:5;26805:35;26795:63;;26854:1;26851;26844:12;26795:63;26742:122;:::o

Swarm Source

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