Token Tendies

Overview CRC20

Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
1,420,690,000 TENDIES

Holders:
6,566 addresses
Contract:
0xde9d409f864fa2ab16255dfec166dffc4fb13f400xde9d409F864Fa2aB16255DfEc166dFFc4fB13f40

Decimals:
9

Social Profiles:
Not Available, Update ?

Balance
321,179.208129635 TENDIES

Value
$0.00
0x634a5dc4cda63ea8d0699d9387cdcfffc6408b84
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TENDIES

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-10
*/

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

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

    string constant _name = "Tendies";
    string constant _symbol = "TENDIES";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1420690000 * (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 = 3;
    uint256 totalFee = 6;
    uint256 feeDenominator = 100;
    
    address private marketingFeeReceiver = 0x2956907469a7f47E5ab967989eAd48BC7F3b4743;
    address private teamFeeReceiver = 0x2956907469a7f47E5ab967989eAd48BC7F3b4743;

    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); // MM Finance
        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"}]

6080604052735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee919062000873565b6354ae0250620000ff9190620009b0565b60055560646001600554620001159190620009b0565b620001219190620007e0565b60065560646001600554620001379190620009b0565b620001439190620007e0565b6007556003600c556000600d556003600e556006600f556064601055732956907469a7f47e5ab967989ead48bc7f3b4743601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732956907469a7f47e5ab967989ead48bc7f3b4743601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006101000a81548160ff02191690831515021790555060036103e8600554620002389190620007e0565b620002449190620009b0565b6017553480156200025457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505073145677fc4d9b8f19b5d56d1820c48e0443049a30601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ac57600080fd5b505afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000742565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044592919062000796565b602060405180830381600087803b1580156200046057600080fd5b505af115801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b919062000742565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200071c9190620007c3565b60405180910390a35062000ae6565b6000815190506200073c8162000acc565b92915050565b6000602082840312156200075b576200075a62000aba565b5b60006200076b848285016200072b565b91505092915050565b6200077f8162000a11565b82525050565b620007908162000a45565b82525050565b6000604082019050620007ad600083018562000774565b620007bc602083018462000774565b9392505050565b6000602082019050620007da600083018462000785565b92915050565b6000620007ed8262000a45565b9150620007fa8362000a45565b9250826200080d576200080c62000a8b565b5b828204905092915050565b6000808291508390505b60018511156200086a5780860481111562000842576200084162000a5c565b5b6001851615620008525780820291505b8081029050620008628562000abf565b945062000822565b94509492505050565b6000620008808262000a45565b91506200088d8362000a4f565b9250620008bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c4565b905092915050565b600082620008d65760019050620009a9565b81620008e65760009050620009a9565b8160018114620008ff57600281146200090a5762000940565b6001915050620009a9565b60ff8411156200091f576200091e62000a5c565b5b8360020a91508482111562000939576200093862000a5c565b5b50620009a9565b5060208310610133831016604e8410600b84101617156200097a5782820a90508381111562000974576200097362000a5c565b5b620009a9565b62000989848484600162000818565b92509050818404811115620009a357620009a262000a5c565b5b81810290505b9392505050565b6000620009bd8262000a45565b9150620009ca8362000a45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a065762000a0562000a5c565b5b828202905092915050565b600062000a1e8262000a25565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ad78162000a11565b811462000ae357600080fd5b50565b6139288062000af66000396000f3fe6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b146107f6578063f42938901461081f578063f84ba65d14610836578063f887ea401461085f578063fe9fbb801461088a5761021a565b8063df20fd491461073e578063e66db25e14610767578063f0b37c0414610790578063f1f3bca3146107b95761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b80638f9a55c01461058957806395d89b41146105b4578063a8aa1b31146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f65780637d1db4a514610533578063893d20e81461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b60405161024191906132d3565b60405180910390f35b34801561025657600080fd5b5061025f6108cd565b60405161026c91906131b1565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c6c565b61090a565b6040516102a9919061317b565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612d73565b6109fc565b6040516102e6919061317b565b60405180910390f35b3480156102fb57600080fd5b50610304610a11565b60405161031191906132d3565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612bd9565b610a1b565b60405161034e919061317b565b60405180910390f35b34801561036357600080fd5b5061036c610c1b565b60405161037991906132d3565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b3f565b610c9d565b6040516103b6919061317b565b60405180910390f35b3480156103cb57600080fd5b506103d4610cf6565b6040516103e19190613371565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b3f565b610cff565b60405161041e919061317b565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d19565b610d32565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d19565b610da0565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c2c565b610e0e565b005b3480156104ae57600080fd5b506104b7610eb1565b6040516104c4919061317b565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e06565b610ec4565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b3f565b610f59565b60405161052a91906132d3565b60405180910390f35b34801561053f57600080fd5b50610548610fa2565b60405161055591906132d3565b60405180910390f35b34801561056a57600080fd5b50610573610fa8565b60405161058091906130e4565b60405180910390f35b34801561059557600080fd5b5061059e610fd1565b6040516105ab91906132d3565b60405180910390f35b3480156105c057600080fd5b506105c9610fd7565b6040516105d691906131b1565b60405180910390f35b3480156105eb57600080fd5b506105f4611014565b60405161060191906130e4565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c6c565b61103a565b60405161063e919061317b565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b3f565b61104f565b005b34801561067c57600080fd5b506106856110f1565b60405161069291906132d3565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d19565b6110f7565b6040516106cf91906132d3565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b3f565b611169565b005b34801561070d57600080fd5b5061072860048036038101906107239190612b99565b61131a565b60405161073591906132d3565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612cd9565b6113a1565b005b34801561077357600080fd5b5061078e60048036038101906107899190612b99565b61140e565b005b34801561079c57600080fd5b506107b760048036038101906107b29190612b3f565b6114dc565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612cac565b61157f565b6040516107ed91906132d3565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b6c565b6115e1565b005b34801561082b57600080fd5b506108346116fa565b005b34801561084257600080fd5b5061085d60048036038101906108589190612c2c565b6117b3565b005b34801561086b57600080fd5b50610874611856565b6040516108819190613196565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190612b3f565b61187c565b6040516108be919061317b565b60405180910390f35b60175481565b60606040518060400160405280600781526020017f54656e6469657300000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ea91906132d3565b60405180910390a36001905092915050565b600082610a08836110f7565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0757610b86826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c12848484611936565b90509392505050565b6000610c98610c4b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b610c8a610c79600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b600554611dc690919063ffffffff16565b611dc690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d2b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61090a565b9050919050565b610d3b3361187c565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906132b3565b60405180910390fd5b6103e8600554610d8a9190613442565b811015610d9657600080fd5b8060068190555050565b610da933610c9d565b610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90613293565b60405180910390fd5b6103e8600554610df89190613442565b811015610e0457600080fd5b8060078190555050565b610e173361187c565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906132b3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610ecd3361187c565b610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906132b3565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610f4682610f388587611e1090919063ffffffff16565b611e1090919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f54454e4449455300000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611047338484611936565b905092915050565b61105833610c9d565b611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613293565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b6000611162611104610c1b565b6111546111456002611137601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b611e6e90919063ffffffff16565b85611e6e90919063ffffffff16565b611ee990919063ffffffff16565b9050919050565b6111723361187c565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906132b3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613213565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b91906130e4565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab9190612d46565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611315573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113aa3361187c565b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906132b3565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6114173361187c565b611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906132b3565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114e533610c9d565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613293565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160155461159191906133ec565b106115b3576115ac6001601054611dc690919063ffffffff16565b90506115dc565b81156115d6576115cf6001600f54611e1090919063ffffffff16565b90506115dc565b600f5490505b919050565b6115ea33610c9d565b611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613293565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116ef91906130ff565b60405180910390a150565b6117033361187c565b611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906132b3565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117af573d6000803e3d6000fd5b5050565b6117bc3361187c565b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f2906132b3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191191906131b1565b60405180910390fd5b506000838561192991906134cd565b9050809150509392505050565b6000601860009054906101000a900460ff161561195f57611958848484611f33565b9050611dbf565b6119698483612106565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a155750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611afe57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611abe575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abb91906133ec565b11155b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af4906131d3565b60405180910390fd5b5b611b066121a3565b15611b1457611b1361227a565b5b611b1c61286b565b158015611b765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bd0576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611bc757600080fd5b611bcf612878565b5b611c59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ca785612881565b611cb15782611cbd565b611cbc8585856128d8565b5b9050611d1181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db191906132d3565b60405180910390a360019150505b9392505050565b6000611e0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d2565b905092915050565b6000808284611e1f91906133ec565b905083811015611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613233565b60405180910390fd5b8091505092915050565b600080831415611e815760009050611ee3565b60008284611e8f9190613473565b9050828482611e9e9190613442565b14611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613273565b60405180910390fd5b809150505b92915050565b6000611f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a73565b905092915050565b6000611fbe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f391906132d3565b60405180910390a3600190509392505050565b600654811115806121605750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61219f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612196906131f3565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122105750601860009054906101000a900460ff16155b80156122285750601660009054906101000a900460ff165b80156122755750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006122a030610f59565b905060006122e060026122d2600f546122c4600c5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b905060006122f78284611dc690919063ffffffff16565b90506000600267ffffffffffffffff81111561231657612315613694565b5b6040519080825280602002602001820160405280156123445781602001602082028036833780820191505090505b509050308160008151811061235c5761235b613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123cd576123cc613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016124709594939291906132ee565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b5050505060006124b78247611dc690919063ffffffff16565b905060006124e56124d46002600c54611ee990919063ffffffff16565b600f54611dc690919063ffffffff16565b90506000612523600261251584612507600c5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b9050600061254e83612540600d5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b905060006125798461256b600e5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125c7906130cf565b600060405180830381858888f193505050503d8060008114612605576040519150601f19603f3d011682016040523d82523d6000602084013e61260a565b606091505b505090508061264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613253565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161269a906130cf565b600060405180830381858888f193505050503d80600081146126d8576040519150601f19603f3d011682016040523d82523d6000602084013e6126dd565b606091505b5050905080612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271890613253565b60405180910390fd5b60008b111561284257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b39695949392919061311a565b6060604051808303818588803b1580156127cc57600080fd5b505af11580156127e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128059190612db3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612839929190613348565b60405180910390a15b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061295a60105461294c61293d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461157f565b86611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506129ae81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a4e91906132d3565b60405180910390a3612a698184611dc690919063ffffffff16565b9150509392505050565b60008083118290612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab191906131b1565b60405180910390fd5b5060008385612ac99190613442565b9050809150509392505050565b600081359050612ae581613896565b92915050565b600081359050612afa816138ad565b92915050565b600081359050612b0f816138c4565b92915050565b600081359050612b24816138db565b92915050565b600081519050612b39816138db565b92915050565b600060208284031215612b5557612b546136c3565b5b6000612b6384828501612ad6565b91505092915050565b600060208284031215612b8257612b816136c3565b5b6000612b9084828501612aeb565b91505092915050565b60008060408385031215612bb057612baf6136c3565b5b6000612bbe85828601612ad6565b9250506020612bcf85828601612ad6565b9150509250929050565b600080600060608486031215612bf257612bf16136c3565b5b6000612c0086828701612ad6565b9350506020612c1186828701612ad6565b9250506040612c2286828701612b15565b9150509250925092565b60008060408385031215612c4357612c426136c3565b5b6000612c5185828601612ad6565b9250506020612c6285828601612b00565b9150509250929050565b60008060408385031215612c8357612c826136c3565b5b6000612c9185828601612ad6565b9250506020612ca285828601612b15565b9150509250929050565b600060208284031215612cc257612cc16136c3565b5b6000612cd084828501612b00565b91505092915050565b60008060408385031215612cf057612cef6136c3565b5b6000612cfe85828601612b00565b9250506020612d0f85828601612b15565b9150509250929050565b600060208284031215612d2f57612d2e6136c3565b5b6000612d3d84828501612b15565b91505092915050565b600060208284031215612d5c57612d5b6136c3565b5b6000612d6a84828501612b2a565b91505092915050565b60008060408385031215612d8a57612d896136c3565b5b6000612d9885828601612b15565b9250506020612da985828601612b15565b9150509250929050565b600080600060608486031215612dcc57612dcb6136c3565b5b6000612dda86828701612b2a565b9350506020612deb86828701612b2a565b9250506040612dfc86828701612b2a565b9150509250925092565b60008060008060808587031215612e2057612e1f6136c3565b5b6000612e2e87828801612b15565b9450506020612e3f87828801612b15565b9350506040612e5087828801612b15565b9250506060612e6187828801612b15565b91505092959194509250565b6000612e798383612e94565b60208301905092915050565b612e8e81613568565b82525050565b612e9d81613501565b82525050565b612eac81613501565b82525050565b6000612ebd8261339c565b612ec781856133bf565b9350612ed28361338c565b8060005b83811015612f03578151612eea8882612e6d565b9750612ef5836133b2565b925050600181019050612ed6565b5085935050505092915050565b612f1981613525565b82525050565b612f288161357a565b82525050565b612f378161359e565b82525050565b6000612f48826133a7565b612f5281856133db565b9350612f628185602086016135d4565b612f6b816136c8565b840191505092915050565b6000612f836025836133db565b9150612f8e826136d9565b604082019050919050565b6000612fa66011836133db565b9150612fb182613728565b602082019050919050565b6000612fc96023836133db565b9150612fd482613751565b604082019050919050565b6000612fec601b836133db565b9150612ff7826137a0565b602082019050919050565b600061300f601e836133db565b915061301a826137c9565b602082019050919050565b60006130326021836133db565b915061303d826137f2565b604082019050919050565b60006130556006836133db565b915061306082613841565b602082019050919050565b60006130786000836133d0565b91506130838261386a565b600082019050919050565b600061309b600b836133db565b91506130a68261386d565b602082019050919050565b6130ba81613551565b82525050565b6130c98161355b565b82525050565b60006130da8261306b565b9150819050919050565b60006020820190506130f96000830184612ea3565b92915050565b60006020820190506131146000830184612e85565b92915050565b600060c08201905061312f6000830189612ea3565b61313c60208301886130b1565b6131496040830187612f2e565b6131566060830186612f2e565b6131636080830185612ea3565b61317060a08301846130b1565b979650505050505050565b60006020820190506131906000830184612f10565b92915050565b60006020820190506131ab6000830184612f1f565b92915050565b600060208201905081810360008301526131cb8184612f3d565b905092915050565b600060208201905081810360008301526131ec81612f76565b9050919050565b6000602082019050818103600083015261320c81612f99565b9050919050565b6000602082019050818103600083015261322c81612fbc565b9050919050565b6000602082019050818103600083015261324c81612fdf565b9050919050565b6000602082019050818103600083015261326c81613002565b9050919050565b6000602082019050818103600083015261328c81613025565b9050919050565b600060208201905081810360008301526132ac81613048565b9050919050565b600060208201905081810360008301526132cc8161308e565b9050919050565b60006020820190506132e860008301846130b1565b92915050565b600060a08201905061330360008301886130b1565b6133106020830187612f2e565b81810360408301526133228186612eb2565b90506133316060830185612ea3565b61333e60808301846130b1565b9695505050505050565b600060408201905061335d60008301856130b1565b61336a60208301846130b1565b9392505050565b600060208201905061338660008301846130c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f782613551565b915061340283613551565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343757613436613607565b5b828201905092915050565b600061344d82613551565b915061345883613551565b92508261346857613467613636565b5b828204905092915050565b600061347e82613551565b915061348983613551565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134c2576134c1613607565b5b828202905092915050565b60006134d882613551565b91506134e383613551565b9250828210156134f6576134f5613607565b5b828203905092915050565b600061350c82613531565b9050919050565b600061351e82613531565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613573826135b0565b9050919050565b60006135858261358c565b9050919050565b600061359782613531565b9050919050565b60006135a982613551565b9050919050565b60006135bb826135c2565b9050919050565b60006135cd82613531565b9050919050565b60005b838110156135f25780820151818401526020810190506135d7565b83811115613601576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61389f81613501565b81146138aa57600080fd5b50565b6138b681613513565b81146138c157600080fd5b50565b6138cd81613525565b81146138d857600080fd5b50565b6138e481613551565b81146138ef57600080fd5b5056fea2646970667358221220b7a56072fc0051ee14d93765d2a3577a3b6c0ea66326528d64f138d5afc2481564736f6c63430008050033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b146107f6578063f42938901461081f578063f84ba65d14610836578063f887ea401461085f578063fe9fbb801461088a5761021a565b8063df20fd491461073e578063e66db25e14610767578063f0b37c0414610790578063f1f3bca3146107b95761021a565b8063b6a5d7de116100e7578063b6a5d7de14610647578063bf56b37114610670578063d51ed1c81461069b578063dc93cf70146106d8578063dd62ed3e146107015761021a565b80638f9a55c01461058957806395d89b41146105b4578063a8aa1b31146105df578063a9059cbb1461060a5761021a565b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146104a25780636fcba377146104cd57806370a08231146104f65780637d1db4a514610533578063893d20e81461055e5761021a565b8063571ac8b0146103ea5780635c85974f146104275780635d0044ca14610450578063658d4b7f146104795761021a565b806318160ddd116101e257806318160ddd146102ef57806323b872dd1461031a5780632b112e49146103575780632f54bf6e14610382578063313ce567146103bf5761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108c7565b60405161024191906132d3565b60405180910390f35b34801561025657600080fd5b5061025f6108cd565b60405161026c91906131b1565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612c6c565b61090a565b6040516102a9919061317b565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612d73565b6109fc565b6040516102e6919061317b565b60405180910390f35b3480156102fb57600080fd5b50610304610a11565b60405161031191906132d3565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190612bd9565b610a1b565b60405161034e919061317b565b60405180910390f35b34801561036357600080fd5b5061036c610c1b565b60405161037991906132d3565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612b3f565b610c9d565b6040516103b6919061317b565b60405180910390f35b3480156103cb57600080fd5b506103d4610cf6565b6040516103e19190613371565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612b3f565b610cff565b60405161041e919061317b565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190612d19565b610d32565b005b34801561045c57600080fd5b5061047760048036038101906104729190612d19565b610da0565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612c2c565b610e0e565b005b3480156104ae57600080fd5b506104b7610eb1565b6040516104c4919061317b565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef9190612e06565b610ec4565b005b34801561050257600080fd5b5061051d60048036038101906105189190612b3f565b610f59565b60405161052a91906132d3565b60405180910390f35b34801561053f57600080fd5b50610548610fa2565b60405161055591906132d3565b60405180910390f35b34801561056a57600080fd5b50610573610fa8565b60405161058091906130e4565b60405180910390f35b34801561059557600080fd5b5061059e610fd1565b6040516105ab91906132d3565b60405180910390f35b3480156105c057600080fd5b506105c9610fd7565b6040516105d691906131b1565b60405180910390f35b3480156105eb57600080fd5b506105f4611014565b60405161060191906130e4565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612c6c565b61103a565b60405161063e919061317b565b60405180910390f35b34801561065357600080fd5b5061066e60048036038101906106699190612b3f565b61104f565b005b34801561067c57600080fd5b506106856110f1565b60405161069291906132d3565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612d19565b6110f7565b6040516106cf91906132d3565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190612b3f565b611169565b005b34801561070d57600080fd5b5061072860048036038101906107239190612b99565b61131a565b60405161073591906132d3565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612cd9565b6113a1565b005b34801561077357600080fd5b5061078e60048036038101906107899190612b99565b61140e565b005b34801561079c57600080fd5b506107b760048036038101906107b29190612b3f565b6114dc565b005b3480156107c557600080fd5b506107e060048036038101906107db9190612cac565b61157f565b6040516107ed91906132d3565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b6c565b6115e1565b005b34801561082b57600080fd5b506108346116fa565b005b34801561084257600080fd5b5061085d60048036038101906108589190612c2c565b6117b3565b005b34801561086b57600080fd5b50610874611856565b6040516108819190613196565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190612b3f565b61187c565b6040516108be919061317b565b60405180910390f35b60175481565b60606040518060400160405280600781526020017f54656e6469657300000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ea91906132d3565b60405180910390a36001905092915050565b600082610a08836110f7565b11905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0757610b86826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c12848484611936565b90509392505050565b6000610c98610c4b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b610c8a610c79600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b600554611dc690919063ffffffff16565b611dc690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000610d2b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61090a565b9050919050565b610d3b3361187c565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906132b3565b60405180910390fd5b6103e8600554610d8a9190613442565b811015610d9657600080fd5b8060068190555050565b610da933610c9d565b610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90613293565b60405180910390fd5b6103e8600554610df89190613442565b811015610e0457600080fd5b8060078190555050565b610e173361187c565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d906132b3565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b610ecd3361187c565b610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906132b3565b60405180910390fd5b83600c8190555082600d8190555081600e81905550610f4682610f388587611e1090919063ffffffff16565b611e1090919063ffffffff16565b600f819055508060108190555050505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600781526020017f54454e4449455300000000000000000000000000000000000000000000000000815250905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611047338484611936565b905092915050565b61105833610c9d565b611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613293565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b6000611162611104610c1b565b6111546111456002611137601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f59565b611e6e90919063ffffffff16565b85611e6e90919063ffffffff16565b611ee990919063ffffffff16565b9050919050565b6111723361187c565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906132b3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613213565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b91906130e4565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab9190612d46565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611315573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113aa3361187c565b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906132b3565b60405180910390fd5b81601660006101000a81548160ff021916908315150217905550806017819055505050565b6114173361187c565b611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906132b3565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6114e533610c9d565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613293565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600043600160155461159191906133ec565b106115b3576115ac6001601054611dc690919063ffffffff16565b90506115dc565b81156115d6576115cf6001600f54611e1090919063ffffffff16565b90506115dc565b600f5490505b919050565b6115ea33610c9d565b611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613293565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516116ef91906130ff565b60405180910390a150565b6117033361187c565b611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906132b3565b60405180910390fd5b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117af573d6000803e3d6000fd5b5050565b6117bc3361187c565b6117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f2906132b3565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191191906131b1565b60405180910390fd5b506000838561192991906134cd565b9050809150509392505050565b6000601860009054906101000a900460ff161561195f57611958848484611f33565b9050611dbf565b6119698483612106565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a155750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611afe57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611abe575060075482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611abb91906133ec565b11155b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af4906131d3565b60405180910390fd5b5b611b066121a3565b15611b1457611b1361227a565b5b611b1c61286b565b158015611b765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bd0576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611bc757600080fd5b611bcf612878565b5b611c59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ca785612881565b611cb15782611cbd565b611cbc8585856128d8565b5b9050611d1181600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db191906132d3565b60405180910390a360019150505b9392505050565b6000611e0883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d2565b905092915050565b6000808284611e1f91906133ec565b905083811015611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613233565b60405180910390fd5b8091505092915050565b600080831415611e815760009050611ee3565b60008284611e8f9190613473565b9050828482611e9e9190613442565b14611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613273565b60405180910390fd5b809150505b92915050565b6000611f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a73565b905092915050565b6000611fbe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f391906132d3565b60405180910390a3600190509392505050565b600654811115806121605750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61219f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612196906131f3565b60405180910390fd5b5050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122105750601860009054906101000a900460ff16155b80156122285750601660009054906101000a900460ff165b80156122755750601754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601860006101000a81548160ff02191690831515021790555060006122a030610f59565b905060006122e060026122d2600f546122c4600c5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b905060006122f78284611dc690919063ffffffff16565b90506000600267ffffffffffffffff81111561231657612315613694565b5b6040519080825280602002602001820160405280156123445781602001602082028036833780820191505090505b509050308160008151811061235c5761235b613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106123cd576123cc613665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016124709594939291906132ee565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b5050505060006124b78247611dc690919063ffffffff16565b905060006124e56124d46002600c54611ee990919063ffffffff16565b600f54611dc690919063ffffffff16565b90506000612523600261251584612507600c5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b611ee990919063ffffffff16565b9050600061254e83612540600d5487611e6e90919063ffffffff16565b611ee990919063ffffffff16565b905060006125798461256b600e5488611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125c7906130cf565b600060405180830381858888f193505050503d8060008114612605576040519150601f19603f3d011682016040523d82523d6000602084013e61260a565b606091505b505090508061264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613253565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846175309060405161269a906130cf565b600060405180830381858888f193505050503d80600081146126d8576040519150601f19603f3d011682016040523d82523d6000602084013e6126dd565b606091505b5050905080612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271890613253565b60405180910390fd5b60008b111561284257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b39695949392919061311a565b6060604051808303818588803b1580156127cc57600080fd5b505af11580156127e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128059190612db3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612839929190613348565b60405180910390a15b5050505050505050505050506000601860006101000a81548160ff021916908315150217905550565b6000806015541415905090565b43601581905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061295a60105461294c61293d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461157f565b86611e6e90919063ffffffff16565b611ee990919063ffffffff16565b90506129ae81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e1090919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a4e91906132d3565b60405180910390a3612a698184611dc690919063ffffffff16565b9150509392505050565b60008083118290612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab191906131b1565b60405180910390fd5b5060008385612ac99190613442565b9050809150509392505050565b600081359050612ae581613896565b92915050565b600081359050612afa816138ad565b92915050565b600081359050612b0f816138c4565b92915050565b600081359050612b24816138db565b92915050565b600081519050612b39816138db565b92915050565b600060208284031215612b5557612b546136c3565b5b6000612b6384828501612ad6565b91505092915050565b600060208284031215612b8257612b816136c3565b5b6000612b9084828501612aeb565b91505092915050565b60008060408385031215612bb057612baf6136c3565b5b6000612bbe85828601612ad6565b9250506020612bcf85828601612ad6565b9150509250929050565b600080600060608486031215612bf257612bf16136c3565b5b6000612c0086828701612ad6565b9350506020612c1186828701612ad6565b9250506040612c2286828701612b15565b9150509250925092565b60008060408385031215612c4357612c426136c3565b5b6000612c5185828601612ad6565b9250506020612c6285828601612b00565b9150509250929050565b60008060408385031215612c8357612c826136c3565b5b6000612c9185828601612ad6565b9250506020612ca285828601612b15565b9150509250929050565b600060208284031215612cc257612cc16136c3565b5b6000612cd084828501612b00565b91505092915050565b60008060408385031215612cf057612cef6136c3565b5b6000612cfe85828601612b00565b9250506020612d0f85828601612b15565b9150509250929050565b600060208284031215612d2f57612d2e6136c3565b5b6000612d3d84828501612b15565b91505092915050565b600060208284031215612d5c57612d5b6136c3565b5b6000612d6a84828501612b2a565b91505092915050565b60008060408385031215612d8a57612d896136c3565b5b6000612d9885828601612b15565b9250506020612da985828601612b15565b9150509250929050565b600080600060608486031215612dcc57612dcb6136c3565b5b6000612dda86828701612b2a565b9350506020612deb86828701612b2a565b9250506040612dfc86828701612b2a565b9150509250925092565b60008060008060808587031215612e2057612e1f6136c3565b5b6000612e2e87828801612b15565b9450506020612e3f87828801612b15565b9350506040612e5087828801612b15565b9250506060612e6187828801612b15565b91505092959194509250565b6000612e798383612e94565b60208301905092915050565b612e8e81613568565b82525050565b612e9d81613501565b82525050565b612eac81613501565b82525050565b6000612ebd8261339c565b612ec781856133bf565b9350612ed28361338c565b8060005b83811015612f03578151612eea8882612e6d565b9750612ef5836133b2565b925050600181019050612ed6565b5085935050505092915050565b612f1981613525565b82525050565b612f288161357a565b82525050565b612f378161359e565b82525050565b6000612f48826133a7565b612f5281856133db565b9350612f628185602086016135d4565b612f6b816136c8565b840191505092915050565b6000612f836025836133db565b9150612f8e826136d9565b604082019050919050565b6000612fa66011836133db565b9150612fb182613728565b602082019050919050565b6000612fc96023836133db565b9150612fd482613751565b604082019050919050565b6000612fec601b836133db565b9150612ff7826137a0565b602082019050919050565b600061300f601e836133db565b915061301a826137c9565b602082019050919050565b60006130326021836133db565b915061303d826137f2565b604082019050919050565b60006130556006836133db565b915061306082613841565b602082019050919050565b60006130786000836133d0565b91506130838261386a565b600082019050919050565b600061309b600b836133db565b91506130a68261386d565b602082019050919050565b6130ba81613551565b82525050565b6130c98161355b565b82525050565b60006130da8261306b565b9150819050919050565b60006020820190506130f96000830184612ea3565b92915050565b60006020820190506131146000830184612e85565b92915050565b600060c08201905061312f6000830189612ea3565b61313c60208301886130b1565b6131496040830187612f2e565b6131566060830186612f2e565b6131636080830185612ea3565b61317060a08301846130b1565b979650505050505050565b60006020820190506131906000830184612f10565b92915050565b60006020820190506131ab6000830184612f1f565b92915050565b600060208201905081810360008301526131cb8184612f3d565b905092915050565b600060208201905081810360008301526131ec81612f76565b9050919050565b6000602082019050818103600083015261320c81612f99565b9050919050565b6000602082019050818103600083015261322c81612fbc565b9050919050565b6000602082019050818103600083015261324c81612fdf565b9050919050565b6000602082019050818103600083015261326c81613002565b9050919050565b6000602082019050818103600083015261328c81613025565b9050919050565b600060208201905081810360008301526132ac81613048565b9050919050565b600060208201905081810360008301526132cc8161308e565b9050919050565b60006020820190506132e860008301846130b1565b92915050565b600060a08201905061330360008301886130b1565b6133106020830187612f2e565b81810360408301526133228186612eb2565b90506133316060830185612ea3565b61333e60808301846130b1565b9695505050505050565b600060408201905061335d60008301856130b1565b61336a60208301846130b1565b9392505050565b600060208201905061338660008301846130c0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f782613551565b915061340283613551565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343757613436613607565b5b828201905092915050565b600061344d82613551565b915061345883613551565b92508261346857613467613636565b5b828204905092915050565b600061347e82613551565b915061348983613551565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134c2576134c1613607565b5b828202905092915050565b60006134d882613551565b91506134e383613551565b9250828210156134f6576134f5613607565b5b828203905092915050565b600061350c82613531565b9050919050565b600061351e82613531565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613573826135b0565b9050919050565b60006135858261358c565b9050919050565b600061359782613531565b9050919050565b60006135a982613551565b9050919050565b60006135bb826135c2565b9050919050565b60006135cd82613531565b9050919050565b60005b838110156135f25780820151818401526020810190506135d7565b83811115613601576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b61389f81613501565b81146138aa57600080fd5b50565b6138b681613513565b81146138c157600080fd5b50565b6138cd81613525565b81146138d857600080fd5b50565b6138e481613551565b81146138ef57600080fd5b5056fea2646970667358221220b7a56072fc0051ee14d93765d2a3577a3b6c0ea66326528d64f138d5afc2481564736f6c63430008050033

