CRO Price: $0.09 (-0.11%)

Token

Trollcoin (Troll)

Overview

Max Total Supply

1,000,000,000 Troll

Holders

14,356

Market

Price

$0.00 @ 0.001733 CRO (-3.70%)

Onchain Market Cap

$162,280.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
1 Troll

Value
$0.00 ( ~0 CRO) [0.0000%]
0xd156f87ea9f25b7820582b460553ee621eddc258
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Welcome to Trollcoin! Trollcoin was built for the Crofam by the Crofam.

Contract Source Code Verified (Exact Match)

Contract Name:
TROLLCOIN

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-11-01
*/

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

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


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

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

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

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

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

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

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

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

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

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

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

    address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Trollcoin";
    string constant _symbol = "Troll";
    uint8 constant _decimals = 9;

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

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

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

    uint256 liquidityFee = 3;
    uint256 teamFee =0;
    uint256 marketingFee = 4;
    uint256 totalFee = 7;
    uint256 feeDenominator = 100;
    
    address private marketingFeeReceiver = 0x0a8dEe465150ebb2B067084a2189A74ee5031675;
    address private teamFeeReceiver = 0xE77DE37531b8eaf5b15979525fCAb6083D689eD6;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 3; // 0.3%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);
        pair = IDEXFactory(router.factory()).createPair(WCRO, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

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

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

    receive() external payable { }

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

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

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

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

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

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling) { return totalFee.add(1); }
        return totalFee;
    }

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

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

        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBdevelopment = amountBNB.mul(teamFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);


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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).transfer(_contractBalance);
    }
        
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee919062000873565b633b9aca00620000ff9190620009b0565b60055560646001600554620001159190620009b0565b620001219190620007e0565b60065560646001600554620001379190620009b0565b620001439190620007e0565b6007556003600c556000600d556004600e556007600f556064601055730a8dee465150ebb2b067084a2189a74ee5031675601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e77de37531b8eaf5b15979525fcab6083d689ed6601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006101000a81548160ff02191690831515021790555060036103e8600554620002389190620007e0565b620002449190620009b0565b6017553480156200025457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505073145677fc4d9b8f19b5d56d1820c48e0443049a30601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ac57600080fd5b505afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000742565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044592919062000796565b602060405180830381600087803b1580156200046057600080fd5b505af115801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b919062000742565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200071c9190620007c3565b60405180910390a35062000ae6565b6000815190506200073c8162000acc565b92915050565b6000602082840312156200075b576200075a62000aba565b5b60006200076b848285016200072b565b91505092915050565b6200077f8162000a11565b82525050565b620007908162000a45565b82525050565b6000604082019050620007ad600083018562000774565b620007bc602083018462000774565b9392505050565b6000602082019050620007da600083018462000785565b92915050565b6000620007ed8262000a45565b9150620007fa8362000a45565b9250826200080d576200080c62000a8b565b5b828204905092915050565b6000808291508390505b60018511156200086a5780860481111562000842576200084162000a5c565b5b6001851615620008525780820291505b8081029050620008628562000abf565b945062000822565b94509492505050565b6000620008808262000a45565b91506200088d8362000a4f565b9250620008bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c4565b905092915050565b600082620008d65760019050620009a9565b81620008e65760009050620009a9565b8160018114620008ff57600281146200090a5762000940565b6001915050620009a9565b60ff8411156200091f576200091e62000a5c565b5b8360020a91508482111562000939576200093862000a5c565b5b50620009a9565b5060208310610133831016604e8410600b84101617156200097a5782820a90508381111562000974576200097362000a5c565b5b620009a9565b62000989848484600162000818565b92509050818404811115620009a357620009a262000a5c565b5b81810290505b9392505050565b6000620009bd8262000a45565b9150620009ca8362000a45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a065762000a0562000a5c565b5b828202905092915050565b600062000a1e8262000a25565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ad78162000a11565b811462000ae357600080fd5b50565b6139288062000af66000396000f3fe6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b146107f6578063f42938901461081f578063f84ba65d14610836578063f887ea401461085f578063fe9fbb801461088a5761021a565b8063df20fd491461073e578063e66db25e14610767578063f0b37c0414610790578063f1f3bca3146107b95761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b80638f9a55c01461058957806395d89b41146105b4578063a8aa1b31146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f65780637d1db4a514610533578063893d20e81461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b60405161024191906132d3565b60405180910390f35b34801561025657600080fd5b5061025f6108cd565b60405161026c91906131b1565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c6c565b61090a565b6040516102a9919061317b565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612d73565b6109fc565b6040516102e6919061317b565b60405180910390f35b3480156102fb57600080fd5b50610304610a11565b60405161031191906132d3565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612bd9565b610a1b565b60405161034e919061317b565b60405180910390f35b34801561036357600080fd5b5061036c610c1b565b60405161037991906132d3565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b3f565b610c9d565b6040516103b6919061317b565b60405180910390f35b3480156103cb57600080fd5b506103d4610cf6565b6040516103e19190613371565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b3f565b610cff565b60405161041e919061317b565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d19565b610d32565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d19565b610da0565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c2c565b610e0e565b005b3480156104ae57600080fd5b506104b7610eb1565b6040516104c4919061317b565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e06565b610ec4565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b3f565b610f59565b60405161052a91906132d3565b60405180910390f35b34801561053f57600080fd5b50610548610fa2565b60405161055591906132d3565b60405180910390f35b34801561056a57600080fd5b50610573610fa8565b60405161058091906130e4565b60405180910390f35b34801561059557600080fd5b5061059e610fd1565b6040516105ab91906132d3565b60405180910390f35b3480156105c057600080fd5b506105c9610fd7565b6040516105d691906131b1565b60405180910390f35b3480156105eb57600080fd5b506105f4611014565b60405161060191906130e4565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c6c565b61103a565b60405161063e919061317b565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b3f565b61104f565b005b34801561067c57600080fd5b506106856110f1565b60405161069291906132d3565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d19565b6110f7565b6040516106cf91906132d3565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b3f565b611169565b005b34801561070d57600080fd5b5061072860048036038101906107239190612b99565b61131a565b60405161073591906132d3565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612cd9565b6113a1565b005b34801561077357600080fd5b5061078e60048036038101906107899190612b99565b61140e565b005b34801561079c57600080fd5b506107b760048036038101906107b29190612b3f565b6114dc565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612cac565b61157f565b6040516107ed91906132d3565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b6c565b6115e1565b005b34801561082b57600080fd5b506108346116fa565b005b34801561084257600080fd5b5061085d60048036038101906108589190612c2c565b6117b3565b005b34801561086b57600080fd5b50610874611856565b6040516108819190613196565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190612b3f565b61187c565b6040516108be919061317b565b60405180910390f35b60175481565b60606040518060400160405280600981526020017f54726f6c6c636f696e0000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ea91906132d3565b60405180910390a36001905092915050565b600082610a08836110f7565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0757610b86826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c12848484611936565b90509392505050565b6000610c98610c4b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b610c8a610c79600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b600554611dc690919063ffffffff16565b611dc690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d2b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61090a565b9050919050565b610d3b3361187c565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906132b3565b60405180910390fd5b6103e8600554610d8a9190613442565b811015610d9657600080fd5b8060068190555050565b610da933610c9d565b610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90613293565b60405180910390fd5b6103e8600554610df89190613442565b811015610e0457600080fd5b8060078190555050565b610e173361187c565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906132b3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610ecd3361187c565b610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906132b3565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610f4682610f388587611e1090919063ffffffff16565b611e1090919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600581526020017f54726f6c6c000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611047338484611936565b905092915050565b61105833610c9d565b611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613293565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b6000611162611104610c1b565b6111546111456002611137601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b611e6e90919063ffffffff16565b85611e6e90919063ffffffff16565b611ee990919063ffffffff16565b9050919050565b6111723361187c565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906132b3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613213565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b91906130e4565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab9190612d46565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611315573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113aa3361187c565b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906132b3565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6114173361187c565b611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906132b3565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114e533610c9d565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613293565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160155461159191906133ec565b106115b3576115ac6001601054611dc690919063ffffffff16565b90506115dc565b81156115d6576115cf6001600f54611e1090919063ffffffff16565b90506115dc565b600f5490505b919050565b6115ea33610c9d565b611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613293565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116ef91906130ff565b60405180910390a150565b6117033361187c565b611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906132b3565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117af573d6000803e3d6000fd5b5050565b6117bc3361187c565b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f2906132b3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191191906131b1565b60405180910390fd5b506000838561192991906134cd565b9050809150509392505050565b6000601860009054906101000a900460ff161561195f57611958848484611f33565b9050611dbf565b6119698483612106565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a155750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611afe57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611abe575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abb91906133ec565b11155b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af4906131d3565b60405180910390fd5b5b611b066121a3565b15611b1457611b1361227a565b5b611b1c61286b565b158015611b765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bd0576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611bc757600080fd5b611bcf612878565b5b611c59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ca785612881565b611cb15782611cbd565b611cbc8585856128d8565b5b9050611d1181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db191906132d3565b60405180910390a360019150505b9392505050565b6000611e0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d2565b905092915050565b6000808284611e1f91906133ec565b905083811015611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613233565b60405180910390fd5b8091505092915050565b600080831415611e815760009050611ee3565b60008284611e8f9190613473565b9050828482611e9e9190613442565b14611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613273565b60405180910390fd5b809150505b92915050565b6000611f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a73565b905092915050565b6000611fbe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f391906132d3565b60405180910390a3600190509392505050565b600654811115806121605750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61219f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612196906131f3565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122105750601860009054906101000a900460ff16155b80156122285750601660009054906101000a900460ff165b80156122755750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006122a030610f59565b905060006122e060026122d2600f546122c4600c5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b905060006122f78284611dc690919063ffffffff16565b90506000600267ffffffffffffffff81111561231657612315613694565b5b6040519080825280602002602001820160405280156123445781602001602082028036833780820191505090505b509050308160008151811061235c5761235b613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123cd576123cc613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016124709594939291906132ee565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b5050505060006124b78247611dc690919063ffffffff16565b905060006124e56124d46002600c54611ee990919063ffffffff16565b600f54611dc690919063ffffffff16565b90506000612523600261251584612507600c5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b9050600061254e83612540600d5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b905060006125798461256b600e5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125c7906130cf565b600060405180830381858888f193505050503d8060008114612605576040519150601f19603f3d011682016040523d82523d6000602084013e61260a565b606091505b505090508061264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613253565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161269a906130cf565b600060405180830381858888f193505050503d80600081146126d8576040519150601f19603f3d011682016040523d82523d6000602084013e6126dd565b606091505b5050905080612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271890613253565b60405180910390fd5b60008b111561284257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b39695949392919061311a565b6060604051808303818588803b1580156127cc57600080fd5b505af11580156127e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128059190612db3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612839929190613348565b60405180910390a15b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061295a60105461294c61293d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461157f565b86611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506129ae81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a4e91906132d3565b60405180910390a3612a698184611dc690919063ffffffff16565b9150509392505050565b60008083118290612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab191906131b1565b60405180910390fd5b5060008385612ac99190613442565b9050809150509392505050565b600081359050612ae581613896565b92915050565b600081359050612afa816138ad565b92915050565b600081359050612b0f816138c4565b92915050565b600081359050612b24816138db565b92915050565b600081519050612b39816138db565b92915050565b600060208284031215612b5557612b546136c3565b5b6000612b6384828501612ad6565b91505092915050565b600060208284031215612b8257612b816136c3565b5b6000612b9084828501612aeb565b91505092915050565b60008060408385031215612bb057612baf6136c3565b5b6000612bbe85828601612ad6565b9250506020612bcf85828601612ad6565b9150509250929050565b600080600060608486031215612bf257612bf16136c3565b5b6000612c0086828701612ad6565b9350506020612c1186828701612ad6565b9250506040612c2286828701612b15565b9150509250925092565b60008060408385031215612c4357612c426136c3565b5b6000612c5185828601612ad6565b9250506020612c6285828601612b00565b9150509250929050565b60008060408385031215612c8357612c826136c3565b5b6000612c9185828601612ad6565b9250506020612ca285828601612b15565b9150509250929050565b600060208284031215612cc257612cc16136c3565b5b6000612cd084828501612b00565b91505092915050565b60008060408385031215612cf057612cef6136c3565b5b6000612cfe85828601612b00565b9250506020612d0f85828601612b15565b9150509250929050565b600060208284031215612d2f57612d2e6136c3565b5b6000612d3d84828501612b15565b91505092915050565b600060208284031215612d5c57612d5b6136c3565b5b6000612d6a84828501612b2a565b91505092915050565b60008060408385031215612d8a57612d896136c3565b5b6000612d9885828601612b15565b9250506020612da985828601612b15565b9150509250929050565b600080600060608486031215612dcc57612dcb6136c3565b5b6000612dda86828701612b2a565b9350506020612deb86828701612b2a565b9250506040612dfc86828701612b2a565b9150509250925092565b60008060008060808587031215612e2057612e1f6136c3565b5b6000612e2e87828801612b15565b9450506020612e3f87828801612b15565b9350506040612e5087828801612b15565b9250506060612e6187828801612b15565b91505092959194509250565b6000612e798383612e94565b60208301905092915050565b612e8e81613568565b82525050565b612e9d81613501565b82525050565b612eac81613501565b82525050565b6000612ebd8261339c565b612ec781856133bf565b9350612ed28361338c565b8060005b83811015612f03578151612eea8882612e6d565b9750612ef5836133b2565b925050600181019050612ed6565b5085935050505092915050565b612f1981613525565b82525050565b612f288161357a565b82525050565b612f378161359e565b82525050565b6000612f48826133a7565b612f5281856133db565b9350612f628185602086016135d4565b612f6b816136c8565b840191505092915050565b6000612f836025836133db565b9150612f8e826136d9565b604082019050919050565b6000612fa66011836133db565b9150612fb182613728565b602082019050919050565b6000612fc96023836133db565b9150612fd482613751565b604082019050919050565b6000612fec601b836133db565b9150612ff7826137a0565b602082019050919050565b600061300f601e836133db565b915061301a826137c9565b602082019050919050565b60006130326021836133db565b915061303d826137f2565b604082019050919050565b60006130556006836133db565b915061306082613841565b602082019050919050565b60006130786000836133d0565b91506130838261386a565b600082019050919050565b600061309b600b836133db565b91506130a68261386d565b602082019050919050565b6130ba81613551565b82525050565b6130c98161355b565b82525050565b60006130da8261306b565b9150819050919050565b60006020820190506130f96000830184612ea3565b92915050565b60006020820190506131146000830184612e85565b92915050565b600060c08201905061312f6000830189612ea3565b61313c60208301886130b1565b6131496040830187612f2e565b6131566060830186612f2e565b6131636080830185612ea3565b61317060a08301846130b1565b979650505050505050565b60006020820190506131906000830184612f10565b92915050565b60006020820190506131ab6000830184612f1f565b92915050565b600060208201905081810360008301526131cb8184612f3d565b905092915050565b600060208201905081810360008301526131ec81612f76565b9050919050565b6000602082019050818103600083015261320c81612f99565b9050919050565b6000602082019050818103600083015261322c81612fbc565b9050919050565b6000602082019050818103600083015261324c81612fdf565b9050919050565b6000602082019050818103600083015261326c81613002565b9050919050565b6000602082019050818103600083015261328c81613025565b9050919050565b600060208201905081810360008301526132ac81613048565b9050919050565b600060208201905081810360008301526132cc8161308e565b9050919050565b60006020820190506132e860008301846130b1565b92915050565b600060a08201905061330360008301886130b1565b6133106020830187612f2e565b81810360408301526133228186612eb2565b90506133316060830185612ea3565b61333e60808301846130b1565b9695505050505050565b600060408201905061335d60008301856130b1565b61336a60208301846130b1565b9392505050565b600060208201905061338660008301846130c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f782613551565b915061340283613551565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343757613436613607565b5b828201905092915050565b600061344d82613551565b915061345883613551565b92508261346857613467613636565b5b828204905092915050565b600061347e82613551565b915061348983613551565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134c2576134c1613607565b5b828202905092915050565b60006134d882613551565b91506134e383613551565b9250828210156134f6576134f5613607565b5b828203905092915050565b600061350c82613531565b9050919050565b600061351e82613531565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613573826135b0565b9050919050565b60006135858261358c565b9050919050565b600061359782613531565b9050919050565b60006135a982613551565b9050919050565b60006135bb826135c2565b9050919050565b60006135cd82613531565b9050919050565b60005b838110156135f25780820151818401526020810190506135d7565b83811115613601576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61389f81613501565b81146138aa57600080fd5b50565b6138b681613513565b81146138c157600080fd5b50565b6138cd81613525565b81146138d857600080fd5b50565b6138e481613551565b81146138ef57600080fd5b5056fea2646970667358221220ae0f579cc99331af3861f9f5ad3a0e378dcc90b7f7494f8becf97da5a9a1e43064736f6c63430008050033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b146107f6578063f42938901461081f578063f84ba65d14610836578063f887ea401461085f578063fe9fbb801461088a5761021a565b8063df20fd491461073e578063e66db25e14610767578063f0b37c0414610790578063f1f3bca3146107b95761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b80638f9a55c01461058957806395d89b41146105b4578063a8aa1b31146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f65780637d1db4a514610533578063893d20e81461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b60405161024191906132d3565b60405180910390f35b34801561025657600080fd5b5061025f6108cd565b60405161026c91906131b1565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c6c565b61090a565b6040516102a9919061317b565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612d73565b6109fc565b6040516102e6919061317b565b60405180910390f35b3480156102fb57600080fd5b50610304610a11565b60405161031191906132d3565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612bd9565b610a1b565b60405161034e919061317b565b60405180910390f35b34801561036357600080fd5b5061036c610c1b565b60405161037991906132d3565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b3f565b610c9d565b6040516103b6919061317b565b60405180910390f35b3480156103cb57600080fd5b506103d4610cf6565b6040516103e19190613371565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b3f565b610cff565b60405161041e919061317b565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d19565b610d32565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d19565b610da0565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c2c565b610e0e565b005b3480156104ae57600080fd5b506104b7610eb1565b6040516104c4919061317b565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e06565b610ec4565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b3f565b610f59565b60405161052a91906132d3565b60405180910390f35b34801561053f57600080fd5b50610548610fa2565b60405161055591906132d3565b60405180910390f35b34801561056a57600080fd5b50610573610fa8565b60405161058091906130e4565b60405180910390f35b34801561059557600080fd5b5061059e610fd1565b6040516105ab91906132d3565b60405180910390f35b3480156105c057600080fd5b506105c9610fd7565b6040516105d691906131b1565b60405180910390f35b3480156105eb57600080fd5b506105f4611014565b60405161060191906130e4565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c6c565b61103a565b60405161063e919061317b565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b3f565b61104f565b005b34801561067c57600080fd5b506106856110f1565b60405161069291906132d3565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d19565b6110f7565b6040516106cf91906132d3565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b3f565b611169565b005b34801561070d57600080fd5b5061072860048036038101906107239190612b99565b61131a565b60405161073591906132d3565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612cd9565b6113a1565b005b34801561077357600080fd5b5061078e60048036038101906107899190612b99565b61140e565b005b34801561079c57600080fd5b506107b760048036038101906107b29190612b3f565b6114dc565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612cac565b61157f565b6040516107ed91906132d3565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b6c565b6115e1565b005b34801561082b57600080fd5b506108346116fa565b005b34801561084257600080fd5b5061085d60048036038101906108589190612c2c565b6117b3565b005b34801561086b57600080fd5b50610874611856565b6040516108819190613196565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190612b3f565b61187c565b6040516108be919061317b565b60405180910390f35b60175481565b60606040518060400160405280600981526020017f54726f6c6c636f696e0000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ea91906132d3565b60405180910390a36001905092915050565b600082610a08836110f7565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0757610b86826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c12848484611936565b90509392505050565b6000610c98610c4b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b610c8a610c79600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b600554611dc690919063ffffffff16565b611dc690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d2b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61090a565b9050919050565b610d3b3361187c565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906132b3565b60405180910390fd5b6103e8600554610d8a9190613442565b811015610d9657600080fd5b8060068190555050565b610da933610c9d565b610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90613293565b60405180910390fd5b6103e8600554610df89190613442565b811015610e0457600080fd5b8060078190555050565b610e173361187c565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906132b3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610ecd3361187c565b610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906132b3565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610f4682610f388587611e1090919063ffffffff16565b611e1090919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600581526020017f54726f6c6c000000000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611047338484611936565b905092915050565b61105833610c9d565b611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613293565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b6000611162611104610c1b565b6111546111456002611137601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b611e6e90919063ffffffff16565b85611e6e90919063ffffffff16565b611ee990919063ffffffff16565b9050919050565b6111723361187c565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906132b3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613213565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b91906130e4565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab9190612d46565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611315573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113aa3361187c565b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906132b3565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6114173361187c565b611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906132b3565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114e533610c9d565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613293565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160155461159191906133ec565b106115b3576115ac6001601054611dc690919063ffffffff16565b90506115dc565b81156115d6576115cf6001600f54611e1090919063ffffffff16565b90506115dc565b600f5490505b919050565b6115ea33610c9d565b611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613293565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116ef91906130ff565b60405180910390a150565b6117033361187c565b611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906132b3565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117af573d6000803e3d6000fd5b5050565b6117bc3361187c565b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f2906132b3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191191906131b1565b60405180910390fd5b506000838561192991906134cd565b9050809150509392505050565b6000601860009054906101000a900460ff161561195f57611958848484611f33565b9050611dbf565b6119698483612106565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a155750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611afe57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611abe575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abb91906133ec565b11155b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af4906131d3565b60405180910390fd5b5b611b066121a3565b15611b1457611b1361227a565b5b611b1c61286b565b158015611b765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bd0576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611bc757600080fd5b611bcf612878565b5b611c59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ca785612881565b611cb15782611cbd565b611cbc8585856128d8565b5b9050611d1181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db191906132d3565b60405180910390a360019150505b9392505050565b6000611e0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d2565b905092915050565b6000808284611e1f91906133ec565b905083811015611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613233565b60405180910390fd5b8091505092915050565b600080831415611e815760009050611ee3565b60008284611e8f9190613473565b9050828482611e9e9190613442565b14611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613273565b60405180910390fd5b809150505b92915050565b6000611f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a73565b905092915050565b6000611fbe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f391906132d3565b60405180910390a3600190509392505050565b600654811115806121605750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61219f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612196906131f3565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122105750601860009054906101000a900460ff16155b80156122285750601660009054906101000a900460ff165b80156122755750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006122a030610f59565b905060006122e060026122d2600f546122c4600c5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b905060006122f78284611dc690919063ffffffff16565b90506000600267ffffffffffffffff81111561231657612315613694565b5b6040519080825280602002602001820160405280156123445781602001602082028036833780820191505090505b509050308160008151811061235c5761235b613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123cd576123cc613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016124709594939291906132ee565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b5050505060006124b78247611dc690919063ffffffff16565b905060006124e56124d46002600c54611ee990919063ffffffff16565b600f54611dc690919063ffffffff16565b90506000612523600261251584612507600c5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b9050600061254e83612540600d5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b905060006125798461256b600e5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125c7906130cf565b600060405180830381858888f193505050503d8060008114612605576040519150601f19603f3d011682016040523d82523d6000602084013e61260a565b606091505b505090508061264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613253565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161269a906130cf565b600060405180830381858888f193505050503d80600081146126d8576040519150601f19603f3d011682016040523d82523d6000602084013e6126dd565b606091505b5050905080612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271890613253565b60405180910390fd5b60008b111561284257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b39695949392919061311a565b6060604051808303818588803b1580156127cc57600080fd5b505af11580156127e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128059190612db3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612839929190613348565b60405180910390a15b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061295a60105461294c61293d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461157f565b86611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506129ae81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a4e91906132d3565b60405180910390a3612a698184611dc690919063ffffffff16565b9150509392505050565b60008083118290612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab191906131b1565b60405180910390fd5b5060008385612ac99190613442565b9050809150509392505050565b600081359050612ae581613896565b92915050565b600081359050612afa816138ad565b92915050565b600081359050612b0f816138c4565b92915050565b600081359050612b24816138db565b92915050565b600081519050612b39816138db565b92915050565b600060208284031215612b5557612b546136c3565b5b6000612b6384828501612ad6565b91505092915050565b600060208284031215612b8257612b816136c3565b5b6000612b9084828501612aeb565b91505092915050565b60008060408385031215612bb057612baf6136c3565b5b6000612bbe85828601612ad6565b9250506020612bcf85828601612ad6565b9150509250929050565b600080600060608486031215612bf257612bf16136c3565b5b6000612c0086828701612ad6565b9350506020612c1186828701612ad6565b9250506040612c2286828701612b15565b9150509250925092565b60008060408385031215612c4357612c426136c3565b5b6000612c5185828601612ad6565b9250506020612c6285828601612b00565b9150509250929050565b60008060408385031215612c8357612c826136c3565b5b6000612c9185828601612ad6565b9250506020612ca285828601612b15565b9150509250929050565b600060208284031215612cc257612cc16136c3565b5b6000612cd084828501612b00565b91505092915050565b60008060408385031215612cf057612cef6136c3565b5b6000612cfe85828601612b00565b9250506020612d0f85828601612b15565b9150509250929050565b600060208284031215612d2f57612d2e6136c3565b5b6000612d3d84828501612b15565b91505092915050565b600060208284031215612d5c57612d5b6136c3565b5b6000612d6a84828501612b2a565b91505092915050565b60008060408385031215612d8a57612d896136c3565b5b6000612d9885828601612b15565b9250506020612da985828601612b15565b9150509250929050565b600080600060608486031215612dcc57612dcb6136c3565b5b6000612dda86828701612b2a565b9350506020612deb86828701612b2a565b9250506040612dfc86828701612b2a565b9150509250925092565b60008060008060808587031215612e2057612e1f6136c3565b5b6000612e2e87828801612b15565b9450506020612e3f87828801612b15565b9350506040612e5087828801612b15565b9250506060612e6187828801612b15565b91505092959194509250565b6000612e798383612e94565b60208301905092915050565b612e8e81613568565b82525050565b612e9d81613501565b82525050565b612eac81613501565b82525050565b6000612ebd8261339c565b612ec781856133bf565b9350612ed28361338c565b8060005b83811015612f03578151612eea8882612e6d565b9750612ef5836133b2565b925050600181019050612ed6565b5085935050505092915050565b612f1981613525565b82525050565b612f288161357a565b82525050565b612f378161359e565b82525050565b6000612f48826133a7565b612f5281856133db565b9350612f628185602086016135d4565b612f6b816136c8565b840191505092915050565b6000612f836025836133db565b9150612f8e826136d9565b604082019050919050565b6000612fa66011836133db565b9150612fb182613728565b602082019050919050565b6000612fc96023836133db565b9150612fd482613751565b604082019050919050565b6000612fec601b836133db565b9150612ff7826137a0565b602082019050919050565b600061300f601e836133db565b915061301a826137c9565b602082019050919050565b60006130326021836133db565b915061303d826137f2565b604082019050919050565b60006130556006836133db565b915061306082613841565b602082019050919050565b60006130786000836133d0565b91506130838261386a565b600082019050919050565b600061309b600b836133db565b91506130a68261386d565b602082019050919050565b6130ba81613551565b82525050565b6130c98161355b565b82525050565b60006130da8261306b565b9150819050919050565b60006020820190506130f96000830184612ea3565b92915050565b60006020820190506131146000830184612e85565b92915050565b600060c08201905061312f6000830189612ea3565b61313c60208301886130b1565b6131496040830187612f2e565b6131566060830186612f2e565b6131636080830185612ea3565b61317060a08301846130b1565b979650505050505050565b60006020820190506131906000830184612f10565b92915050565b60006020820190506131ab6000830184612f1f565b92915050565b600060208201905081810360008301526131cb8184612f3d565b905092915050565b600060208201905081810360008301526131ec81612f76565b9050919050565b6000602082019050818103600083015261320c81612f99565b9050919050565b6000602082019050818103600083015261322c81612fbc565b9050919050565b6000602082019050818103600083015261324c81612fdf565b9050919050565b6000602082019050818103600083015261326c81613002565b9050919050565b6000602082019050818103600083015261328c81613025565b9050919050565b600060208201905081810360008301526132ac81613048565b9050919050565b600060208201905081810360008301526132cc8161308e565b9050919050565b60006020820190506132e860008301846130b1565b92915050565b600060a08201905061330360008301886130b1565b6133106020830187612f2e565b81810360408301526133228186612eb2565b90506133316060830185612ea3565b61333e60808301846130b1565b9695505050505050565b600060408201905061335d60008301856130b1565b61336a60208301846130b1565b9392505050565b600060208201905061338660008301846130c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f782613551565b915061340283613551565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343757613436613607565b5b828201905092915050565b600061344d82613551565b915061345883613551565b92508261346857613467613636565b5b828204905092915050565b600061347e82613551565b915061348983613551565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134c2576134c1613607565b5b828202905092915050565b60006134d882613551565b91506134e383613551565b9250828210156134f6576134f5613607565b5b828203905092915050565b600061350c82613531565b9050919050565b600061351e82613531565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613573826135b0565b9050919050565b60006135858261358c565b9050919050565b600061359782613531565b9050919050565b60006135a982613551565b9050919050565b60006135bb826135c2565b9050919050565b60006135cd82613531565b9050919050565b60005b838110156135f25780820151818401526020810190506135d7565b83811115613601576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61389f81613501565b81146138aa57600080fd5b50565b6138b681613513565b81146138c157600080fd5b50565b6138cd81613525565b81146138d857600080fd5b50565b6138e481613551565b81146138ef57600080fd5b5056fea2646970667358221220ae0f579cc99331af3861f9f5ad3a0e378dcc90b7f7494f8becf97da5a9a1e43064736f6c63430008050033

