ETH Price: $2,518.89 (+2.81%)

Token

Red Dragon (RED)
 

Overview

Max Total Supply

1,000,000,000 RED

Holders

118

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
423,553.53693079 RED

Value
$0.00
0xe42b17baab3318cf8451cc298a499d1075ccbf19
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
REDDRAGONERC20

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-20
*/

// SPDX-License-Identifier: UNLICENSED
// optimization enabled

pragma solidity 0.8.14;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    event Authorize_Wallet(address Wallet, bool Status);

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

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

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

    function authorize(address adr) external onlyOwner {
        authorizations[adr] = true;
        emit Authorize_Wallet(adr,true);
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
        emit Authorize_Wallet(adr,false);
    }

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

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

    function transferOwnership(address payable _newOwner) external onlyOwner {
        authorizations[owner] = false;
        owner = _newOwner;
        authorizations[owner] = true;
        emit OwnershipTransferred(owner);
    }

    function renounceOwnership() external onlyOwner {
        authorizations[owner] = false;
        owner = address(0);
        emit OwnershipTransferred(owner);
    }

    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract REDDRAGONERC20 is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Red Dragon";
    string public constant symbol = "RED";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 1 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 200;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

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

    uint256 public liquidityFee = 15;
    uint256 public marketingFee = 25;
    uint256 public teamFee = 10;

    uint256 public totalFee = marketingFee + liquidityFee + teamFee;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 200;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 100;

    address public marketingFeeReceiver;
    address public teamFeeReceiver;
    address public deployer;

    IDEXRouter public router;
    address public immutable pair;

    bool public swapEnabled = false;
    uint256 public swapThreshold = totalSupply / 500;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x1F983E4eAbe34658069cA30b0cb161adF9C58253;
        teamFeeReceiver = 0xEf7C68F7e008dd3F13A257B5817caf54300Ffeb4;
        deployer = msg.sender;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;
        isWalletLimitExempt[ZERO] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    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 setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

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

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);


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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[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
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee;

        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - amountToLiquify;

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

         totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountETHLiquidity = (amountETH * liquidityFee) / (totalETHFee * 2);
        uint256 amountETHMarketing = (amountETH * marketingFee) / totalETHFee;
        uint256 amountETHTeam = (amountETH * teamFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(teamFeeReceiver).transfer(amountETHTeam);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                deployer,
                amountToLiquify,
                0,
                0,
                address(this),
                block.timestamp
            );
        }
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function update_fees() internal view {
        require(totalFee.mul(buyMultiplier).div(100) <= 100, "Buy tax cannot be more than 10%");
        require(totalFee.mul(sellMultiplier).div(100) <= 100, "Sell tax cannot be more than 10%");
        require(totalFee.mul(transferMultiplier).div(100) <= 100, "Transfer Tax cannot be more than 10%");
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;

        update_fees();
    }

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _teamFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        teamFee = _teamFee;
        
        totalFee = _liquidityFee + _marketingFee + _teamFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = totalSupply / 100;
        _maxWalletToken = totalSupply / 50;
        sellMultiplier = 100;
        buyMultiplier = 100;
        transferMultiplier = 0;
    }
}

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":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Authorize_Wallet","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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","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":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","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"}]

