ETH Price: $2,675.71 (+1.55%)
Gas: 0.83 Gwei

Token

100IQ+ (100IQ+)
 

Overview

Max Total Supply

200,000,000,000 100IQ+

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
880,027,107.270475292 100IQ+

Value
$0.00
0xd641c50c36a454d325b8fdfe69e017979c431bf0
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:
Elon100IQPLUS

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-03
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.16;

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;
    mapping (address => bool) internal authorizations;

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

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

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

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[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 renounceOwnership() external onlyOwner {
        authorizations[owner] = false;
        owner = address(0);
    }

}

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

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

    string public constant name = "100IQ+";
    string public constant symbol = "100IQ+";
    uint8 public constant decimals = 9;

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

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

    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 marketingFee = 4;
    uint256 public operationsFee = 1;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 100;
    uint256 sellMultiplier = 100;
    uint256 transferMultiplier = 100;

    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool tradingOpen = true;

    bool swapEnabled = true;
    uint256 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 = 0x8A8f1e2B9Fb8ED12AD051A5bC0C1BDfb9D34Fb37;
        operationsFeeReceiver = msg.sender;

        isFeeExempt[msg.sender] = true;

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

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;
        isWalletLimitExempt[marketingFeeReceiver] = 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 {
        require(maxWallPercent_base1000 >= 5,"Cannot set max wallet less than 0.5%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }


    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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"trading not open yet");
        }

        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 takeitlive() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function swapBack() internal swapping {

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

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

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOperations = (amountETH * operationsFee) / totalFee;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOperations}("");
    }

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

    function setFees_base100(uint256 _marketingFee, uint256 _operationsFee) external onlyOwner {
        marketingFee = _marketingFee;
        operationsFee = _operationsFee;
        totalFee = _marketingFee + _operationsFee;
    }

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

}

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":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":"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":[{"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees_base100","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeitlive","outputs":[],"stateMutability":"nonpayable","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","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260c86009600a62000016919062000b57565b642e90edd00062000028919062000ba8565b62000034919062000c38565b60025560c86009600a62000049919062000b57565b642e90edd0006200005b919062000ba8565b62000067919062000c38565b60035560046009556001600a55600a5460095462000086919062000c70565b600b556064600c556064600d556064600e556001601160146101000a81548160ff0219169083151502179055506001601160156101000a81548160ff0219169083151502179055506101f46009600a620000e1919062000b57565b642e90edd000620000f3919062000ba8565b620000ff919062000c38565b6012553480156200010f57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000292919062000d15565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000359919062000d15565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b81526004016200039792919062000d58565b6020604051808303816000875af1158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd919062000d15565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550738a8f1e2b9fb8ed12ad051a5bc0c1bdfb9d34fb37600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a620008d9919062000b57565b642e90edd000620008eb919062000ba8565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200098e919062000b57565b642e90edd000620009a0919062000ba8565b604051620009af919062000d96565b60405180910390a362000db3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a4b5780860481111562000a235762000a22620009bd565b5b600185161562000a335780820291505b808102905062000a4385620009ec565b945062000a03565b94509492505050565b60008262000a66576001905062000b39565b8162000a76576000905062000b39565b816001811462000a8f576002811462000a9a5762000ad0565b600191505062000b39565b60ff84111562000aaf5762000aae620009bd565b5b8360020a91508482111562000ac95762000ac8620009bd565b5b5062000b39565b5060208310610133831016604e8410600b841016171562000b0a5782820a90508381111562000b045762000b03620009bd565b5b62000b39565b62000b198484846001620009f9565b9250905081840481111562000b335762000b32620009bd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b648262000b40565b915062000b718362000b4a565b925062000ba07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a54565b905092915050565b600062000bb58262000b40565b915062000bc28362000b40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bfe5762000bfd620009bd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c458262000b40565b915062000c528362000b40565b92508262000c655762000c6462000c09565b5b828204905092915050565b600062000c7d8262000b40565b915062000c8a8362000b40565b925082820190508082111562000ca55762000ca4620009bd565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cdd8262000cb0565b9050919050565b62000cef8162000cd0565b811462000cfb57600080fd5b50565b60008151905062000d0f8162000ce4565b92915050565b60006020828403121562000d2e5762000d2d62000cab565b5b600062000d3e8482850162000cfe565b91505092915050565b62000d528162000cd0565b82525050565b600060408201905062000d6f600083018562000d47565b62000d7e602083018462000d47565b9392505050565b62000d908162000b40565b82525050565b600060208201905062000dad600083018462000d85565b92915050565b60805160a051613dcd62000df56000396000818161179901528181611eaf015281816124fb015281816129340152612991015260006126860152613dcd6000f3fe6080604052600436106102325760003560e01c80636ce46bc31161012e578063a8aa1b31116100ab578063dd62ed3e1161006f578063dd62ed3e1461086e578063df20fd49146108ab578063f0b37c04146108d4578063f887ea40146108fd578063fe9fbb801461092857610239565b8063a8aa1b3114610777578063a9059cbb146107a2578063b6a5d7de146107df578063bd9ab53714610808578063c867d60b1461083157610239565b80637d1db4a5116100f25780637d1db4a5146106a2578063893d20e8146106cd5780638b42507f146106f857806395d89b4114610735578063963c44bf1461076057610239565b80636ce46bc3146105bd57806370a08231146105e6578063715018a61461062357806377b54bad1461063a57806378109e541461067757610239565b80631df4ccfc116101bc5780633f4218e0116101805780633f4218e0146104c657806348a5df04146105035780634be9d8691461052c578063571ac8b0146105555780636b67c4df1461059257610239565b80631df4ccfc146103cb57806323b872dd146103f65780632b112e49146104335780632f54bf6e1461045e578063313ce5671461049b57610239565b806309302dc61161020357806309302dc6146102e6578063095ea7b31461030f578063180b0d7e1461034c57806318160ddd146103775780631da1db5e146103a257610239565b80621086831461023e578062bff4461461026757806306fdde0314610290578063090896be146102bb57610239565b3661023957005b600080fd5b34801561024a57600080fd5b5061026560048036038101906102609190612dcb565b610965565b005b34801561027357600080fd5b5061028e60048036038101906102899190612dcb565b610a97565b005b34801561029c57600080fd5b506102a5610bc9565b6040516102b29190612ebb565b60405180910390f35b3480156102c757600080fd5b506102d0610c02565b6040516102dd9190612ef6565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190612f3d565b610c08565b005b34801561031b57600080fd5b5061033660048036038101906103319190612fc8565b610cd3565b6040516103439190613017565b60405180910390f35b34801561035857600080fd5b50610361610dc5565b60405161036e9190612ef6565b60405180910390f35b34801561038357600080fd5b5061038c610dca565b6040516103999190612ef6565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612f3d565b610deb565b005b3480156103d757600080fd5b506103e0610ea0565b6040516103ed9190612ef6565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613032565b610ea6565b60405161042a9190613017565b60405180910390f35b34801561043f57600080fd5b506104486110a6565b6040516104559190612ef6565b60405180910390f35b34801561046a57600080fd5b5061048560048036038101906104809190613085565b611161565b6040516104929190613017565b60405180910390f35b3480156104a757600080fd5b506104b06111ba565b6040516104bd91906130ce565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190613085565b6111bf565b6040516104fa9190613017565b60405180910390f35b34801561050f57600080fd5b5061052a600480360381019061052591906130e9565b6111df565b005b34801561053857600080fd5b50610553600480360381019061054e9190612dcb565b61124b565b005b34801561056157600080fd5b5061057c60048036038101906105779190613085565b61137d565b6040516105899190613017565b60405180910390f35b34801561059e57600080fd5b506105a76113b0565b6040516105b49190612ef6565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190613129565b6113b6565b005b3480156105f257600080fd5b5061060d60048036038101906106089190613085565b611418565b60405161061a9190612ef6565b60405180910390f35b34801561062f57600080fd5b50610638611430565b005b34801561064657600080fd5b50610661600480360381019061065c9190612fc8565b611534565b60405161066e9190613017565b60405180910390f35b34801561068357600080fd5b5061068c611689565b6040516106999190612ef6565b60405180910390f35b3480156106ae57600080fd5b506106b761168f565b6040516106c49190612ef6565b60405180910390f35b3480156106d957600080fd5b506106e2611695565b6040516106ef919061318b565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613085565b6116be565b60405161072c9190613017565b60405180910390f35b34801561074157600080fd5b5061074a6116de565b6040516107579190612ebb565b60405180910390f35b34801561076c57600080fd5b50610775611717565b005b34801561078357600080fd5b5061078c611797565b604051610799919061318b565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190612fc8565b6117bb565b6040516107d69190613017565b60405180910390f35b3480156107eb57600080fd5b5061080660048036038101906108019190613085565b6117d0565b005b34801561081457600080fd5b5061082f600480360381019061082a9190612f3d565b611872565b005b34801561083d57600080fd5b5061085860048036038101906108539190613085565b61193d565b6040516108659190613017565b60405180910390f35b34801561087a57600080fd5b50610895600480360381019061089091906131a6565b61195d565b6040516108a29190612ef6565b60405180910390f35b3480156108b757600080fd5b506108d260048036038101906108cd91906131e6565b6119e4565b005b3480156108e057600080fd5b506108fb60048036038101906108f69190613085565b611a79565b005b34801561090957600080fd5b50610912611baa565b60405161091f9190613285565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a9190613085565b611bd0565b60405161095c9190613017565b60405180910390f35b61096e33611bd0565b6109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a4906132ec565b60405180910390fd5b6101f583839050106109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb9061337e565b60405180910390fd5b60005b83839050811015610a91578160086000868685818110610a1a57610a1961339e565b5b9050602002016020810190610a2f9190613085565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610a8a906133fc565b90506109f7565b50505050565b610aa033611bd0565b610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad6906132ec565b60405180910390fd5b6101f58383905010610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d9061337e565b60405180910390fd5b60005b83839050811015610bc3578160066000868685818110610b4c57610b4b61339e565b5b9050602002016020810190610b619190613085565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610bbc906133fc565b9050610b29565b50505050565b6040518060400160405280600681526020017f31303049512b000000000000000000000000000000000000000000000000000081525081565b600a5481565b610c1133611161565b610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4790613490565b60405180910390fd5b6005811015610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b90613522565b60405180910390fd5b6103e8816009600a610ca69190613675565b642e90edd000610cb691906136c0565b610cc091906136c0565b610cca9190613749565b60038190555050565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610db39190612ef6565b60405180910390a36001905092915050565b606481565b6009600a610dd89190613675565b642e90edd000610de891906136c0565b81565b610df433611161565b610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90613490565b60405180910390fd5b6000479050600060648383610e4891906136c0565b610e529190613749565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e9a573d6000803e3d6000fd5b50505050565b600b5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461109257611011826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61109d848484611c8a565b90509392505050565b6000600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a6111389190613675565b642e90edd00061114891906136c0565b611152919061377a565b61115c919061377a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60066020528060005260406000206000915054906101000a900460ff1681565b6111e833611161565b611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613490565b60405180910390fd5b8160098190555080600a81905550808261124191906137ae565b600b819055505050565b61125433611bd0565b611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a906132ec565b60405180910390fd5b6101f583839050106112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d19061337e565b60405180910390fd5b60005b83839050811015611377578160076000868685818110611300576112ff61339e565b5b90506020020160208101906113159190613085565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611370906133fc565b90506112dd565b50505050565b60006113a9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cd3565b9050919050565b60095481565b6113bf33611bd0565b6113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f5906132ec565b60405180910390fd5b81600d8190555082600c8190555080600e81905550505050565b60046020528060005260406000206000915090505481565b61143933611161565b611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613490565b60405180910390fd5b6000600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061153f33611161565b61157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590613490565b60405180910390fd5b60008203611603578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115bf919061318b565b602060405180830381865afa1580156115dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160091906137f7565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161163e929190613824565b6020604051808303816000875af115801561165d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116819190613862565b905092915050565b60035481565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600681526020017f31303049512b000000000000000000000000000000000000000000000000000081525081565b61172033611161565b61175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690613490565b60405180910390fd5b6001601160146101000a81548160ff0219169083151502179055506001601160156101000a81548160ff021916908315150217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006117c8338484611c8a565b905092915050565b6117d933611161565b611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90613490565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61187b33611161565b6118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b190613490565b60405180910390fd5b60058110156118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f590613901565b60405180910390fd5b6103e8816009600a6119109190613675565b642e90edd00061192091906136c0565b61192a91906136c0565b6119349190613749565b60028190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119ed33611161565b611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2390613490565b60405180910390fd5b81601160156101000a81548160ff021916908315150217905550806009600a611a559190613675565b642e90edd000611a6591906136c0565b611a6f9190613749565b6012819055505050565b611a8233611161565b611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890613490565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061396d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c659190612ebb565b60405180910390fd5b5060008385611c7d919061377a565b9050809150509392505050565b6000601360009054906101000a900460ff1615611cb357611cac848484612324565b905061231d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d575750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dac57601160149054906101000a900460ff16611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da2906139d9565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e505750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ea65750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efe57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f935760035482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5191906137ae565b1115611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990613a45565b60405180910390fd5b5b60025482111580611fed5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120415750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790613ab1565b60405180910390fd5b6120886124f7565b15612096576120956125cc565b5b61211f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122055750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122195761221485848661290c565b61221b565b825b905061226f81600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5590919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161230f9190612ef6565b60405180910390a360019150505b9392505050565b60006123af826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124e49190612ef6565b60405180910390a3600190509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156125625750601360009054906101000a900460ff16155b801561257a5750601160159054906101000a900460ff165b80156125c75750601254600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601360006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561260457612603613ad1565b5b6040519080825280602002602001820160405280156126325781602001602082028036833780820191505090505b509050308160008151811061264a5761264961339e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106126b9576126b861339e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94760125460008430426040518663ffffffff1660e01b8152600401612759959493929190613bf9565b600060405180830381600087803b15801561277357600080fd5b505af1158015612787573d6000803e3d6000fd5b5050505060004790506000600b54600954836127a391906136c0565b6127ad9190613749565b90506000600b54600a54846127c291906136c0565b6127cc9190613749565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161281690613c84565b60006040518083038185875af1925050503d8060008114612853576040519150601f19603f3d011682016040523d82523d6000602084013e612858565b606091505b50509050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516128a290613c84565b60006040518083038185875af1925050503d80600081146128df576040519150601f19603f3d011682016040523d82523d6000602084013e6128e4565b606091505b50508091505050505050506000601360006101000a81548160ff021916908315150217905550565b60008083148061291e57506000600b54145b1561292b57829050612b4e565b6000600e5490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361298f57600d5490506129e9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036129e857600c5490505b5b6000612a306064806129fb91906136c0565b612a2284612a14600b548a612bb390919063ffffffff16565b612bb390919063ffffffff16565b612c2d90919063ffffffff16565b90506000811115612b3657612a8d81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b2d9190612ef6565b60405180910390a35b612b498186612c7790919063ffffffff16565b925050505b9392505050565b6000808284612b6491906137ae565b905083811015612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090613ce5565b60405180910390fd5b8091505092915050565b6000808303612bc55760009050612c27565b60008284612bd391906136c0565b9050828482612be29190613749565b14612c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1990613d77565b60405180910390fd5b809150505b92915050565b6000612c6f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cc1565b905092915050565b6000612cb983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c26565b905092915050565b60008083118290612d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cff9190612ebb565b60405180910390fd5b5060008385612d179190613749565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612d5357612d52612d2e565b5b8235905067ffffffffffffffff811115612d7057612d6f612d33565b5b602083019150836020820283011115612d8c57612d8b612d38565b5b9250929050565b60008115159050919050565b612da881612d93565b8114612db357600080fd5b50565b600081359050612dc581612d9f565b92915050565b600080600060408486031215612de457612de3612d24565b5b600084013567ffffffffffffffff811115612e0257612e01612d29565b5b612e0e86828701612d3d565b93509350506020612e2186828701612db6565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e65578082015181840152602081019050612e4a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e8d82612e2b565b612e978185612e36565b9350612ea7818560208601612e47565b612eb081612e71565b840191505092915050565b60006020820190508181036000830152612ed58184612e82565b905092915050565b6000819050919050565b612ef081612edd565b82525050565b6000602082019050612f0b6000830184612ee7565b92915050565b612f1a81612edd565b8114612f2557600080fd5b50565b600081359050612f3781612f11565b92915050565b600060208284031215612f5357612f52612d24565b5b6000612f6184828501612f28565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f9582612f6a565b9050919050565b612fa581612f8a565b8114612fb057600080fd5b50565b600081359050612fc281612f9c565b92915050565b60008060408385031215612fdf57612fde612d24565b5b6000612fed85828601612fb3565b9250506020612ffe85828601612f28565b9150509250929050565b61301181612d93565b82525050565b600060208201905061302c6000830184613008565b92915050565b60008060006060848603121561304b5761304a612d24565b5b600061305986828701612fb3565b935050602061306a86828701612fb3565b925050604061307b86828701612f28565b9150509250925092565b60006020828403121561309b5761309a612d24565b5b60006130a984828501612fb3565b91505092915050565b600060ff82169050919050565b6130c8816130b2565b82525050565b60006020820190506130e360008301846130bf565b92915050565b60008060408385031215613100576130ff612d24565b5b600061310e85828601612f28565b925050602061311f85828601612f28565b9150509250929050565b60008060006060848603121561314257613141612d24565b5b600061315086828701612f28565b935050602061316186828701612f28565b925050604061317286828701612f28565b9150509250925092565b61318581612f8a565b82525050565b60006020820190506131a0600083018461317c565b92915050565b600080604083850312156131bd576131bc612d24565b5b60006131cb85828601612fb3565b92505060206131dc85828601612fb3565b9150509250929050565b600080604083850312156131fd576131fc612d24565b5b600061320b85828601612db6565b925050602061321c85828601612f28565b9150509250929050565b6000819050919050565b600061324b61324661324184612f6a565b613226565b612f6a565b9050919050565b600061325d82613230565b9050919050565b600061326f82613252565b9050919050565b61327f81613264565b82525050565b600060208201905061329a6000830184613276565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b60006132d6600b83612e36565b91506132e1826132a0565b602082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613368602583612e36565b91506133738261330c565b604082019050919050565b600060208201905081810360008301526133978161335b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061340782612edd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613439576134386133cd565b5b600182019050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061347a600683612e36565b915061348582613444565b602082019050919050565b600060208201905081810360008301526134a98161346d565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061350c602483612e36565b9150613517826134b0565b604082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561359957808604811115613575576135746133cd565b5b60018516156135845780820291505b808102905061359285613542565b9450613559565b94509492505050565b6000826135b2576001905061366e565b816135c0576000905061366e565b81600181146135d657600281146135e05761360f565b600191505061366e565b60ff8411156135f2576135f16133cd565b5b8360020a915084821115613609576136086133cd565b5b5061366e565b5060208310610133831016604e8410600b84101617156136445782820a90508381111561363f5761363e6133cd565b5b61366e565b613651848484600161354f565b92509050818404811115613668576136676133cd565b5b81810290505b9392505050565b600061368082612edd565b915061368b836130b2565b92506136b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135a2565b905092915050565b60006136cb82612edd565b91506136d683612edd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561370f5761370e6133cd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061375482612edd565b915061375f83612edd565b92508261376f5761376e61371a565b5b828204905092915050565b600061378582612edd565b915061379083612edd565b92508282039050818111156137a8576137a76133cd565b5b92915050565b60006137b982612edd565b91506137c483612edd565b92508282019050808211156137dc576137db6133cd565b5b92915050565b6000815190506137f181612f11565b92915050565b60006020828403121561380d5761380c612d24565b5b600061381b848285016137e2565b91505092915050565b6000604082019050613839600083018561317c565b6138466020830184612ee7565b9392505050565b60008151905061385c81612d9f565b92915050565b60006020828403121561387857613877612d24565b5b60006138868482850161384d565b91505092915050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6573732060008201527f7468616e20302e35250000000000000000000000000000000000000000000000602082015250565b60006138eb602983612e36565b91506138f68261388f565b604082019050919050565b6000602082019050818103600083015261391a816138de565b9050919050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b6000613957601a83612e36565b915061396282613921565b602082019050919050565b600060208201905081810360008301526139868161394a565b9050919050565b7f74726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006139c3601483612e36565b91506139ce8261398d565b602082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000613a2f601883612e36565b9150613a3a826139f9565b602082019050919050565b60006020820190508181036000830152613a5e81613a22565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b6000613a9b601583612e36565b9150613aa682613a65565b602082019050919050565b60006020820190508181036000830152613aca81613a8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000613b25613b20613b1b84613b00565b613226565b612edd565b9050919050565b613b3581613b0a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7081612f8a565b82525050565b6000613b828383613b67565b60208301905092915050565b6000602082019050919050565b6000613ba682613b3b565b613bb08185613b46565b9350613bbb83613b57565b8060005b83811015613bec578151613bd38882613b76565b9750613bde83613b8e565b925050600181019050613bbf565b5085935050505092915050565b600060a082019050613c0e6000830188612ee7565b613c1b6020830187613b2c565b8181036040830152613c2d8186613b9b565b9050613c3c606083018561317c565b613c496080830184612ee7565b9695505050505050565b600081905092915050565b50565b6000613c6e600083613c53565b9150613c7982613c5e565b600082019050919050565b6000613c8f82613c61565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ccf601b83612e36565b9150613cda82613c99565b602082019050919050565b60006020820190508181036000830152613cfe81613cc2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d61602183612e36565b9150613d6c82613d05565b604082019050919050565b60006020820190508181036000830152613d9081613d54565b905091905056fea2646970667358221220586ab2ecd4a88cf3e16791755dfaa9da7c1b46ac47446bf0aaf6715bf5d24c7164736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102325760003560e01c80636ce46bc31161012e578063a8aa1b31116100ab578063dd62ed3e1161006f578063dd62ed3e1461086e578063df20fd49146108ab578063f0b37c04146108d4578063f887ea40146108fd578063fe9fbb801461092857610239565b8063a8aa1b3114610777578063a9059cbb146107a2578063b6a5d7de146107df578063bd9ab53714610808578063c867d60b1461083157610239565b80637d1db4a5116100f25780637d1db4a5146106a2578063893d20e8146106cd5780638b42507f146106f857806395d89b4114610735578063963c44bf1461076057610239565b80636ce46bc3146105bd57806370a08231146105e6578063715018a61461062357806377b54bad1461063a57806378109e541461067757610239565b80631df4ccfc116101bc5780633f4218e0116101805780633f4218e0146104c657806348a5df04146105035780634be9d8691461052c578063571ac8b0146105555780636b67c4df1461059257610239565b80631df4ccfc146103cb57806323b872dd146103f65780632b112e49146104335780632f54bf6e1461045e578063313ce5671461049b57610239565b806309302dc61161020357806309302dc6146102e6578063095ea7b31461030f578063180b0d7e1461034c57806318160ddd146103775780631da1db5e146103a257610239565b80621086831461023e578062bff4461461026757806306fdde0314610290578063090896be146102bb57610239565b3661023957005b600080fd5b34801561024a57600080fd5b5061026560048036038101906102609190612dcb565b610965565b005b34801561027357600080fd5b5061028e60048036038101906102899190612dcb565b610a97565b005b34801561029c57600080fd5b506102a5610bc9565b6040516102b29190612ebb565b60405180910390f35b3480156102c757600080fd5b506102d0610c02565b6040516102dd9190612ef6565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190612f3d565b610c08565b005b34801561031b57600080fd5b5061033660048036038101906103319190612fc8565b610cd3565b6040516103439190613017565b60405180910390f35b34801561035857600080fd5b50610361610dc5565b60405161036e9190612ef6565b60405180910390f35b34801561038357600080fd5b5061038c610dca565b6040516103999190612ef6565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612f3d565b610deb565b005b3480156103d757600080fd5b506103e0610ea0565b6040516103ed9190612ef6565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613032565b610ea6565b60405161042a9190613017565b60405180910390f35b34801561043f57600080fd5b506104486110a6565b6040516104559190612ef6565b60405180910390f35b34801561046a57600080fd5b5061048560048036038101906104809190613085565b611161565b6040516104929190613017565b60405180910390f35b3480156104a757600080fd5b506104b06111ba565b6040516104bd91906130ce565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190613085565b6111bf565b6040516104fa9190613017565b60405180910390f35b34801561050f57600080fd5b5061052a600480360381019061052591906130e9565b6111df565b005b34801561053857600080fd5b50610553600480360381019061054e9190612dcb565b61124b565b005b34801561056157600080fd5b5061057c60048036038101906105779190613085565b61137d565b6040516105899190613017565b60405180910390f35b34801561059e57600080fd5b506105a76113b0565b6040516105b49190612ef6565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190613129565b6113b6565b005b3480156105f257600080fd5b5061060d60048036038101906106089190613085565b611418565b60405161061a9190612ef6565b60405180910390f35b34801561062f57600080fd5b50610638611430565b005b34801561064657600080fd5b50610661600480360381019061065c9190612fc8565b611534565b60405161066e9190613017565b60405180910390f35b34801561068357600080fd5b5061068c611689565b6040516106999190612ef6565b60405180910390f35b3480156106ae57600080fd5b506106b761168f565b6040516106c49190612ef6565b60405180910390f35b3480156106d957600080fd5b506106e2611695565b6040516106ef919061318b565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613085565b6116be565b60405161072c9190613017565b60405180910390f35b34801561074157600080fd5b5061074a6116de565b6040516107579190612ebb565b60405180910390f35b34801561076c57600080fd5b50610775611717565b005b34801561078357600080fd5b5061078c611797565b604051610799919061318b565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190612fc8565b6117bb565b6040516107d69190613017565b60405180910390f35b3480156107eb57600080fd5b5061080660048036038101906108019190613085565b6117d0565b005b34801561081457600080fd5b5061082f600480360381019061082a9190612f3d565b611872565b005b34801561083d57600080fd5b5061085860048036038101906108539190613085565b61193d565b6040516108659190613017565b60405180910390f35b34801561087a57600080fd5b50610895600480360381019061089091906131a6565b61195d565b6040516108a29190612ef6565b60405180910390f35b3480156108b757600080fd5b506108d260048036038101906108cd91906131e6565b6119e4565b005b3480156108e057600080fd5b506108fb60048036038101906108f69190613085565b611a79565b005b34801561090957600080fd5b50610912611baa565b60405161091f9190613285565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a9190613085565b611bd0565b60405161095c9190613017565b60405180910390f35b61096e33611bd0565b6109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a4906132ec565b60405180910390fd5b6101f583839050106109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb9061337e565b60405180910390fd5b60005b83839050811015610a91578160086000868685818110610a1a57610a1961339e565b5b9050602002016020810190610a2f9190613085565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610a8a906133fc565b90506109f7565b50505050565b610aa033611bd0565b610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad6906132ec565b60405180910390fd5b6101f58383905010610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d9061337e565b60405180910390fd5b60005b83839050811015610bc3578160066000868685818110610b4c57610b4b61339e565b5b9050602002016020810190610b619190613085565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610bbc906133fc565b9050610b29565b50505050565b6040518060400160405280600681526020017f31303049512b000000000000000000000000000000000000000000000000000081525081565b600a5481565b610c1133611161565b610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4790613490565b60405180910390fd5b6005811015610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b90613522565b60405180910390fd5b6103e8816009600a610ca69190613675565b642e90edd000610cb691906136c0565b610cc091906136c0565b610cca9190613749565b60038190555050565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610db39190612ef6565b60405180910390a36001905092915050565b606481565b6009600a610dd89190613675565b642e90edd000610de891906136c0565b81565b610df433611161565b610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90613490565b60405180910390fd5b6000479050600060648383610e4891906136c0565b610e529190613749565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e9a573d6000803e3d6000fd5b50505050565b600b5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461109257611011826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61109d848484611c8a565b90509392505050565b6000600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a6111389190613675565b642e90edd00061114891906136c0565b611152919061377a565b61115c919061377a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60066020528060005260406000206000915054906101000a900460ff1681565b6111e833611161565b611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613490565b60405180910390fd5b8160098190555080600a81905550808261124191906137ae565b600b819055505050565b61125433611bd0565b611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a906132ec565b60405180910390fd5b6101f583839050106112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d19061337e565b60405180910390fd5b60005b83839050811015611377578160076000868685818110611300576112ff61339e565b5b90506020020160208101906113159190613085565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611370906133fc565b90506112dd565b50505050565b60006113a9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cd3565b9050919050565b60095481565b6113bf33611bd0565b6113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f5906132ec565b60405180910390fd5b81600d8190555082600c8190555080600e81905550505050565b60046020528060005260406000206000915090505481565b61143933611161565b611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613490565b60405180910390fd5b6000600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061153f33611161565b61157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590613490565b60405180910390fd5b60008203611603578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115bf919061318b565b602060405180830381865afa1580156115dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160091906137f7565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161163e929190613824565b6020604051808303816000875af115801561165d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116819190613862565b905092915050565b60035481565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600681526020017f31303049512b000000000000000000000000000000000000000000000000000081525081565b61172033611161565b61175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690613490565b60405180910390fd5b6001601160146101000a81548160ff0219169083151502179055506001601160156101000a81548160ff021916908315150217905550565b7f000000000000000000000000d9d9f4ee6d3f78e83bd1055744d19b6d2fd9f87781565b60006117c8338484611c8a565b905092915050565b6117d933611161565b611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90613490565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61187b33611161565b6118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b190613490565b60405180910390fd5b60058110156118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f590613901565b60405180910390fd5b6103e8816009600a6119109190613675565b642e90edd00061192091906136c0565b61192a91906136c0565b6119349190613749565b60028190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119ed33611161565b611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2390613490565b60405180910390fd5b81601160156101000a81548160ff021916908315150217905550806009600a611a559190613675565b642e90edd000611a6591906136c0565b611a6f9190613749565b6012819055505050565b611a8233611161565b611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890613490565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061396d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c659190612ebb565b60405180910390fd5b5060008385611c7d919061377a565b9050809150509392505050565b6000601360009054906101000a900460ff1615611cb357611cac848484612324565b905061231d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d575750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dac57601160149054906101000a900460ff16611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da2906139d9565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e505750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ea65750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efe57507f000000000000000000000000d9d9f4ee6d3f78e83bd1055744d19b6d2fd9f87773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f935760035482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5191906137ae565b1115611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990613a45565b60405180910390fd5b5b60025482111580611fed5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120415750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790613ab1565b60405180910390fd5b6120886124f7565b15612096576120956125cc565b5b61211f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122055750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122195761221485848661290c565b61221b565b825b905061226f81600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5590919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161230f9190612ef6565b60405180910390a360019150505b9392505050565b60006123af826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124e49190612ef6565b60405180910390a3600190509392505050565b60007f000000000000000000000000d9d9f4ee6d3f78e83bd1055744d19b6d2fd9f87773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156125625750601360009054906101000a900460ff16155b801561257a5750601160159054906101000a900460ff165b80156125c75750601254600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601360006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561260457612603613ad1565b5b6040519080825280602002602001820160405280156126325781602001602082028036833780820191505090505b509050308160008151811061264a5761264961339e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106126b9576126b861339e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94760125460008430426040518663ffffffff1660e01b8152600401612759959493929190613bf9565b600060405180830381600087803b15801561277357600080fd5b505af1158015612787573d6000803e3d6000fd5b5050505060004790506000600b54600954836127a391906136c0565b6127ad9190613749565b90506000600b54600a54846127c291906136c0565b6127cc9190613749565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161281690613c84565b60006040518083038185875af1925050503d8060008114612853576040519150601f19603f3d011682016040523d82523d6000602084013e612858565b606091505b50509050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516128a290613c84565b60006040518083038185875af1925050503d80600081146128df576040519150601f19603f3d011682016040523d82523d6000602084013e6128e4565b606091505b50508091505050505050506000601360006101000a81548160ff021916908315150217905550565b60008083148061291e57506000600b54145b1561292b57829050612b4e565b6000600e5490507f000000000000000000000000d9d9f4ee6d3f78e83bd1055744d19b6d2fd9f87773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361298f57600d5490506129e9565b7f000000000000000000000000d9d9f4ee6d3f78e83bd1055744d19b6d2fd9f87773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036129e857600c5490505b5b6000612a306064806129fb91906136c0565b612a2284612a14600b548a612bb390919063ffffffff16565b612bb390919063ffffffff16565b612c2d90919063ffffffff16565b90506000811115612b3657612a8d81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b2d9190612ef6565b60405180910390a35b612b498186612c7790919063ffffffff16565b925050505b9392505050565b6000808284612b6491906137ae565b905083811015612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090613ce5565b60405180910390fd5b8091505092915050565b6000808303612bc55760009050612c27565b60008284612bd391906136c0565b9050828482612be29190613749565b14612c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1990613d77565b60405180910390fd5b809150505b92915050565b6000612c6f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cc1565b905092915050565b6000612cb983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c26565b905092915050565b60008083118290612d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cff9190612ebb565b60405180910390fd5b5060008385612d179190613749565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612d5357612d52612d2e565b5b8235905067ffffffffffffffff811115612d7057612d6f612d33565b5b602083019150836020820283011115612d8c57612d8b612d38565b5b9250929050565b60008115159050919050565b612da881612d93565b8114612db357600080fd5b50565b600081359050612dc581612d9f565b92915050565b600080600060408486031215612de457612de3612d24565b5b600084013567ffffffffffffffff811115612e0257612e01612d29565b5b612e0e86828701612d3d565b93509350506020612e2186828701612db6565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e65578082015181840152602081019050612e4a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e8d82612e2b565b612e978185612e36565b9350612ea7818560208601612e47565b612eb081612e71565b840191505092915050565b60006020820190508181036000830152612ed58184612e82565b905092915050565b6000819050919050565b612ef081612edd565b82525050565b6000602082019050612f0b6000830184612ee7565b92915050565b612f1a81612edd565b8114612f2557600080fd5b50565b600081359050612f3781612f11565b92915050565b600060208284031215612f5357612f52612d24565b5b6000612f6184828501612f28565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f9582612f6a565b9050919050565b612fa581612f8a565b8114612fb057600080fd5b50565b600081359050612fc281612f9c565b92915050565b60008060408385031215612fdf57612fde612d24565b5b6000612fed85828601612fb3565b9250506020612ffe85828601612f28565b9150509250929050565b61301181612d93565b82525050565b600060208201905061302c6000830184613008565b92915050565b60008060006060848603121561304b5761304a612d24565b5b600061305986828701612fb3565b935050602061306a86828701612fb3565b925050604061307b86828701612f28565b9150509250925092565b60006020828403121561309b5761309a612d24565b5b60006130a984828501612fb3565b91505092915050565b600060ff82169050919050565b6130c8816130b2565b82525050565b60006020820190506130e360008301846130bf565b92915050565b60008060408385031215613100576130ff612d24565b5b600061310e85828601612f28565b925050602061311f85828601612f28565b9150509250929050565b60008060006060848603121561314257613141612d24565b5b600061315086828701612f28565b935050602061316186828701612f28565b925050604061317286828701612f28565b9150509250925092565b61318581612f8a565b82525050565b60006020820190506131a0600083018461317c565b92915050565b600080604083850312156131bd576131bc612d24565b5b60006131cb85828601612fb3565b92505060206131dc85828601612fb3565b9150509250929050565b600080604083850312156131fd576131fc612d24565b5b600061320b85828601612db6565b925050602061321c85828601612f28565b9150509250929050565b6000819050919050565b600061324b61324661324184612f6a565b613226565b612f6a565b9050919050565b600061325d82613230565b9050919050565b600061326f82613252565b9050919050565b61327f81613264565b82525050565b600060208201905061329a6000830184613276565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b60006132d6600b83612e36565b91506132e1826132a0565b602082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613368602583612e36565b91506133738261330c565b604082019050919050565b600060208201905081810360008301526133978161335b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061340782612edd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613439576134386133cd565b5b600182019050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061347a600683612e36565b915061348582613444565b602082019050919050565b600060208201905081810360008301526134a98161346d565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061350c602483612e36565b9150613517826134b0565b604082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561359957808604811115613575576135746133cd565b5b60018516156135845780820291505b808102905061359285613542565b9450613559565b94509492505050565b6000826135b2576001905061366e565b816135c0576000905061366e565b81600181146135d657600281146135e05761360f565b600191505061366e565b60ff8411156135f2576135f16133cd565b5b8360020a915084821115613609576136086133cd565b5b5061366e565b5060208310610133831016604e8410600b84101617156136445782820a90508381111561363f5761363e6133cd565b5b61366e565b613651848484600161354f565b92509050818404811115613668576136676133cd565b5b81810290505b9392505050565b600061368082612edd565b915061368b836130b2565b92506136b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135a2565b905092915050565b60006136cb82612edd565b91506136d683612edd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561370f5761370e6133cd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061375482612edd565b915061375f83612edd565b92508261376f5761376e61371a565b5b828204905092915050565b600061378582612edd565b915061379083612edd565b92508282039050818111156137a8576137a76133cd565b5b92915050565b60006137b982612edd565b91506137c483612edd565b92508282019050808211156137dc576137db6133cd565b5b92915050565b6000815190506137f181612f11565b92915050565b60006020828403121561380d5761380c612d24565b5b600061381b848285016137e2565b91505092915050565b6000604082019050613839600083018561317c565b6138466020830184612ee7565b9392505050565b60008151905061385c81612d9f565b92915050565b60006020828403121561387857613877612d24565b5b60006138868482850161384d565b91505092915050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6573732060008201527f7468616e20302e35250000000000000000000000000000000000000000000000602082015250565b60006138eb602983612e36565b91506138f68261388f565b604082019050919050565b6000602082019050818103600083015261391a816138de565b9050919050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b6000613957601a83612e36565b915061396282613921565b602082019050919050565b600060208201905081810360008301526139868161394a565b9050919050565b7f74726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006139c3601483612e36565b91506139ce8261398d565b602082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000613a2f601883612e36565b9150613a3a826139f9565b602082019050919050565b60006020820190508181036000830152613a5e81613a22565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b6000613a9b601583612e36565b9150613aa682613a65565b602082019050919050565b60006020820190508181036000830152613aca81613a8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000613b25613b20613b1b84613b00565b613226565b612edd565b9050919050565b613b3581613b0a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7081612f8a565b82525050565b6000613b828383613b67565b60208301905092915050565b6000602082019050919050565b6000613ba682613b3b565b613bb08185613b46565b9350613bbb83613b57565b8060005b83811015613bec578151613bd38882613b76565b9750613bde83613b8e565b925050600181019050613bbf565b5085935050505092915050565b600060a082019050613c0e6000830188612ee7565b613c1b6020830187613b2c565b8181036040830152613c2d8186613b9b565b9050613c3c606083018561317c565b613c496080830184612ee7565b9695505050505050565b600081905092915050565b50565b6000613c6e600083613c53565b9150613c7982613c5e565b600082019050919050565b6000613c8f82613c61565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ccf601b83612e36565b9150613cda82613c99565b602082019050919050565b60006020820190508181036000830152613cfe81613cc2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d61602183612e36565b9150613d6c82613d05565b604082019050919050565b60006020820190508181036000830152613d9081613d54565b905091905056fea2646970667358221220586ab2ecd4a88cf3e16791755dfaa9da7c1b46ac47446bf0aaf6715bf5d24c7164736f6c63430008100033

Deployed Bytecode Sourcemap

3405:9733:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8194:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7580:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3662:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4310:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7039:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6143:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4410:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3797:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10914:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4349:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6661:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12996:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2570:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3754:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4105:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12570:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7883:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6367:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4272:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12363:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3983:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2796:125;;;;;;;;;;;;;:::i;:::-;;11181:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3924:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3870:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5918:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4156:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3707:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11475:107;;;;;;;;;;;;;:::i;:::-;;4681:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6497:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2299:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7308:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4211:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6002:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12809:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2401:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4650:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2681:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8194:311;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8329:3:::1;8310:9;;:16;;:22;8302:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8389:9;8384:114;8406:9;;:16;;8402:1;:20;8384:114;;;8480:6;8444:19;:33;8464:9;;8474:1;8464:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8444:33;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;8424:3;;;;:::i;:::-;;;8384:114;;;;8194:311:::0;;;:::o;7580:295::-;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7707:3:::1;7688:9;;:16;;:22;7680:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7767:9;7762:106;7784:9;;:16;;7780:1;:20;7762:106;;;7850:6;7822:11;:25;7834:9;;7844:1;7834:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;7822:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7802:3;;;;:::i;:::-;;;7762:106;;;;7580:295:::0;;;:::o;3662:38::-;;;;;;;;;;;;;;;;;;;:::o;4310:32::-;;;;:::o;7039:261::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7175:1:::1;7148:23;:28;;7140:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7288:4;7260:23;3787:1;3849:2;:12;;;;:::i;:::-;3835:11;:26;;;;:::i;:::-;7246:37;;;;:::i;:::-;7245:47;;;;:::i;:::-;7227:15;:65;;;;7039:261:::0;:::o;6143:216::-;6218:4;6270:6;6235:11;:23;6247:10;6235:23;;;;;;;;;;;;;;;:32;6259:7;6235:32;;;;;;;;;;;;;;;:41;;;;6313:7;6292:37;;6301:10;6292:37;;;6322:6;6292:37;;;;;;:::i;:::-;;;;;;;;6347:4;6340:11;;6143:216;;;;:::o;4410:44::-;4451:3;4410:44;:::o;3797:64::-;3787:1;3849:2;:12;;;;:::i;:::-;3835:11;:26;;;;:::i;:::-;3797:64;:::o;10914:259::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10997:17:::1;11017:21;10997:41;;11049:21;11108:3;11087:16;11075:9;:28;;;;:::i;:::-;11073:38;;;;:::i;:::-;11049:62;;11130:10;11122:28;;:43;11151:13;11122:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10986:187;;10914:259:::0;:::o;4349:54::-;;;;:::o;6661:370::-;6761:4;6816:17;6781:11;:19;6793:6;6781:19;;;;;;;;;;;;;;;:31;6801:10;6781:31;;;;;;;;;;;;;;;;:52;6778:186;;6883:69;6919:6;6883:69;;;;;;;;;;;;;;;;;:11;:19;6895:6;6883:19;;;;;;;;;;;;;;;:31;6903:10;6883:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;6849:11;:19;6861:6;6849:19;;;;;;;;;;;;;;;:31;6869:10;6849:31;;;;;;;;;;;;;;;:103;;;;6778:186;6983:40;6997:6;7005:9;7016:6;6983:13;:40::i;:::-;6976:47;;6661:370;;;;;:::o;12996:137::-;13049:7;13109:9;:15;3611:42;13109:15;;;;;;;;;;;;;;;;13091:9;:15;3538:42;13091:15;;;;;;;;;;;;;;;;3787:1;3849:2;:12;;;;:::i;:::-;3835:11;:26;;;;:::i;:::-;13077:29;;;;:::i;:::-;:47;;;;:::i;:::-;13069:56;;12996:137;:::o;2570:103::-;2625:4;2660:5;;;;;;;;;;;2649:16;;:7;:16;;;2642:23;;2570:103;;;:::o;3754:34::-;3787:1;3754:34;:::o;4105:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12570:231::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12687:13:::1;12672:12;:28;;;;12727:14;12711:13;:30;;;;12779:14;12763:13;:30;;;;:::i;:::-;12752:8;:41;;;;12570:231:::0;;:::o;7883:303::-;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8014:3:::1;7995:9;;:16;;:22;7987:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8074:9;8069:110;8091:9;;:16;;8087:1;:20;8069:110;;;8161:6;8129:15;:29;8145:9;;8155:1;8145:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8129:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;8109:3;;;;:::i;:::-;;;8069:110;;;;7883:303:::0;;;:::o;6367:122::-;6422:4;6446:35;6454:7;6463:17;6446:7;:35::i;:::-;6439:42;;6367:122;;;:::o;4272:31::-;;;;:::o;12363:199::-;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12480:5:::1;12463:14;:22;;;;12512:4;12496:13;:20;;;;12548:6;12527:18;:27;;;;12363:199:::0;;;:::o;3983:45::-;;;;;;;;;;;;;;;;;:::o;2796:125::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2879:5:::1;2855:14;:21;2870:5:::0;::::1;;;;;;;;;;2855:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;2911:1;2895:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2796:125::o:0;11181:286::-;11272:12;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11310:1:::1;11300:6;:11:::0;11297:95:::1;;11342:12;11336:29;;;11374:4;11336:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11327:53;;11297:95;11417:12;11411:28;;;11440:10;11452:6;11411:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11404:55;;11181:286:::0;;;;:::o;3924:50::-;;;;:::o;3870:47::-;;;;:::o;5918:78::-;5970:7;5988:5;;;;;;;;;;;5981:12;;5918:78;:::o;4156:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3707:40::-;;;;;;;;;;;;;;;;;;;:::o;11475:107::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11541:4:::1;11527:11;;:18;;;;;;;;;;;;;;;;;;11570:4;11556:11;;:18;;;;;;;;;;;;;;;;;;11475:107::o:0;4681:29::-;;;:::o;6497:156::-;6577:4;6601:44;6615:10;6627:9;6638:6;6601:13;:44::i;:::-;6594:51;;6497:156;;;;:::o;2299:94::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2381:4:::1;2359:14:::0;:19:::1;2374:3;2359:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2299:94:::0;:::o;7308:262::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7442:1:::1;7414:24;:29;;7406:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7558:4;7529:24;3787:1;3849:2;:12;;;;:::i;:::-;3835:11;:26;;;;:::i;:::-;7515:38;;;;:::i;:::-;7514:48;;;;:::i;:::-;7499:12;:63;;;;7308:262:::0;:::o;4211:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;6002:133::-;6086:7;6104:11;:19;6116:6;6104:19;;;;;;;;;;;;;;;:28;6124:7;6104:28;;;;;;;;;;;;;;;;6097:35;;6002:133;;;;:::o;12809:179::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12919:8:::1;12905:11;;:22;;;;;;;;;;;;;;;;;;12968:12;3787:1;3849:2;:12;;;;:::i;:::-;3835:11;:26;;;;:::i;:::-;12954;;;;:::i;:::-;12938:13;:42;;;;12809:179:::0;;:::o;2401:161::-;2150:19;2158:10;2150:7;:19::i;:::-;2142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2480:5:::1;::::0;::::1;;;;;;;;2473:12;;:3;:12;;::::0;2465:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2549:5;2527:14;:19;2542:3;2527:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2401:161:::0;:::o;4650:24::-;;;;;;;;;;;;;:::o;2681:107::-;2737:4;2761:14;:19;2776:3;2761:19;;;;;;;;;;;;;;;;;;;;;;;;;2754:26;;2681:107;;;:::o;422:192::-;508:7;541:1;536;:6;;544:12;528:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;568:9;584:1;580;:5;;;;:::i;:::-;568:17;;605:1;598:8;;;422:192;;;;;:::o;8513:1115::-;8605:4;8625:6;;;;;;;;;;;8622:63;;;8641:41;8656:6;8664:9;8675:6;8641:14;:41::i;:::-;8634:48;;;;8622:63;8701:14;:22;8716:6;8701:22;;;;;;;;;;;;;;;;;;;;;;;;;8700:23;:53;;;;;8728:14;:25;8743:9;8728:25;;;;;;;;;;;;;;;;;;;;;;;;;8727:26;8700:53;8697:127;;;8777:11;;;;;;;;;;;8769:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8697:127;8841:14;:22;8856:6;8841:22;;;;;;;;;;;;;;;;;;;;;;;;;8840:23;:55;;;;;8868:19;:27;8888:6;8868:27;;;;;;;;;;;;;;;;;;;;;;;;;8867:28;8840:55;:90;;;;;8900:19;:30;8920:9;8900:30;;;;;;;;;;;;;;;;;;;;;;;;;8899:31;8840:90;:111;;;;;8947:4;8934:17;;:9;:17;;;;8840:111;8836:230;;;9011:15;;9000:6;8977:9;:20;8987:9;8977:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;8976:50;;8968:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8836:230;9101:12;;9091:6;:22;;9090:51;;;;9118:15;:23;9134:6;9118:23;;;;;;;;;;;;;;;;;;;;;;;;;9090:51;:81;;;;9145:15;:26;9161:9;9145:26;;;;;;;;;;;;;;;;;;;;;;;;;9090:81;9082:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;9213:16;:14;:16::i;:::-;9210:35;;;9232:10;:8;:10::i;:::-;9210:35;9277:53;9299:6;9277:53;;;;;;;;;;;;;;;;;:9;:17;9287:6;9277:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9257:9;:17;9267:6;9257:17;;;;;;;;;;;;;;;:73;;;;9343:22;9369:11;:19;9381:6;9369:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;9392:11;:22;9404:9;9392:22;;;;;;;;;;;;;;;;;;;;;;;;;9369:45;9368:93;;9427:34;9435:6;9443;9451:9;9427:7;:34::i;:::-;9368:93;;;9418:6;9368:93;9343:118;;9497:40;9522:14;9497:9;:20;9507:9;9497:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9474:9;:20;9484:9;9474:20;;;;;;;;;;;;;;;:63;;;;9572:9;9555:43;;9564:6;9555:43;;;9583:14;9555:43;;;;;;:::i;:::-;;;;;;;;9616:4;9609:11;;;8513:1115;;;;;;:::o;9640:330::-;9733:4;9770:53;9792:6;9770:53;;;;;;;;;;;;;;;;;:9;:17;9780:6;9770:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9750:9;:17;9760:6;9750:17;;;;;;;;;;;;;;;:73;;;;9857:32;9882:6;9857:9;:20;9867:9;9857:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9834:9;:20;9844:9;9834:20;;;;;;;;;;;;;;;:55;;;;9922:9;9905:35;;9914:6;9905:35;;;9933:6;9905:35;;;;;;:::i;:::-;;;;;;;;9958:4;9951:11;;9640:330;;;;;:::o;10709:197::-;10758:4;10796;10782:18;;:10;:18;;;;:38;;;;;10814:6;;;;;;;;;;;10813:7;10782:38;:62;;;;;10833:11;;;;;;;;;;;10782:62;:116;;;;;10885:13;;10857:9;:24;10875:4;10857:24;;;;;;;;;;;;;;;;:41;;10782:116;10775:123;;10709:197;:::o;11590:765::-;4878:4;4869:6;;:13;;;;;;;;;;;;;;;;;;11641:21:::1;11679:1;11665:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11641:40;;11710:4;11692;11697:1;11692:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11736:4;11726;11731:1;11726:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11753:6;;;;;;;;;;;:57;;;11825:13;;11853:1;11869:4;11896;11916:15;11753:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11955:17;11975:21;11955:41;;12009:26;12067:8;;12051:12;;12039:9;:24;;;;:::i;:::-;12038:37;;;;:::i;:::-;12009:66;;12086:27;12146:8;;12129:13;;12117:9;:25;;;;:::i;:::-;12116:38;;;;:::i;:::-;12086:68;;12168:15;12196:20;;;;;;;;;;;12188:34;;12230:18;12188:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12167:86;;;12288:21;;;;;;;;;;;12280:35;;12323:19;12280:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12264:83;;;;;11628:727;;;;;4896:5:::0;4887:6;;:14;;;;;;;;;;;;;;;;;;11590:765::o;9978:723::-;10064:7;10097:1;10087:6;:11;:28;;;;10114:1;10102:8;;:13;10087:28;10084:72;;;10138:6;10131:13;;;;10084:72;10168:18;10189;;10168:39;;10236:4;10223:17;;:9;:17;;;10220:154;;10270:14;;10257:27;;10220:154;;;10315:4;10305:14;;:6;:14;;;10302:72;;10349:13;;10336:26;;10302:72;10220:154;10386:17;10406:62;10464:3;4451;10447:20;;;;:::i;:::-;10406:36;10431:10;10406:20;10417:8;;10406:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10386:82;;10496:1;10484:9;:13;10481:172;;;10540:39;10569:9;10540;:24;10558:4;10540:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10513:9;:24;10531:4;10513:24;;;;;;;;;;;;;;;:66;;;;10624:4;10599:42;;10608:6;10599:42;;;10631:9;10599:42;;;;;;:::i;:::-;;;;;;;;10481:172;10672:21;10683:9;10672:6;:10;;:21;;;;:::i;:::-;10665:28;;;;9978:723;;;;;;:::o;93:181::-;151:7;171:9;187:1;183;:5;;;;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;265:1;258:8;;;93:181;;;;:::o;620:250::-;678:7;707:1;702;:6;698:47;;732:1;725:8;;;;698:47;757:9;773:1;769;:5;;;;:::i;:::-;757:17;;802:1;797;793;:5;;;;:::i;:::-;:10;785:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;861:1;854:8;;;620:250;;;;;:::o;876:132::-;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;954:46;;876:132;;;;:::o;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;358:50;;280:136;;;;:::o;1014:189::-;1100:7;1132:1;1128;:5;1135:12;1120:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1159:9;1175:1;1171;:5;;;;:::i;:::-;1159:17;;1194:1;1187:8;;;1014: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:99::-;2407:6;2441:5;2435:12;2425:22;;2355:99;;;:::o;2460:169::-;2544:11;2578:6;2573:3;2566:19;2618:4;2613:3;2609:14;2594:29;;2460:169;;;;:::o;2635:246::-;2716:1;2726:113;2740:6;2737:1;2734:13;2726:113;;;2825:1;2820:3;2816:11;2810:18;2806:1;2801:3;2797:11;2790:39;2762:2;2759:1;2755:10;2750:15;;2726:113;;;2873:1;2864:6;2859:3;2855:16;2848:27;2697:184;2635:246;;;:::o;2887:102::-;2928:6;2979:2;2975:7;2970:2;2963:5;2959:14;2955:28;2945:38;;2887:102;;;:::o;2995:377::-;3083:3;3111:39;3144:5;3111:39;:::i;:::-;3166:71;3230:6;3225:3;3166:71;:::i;:::-;3159:78;;3246:65;3304:6;3299:3;3292:4;3285:5;3281:16;3246:65;:::i;:::-;3336:29;3358:6;3336:29;:::i;:::-;3331:3;3327:39;3320:46;;3087:285;2995:377;;;;:::o;3378:313::-;3491:4;3529:2;3518:9;3514:18;3506:26;;3578:9;3572:4;3568:20;3564:1;3553:9;3549:17;3542:47;3606:78;3679:4;3670:6;3606:78;:::i;:::-;3598:86;;3378:313;;;;:::o;3697:77::-;3734:7;3763:5;3752:16;;3697:77;;;:::o;3780:118::-;3867:24;3885:5;3867:24;:::i;:::-;3862:3;3855:37;3780:118;;:::o;3904:222::-;3997:4;4035:2;4024:9;4020:18;4012:26;;4048:71;4116:1;4105:9;4101:17;4092:6;4048:71;:::i;:::-;3904:222;;;;:::o;4132:122::-;4205:24;4223:5;4205:24;:::i;:::-;4198:5;4195:35;4185:63;;4244:1;4241;4234:12;4185:63;4132:122;:::o;4260:139::-;4306:5;4344:6;4331:20;4322:29;;4360:33;4387:5;4360:33;:::i;:::-;4260:139;;;;:::o;4405:329::-;4464:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4405:329;;;;:::o;4740:126::-;4777:7;4817:42;4810:5;4806:54;4795:65;;4740:126;;;:::o;4872:96::-;4909:7;4938:24;4956:5;4938:24;:::i;:::-;4927:35;;4872:96;;;:::o;4974:122::-;5047:24;5065:5;5047:24;:::i;:::-;5040:5;5037:35;5027:63;;5086:1;5083;5076:12;5027:63;4974:122;:::o;5102:139::-;5148:5;5186:6;5173:20;5164:29;;5202:33;5229:5;5202:33;:::i;:::-;5102:139;;;;:::o;5247:474::-;5315:6;5323;5372:2;5360:9;5351:7;5347:23;5343:32;5340:119;;;5378:79;;:::i;:::-;5340:119;5498:1;5523:53;5568:7;5559:6;5548:9;5544:22;5523:53;:::i;:::-;5513:63;;5469:117;5625:2;5651:53;5696:7;5687:6;5676:9;5672:22;5651:53;:::i;:::-;5641:63;;5596:118;5247:474;;;;;:::o;5727:109::-;5808:21;5823:5;5808:21;:::i;:::-;5803:3;5796:34;5727:109;;:::o;5842:210::-;5929:4;5967:2;5956:9;5952:18;5944:26;;5980:65;6042:1;6031:9;6027:17;6018:6;5980:65;:::i;:::-;5842:210;;;;:::o;6058:619::-;6135:6;6143;6151;6200:2;6188:9;6179:7;6175:23;6171:32;6168:119;;;6206:79;;:::i;:::-;6168:119;6326:1;6351:53;6396:7;6387:6;6376:9;6372:22;6351:53;:::i;:::-;6341:63;;6297:117;6453:2;6479:53;6524:7;6515:6;6504:9;6500:22;6479:53;:::i;:::-;6469:63;;6424:118;6581:2;6607:53;6652:7;6643:6;6632:9;6628:22;6607:53;:::i;:::-;6597:63;;6552:118;6058:619;;;;;:::o;6683:329::-;6742:6;6791:2;6779:9;6770:7;6766:23;6762:32;6759:119;;;6797:79;;:::i;:::-;6759:119;6917:1;6942:53;6987:7;6978:6;6967:9;6963:22;6942:53;:::i;:::-;6932:63;;6888:117;6683:329;;;;:::o;7018:86::-;7053:7;7093:4;7086:5;7082:16;7071:27;;7018:86;;;:::o;7110:112::-;7193:22;7209:5;7193:22;:::i;:::-;7188:3;7181:35;7110:112;;:::o;7228:214::-;7317:4;7355:2;7344:9;7340:18;7332:26;;7368:67;7432:1;7421:9;7417:17;7408:6;7368:67;:::i;:::-;7228:214;;;;:::o;7448:474::-;7516:6;7524;7573:2;7561:9;7552:7;7548:23;7544:32;7541:119;;;7579:79;;:::i;:::-;7541:119;7699:1;7724:53;7769:7;7760:6;7749:9;7745:22;7724:53;:::i;:::-;7714:63;;7670:117;7826:2;7852:53;7897:7;7888:6;7877:9;7873:22;7852:53;:::i;:::-;7842:63;;7797:118;7448:474;;;;;:::o;7928:619::-;8005:6;8013;8021;8070:2;8058:9;8049:7;8045:23;8041:32;8038:119;;;8076:79;;:::i;:::-;8038:119;8196:1;8221:53;8266:7;8257:6;8246:9;8242:22;8221:53;:::i;:::-;8211:63;;8167:117;8323:2;8349:53;8394:7;8385:6;8374:9;8370:22;8349:53;:::i;:::-;8339:63;;8294:118;8451:2;8477:53;8522:7;8513:6;8502:9;8498:22;8477:53;:::i;:::-;8467:63;;8422:118;7928:619;;;;;:::o;8553:118::-;8640:24;8658:5;8640:24;:::i;:::-;8635:3;8628:37;8553:118;;:::o;8677:222::-;8770:4;8808:2;8797:9;8793:18;8785:26;;8821:71;8889:1;8878:9;8874:17;8865:6;8821:71;:::i;:::-;8677:222;;;;:::o;8905:474::-;8973:6;8981;9030:2;9018:9;9009:7;9005:23;9001:32;8998:119;;;9036:79;;:::i;:::-;8998:119;9156:1;9181:53;9226:7;9217:6;9206:9;9202:22;9181:53;:::i;:::-;9171:63;;9127:117;9283:2;9309:53;9354:7;9345:6;9334:9;9330:22;9309:53;:::i;:::-;9299:63;;9254:118;8905:474;;;;;:::o;9385:468::-;9450:6;9458;9507:2;9495:9;9486:7;9482:23;9478:32;9475:119;;;9513:79;;:::i;:::-;9475:119;9633:1;9658:50;9700:7;9691:6;9680:9;9676:22;9658:50;:::i;:::-;9648:60;;9604:114;9757:2;9783:53;9828:7;9819:6;9808:9;9804:22;9783:53;:::i;:::-;9773:63;;9728:118;9385:468;;;;;:::o;9859:60::-;9887:3;9908:5;9901:12;;9859:60;;;:::o;9925:142::-;9975:9;10008:53;10026:34;10035:24;10053:5;10035:24;:::i;:::-;10026:34;:::i;:::-;10008:53;:::i;:::-;9995:66;;9925:142;;;:::o;10073:126::-;10123:9;10156:37;10187:5;10156:37;:::i;:::-;10143:50;;10073:126;;;:::o;10205:144::-;10273:9;10306:37;10337:5;10306:37;:::i;:::-;10293:50;;10205:144;;;:::o;10355:167::-;10460:55;10509:5;10460:55;:::i;:::-;10455:3;10448:68;10355:167;;:::o;10528:258::-;10639:4;10677:2;10666:9;10662:18;10654:26;;10690:89;10776:1;10765:9;10761:17;10752:6;10690:89;:::i;:::-;10528:258;;;;:::o;10792:161::-;10932:13;10928:1;10920:6;10916:14;10909:37;10792:161;:::o;10959:366::-;11101:3;11122:67;11186:2;11181:3;11122:67;:::i;:::-;11115:74;;11198:93;11287:3;11198:93;:::i;:::-;11316:2;11311:3;11307:12;11300:19;;10959:366;;;:::o;11331:419::-;11497:4;11535:2;11524:9;11520:18;11512:26;;11584:9;11578:4;11574:20;11570:1;11559:9;11555:17;11548:47;11612:131;11738:4;11612:131;:::i;:::-;11604:139;;11331:419;;;:::o;11756:224::-;11896:34;11892:1;11884:6;11880:14;11873:58;11965:7;11960:2;11952:6;11948:15;11941:32;11756:224;:::o;11986:366::-;12128:3;12149:67;12213:2;12208:3;12149:67;:::i;:::-;12142:74;;12225:93;12314:3;12225:93;:::i;:::-;12343:2;12338:3;12334:12;12327:19;;11986:366;;;:::o;12358:419::-;12524:4;12562:2;12551:9;12547:18;12539:26;;12611:9;12605:4;12601:20;12597:1;12586:9;12582:17;12575:47;12639:131;12765:4;12639:131;:::i;:::-;12631:139;;12358:419;;;:::o;12783:180::-;12831:77;12828:1;12821:88;12928:4;12925:1;12918:15;12952:4;12949:1;12942:15;12969:180;13017:77;13014:1;13007:88;13114:4;13111:1;13104:15;13138:4;13135:1;13128:15;13155:233;13194:3;13217:24;13235:5;13217:24;:::i;:::-;13208:33;;13263:66;13256:5;13253:77;13250:103;;13333:18;;:::i;:::-;13250:103;13380:1;13373:5;13369:13;13362:20;;13155:233;;;:::o;13394:156::-;13534:8;13530:1;13522:6;13518:14;13511:32;13394:156;:::o;13556:365::-;13698:3;13719:66;13783:1;13778:3;13719:66;:::i;:::-;13712:73;;13794:93;13883:3;13794:93;:::i;:::-;13912:2;13907:3;13903:12;13896:19;;13556:365;;;:::o;13927:419::-;14093:4;14131:2;14120:9;14116:18;14108:26;;14180:9;14174:4;14170:20;14166:1;14155:9;14151:17;14144:47;14208:131;14334:4;14208:131;:::i;:::-;14200:139;;13927:419;;;:::o;14352:223::-;14492:34;14488:1;14480:6;14476:14;14469:58;14561:6;14556:2;14548:6;14544:15;14537:31;14352:223;:::o;14581:366::-;14723:3;14744:67;14808:2;14803:3;14744:67;:::i;:::-;14737:74;;14820:93;14909:3;14820:93;:::i;:::-;14938:2;14933:3;14929:12;14922:19;;14581:366;;;:::o;14953:419::-;15119:4;15157:2;15146:9;15142:18;15134:26;;15206:9;15200:4;15196:20;15192:1;15181:9;15177:17;15170:47;15234:131;15360:4;15234:131;:::i;:::-;15226:139;;14953:419;;;:::o;15378:102::-;15420:8;15467:5;15464:1;15460:13;15439:34;;15378:102;;;:::o;15486:848::-;15547:5;15554:4;15578:6;15569:15;;15602:5;15593:14;;15616:712;15637:1;15627:8;15624:15;15616:712;;;15732:4;15727:3;15723:14;15717:4;15714:24;15711:50;;;15741:18;;:::i;:::-;15711:50;15791:1;15781:8;15777:16;15774:451;;;16206:4;16199:5;16195:16;16186:25;;15774:451;16256:4;16250;16246:15;16238:23;;16286:32;16309:8;16286:32;:::i;:::-;16274:44;;15616:712;;;15486:848;;;;;;;:::o;16340:1073::-;16394:5;16585:8;16575:40;;16606:1;16597:10;;16608:5;;16575:40;16634:4;16624:36;;16651:1;16642:10;;16653:5;;16624:36;16720:4;16768:1;16763:27;;;;16804:1;16799:191;;;;16713:277;;16763:27;16781:1;16772:10;;16783:5;;;16799:191;16844:3;16834:8;16831:17;16828:43;;;16851:18;;:::i;:::-;16828:43;16900:8;16897:1;16893:16;16884:25;;16935:3;16928:5;16925:14;16922:40;;;16942:18;;:::i;:::-;16922:40;16975:5;;;16713:277;;17099:2;17089:8;17086:16;17080:3;17074:4;17071:13;17067:36;17049:2;17039:8;17036:16;17031:2;17025:4;17022:12;17018:35;17002:111;16999:246;;;17155:8;17149:4;17145:19;17136:28;;17190:3;17183:5;17180:14;17177:40;;;17197:18;;:::i;:::-;17177:40;17230:5;;16999:246;17270:42;17308:3;17298:8;17292:4;17289:1;17270:42;:::i;:::-;17255:57;;;;17344:4;17339:3;17335:14;17328:5;17325:25;17322:51;;;17353:18;;:::i;:::-;17322:51;17402:4;17395:5;17391:16;17382:25;;16340:1073;;;;;;:::o;17419:281::-;17477:5;17501:23;17519:4;17501:23;:::i;:::-;17493:31;;17545:25;17561:8;17545:25;:::i;:::-;17533:37;;17589:104;17626:66;17616:8;17610:4;17589:104;:::i;:::-;17580:113;;17419:281;;;;:::o;17706:348::-;17746:7;17769:20;17787:1;17769:20;:::i;:::-;17764:25;;17803:20;17821:1;17803:20;:::i;:::-;17798:25;;17991:1;17923:66;17919:74;17916:1;17913:81;17908:1;17901:9;17894:17;17890:105;17887:131;;;17998:18;;:::i;:::-;17887:131;18046:1;18043;18039:9;18028:20;;17706:348;;;;:::o;18060:180::-;18108:77;18105:1;18098:88;18205:4;18202:1;18195:15;18229:4;18226:1;18219:15;18246:185;18286:1;18303:20;18321:1;18303:20;:::i;:::-;18298:25;;18337:20;18355:1;18337:20;:::i;:::-;18332:25;;18376:1;18366:35;;18381:18;;:::i;:::-;18366:35;18423:1;18420;18416:9;18411:14;;18246:185;;;;:::o;18437:194::-;18477:4;18497:20;18515:1;18497:20;:::i;:::-;18492:25;;18531:20;18549:1;18531:20;:::i;:::-;18526:25;;18575:1;18572;18568:9;18560:17;;18599:1;18593:4;18590:11;18587:37;;;18604:18;;:::i;:::-;18587:37;18437:194;;;;:::o;18637:191::-;18677:3;18696:20;18714:1;18696:20;:::i;:::-;18691:25;;18730:20;18748:1;18730:20;:::i;:::-;18725:25;;18773:1;18770;18766:9;18759:16;;18794:3;18791:1;18788:10;18785:36;;;18801:18;;:::i;:::-;18785:36;18637:191;;;;:::o;18834:143::-;18891:5;18922:6;18916:13;18907:22;;18938:33;18965:5;18938:33;:::i;:::-;18834:143;;;;:::o;18983:351::-;19053:6;19102:2;19090:9;19081:7;19077:23;19073:32;19070:119;;;19108:79;;:::i;:::-;19070:119;19228:1;19253:64;19309:7;19300:6;19289:9;19285:22;19253:64;:::i;:::-;19243:74;;19199:128;18983:351;;;;:::o;19340:332::-;19461:4;19499:2;19488:9;19484:18;19476:26;;19512:71;19580:1;19569:9;19565:17;19556:6;19512:71;:::i;:::-;19593:72;19661:2;19650:9;19646:18;19637:6;19593:72;:::i;:::-;19340:332;;;;;:::o;19678:137::-;19732:5;19763:6;19757:13;19748:22;;19779:30;19803:5;19779:30;:::i;:::-;19678:137;;;;:::o;19821:345::-;19888:6;19937:2;19925:9;19916:7;19912:23;19908:32;19905:119;;;19943:79;;:::i;:::-;19905:119;20063:1;20088:61;20141:7;20132:6;20121:9;20117:22;20088:61;:::i;:::-;20078:71;;20034:125;19821:345;;;;:::o;20172:228::-;20312:34;20308:1;20300:6;20296:14;20289:58;20381:11;20376:2;20368:6;20364:15;20357:36;20172:228;:::o;20406:366::-;20548:3;20569:67;20633:2;20628:3;20569:67;:::i;:::-;20562:74;;20645:93;20734:3;20645:93;:::i;:::-;20763:2;20758:3;20754:12;20747:19;;20406:366;;;:::o;20778:419::-;20944:4;20982:2;20971:9;20967:18;20959:26;;21031:9;21025:4;21021:20;21017:1;21006:9;21002:17;20995:47;21059:131;21185:4;21059:131;:::i;:::-;21051:139;;20778:419;;;:::o;21203:176::-;21343:28;21339:1;21331:6;21327:14;21320:52;21203:176;:::o;21385:366::-;21527:3;21548:67;21612:2;21607:3;21548:67;:::i;:::-;21541:74;;21624:93;21713:3;21624:93;:::i;:::-;21742:2;21737:3;21733:12;21726:19;;21385:366;;;:::o;21757:419::-;21923:4;21961:2;21950:9;21946:18;21938:26;;22010:9;22004:4;22000:20;21996:1;21985:9;21981:17;21974:47;22038:131;22164:4;22038:131;:::i;:::-;22030:139;;21757:419;;;:::o;22182:170::-;22322:22;22318:1;22310:6;22306:14;22299:46;22182:170;:::o;22358:366::-;22500:3;22521:67;22585:2;22580:3;22521:67;:::i;:::-;22514:74;;22597:93;22686:3;22597:93;:::i;:::-;22715:2;22710:3;22706:12;22699:19;;22358:366;;;:::o;22730:419::-;22896:4;22934:2;22923:9;22919:18;22911:26;;22983:9;22977:4;22973:20;22969:1;22958:9;22954:17;22947:47;23011:131;23137:4;23011:131;:::i;:::-;23003:139;;22730:419;;;:::o;23155:174::-;23295:26;23291:1;23283:6;23279:14;23272:50;23155:174;:::o;23335:366::-;23477:3;23498:67;23562:2;23557:3;23498:67;:::i;:::-;23491:74;;23574:93;23663:3;23574:93;:::i;:::-;23692:2;23687:3;23683:12;23676:19;;23335:366;;;:::o;23707:419::-;23873:4;23911:2;23900:9;23896:18;23888:26;;23960:9;23954:4;23950:20;23946:1;23935:9;23931:17;23924:47;23988:131;24114:4;23988:131;:::i;:::-;23980:139;;23707:419;;;:::o;24132:171::-;24272:23;24268:1;24260:6;24256:14;24249:47;24132:171;:::o;24309:366::-;24451:3;24472:67;24536:2;24531:3;24472:67;:::i;:::-;24465:74;;24548:93;24637:3;24548:93;:::i;:::-;24666:2;24661:3;24657:12;24650:19;;24309:366;;;:::o;24681:419::-;24847:4;24885:2;24874:9;24870:18;24862:26;;24934:9;24928:4;24924:20;24920:1;24909:9;24905:17;24898:47;24962:131;25088:4;24962:131;:::i;:::-;24954:139;;24681:419;;;:::o;25106:180::-;25154:77;25151:1;25144:88;25251:4;25248:1;25241:15;25275:4;25272:1;25265:15;25292:85;25337:7;25366:5;25355:16;;25292:85;;;:::o;25383:158::-;25441:9;25474:61;25492:42;25501:32;25527:5;25501:32;:::i;:::-;25492:42;:::i;:::-;25474:61;:::i;:::-;25461:74;;25383:158;;;:::o;25547:147::-;25642:45;25681:5;25642:45;:::i;:::-;25637:3;25630:58;25547:147;;:::o;25700:114::-;25767:6;25801:5;25795:12;25785:22;;25700:114;;;:::o;25820:184::-;25919:11;25953:6;25948:3;25941:19;25993:4;25988:3;25984:14;25969:29;;25820:184;;;;:::o;26010:132::-;26077:4;26100:3;26092:11;;26130:4;26125:3;26121:14;26113:22;;26010:132;;;:::o;26148:108::-;26225:24;26243:5;26225:24;:::i;:::-;26220:3;26213:37;26148:108;;:::o;26262:179::-;26331:10;26352:46;26394:3;26386:6;26352:46;:::i;:::-;26430:4;26425:3;26421:14;26407:28;;26262:179;;;;:::o;26447:113::-;26517:4;26549;26544:3;26540:14;26532:22;;26447:113;;;:::o;26596:732::-;26715:3;26744:54;26792:5;26744:54;:::i;:::-;26814:86;26893:6;26888:3;26814:86;:::i;:::-;26807:93;;26924:56;26974:5;26924:56;:::i;:::-;27003:7;27034:1;27019:284;27044:6;27041:1;27038:13;27019:284;;;27120:6;27114:13;27147:63;27206:3;27191:13;27147:63;:::i;:::-;27140:70;;27233:60;27286:6;27233:60;:::i;:::-;27223:70;;27079:224;27066:1;27063;27059:9;27054:14;;27019:284;;;27023:14;27319:3;27312:10;;26720:608;;;26596:732;;;;:::o;27334:831::-;27597:4;27635:3;27624:9;27620:19;27612:27;;27649:71;27717:1;27706:9;27702:17;27693:6;27649:71;:::i;:::-;27730:80;27806:2;27795:9;27791:18;27782:6;27730:80;:::i;:::-;27857:9;27851:4;27847:20;27842:2;27831:9;27827:18;27820:48;27885:108;27988:4;27979:6;27885:108;:::i;:::-;27877:116;;28003:72;28071:2;28060:9;28056:18;28047:6;28003:72;:::i;:::-;28085:73;28153:3;28142:9;28138:19;28129:6;28085:73;:::i;:::-;27334:831;;;;;;;;:::o;28171:147::-;28272:11;28309:3;28294:18;;28171:147;;;;:::o;28324:114::-;;:::o;28444:398::-;28603:3;28624:83;28705:1;28700:3;28624:83;:::i;:::-;28617:90;;28716:93;28805:3;28716:93;:::i;:::-;28834:1;28829:3;28825:11;28818:18;;28444:398;;;:::o;28848:379::-;29032:3;29054:147;29197:3;29054:147;:::i;:::-;29047:154;;29218:3;29211:10;;28848:379;;;:::o;29233:177::-;29373:29;29369:1;29361:6;29357:14;29350:53;29233:177;:::o;29416:366::-;29558:3;29579:67;29643:2;29638:3;29579:67;:::i;:::-;29572:74;;29655:93;29744:3;29655:93;:::i;:::-;29773:2;29768:3;29764:12;29757:19;;29416:366;;;:::o;29788:419::-;29954:4;29992:2;29981:9;29977:18;29969:26;;30041:9;30035:4;30031:20;30027:1;30016:9;30012:17;30005:47;30069:131;30195:4;30069:131;:::i;:::-;30061:139;;29788:419;;;:::o;30213:220::-;30353:34;30349:1;30341:6;30337:14;30330:58;30422:3;30417:2;30409:6;30405:15;30398:28;30213:220;:::o;30439:366::-;30581:3;30602:67;30666:2;30661:3;30602:67;:::i;:::-;30595:74;;30678:93;30767:3;30678:93;:::i;:::-;30796:2;30791:3;30787:12;30780:19;;30439:366;;;:::o;30811:419::-;30977:4;31015:2;31004:9;31000:18;30992:26;;31064:9;31058:4;31054:20;31050:1;31039:9;31035:17;31028:47;31092:131;31218:4;31092:131;:::i;:::-;31084:139;;30811:419;;;:::o

Swarm Source

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