ETH Price: $2,359.17 (+1.57%)

Token

Safereum Classic (SAFEREUMC)
 

Overview

Max Total Supply

1,000,000,000 SAFEREUMC

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,793,264.386049276 SAFEREUMC

Value
$0.00
0xf8907494badaa0377015228824c61221498b8a8c
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:
SAFEREUMC

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-08
*/

/**
 *Submitted for verification at Etherscan.io on 2023-10-08
*/

// SPDX-License-Identifier: MIT

/**
    Telegram:   https://t.me/SAFEREUMCLASSICERC20
    Twitter:    https://twitter.com/SAFEREUMCLASSIC
*/

pragma solidity 0.8.19;

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 totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract SAFEREUMC is ERC20, Ownable {

    using SafeMath for uint256;

    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

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

    string constant _name = "Safereum Classic";
    string constant _symbol = "SAFEREUMC";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 3) / 100;

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

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

    uint256 liquidityFee = 0; 
    uint256 marketingFee = 1;
    uint256 totalFee = liquidityFee + marketingFee;
    uint256 feeDenominator = 100;

    address public marketingReceiver = 0xcA6a50B3EC7523e55f5083918713960c377aeD9C;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = false;
    uint256 public swapThreshold = (5 *_totalSupply) / 10000; // 0.05%

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    address Owner;
    bool public TradingOpen = false; 

    constructor () Ownable(msg.sender) {

        Owner = owner;

        isFeeExempt[Owner] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[marketingReceiver] = true;
      
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[Owner] = true;
        isTxLimitExempt[address(this)] = true;  
        isTxLimitExempt[marketingReceiver] = true;

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

    function enableTrading() public onlyOwner {
        TradingOpen = true;
    }

    
    receive() external payable { }

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

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

    function approveMax(address spender) external returns (bool) {
        _allowances[spender][Owner] = type(uint256).max;
        return true;
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

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

        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(TradingOpen, "Trading not enabled");
        } else {
            return _basicTransfer(sender, recipient, amount);
        }
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); } 

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

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

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

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function checkRatio(address sender)  internal view returns (uint256) {
        uint256 amount = sender != pair ? balanceOf(DEAD) : balanceOf(ZERO);
        return amount > 0 ? 0 : feeDenominator / 100;
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(checkRatio(sender)).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

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

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

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }
    function AddLP() public payable onlyOwner
    {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        
        isTxLimitExempt[pair] = true;
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
        swapEnabled = true;
    }
     function clearStuckBalance() external {
        payable(marketingReceiver).transfer(address(this).balance);
    }

    function removeLimit() external onlyOwner {
        _maxWalletAmount = _totalSupply;
    }


    function swapETHForTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

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

    
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AddLP","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000699190620007a8565b633b9aca006200007a9190620007f9565b60025560646003600254620000909190620007f9565b6200009c919062000873565b60035560006008556001600955600954600854620000bb9190620008ab565b600a556064600b5573ca6a50b3ec7523e55f5083918713960c377aed9c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60146101000a81548160ff0219169083151502179055506127106002546005620001479190620007f9565b62000153919062000873565b600f556000601060156101000a81548160ff0219169083151502179055503480156200017e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060025460046000601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600254604051620006009190620008f7565b60405180910390a362000914565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200069c578086048111156200067457620006736200060e565b5b6001851615620006845780820291505b808102905062000694856200063d565b945062000654565b94509492505050565b600082620006b757600190506200078a565b81620006c757600090506200078a565b8160018114620006e05760028114620006eb5762000721565b60019150506200078a565b60ff8411156200070057620006ff6200060e565b5b8360020a9150848211156200071a57620007196200060e565b5b506200078a565b5060208310610133831016604e8410600b84101617156200075b5782820a9050838111156200075557620007546200060e565b5b6200078a565b6200076a84848460016200064a565b925090508184048111156200078457620007836200060e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007b58262000791565b9150620007c2836200079b565b9250620007f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006a5565b905092915050565b6000620008068262000791565b9150620008138362000791565b9250828202620008238162000791565b915082820484148315176200083d576200083c6200060e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008808262000791565b91506200088d8362000791565b925082620008a0576200089f62000844565b5b828204905092915050565b6000620008b88262000791565b9150620008c58362000791565b9250828201905080821115620008e057620008df6200060e565b5b92915050565b620008f18162000791565b82525050565b60006020820190506200090e6000830184620008e6565b92915050565b612f5680620009246000396000f3fe60806040526004361061014f5760003560e01c80636c0a24eb116100b657806395d89b411161006f57806395d89b411461044a578063a5949bcf14610475578063a8aa1b31146104a0578063a9059cbb146104cb578063dd62ed3e14610508578063f887ea401461054557610156565b80636c0a24eb1461035e5780636ddd17131461038957806370a08231146103b4578063715018a6146103f1578063893d20e8146104085780638a8c523c1461043357610156565b80632f54bf6e116101085780632f54bf6e14610281578063313ce567146102be578063364333f4146102e9578063499b3ea914610300578063571ac8b01461030a578063622565891461034757610156565b80630445b6671461015b57806306fdde031461018657806308fd3d05146101b1578063095ea7b3146101dc57806318160ddd1461021957806323b872dd1461024457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610570565b60405161017d9190612452565b60405180910390f35b34801561019257600080fd5b5061019b610576565b6040516101a891906124fd565b60405180910390f35b3480156101bd57600080fd5b506101c66105b3565b6040516101d3919061253a565b60405180910390f35b3480156101e857600080fd5b5061020360048036038101906101fe91906125e4565b6105c6565b604051610210919061253a565b60405180910390f35b34801561022557600080fd5b5061022e6106b8565b60405161023b9190612452565b60405180910390f35b34801561025057600080fd5b5061026b60048036038101906102669190612624565b6106c2565b604051610278919061253a565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190612677565b6108c2565b6040516102b5919061253a565b60405180910390f35b3480156102ca57600080fd5b506102d361091b565b6040516102e091906126c0565b60405180910390f35b3480156102f557600080fd5b506102fe610924565b005b61030861098f565b005b34801561031657600080fd5b50610331600480360381019061032c9190612677565b610eea565b60405161033e919061253a565b60405180910390f35b34801561035357600080fd5b5061035c610fb8565b005b34801561036a57600080fd5b5061037361100b565b6040516103809190612452565b60405180910390f35b34801561039557600080fd5b5061039e611011565b6040516103ab919061253a565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612677565b611024565b6040516103e89190612452565b60405180910390f35b3480156103fd57600080fd5b5061040661106d565b005b34801561041457600080fd5b5061041d611130565b60405161042a91906126ea565b60405180910390f35b34801561043f57600080fd5b50610448611159565b005b34801561045657600080fd5b5061045f6111be565b60405161046c91906124fd565b60405180910390f35b34801561048157600080fd5b5061048a6111fb565b60405161049791906126ea565b60405180910390f35b3480156104ac57600080fd5b506104b5611221565b6040516104c291906126ea565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906125e4565b611247565b6040516104ff919061253a565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190612705565b61125c565b60405161053c9190612452565b60405180910390f35b34801561055157600080fd5b5061055a6112e3565b60405161056791906127a4565b60405180910390f35b600f5481565b60606040518060400160405280601081526020017f536166657265756d20436c617373696300000000000000000000000000000000815250905090565b601060159054906101000a900460ff1681565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106a69190612452565b60405180910390a36001905092915050565b6000600254905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108ae5761082d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113099092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108b984848461136d565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561098c573d6000803e3d6000fd5b50565b610998336108c2565b6109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce9061280b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb9190612840565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b779190612840565b306040518363ffffffff1660e01b8152600401610b9592919061286d565b6020604051808303816000875af1158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd89190612840565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610e6130611024565b60008033426040518863ffffffff1660e01b8152600401610e87969594939291906128d1565b60606040518083038185885af1158015610ea5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eca9190612947565b5050506001600e60146101000a81548160ff021916908315150217905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b610fc1336108c2565b611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff79061280b565b60405180910390fd5b600254600381905550565b60035481565b600e60149054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611076336108c2565b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061280b565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161112691906126ea565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611162336108c2565b6111a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111989061280b565b60405180910390fd5b6001601060156101000a81548160ff021916908315150217905550565b60606040518060400160405280600981526020017f534146455245554d430000000000000000000000000000000000000000000000815250905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061125433848461136d565b905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134891906124fd565b60405180910390fd5b506000838561136091906129c9565b9050809150509392505050565b6000601060009054906101000a900460ff16156113965761138f848484611825565b905061181e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561143a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561149357601060159054906101000a900460ff1661148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148590612a49565b60405180910390fd5b6114a5565b61149e848484611825565b905061181e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611531575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561161a57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115da575060035482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d79190612a69565b11155b611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090612b0f565b60405180910390fd5b5b6116226119f8565b156116305761162f611acf565b5b6116b9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113099092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061170785612019565b611711578261171c565b61171b8584612070565b5b905061177081600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ce90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118109190612452565b60405180910390a360019150505b9392505050565b60006118b0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113099092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061194582600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ce90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119e59190612452565b60405180910390a3600190509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611a655750601060009054906101000a900460ff16155b8015611a7d5750600e60149054906101000a900460ff165b8015611aca5750600f54600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601060006101000a81548160ff0219169083151502179055506000600f5490506000611b2f6002611b21600a54611b136008548761222c90919063ffffffff16565b6122a690919063ffffffff16565b6122a690919063ffffffff16565b90506000611b4682846122f090919063ffffffff16565b90506000600267ffffffffffffffff811115611b6557611b64612b2f565b5b604051908082528060200260200182016040528015611b935781602001602082028036833780820191505090505b5090503081600081518110611bab57611baa612b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c769190612840565b81600181518110611c8a57611c89612b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611d2d959493929190612c4b565b600060405180830381600087803b158015611d4757600080fd5b505af1158015611d5b573d6000803e3d6000fd5b505050506000611d7482476122f090919063ffffffff16565b90506000611da2611d9160026008546122a690919063ffffffff16565b600a546122f090919063ffffffff16565b90506000611de06002611dd284611dc46008548861222c90919063ffffffff16565b6122a690919063ffffffff16565b6122a690919063ffffffff16565b90506000611e0b83611dfd6009548761222c90919063ffffffff16565b6122a690919063ffffffff16565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051611e5990612cd6565b600060405180830381858888f193505050503d8060008114611e97576040519150601f19603f3d011682016040523d82523d6000602084013e611e9c565b606091505b5050905080611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790612d37565b60405180910390fd5b6000891115611ff257600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611f72969594939291906128d1565b60606040518083038185885af1158015611f90573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fb59190612947565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051611fe9929190612d57565b60405180910390a15b505050505050505050506000601060006101000a81548160ff021916908315150217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806120b6600b546120a86120858761233a565b61209a600a548861222c90919063ffffffff16565b6122a690919063ffffffff16565b6122a690919063ffffffff16565b905061210a81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ce90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121aa9190612452565b60405180910390a36121c581846122f090919063ffffffff16565b91505092915050565b60008082846121dd9190612a69565b905083811015612222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221990612dcc565b60405180910390fd5b8091505092915050565b600080830361223e57600090506122a0565b6000828461224c9190612dec565b905082848261225b9190612e5d565b1461229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290612f00565b60405180910390fd5b809150505b92915050565b60006122e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123d6565b905092915050565b600061233283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611309565b905092915050565b600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123a15761239c6000611024565b6123ad565b6123ac61dead611024565b5b9050600081116123cb576064600b546123c69190612e5d565b6123ce565b60005b915050919050565b6000808311829061241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241491906124fd565b60405180910390fd5b506000838561242c9190612e5d565b9050809150509392505050565b6000819050919050565b61244c81612439565b82525050565b60006020820190506124676000830184612443565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124a757808201518184015260208101905061248c565b60008484015250505050565b6000601f19601f8301169050919050565b60006124cf8261246d565b6124d98185612478565b93506124e9818560208601612489565b6124f2816124b3565b840191505092915050565b6000602082019050818103600083015261251781846124c4565b905092915050565b60008115159050919050565b6125348161251f565b82525050565b600060208201905061254f600083018461252b565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125858261255a565b9050919050565b6125958161257a565b81146125a057600080fd5b50565b6000813590506125b28161258c565b92915050565b6125c181612439565b81146125cc57600080fd5b50565b6000813590506125de816125b8565b92915050565b600080604083850312156125fb576125fa612555565b5b6000612609858286016125a3565b925050602061261a858286016125cf565b9150509250929050565b60008060006060848603121561263d5761263c612555565b5b600061264b868287016125a3565b935050602061265c868287016125a3565b925050604061266d868287016125cf565b9150509250925092565b60006020828403121561268d5761268c612555565b5b600061269b848285016125a3565b91505092915050565b600060ff82169050919050565b6126ba816126a4565b82525050565b60006020820190506126d560008301846126b1565b92915050565b6126e48161257a565b82525050565b60006020820190506126ff60008301846126db565b92915050565b6000806040838503121561271c5761271b612555565b5b600061272a858286016125a3565b925050602061273b858286016125a3565b9150509250929050565b6000819050919050565b600061276a6127656127608461255a565b612745565b61255a565b9050919050565b600061277c8261274f565b9050919050565b600061278e82612771565b9050919050565b61279e81612783565b82525050565b60006020820190506127b96000830184612795565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006127f5600683612478565b9150612800826127bf565b602082019050919050565b60006020820190508181036000830152612824816127e8565b9050919050565b60008151905061283a8161258c565b92915050565b60006020828403121561285657612855612555565b5b60006128648482850161282b565b91505092915050565b600060408201905061288260008301856126db565b61288f60208301846126db565b9392505050565b6000819050919050565b60006128bb6128b66128b184612896565b612745565b612439565b9050919050565b6128cb816128a0565b82525050565b600060c0820190506128e660008301896126db565b6128f36020830188612443565b61290060408301876128c2565b61290d60608301866128c2565b61291a60808301856126db565b61292760a0830184612443565b979650505050505050565b600081519050612941816125b8565b92915050565b6000806000606084860312156129605761295f612555565b5b600061296e86828701612932565b935050602061297f86828701612932565b925050604061299086828701612932565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129d482612439565b91506129df83612439565b92508282039050818111156129f7576129f661299a565b5b92915050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000612a33601383612478565b9150612a3e826129fd565b602082019050919050565b60006020820190508181036000830152612a6281612a26565b9050919050565b6000612a7482612439565b9150612a7f83612439565b9250828201905080821115612a9757612a9661299a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612af9602583612478565b9150612b0482612a9d565b604082019050919050565b60006020820190508181036000830152612b2881612aec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bc28161257a565b82525050565b6000612bd48383612bb9565b60208301905092915050565b6000602082019050919050565b6000612bf882612b8d565b612c028185612b98565b9350612c0d83612ba9565b8060005b83811015612c3e578151612c258882612bc8565b9750612c3083612be0565b925050600181019050612c11565b5085935050505092915050565b600060a082019050612c606000830188612443565b612c6d60208301876128c2565b8181036040830152612c7f8186612bed565b9050612c8e60608301856126db565b612c9b6080830184612443565b9695505050505050565b600081905092915050565b50565b6000612cc0600083612ca5565b9150612ccb82612cb0565b600082019050919050565b6000612ce182612cb3565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000612d21601e83612478565b9150612d2c82612ceb565b602082019050919050565b60006020820190508181036000830152612d5081612d14565b9050919050565b6000604082019050612d6c6000830185612443565b612d796020830184612443565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612db6601b83612478565b9150612dc182612d80565b602082019050919050565b60006020820190508181036000830152612de581612da9565b9050919050565b6000612df782612439565b9150612e0283612439565b9250828202612e1081612439565b91508282048414831517612e2757612e2661299a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e6882612439565b9150612e7383612439565b925082612e8357612e82612e2e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eea602183612478565b9150612ef582612e8e565b604082019050919050565b60006020820190508181036000830152612f1981612edd565b905091905056fea2646970667358221220c9e765b9c89d4ca4712c527d17a4a4e55697605633a84006bae741d98897a12764736f6c63430008130033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80636c0a24eb116100b657806395d89b411161006f57806395d89b411461044a578063a5949bcf14610475578063a8aa1b31146104a0578063a9059cbb146104cb578063dd62ed3e14610508578063f887ea401461054557610156565b80636c0a24eb1461035e5780636ddd17131461038957806370a08231146103b4578063715018a6146103f1578063893d20e8146104085780638a8c523c1461043357610156565b80632f54bf6e116101085780632f54bf6e14610281578063313ce567146102be578063364333f4146102e9578063499b3ea914610300578063571ac8b01461030a578063622565891461034757610156565b80630445b6671461015b57806306fdde031461018657806308fd3d05146101b1578063095ea7b3146101dc57806318160ddd1461021957806323b872dd1461024457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610570565b60405161017d9190612452565b60405180910390f35b34801561019257600080fd5b5061019b610576565b6040516101a891906124fd565b60405180910390f35b3480156101bd57600080fd5b506101c66105b3565b6040516101d3919061253a565b60405180910390f35b3480156101e857600080fd5b5061020360048036038101906101fe91906125e4565b6105c6565b604051610210919061253a565b60405180910390f35b34801561022557600080fd5b5061022e6106b8565b60405161023b9190612452565b60405180910390f35b34801561025057600080fd5b5061026b60048036038101906102669190612624565b6106c2565b604051610278919061253a565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190612677565b6108c2565b6040516102b5919061253a565b60405180910390f35b3480156102ca57600080fd5b506102d361091b565b6040516102e091906126c0565b60405180910390f35b3480156102f557600080fd5b506102fe610924565b005b61030861098f565b005b34801561031657600080fd5b50610331600480360381019061032c9190612677565b610eea565b60405161033e919061253a565b60405180910390f35b34801561035357600080fd5b5061035c610fb8565b005b34801561036a57600080fd5b5061037361100b565b6040516103809190612452565b60405180910390f35b34801561039557600080fd5b5061039e611011565b6040516103ab919061253a565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612677565b611024565b6040516103e89190612452565b60405180910390f35b3480156103fd57600080fd5b5061040661106d565b005b34801561041457600080fd5b5061041d611130565b60405161042a91906126ea565b60405180910390f35b34801561043f57600080fd5b50610448611159565b005b34801561045657600080fd5b5061045f6111be565b60405161046c91906124fd565b60405180910390f35b34801561048157600080fd5b5061048a6111fb565b60405161049791906126ea565b60405180910390f35b3480156104ac57600080fd5b506104b5611221565b6040516104c291906126ea565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906125e4565b611247565b6040516104ff919061253a565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190612705565b61125c565b60405161053c9190612452565b60405180910390f35b34801561055157600080fd5b5061055a6112e3565b60405161056791906127a4565b60405180910390f35b600f5481565b60606040518060400160405280601081526020017f536166657265756d20436c617373696300000000000000000000000000000000815250905090565b601060159054906101000a900460ff1681565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106a69190612452565b60405180910390a36001905092915050565b6000600254905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108ae5761082d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113099092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108b984848461136d565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561098c573d6000803e3d6000fd5b50565b610998336108c2565b6109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce9061280b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb9190612840565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b779190612840565b306040518363ffffffff1660e01b8152600401610b9592919061286d565b6020604051808303816000875af1158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd89190612840565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610e6130611024565b60008033426040518863ffffffff1660e01b8152600401610e87969594939291906128d1565b60606040518083038185885af1158015610ea5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eca9190612947565b5050506001600e60146101000a81548160ff021916908315150217905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b610fc1336108c2565b611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff79061280b565b60405180910390fd5b600254600381905550565b60035481565b600e60149054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611076336108c2565b6110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061280b565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161112691906126ea565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611162336108c2565b6111a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111989061280b565b60405180910390fd5b6001601060156101000a81548160ff021916908315150217905550565b60606040518060400160405280600981526020017f534146455245554d430000000000000000000000000000000000000000000000815250905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061125433848461136d565b905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134891906124fd565b60405180910390fd5b506000838561136091906129c9565b9050809150509392505050565b6000601060009054906101000a900460ff16156113965761138f848484611825565b905061181e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561143a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561149357601060159054906101000a900460ff1661148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148590612a49565b60405180910390fd5b6114a5565b61149e848484611825565b905061181e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611531575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561161a57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115da575060035482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d79190612a69565b11155b611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090612b0f565b60405180910390fd5b5b6116226119f8565b156116305761162f611acf565b5b6116b9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113099092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061170785612019565b611711578261171c565b61171b8584612070565b5b905061177081600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ce90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118109190612452565b60405180910390a360019150505b9392505050565b60006118b0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113099092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061194582600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ce90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119e59190612452565b60405180910390a3600190509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611a655750601060009054906101000a900460ff16155b8015611a7d5750600e60149054906101000a900460ff165b8015611aca5750600f54600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601060006101000a81548160ff0219169083151502179055506000600f5490506000611b2f6002611b21600a54611b136008548761222c90919063ffffffff16565b6122a690919063ffffffff16565b6122a690919063ffffffff16565b90506000611b4682846122f090919063ffffffff16565b90506000600267ffffffffffffffff811115611b6557611b64612b2f565b5b604051908082528060200260200182016040528015611b935781602001602082028036833780820191505090505b5090503081600081518110611bab57611baa612b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c769190612840565b81600181518110611c8a57611c89612b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611d2d959493929190612c4b565b600060405180830381600087803b158015611d4757600080fd5b505af1158015611d5b573d6000803e3d6000fd5b505050506000611d7482476122f090919063ffffffff16565b90506000611da2611d9160026008546122a690919063ffffffff16565b600a546122f090919063ffffffff16565b90506000611de06002611dd284611dc46008548861222c90919063ffffffff16565b6122a690919063ffffffff16565b6122a690919063ffffffff16565b90506000611e0b83611dfd6009548761222c90919063ffffffff16565b6122a690919063ffffffff16565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051611e5990612cd6565b600060405180830381858888f193505050503d8060008114611e97576040519150601f19603f3d011682016040523d82523d6000602084013e611e9c565b606091505b5050905080611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790612d37565b60405180910390fd5b6000891115611ff257600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611f72969594939291906128d1565b60606040518083038185885af1158015611f90573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fb59190612947565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051611fe9929190612d57565b60405180910390a15b505050505050505050506000601060006101000a81548160ff021916908315150217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806120b6600b546120a86120858761233a565b61209a600a548861222c90919063ffffffff16565b6122a690919063ffffffff16565b6122a690919063ffffffff16565b905061210a81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ce90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121aa9190612452565b60405180910390a36121c581846122f090919063ffffffff16565b91505092915050565b60008082846121dd9190612a69565b905083811015612222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221990612dcc565b60405180910390fd5b8091505092915050565b600080830361223e57600090506122a0565b6000828461224c9190612dec565b905082848261225b9190612e5d565b1461229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290612f00565b60405180910390fd5b809150505b92915050565b60006122e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123d6565b905092915050565b600061233283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611309565b905092915050565b600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123a15761239c6000611024565b6123ad565b6123ac61dead611024565b5b9050600081116123cb576064600b546123c69190612e5d565b6123ce565b60005b915050919050565b6000808311829061241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241491906124fd565b60405180910390fd5b506000838561242c9190612e5d565b9050809150509392505050565b6000819050919050565b61244c81612439565b82525050565b60006020820190506124676000830184612443565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124a757808201518184015260208101905061248c565b60008484015250505050565b6000601f19601f8301169050919050565b60006124cf8261246d565b6124d98185612478565b93506124e9818560208601612489565b6124f2816124b3565b840191505092915050565b6000602082019050818103600083015261251781846124c4565b905092915050565b60008115159050919050565b6125348161251f565b82525050565b600060208201905061254f600083018461252b565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125858261255a565b9050919050565b6125958161257a565b81146125a057600080fd5b50565b6000813590506125b28161258c565b92915050565b6125c181612439565b81146125cc57600080fd5b50565b6000813590506125de816125b8565b92915050565b600080604083850312156125fb576125fa612555565b5b6000612609858286016125a3565b925050602061261a858286016125cf565b9150509250929050565b60008060006060848603121561263d5761263c612555565b5b600061264b868287016125a3565b935050602061265c868287016125a3565b925050604061266d868287016125cf565b9150509250925092565b60006020828403121561268d5761268c612555565b5b600061269b848285016125a3565b91505092915050565b600060ff82169050919050565b6126ba816126a4565b82525050565b60006020820190506126d560008301846126b1565b92915050565b6126e48161257a565b82525050565b60006020820190506126ff60008301846126db565b92915050565b6000806040838503121561271c5761271b612555565b5b600061272a858286016125a3565b925050602061273b858286016125a3565b9150509250929050565b6000819050919050565b600061276a6127656127608461255a565b612745565b61255a565b9050919050565b600061277c8261274f565b9050919050565b600061278e82612771565b9050919050565b61279e81612783565b82525050565b60006020820190506127b96000830184612795565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006127f5600683612478565b9150612800826127bf565b602082019050919050565b60006020820190508181036000830152612824816127e8565b9050919050565b60008151905061283a8161258c565b92915050565b60006020828403121561285657612855612555565b5b60006128648482850161282b565b91505092915050565b600060408201905061288260008301856126db565b61288f60208301846126db565b9392505050565b6000819050919050565b60006128bb6128b66128b184612896565b612745565b612439565b9050919050565b6128cb816128a0565b82525050565b600060c0820190506128e660008301896126db565b6128f36020830188612443565b61290060408301876128c2565b61290d60608301866128c2565b61291a60808301856126db565b61292760a0830184612443565b979650505050505050565b600081519050612941816125b8565b92915050565b6000806000606084860312156129605761295f612555565b5b600061296e86828701612932565b935050602061297f86828701612932565b925050604061299086828701612932565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129d482612439565b91506129df83612439565b92508282039050818111156129f7576129f661299a565b5b92915050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000612a33601383612478565b9150612a3e826129fd565b602082019050919050565b60006020820190508181036000830152612a6281612a26565b9050919050565b6000612a7482612439565b9150612a7f83612439565b9250828201905080821115612a9757612a9661299a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612af9602583612478565b9150612b0482612a9d565b604082019050919050565b60006020820190508181036000830152612b2881612aec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bc28161257a565b82525050565b6000612bd48383612bb9565b60208301905092915050565b6000602082019050919050565b6000612bf882612b8d565b612c028185612b98565b9350612c0d83612ba9565b8060005b83811015612c3e578151612c258882612bc8565b9750612c3083612be0565b925050600181019050612c11565b5085935050505092915050565b600060a082019050612c606000830188612443565b612c6d60208301876128c2565b8181036040830152612c7f8186612bed565b9050612c8e60608301856126db565b612c9b6080830184612443565b9695505050505050565b600081905092915050565b50565b6000612cc0600083612ca5565b9150612ccb82612cb0565b600082019050919050565b6000612ce182612cb3565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000612d21601e83612478565b9150612d2c82612ceb565b602082019050919050565b60006020820190508181036000830152612d5081612d14565b9050919050565b6000604082019050612d6c6000830185612443565b612d796020830184612443565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612db6601b83612478565b9150612dc182612d80565b602082019050919050565b60006020820190508181036000830152612de581612da9565b9050919050565b6000612df782612439565b9150612e0283612439565b9250828202612e1081612439565b91508282048414831517612e2757612e2661299a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e6882612439565b9150612e7383612439565b925082612e8357612e82612e2e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eea602183612478565b9150612ef582612e8e565b604082019050919050565b60006020820190508181036000830152612f1981612edd565b905091905056fea2646970667358221220c9e765b9c89d4ca4712c527d17a4a4e55697605633a84006bae741d98897a12764736f6c63430008130033