60c060405260c86009600a62000016919062000b04565b633b9aca0062000027919062000b55565b62000033919062000be5565b60035560646009600a62000048919062000b04565b633b9aca0062000059919062000b55565b62000065919062000be5565b600455600f600a556019600b55600a600c55600c54600a54600b546200008c919062000c1d565b62000098919062000c1d565b600d5560c8600e556064600f55606460105560006014806101000a81548160ff0219169083151502179055506101f46009600a620000d7919062000b04565b633b9aca00620000e8919062000b55565b620000f4919062000be5565b6015553480156200010457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000288919062000ce4565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000ce4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b81526004016200038d92919062000d27565b6020604051808303816000875af1158015620003ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d3919062000ce4565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550731f983e4eabe34658069ca30b0cb161adf9c58253601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ef7c68f7e008dd3f13a257b5817caf54300ffeb4601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a62000888919062000b04565b633b9aca0062000899919062000b55565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200093c919062000b04565b633b9aca006200094d919062000b55565b6040516200095c919062000d65565b60405180910390a362000d82565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009f857808604811115620009d057620009cf6200096a565b5b6001851615620009e05780820291505b8081029050620009f08562000999565b9450620009b0565b94509492505050565b60008262000a13576001905062000ae6565b8162000a23576000905062000ae6565b816001811462000a3c576002811462000a475762000a7d565b600191505062000ae6565b60ff84111562000a5c5762000a5b6200096a565b5b8360020a91508482111562000a765762000a756200096a565b5b5062000ae6565b5060208310610133831016604e8410600b841016171562000ab75782820a90508381111562000ab15762000ab06200096a565b5b62000ae6565b62000ac68484846001620009a6565b9250905081840481111562000ae05762000adf6200096a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b118262000aed565b915062000b1e8362000af7565b925062000b4d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a01565b905092915050565b600062000b628262000aed565b915062000b6f8362000aed565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bab5762000baa6200096a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bf28262000aed565b915062000bff8362000aed565b92508262000c125762000c1162000bb6565b5b828204905092915050565b600062000c2a8262000aed565b915062000c378362000aed565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c6f5762000c6e6200096a565b5b828201905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cac8262000c7f565b9050919050565b62000cbe8162000c9f565b811462000cca57600080fd5b50565b60008151905062000cde8162000cb3565b92915050565b60006020828403121562000cfd5762000cfc62000c7a565b5b600062000d0d8482850162000ccd565b91505092915050565b62000d218162000c9f565b82525050565b600060408201905062000d3e600083018562000d16565b62000d4d602083018462000d16565b9392505050565b62000d5f8162000aed565b82525050565b600060208201905062000d7c600083018462000d54565b92915050565b60805160a05161457862000dc460003960008181611a3d0152818161233501528181612aca01528181613016015261307301526000612c9701526145786000f3fe60806040526004361061028a5760003560e01c8063751039fc1161015a578063bd9ab537116100c1578063e96fada21161007a578063e96fada214610a03578063eddb6b8414610a2e578063f0b37c0414610a57578063f2fde38b14610a80578063f887ea4014610aa9578063fe9fbb8014610ad457610291565b8063bd9ab537146108e1578063c867d60b1461090a578063d5f3948814610947578063d7c94efd14610972578063dd62ed3e1461099d578063df20fd49146109da57610291565b806395d89b411161011357806395d89b41146107d157806398118cb4146107fc578063a4b45c0014610827578063a8aa1b3114610850578063a9059cbb1461087b578063b6a5d7de146108b857610291565b8063751039fc146106bf57806377b54bad146106d657806378109e54146107135780637d1db4a51461073e578063893d20e8146107695780638b42507f1461079457610291565b80632b112e49116101fe578063571ac8b0116101b7578063571ac8b0146105af5780636b67c4df146105ec5780636ce46bc3146106175780636ddd17131461064057806370a082311461066b578063715018a6146106a857610291565b80632b112e491461048b5780632f54bf6e146104b6578063313ce567146104f35780633f4218e01461051e578063402911431461055b5780634be9d8691461058657610291565b8063095ea7b311610250578063095ea7b314610367578063180b0d7e146103a457806318160ddd146103cf5780631da1db5e146103fa5780631df4ccfc1461042357806323b872dd1461044e57610291565b806210868314610296578062bff446146102bf5780630445b667146102e857806306fdde031461031357806309302dc61461033e57610291565b3661029157005b600080fd5b3480156102a257600080fd5b506102bd60048036038101906102b891906134af565b610b11565b005b3480156102cb57600080fd5b506102e660048036038101906102e191906134af565b610c43565b005b3480156102f457600080fd5b506102fd610d75565b60405161030a9190613528565b60405180910390f35b34801561031f57600080fd5b50610328610d7b565b60405161033591906135dc565b60405180910390f35b34801561034a57600080fd5b506103656004803603810190610360919061362a565b610db4565b005b34801561037357600080fd5b5061038e600480360381019061038991906136b5565b610e3a565b60405161039b9190613704565b60405180910390f35b3480156103b057600080fd5b506103b9610f2c565b6040516103c69190613528565b60405180910390f35b3480156103db57600080fd5b506103e4610f32565b6040516103f19190613528565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c919061362a565b610f52565b005b34801561042f57600080fd5b50610438611007565b6040516104459190613528565b60405180910390f35b34801561045a57600080fd5b506104756004803603810190610470919061371f565b61100d565b6040516104829190613704565b60405180910390f35b34801561049757600080fd5b506104a061120d565b6040516104ad9190613528565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613772565b6112c7565b6040516104ea9190613704565b60405180910390f35b3480156104ff57600080fd5b50610508611320565b60405161051591906137bb565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613772565b611325565b6040516105529190613704565b60405180910390f35b34801561056757600080fd5b50610570611345565b60405161057d91906137e5565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906134af565b61136b565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190613772565b61149d565b6040516105e39190613704565b60405180910390f35b3480156105f857600080fd5b506106016114d0565b60405161060e9190613528565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190613800565b6114d6565b005b34801561064c57600080fd5b50610655611540565b6040516106629190613704565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613772565b611551565b60405161069f9190613528565b60405180910390f35b3480156106b457600080fd5b506106bd611569565b005b3480156106cb57600080fd5b506106d46116c4565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906136b5565b611784565b60405161070a9190613704565b60405180910390f35b34801561071f57600080fd5b506107286118d9565b6040516107359190613528565b60405180910390f35b34801561074a57600080fd5b506107536118df565b6040516107609190613528565b60405180910390f35b34801561077557600080fd5b5061077e6118e5565b60405161078b91906137e5565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190613772565b61190e565b6040516107c89190613704565b60405180910390f35b3480156107dd57600080fd5b506107e661192e565b6040516107f391906135dc565b60405180910390f35b34801561080857600080fd5b50610811611967565b60405161081e9190613528565b60405180910390f35b34801561083357600080fd5b5061084e60048036038101906108499190613853565b61196d565b005b34801561085c57600080fd5b50610865611a3b565b60405161087291906137e5565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d91906136b5565b611a5f565b6040516108af9190613704565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da9190613772565b611a74565b005b3480156108ed57600080fd5b506109086004803603810190610903919061362a565b611b51565b005b34801561091657600080fd5b50610931600480360381019061092c9190613772565b611bd7565b60405161093e9190613704565b60405180910390f35b34801561095357600080fd5b5061095c611bf7565b60405161096991906137e5565b60405180910390f35b34801561097e57600080fd5b50610987611c1d565b6040516109949190613528565b60405180910390f35b3480156109a957600080fd5b506109c460048036038101906109bf9190613853565b611c23565b6040516109d19190613528565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190613893565b611caa565b005b348015610a0f57600080fd5b50610a18611d3d565b604051610a2591906137e5565b60405180910390f35b348015610a3a57600080fd5b50610a556004803603810190610a509190613800565b611d63565b005b348015610a6357600080fd5b50610a7e6004803603810190610a799190613772565b611dea565b005b348015610a8c57600080fd5b50610aa76004803603810190610aa29190613911565b611f55565b005b348015610ab557600080fd5b50610abe612129565b604051610acb919061399d565b60405180910390f35b348015610ae057600080fd5b50610afb6004803603810190610af69190613772565b61214f565b604051610b089190613704565b60405180910390f35b610b1a3361214f565b610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5090613a04565b60405180910390fd5b6101f58383905010610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9790613a96565b60405180910390fd5b60005b83839050811015610c3d578160096000868685818110610bc657610bc5613ab6565b5b9050602002016020810190610bdb9190613772565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c3690613b14565b9050610ba3565b50505050565b610c4c3361214f565b610c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8290613a04565b60405180910390fd5b6101f58383905010610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990613a96565b60405180910390fd5b60005b83839050811015610d6f578160076000868685818110610cf857610cf7613ab6565b5b9050602002016020810190610d0d9190613772565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d6890613b14565b9050610cd5565b50505050565b60155481565b6040518060400160405280600a81526020017f52656420447261676f6e0000000000000000000000000000000000000000000081525081565b610dbd336112c7565b610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390613ba8565b60405180910390fd5b6103e8816009600a610e0e9190613cfb565b633b9aca00610e1d9190613d46565b610e279190613d46565b610e319190613dcf565b60048190555050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f1a9190613528565b60405180910390a36001905092915050565b6103e881565b6009600a610f409190613cfb565b633b9aca00610f4f9190613d46565b81565b610f5b336112c7565b610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613ba8565b60405180910390fd5b6000479050600060648383610faf9190613d46565b610fb99190613dcf565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611001573d6000803e3d6000fd5b50505050565b600d5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111f957611178826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a59092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611204848484612209565b90509392505050565b6000600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a61129f9190613cfb565b633b9aca006112ae9190613d46565b6112b89190613e00565b6112c29190613e00565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60076020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113743361214f565b6113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90613a04565b60405180910390fd5b6101f583839050106113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190613a96565b60405180910390fd5b60005b838390508110156114975781600860008686858181106114205761141f613ab6565b5b90506020020160208101906114359190613772565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061149090613b14565b90506113fd565b50505050565b60006114c9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b9050919050565b600b5481565b6114df3361214f565b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590613a04565b60405180910390fd5b81600e8190555082600f819055508060108190555061153b6127aa565b505050565b60148054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b611572336112c7565b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613ba8565b60405180910390fd5b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116ba91906137e5565b60405180910390a1565b6116cd336112c7565b61170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613ba8565b60405180910390fd5b60646009600a61171c9190613cfb565b633b9aca0061172b9190613d46565b6117359190613dcf565b60038190555060326009600a61174b9190613cfb565b633b9aca0061175a9190613d46565b6117649190613dcf565b6004819055506064600e819055506064600f819055506000601081905550565b600061178f336112c7565b6117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c590613ba8565b60405180910390fd5b60008203611853578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161180f91906137e5565b602060405180830381865afa15801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190613e49565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161188e929190613e76565b6020604051808303816000875af11580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d19190613eb4565b905092915050565b60045481565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600381526020017f524544000000000000000000000000000000000000000000000000000000000081525081565b600a5481565b611976336112c7565b6119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613ba8565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611a6c338484612209565b905092915050565b611a7d336112c7565b611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613ba8565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505816001604051611b46929190613ee1565b60405180910390a150565b611b5a336112c7565b611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090613ba8565b60405180910390fd5b6103e8816009600a611bab9190613cfb565b633b9aca00611bba9190613d46565b611bc49190613d46565b611bce9190613dcf565b60038190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cb3336112c7565b611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce990613ba8565b60405180910390fd5b816014806101000a81548160ff021916908315150217905550806009600a611d1a9190613cfb565b633b9aca00611d299190613d46565b611d339190613dcf565b6015819055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d6c336112c7565b611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290613ba8565b60405180910390fd5b82600a8190555081600b8190555080600c81905550808284611dcd9190613f0a565b611dd79190613f0a565b600d81905550611de56127aa565b505050565b611df3336112c7565b611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613ba8565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb790613fac565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505816000604051611f4a929190613ee1565b60405180910390a150565b611f5e336112c7565b611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9490613ba8565b60405180910390fd5b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161211e91906137e5565b60405180910390a150565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008383111582906121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e491906135dc565b60405180910390fd5b50600083856121fc9190613e00565b9050809150509392505050565b6000601660009054906101000a900460ff16156122325761222b8484846128f3565b90506127a3565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d65750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561232c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561238457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124195760045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d79190613f0a565b1115612418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240f90614018565b60405180910390fd5b5b600354821115806124735750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c75750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fd90614084565b60405180910390fd5b61250e612ac6565b1561251c5761251b612b99565b5b6125a5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a59092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061268b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61269f5761269a858486612fee565b6126a1565b825b90506126f581600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323990919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127959190613528565b60405180910390a360019150505b9392505050565b60646127d660646127c8600f54600d5461329790919063ffffffff16565b61331190919063ffffffff16565b1115612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e906140f0565b60405180910390fd5b60646128436064612835600e54600d5461329790919063ffffffff16565b61331190919063ffffffff16565b1115612884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287b9061415c565b60405180910390fd5b60646128b060646128a2601054600d5461329790919063ffffffff16565b61331190919063ffffffff16565b11156128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e8906141ee565b60405180910390fd5b565b600061297e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a59092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a1382600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab39190613528565b60405180910390a3600190509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b315750601660009054906101000a900460ff16155b8015612b47575060148054906101000a900460ff165b8015612b945750601554600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601660006101000a81548160ff0219169083151502179055506000600d5490506000600282612bca9190613d46565b600a54601554612bda9190613d46565b612be49190613dcf565b9050600081601554612bf69190613e00565b90506000600267ffffffffffffffff811115612c1557612c1461420e565b5b604051908082528060200260200182016040528015612c435781602001602082028036833780820191505090505b5090503081600081518110612c5b57612c5a613ab6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612cca57612cc9613ab6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d68959493929190614336565b600060405180830381600087803b158015612d8257600080fd5b505af1158015612d96573d6000803e3d6000fd5b5050505060004790506002600a54612dae9190613dcf565b85612db99190613e00565b94506000600286612dca9190613d46565b600a5483612dd89190613d46565b612de29190613dcf565b9050600086600b5484612df59190613d46565b612dff9190613dcf565b9050600087600c5485612e129190613d46565b612e1c9190613dcf565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e86573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612eef573d6000803e3d6000fd5b506000871115612fc957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60008030426040518863ffffffff1660e01b8152600401612f8296959493929190614390565b60606040518083038185885af1158015612fa0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fc591906143f1565b5050505b50505050505050506000601660006101000a81548160ff021916908315150217905550565b60008083148061300057506000600d54145b1561300d57829050613232565b600060105490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361307157600e5490506130cb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130ca57600f5490505b5b600061311460646103e86130df9190613d46565b613106846130f8600d548a61329790919063ffffffff16565b61329790919063ffffffff16565b61331190919063ffffffff16565b9050600081111561321a5761317181600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132119190613528565b60405180910390a35b61322d818661335b90919063ffffffff16565b925050505b9392505050565b60008082846132489190613f0a565b90508381101561328d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328490614490565b60405180910390fd5b8091505092915050565b60008083036132a9576000905061330b565b600082846132b79190613d46565b90508284826132c69190613dcf565b14613306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fd90614522565b60405180910390fd5b809150505b92915050565b600061335383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133a5565b905092915050565b600061339d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121a5565b905092915050565b600080831182906133ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e391906135dc565b60405180910390fd5b50600083856133fb9190613dcf565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261343757613436613412565b5b8235905067ffffffffffffffff81111561345457613453613417565b5b6020830191508360208202830111156134705761346f61341c565b5b9250929050565b60008115159050919050565b61348c81613477565b811461349757600080fd5b50565b6000813590506134a981613483565b92915050565b6000806000604084860312156134c8576134c7613408565b5b600084013567ffffffffffffffff8111156134e6576134e561340d565b5b6134f286828701613421565b935093505060206135058682870161349a565b9150509250925092565b6000819050919050565b6135228161350f565b82525050565b600060208201905061353d6000830184613519565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357d578082015181840152602081019050613562565b8381111561358c576000848401525b50505050565b6000601f19601f8301169050919050565b60006135ae82613543565b6135b8818561354e565b93506135c881856020860161355f565b6135d181613592565b840191505092915050565b600060208201905081810360008301526135f681846135a3565b905092915050565b6136078161350f565b811461361257600080fd5b50565b600081359050613624816135fe565b92915050565b6000602082840312156136405761363f613408565b5b600061364e84828501613615565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061368282613657565b9050919050565b61369281613677565b811461369d57600080fd5b50565b6000813590506136af81613689565b92915050565b600080604083850312156136cc576136cb613408565b5b60006136da858286016136a0565b92505060206136eb85828601613615565b9150509250929050565b6136fe81613477565b82525050565b600060208201905061371960008301846136f5565b92915050565b60008060006060848603121561373857613737613408565b5b6000613746868287016136a0565b9350506020613757868287016136a0565b925050604061376886828701613615565b9150509250925092565b60006020828403121561378857613787613408565b5b6000613796848285016136a0565b91505092915050565b600060ff82169050919050565b6137b58161379f565b82525050565b60006020820190506137d060008301846137ac565b92915050565b6137df81613677565b82525050565b60006020820190506137fa60008301846137d6565b92915050565b60008060006060848603121561381957613818613408565b5b600061382786828701613615565b935050602061383886828701613615565b925050604061384986828701613615565b9150509250925092565b6000806040838503121561386a57613869613408565b5b6000613878858286016136a0565b9250506020613889858286016136a0565b9150509250929050565b600080604083850312156138aa576138a9613408565b5b60006138b88582860161349a565b92505060206138c985828601613615565b9150509250929050565b60006138de82613657565b9050919050565b6138ee816138d3565b81146138f957600080fd5b50565b60008135905061390b816138e5565b92915050565b60006020828403121561392757613926613408565b5b6000613935848285016138fc565b91505092915050565b6000819050919050565b600061396361395e61395984613657565b61393e565b613657565b9050919050565b600061397582613948565b9050919050565b60006139878261396a565b9050919050565b6139978161397c565b82525050565b60006020820190506139b2600083018461398e565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b60006139ee600b8361354e565b91506139f9826139b8565b602082019050919050565b60006020820190508181036000830152613a1d816139e1565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613a8060258361354e565b9150613a8b82613a24565b604082019050919050565b60006020820190508181036000830152613aaf81613a73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b1f8261350f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b5157613b50613ae5565b5b600182019050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613b9260068361354e565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613c1f57808604811115613bfb57613bfa613ae5565b5b6001851615613c0a5780820291505b8081029050613c1885613bc8565b9450613bdf565b94509492505050565b600082613c385760019050613cf4565b81613c465760009050613cf4565b8160018114613c5c5760028114613c6657613c95565b6001915050613cf4565b60ff841115613c7857613c77613ae5565b5b8360020a915084821115613c8f57613c8e613ae5565b5b50613cf4565b5060208310610133831016604e8410600b8410161715613cca5782820a905083811115613cc557613cc4613ae5565b5b613cf4565b613cd78484846001613bd5565b92509050818404811115613cee57613ced613ae5565b5b81810290505b9392505050565b6000613d068261350f565b9150613d118361379f565b9250613d3e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c28565b905092915050565b6000613d518261350f565b9150613d5c8361350f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d9557613d94613ae5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613dda8261350f565b9150613de58361350f565b925082613df557613df4613da0565b5b828204905092915050565b6000613e0b8261350f565b9150613e168361350f565b925082821015613e2957613e28613ae5565b5b828203905092915050565b600081519050613e43816135fe565b92915050565b600060208284031215613e5f57613e5e613408565b5b6000613e6d84828501613e34565b91505092915050565b6000604082019050613e8b60008301856137d6565b613e986020830184613519565b9392505050565b600081519050613eae81613483565b92915050565b600060208284031215613eca57613ec9613408565b5b6000613ed884828501613e9f565b91505092915050565b6000604082019050613ef660008301856137d6565b613f0360208301846136f5565b9392505050565b6000613f158261350f565b9150613f208361350f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f5557613f54613ae5565b5b828201905092915050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b6000613f96601a8361354e565b9150613fa182613f60565b602082019050919050565b60006020820190508181036000830152613fc581613f89565b9050919050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b600061400260188361354e565b915061400d82613fcc565b602082019050919050565b6000602082019050818103600083015261403181613ff5565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b600061406e60158361354e565b915061407982614038565b602082019050919050565b6000602082019050818103600083015261409d81614061565b9050919050565b7f427579207461782063616e6e6f74206265206d6f7265207468616e2031302500600082015250565b60006140da601f8361354e565b91506140e5826140a4565b602082019050919050565b60006020820190508181036000830152614109816140cd565b9050919050565b7f53656c6c207461782063616e6e6f74206265206d6f7265207468616e20313025600082015250565b600061414660208361354e565b915061415182614110565b602082019050919050565b6000602082019050818103600083015261417581614139565b9050919050565b7f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60008201527f2031302500000000000000000000000000000000000000000000000000000000602082015250565b60006141d860248361354e565b91506141e38261417c565b604082019050919050565b60006020820190508181036000830152614207816141cb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061426261425d6142588461423d565b61393e565b61350f565b9050919050565b61427281614247565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142ad81613677565b82525050565b60006142bf83836142a4565b60208301905092915050565b6000602082019050919050565b60006142e382614278565b6142ed8185614283565b93506142f883614294565b8060005b8381101561432957815161431088826142b3565b975061431b836142cb565b9250506001810190506142fc565b5085935050505092915050565b600060a08201905061434b6000830188613519565b6143586020830187614269565b818103604083015261436a81866142d8565b905061437960608301856137d6565b6143866080830184613519565b9695505050505050565b600060c0820190506143a560008301896137d6565b6143b26020830188613519565b6143bf6040830187614269565b6143cc6060830186614269565b6143d960808301856137d6565b6143e660a0830184613519565b979650505050505050565b60008060006060848603121561440a57614409613408565b5b600061441886828701613e34565b935050602061442986828701613e34565b925050604061443a86828701613e34565b9150509250925092565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061447a601b8361354e565b915061448582614444565b602082019050919050565b600060208201905081810360008301526144a98161446d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061450c60218361354e565b9150614517826144b0565b604082019050919050565b6000602082019050818103600083015261453b816144ff565b905091905056fea26469706673582212207a4c163a32d88a2dcc601f0356d808e1f8d153a07704d822f5edafb179a6c5f464736f6c634300080e0033