Deployed Bytecode Sourcemap

5460:10717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6733:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7684:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8106:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15956:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7414:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8624:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15631:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3355:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7508:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8330:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13809:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13961:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14124:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6696:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14388:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7854:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5910:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7770:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5984:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7594:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6634:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8460:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3028:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6662:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15781:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15317:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7965:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14965:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14748:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3198:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10594:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3755:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15129:180;;;;;;;;;;;;;:::i;:::-;;14252:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6603:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3529:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6733:54;;;;:::o;7684:80::-;7732:13;7756:5;;;;;;;;;;;;;;;;;7749:12;;7684:80;:::o;8106:216::-;8181:4;8233:6;8198:11;:23;8210:10;8198:23;;;;;;;;;;;;;;;:32;8222:7;8198:32;;;;;;;;;;;;;;;:41;;;;8276:7;8255:37;;8264:10;8255:37;;;8285:6;8255:37;;;;;;:::i;:::-;;;;;;;;8310:4;8303:11;;8106:216;;;;:::o;15956:150::-;16036:4;16092:6;16060:29;16080:8;16060:19;:29::i;:::-;:38;16053:45;;15956:150;;;;:::o;7414:88::-;7469:7;7487:12;;7480:19;;7414:88;:::o;8624:370::-;8724:4;8779:17;8744:11;:19;8756:6;8744:19;;;;;;;;;;;;;;;:31;8764:10;8744:31;;;;;;;;;;;;;;;;:52;8741:186;;8846:69;8882:6;8846:69;;;;;;;;;;;;;;;;;:11;:19;8858:6;8846:19;;;;;;;;;;;;;;;:31;8866:10;8846:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8812:11;:19;8824:6;8812:19;;;;;;;;;;;;;;;:31;8832:10;8812:31;;;;;;;;;;;;;;;:103;;;;8741:186;8946:40;8960:6;8968:9;8979:6;8946:13;:40::i;:::-;8939:47;;8624:370;;;;;:::o;15631:142::-;15684:7;15711:54;15749:15;15759:4;;;;;;;;;;;15749:9;:15::i;:::-;15711:33;15728:15;15738:4;;;;;;;;;;;15728:9;:15::i;:::-;15711:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15704:61;;15631:142;:::o;3355:103::-;3410:4;3445:5;;;;;;;;;;;3434:16;;:7;:16;;;3427:23;;3355:103;;;:::o;7508:80::-;7560:5;5840:1;7569:16;;7508:80;:::o;8330:122::-;8385:4;8409:35;8417:7;8426:17;8409:7;:35::i;:::-;8402:42;;8330:122;;;:::o;13809:145::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13909:4:::1;13894:12;;:19;;;;:::i;:::-;13884:6;:29;;13876:38;;;::::0;::::1;;13940:6;13925:12;:21;;;;13809:145:::0;:::o;13961:151::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14064:4:::1;14049:12;;:19;;;;:::i;:::-;14039:6;:29;;14031:39;;;::::0;::::1;;14098:6;14081:14;:23;;;;13961:151:::0;:::o;14124:120::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14230:6:::1;14208:11;:19;14220:6;14208:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14124:120:::0;;:::o;6696:30::-;;;;;;;;;;;;;:::o;14388:352::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14540:13:::1;14525:12;:28;;;;14574:8;14564:7;:18;;;;14608:13;14593:12;:28;;;;14643:46;14675:13;14643:27;14661:8;14643:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;14632:8;:57;;;;14717:15;14700:14;:32;;;;14388:352:::0;;;;:::o;7854:105::-;7920:7;7938:9;:18;7948:7;7938:18;;;;;;;;;;;;;;;;7931:25;;7854:105;;;:::o;5910:54::-;;;;:::o;7770:78::-;7822:7;7840:5;;;;;;;;;;;7833:12;;7770:78;:::o;5984:56::-;;;;:::o;7594:84::-;7644:13;7668:7;;;;;;;;;;;;;;;;;7661:14;;7594:84;:::o;6634:19::-;;;;;;;;;;;;;:::o;8460:156::-;8540:4;8564:44;8578:10;8590:9;8601:6;8564:13;:44::i;:::-;8557:51;;8460:156;;;;:::o;3028:94::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3110:4:::1;3088:14:::0;:19:::1;3103:3;3088:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3028:94:::0;:::o;6662:25::-;;;;:::o;15781:167::-;15849:7;15876:64;15917:22;:20;:22::i;:::-;15876:36;15889:22;15909:1;15889:15;15899:4;;;;;;;;;;;15889:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15876:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15869:71;;15781:167;;;:::o;15317:298::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15418:4:::1;15400:23;;:6;:23;;;;15392:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15474:24;15508:6;15501:24;;;15534:4;15501:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15474:66;;15559:20;;;;;;;;;;;15551:38;;:56;15590:16;15551:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15381:234;15317:298:::0;:::o;7965:133::-;8049:7;8067:11;:19;8079:6;8067:19;;;;;;;;;;;;;;;:28;8087:7;8067:28;;;;;;;;;;;;;;;;8060:35;;7965:133;;;;:::o;14965:156::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15071:8:::1;15057:11;;:22;;;;;;;;;;;;;;;;;;15106:7;15090:13;:23;;;;14965:156:::0;;:::o;14748:209::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14883:21:::1;14860:20;;:44;;;;;;;;;;;;;;;;;;14933:16;14915:15;;:34;;;;;;;;;;;;;;;;;;14748:209:::0;;:::o;3198:97::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3282:5:::1;3260:14;:19;3275:3;3260:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3198:97:::0;:::o;10594:225::-;10650:7;10691:12;10686:1;10673:10;;:14;;;;:::i;:::-;:30;10670:67;;10713:21;10732:1;10713:14;;:18;;:21;;;;:::i;:::-;10706:28;;;;10670:67;10750:7;10747:39;;;10768:15;10781:1;10768:8;;:12;;:15;;;;:::i;:::-;10761:22;;;;10747:39;10803:8;;10796:15;;10594:225;;;;:::o;3755:173::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3839:3:::1;3831:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3875:4;3853:14:::0;:19:::1;3868:3;3853:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3895:25;3916:3;3895:25;;;;;;:::i;:::-;;;;;;;;3755:173:::0;:::o;15129:180::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15182:26:::1;15211:21;15182:50;;15251:20;;;;;;;;;;;15243:38;;:58;15282:18;15243:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15171:138;15129:180::o:0;14252:128::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14366:6:::1;14340:15;:23;14356:6;14340:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14252:128:::0;;:::o;6603:24::-;;;;;;;;;;;;;:::o;3529:107::-;3585:4;3609:14;:19;3624:3;3609:19;;;;;;;;;;;;;;;;;;;;;;;;;3602:26;;3529:107;;;:::o;412:192::-;498:7;531:1;526;:6;;534:12;518:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;558:9;574:1;570;:5;;;;:::i;:::-;558:17;;595:1;588:8;;;412:192;;;;;:::o;9002:942::-;9094:4;9114:6;;;;;;;;;;;9111:63;;;9130:41;9145:6;9153:9;9164:6;9130:14;:41::i;:::-;9123:48;;;;9111:63;9194:28;9207:6;9215;9194:12;:28::i;:::-;9260:4;;;;;;;;;;;9247:17;;:9;:17;;;;:38;;;;;9281:4;;;;;;;;;;;9268:17;;:9;:17;;;;9247:38;9243:198;;;9310:15;:26;9326:9;9310:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9373:14;;9363:6;9340:9;:20;9350:9;9340:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9310:77;9302:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9243:198;9464:16;:14;:16::i;:::-;9461:35;;;9483:10;:8;:10::i;:::-;9461:35;9512:10;:8;:10::i;:::-;9511:11;:32;;;;;9539:4;;;;;;;;;;;9526:17;;:9;:17;;;9511:32;9508:81;;;9574:1;9554:9;:17;9564:6;9554:17;;;;;;;;;;;;;;;;:21;9546:30;;;;;;9578:8;:6;:8::i;:::-;9508:81;9621:53;9643:6;9621:53;;;;;;;;;;;;;;;;;:9;:17;9631:6;9621:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9601:9;:17;9611:6;9601:17;;;;;;;;;;;;;;;:73;;;;9687:22;9712:21;9726:6;9712:13;:21::i;:::-;:67;;9773:6;9712:67;;;9736:34;9744:6;9752:9;9763:6;9736:7;:34::i;:::-;9712:67;9687:92;;9813:40;9838:14;9813:9;:20;9823:9;9813:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9790:9;:20;9800:9;9790:20;;;;;;;;;;;;;;;:63;;;;9888:9;9871:43;;9880:6;9871:43;;;9899:14;9871:43;;;;;;:::i;:::-;;;;;;;;9932:4;9925:11;;;9002:942;;;;;;:::o;270:136::-;328:7;355:43;359:1;362;355:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;348:50;;270:136;;;;:::o;83:181::-;141:7;161:9;177:1;173;:5;;;;:::i;:::-;161:17;;202:1;197;:6;;189:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;255:1;248:8;;;83:181;;;;:::o;610:250::-;668:7;697:1;692;:6;688:47;;;722:1;715:8;;;;688:47;747:9;763:1;759;:5;;;;:::i;:::-;747:17;;792:1;787;783;:5;;;;:::i;:::-;:10;775:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;851:1;844:8;;;610:250;;;;;:::o;866:132::-;924:7;951:39;955:1;958;951:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;944:46;;866:132;;;;:::o;9956:330::-;10049:4;10086:53;10108:6;10086:53;;;;;;;;;;;;;;;;;:9;:17;10096:6;10086:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10066:9;:17;10076:6;10066:17;;;;;;;;;;;;;;;:73;;;;10173:32;10198:6;10173:9;:20;10183:9;10173:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10150:9;:20;10160:9;10150:20;;;;;;;;;;;;;;;:55;;;;10238:9;10221:35;;10230:6;10221:35;;;10249:6;10221:35;;;;;;:::i;:::-;;;;;;;;10274:4;10267:11;;9956:330;;;;;:::o;10294:166::-;10391:12;;10381:6;:22;;:49;;;;10407:15;:23;10423:6;10407:23;;;;;;;;;;;;;;;;;;;;;;;;;10381:49;10373:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10294:166;;:::o;11207:197::-;11256:4;11294;;;;;;;;;;;11280:18;;:10;:18;;;;:38;;;;;11312:6;;;;;;;;;;;11311:7;11280:38;:62;;;;;11331:11;;;;;;;;;;;11280:62;:116;;;;;11383:13;;11355:9;:24;11373:4;11355:24;;;;;;;;;;;;;;;;:41;;11280:116;11273:123;;11207:197;:::o;11412:1843::-;6851:4;6842:6;;:13;;;;;;;;;;;;;;;;;;11461:28:::1;11492:24;11510:4;11492:9;:24::i;:::-;11461:55;;11527:23;11553:59;11610:1;11553:52;11596:8;;11553:38;11578:12;;11553:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11527:85;;11623:20;11646:41;11671:15;11646:20;:24;;:41;;;;:::i;:::-;11623:64;;11700:21;11738:1;11724:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11700:40;;11769:4;11751;11756:1;11751:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11795:4;;;;;;;;;;;11785;11790:1;11785:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11812:21;11836;11812:45;;11870:6;;;;;;;;;;;:57;;;11942:12;11969:1;11985:4;12012;12032:15;11870:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12069:17;12089:40;12115:13;12089:21;:25;;:40;;;;:::i;:::-;12069:60;;12140:19;12162:33;12175:19;12192:1;12175:12;;:16;;:19;;;;:::i;:::-;12162:8;;:12;;:33;;;;:::i;:::-;12140:55;;12206:26;12235:51;12284:1;12235:44;12267:11;12235:27;12249:12;;12235:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12206:80;;12297:28;12328:39;12355:11;12328:22;12342:7;;12328:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;12297:70;;12378:26;12407:44;12439:11;12407:27;12421:12;;12407:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12378:73;;12467:21;12525:20;;;;;;;;;;;12517:34;;12559:18;12584:5;12517:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12466:128;;;12613:16;12605:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12676:23;12736:15;;;;;;;;;;;12728:29;;12765:20;12792:5;12728:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12675:127;;;12821:18;12813:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12908:1;12890:15;:19;12887:361;;;12925:6;;;;;;;;;;;:22;;;12955:18;13001:4;13025:15;13059:1;13079::::0;13099:20:::1;;;;;;;;;;;13138:15;12925:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13188:48;13200:18;13220:15;13188:48;;;;;;;:::i;:::-;;;;;;;;12887:361;11450:1805;;;;;;;;;;;;6869:5:::0;6860:6;;:14;;;;;;;;;;;;;;;;;;11412:1843::o;13632:90::-;13675:4;13713:1;13699:10;;:15;;13692:22;;13632:90;:::o;13730:71::-;13781:12;13768:10;:25;;;;13730:71::o;10472:114::-;10534:4;10559:11;:19;10571:6;10559:19;;;;;;;;;;;;;;;;;;;;;;;;;10558:20;10551:27;;10472:114;;;:::o;10827:372::-;10912:7;10932:17;10952:61;10998:14;;10952:41;10963:29;10987:4;;;;;;;;;;;10975:16;;:8;:16;;;10963:11;:29::i;:::-;10952:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;10932:81;;11053:39;11082:9;11053;:24;11071:4;11053:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11026:9;:24;11044:4;11026:24;;;;;;;;;;;;;;;:66;;;;11133:4;11108:42;;11117:6;11108:42;;;11140:9;11108:42;;;;;;:::i;:::-;;;;;;;;11170:21;11181:9;11170:6;:10;;:21;;;;:::i;:::-;11163:28;;;10827:372;;;;;:::o;1004:345::-;1090:7;1189:1;1185;:5;1192:12;1177:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1216:9;1232:1;1228;:5;;;;:::i;:::-;1216:17;;1340:1;1333:8;;;1004:345;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:2;;;860:79;;:::i;:::-;822:2;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;812:263;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:2;;;1203:79;;:::i;:::-;1165:2;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1155:271;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:2;;;1563:79;;:::i;:::-;1525:2;1683:1;1708:53;1753:7;1744:6;1733:9;1729:22;1708:53;:::i;:::-;1698:63;;1654:117;1810:2;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1781:118;1515:391;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:2;;;2060:79;;:::i;:::-;2022:2;2180:1;2205:53;2250:7;2241:6;2230:9;2226:22;2205:53;:::i;:::-;2195:63;;2151:117;2307:2;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2278:118;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;2012:519;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:2;;;2665:79;;:::i;:::-;2627:2;2785:1;2810:53;2855:7;2846:6;2835:9;2831:22;2810:53;:::i;:::-;2800:63;;2756:117;2912:2;2938:50;2980:7;2971:6;2960:9;2956:22;2938:50;:::i;:::-;2928:60;;2883:115;2617:388;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:2;;;3142:79;;:::i;:::-;3104:2;3262:1;3287:53;3332:7;3323:6;3312:9;3308:22;3287:53;:::i;:::-;3277:63;;3233:117;3389:2;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;:::i;:::-;3405:63;;3360:118;3094:391;;;;;:::o;3491:323::-;3547:6;3596:2;3584:9;3575:7;3571:23;3567:32;3564:2;;;3602:79;;:::i;:::-;3564:2;3722:1;3747:50;3789:7;3780:6;3769:9;3765:22;3747:50;:::i;:::-;3737:60;;3693:114;3554:260;;;;:::o;3820:468::-;3885:6;3893;3942:2;3930:9;3921:7;3917:23;3913:32;3910:2;;;3948:79;;:::i;:::-;3910:2;4068:1;4093:50;4135:7;4126:6;4115:9;4111:22;4093:50;:::i;:::-;4083:60;;4039:114;4192:2;4218:53;4263:7;4254:6;4243:9;4239:22;4218:53;:::i;:::-;4208:63;;4163:118;3900:388;;;;;:::o;4294:329::-;4353:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:2;;;4408:79;;:::i;:::-;4370:2;4528:1;4553:53;4598:7;4589:6;4578:9;4574:22;4553:53;:::i;:::-;4543:63;;4499:117;4360:263;;;;:::o;4629:351::-;4699:6;4748:2;4736:9;4727:7;4723:23;4719:32;4716:2;;;4754:79;;:::i;:::-;4716:2;4874:1;4899:64;4955:7;4946:6;4935:9;4931:22;4899:64;:::i;:::-;4889:74;;4845:128;4706:274;;;;:::o;4986:474::-;5054:6;5062;5111:2;5099:9;5090:7;5086:23;5082:32;5079:2;;;5117:79;;:::i;:::-;5079:2;5237:1;5262:53;5307:7;5298:6;5287:9;5283:22;5262:53;:::i;:::-;5252:63;;5208:117;5364:2;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5335:118;5069:391;;;;;:::o;5466:663::-;5554:6;5562;5570;5619:2;5607:9;5598:7;5594:23;5590:32;5587:2;;;5625:79;;:::i;:::-;5587:2;5745:1;5770:64;5826:7;5817:6;5806:9;5802:22;5770:64;:::i;:::-;5760:74;;5716:128;5883:2;5909:64;5965:7;5956:6;5945:9;5941:22;5909:64;:::i;:::-;5899:74;;5854:129;6022:2;6048:64;6104:7;6095:6;6084:9;6080:22;6048:64;:::i;:::-;6038:74;;5993:129;5577:552;;;;;:::o;6135:765::-;6221:6;6229;6237;6245;6294:3;6282:9;6273:7;6269:23;6265:33;6262:2;;;6301:79;;:::i;:::-;6262:2;6421:1;6446:53;6491:7;6482:6;6471:9;6467:22;6446:53;:::i;:::-;6436:63;;6392:117;6548:2;6574:53;6619:7;6610:6;6599:9;6595:22;6574:53;:::i;:::-;6564:63;;6519:118;6676:2;6702:53;6747:7;6738:6;6727:9;6723:22;6702:53;:::i;:::-;6692:63;;6647:118;6804:2;6830:53;6875:7;6866:6;6855:9;6851:22;6830:53;:::i;:::-;6820:63;;6775:118;6252:648;;;;;;;:::o;6906:179::-;6975:10;6996:46;7038:3;7030:6;6996:46;:::i;:::-;7074:4;7069:3;7065:14;7051:28;;6986:99;;;;:::o;7091:147::-;7186:45;7225:5;7186:45;:::i;:::-;7181:3;7174:58;7164:74;;:::o;7244:108::-;7321:24;7339:5;7321:24;:::i;:::-;7316:3;7309:37;7299:53;;:::o;7358:118::-;7445:24;7463:5;7445:24;:::i;:::-;7440:3;7433:37;7423:53;;:::o;7512:732::-;7631:3;7660:54;7708:5;7660:54;:::i;:::-;7730:86;7809:6;7804:3;7730:86;:::i;:::-;7723:93;;7840:56;7890:5;7840:56;:::i;:::-;7919:7;7950:1;7935:284;7960:6;7957:1;7954:13;7935:284;;;8036:6;8030:13;8063:63;8122:3;8107:13;8063:63;:::i;:::-;8056:70;;8149:60;8202:6;8149:60;:::i;:::-;8139:70;;7995:224;7982:1;7979;7975:9;7970:14;;7935:284;;;7939:14;8235:3;8228:10;;7636:608;;;;;;;:::o;8250:109::-;8331:21;8346:5;8331:21;:::i;:::-;8326:3;8319:34;8309:50;;:::o;8365:167::-;8470:55;8519:5;8470:55;:::i;:::-;8465:3;8458:68;8448:84;;:::o;8538:147::-;8633:45;8672:5;8633:45;:::i;:::-;8628:3;8621:58;8611:74;;:::o;8691:364::-;8779:3;8807:39;8840:5;8807:39;:::i;:::-;8862:71;8926:6;8921:3;8862:71;:::i;:::-;8855:78;;8942:52;8987:6;8982:3;8975:4;8968:5;8964:16;8942:52;:::i;:::-;9019:29;9041:6;9019:29;:::i;:::-;9014:3;9010:39;9003:46;;8783:272;;;;;:::o;9061:366::-;9203:3;9224:67;9288:2;9283:3;9224:67;:::i;:::-;9217:74;;9300:93;9389:3;9300:93;:::i;:::-;9418:2;9413:3;9409:12;9402:19;;9207:220;;;:::o;9433:366::-;9575:3;9596:67;9660:2;9655:3;9596:67;:::i;:::-;9589:74;;9672:93;9761:3;9672:93;:::i;:::-;9790:2;9785:3;9781:12;9774:19;;9579:220;;;:::o;9805:366::-;9947:3;9968:67;10032:2;10027:3;9968:67;:::i;:::-;9961:74;;10044:93;10133:3;10044:93;:::i;:::-;10162:2;10157:3;10153:12;10146:19;;9951:220;;;:::o;10177:366::-;10319:3;10340:67;10404:2;10399:3;10340:67;:::i;:::-;10333:74;;10416:93;10505:3;10416:93;:::i;:::-;10534:2;10529:3;10525:12;10518:19;;10323:220;;;:::o;10549:366::-;10691:3;10712:67;10776:2;10771:3;10712:67;:::i;:::-;10705:74;;10788:93;10877:3;10788:93;:::i;:::-;10906:2;10901:3;10897:12;10890:19;;10695:220;;;:::o;10921:366::-;11063:3;11084:67;11148:2;11143:3;11084:67;:::i;:::-;11077:74;;11160:93;11249:3;11160:93;:::i;:::-;11278:2;11273:3;11269:12;11262:19;;11067:220;;;:::o;11293:365::-;11435:3;11456:66;11520:1;11515:3;11456:66;:::i;:::-;11449:73;;11531:93;11620:3;11531:93;:::i;:::-;11649:2;11644:3;11640:12;11633:19;;11439:219;;;:::o;11664:398::-;11823:3;11844:83;11925:1;11920:3;11844:83;:::i;:::-;11837:90;;11936:93;12025:3;11936:93;:::i;:::-;12054:1;12049:3;12045:11;12038:18;;11827:235;;;:::o;12068:366::-;12210:3;12231:67;12295:2;12290:3;12231:67;:::i;:::-;12224:74;;12307:93;12396:3;12307:93;:::i;:::-;12425:2;12420:3;12416:12;12409:19;;12214:220;;;:::o;12440:118::-;12527:24;12545:5;12527:24;:::i;:::-;12522:3;12515:37;12505:53;;:::o;12564:112::-;12647:22;12663:5;12647:22;:::i;:::-;12642:3;12635:35;12625:51;;:::o;12682:379::-;12866:3;12888:147;13031:3;12888:147;:::i;:::-;12881:154;;13052:3;13045:10;;12870:191;;;:::o;13067:222::-;13160:4;13198:2;13187:9;13183:18;13175:26;;13211:71;13279:1;13268:9;13264:17;13255:6;13211:71;:::i;:::-;13165:124;;;;:::o;13295:238::-;13396:4;13434:2;13423:9;13419:18;13411:26;;13447:79;13523:1;13512:9;13508:17;13499:6;13447:79;:::i;:::-;13401:132;;;;:::o;13539:807::-;13788:4;13826:3;13815:9;13811:19;13803:27;;13840:71;13908:1;13897:9;13893:17;13884:6;13840:71;:::i;:::-;13921:72;13989:2;13978:9;13974:18;13965:6;13921:72;:::i;:::-;14003:80;14079:2;14068:9;14064:18;14055:6;14003:80;:::i;:::-;14093;14169:2;14158:9;14154:18;14145:6;14093:80;:::i;:::-;14183:73;14251:3;14240:9;14236:19;14227:6;14183:73;:::i;:::-;14266;14334:3;14323:9;14319:19;14310:6;14266:73;:::i;:::-;13793:553;;;;;;;;;:::o;14352:210::-;14439:4;14477:2;14466:9;14462:18;14454:26;;14490:65;14552:1;14541:9;14537:17;14528:6;14490:65;:::i;:::-;14444:118;;;;:::o;14568:258::-;14679:4;14717:2;14706:9;14702:18;14694:26;;14730:89;14816:1;14805:9;14801:17;14792:6;14730:89;:::i;:::-;14684:142;;;;:::o;14832:313::-;14945:4;14983:2;14972:9;14968:18;14960:26;;15032:9;15026:4;15022:20;15018:1;15007:9;15003:17;14996:47;15060:78;15133:4;15124:6;15060:78;:::i;:::-;15052:86;;14950:195;;;;:::o;15151:419::-;15317:4;15355:2;15344:9;15340:18;15332:26;;15404:9;15398:4;15394:20;15390:1;15379:9;15375:17;15368:47;15432:131;15558:4;15432:131;:::i;:::-;15424:139;;15322:248;;;:::o;15576:419::-;15742:4;15780:2;15769:9;15765:18;15757:26;;15829:9;15823:4;15819:20;15815:1;15804:9;15800:17;15793:47;15857:131;15983:4;15857:131;:::i;:::-;15849:139;;15747:248;;;:::o;16001:419::-;16167:4;16205:2;16194:9;16190:18;16182:26;;16254:9;16248:4;16244:20;16240:1;16229:9;16225:17;16218:47;16282:131;16408:4;16282:131;:::i;:::-;16274:139;;16172:248;;;:::o;16426:419::-;16592:4;16630:2;16619:9;16615:18;16607:26;;16679:9;16673:4;16669:20;16665:1;16654:9;16650:17;16643:47;16707:131;16833:4;16707:131;:::i;:::-;16699:139;;16597:248;;;:::o;16851:419::-;17017:4;17055:2;17044:9;17040:18;17032:26;;17104:9;17098:4;17094:20;17090:1;17079:9;17075:17;17068:47;17132:131;17258:4;17132:131;:::i;:::-;17124:139;;17022:248;;;:::o;17276:419::-;17442:4;17480:2;17469:9;17465:18;17457:26;;17529:9;17523:4;17519:20;17515:1;17504:9;17500:17;17493:47;17557:131;17683:4;17557:131;:::i;:::-;17549:139;;17447:248;;;:::o;17701:419::-;17867:4;17905:2;17894:9;17890:18;17882:26;;17954:9;17948:4;17944:20;17940:1;17929:9;17925:17;17918:47;17982:131;18108:4;17982:131;:::i;:::-;17974:139;;17872:248;;;:::o;18126:419::-;18292:4;18330:2;18319:9;18315:18;18307:26;;18379:9;18373:4;18369:20;18365:1;18354:9;18350:17;18343:47;18407:131;18533:4;18407:131;:::i;:::-;18399:139;;18297:248;;;:::o;18551:222::-;18644:4;18682:2;18671:9;18667:18;18659:26;;18695:71;18763:1;18752:9;18748:17;18739:6;18695:71;:::i;:::-;18649:124;;;;:::o;18779:831::-;19042:4;19080:3;19069:9;19065:19;19057:27;;19094:71;19162:1;19151:9;19147:17;19138:6;19094:71;:::i;:::-;19175:80;19251:2;19240:9;19236:18;19227:6;19175:80;:::i;:::-;19302:9;19296:4;19292:20;19287:2;19276:9;19272:18;19265:48;19330:108;19433:4;19424:6;19330:108;:::i;:::-;19322:116;;19448:72;19516:2;19505:9;19501:18;19492:6;19448:72;:::i;:::-;19530:73;19598:3;19587:9;19583:19;19574:6;19530:73;:::i;:::-;19047:563;;;;;;;;:::o;19616:332::-;19737:4;19775:2;19764:9;19760:18;19752:26;;19788:71;19856:1;19845:9;19841:17;19832:6;19788:71;:::i;:::-;19869:72;19937:2;19926:9;19922:18;19913:6;19869:72;:::i;:::-;19742:206;;;;;:::o;19954:214::-;20043:4;20081:2;20070:9;20066:18;20058:26;;20094:67;20158:1;20147:9;20143:17;20134:6;20094:67;:::i;:::-;20048:120;;;;:::o;20255:132::-;20322:4;20345:3;20337:11;;20375:4;20370:3;20366:14;20358:22;;20327:60;;;:::o;20393:114::-;20460:6;20494:5;20488:12;20478:22;;20467:40;;;:::o;20513:99::-;20565:6;20599:5;20593:12;20583:22;;20572:40;;;:::o;20618:113::-;20688:4;20720;20715:3;20711:14;20703:22;;20693:38;;;:::o;20737:184::-;20836:11;20870:6;20865:3;20858:19;20910:4;20905:3;20901:14;20886:29;;20848:73;;;;:::o;20927:147::-;21028:11;21065:3;21050:18;;21040:34;;;;:::o;21080:169::-;21164:11;21198:6;21193:3;21186:19;21238:4;21233:3;21229:14;21214:29;;21176:73;;;;:::o;21255:305::-;21295:3;21314:20;21332:1;21314:20;:::i;:::-;21309:25;;21348:20;21366:1;21348:20;:::i;:::-;21343:25;;21502:1;21434:66;21430:74;21427:1;21424:81;21421:2;;;21508:18;;:::i;:::-;21421:2;21552:1;21549;21545:9;21538:16;;21299:261;;;;:::o;21566:185::-;21606:1;21623:20;21641:1;21623:20;:::i;:::-;21618:25;;21657:20;21675:1;21657:20;:::i;:::-;21652:25;;21696:1;21686:2;;21701:18;;:::i;:::-;21686:2;21743:1;21740;21736:9;21731:14;;21608:143;;;;:::o;21757:348::-;21797:7;21820:20;21838:1;21820:20;:::i;:::-;21815:25;;21854:20;21872:1;21854:20;:::i;:::-;21849:25;;22042:1;21974:66;21970:74;21967:1;21964:81;21959:1;21952:9;21945:17;21941:105;21938:2;;;22049:18;;:::i;:::-;21938:2;22097:1;22094;22090:9;22079:20;;21805:300;;;;:::o;22111:191::-;22151:4;22171:20;22189:1;22171:20;:::i;:::-;22166:25;;22205:20;22223:1;22205:20;:::i;:::-;22200:25;;22244:1;22241;22238:8;22235:2;;;22249:18;;:::i;:::-;22235:2;22294:1;22291;22287:9;22279:17;;22156:146;;;;:::o;22308:96::-;22345:7;22374:24;22392:5;22374:24;:::i;:::-;22363:35;;22353:51;;;:::o;22410:104::-;22455:7;22484:24;22502:5;22484:24;:::i;:::-;22473:35;;22463:51;;;:::o;22520:90::-;22554:7;22597:5;22590:13;22583:21;22572:32;;22562:48;;;:::o;22616:126::-;22653:7;22693:42;22686:5;22682:54;22671:65;;22661:81;;;:::o;22748:77::-;22785:7;22814:5;22803:16;;22793:32;;;:::o;22831:86::-;22866:7;22906:4;22899:5;22895:16;22884:27;;22874:43;;;:::o;22923:134::-;22981:9;23014:37;23045:5;23014:37;:::i;:::-;23001:50;;22991:66;;;:::o;23063:162::-;23131:9;23164:55;23213:5;23164:55;:::i;:::-;23151:68;;23141:84;;;:::o;23231:131::-;23299:9;23332:24;23350:5;23332:24;:::i;:::-;23319:37;;23309:53;;;:::o;23368:121::-;23426:9;23459:24;23477:5;23459:24;:::i;:::-;23446:37;;23436:53;;;:::o;23495:126::-;23545:9;23578:37;23609:5;23578:37;:::i;:::-;23565:50;;23555:66;;;:::o;23627:113::-;23677:9;23710:24;23728:5;23710:24;:::i;:::-;23697:37;;23687:53;;;:::o;23746:307::-;23814:1;23824:113;23838:6;23835:1;23832:13;23824:113;;;23923:1;23918:3;23914:11;23908:18;23904:1;23899:3;23895:11;23888:39;23860:2;23857:1;23853:10;23848:15;;23824:113;;;23955:6;23952:1;23949:13;23946:2;;;24035:1;24026:6;24021:3;24017:16;24010:27;23946:2;23795:258;;;;:::o;24059:180::-;24107:77;24104:1;24097:88;24204:4;24201:1;24194:15;24228:4;24225:1;24218:15;24245:180;24293:77;24290:1;24283:88;24390:4;24387:1;24380:15;24414:4;24411:1;24404:15;24431:180;24479:77;24476:1;24469:88;24576:4;24573:1;24566:15;24600:4;24597:1;24590:15;24617:180;24665:77;24662:1;24655:88;24762:4;24759:1;24752:15;24786:4;24783:1;24776:15;24926:117;25035:1;25032;25025:12;25049:102;25090:6;25141:2;25137:7;25132:2;25125:5;25121:14;25117:28;25107:38;;25097:54;;;:::o;25157:224::-;25297:34;25293:1;25285:6;25281:14;25274:58;25366:7;25361:2;25353:6;25349:15;25342:32;25263:118;:::o;25387:167::-;25527:19;25523:1;25515:6;25511:14;25504:43;25493:61;:::o;25560:222::-;25700:34;25696:1;25688:6;25684:14;25677:58;25769:5;25764:2;25756:6;25752:15;25745:30;25666:116;:::o;25788:177::-;25928:29;25924:1;25916:6;25912:14;25905:53;25894:71;:::o;25971:180::-;26111:32;26107:1;26099:6;26095:14;26088:56;26077:74;:::o;26157:220::-;26297:34;26293:1;26285:6;26281:14;26274:58;26366:3;26361:2;26353:6;26349:15;26342:28;26263:114;:::o;26383:156::-;26523:8;26519:1;26511:6;26507:14;26500:32;26489:50;:::o;26545:114::-;26651:8;:::o;26665:161::-;26805:13;26801:1;26793:6;26789:14;26782:37;26771:55;:::o;26832:122::-;26905:24;26923:5;26905:24;:::i;:::-;26898:5;26895:35;26885:2;;26944:1;26941;26934:12;26885:2;26875:79;:::o;26960:138::-;27041:32;27067:5;27041:32;:::i;:::-;27034:5;27031:43;27021:2;;27088:1;27085;27078:12;27021:2;27011:87;:::o;27104:116::-;27174:21;27189:5;27174:21;:::i;:::-;27167:5;27164:32;27154:2;;27210:1;27207;27200:12;27154:2;27144:76;:::o;27226:122::-;27299:24;27317:5;27299:24;:::i;:::-;27292:5;27289:35;27279:2;;27338:1;27335;27328:12;27279:2;27269:79;:::o

Swarm Source

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