Deployed Bytecode Sourcemap

4272:8615:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5379:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6499:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5560:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6921:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6229:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7466:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2510:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6323:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12212:115;;;;;;;;;;;;;:::i;:::-;;11658:547;;;:::i;:::-;;7145:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12335:92;;;;;;;;;;;;;:::i;:::-;;4767:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5341:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6669:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2619:131;;;;;;;;;;;;;:::i;:::-;;6585:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6098:79;;;;;;;;;;;;;:::i;:::-;;6409:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5196:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5313:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7302:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6780:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5282:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5379:56;;;;:::o;6499:80::-;6547:13;6571:5;;;;;;;;;;;;;;;;;6564:12;;6499:80;:::o;5560:31::-;;;;;;;;;;;;;:::o;6921:216::-;6996:4;7048:6;7013:11;:23;7025:10;7013:23;;;;;;;;;;;;;;;:32;7037:7;7013:32;;;;;;;;;;;;;;;:41;;;;7091:7;7070:37;;7079:10;7070:37;;;7100:6;7070:37;;;;;;:::i;:::-;;;;;;;;7125:4;7118:11;;6921:216;;;;:::o;6229:88::-;6284:7;6302:12;;6295:19;;6229:88;:::o;7466:370::-;7566:4;7621:17;7586:11;:19;7598:6;7586:19;;;;;;;;;;;;;;;:31;7606:10;7586:31;;;;;;;;;;;;;;;;:52;7583:186;;7688:69;7724:6;7688:69;;;;;;;;;;;;;;;;;:11;:19;7700:6;7688:19;;;;;;;;;;;;;;;:31;7708:10;7688:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7654:11;:19;7666:6;7654:19;;;;;;;;;;;;;;;:31;7674:10;7654:31;;;;;;;;;;;;;;;:103;;;;7583:186;7788:40;7802:6;7810:9;7821:6;7788:13;:40::i;:::-;7781:47;;7466:370;;;;;:::o;2510:103::-;2565:4;2600:5;;;;;;;;;;;2589:16;;:7;:16;;;2582:23;;2510:103;;;:::o;6323:80::-;6375:5;4695:1;6384:16;;6323:80;:::o;12212:115::-;12269:17;;;;;;;;;;;12261:35;;:58;12297:21;12261:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12212:115::o;11658:547::-;2463:19;2471:10;2463:7;:19::i;:::-;2455:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11736:12:::1;;;;;;;;;;;11716:6;;:33;;;;;;;;;;;;;;;;;;11779:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11767:40;;;11808:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11831:4;11767:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11760:4;;:77;;;;;;;;;;;;;;;;;;11894:17;11848:11;:26;11868:4;11848:26;;;;;;;;;;;;;;;:43;11883:6;;;;;;;;;;;11848:43;;;;;;;;;;;;;;;:63;;;;11956:4;11932:15;:21;11948:4;;;;;;;;;;;11932:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12027:17;11981:11;:26;12001:4;11981:26;;;;;;;;;;;;;;;:43;12016:6;;;;;;;;;;;11981:43;;;;;;;;;;;;;;;:63;;;;12057:6;;;;;;;;;;;:22;;;12087:9;12106:4;12112:24;12130:4;12112:9;:24::i;:::-;12137:1;12139::::0;12141:10:::1;12152:15;12057:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12193:4;12179:11;;:18;;;;;;;;;;;;;;;;;;11658:547::o:0;7145:149::-;7200:4;7247:17;7217:11;:20;7229:7;7217:20;;;;;;;;;;;;;;;:27;7238:5;;;;;;;;;;;7217:27;;;;;;;;;;;;;;;:47;;;;7282:4;7275:11;;7145:149;;;:::o;12335:92::-;2463:19;2471:10;2463:7;:19::i;:::-;2455:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12407:12:::1;;12388:16;:31;;;;12335:92::o:0;4767:58::-;;;;:::o;5341:31::-;;;;;;;;;;;;;:::o;6669:105::-;6735:7;6753:9;:18;6763:7;6753:18;;;;;;;;;;;;;;;;6746:25;;6669:105;;;:::o;2619:131::-;2463:19;2471:10;2463:7;:19::i;:::-;2455:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2692:1:::1;2676:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2710:32;2739:1;2710:32;;;;;;:::i;:::-;;;;;;;;2619:131::o:0;6585:78::-;6637:7;6655:5;;;;;;;;;;;6648:12;;6585:78;:::o;6098:79::-;2463:19;2471:10;2463:7;:19::i;:::-;2455:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6165:4:::1;6151:11;;:18;;;;;;;;;;;;;;;;;;6098:79::o:0;6409:84::-;6459:13;6483:7;;;;;;;;;;;;;;;;;6476:14;;6409:84;:::o;5196:77::-;;;;;;;;;;;;;:::o;5313:19::-;;;;;;;;;;;;;:::o;7302:156::-;7382:4;7406:44;7420:10;7432:9;7443:6;7406:13;:44::i;:::-;7399:51;;7302:156;;;;:::o;6780:133::-;6864:7;6882:11;:19;6894:6;6882:19;;;;;;;;;;;;;;;:28;6902:7;6882:28;;;;;;;;;;;;;;;;6875:35;;6780:133;;;;:::o;5282:24::-;;;;;;;;;;;;;:::o;599:190::-;685:7;718:1;713;:6;;721:12;705:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;745:9;761:1;757;:5;;;;:::i;:::-;745:17;;780:1;773:8;;;599:190;;;;;:::o;7844:1008::-;7936:4;7956:6;;;;;;;;;;;7953:63;;;7972:41;7987:6;7995:9;8006:6;7972:14;:41::i;:::-;7965:48;;;;7953:63;8033:11;:19;8045:6;8033:19;;;;;;;;;;;;;;;;;;;;;;;;;8032:20;:47;;;;;8057:11;:22;8069:9;8057:22;;;;;;;;;;;;;;;;;;;;;;;;;8056:23;8032:47;8028:204;;;8104:11;;;;;;;;;;;8096:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8028:204;;;8179:41;8194:6;8202:9;8213:6;8179:14;:41::i;:::-;8172:48;;;;8028:204;8269:4;;;;;;;;;;;8256:17;;:9;:17;;;;:38;;;;;4451:42;8277:17;;:9;:17;;;;8256:38;8252:200;;;8319:15;:26;8335:9;8319:26;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;8382:16;;8372:6;8349:9;:20;8359:9;8349:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;8319:79;8311:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;8252:200;8475:16;:14;:16::i;:::-;8472:35;;;8494:10;:8;:10::i;:::-;8472:35;8540:53;8562:6;8540:53;;;;;;;;;;;;;;;;;:9;:17;8550:6;8540:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8520:9;:17;8530:6;8520:17;;;;;;;;;;;;;;;:73;;;;8606:22;8631:21;8645:6;8631:13;:21::i;:::-;:56;;8681:6;8631:56;;;8655:23;8663:6;8671;8655:7;:23::i;:::-;8631:56;8606:81;;8721:40;8746:14;8721:9;:20;8731:9;8721:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;8698:9;:20;8708:9;8698:20;;;;;;;;;;;;;;;:63;;;;8796:9;8779:43;;8788:6;8779:43;;;8807:14;8779:43;;;;;;:::i;:::-;;;;;;;;8840:4;8833:11;;;7844:1008;;;;;;:::o;8864:330::-;8957:4;8994:53;9016:6;8994:53;;;;;;;;;;;;;;;;;:9;:17;9004:6;8994:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8974:9;:17;8984:6;8974:17;;;;;;;;;;;;;;;:73;;;;9081:32;9106:6;9081:9;:20;9091:9;9081:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9058:9;:20;9068:9;9058:20;;;;;;;;;;;;;;;:55;;;;9146:9;9129:35;;9138:6;9129:35;;;9157:6;9129:35;;;;;;:::i;:::-;;;;;;;;9182:4;9175:11;;8864:330;;;;;:::o;9903:197::-;9952:4;9990;;;;;;;;;;;9976:18;;:10;:18;;;;:38;;;;;10008:6;;;;;;;;;;;10007:7;9976:38;:62;;;;;10027:11;;;;;;;;;;;9976:62;:116;;;;;10079:13;;10051:9;:24;10069:4;10051:24;;;;;;;;;;;;;;;;:41;;9976:116;9969:123;;9903:197;:::o;10108:1544::-;5502:4;5493:6;;:13;;;;;;;;;;;;;;;;;;10157:28:::1;10188:13;;10157:44;;10212:23;10238:59;10295:1;10238:52;10281:8;;10238:38;10263:12;;10238:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;10212:85;;10308:20;10331:41;10356:15;10331:20;:24;;:41;;;;:::i;:::-;10308:64;;10385:21;10423:1;10409:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10385:40;;10454:4;10436;10441:1;10436:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10480:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10470:4;10475:1;10470:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10506:21;10530;10506:45;;10564:6;;;;;;;;;;;:57;;;10636:12;10663:1;10679:4;10706;10726:15;10564:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10763:17;10783:40;10809:13;10783:21;:25;;:40;;;;:::i;:::-;10763:60;;10834:19;10856:33;10869:19;10886:1;10869:12;;:16;;:19;;;;:::i;:::-;10856:8;;:12;;:33;;;;:::i;:::-;10834:55;;10900:26;10929:51;10978:1;10929:44;10961:11;10929:27;10943:12;;10929:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;10900:80;;10991:26;11020:44;11052:11;11020:27;11034:12;;11020:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;10991:73;;11080:21;11138:17;;;;;;;;;;;11130:31;;11169:18;11194:5;11130:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11079:125;;;11223:16;11215:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11308:1;11290:15;:19;11287:358;;;11325:6;;;;;;;;;;;:22;;;11355:18;11401:4;11425:15;11459:1;11479::::0;11499:17:::1;;;;;;;;;;;11535:15;11325:240;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11585:48;11597:18;11617:15;11585:48;;;;;;;:::i;:::-;;;;;;;;11287:358;10146:1506;;;;;;;;;;5520:5:::0;5511:6;;:14;;;;;;;;;;;;;;;;;;10108:1544::o;9202:114::-;9264:4;9289:11;:19;9301:6;9289:19;;;;;;;;;;;;;;;;;;;;;;;;;9288:20;9281:27;;9202:114;;;:::o;9542:353::-;9609:7;9629:17;9649:64;9698:14;;9649:44;9674:18;9685:6;9674:10;:18::i;:::-;9649:20;9660:8;;9649:6;:10;;:20;;;;:::i;:::-;:24;;:44;;;;:::i;:::-;:48;;:64;;;;:::i;:::-;9629:84;;9751:39;9780:9;9751;:24;9769:4;9751:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9724:9;:24;9742:4;9724:24;;;;;;;;;;;;;;;:66;;;;9831:4;9806:42;;9815:6;9806:42;;;9838:9;9806:42;;;;;;:::i;:::-;;;;;;;;9866:21;9877:9;9866:6;:10;;:21;;;;:::i;:::-;9859:28;;;9542:353;;;;:::o;272:179::-;330:7;350:9;366:1;362;:5;;;;:::i;:::-;350:17;;391:1;386;:6;;378:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;442:1;435:8;;;272:179;;;;:::o;795:246::-;853:7;882:1;877;:6;873:47;;907:1;900:8;;;;873:47;930:9;946:1;942;:5;;;;:::i;:::-;930:17;;975:1;970;966;:5;;;;:::i;:::-;:10;958:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1032:1;1025:8;;;795:246;;;;;:::o;1047:132::-;1105:7;1132:39;1136:1;1139;1132:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1125:46;;1047:132;;;;:::o;457:136::-;515:7;542:43;546:1;549;542:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;535:50;;457:136;;;;:::o;9324:210::-;9384:7;9404:14;9431:4;;;;;;;;;;;9421:14;;:6;:14;;;:50;;9456:15;4524:42;9456:9;:15::i;:::-;9421:50;;;9438:15;4451:42;9438:9;:15::i;:::-;9421:50;9404:67;;9498:1;9489:6;:10;:37;;9523:3;9506:14;;:20;;;;:::i;:::-;9489:37;;;9502:1;9489:37;9482:44;;;9324:210;;;:::o;1185:189::-;1271:7;1303:1;1299;:5;1306:12;1291:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1330:9;1346:1;1342;:5;;;;:::i;:::-;1330:17;;1365:1;1358:8;;;1185:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:60::-;6048:3;6069:5;6062:12;;6020:60;;;:::o;6086:142::-;6136:9;6169:53;6187:34;6196:24;6214:5;6196:24;:::i;:::-;6187:34;:::i;:::-;6169:53;:::i;:::-;6156:66;;6086:142;;;:::o;6234:126::-;6284:9;6317:37;6348:5;6317:37;:::i;:::-;6304:50;;6234:126;;;:::o;6366:144::-;6434:9;6467:37;6498:5;6467:37;:::i;:::-;6454:50;;6366:144;;;:::o;6516:167::-;6621:55;6670:5;6621:55;:::i;:::-;6616:3;6609:68;6516:167;;:::o;6689:258::-;6800:4;6838:2;6827:9;6823:18;6815:26;;6851:89;6937:1;6926:9;6922:17;6913:6;6851:89;:::i;:::-;6689:258;;;;:::o;6953:156::-;7093:8;7089:1;7081:6;7077:14;7070:32;6953:156;:::o;7115:365::-;7257:3;7278:66;7342:1;7337:3;7278:66;:::i;:::-;7271:73;;7353:93;7442:3;7353:93;:::i;:::-;7471:2;7466:3;7462:12;7455:19;;7115:365;;;:::o;7486:419::-;7652:4;7690:2;7679:9;7675:18;7667:26;;7739:9;7733:4;7729:20;7725:1;7714:9;7710:17;7703:47;7767:131;7893:4;7767:131;:::i;:::-;7759:139;;7486:419;;;:::o;7911:143::-;7968:5;7999:6;7993:13;7984:22;;8015:33;8042:5;8015:33;:::i;:::-;7911:143;;;;:::o;8060:351::-;8130:6;8179:2;8167:9;8158:7;8154:23;8150:32;8147:119;;;8185:79;;:::i;:::-;8147:119;8305:1;8330:64;8386:7;8377:6;8366:9;8362:22;8330:64;:::i;:::-;8320:74;;8276:128;8060:351;;;;:::o;8417:332::-;8538:4;8576:2;8565:9;8561:18;8553:26;;8589:71;8657:1;8646:9;8642:17;8633:6;8589:71;:::i;:::-;8670:72;8738:2;8727:9;8723:18;8714:6;8670:72;:::i;:::-;8417:332;;;;;:::o;8755:85::-;8800:7;8829:5;8818:16;;8755:85;;;:::o;8846:158::-;8904:9;8937:61;8955:42;8964:32;8990:5;8964:32;:::i;:::-;8955:42;:::i;:::-;8937:61;:::i;:::-;8924:74;;8846:158;;;:::o;9010:147::-;9105:45;9144:5;9105:45;:::i;:::-;9100:3;9093:58;9010:147;;:::o;9163:807::-;9412:4;9450:3;9439:9;9435:19;9427:27;;9464:71;9532:1;9521:9;9517:17;9508:6;9464:71;:::i;:::-;9545:72;9613:2;9602:9;9598:18;9589:6;9545:72;:::i;:::-;9627:80;9703:2;9692:9;9688:18;9679:6;9627:80;:::i;:::-;9717;9793:2;9782:9;9778:18;9769:6;9717:80;:::i;:::-;9807:73;9875:3;9864:9;9860:19;9851:6;9807:73;:::i;:::-;9890;9958:3;9947:9;9943:19;9934:6;9890:73;:::i;:::-;9163:807;;;;;;;;;:::o;9976:143::-;10033:5;10064:6;10058:13;10049:22;;10080:33;10107:5;10080:33;:::i;:::-;9976:143;;;;:::o;10125:663::-;10213:6;10221;10229;10278:2;10266:9;10257:7;10253:23;10249:32;10246:119;;;10284:79;;:::i;:::-;10246:119;10404:1;10429:64;10485:7;10476:6;10465:9;10461:22;10429:64;:::i;:::-;10419:74;;10375:128;10542:2;10568:64;10624:7;10615:6;10604:9;10600:22;10568:64;:::i;:::-;10558:74;;10513:129;10681:2;10707:64;10763:7;10754:6;10743:9;10739:22;10707:64;:::i;:::-;10697:74;;10652:129;10125:663;;;;;:::o;10794:180::-;10842:77;10839:1;10832:88;10939:4;10936:1;10929:15;10963:4;10960:1;10953:15;10980:194;11020:4;11040:20;11058:1;11040:20;:::i;:::-;11035:25;;11074:20;11092:1;11074:20;:::i;:::-;11069:25;;11118:1;11115;11111:9;11103:17;;11142:1;11136:4;11133:11;11130:37;;;11147:18;;:::i;:::-;11130:37;10980:194;;;;:::o;11180:169::-;11320:21;11316:1;11308:6;11304:14;11297:45;11180:169;:::o;11355:366::-;11497:3;11518:67;11582:2;11577:3;11518:67;:::i;:::-;11511:74;;11594:93;11683:3;11594:93;:::i;:::-;11712:2;11707:3;11703:12;11696:19;;11355:366;;;:::o;11727:419::-;11893:4;11931:2;11920:9;11916:18;11908:26;;11980:9;11974:4;11970:20;11966:1;11955:9;11951:17;11944:47;12008:131;12134:4;12008:131;:::i;:::-;12000:139;;11727:419;;;:::o;12152:191::-;12192:3;12211:20;12229:1;12211:20;:::i;:::-;12206:25;;12245:20;12263:1;12245:20;:::i;:::-;12240:25;;12288:1;12285;12281:9;12274:16;;12309:3;12306:1;12303:10;12300:36;;;12316:18;;:::i;:::-;12300:36;12152:191;;;;:::o;12349:224::-;12489:34;12485:1;12477:6;12473:14;12466:58;12558:7;12553:2;12545:6;12541:15;12534:32;12349:224;:::o;12579:366::-;12721:3;12742:67;12806:2;12801:3;12742:67;:::i;:::-;12735:74;;12818:93;12907:3;12818:93;:::i;:::-;12936:2;12931:3;12927:12;12920:19;;12579:366;;;:::o;12951:419::-;13117:4;13155:2;13144:9;13140:18;13132:26;;13204:9;13198:4;13194:20;13190:1;13179:9;13175:17;13168:47;13232:131;13358:4;13232:131;:::i;:::-;13224:139;;12951:419;;;:::o;13376:180::-;13424:77;13421:1;13414:88;13521:4;13518:1;13511:15;13545:4;13542:1;13535:15;13562:180;13610:77;13607:1;13600:88;13707:4;13704:1;13697:15;13731:4;13728:1;13721:15;13748:114;13815:6;13849:5;13843:12;13833:22;;13748:114;;;:::o;13868:184::-;13967:11;14001:6;13996:3;13989:19;14041:4;14036:3;14032:14;14017:29;;13868:184;;;;:::o;14058:132::-;14125:4;14148:3;14140:11;;14178:4;14173:3;14169:14;14161:22;;14058:132;;;:::o;14196:108::-;14273:24;14291:5;14273:24;:::i;:::-;14268:3;14261:37;14196:108;;:::o;14310:179::-;14379:10;14400:46;14442:3;14434:6;14400:46;:::i;:::-;14478:4;14473:3;14469:14;14455:28;;14310:179;;;;:::o;14495:113::-;14565:4;14597;14592:3;14588:14;14580:22;;14495:113;;;:::o;14644:732::-;14763:3;14792:54;14840:5;14792:54;:::i;:::-;14862:86;14941:6;14936:3;14862:86;:::i;:::-;14855:93;;14972:56;15022:5;14972:56;:::i;:::-;15051:7;15082:1;15067:284;15092:6;15089:1;15086:13;15067:284;;;15168:6;15162:13;15195:63;15254:3;15239:13;15195:63;:::i;:::-;15188:70;;15281:60;15334:6;15281:60;:::i;:::-;15271:70;;15127:224;15114:1;15111;15107:9;15102:14;;15067:284;;;15071:14;15367:3;15360:10;;14768:608;;;14644:732;;;;:::o;15382:831::-;15645:4;15683:3;15672:9;15668:19;15660:27;;15697:71;15765:1;15754:9;15750:17;15741:6;15697:71;:::i;:::-;15778:80;15854:2;15843:9;15839:18;15830:6;15778:80;:::i;:::-;15905:9;15899:4;15895:20;15890:2;15879:9;15875:18;15868:48;15933:108;16036:4;16027:6;15933:108;:::i;:::-;15925:116;;16051:72;16119:2;16108:9;16104:18;16095:6;16051:72;:::i;:::-;16133:73;16201:3;16190:9;16186:19;16177:6;16133:73;:::i;:::-;15382:831;;;;;;;;:::o;16219:147::-;16320:11;16357:3;16342:18;;16219:147;;;;:::o;16372:114::-;;:::o;16492:398::-;16651:3;16672:83;16753:1;16748:3;16672:83;:::i;:::-;16665:90;;16764:93;16853:3;16764:93;:::i;:::-;16882:1;16877:3;16873:11;16866:18;;16492:398;;;:::o;16896:379::-;17080:3;17102:147;17245:3;17102:147;:::i;:::-;17095:154;;17266:3;17259:10;;16896:379;;;:::o;17281:180::-;17421:32;17417:1;17409:6;17405:14;17398:56;17281:180;:::o;17467:366::-;17609:3;17630:67;17694:2;17689:3;17630:67;:::i;:::-;17623:74;;17706:93;17795:3;17706:93;:::i;:::-;17824:2;17819:3;17815:12;17808:19;;17467:366;;;:::o;17839:419::-;18005:4;18043:2;18032:9;18028:18;18020:26;;18092:9;18086:4;18082:20;18078:1;18067:9;18063:17;18056:47;18120:131;18246:4;18120:131;:::i;:::-;18112:139;;17839:419;;;:::o;18264:332::-;18385:4;18423:2;18412:9;18408:18;18400:26;;18436:71;18504:1;18493:9;18489:17;18480:6;18436:71;:::i;:::-;18517:72;18585:2;18574:9;18570:18;18561:6;18517:72;:::i;:::-;18264:332;;;;;:::o;18602:177::-;18742:29;18738:1;18730:6;18726:14;18719:53;18602:177;:::o;18785:366::-;18927:3;18948:67;19012:2;19007:3;18948:67;:::i;:::-;18941:74;;19024:93;19113:3;19024:93;:::i;:::-;19142:2;19137:3;19133:12;19126:19;;18785:366;;;:::o;19157:419::-;19323:4;19361:2;19350:9;19346:18;19338:26;;19410:9;19404:4;19400:20;19396:1;19385:9;19381:17;19374:47;19438:131;19564:4;19438:131;:::i;:::-;19430:139;;19157:419;;;:::o;19582:410::-;19622:7;19645:20;19663:1;19645:20;:::i;:::-;19640:25;;19679:20;19697:1;19679:20;:::i;:::-;19674:25;;19734:1;19731;19727:9;19756:30;19774:11;19756:30;:::i;:::-;19745:41;;19935:1;19926:7;19922:15;19919:1;19916:22;19896:1;19889:9;19869:83;19846:139;;19965:18;;:::i;:::-;19846:139;19630:362;19582:410;;;;:::o;19998:180::-;20046:77;20043:1;20036:88;20143:4;20140:1;20133:15;20167:4;20164:1;20157:15;20184:185;20224:1;20241:20;20259:1;20241:20;:::i;:::-;20236:25;;20275:20;20293:1;20275:20;:::i;:::-;20270:25;;20314:1;20304:35;;20319:18;;:::i;:::-;20304:35;20361:1;20358;20354:9;20349:14;;20184:185;;;;:::o;20375:220::-;20515:34;20511:1;20503:6;20499:14;20492:58;20584:3;20579:2;20571:6;20567:15;20560:28;20375:220;:::o;20601:366::-;20743:3;20764:67;20828:2;20823:3;20764:67;:::i;:::-;20757:74;;20840:93;20929:3;20840:93;:::i;:::-;20958:2;20953:3;20949:12;20942:19;;20601:366;;;:::o;20973:419::-;21139:4;21177:2;21166:9;21162:18;21154:26;;21226:9;21220:4;21216:20;21212:1;21201:9;21197:17;21190:47;21254:131;21380:4;21254:131;:::i;:::-;21246:139;;20973:419;;;:::o

Swarm Source

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