Deployed ByteCode Sourcemap

5460:10731:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6733:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7698:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8120:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15970:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7428:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8638:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15645:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3355:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7522:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8344:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13823:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13975:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14138:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6696:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14402:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7868:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5908:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7784:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5983:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7608:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6634:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8474:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3028:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6662:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15795:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15331:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7979:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14979:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14762:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3198:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10608:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3755:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15143:180;;;;;;;;;;;;;:::i;:::-;;14266:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6603:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3529:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6733:54;;;;:::o;7698:80::-;7746:13;7770:5;;;;;;;;;;;;;;;;;7763:12;;7698:80;:::o;8120:216::-;8195:4;8247:6;8212:11;:23;8224:10;8212:23;;;;;;;;;;;;;;;:32;8236:7;8212:32;;;;;;;;;;;;;;;:41;;;;8290:7;8269:37;;8278:10;8269:37;;;8299:6;8269:37;;;;;;:::i;:::-;;;;;;;;8324:4;8317:11;;8120:216;;;;:::o;15970:150::-;16050:4;16106:6;16074:29;16094:8;16074:19;:29::i;:::-;:38;16067:45;;15970:150;;;;:::o;7428:88::-;7483:7;7501:12;;7494:19;;7428:88;:::o;8638:370::-;8738:4;8793:17;8758:11;:19;8770:6;8758:19;;;;;;;;;;;;;;;:31;8778:10;8758:31;;;;;;;;;;;;;;;;:52;8755:186;;8860:69;8896:6;8860:69;;;;;;;;;;;;;;;;;:11;:19;8872:6;8860:19;;;;;;;;;;;;;;;:31;8880:10;8860:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8826:11;:19;8838:6;8826:19;;;;;;;;;;;;;;;:31;8846:10;8826:31;;;;;;;;;;;;;;;:103;;;;8755:186;8960:40;8974:6;8982:9;8993:6;8960:13;:40::i;:::-;8953:47;;8638:370;;;;;:::o;15645:142::-;15698:7;15725:54;15763:15;15773:4;;;;;;;;;;;15763:9;:15::i;:::-;15725:33;15742:15;15752:4;;;;;;;;;;;15742:9;:15::i;:::-;15725:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15718:61;;15645:142;:::o;3355:103::-;3410:4;3445:5;;;;;;;;;;;3434:16;;:7;:16;;;3427:23;;3355:103;;;:::o;7522:80::-;7574:5;5838:1;7583:16;;7522:80;:::o;8344:122::-;8399:4;8423:35;8431:7;8440:17;8423:7;:35::i;:::-;8416:42;;8344:122;;;:::o;13823:145::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13923:4:::1;13908:12;;:19;;;;:::i;:::-;13898:6;:29;;13890:38;;;::::0;::::1;;13954:6;13939:12;:21;;;;13823:145:::0;:::o;13975:151::-;2744:19;2752:10;2744:7;:19::i;:::-;2736:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14078:4:::1;14063:12;;:19;;;;:::i;:::-;14053:6;:29;;14045:39;;;::::0;::::1;;14112:6;14095:14;:23;;;;13975:151:::0;:::o;14138:120::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14244:6:::1;14222:11;:19;14234:6;14222:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14138:120:::0;;:::o;6696:30::-;;;;;;;;;;;;;:::o;14402:352::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14554:13:::1;14539:12;:28;;;;14588:8;14578:7;:18;;;;14622:13;14607:12;:28;;;;14657:46;14689:13;14657:27;14675:8;14657:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;14646:8;:57;;;;14731:15;14714:14;:32;;;;14402:352:::0;;;;:::o;7868:105::-;7934:7;7952:9;:18;7962:7;7952:18;;;;;;;;;;;;;;;;7945:25;;7868:105;;;:::o;5908:54::-;;;;:::o;7784:78::-;7836:7;7854:5;;;;;;;;;;;7847:12;;7784:78;:::o;5983:56::-;;;;:::o;7608:84::-;7658:13;7682:7;;;;;;;;;;;;;;;;;7675:14;;7608:84;:::o;6634:19::-;;;;;;;;;;;;;:::o;8474:156::-;8554:4;8578:44;8592:10;8604:9;8615:6;8578:13;:44::i;:::-;8571:51;;8474: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;15795:167::-;15863:7;15890:64;15931:22;:20;:22::i;:::-;15890:36;15903:22;15923:1;15903:15;15913:4;;;;;;;;;;;15903:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15890:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15883:71;;15795:167;;;:::o;15331:298::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15432:4:::1;15414:23;;:6;:23;;;;15406:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15488:24;15522:6;15515:24;;;15548:4;15515:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15488:66;;15573:20;;;;;;;;;;;15565:38;;:56;15604:16;15565:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15395:234;15331:298:::0;:::o;7979:133::-;8063:7;8081:11;:19;8093:6;8081:19;;;;;;;;;;;;;;;:28;8101:7;8081:28;;;;;;;;;;;;;;;;8074:35;;7979:133;;;;:::o;14979:156::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15085:8:::1;15071:11;;:22;;;;;;;;;;;;;;;;;;15120:7;15104:13;:23;;;;14979:156:::0;;:::o;14762:209::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14897:21:::1;14874:20;;:44;;;;;;;;;;;;;;;;;;14947:16;14929:15;;:34;;;;;;;;;;;;;;;;;;14762: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;10608:225::-;10664:7;10705:12;10700:1;10687:10;;:14;;;;:::i;:::-;:30;10684:67;;10727:21;10746:1;10727:14;;:18;;:21;;;;:::i;:::-;10720:28;;;;10684:67;10764:7;10761:39;;;10782:15;10795:1;10782:8;;:12;;:15;;;;:::i;:::-;10775:22;;;;10761:39;10817:8;;10810:15;;10608: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;15143:180::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15196:26:::1;15225:21;15196:50;;15265:20;;;;;;;;;;;15257:38;;:58;15296:18;15257:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15185:138;15143:180::o:0;14266:128::-;2913:24;2926:10;2913:12;:24::i;:::-;2905:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14380:6:::1;14354:15;:23;14370:6;14354:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14266: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;9016:942::-;9108:4;9128:6;;;;;;;;;;;9125:63;;;9144:41;9159:6;9167:9;9178:6;9144:14;:41::i;:::-;9137:48;;;;9125:63;9208:28;9221:6;9229;9208:12;:28::i;:::-;9274:4;;;;;;;;;;;9261:17;;:9;:17;;;;:38;;;;;9295:4;;;;;;;;;;;9282:17;;:9;:17;;;;9261:38;9257:198;;;9324:15;:26;9340:9;9324:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;9387:14;;9377:6;9354:9;:20;9364:9;9354:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;9324:77;9316:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;9257:198;9478:16;:14;:16::i;:::-;9475:35;;;9497:10;:8;:10::i;:::-;9475:35;9526:10;:8;:10::i;:::-;9525:11;:32;;;;;9553:4;;;;;;;;;;;9540:17;;:9;:17;;;9525:32;9522:81;;;9588:1;9568:9;:17;9578:6;9568:17;;;;;;;;;;;;;;;;:21;9560:30;;;;;;9592:8;:6;:8::i;:::-;9522:81;9635:53;9657:6;9635:53;;;;;;;;;;;;;;;;;:9;:17;9645:6;9635:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9615:9;:17;9625:6;9615:17;;;;;;;;;;;;;;;:73;;;;9701:22;9726:21;9740:6;9726:13;:21::i;:::-;:67;;9787:6;9726:67;;;9750:34;9758:6;9766:9;9777:6;9750:7;:34::i;:::-;9726:67;9701:92;;9827:40;9852:14;9827:9;:20;9837:9;9827:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9804:9;:20;9814:9;9804:20;;;;;;;;;;;;;;;:63;;;;9902:9;9885:43;;9894:6;9885:43;;;9913:14;9885:43;;;;;;:::i;:::-;;;;;;;;9946:4;9939:11;;;9016: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;9970:330::-;10063:4;10100:53;10122:6;10100:53;;;;;;;;;;;;;;;;;:9;:17;10110:6;10100:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10080:9;:17;10090:6;10080:17;;;;;;;;;;;;;;;:73;;;;10187:32;10212:6;10187:9;:20;10197:9;10187:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10164:9;:20;10174:9;10164:20;;;;;;;;;;;;;;;:55;;;;10252:9;10235:35;;10244:6;10235:35;;;10263:6;10235:35;;;;;;:::i;:::-;;;;;;;;10288:4;10281:11;;9970:330;;;;;:::o;10308:166::-;10405:12;;10395:6;:22;;:49;;;;10421:15;:23;10437:6;10421:23;;;;;;;;;;;;;;;;;;;;;;;;;10395:49;10387:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10308:166;;:::o;11221:197::-;11270:4;11308;;;;;;;;;;;11294:18;;:10;:18;;;;:38;;;;;11326:6;;;;;;;;;;;11325:7;11294:38;:62;;;;;11345:11;;;;;;;;;;;11294:62;:116;;;;;11397:13;;11369:9;:24;11387:4;11369:24;;;;;;;;;;;;;;;;:41;;11294:116;11287:123;;11221:197;:::o;11426:1843::-;6851:4;6842:6;;:13;;;;;;;;;;;;;;;;;;11475:28:::1;11506:24;11524:4;11506:9;:24::i;:::-;11475:55;;11541:23;11567:59;11624:1;11567:52;11610:8;;11567:38;11592:12;;11567:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11541:85;;11637:20;11660:41;11685:15;11660:20;:24;;:41;;;;:::i;:::-;11637:64;;11714:21;11752:1;11738:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11714:40;;11783:4;11765;11770:1;11765:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11809:4;;;;;;;;;;;11799;11804:1;11799:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11826:21;11850;11826:45;;11884:6;;;;;;;;;;;:57;;;11956:12;11983:1;11999:4;12026;12046:15;11884:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12083:17;12103:40;12129:13;12103:21;:25;;:40;;;;:::i;:::-;12083:60;;12154:19;12176:33;12189:19;12206:1;12189:12;;:16;;:19;;;;:::i;:::-;12176:8;;:12;;:33;;;;:::i;:::-;12154:55;;12220:26;12249:51;12298:1;12249:44;12281:11;12249:27;12263:12;;12249:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12220:80;;12311:28;12342:39;12369:11;12342:22;12356:7;;12342:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;12311:70;;12392:26;12421:44;12453:11;12421:27;12435:12;;12421:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12392:73;;12481:21;12539:20;;;;;;;;;;;12531:34;;12573:18;12598:5;12531:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12480:128;;;12627:16;12619:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12690:23;12750:15;;;;;;;;;;;12742:29;;12779:20;12806:5;12742:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12689:127;;;12835:18;12827:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12922:1;12904:15;:19;12901:361;;;12939:6;;;;;;;;;;;:22;;;12969:18;13015:4;13039:15;13073:1;13093::::0;13113:20:::1;;;;;;;;;;;13152:15;12939:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13202:48;13214:18;13234:15;13202:48;;;;;;;:::i;:::-;;;;;;;;12901:361;11464:1805;;;;;;;;;;;;6869:5:::0;6860:6;;:14;;;;;;;;;;;;;;;;;;11426:1843::o;13646:90::-;13689:4;13727:1;13713:10;;:15;;13706:22;;13646:90;:::o;13744:71::-;13795:12;13782:10;:25;;;;13744:71::o;10486:114::-;10548:4;10573:11;:19;10585:6;10573:19;;;;;;;;;;;;;;;;;;;;;;;;;10572:20;10565:27;;10486:114;;;:::o;10841:372::-;10926:7;10946:17;10966:61;11012:14;;10966:41;10977:29;11001:4;;;;;;;;;;;10989:16;;:8;:16;;;10977:11;:29::i;:::-;10966:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;10946:81;;11067:39;11096:9;11067;:24;11085:4;11067:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11040:9;:24;11058:4;11040:24;;;;;;;;;;;;;;;:66;;;;11147:4;11122:42;;11131:6;11122:42;;;11154:9;11122:42;;;;;;:::i;:::-;;;;;;;;11184:21;11195:9;11184:6;:10;;:21;;;;:::i;:::-;11177:28;;;10841: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://b7a56072fc0051ee14d93765d2a3577a3b6c0ea66326528d64f138d5afc24815
Loading