Deployed Bytecode

0x60806040526004361061028a5760003560e01c8063751039fc1161015a578063bd9ab537116100c1578063e96fada21161007a578063e96fada214610a03578063eddb6b8414610a2e578063f0b37c0414610a57578063f2fde38b14610a80578063f887ea4014610aa9578063fe9fbb8014610ad457610291565b8063bd9ab537146108e1578063c867d60b1461090a578063d5f3948814610947578063d7c94efd14610972578063dd62ed3e1461099d578063df20fd49146109da57610291565b806395d89b411161011357806395d89b41146107d157806398118cb4146107fc578063a4b45c0014610827578063a8aa1b3114610850578063a9059cbb1461087b578063b6a5d7de146108b857610291565b8063751039fc146106bf57806377b54bad146106d657806378109e54146107135780637d1db4a51461073e578063893d20e8146107695780638b42507f1461079457610291565b80632b112e49116101fe578063571ac8b0116101b7578063571ac8b0146105af5780636b67c4df146105ec5780636ce46bc3146106175780636ddd17131461064057806370a082311461066b578063715018a6146106a857610291565b80632b112e491461048b5780632f54bf6e146104b6578063313ce567146104f35780633f4218e01461051e578063402911431461055b5780634be9d8691461058657610291565b8063095ea7b311610250578063095ea7b314610367578063180b0d7e146103a457806318160ddd146103cf5780631da1db5e146103fa5780631df4ccfc1461042357806323b872dd1461044e57610291565b806210868314610296578062bff446146102bf5780630445b667146102e857806306fdde031461031357806309302dc61461033e57610291565b3661029157005b600080fd5b3480156102a257600080fd5b506102bd60048036038101906102b891906134af565b610b11565b005b3480156102cb57600080fd5b506102e660048036038101906102e191906134af565b610c43565b005b3480156102f457600080fd5b506102fd610d75565b60405161030a9190613528565b60405180910390f35b34801561031f57600080fd5b50610328610d7b565b60405161033591906135dc565b60405180910390f35b34801561034a57600080fd5b506103656004803603810190610360919061362a565b610db4565b005b34801561037357600080fd5b5061038e600480360381019061038991906136b5565b610e3a565b60405161039b9190613704565b60405180910390f35b3480156103b057600080fd5b506103b9610f2c565b6040516103c69190613528565b60405180910390f35b3480156103db57600080fd5b506103e4610f32565b6040516103f19190613528565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c919061362a565b610f52565b005b34801561042f57600080fd5b50610438611007565b6040516104459190613528565b60405180910390f35b34801561045a57600080fd5b506104756004803603810190610470919061371f565b61100d565b6040516104829190613704565b60405180910390f35b34801561049757600080fd5b506104a061120d565b6040516104ad9190613528565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613772565b6112c7565b6040516104ea9190613704565b60405180910390f35b3480156104ff57600080fd5b50610508611320565b60405161051591906137bb565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613772565b611325565b6040516105529190613704565b60405180910390f35b34801561056757600080fd5b50610570611345565b60405161057d91906137e5565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906134af565b61136b565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190613772565b61149d565b6040516105e39190613704565b60405180910390f35b3480156105f857600080fd5b506106016114d0565b60405161060e9190613528565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190613800565b6114d6565b005b34801561064c57600080fd5b50610655611540565b6040516106629190613704565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613772565b611551565b60405161069f9190613528565b60405180910390f35b3480156106b457600080fd5b506106bd611569565b005b3480156106cb57600080fd5b506106d46116c4565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906136b5565b611784565b60405161070a9190613704565b60405180910390f35b34801561071f57600080fd5b506107286118d9565b6040516107359190613528565b60405180910390f35b34801561074a57600080fd5b506107536118df565b6040516107609190613528565b60405180910390f35b34801561077557600080fd5b5061077e6118e5565b60405161078b91906137e5565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190613772565b61190e565b6040516107c89190613704565b60405180910390f35b3480156107dd57600080fd5b506107e661192e565b6040516107f391906135dc565b60405180910390f35b34801561080857600080fd5b50610811611967565b60405161081e9190613528565b60405180910390f35b34801561083357600080fd5b5061084e60048036038101906108499190613853565b61196d565b005b34801561085c57600080fd5b50610865611a3b565b60405161087291906137e5565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d91906136b5565b611a5f565b6040516108af9190613704565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da9190613772565b611a74565b005b3480156108ed57600080fd5b506109086004803603810190610903919061362a565b611b51565b005b34801561091657600080fd5b50610931600480360381019061092c9190613772565b611bd7565b60405161093e9190613704565b60405180910390f35b34801561095357600080fd5b5061095c611bf7565b60405161096991906137e5565b60405180910390f35b34801561097e57600080fd5b50610987611c1d565b6040516109949190613528565b60405180910390f35b3480156109a957600080fd5b506109c460048036038101906109bf9190613853565b611c23565b6040516109d19190613528565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc9190613893565b611caa565b005b348015610a0f57600080fd5b50610a18611d3d565b604051610a2591906137e5565b60405180910390f35b348015610a3a57600080fd5b50610a556004803603810190610a509190613800565b611d63565b005b348015610a6357600080fd5b50610a7e6004803603810190610a799190613772565b611dea565b005b348015610a8c57600080fd5b50610aa76004803603810190610aa29190613911565b611f55565b005b348015610ab557600080fd5b50610abe612129565b604051610acb919061399d565b60405180910390f35b348015610ae057600080fd5b50610afb6004803603810190610af69190613772565b61214f565b604051610b089190613704565b60405180910390f35b610b1a3361214f565b610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5090613a04565b60405180910390fd5b6101f58383905010610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9790613a96565b60405180910390fd5b60005b83839050811015610c3d578160096000868685818110610bc657610bc5613ab6565b5b9050602002016020810190610bdb9190613772565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c3690613b14565b9050610ba3565b50505050565b610c4c3361214f565b610c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8290613a04565b60405180910390fd5b6101f58383905010610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990613a96565b60405180910390fd5b60005b83839050811015610d6f578160076000868685818110610cf857610cf7613ab6565b5b9050602002016020810190610d0d9190613772565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d6890613b14565b9050610cd5565b50505050565b60155481565b6040518060400160405280600a81526020017f52656420447261676f6e0000000000000000000000000000000000000000000081525081565b610dbd336112c7565b610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390613ba8565b60405180910390fd5b6103e8816009600a610e0e9190613cfb565b633b9aca00610e1d9190613d46565b610e279190613d46565b610e319190613dcf565b60048190555050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f1a9190613528565b60405180910390a36001905092915050565b6103e881565b6009600a610f409190613cfb565b633b9aca00610f4f9190613d46565b81565b610f5b336112c7565b610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613ba8565b60405180910390fd5b6000479050600060648383610faf9190613d46565b610fb99190613dcf565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611001573d6000803e3d6000fd5b50505050565b600d5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111f957611178826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a59092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611204848484612209565b90509392505050565b6000600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a61129f9190613cfb565b633b9aca006112ae9190613d46565b6112b89190613e00565b6112c29190613e00565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60076020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113743361214f565b6113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90613a04565b60405180910390fd5b6101f583839050106113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190613a96565b60405180910390fd5b60005b838390508110156114975781600860008686858181106114205761141f613ab6565b5b90506020020160208101906114359190613772565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061149090613b14565b90506113fd565b50505050565b60006114c9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b9050919050565b600b5481565b6114df3361214f565b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590613a04565b60405180910390fd5b81600e8190555082600f819055508060108190555061153b6127aa565b505050565b60148054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b611572336112c7565b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613ba8565b60405180910390fd5b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116ba91906137e5565b60405180910390a1565b6116cd336112c7565b61170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613ba8565b60405180910390fd5b60646009600a61171c9190613cfb565b633b9aca0061172b9190613d46565b6117359190613dcf565b60038190555060326009600a61174b9190613cfb565b633b9aca0061175a9190613d46565b6117649190613dcf565b6004819055506064600e819055506064600f819055506000601081905550565b600061178f336112c7565b6117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c590613ba8565b60405180910390fd5b60008203611853578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161180f91906137e5565b602060405180830381865afa15801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190613e49565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161188e929190613e76565b6020604051808303816000875af11580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d19190613eb4565b905092915050565b60045481565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600381526020017f524544000000000000000000000000000000000000000000000000000000000081525081565b600a5481565b611976336112c7565b6119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613ba8565b60405180910390fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b7f000000000000000000000000539a3a617c12190019d5b7cc8b73f0701984603c81565b6000611a6c338484612209565b905092915050565b611a7d336112c7565b611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613ba8565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505816001604051611b46929190613ee1565b60405180910390a150565b611b5a336112c7565b611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090613ba8565b60405180910390fd5b6103e8816009600a611bab9190613cfb565b633b9aca00611bba9190613d46565b611bc49190613d46565b611bce9190613dcf565b60038190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cb3336112c7565b611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce990613ba8565b60405180910390fd5b816014806101000a81548160ff021916908315150217905550806009600a611d1a9190613cfb565b633b9aca00611d299190613d46565b611d339190613dcf565b6015819055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d6c336112c7565b611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290613ba8565b60405180910390fd5b82600a8190555081600b8190555080600c81905550808284611dcd9190613f0a565b611dd79190613f0a565b600d81905550611de56127aa565b505050565b611df3336112c7565b611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613ba8565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb790613fac565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505816000604051611f4a929190613ee1565b60405180910390a150565b611f5e336112c7565b611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9490613ba8565b60405180910390fd5b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161211e91906137e5565b60405180910390a150565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008383111582906121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e491906135dc565b60405180910390fd5b50600083856121fc9190613e00565b9050809150509392505050565b6000601660009054906101000a900460ff16156122325761222b8484846128f3565b90506127a3565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d65750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561232c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561238457507f000000000000000000000000539a3a617c12190019d5b7cc8b73f0701984603c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124195760045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d79190613f0a565b1115612418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240f90614018565b60405180910390fd5b5b600354821115806124735750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c75750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fd90614084565b60405180910390fd5b61250e612ac6565b1561251c5761251b612b99565b5b6125a5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a59092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061268b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61269f5761269a858486612fee565b6126a1565b825b90506126f581600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323990919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127959190613528565b60405180910390a360019150505b9392505050565b60646127d660646127c8600f54600d5461329790919063ffffffff16565b61331190919063ffffffff16565b1115612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e906140f0565b60405180910390fd5b60646128436064612835600e54600d5461329790919063ffffffff16565b61331190919063ffffffff16565b1115612884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287b9061415c565b60405180910390fd5b60646128b060646128a2601054600d5461329790919063ffffffff16565b61331190919063ffffffff16565b11156128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e8906141ee565b60405180910390fd5b565b600061297e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a59092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a1382600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab39190613528565b60405180910390a3600190509392505050565b60007f000000000000000000000000539a3a617c12190019d5b7cc8b73f0701984603c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b315750601660009054906101000a900460ff16155b8015612b47575060148054906101000a900460ff165b8015612b945750601554600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601660006101000a81548160ff0219169083151502179055506000600d5490506000600282612bca9190613d46565b600a54601554612bda9190613d46565b612be49190613dcf565b9050600081601554612bf69190613e00565b90506000600267ffffffffffffffff811115612c1557612c1461420e565b5b604051908082528060200260200182016040528015612c435781602001602082028036833780820191505090505b5090503081600081518110612c5b57612c5a613ab6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612cca57612cc9613ab6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d68959493929190614336565b600060405180830381600087803b158015612d8257600080fd5b505af1158015612d96573d6000803e3d6000fd5b5050505060004790506002600a54612dae9190613dcf565b85612db99190613e00565b94506000600286612dca9190613d46565b600a5483612dd89190613d46565b612de29190613dcf565b9050600086600b5484612df59190613d46565b612dff9190613dcf565b9050600087600c5485612e129190613d46565b612e1c9190613dcf565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e86573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612eef573d6000803e3d6000fd5b506000871115612fc957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60008030426040518863ffffffff1660e01b8152600401612f8296959493929190614390565b60606040518083038185885af1158015612fa0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fc591906143f1565b5050505b50505050505050506000601660006101000a81548160ff021916908315150217905550565b60008083148061300057506000600d54145b1561300d57829050613232565b600060105490507f000000000000000000000000539a3a617c12190019d5b7cc8b73f0701984603c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361307157600e5490506130cb565b7f000000000000000000000000539a3a617c12190019d5b7cc8b73f0701984603c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130ca57600f5490505b5b600061311460646103e86130df9190613d46565b613106846130f8600d548a61329790919063ffffffff16565b61329790919063ffffffff16565b61331190919063ffffffff16565b9050600081111561321a5761317181600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132119190613528565b60405180910390a35b61322d818661335b90919063ffffffff16565b925050505b9392505050565b60008082846132489190613f0a565b90508381101561328d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328490614490565b60405180910390fd5b8091505092915050565b60008083036132a9576000905061330b565b600082846132b79190613d46565b90508284826132c69190613dcf565b14613306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fd90614522565b60405180910390fd5b809150505b92915050565b600061335383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133a5565b905092915050565b600061339d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121a5565b905092915050565b600080831182906133ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e391906135dc565b60405180910390fd5b50600083856133fb9190613dcf565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261343757613436613412565b5b8235905067ffffffffffffffff81111561345457613453613417565b5b6020830191508360208202830111156134705761346f61341c565b5b9250929050565b60008115159050919050565b61348c81613477565b811461349757600080fd5b50565b6000813590506134a981613483565b92915050565b6000806000604084860312156134c8576134c7613408565b5b600084013567ffffffffffffffff8111156134e6576134e561340d565b5b6134f286828701613421565b935093505060206135058682870161349a565b9150509250925092565b6000819050919050565b6135228161350f565b82525050565b600060208201905061353d6000830184613519565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357d578082015181840152602081019050613562565b8381111561358c576000848401525b50505050565b6000601f19601f8301169050919050565b60006135ae82613543565b6135b8818561354e565b93506135c881856020860161355f565b6135d181613592565b840191505092915050565b600060208201905081810360008301526135f681846135a3565b905092915050565b6136078161350f565b811461361257600080fd5b50565b600081359050613624816135fe565b92915050565b6000602082840312156136405761363f613408565b5b600061364e84828501613615565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061368282613657565b9050919050565b61369281613677565b811461369d57600080fd5b50565b6000813590506136af81613689565b92915050565b600080604083850312156136cc576136cb613408565b5b60006136da858286016136a0565b92505060206136eb85828601613615565b9150509250929050565b6136fe81613477565b82525050565b600060208201905061371960008301846136f5565b92915050565b60008060006060848603121561373857613737613408565b5b6000613746868287016136a0565b9350506020613757868287016136a0565b925050604061376886828701613615565b9150509250925092565b60006020828403121561378857613787613408565b5b6000613796848285016136a0565b91505092915050565b600060ff82169050919050565b6137b58161379f565b82525050565b60006020820190506137d060008301846137ac565b92915050565b6137df81613677565b82525050565b60006020820190506137fa60008301846137d6565b92915050565b60008060006060848603121561381957613818613408565b5b600061382786828701613615565b935050602061383886828701613615565b925050604061384986828701613615565b9150509250925092565b6000806040838503121561386a57613869613408565b5b6000613878858286016136a0565b9250506020613889858286016136a0565b9150509250929050565b600080604083850312156138aa576138a9613408565b5b60006138b88582860161349a565b92505060206138c985828601613615565b9150509250929050565b60006138de82613657565b9050919050565b6138ee816138d3565b81146138f957600080fd5b50565b60008135905061390b816138e5565b92915050565b60006020828403121561392757613926613408565b5b6000613935848285016138fc565b91505092915050565b6000819050919050565b600061396361395e61395984613657565b61393e565b613657565b9050919050565b600061397582613948565b9050919050565b60006139878261396a565b9050919050565b6139978161397c565b82525050565b60006020820190506139b2600083018461398e565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b60006139ee600b8361354e565b91506139f9826139b8565b602082019050919050565b60006020820190508181036000830152613a1d816139e1565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613a8060258361354e565b9150613a8b82613a24565b604082019050919050565b60006020820190508181036000830152613aaf81613a73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b1f8261350f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b5157613b50613ae5565b5b600182019050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613b9260068361354e565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613c1f57808604811115613bfb57613bfa613ae5565b5b6001851615613c0a5780820291505b8081029050613c1885613bc8565b9450613bdf565b94509492505050565b600082613c385760019050613cf4565b81613c465760009050613cf4565b8160018114613c5c5760028114613c6657613c95565b6001915050613cf4565b60ff841115613c7857613c77613ae5565b5b8360020a915084821115613c8f57613c8e613ae5565b5b50613cf4565b5060208310610133831016604e8410600b8410161715613cca5782820a905083811115613cc557613cc4613ae5565b5b613cf4565b613cd78484846001613bd5565b92509050818404811115613cee57613ced613ae5565b5b81810290505b9392505050565b6000613d068261350f565b9150613d118361379f565b9250613d3e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c28565b905092915050565b6000613d518261350f565b9150613d5c8361350f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d9557613d94613ae5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613dda8261350f565b9150613de58361350f565b925082613df557613df4613da0565b5b828204905092915050565b6000613e0b8261350f565b9150613e168361350f565b925082821015613e2957613e28613ae5565b5b828203905092915050565b600081519050613e43816135fe565b92915050565b600060208284031215613e5f57613e5e613408565b5b6000613e6d84828501613e34565b91505092915050565b6000604082019050613e8b60008301856137d6565b613e986020830184613519565b9392505050565b600081519050613eae81613483565b92915050565b600060208284031215613eca57613ec9613408565b5b6000613ed884828501613e9f565b91505092915050565b6000604082019050613ef660008301856137d6565b613f0360208301846136f5565b9392505050565b6000613f158261350f565b9150613f208361350f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f5557613f54613ae5565b5b828201905092915050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b6000613f96601a8361354e565b9150613fa182613f60565b602082019050919050565b60006020820190508181036000830152613fc581613f89565b9050919050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b600061400260188361354e565b915061400d82613fcc565b602082019050919050565b6000602082019050818103600083015261403181613ff5565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b600061406e60158361354e565b915061407982614038565b602082019050919050565b6000602082019050818103600083015261409d81614061565b9050919050565b7f427579207461782063616e6e6f74206265206d6f7265207468616e2031302500600082015250565b60006140da601f8361354e565b91506140e5826140a4565b602082019050919050565b60006020820190508181036000830152614109816140cd565b9050919050565b7f53656c6c207461782063616e6e6f74206265206d6f7265207468616e20313025600082015250565b600061414660208361354e565b915061415182614110565b602082019050919050565b6000602082019050818103600083015261417581614139565b9050919050565b7f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60008201527f2031302500000000000000000000000000000000000000000000000000000000602082015250565b60006141d860248361354e565b91506141e38261417c565b604082019050919050565b60006020820190508181036000830152614207816141cb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061426261425d6142588461423d565b61393e565b61350f565b9050919050565b61427281614247565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142ad81613677565b82525050565b60006142bf83836142a4565b60208301905092915050565b6000602082019050919050565b60006142e382614278565b6142ed8185614283565b93506142f883614294565b8060005b8381101561432957815161431088826142b3565b975061431b836142cb565b9250506001810190506142fc565b5085935050505092915050565b600060a08201905061434b6000830188613519565b6143586020830187614269565b818103604083015261436a81866142d8565b905061437960608301856137d6565b6143866080830184613519565b9695505050505050565b600060c0820190506143a560008301896137d6565b6143b26020830188613519565b6143bf6040830187614269565b6143cc6060830186614269565b6143d960808301856137d6565b6143e660a0830184613519565b979650505050505050565b60008060006060848603121561440a57614409613408565b5b600061441886828701613e34565b935050602061442986828701613e34565b925050604061443a86828701613e34565b9150509250925092565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061447a601b8361354e565b915061448582614444565b602082019050919050565b600060208201905081810360008301526144a98161446d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061450c60218361354e565b9150614517826144b0565b604082019050919050565b6000602082019050818103600083015261453b816144ff565b905091905056fea26469706673582212207a4c163a32d88a2dcc601f0356d808e1f8d153a07704d822f5edafb179a6c5f464736f6c634300080e0033

Deployed Bytecode Sourcemap

4222:10859:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13042:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12428:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5655:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4480:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7907:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7011:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5273:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4616:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10524:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5203:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7529:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14700:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2780:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4573:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4922:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5479:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12731:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7235:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5128:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13720:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5617:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4800:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3245:168;;;;;;;;;;;;;:::i;:::-;;14845:233;;;;;;;;;;;;;:::i;:::-;;10791:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4741:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4687:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6786:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4973:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4529:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5089:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14292:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5579:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7365:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2422:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8087:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5028:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5516:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5167:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6870:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14509:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5437:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13953:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2568:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3006:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5548:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2891:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13042:311;2363:24;2376:10;2363:12;:24::i;:::-;2355:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13177:3:::1;13158:9;;:16;;:22;13150:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13237:9;13232:114;13254:9;;:16;;13250:1;:20;13232:114;;;13328:6;13292:19;:33;13312:9;;13322:1;13312:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13292:33;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13272:3;;;;:::i;:::-;;;13232:114;;;;13042:311:::0;;;:::o;12428:295::-;2363:24;2376:10;2363:12;:24::i;:::-;2355:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12555:3:::1;12536:9;;:16;;:22;12528:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12615:9;12610:106;12632:9;;:16;;12628:1;:20;12610:106;;;12698:6;12670:11;:25;12682:9;;12692:1;12682:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12670:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12650:3;;;;:::i;:::-;;;12610:106;;;;12428:295:::0;;;:::o;5655:48::-;;;;:::o;4480:42::-;;;;;;;;;;;;;;;;;;;:::o;7907:174::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8069:4:::1;8041:23;4606:1;4666:2;:12;;;;:::i;:::-;4654:9;:24;;;;:::i;:::-;8027:37;;;;:::i;:::-;8026:47;;;;:::i;:::-;8008:15;:65;;;;7907:174:::0;:::o;7011:216::-;7086:4;7138:6;7103:11;:23;7115:10;7103:23;;;;;;;;;;;;;;;:32;7127:7;7103:32;;;;;;;;;;;;;;;:41;;;;7181:7;7160:37;;7169:10;7160:37;;;7190:6;7160:37;;;;;;:::i;:::-;;;;;;;;7215:4;7208:11;;7011:216;;;;:::o;5273:45::-;5314:4;5273:45;:::o;4616:62::-;4606:1;4666:2;:12;;;;:::i;:::-;4654:9;:24;;;;:::i;:::-;4616:62;:::o;10524:259::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10607:17:::1;10627:21;10607:41;;10659:21;10718:3;10697:16;10685:9;:28;;;;:::i;:::-;10683:38;;;;:::i;:::-;10659:62;;10740:10;10732:28;;:43;10761:13;10732:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10596:187;;10524:259:::0;:::o;5203:63::-;;;;:::o;7529:370::-;7629:4;7684:17;7649:11;:19;7661:6;7649:19;;;;;;;;;;;;;;;:31;7669:10;7649:31;;;;;;;;;;;;;;;;:52;7646:186;;7751:69;7787:6;7751:69;;;;;;;;;;;;;;;;;:11;:19;7763:6;7751:19;;;;;;;;;;;;;;;:31;7771:10;7751:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7717:11;:19;7729:6;7717:19;;;;;;;;;;;;;;;:31;7737:10;7717:31;;;;;;;;;;;;;;;:103;;;;7646:186;7851:40;7865:6;7873:9;7884:6;7851:13;:40::i;:::-;7844:47;;7529:370;;;;;:::o;14700:137::-;14753:7;14813:9;:15;4429:42;14813:15;;;;;;;;;;;;;;;;14795:9;:15;4356:42;14795:15;;;;;;;;;;;;;;;;4606:1;4666:2;:12;;;;:::i;:::-;4654:9;:24;;;;:::i;:::-;14781:29;;;;:::i;:::-;:47;;;;:::i;:::-;14773:56;;14700:137;:::o;2780:103::-;2835:4;2870:5;;;;;;;;;;;2859:16;;:7;:16;;;2852:23;;2780:103;;;:::o;4573:34::-;4606:1;4573:34;:::o;4922:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;5479:30::-;;;;;;;;;;;;;:::o;12731:303::-;2363:24;2376:10;2363:12;:24::i;:::-;2355:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12862:3:::1;12843:9;;:16;;:22;12835:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12922:9;12917:110;12939:9;;:16;;12935:1;:20;12917:110;;;13009:6;12977:15;:29;12993:9;;13003:1;12993:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12977:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12957:3;;;;:::i;:::-;;;12917:110;;;;12731:303:::0;;;:::o;7235:122::-;7290:4;7314:35;7322:7;7331:17;7314:7;:35::i;:::-;7307:42;;7235:122;;;:::o;5128:32::-;;;;:::o;13720:225::-;2363:24;2376:10;2363:12;:24::i;:::-;2355:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13837:5:::1;13820:14;:22;;;;13869:4;13853:13;:20;;;;13905:6;13884:18;:27;;;;13924:13;:11;:13::i;:::-;13720:225:::0;;;:::o;5617:31::-;;;;;;;;;;;;:::o;4800:45::-;;;;;;;;;;;;;;;;;:::o;3245:168::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3328:5:::1;3304:14;:21;3319:5:::0;::::1;;;;;;;;;;3304:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3360:1;3344:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;3378:27;3399:5;::::0;::::1;;;;;;;;3378:27;;;;;;:::i;:::-;;;;;;;;3245:168::o:0;14845:233::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14928:3:::1;4606:1;4666:2;:12;;;;:::i;:::-;4654:9;:24;;;;:::i;:::-;14914:17;;;;:::i;:::-;14899:12;:32;;;;14974:2;4606:1;4666:2;:12;;;;:::i;:::-;4654:9;:24;;;;:::i;:::-;14960:16;;;;:::i;:::-;14942:15;:34;;;;15004:3;14987:14;:20;;;;15034:3;15018:13;:19;;;;15069:1;15048:18;:22;;;;14845:233::o:0;10791:284::-;10882:12;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10920:1:::1;10910:6;:11:::0;10907:95:::1;;10952:12;10946:29;;;10984:4;10946:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10937:53;;10907:95;11025:12;11019:28;;;11048:10;11060:6;11019:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11012:55;;10791:284:::0;;;;:::o;4741:50::-;;;;:::o;4687:47::-;;;;:::o;6786:78::-;6838:7;6856:5;;;;;;;;;;;6849:12;;6786:78;:::o;4973:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4529:37::-;;;;;;;;;;;;;;;;;;;:::o;5089:32::-;;;;:::o;14292:209::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14427:21:::1;14404:20;;:44;;;;;;;;;;;;;;;;;;14477:16;14459:15;;:34;;;;;;;;;;;;;;;;;;14292:209:::0;;:::o;5579:29::-;;;:::o;7365:156::-;7445:4;7469:44;7483:10;7495:9;7506:6;7469:13;:44::i;:::-;7462:51;;7365:156;;;;:::o;2422:138::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2506:4:::1;2484:14;:19;2499:3;2484:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2526;2543:3;2547:4;2526:26;;;;;;;:::i;:::-;;;;;;;;2422:138:::0;:::o;8087:169::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8244:4:::1;8215:24;4606:1;4666:2;:12;;;;:::i;:::-;4654:9;:24;;;;:::i;:::-;8201:38;;;;:::i;:::-;8200:48;;;;:::i;:::-;8185:12;:63;;;;8087:169:::0;:::o;5028:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;5516:23::-;;;;;;;;;;;;;:::o;5167:27::-;;;;:::o;6870:133::-;6954:7;6972:11;:19;6984:6;6972:19;;;;;;;;;;;;;;;:28;6992:7;6972:28;;;;;;;;;;;;;;;;6965:35;;6870:133;;;;:::o;14509:179::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14619:8:::1;14605:11;::::0;:22:::1;;;;;;;;;;;;;;;;;;14668:12;4606:1;4666:2;:12;;;;:::i;:::-;4654:9;:24;;;;:::i;:::-;14654:26;;;;:::i;:::-;14638:13;:42;;;;14509:179:::0;;:::o;5437:35::-;;;;;;;;;;;;;:::o;13953:331::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14089:13:::1;14074:12;:28;;;;14128:13;14113:12;:28;;;;14162:8;14152:7;:18;;;;14234:8;14218:13;14202;:29;;;;:::i;:::-;:40;;;;:::i;:::-;14191:8;:51;;;;14263:13;:11;:13::i;:::-;13953:331:::0;;;:::o;2568:204::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2647:5:::1;::::0;::::1;;;;;;;;2640:12;;:3;:12;;::::0;2632:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2716:5;2694:14;:19;2709:3;2694:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2737;2754:3;2758:5;2737:27;;;;;;;:::i;:::-;;;;;;;;2568:204:::0;:::o;3006:231::-;2273:19;2281:10;2273:7;:19::i;:::-;2265:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3114:5:::1;3090:14;:21;3105:5:::0;::::1;;;;;;;;;;3090:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3138:9;3130:5;::::0;:17:::1;;;;;;;;;;;;;;;;;;3182:4;3158:14;:21;3173:5:::0;::::1;;;;;;;;;;3158:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3202:27;3223:5;::::0;::::1;;;;;;;;3202:27;;;;;;:::i;:::-;;;;;;;;3006:231:::0;:::o;5548:24::-;;;;;;;;;;;;;:::o;2891:107::-;2947:4;2971:14;:19;2986:3;2971:19;;;;;;;;;;;;;;;;;;;;;;;;;2964:26;;2891:107;;;:::o;447:192::-;533:7;566:1;561;:6;;569:12;553:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;593:9;609:1;605;:5;;;;:::i;:::-;593:17;;630:1;623:8;;;447:192;;;;;:::o;8264:974::-;8356:4;8376:6;;;;;;;;;;;8373:63;;;8392:41;8407:6;8415:9;8426:6;8392:14;:41::i;:::-;8385:48;;;;8373:63;8453:14;:22;8468:6;8453:22;;;;;;;;;;;;;;;;;;;;;;;;;8452:23;:55;;;;;8480:19;:27;8500:6;8480:27;;;;;;;;;;;;;;;;;;;;;;;;;8479:28;8452:55;:90;;;;;8512:19;:30;8532:9;8512:30;;;;;;;;;;;;;;;;;;;;;;;;;8511:31;8452:90;:111;;;;;8559:4;8546:17;;:9;:17;;;;8452:111;8448:230;;;8623:15;;8612:6;8589:9;:20;8599:9;8589:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;8588:50;;8580:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8448:230;8709:12;;8699:6;:22;;8698:51;;;;8726:15;:23;8742:6;8726:23;;;;;;;;;;;;;;;;;;;;;;;;;8698:51;:81;;;;8753:15;:26;8769:9;8753:26;;;;;;;;;;;;;;;;;;;;;;;;;8698:81;8690:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;8821:16;:14;:16::i;:::-;8818:35;;;8840:10;:8;:10::i;:::-;8818:35;8885:53;8907:6;8885:53;;;;;;;;;;;;;;;;;:9;:17;8895:6;8885:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8865:9;:17;8875:6;8865:17;;;;;;;;;;;;;;;:73;;;;8951:22;8977:11;:19;8989:6;8977:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;9000:11;:22;9012:9;9000:22;;;;;;;;;;;;;;;;;;;;;;;;;8977:45;8976:93;;9035:34;9043:6;9051;9059:9;9035:7;:34::i;:::-;8976:93;;;9026:6;8976:93;8951:118;;9105:40;9130:14;9105:9;:20;9115:9;9105:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9082:9;:20;9092:9;9082:20;;;;;;;;;;;;;;;:63;;;;9182:9;9165:43;;9174:6;9165:43;;;9193:14;9165:43;;;;;;:::i;:::-;;;;;;;;9226:4;9219:11;;;8264:974;;;;;;:::o;13361:351::-;13457:3;13417:36;13449:3;13417:27;13430:13;;13417:8;;:12;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;:43;;13409:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;13556:3;13515:37;13548:3;13515:28;13528:14;;13515:8;;:12;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;:44;;13507:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13660:3;13615:41;13652:3;13615:32;13628:18;;13615:8;;:12;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:48;;13607:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13361:351::o;9250:330::-;9343:4;9380:53;9402:6;9380:53;;;;;;;;;;;;;;;;;:9;:17;9390:6;9380:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9360:9;:17;9370:6;9360:17;;;;;;;;;;;;;;;:73;;;;9467:32;9492:6;9467:9;:20;9477:9;9467:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9444:9;:20;9454:9;9444:20;;;;;;;;;;;;;;;:55;;;;9532:9;9515:35;;9524:6;9515:35;;;9543:6;9515:35;;;;;;:::i;:::-;;;;;;;;9568:4;9561:11;;9250:330;;;;;:::o;10319:197::-;10368:4;10406;10392:18;;:10;:18;;;;:38;;;;;10424:6;;;;;;;;;;;10423:7;10392:38;:62;;;;;10443:11;;;;;;;;;;10392:62;:116;;;;;10495:13;;10467:9;:24;10485:4;10467:24;;;;;;;;;;;;;;;;:41;;10392:116;10385:123;;10319:197;:::o;11083:1337::-;5759:4;5750:6;;:13;;;;;;;;;;;;;;;;;;11134:19:::1;11156:8;;11134:30;;11177:23;11249:1;11235:11;:15;;;;:::i;:::-;11220:12;;11204:13;;:28;;;;:::i;:::-;11203:48;;;;:::i;:::-;11177:74;;11262:20;11301:15;11285:13;;:31;;;;:::i;:::-;11262:54;;11329:21;11367:1;11353:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11329:40;;11398:4;11380;11385:1;11380:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11424:4;11414;11419:1;11414:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11441:6;;;;;;;;;;;:57;;;11513:12;11540:1;11556:4;11583;11603:15;11441:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11642:17;11662:21;11642:41;;11741:1;11726:12;;:16;;;;:::i;:::-;11711:11;:32;;;;:::i;:::-;11697:46;;11764:26;11837:1;11823:11;:15;;;;:::i;:::-;11806:12;;11794:9;:24;;;;:::i;:::-;11793:46;;;;:::i;:::-;11764:75;;11850:26;11908:11;11892:12;;11880:9;:24;;;;:::i;:::-;11879:40;;;;:::i;:::-;11850:69;;11930:21;11978:11;11967:7;;11955:9;:19;;;;:::i;:::-;11954:35;;;;:::i;:::-;11930:59;;12010:20;;;;;;;;;;;12002:38;;:58;12041:18;12002:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12079:15;;;;;;;;;;;12071:33;;:48;12105:13;12071:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12153:1;12135:15;:19;12132:281;;;12170:6;;;;;;;;;;;:22;;;12200:18;12238:8;;;;;;;;;;;12265:15;12299:1;12319::::0;12347:4:::1;12371:15;12170:231;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12132:281;11121:1299;;;;;;;;5777:5:::0;5768:6;;:14;;;;;;;;;;;;;;;;;;11083:1337::o;9588:723::-;9674:7;9707:1;9697:6;:11;:28;;;;9724:1;9712:8;;:13;9697:28;9694:72;;;9748:6;9741:13;;;;9694:72;9778:18;9799;;9778:39;;9846:4;9833:17;;:9;:17;;;9830:154;;9880:14;;9867:27;;9830:154;;;9925:4;9915:14;;:6;:14;;;9912:72;;9959:13;;9946:26;;9912:72;9830:154;9996:17;10016:62;10074:3;5314:4;10057:20;;;;:::i;:::-;10016:36;10041:10;10016:20;10027:8;;10016:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;9996:82;;10106:1;10094:9;:13;10091:172;;;10150:39;10179:9;10150;:24;10168:4;10150:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10123:9;:24;10141:4;10123:24;;;;;;;;;;;;;;;:66;;;;10234:4;10209:42;;10218:6;10209:42;;;10241:9;10209:42;;;;;;:::i;:::-;;;;;;;;10091:172;10282:21;10293:9;10282:6;:10;;:21;;;;:::i;:::-;10275:28;;;;9588:723;;;;;;:::o;118:181::-;176:7;196:9;212:1;208;:5;;;;:::i;:::-;196:17;;237:1;232;:6;;224:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;290:1;283:8;;;118:181;;;;:::o;645:250::-;703:7;732:1;727;:6;723:47;;757:1;750:8;;;;723:47;782:9;798:1;794;:5;;;;:::i;:::-;782:17;;827:1;822;818;:5;;;;:::i;:::-;:10;810:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;886:1;879:8;;;645:250;;;;;:::o;901:132::-;959:7;986:39;990:1;993;986:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;979:46;;901:132;;;;:::o;305:136::-;363:7;390:43;394:1;397;390:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;383:50;;305:136;;;;:::o;1039:189::-;1125:7;1157:1;1153;:5;1160:12;1145:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1184:9;1200:1;1196;:5;;;;:::i;:::-;1184:17;;1219:1;1212:8;;;1039:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:77::-;2392:7;2421:5;2410:16;;2355:77;;;:::o;2438:118::-;2525:24;2543:5;2525:24;:::i;:::-;2520:3;2513:37;2438:118;;:::o;2562:222::-;2655:4;2693:2;2682:9;2678:18;2670:26;;2706:71;2774:1;2763:9;2759:17;2750:6;2706:71;:::i;:::-;2562:222;;;;:::o;2790:99::-;2842:6;2876:5;2870:12;2860:22;;2790:99;;;:::o;2895:169::-;2979:11;3013:6;3008:3;3001:19;3053:4;3048:3;3044:14;3029:29;;2895:169;;;;:::o;3070:307::-;3138:1;3148:113;3162:6;3159:1;3156:13;3148:113;;;3247:1;3242:3;3238:11;3232:18;3228:1;3223:3;3219:11;3212:39;3184:2;3181:1;3177:10;3172:15;;3148:113;;;3279:6;3276:1;3273:13;3270:101;;;3359:1;3350:6;3345:3;3341:16;3334:27;3270:101;3119:258;3070:307;;;:::o;3383:102::-;3424:6;3475:2;3471:7;3466:2;3459:5;3455:14;3451:28;3441:38;;3383:102;;;:::o;3491:364::-;3579:3;3607:39;3640:5;3607:39;:::i;:::-;3662:71;3726:6;3721:3;3662:71;:::i;:::-;3655:78;;3742:52;3787:6;3782:3;3775:4;3768:5;3764:16;3742:52;:::i;:::-;3819:29;3841:6;3819:29;:::i;:::-;3814:3;3810:39;3803:46;;3583:272;3491:364;;;;:::o;3861:313::-;3974:4;4012:2;4001:9;3997:18;3989:26;;4061:9;4055:4;4051:20;4047:1;4036:9;4032:17;4025:47;4089:78;4162:4;4153:6;4089:78;:::i;:::-;4081:86;;3861:313;;;;:::o;4180:122::-;4253:24;4271:5;4253:24;:::i;:::-;4246:5;4243:35;4233:63;;4292:1;4289;4282:12;4233:63;4180:122;:::o;4308:139::-;4354:5;4392:6;4379:20;4370:29;;4408:33;4435:5;4408:33;:::i;:::-;4308:139;;;;:::o;4453:329::-;4512:6;4561:2;4549:9;4540:7;4536:23;4532:32;4529:119;;;4567:79;;:::i;:::-;4529:119;4687:1;4712:53;4757:7;4748:6;4737:9;4733:22;4712:53;:::i;:::-;4702:63;;4658:117;4453:329;;;;:::o;4788:126::-;4825:7;4865:42;4858:5;4854:54;4843:65;;4788:126;;;:::o;4920:96::-;4957:7;4986:24;5004:5;4986:24;:::i;:::-;4975:35;;4920:96;;;:::o;5022:122::-;5095:24;5113:5;5095:24;:::i;:::-;5088:5;5085:35;5075:63;;5134:1;5131;5124:12;5075:63;5022:122;:::o;5150:139::-;5196:5;5234:6;5221:20;5212:29;;5250:33;5277:5;5250:33;:::i;:::-;5150:139;;;;:::o;5295:474::-;5363:6;5371;5420:2;5408:9;5399:7;5395:23;5391:32;5388:119;;;5426:79;;:::i;:::-;5388:119;5546:1;5571:53;5616:7;5607:6;5596:9;5592:22;5571:53;:::i;:::-;5561:63;;5517:117;5673:2;5699:53;5744:7;5735:6;5724:9;5720:22;5699:53;:::i;:::-;5689:63;;5644:118;5295:474;;;;;:::o;5775:109::-;5856:21;5871:5;5856:21;:::i;:::-;5851:3;5844:34;5775:109;;:::o;5890:210::-;5977:4;6015:2;6004:9;6000:18;5992:26;;6028:65;6090:1;6079:9;6075:17;6066:6;6028:65;:::i;:::-;5890:210;;;;:::o;6106:619::-;6183:6;6191;6199;6248:2;6236:9;6227:7;6223:23;6219:32;6216:119;;;6254:79;;:::i;:::-;6216:119;6374:1;6399:53;6444:7;6435:6;6424:9;6420:22;6399:53;:::i;:::-;6389:63;;6345:117;6501:2;6527:53;6572:7;6563:6;6552:9;6548:22;6527:53;:::i;:::-;6517:63;;6472:118;6629:2;6655:53;6700:7;6691:6;6680:9;6676:22;6655:53;:::i;:::-;6645:63;;6600:118;6106:619;;;;;:::o;6731:329::-;6790:6;6839:2;6827:9;6818:7;6814:23;6810:32;6807:119;;;6845:79;;:::i;:::-;6807:119;6965:1;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6936:117;6731:329;;;;:::o;7066:86::-;7101:7;7141:4;7134:5;7130:16;7119:27;;7066:86;;;:::o;7158:112::-;7241:22;7257:5;7241:22;:::i;:::-;7236:3;7229:35;7158:112;;:::o;7276:214::-;7365:4;7403:2;7392:9;7388:18;7380:26;;7416:67;7480:1;7469:9;7465:17;7456:6;7416:67;:::i;:::-;7276:214;;;;:::o;7496:118::-;7583:24;7601:5;7583:24;:::i;:::-;7578:3;7571:37;7496:118;;:::o;7620:222::-;7713:4;7751:2;7740:9;7736:18;7728:26;;7764:71;7832:1;7821:9;7817:17;7808:6;7764:71;:::i;:::-;7620:222;;;;:::o;7848:619::-;7925:6;7933;7941;7990:2;7978:9;7969:7;7965:23;7961:32;7958:119;;;7996:79;;:::i;:::-;7958:119;8116:1;8141:53;8186:7;8177:6;8166:9;8162:22;8141:53;:::i;:::-;8131:63;;8087:117;8243:2;8269:53;8314:7;8305:6;8294:9;8290:22;8269:53;:::i;:::-;8259:63;;8214:118;8371:2;8397:53;8442:7;8433:6;8422:9;8418:22;8397:53;:::i;:::-;8387:63;;8342:118;7848:619;;;;;:::o;8473:474::-;8541:6;8549;8598:2;8586:9;8577:7;8573:23;8569:32;8566:119;;;8604:79;;:::i;:::-;8566:119;8724:1;8749:53;8794:7;8785:6;8774:9;8770:22;8749:53;:::i;:::-;8739:63;;8695:117;8851:2;8877:53;8922:7;8913:6;8902:9;8898:22;8877:53;:::i;:::-;8867:63;;8822:118;8473:474;;;;;:::o;8953:468::-;9018:6;9026;9075:2;9063:9;9054:7;9050:23;9046:32;9043:119;;;9081:79;;:::i;:::-;9043:119;9201:1;9226:50;9268:7;9259:6;9248:9;9244:22;9226:50;:::i;:::-;9216:60;;9172:114;9325:2;9351:53;9396:7;9387:6;9376:9;9372:22;9351:53;:::i;:::-;9341:63;;9296:118;8953:468;;;;;:::o;9427:104::-;9472:7;9501:24;9519:5;9501:24;:::i;:::-;9490:35;;9427:104;;;:::o;9537:138::-;9618:32;9644:5;9618:32;:::i;:::-;9611:5;9608:43;9598:71;;9665:1;9662;9655:12;9598:71;9537:138;:::o;9681:155::-;9735:5;9773:6;9760:20;9751:29;;9789:41;9824:5;9789:41;:::i;:::-;9681:155;;;;:::o;9842:345::-;9909:6;9958:2;9946:9;9937:7;9933:23;9929:32;9926:119;;;9964:79;;:::i;:::-;9926:119;10084:1;10109:61;10162:7;10153:6;10142:9;10138:22;10109:61;:::i;:::-;10099:71;;10055:125;9842:345;;;;:::o;10193:60::-;10221:3;10242:5;10235:12;;10193:60;;;:::o;10259:142::-;10309:9;10342:53;10360:34;10369:24;10387:5;10369:24;:::i;:::-;10360:34;:::i;:::-;10342:53;:::i;:::-;10329:66;;10259:142;;;:::o;10407:126::-;10457:9;10490:37;10521:5;10490:37;:::i;:::-;10477:50;;10407:126;;;:::o;10539:144::-;10607:9;10640:37;10671:5;10640:37;:::i;:::-;10627:50;;10539:144;;;:::o;10689:167::-;10794:55;10843:5;10794:55;:::i;:::-;10789:3;10782:68;10689:167;;:::o;10862:258::-;10973:4;11011:2;11000:9;10996:18;10988:26;;11024:89;11110:1;11099:9;11095:17;11086:6;11024:89;:::i;:::-;10862:258;;;;:::o;11126:161::-;11266:13;11262:1;11254:6;11250:14;11243:37;11126:161;:::o;11293:366::-;11435:3;11456:67;11520:2;11515:3;11456:67;:::i;:::-;11449:74;;11532:93;11621:3;11532:93;:::i;:::-;11650:2;11645:3;11641:12;11634:19;;11293:366;;;:::o;11665:419::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11918:9;11912:4;11908:20;11904:1;11893:9;11889:17;11882:47;11946:131;12072:4;11946:131;:::i;:::-;11938:139;;11665:419;;;:::o;12090:224::-;12230:34;12226:1;12218:6;12214:14;12207:58;12299:7;12294:2;12286:6;12282:15;12275:32;12090:224;:::o;12320:366::-;12462:3;12483:67;12547:2;12542:3;12483:67;:::i;:::-;12476:74;;12559:93;12648:3;12559:93;:::i;:::-;12677:2;12672:3;12668:12;12661:19;;12320:366;;;:::o;12692:419::-;12858:4;12896:2;12885:9;12881:18;12873:26;;12945:9;12939:4;12935:20;12931:1;12920:9;12916:17;12909:47;12973:131;13099:4;12973:131;:::i;:::-;12965:139;;12692:419;;;:::o;13117:180::-;13165:77;13162:1;13155:88;13262:4;13259:1;13252:15;13286:4;13283:1;13276:15;13303:180;13351:77;13348:1;13341:88;13448:4;13445:1;13438:15;13472:4;13469:1;13462:15;13489:233;13528:3;13551:24;13569:5;13551:24;:::i;:::-;13542:33;;13597:66;13590:5;13587:77;13584:103;;13667:18;;:::i;:::-;13584:103;13714:1;13707:5;13703:13;13696:20;;13489:233;;;:::o;13728:156::-;13868:8;13864:1;13856:6;13852:14;13845:32;13728:156;:::o;13890:365::-;14032:3;14053:66;14117:1;14112:3;14053:66;:::i;:::-;14046:73;;14128:93;14217:3;14128:93;:::i;:::-;14246:2;14241:3;14237:12;14230:19;;13890:365;;;:::o;14261:419::-;14427:4;14465:2;14454:9;14450:18;14442:26;;14514:9;14508:4;14504:20;14500:1;14489:9;14485:17;14478:47;14542:131;14668:4;14542:131;:::i;:::-;14534:139;;14261:419;;;:::o;14686:102::-;14728:8;14775:5;14772:1;14768:13;14747:34;;14686:102;;;:::o;14794:848::-;14855:5;14862:4;14886:6;14877:15;;14910:5;14901:14;;14924:712;14945:1;14935:8;14932:15;14924:712;;;15040:4;15035:3;15031:14;15025:4;15022:24;15019:50;;;15049:18;;:::i;:::-;15019:50;15099:1;15089:8;15085:16;15082:451;;;15514:4;15507:5;15503:16;15494:25;;15082:451;15564:4;15558;15554:15;15546:23;;15594:32;15617:8;15594:32;:::i;:::-;15582:44;;14924:712;;;14794:848;;;;;;;:::o;15648:1073::-;15702:5;15893:8;15883:40;;15914:1;15905:10;;15916:5;;15883:40;15942:4;15932:36;;15959:1;15950:10;;15961:5;;15932:36;16028:4;16076:1;16071:27;;;;16112:1;16107:191;;;;16021:277;;16071:27;16089:1;16080:10;;16091:5;;;16107:191;16152:3;16142:8;16139:17;16136:43;;;16159:18;;:::i;:::-;16136:43;16208:8;16205:1;16201:16;16192:25;;16243:3;16236:5;16233:14;16230:40;;;16250:18;;:::i;:::-;16230:40;16283:5;;;16021:277;;16407:2;16397:8;16394:16;16388:3;16382:4;16379:13;16375:36;16357:2;16347:8;16344:16;16339:2;16333:4;16330:12;16326:35;16310:111;16307:246;;;16463:8;16457:4;16453:19;16444:28;;16498:3;16491:5;16488:14;16485:40;;;16505:18;;:::i;:::-;16485:40;16538:5;;16307:246;16578:42;16616:3;16606:8;16600:4;16597:1;16578:42;:::i;:::-;16563:57;;;;16652:4;16647:3;16643:14;16636:5;16633:25;16630:51;;;16661:18;;:::i;:::-;16630:51;16710:4;16703:5;16699:16;16690:25;;15648:1073;;;;;;:::o;16727:281::-;16785:5;16809:23;16827:4;16809:23;:::i;:::-;16801:31;;16853:25;16869:8;16853:25;:::i;:::-;16841:37;;16897:104;16934:66;16924:8;16918:4;16897:104;:::i;:::-;16888:113;;16727:281;;;;:::o;17014:348::-;17054:7;17077:20;17095:1;17077:20;:::i;:::-;17072:25;;17111:20;17129:1;17111:20;:::i;:::-;17106:25;;17299:1;17231:66;17227:74;17224:1;17221:81;17216:1;17209:9;17202:17;17198:105;17195:131;;;17306:18;;:::i;:::-;17195:131;17354:1;17351;17347:9;17336:20;;17014:348;;;;:::o;17368:180::-;17416:77;17413:1;17406:88;17513:4;17510:1;17503:15;17537:4;17534:1;17527:15;17554:185;17594:1;17611:20;17629:1;17611:20;:::i;:::-;17606:25;;17645:20;17663:1;17645:20;:::i;:::-;17640:25;;17684:1;17674:35;;17689:18;;:::i;:::-;17674:35;17731:1;17728;17724:9;17719:14;;17554:185;;;;:::o;17745:191::-;17785:4;17805:20;17823:1;17805:20;:::i;:::-;17800:25;;17839:20;17857:1;17839:20;:::i;:::-;17834:25;;17878:1;17875;17872:8;17869:34;;;17883:18;;:::i;:::-;17869:34;17928:1;17925;17921:9;17913:17;;17745:191;;;;:::o;17942:143::-;17999:5;18030:6;18024:13;18015:22;;18046:33;18073:5;18046:33;:::i;:::-;17942:143;;;;:::o;18091:351::-;18161:6;18210:2;18198:9;18189:7;18185:23;18181:32;18178:119;;;18216:79;;:::i;:::-;18178:119;18336:1;18361:64;18417:7;18408:6;18397:9;18393:22;18361:64;:::i;:::-;18351:74;;18307:128;18091:351;;;;:::o;18448:332::-;18569:4;18607:2;18596:9;18592:18;18584:26;;18620:71;18688:1;18677:9;18673:17;18664:6;18620:71;:::i;:::-;18701:72;18769:2;18758:9;18754:18;18745:6;18701:72;:::i;:::-;18448:332;;;;;:::o;18786:137::-;18840:5;18871:6;18865:13;18856:22;;18887:30;18911:5;18887:30;:::i;:::-;18786:137;;;;:::o;18929:345::-;18996:6;19045:2;19033:9;19024:7;19020:23;19016:32;19013:119;;;19051:79;;:::i;:::-;19013:119;19171:1;19196:61;19249:7;19240:6;19229:9;19225:22;19196:61;:::i;:::-;19186:71;;19142:125;18929:345;;;;:::o;19280:320::-;19395:4;19433:2;19422:9;19418:18;19410:26;;19446:71;19514:1;19503:9;19499:17;19490:6;19446:71;:::i;:::-;19527:66;19589:2;19578:9;19574:18;19565:6;19527:66;:::i;:::-;19280:320;;;;;:::o;19606:305::-;19646:3;19665:20;19683:1;19665:20;:::i;:::-;19660:25;;19699:20;19717:1;19699:20;:::i;:::-;19694:25;;19853:1;19785:66;19781:74;19778:1;19775:81;19772:107;;;19859:18;;:::i;:::-;19772:107;19903:1;19900;19896:9;19889:16;;19606:305;;;;:::o;19917:176::-;20057:28;20053:1;20045:6;20041:14;20034:52;19917:176;:::o;20099:366::-;20241:3;20262:67;20326:2;20321:3;20262:67;:::i;:::-;20255:74;;20338:93;20427:3;20338:93;:::i;:::-;20456:2;20451:3;20447:12;20440:19;;20099:366;;;:::o;20471:419::-;20637:4;20675:2;20664:9;20660:18;20652:26;;20724:9;20718:4;20714:20;20710:1;20699:9;20695:17;20688:47;20752:131;20878:4;20752:131;:::i;:::-;20744:139;;20471:419;;;:::o;20896:174::-;21036:26;21032:1;21024:6;21020:14;21013:50;20896:174;:::o;21076:366::-;21218:3;21239:67;21303:2;21298:3;21239:67;:::i;:::-;21232:74;;21315:93;21404:3;21315:93;:::i;:::-;21433:2;21428:3;21424:12;21417:19;;21076:366;;;:::o;21448:419::-;21614:4;21652:2;21641:9;21637:18;21629:26;;21701:9;21695:4;21691:20;21687:1;21676:9;21672:17;21665:47;21729:131;21855:4;21729:131;:::i;:::-;21721:139;;21448:419;;;:::o;21873:171::-;22013:23;22009:1;22001:6;21997:14;21990:47;21873:171;:::o;22050:366::-;22192:3;22213:67;22277:2;22272:3;22213:67;:::i;:::-;22206:74;;22289:93;22378:3;22289:93;:::i;:::-;22407:2;22402:3;22398:12;22391:19;;22050:366;;;:::o;22422:419::-;22588:4;22626:2;22615:9;22611:18;22603:26;;22675:9;22669:4;22665:20;22661:1;22650:9;22646:17;22639:47;22703:131;22829:4;22703:131;:::i;:::-;22695:139;;22422:419;;;:::o;22847:181::-;22987:33;22983:1;22975:6;22971:14;22964:57;22847:181;:::o;23034:366::-;23176:3;23197:67;23261:2;23256:3;23197:67;:::i;:::-;23190:74;;23273:93;23362:3;23273:93;:::i;:::-;23391:2;23386:3;23382:12;23375:19;;23034:366;;;:::o;23406:419::-;23572:4;23610:2;23599:9;23595:18;23587:26;;23659:9;23653:4;23649:20;23645:1;23634:9;23630:17;23623:47;23687:131;23813:4;23687:131;:::i;:::-;23679:139;;23406:419;;;:::o;23831:182::-;23971:34;23967:1;23959:6;23955:14;23948:58;23831:182;:::o;24019:366::-;24161:3;24182:67;24246:2;24241:3;24182:67;:::i;:::-;24175:74;;24258:93;24347:3;24258:93;:::i;:::-;24376:2;24371:3;24367:12;24360:19;;24019:366;;;:::o;24391:419::-;24557:4;24595:2;24584:9;24580:18;24572:26;;24644:9;24638:4;24634:20;24630:1;24619:9;24615:17;24608:47;24672:131;24798:4;24672:131;:::i;:::-;24664:139;;24391:419;;;:::o;24816:223::-;24956:34;24952:1;24944:6;24940:14;24933:58;25025:6;25020:2;25012:6;25008:15;25001:31;24816:223;:::o;25045:366::-;25187:3;25208:67;25272:2;25267:3;25208:67;:::i;:::-;25201:74;;25284:93;25373:3;25284:93;:::i;:::-;25402:2;25397:3;25393:12;25386:19;;25045:366;;;:::o;25417:419::-;25583:4;25621:2;25610:9;25606:18;25598:26;;25670:9;25664:4;25660:20;25656:1;25645:9;25641:17;25634:47;25698:131;25824:4;25698:131;:::i;:::-;25690:139;;25417:419;;;:::o;25842:180::-;25890:77;25887:1;25880:88;25987:4;25984:1;25977:15;26011:4;26008:1;26001:15;26028:85;26073:7;26102:5;26091:16;;26028:85;;;:::o;26119:158::-;26177:9;26210:61;26228:42;26237:32;26263:5;26237:32;:::i;:::-;26228:42;:::i;:::-;26210:61;:::i;:::-;26197:74;;26119:158;;;:::o;26283:147::-;26378:45;26417:5;26378:45;:::i;:::-;26373:3;26366:58;26283:147;;:::o;26436:114::-;26503:6;26537:5;26531:12;26521:22;;26436:114;;;:::o;26556:184::-;26655:11;26689:6;26684:3;26677:19;26729:4;26724:3;26720:14;26705:29;;26556:184;;;;:::o;26746:132::-;26813:4;26836:3;26828:11;;26866:4;26861:3;26857:14;26849:22;;26746:132;;;:::o;26884:108::-;26961:24;26979:5;26961:24;:::i;:::-;26956:3;26949:37;26884:108;;:::o;26998:179::-;27067:10;27088:46;27130:3;27122:6;27088:46;:::i;:::-;27166:4;27161:3;27157:14;27143:28;;26998:179;;;;:::o;27183:113::-;27253:4;27285;27280:3;27276:14;27268:22;;27183:113;;;:::o;27332:732::-;27451:3;27480:54;27528:5;27480:54;:::i;:::-;27550:86;27629:6;27624:3;27550:86;:::i;:::-;27543:93;;27660:56;27710:5;27660:56;:::i;:::-;27739:7;27770:1;27755:284;27780:6;27777:1;27774:13;27755:284;;;27856:6;27850:13;27883:63;27942:3;27927:13;27883:63;:::i;:::-;27876:70;;27969:60;28022:6;27969:60;:::i;:::-;27959:70;;27815:224;27802:1;27799;27795:9;27790:14;;27755:284;;;27759:14;28055:3;28048:10;;27456:608;;;27332:732;;;;:::o;28070:831::-;28333:4;28371:3;28360:9;28356:19;28348:27;;28385:71;28453:1;28442:9;28438:17;28429:6;28385:71;:::i;:::-;28466:80;28542:2;28531:9;28527:18;28518:6;28466:80;:::i;:::-;28593:9;28587:4;28583:20;28578:2;28567:9;28563:18;28556:48;28621:108;28724:4;28715:6;28621:108;:::i;:::-;28613:116;;28739:72;28807:2;28796:9;28792:18;28783:6;28739:72;:::i;:::-;28821:73;28889:3;28878:9;28874:19;28865:6;28821:73;:::i;:::-;28070:831;;;;;;;;:::o;28907:807::-;29156:4;29194:3;29183:9;29179:19;29171:27;;29208:71;29276:1;29265:9;29261:17;29252:6;29208:71;:::i;:::-;29289:72;29357:2;29346:9;29342:18;29333:6;29289:72;:::i;:::-;29371:80;29447:2;29436:9;29432:18;29423:6;29371:80;:::i;:::-;29461;29537:2;29526:9;29522:18;29513:6;29461:80;:::i;:::-;29551:73;29619:3;29608:9;29604:19;29595:6;29551:73;:::i;:::-;29634;29702:3;29691:9;29687:19;29678:6;29634:73;:::i;:::-;28907:807;;;;;;;;;:::o;29720:663::-;29808:6;29816;29824;29873:2;29861:9;29852:7;29848:23;29844:32;29841:119;;;29879:79;;:::i;:::-;29841:119;29999:1;30024:64;30080:7;30071:6;30060:9;30056:22;30024:64;:::i;:::-;30014:74;;29970:128;30137:2;30163:64;30219:7;30210:6;30199:9;30195:22;30163:64;:::i;:::-;30153:74;;30108:129;30276:2;30302:64;30358:7;30349:6;30338:9;30334:22;30302:64;:::i;:::-;30292:74;;30247:129;29720:663;;;;;:::o;30389:177::-;30529:29;30525:1;30517:6;30513:14;30506:53;30389:177;:::o;30572:366::-;30714:3;30735:67;30799:2;30794:3;30735:67;:::i;:::-;30728:74;;30811:93;30900:3;30811:93;:::i;:::-;30929:2;30924:3;30920:12;30913:19;;30572:366;;;:::o;30944:419::-;31110:4;31148:2;31137:9;31133:18;31125:26;;31197:9;31191:4;31187:20;31183:1;31172:9;31168:17;31161:47;31225:131;31351:4;31225:131;:::i;:::-;31217:139;;30944:419;;;:::o;31369:220::-;31509:34;31505:1;31497:6;31493:14;31486:58;31578:3;31573:2;31565:6;31561:15;31554:28;31369:220;:::o;31595:366::-;31737:3;31758:67;31822:2;31817:3;31758:67;:::i;:::-;31751:74;;31834:93;31923:3;31834:93;:::i;:::-;31952:2;31947:3;31943:12;31936:19;;31595:366;;;:::o;31967:419::-;32133:4;32171:2;32160:9;32156:18;32148:26;;32220:9;32214:4;32210:20;32206:1;32195:9;32191:17;32184:47;32248:131;32374:4;32248:131;:::i;:::-;32240:139;;31967:419;;;:::o

Swarm Source

ipfs://7a4c163a32d88a2dcc601f0356d808e1f8d153a07704d822f5edafb179a6c5f4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.