ETH Price: $2,629.51 (+8.01%)
 

Overview

Max Total Supply

10,000,000 C8H18

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
88,127.865475707535413184 C8H18

Value
$0.00
0xcf804a439ea8db0cbc1ba798da3726561cb0c863
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:
Octane

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-17
*/

// SPDX-License-Identifier: MIT

/**
 * 
 * TG: https://t.me/OctanePortal
 * Web: https://octanedapp.com/
 * X: https://twitter.com/octane_dapp
 **/

pragma solidity 0.8.22;

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

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

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

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

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

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

abstract contract Auth {
    address public 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() external onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(owner);
    }
    event OwnershipTransferred(address owner);
}

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

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

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

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

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

    string public constant name = "Octane";
    string public constant symbol = "C8H18";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 10000000 * 10**decimals;

    uint256 public _maxWalletToken = 2* totalSupply / 100;

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

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

    uint256 public marketingFee = 7;
    uint256 public treasuryFee = 3;
    uint256 public totalFee = marketingFee + treasuryFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 250;
    uint256 sellMultiplier = 350;
    uint256 transferMultiplier = 450;

    address public marketingFeeReceiver;
    address public treasuryFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

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

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

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

        marketingFeeReceiver = 0x0D7BB57765B9784c08854888F108E68367A0b995;
        treasuryFeeReceiver = 0x413dd15B46030CF366Cb8F305B1eDcb572aaBAc1;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingFeeReceiver] = true;

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

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

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent(uint256 _newmaxwallet) external onlyOwner {
        require(_newmaxwallet >= 1,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * _newmaxwallet ) / 100;
    }

    function removeLimits() external onlyOwner {
        _maxWalletToken = totalSupply;
    }

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

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

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

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

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

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

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

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

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

        uint256 multiplier = transferMultiplier;

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

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

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

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

    function manualSwap() external {
        payable(treasuryFeeReceiver).transfer(address(this).balance);
    }

    function openTrading() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

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

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

    function swapBack() internal swapping {

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

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

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHTreasury = (amountETH * treasuryFee) / totalFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(treasuryFeeReceiver).transfer(amountETHTreasury);
    }

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

    function setFees(uint256 _marketing, uint256 _treasury) external onlyOwner {
        marketingFee = _marketing;
        treasuryFee = _treasury;
        totalFee = marketingFee + treasuryFee;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

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

        return ERC20(tokenAddress).transfer(treasuryFeeReceiver, tokens);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_treasury","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxwallet","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146012600a620004cb565b620000239062989680620004e2565b62000030906002620004e2565b6200003c9190620004fc565b60015560076006819055600380825562000056916200051c565b60085560fa60095561015e600a9081556101c2600b55600e805461ffff60a01b191690556101f4906200008c90601290620004cb565b6200009b9062989680620004e2565b620000a79190620004fc565b600f55348015620000b6575f80fd5b505f8054336001600160a01b031991821617909155600e8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000124573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014a919062000532565b6001600160a01b03908116608052600e546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000199573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001bf919062000532565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af11580156200020e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000234919062000532565b6001600160a01b0390811660a052305f818152600360209081526040808320600e548616845282528083205f199055600c80546001600160a01b0319908116730d7bb57765b9784c08854888f108e68367a0b995178255600d805490911673413dd15b46030cf366cb8f305b1edcb572aabac11790553380855260048452828520805460ff199081166001908117909255835489168752848720805482168317905591865260059094528285208054821685179055905490951683528083208054861683179055928252918120805484168317905561dead90527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054909216179055620003456012600a620004cb565b620003549062989680620004e2565b335f81815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003966012600a620004cb565b620003a59062989680620004e2565b60405190815260200160405180910390a36200055a565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200041057815f1904821115620003f457620003f4620003bc565b808516156200040257918102915b93841c9390800290620003d5565b509250929050565b5f826200042857506001620004c5565b816200043657505f620004c5565b81600181146200044f57600281146200045a576200047a565b6001915050620004c5565b60ff8411156200046e576200046e620003bc565b50506001821b620004c5565b5060208310610133831016604e8410600b84101617156200049f575081810a620004c5565b620004ab8383620003d0565b805f1904821115620004c157620004c1620003bc565b0290505b92915050565b5f620004db60ff84168362000418565b9392505050565b8082028115828204841417620004c557620004c5620003bc565b5f826200051757634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004c557620004c5620003bc565b5f6020828403121562000543575f80fd5b81516001600160a01b0381168114620004db575f80fd5b60805160a051611c55620005985f395f81816105f801528181610f8d0152818161127c015281816114cf015261150301525f6113430152611c555ff3fe608060405260043610610229575f3560e01c80636ddd171311610129578063a8aa1b31116100a8578063dd62ed3e1161006d578063dd62ed3e14610690578063df20fd49146106d4578063e96fada2146106f3578063f887ea4014610712578063ffb54a9914610731575f80fd5b8063a8aa1b31146105e7578063a9059cbb1461061a578063c867d60b14610639578063c9567bf914610667578063cc32d1761461067b575f80fd5b806378109e54116100ee57806378109e541461054957806382bf293c1461055e578063893d20e81461057d5780638da5cb5b1461059957806395d89b41146105b7575f80fd5b80636ddd1713146104b757806370a08231146104d7578063715018a614610502578063751039fc1461051657806377b54bad1461052a575f80fd5b806323b872dd116101b55780633f4218e01161017a5780633f4218e01461042257806351bc3c8514610450578063571ac8b0146104645780636b67c4df146104835780636ce46bc314610498575f80fd5b806323b872dd146103655780632af10fac146103845780632b112e49146103bb5780632f54bf6e146103cf578063313ce567146103fc575f80fd5b8063095ea7b3116101fb578063095ea7b3146102da5780630b78f9c014610309578063180b0d7e1461032857806318160ddd1461033c5780631df4ccfc14610350575f80fd5b806210868314610234578062bff446146102555780630445b6671461027457806306fdde031461029c575f80fd5b3661023057005b5f80fd5b34801561023f575f80fd5b5061025361024e366004611798565b610751565b005b348015610260575f80fd5b5061025361026f366004611798565b61080e565b34801561027f575f80fd5b50610289600f5481565b6040519081526020015b60405180910390f35b3480156102a7575f80fd5b506102cd604051806040016040528060068152602001654f6374616e6560d01b81525081565b6040516102939190611817565b3480156102e5575f80fd5b506102f96102f436600461187e565b6108bc565b6040519015158152602001610293565b348015610314575f80fd5b506102536103233660046118a6565b610928565b348015610333575f80fd5b50610289606481565b348015610347575f80fd5b5061028961096c565b34801561035b575f80fd5b5061028960085481565b348015610370575f80fd5b506102f961037f3660046118c6565b610988565b34801561038f575f80fd5b50600d546103a3906001600160a01b031681565b6040516001600160a01b039091168152602001610293565b3480156103c6575f80fd5b50610289610a46565b3480156103da575f80fd5b506102f96103e93660046118ff565b5f546001600160a01b0391821691161490565b348015610407575f80fd5b50610410601281565b60405160ff9091168152602001610293565b34801561042d575f80fd5b506102f961043c3660046118ff565b60046020525f908152604090205460ff1681565b34801561045b575f80fd5b50610253610acb565b34801561046f575f80fd5b506102f961047e3660046118ff565b610b04565b34801561048e575f80fd5b5061028960065481565b3480156104a3575f80fd5b506102536104b2366004611918565b610b10565b3480156104c2575f80fd5b50600e546102f990600160a81b900460ff1681565b3480156104e2575f80fd5b506102896104f13660046118ff565b60026020525f908152604090205481565b34801561050d575f80fd5b50610253610b4a565b348015610521575f80fd5b50610253610bb7565b348015610535575f80fd5b506102f961054436600461187e565b610bfe565b348015610554575f80fd5b5061028960015481565b348015610569575f80fd5b50610253610578366004611941565b610d0c565b348015610588575f80fd5b505f546001600160a01b03166103a3565b3480156105a4575f80fd5b505f546103a3906001600160a01b031681565b3480156105c2575f80fd5b506102cd60405180604001604052806005815260200164086709062760db1b81525081565b3480156105f2575f80fd5b506103a37f000000000000000000000000000000000000000000000000000000000000000081565b348015610625575f80fd5b506102f961063436600461187e565b610dc7565b348015610644575f80fd5b506102f96106533660046118ff565b60056020525f908152604090205460ff1681565b348015610672575f80fd5b50610253610dd3565b348015610686575f80fd5b5061028960075481565b34801561069b575f80fd5b506102896106aa366004611958565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106df575f80fd5b506102536106ee366004611989565b610e13565b3480156106fe575f80fd5b50600c546103a3906001600160a01b031681565b34801561071d575f80fd5b50600e546103a3906001600160a01b031681565b34801561073c575f80fd5b50600e546102f990600160a01b900460ff1681565b5f546001600160a01b031633146107835760405162461bcd60e51b815260040161077a906119a5565b60405180910390fd5b6101f582106107a45760405162461bcd60e51b815260040161077a906119c5565b5f5b82811015610808578160055f8686858181106107c4576107c4611a0a565b90506020020160208101906107d991906118ff565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016107a6565b50505050565b5f546001600160a01b031633146108375760405162461bcd60e51b815260040161077a906119a5565b6101f582106108585760405162461bcd60e51b815260040161077a906119c5565b5f5b82811015610808578160045f86868581811061087857610878611a0a565b905060200201602081019061088d91906118ff565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161085a565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109169086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109515760405162461bcd60e51b815260040161077a906119a5565b600682905560078190556109658183611a32565b6008555050565b6109786012600a611b25565b6109859062989680611b33565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a31576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610a0d918490610e7e565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610a3c848484610eb6565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54909190610aa56012600a611b25565b610ab29062989680611b33565b610abc9190611b4a565b610ac69190611b4a565b905090565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b01573d5f803e3d5ffd5b50565b5f610922825f196108bc565b5f546001600160a01b03163314610b395760405162461bcd60e51b815260040161077a906119a5565b600a91909155600991909155600b55565b5f546001600160a01b03163314610b735760405162461bcd60e51b815260040161077a906119a5565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610be05760405162461bcd60e51b815260040161077a906119a5565b610bec6012600a611b25565b610bf99062989680611b33565b600155565b5f80546001600160a01b03163314610c285760405162461bcd60e51b815260040161077a906119a5565b815f03610c98576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c959190611b5d565b91505b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610ce8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611b74565b5f546001600160a01b03163314610d355760405162461bcd60e51b815260040161077a906119a5565b6001811015610d915760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b606482015260840161077a565b606481610da06012600a611b25565b610dad9062989680611b33565b610db79190611b33565b610dc19190611b8f565b60015550565b5f610a3f338484610eb6565b5f546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161077a906119a5565b600e805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610e3c5760405162461bcd60e51b815260040161077a906119a5565b600e805460ff60a81b1916600160a81b8415150217905580610e606012600a611b25565b610e6d9062989680611b33565b610e779190611b8f565b600f555050565b5f8184841115610ea15760405162461bcd60e51b815260040161077a9190611817565b505f610ead8486611b4a565b95945050505050565b6010545f9060ff1615610ed557610ece84848461118d565b9050610a3f565b6001600160a01b0384165f9081526004602052604090205460ff16610f4457600e54600160a01b900460ff16610f445760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161077a565b6001600160a01b0384165f9081526005602052604090205460ff16158015610f8457506001600160a01b0383165f9081526005602052604090205460ff16155b8015610fc257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561103b576001546001600160a01b0384165f90815260026020526040902054610fed908490611a32565b111561103b5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161077a565b611043611270565b15611050576110506112e1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600290915291909120546110a1918490610e7e565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff16806110ec57506001600160a01b0384165f9081526004602052604090205460ff165b611100576110fb8584866114a8565b611102565b825b6001600160a01b0385165f908152600260205260409020549091506111279082611601565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117a9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526002909152918220546111dd918490610e7e565b6001600160a01b038086165f90815260026020526040808220939093559085168152205461120b9083611601565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061125e9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906112ad575060105460ff16155b80156112c25750600e54600160a81b900460ff165b8015610ac6575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061132157611321611a0a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061137557611375611a0a565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac947916113be91905f90869030904290600401611bae565b5f604051808303815f87803b1580156113d5575f80fd5b505af11580156113e7573d5f803e3d5ffd5b50506008546006544793505f92506113ff9084611b33565b6114099190611b8f565b90505f6008546007548461141d9190611b33565b6114279190611b8f565b600c546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561145f573d5f803e3d5ffd5b50600d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611497573d5f803e3d5ffd5b50506010805460ff19169055505050565b5f8215806114b65750600854155b156114c2575081610a3f565b600b546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036115015750600a5461153f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361153f57506009545b5f61157361154e606480611b33565b61156d846115676008548a61165f90919063ffffffff16565b9061165f565b906116dd565b905080156115ed57305f908152600260205260409020546115949082611601565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115e49085815260200190565b60405180910390a35b6115f7858261171e565b9695505050505050565b5f8061160d8385611a32565b905083811015610a3f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161077a565b5f825f0361166e57505f610922565b5f6116798385611b33565b9050826116868583611b8f565b14610a3f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161077a565b5f610a3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061175f565b5f610a3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e7e565b5f818361177f5760405162461bcd60e51b815260040161077a9190611817565b505f610ead8486611b8f565b8015158114610b01575f80fd5b5f805f604084860312156117aa575f80fd5b833567ffffffffffffffff808211156117c1575f80fd5b818601915086601f8301126117d4575f80fd5b8135818111156117e2575f80fd5b8760208260051b85010111156117f6575f80fd5b6020928301955093505084013561180c8161178b565b809150509250925092565b5f602080835283518060208501525f5b8181101561184357858101830151858201604001528201611827565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611879575f80fd5b919050565b5f806040838503121561188f575f80fd5b61189883611863565b946020939093013593505050565b5f80604083850312156118b7575f80fd5b50508035926020909101359150565b5f805f606084860312156118d8575f80fd5b6118e184611863565b92506118ef60208501611863565b9150604084013590509250925092565b5f6020828403121561190f575f80fd5b610a3f82611863565b5f805f6060848603121561192a575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611951575f80fd5b5035919050565b5f8060408385031215611969575f80fd5b61197283611863565b915061198060208401611863565b90509250929050565b5f806040838503121561199a575f80fd5b82356118988161178b565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561092257610922611a1e565b600181815b80851115611a7f57815f1904821115611a6557611a65611a1e565b80851615611a7257918102915b93841c9390800290611a4a565b509250929050565b5f82611a9557506001610922565b81611aa157505f610922565b8160018114611ab75760028114611ac157611add565b6001915050610922565b60ff841115611ad257611ad2611a1e565b50506001821b610922565b5060208310610133831016604e8410600b8410161715611b00575081810a610922565b611b0a8383611a45565b805f1904821115611b1d57611b1d611a1e565b029392505050565b5f610a3f60ff841683611a87565b808202811582820484141761092257610922611a1e565b8181038181111561092257610922611a1e565b5f60208284031215611b6d575f80fd5b5051919050565b5f60208284031215611b84575f80fd5b8151610a3f8161178b565b5f82611ba957634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bfe5784516001600160a01b031683529383019391830191600101611bd9565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bfc62df50b0ed7d9cdc714fc0e93bfa28e0eb7797a9c52263888e2ce15560cca64736f6c63430008160033

Deployed Bytecode

0x608060405260043610610229575f3560e01c80636ddd171311610129578063a8aa1b31116100a8578063dd62ed3e1161006d578063dd62ed3e14610690578063df20fd49146106d4578063e96fada2146106f3578063f887ea4014610712578063ffb54a9914610731575f80fd5b8063a8aa1b31146105e7578063a9059cbb1461061a578063c867d60b14610639578063c9567bf914610667578063cc32d1761461067b575f80fd5b806378109e54116100ee57806378109e541461054957806382bf293c1461055e578063893d20e81461057d5780638da5cb5b1461059957806395d89b41146105b7575f80fd5b80636ddd1713146104b757806370a08231146104d7578063715018a614610502578063751039fc1461051657806377b54bad1461052a575f80fd5b806323b872dd116101b55780633f4218e01161017a5780633f4218e01461042257806351bc3c8514610450578063571ac8b0146104645780636b67c4df146104835780636ce46bc314610498575f80fd5b806323b872dd146103655780632af10fac146103845780632b112e49146103bb5780632f54bf6e146103cf578063313ce567146103fc575f80fd5b8063095ea7b3116101fb578063095ea7b3146102da5780630b78f9c014610309578063180b0d7e1461032857806318160ddd1461033c5780631df4ccfc14610350575f80fd5b806210868314610234578062bff446146102555780630445b6671461027457806306fdde031461029c575f80fd5b3661023057005b5f80fd5b34801561023f575f80fd5b5061025361024e366004611798565b610751565b005b348015610260575f80fd5b5061025361026f366004611798565b61080e565b34801561027f575f80fd5b50610289600f5481565b6040519081526020015b60405180910390f35b3480156102a7575f80fd5b506102cd604051806040016040528060068152602001654f6374616e6560d01b81525081565b6040516102939190611817565b3480156102e5575f80fd5b506102f96102f436600461187e565b6108bc565b6040519015158152602001610293565b348015610314575f80fd5b506102536103233660046118a6565b610928565b348015610333575f80fd5b50610289606481565b348015610347575f80fd5b5061028961096c565b34801561035b575f80fd5b5061028960085481565b348015610370575f80fd5b506102f961037f3660046118c6565b610988565b34801561038f575f80fd5b50600d546103a3906001600160a01b031681565b6040516001600160a01b039091168152602001610293565b3480156103c6575f80fd5b50610289610a46565b3480156103da575f80fd5b506102f96103e93660046118ff565b5f546001600160a01b0391821691161490565b348015610407575f80fd5b50610410601281565b60405160ff9091168152602001610293565b34801561042d575f80fd5b506102f961043c3660046118ff565b60046020525f908152604090205460ff1681565b34801561045b575f80fd5b50610253610acb565b34801561046f575f80fd5b506102f961047e3660046118ff565b610b04565b34801561048e575f80fd5b5061028960065481565b3480156104a3575f80fd5b506102536104b2366004611918565b610b10565b3480156104c2575f80fd5b50600e546102f990600160a81b900460ff1681565b3480156104e2575f80fd5b506102896104f13660046118ff565b60026020525f908152604090205481565b34801561050d575f80fd5b50610253610b4a565b348015610521575f80fd5b50610253610bb7565b348015610535575f80fd5b506102f961054436600461187e565b610bfe565b348015610554575f80fd5b5061028960015481565b348015610569575f80fd5b50610253610578366004611941565b610d0c565b348015610588575f80fd5b505f546001600160a01b03166103a3565b3480156105a4575f80fd5b505f546103a3906001600160a01b031681565b3480156105c2575f80fd5b506102cd60405180604001604052806005815260200164086709062760db1b81525081565b3480156105f2575f80fd5b506103a37f00000000000000000000000063c9d4ee3d51e4e5cc26caf4f68ea48d56eff85781565b348015610625575f80fd5b506102f961063436600461187e565b610dc7565b348015610644575f80fd5b506102f96106533660046118ff565b60056020525f908152604090205460ff1681565b348015610672575f80fd5b50610253610dd3565b348015610686575f80fd5b5061028960075481565b34801561069b575f80fd5b506102896106aa366004611958565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106df575f80fd5b506102536106ee366004611989565b610e13565b3480156106fe575f80fd5b50600c546103a3906001600160a01b031681565b34801561071d575f80fd5b50600e546103a3906001600160a01b031681565b34801561073c575f80fd5b50600e546102f990600160a01b900460ff1681565b5f546001600160a01b031633146107835760405162461bcd60e51b815260040161077a906119a5565b60405180910390fd5b6101f582106107a45760405162461bcd60e51b815260040161077a906119c5565b5f5b82811015610808578160055f8686858181106107c4576107c4611a0a565b90506020020160208101906107d991906118ff565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016107a6565b50505050565b5f546001600160a01b031633146108375760405162461bcd60e51b815260040161077a906119a5565b6101f582106108585760405162461bcd60e51b815260040161077a906119c5565b5f5b82811015610808578160045f86868581811061087857610878611a0a565b905060200201602081019061088d91906118ff565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161085a565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109169086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109515760405162461bcd60e51b815260040161077a906119a5565b600682905560078190556109658183611a32565b6008555050565b6109786012600a611b25565b6109859062989680611b33565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a31576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610a0d918490610e7e565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610a3c848484610eb6565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54909190610aa56012600a611b25565b610ab29062989680611b33565b610abc9190611b4a565b610ac69190611b4a565b905090565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b01573d5f803e3d5ffd5b50565b5f610922825f196108bc565b5f546001600160a01b03163314610b395760405162461bcd60e51b815260040161077a906119a5565b600a91909155600991909155600b55565b5f546001600160a01b03163314610b735760405162461bcd60e51b815260040161077a906119a5565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610be05760405162461bcd60e51b815260040161077a906119a5565b610bec6012600a611b25565b610bf99062989680611b33565b600155565b5f80546001600160a01b03163314610c285760405162461bcd60e51b815260040161077a906119a5565b815f03610c98576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c959190611b5d565b91505b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610ce8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611b74565b5f546001600160a01b03163314610d355760405162461bcd60e51b815260040161077a906119a5565b6001811015610d915760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b606482015260840161077a565b606481610da06012600a611b25565b610dad9062989680611b33565b610db79190611b33565b610dc19190611b8f565b60015550565b5f610a3f338484610eb6565b5f546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161077a906119a5565b600e805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610e3c5760405162461bcd60e51b815260040161077a906119a5565b600e805460ff60a81b1916600160a81b8415150217905580610e606012600a611b25565b610e6d9062989680611b33565b610e779190611b8f565b600f555050565b5f8184841115610ea15760405162461bcd60e51b815260040161077a9190611817565b505f610ead8486611b4a565b95945050505050565b6010545f9060ff1615610ed557610ece84848461118d565b9050610a3f565b6001600160a01b0384165f9081526004602052604090205460ff16610f4457600e54600160a01b900460ff16610f445760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161077a565b6001600160a01b0384165f9081526005602052604090205460ff16158015610f8457506001600160a01b0383165f9081526005602052604090205460ff16155b8015610fc257507f00000000000000000000000063c9d4ee3d51e4e5cc26caf4f68ea48d56eff8576001600160a01b0316836001600160a01b031614155b1561103b576001546001600160a01b0384165f90815260026020526040902054610fed908490611a32565b111561103b5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161077a565b611043611270565b15611050576110506112e1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600290915291909120546110a1918490610e7e565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff16806110ec57506001600160a01b0384165f9081526004602052604090205460ff165b611100576110fb8584866114a8565b611102565b825b6001600160a01b0385165f908152600260205260409020549091506111279082611601565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117a9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526002909152918220546111dd918490610e7e565b6001600160a01b038086165f90815260026020526040808220939093559085168152205461120b9083611601565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061125e9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f00000000000000000000000063c9d4ee3d51e4e5cc26caf4f68ea48d56eff85716148015906112ad575060105460ff16155b80156112c25750600e54600160a81b900460ff165b8015610ac6575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061132157611321611a0a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061137557611375611a0a565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac947916113be91905f90869030904290600401611bae565b5f604051808303815f87803b1580156113d5575f80fd5b505af11580156113e7573d5f803e3d5ffd5b50506008546006544793505f92506113ff9084611b33565b6114099190611b8f565b90505f6008546007548461141d9190611b33565b6114279190611b8f565b600c546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561145f573d5f803e3d5ffd5b50600d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611497573d5f803e3d5ffd5b50506010805460ff19169055505050565b5f8215806114b65750600854155b156114c2575081610a3f565b600b546001600160a01b037f00000000000000000000000063c9d4ee3d51e4e5cc26caf4f68ea48d56eff8578116908416036115015750600a5461153f565b7f00000000000000000000000063c9d4ee3d51e4e5cc26caf4f68ea48d56eff8576001600160a01b0316856001600160a01b03160361153f57506009545b5f61157361154e606480611b33565b61156d846115676008548a61165f90919063ffffffff16565b9061165f565b906116dd565b905080156115ed57305f908152600260205260409020546115949082611601565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115e49085815260200190565b60405180910390a35b6115f7858261171e565b9695505050505050565b5f8061160d8385611a32565b905083811015610a3f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161077a565b5f825f0361166e57505f610922565b5f6116798385611b33565b9050826116868583611b8f565b14610a3f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161077a565b5f610a3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061175f565b5f610a3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e7e565b5f818361177f5760405162461bcd60e51b815260040161077a9190611817565b505f610ead8486611b8f565b8015158114610b01575f80fd5b5f805f604084860312156117aa575f80fd5b833567ffffffffffffffff808211156117c1575f80fd5b818601915086601f8301126117d4575f80fd5b8135818111156117e2575f80fd5b8760208260051b85010111156117f6575f80fd5b6020928301955093505084013561180c8161178b565b809150509250925092565b5f602080835283518060208501525f5b8181101561184357858101830151858201604001528201611827565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611879575f80fd5b919050565b5f806040838503121561188f575f80fd5b61189883611863565b946020939093013593505050565b5f80604083850312156118b7575f80fd5b50508035926020909101359150565b5f805f606084860312156118d8575f80fd5b6118e184611863565b92506118ef60208501611863565b9150604084013590509250925092565b5f6020828403121561190f575f80fd5b610a3f82611863565b5f805f6060848603121561192a575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611951575f80fd5b5035919050565b5f8060408385031215611969575f80fd5b61197283611863565b915061198060208401611863565b90509250929050565b5f806040838503121561199a575f80fd5b82356118988161178b565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561092257610922611a1e565b600181815b80851115611a7f57815f1904821115611a6557611a65611a1e565b80851615611a7257918102915b93841c9390800290611a4a565b509250929050565b5f82611a9557506001610922565b81611aa157505f610922565b8160018114611ab75760028114611ac157611add565b6001915050610922565b60ff841115611ad257611ad2611a1e565b50506001821b610922565b5060208310610133831016604e8410600b8410161715611b00575081810a610922565b611b0a8383611a45565b805f1904821115611b1d57611b1d611a1e565b029392505050565b5f610a3f60ff841683611a87565b808202811582820484141761092257610922611a1e565b8181038181111561092257610922611a1e565b5f60208284031215611b6d575f80fd5b5051919050565b5f60208284031215611b84575f80fd5b8151610a3f8161178b565b5f82611ba957634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bfe5784516001600160a01b031683529383019391830191600101611bd9565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bfc62df50b0ed7d9cdc714fc0e93bfa28e0eb7797a9c52263888e2ce15560cca64736f6c63430008160033

Deployed Bytecode Sourcemap

2987:8604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9514:310;;;;;;;;;;-1:-1:-1;9514:310:0;;;;;:::i;:::-;;:::i;:::-;;9212:294;;;;;;;;;;-1:-1:-1;9212:294:0;;;;;:::i;:::-;;:::i;4271:48::-;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;4271:48:0;;;;;;;;3237:38;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3237:38:0;;;;;;;;;;;;:::i;5547:216::-;;;;;;;;;;-1:-1:-1;5547:216:0;;;;;:::i;:::-;;:::i;:::-;;;2229:14:1;;2222:22;2204:41;;2192:2;2177:18;5547:216:0;2064:187:1;10752:201:0;;;;;;;;;;-1:-1:-1;10752:201:0;;;;;:::i;:::-;;:::i;3872:44::-;;;;;;;;;;;;3913:3;3872:44;;3372:61;;;;;;;;;;;;;:::i;3813:52::-;;;;;;;;;;;;;;;;6065:370;;;;;;;;;;-1:-1:-1;6065:370:0;;;;;:::i;:::-;;:::i;4081:34::-;;;;;;;;;;-1:-1:-1;4081:34:0;;;;-1:-1:-1;;;;;4081:34:0;;;;;;-1:-1:-1;;;;;3006:32:1;;;2988:51;;2976:2;2961:18;4081:34:0;2842:203:1;11451:137:0;;;;;;;;;;;;;:::i;2218:103::-;;;;;;;;;;-1:-1:-1;2218:103:0;;;;;:::i;:::-;2273:4;2308:5;-1:-1:-1;;;;;2297:16:0;;;2308:5;;2297:16;;2218:103;3328:35;;;;;;;;;;;;3361:2;3328:35;;;;;3413:4:1;3401:17;;;3383:36;;3371:2;3356:18;3328:35:0;3241:184:1;3626:44:0;;;;;;;;;;-1:-1:-1;3626:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8978:110;;;;;;;;;;;;;:::i;5771:122::-;;;;;;;;;;-1:-1:-1;5771:122:0;;;;;:::i;:::-;;:::i;3738:31::-;;;;;;;;;;;;;;;;10546:198;;;;;;;;;;-1:-1:-1;10546:198:0;;;;;:::i;:::-;;:::i;4231:31::-;;;;;;;;;;-1:-1:-1;4231:31:0;;;;-1:-1:-1;;;4231:31:0;;;;;;3504:45;;;;;;;;;;-1:-1:-1;3504:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2329:128;;;;;;;;;;;;;:::i;6670:91::-;;;;;;;;;;;;;:::i;11148:295::-;;;;;;;;;;-1:-1:-1;11148:295:0;;;;;:::i;:::-;;:::i;3442:53::-;;;;;;;;;;;;;;;;6443:219;;;;;;;;;;-1:-1:-1;6443:219:0;;;;;:::i;:::-;;:::i;5322:78::-;;;;;;;;;;-1:-1:-1;5374:7:0;5392:5;-1:-1:-1;;;;;5392:5:0;5322:78;;2031:20;;;;;;;;;;-1:-1:-1;2031:20:0;;;;-1:-1:-1;;;;;2031:20:0;;;3282:39;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3282:39:0;;;;;4155:29;;;;;;;;;;;;;;;5901:156;;;;;;;;;;-1:-1:-1;5901:156:0;;;;;:::i;:::-;;:::i;3677:52::-;;;;;;;;;;-1:-1:-1;3677:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9096:108;;;;;;;;;;;;;:::i;3776:30::-;;;;;;;;;;;;;;;;5406:133;;;;;;;;;;-1:-1:-1;5406:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5508:19:0;;;5490:7;5508:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5406:133;10961:179;;;;;;;;;;-1:-1:-1;10961:179:0;;;;;:::i;:::-;;:::i;4039:35::-;;;;;;;;;;-1:-1:-1;4039:35:0;;;;-1:-1:-1;;;;;4039:35:0;;;4124:24;;;;;;;;;;-1:-1:-1;4124:24:0;;;;-1:-1:-1;;;;;4124:24:0;;;4193:31;;;;;;;;;;-1:-1:-1;4193:31:0;;;;-1:-1:-1;;;4193:31:0;;;;;;9514:310;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;;;;;;;;;9648:3:::1;9629:22:::0;::::1;9621:71;;;;-1:-1:-1::0;;;9621:71:0::1;;;;;;;:::i;:::-;9708:9;9703:114;9721:20:::0;;::::1;9703:114;;;9799:6;9763:19;:33;9783:9;;9793:1;9783:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9763:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9763:33:0;:42;;-1:-1:-1;;9763:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;9743:3:0::1;9703:114;;;;9514:310:::0;;;:::o;9212:294::-;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;9338:3:::1;9319:22:::0;::::1;9311:71;;;;-1:-1:-1::0;;;9311:71:0::1;;;;;;;:::i;:::-;9398:9;9393:106;9411:20:::0;;::::1;9393:106;;;9481:6;9453:11;:25;9465:9;;9475:1;9465:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9453:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9453:25:0;:34;;-1:-1:-1;;9453:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;9433:3:0::1;9393:106;;5547:216:::0;5651:10;5622:4;5639:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5639:32:0;;;;;;;;;;:41;;;5696:37;5622:4;;5639:32;;5696:37;;;;5674:6;1038:25:1;;1026:2;1011:18;;892:177;5696:37:0;;;;;;;;-1:-1:-1;5751:4:0;5547:216;;;;;:::o;10752:201::-;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;10838:12:::1;:25:::0;;;10874:11:::1;:23:::0;;;10919:26:::1;10888:9:::0;10853:10;10919:26:::1;:::i;:::-;10908:8;:37:::0;-1:-1:-1;;10752:201:0:o;3372:61::-;3421:12;3361:2;3421;:12;:::i;:::-;3410:23;;:8;:23;:::i;:::-;3372:61;:::o;6065:370::-;-1:-1:-1;;;;;6185:19:0;;6165:4;6185:19;;;:11;:19;;;;;;;;6205:10;6185:31;;;;;;;;-1:-1:-1;;6185:52:0;6182:186;;6287:69;;;;;;;;;;;-1:-1:-1;;;6287:69:0;;;;;;;;-1:-1:-1;;;;;6287:19:0;;-1:-1:-1;6287:19:0;;;:11;:19;;;;;6307:10;6287:31;;;;;;;;;;:69;;6323:6;;6287:35;:69::i;:::-;-1:-1:-1;;;;;6253:19:0;;;;;;:11;:19;;;;;;;;6273:10;6253:31;;;;;;;:103;6182:186;6387:40;6401:6;6409:9;6420:6;6387:13;:40::i;:::-;6380:47;;6065:370;;;;;;:::o;11451:137::-;11564:9;:15;;;;3113:42;11504:7;11546:15;;;;;11504:7;;11564:15;3421:12;3361:2;3421;:12;:::i;:::-;3410:23;;:8;:23;:::i;:::-;11532:29;;;;:::i;:::-;:47;;;;:::i;:::-;11524:56;;11451:137;:::o;8978:110::-;9028:19;;9020:60;;-1:-1:-1;;;;;9028:19:0;;;;9058:21;9020:60;;;;;9028:19;9020:60;9028:19;9020:60;9058:21;9028:19;9020:60;;;;;;;;;;;;;;;;;;;;;8978:110::o;5771:122::-;5826:4;5850:35;5858:7;-1:-1:-1;;5850:7:0;:35::i;10546:198::-;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;10645:14:::1;:22:::0;;;;10678:13:::1;:20:::0;;;;10709:18:::1;:27:::0;10546:198::o;2329:128::-;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;2404:1:::1;2388:18:::0;;-1:-1:-1;;;;;;2388:18:0::1;::::0;;2422:27:::1;::::0;2988:51:1;;;2422:27:0::1;::::0;2976:2:1;2961:18;2422:27:0::1;;;;;;;2329:128::o:0;6670:91::-;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;3421:12:::1;3361:2;3421;:12;:::i;:::-;3410:23;::::0;:8:::1;:23;:::i;:::-;6724:15;:29:::0;6670:91::o;11148:295::-;11239:12;2308:5;;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;11267:6:::1;11277:1;11267:11:::0;11264:95:::1;;11303:44;::::0;-1:-1:-1;;;11303:44:0;;11341:4:::1;11303:44;::::0;::::1;2988:51:1::0;-1:-1:-1;;;;;11303:29:0;::::1;::::0;::::1;::::0;2961:18:1;;11303:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11294:53;;11264:95;11407:19;::::0;11378:57:::1;::::0;-1:-1:-1;;;11378:57:0;;-1:-1:-1;;;;;11407:19:0;;::::1;11378:57;::::0;::::1;7921:51:1::0;7988:18;;;7981:34;;;11378:28:0;;::::1;::::0;::::1;::::0;7894:18:1;;11378:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6443:219::-:0;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;6550:1:::1;6533:13;:18;;6525:64;;;::::0;-1:-1:-1;;;6525:64:0;;8478:2:1;6525:64:0::1;::::0;::::1;8460:21:1::0;8517:2;8497:18;;;8490:30;8556:34;8536:18;;;8529:62;-1:-1:-1;;;8607:18:1;;;8600:32;8649:19;;6525:64:0::1;8276:398:1::0;6525:64:0::1;6651:3;6633:13:::0;3421:12:::1;3361:2;3421;:12;:::i;:::-;3410:23;::::0;:8:::1;:23;:::i;:::-;6619:27;;;;:::i;:::-;6618:36;;;;:::i;:::-;6600:15;:54:::0;-1:-1:-1;6443:219:0:o;5901:156::-;5981:4;6005:44;6019:10;6031:9;6042:6;6005:13;:44::i;9096:108::-;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;9149:11:::1;:18:::0;;-1:-1:-1;;;;9178:18:0;-1:-1:-1;;;9178:18:0;;;9096:108::o;10961:179::-;2273:4;2308:5;-1:-1:-1;;;;;2308:5:0;2177:10;2297:16;2161:38;;;;-1:-1:-1;;;2161:38:0;;;;;;;:::i;:::-;11057:11:::1;:22:::0;;-1:-1:-1;;;;11057:22:0::1;-1:-1:-1::0;;;11057:22:0;::::1;;;;::::0;;11120:12;3421::::1;3361:2;3421;:12;:::i;:::-;3410:23;::::0;:8:::1;:23;:::i;:::-;11106:26;;;;:::i;:::-;11090:13;:42:::0;-1:-1:-1;;10961:179:0:o;539:192::-;625:7;661:12;653:6;;;;645:29;;;;-1:-1:-1;;;645:29:0;;;;;;;;:::i;:::-;-1:-1:-1;685:9:0;697:5;701:1;697;:5;:::i;:::-;685:17;539:192;-1:-1:-1;;;;;539:192:0:o;6769:923::-;6881:6;;6861:4;;6881:6;;6878:63;;;6897:41;6912:6;6920:9;6931:6;6897:14;:41::i;:::-;6890:48;;;;6878:63;-1:-1:-1;;;;;6957:19:0;;;;;;:11;:19;;;;;;;;6953:94;;7000:11;;-1:-1:-1;;;7000:11:0;;;;6992:43;;;;-1:-1:-1;;;6992:43:0;;9103:2:1;6992:43:0;;;9085:21:1;9142:2;9122:18;;;9115:30;-1:-1:-1;;;9161:18:1;;;9154:50;9221:18;;6992:43:0;8901:344:1;6992:43:0;-1:-1:-1;;;;;7064:27:0;;;;;;:19;:27;;;;;;;;7063:28;:63;;;;-1:-1:-1;;;;;;7096:30:0;;;;;;:19;:30;;;;;;;;7095:31;7063:63;:84;;;;;7143:4;-1:-1:-1;;;;;7130:17:0;:9;-1:-1:-1;;;;;7130:17:0;;;7063:84;7059:203;;;7207:15;;-1:-1:-1;;;;;7173:20:0;;;;;;:9;:20;;;;;;:29;;7196:6;;7173:29;:::i;:::-;7172:50;;7164:86;;;;-1:-1:-1;;;7164:86:0;;9452:2:1;7164:86:0;;;9434:21:1;9491:2;9471:18;;;9464:30;9530:26;9510:18;;;9503:54;9574:18;;7164:86:0;9250:348:1;7164:86:0;7277:16;:14;:16::i;:::-;7274:35;;;7296:10;:8;:10::i;:::-;7341:53;;;;;;;;;;;-1:-1:-1;;;7341:53:0;;;;;;;;-1:-1:-1;;;;;7341:17:0;;-1:-1:-1;7341:17:0;;;:9;:17;;;;;;;;:53;;7363:6;;7341:21;:53::i;:::-;-1:-1:-1;;;;;7321:17:0;;;;;;:9;:17;;;;;;;;:73;;;;7433:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;7456:22:0;;;;;;:11;:22;;;;;;;;7433:45;7432:93;;7491:34;7499:6;7507;7515:9;7491:7;:34::i;:::-;7432:93;;;7482:6;7432:93;-1:-1:-1;;;;;7561:20:0;;;;;;:9;:20;;;;;;7407:118;;-1:-1:-1;7561:40:0;;7407:118;7561:24;:40::i;:::-;-1:-1:-1;;;;;7538:20:0;;;;;;;:9;:20;;;;;;;:63;;;;7619:43;;;;;;;;;;7647:14;1038:25:1;;1026:2;1011:18;;892:177;7619:43:0;;;;;;;;-1:-1:-1;7680:4:0;;6769:923;-1:-1:-1;;;;6769:923:0:o;7704:330::-;7834:53;;;;;;;;;;;-1:-1:-1;;;7834:53:0;;;;;;;;-1:-1:-1;;;;;7834:17:0;;7797:4;7834:17;;;:9;:17;;;;;;;:53;;7856:6;;7834:21;:53::i;:::-;-1:-1:-1;;;;;7814:17:0;;;;;;;:9;:17;;;;;;:73;;;;7921:20;;;;;;;:32;;7946:6;7921:24;:32::i;:::-;-1:-1:-1;;;;;7898:20:0;;;;;;;:9;:20;;;;;;;:55;;;;7969:35;;;;;;;;;;7997:6;1038:25:1;;1026:2;1011:18;;892:177;7969:35:0;;;;;;;;-1:-1:-1;8022:4:0;7704:330;;;;;:::o;8773:197::-;8822:4;8846:10;-1:-1:-1;;;;;8860:4:0;8846:18;;;;;:38;;-1:-1:-1;8878:6:0;;;;8877:7;8846:38;:62;;;;-1:-1:-1;8897:11:0;;-1:-1:-1;;;8897:11:0;;;;8846:62;:116;;;;-1:-1:-1;;8949:13:0;;8939:4;8921:24;;;;:9;:24;;;;;;:41;;;8773:197::o;9832:706::-;4372:6;:13;;-1:-1:-1;;4372:13:0;4381:4;4372:13;;;9907:16:::1;::::0;;9921:1:::1;9907:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9907:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9907:16:0::1;9883:40;;9952:4;9934;9939:1;9934:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9934:23:0::1;;;-1:-1:-1::0;;;;;9934:23:0::1;;;::::0;::::1;9978:4;9968;9973:1;9968:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9968:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;9995:6:::1;::::0;10067:13:::1;::::0;9995:189:::1;::::0;-1:-1:-1;;;9995:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;10067:13;9995:6:::1;::::0;10111:4;;10138::::1;::::0;10158:15:::1;::::0;9995:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10309:8:0::1;::::0;10293:12:::1;::::0;10217:21:::1;::::0;-1:-1:-1;10197:17:0::1;::::0;-1:-1:-1;10281:24:0::1;::::0;10217:21;10281:24:::1;:::i;:::-;10280:37;;;;:::i;:::-;10251:66;;10328:25;10384:8;;10369:11;;10357:9;:23;;;;:::i;:::-;10356:36;;;;:::i;:::-;10413:20;::::0;10405:58:::1;::::0;10328:64;;-1:-1:-1;;;;;;10413:20:0::1;::::0;10405:58;::::1;;;::::0;10444:18;;10413:20:::1;10405:58:::0;10413:20;10405:58;10444:18;10413:20;10405:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10482:19:0::1;::::0;10474:56:::1;::::0;-1:-1:-1;;;;;10482:19:0;;::::1;::::0;10474:56;::::1;;;::::0;10512:17;;10482:19:::1;10474:56:::0;10482:19;10474:56;10512:17;10482:19;10474:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4390:6:0;:14;;-1:-1:-1;;4390:14:0;;;-1:-1:-1;;;9832:706:0:o;8042:723::-;8128:7;8151:11;;;:28;;-1:-1:-1;8166:8:0;;:13;8151:28;8148:72;;;-1:-1:-1;8202:6:0;8195:13;;8148:72;8253:18;;-1:-1:-1;;;;;8300:4:0;8287:17;;;;;;8284:154;;-1:-1:-1;8334:14:0;;8284:154;;;8379:4;-1:-1:-1;;;;;8369:14:0;:6;-1:-1:-1;;;;;8369:14:0;;8366:72;;-1:-1:-1;8413:13:0;;8366:72;8450:17;8470:62;8511:20;3913:3;;8511:20;:::i;:::-;8470:36;8495:10;8470:20;8481:8;;8470:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;8450:82;-1:-1:-1;8548:13:0;;8545:172;;8622:4;8604:24;;;;:9;:24;;;;;;:39;;8633:9;8604:28;:39::i;:::-;8595:4;8577:24;;;;:9;:24;;;;;;;:66;;;;8663:42;;-1:-1:-1;;;;;8663:42:0;;;;;;;8695:9;1038:25:1;;1026:2;1011:18;;892:177;8663:42:0;;;;;;;;8545:172;8736:21;:6;8747:9;8736:10;:21::i;:::-;8729:28;8042:723;-1:-1:-1;;;;;;8042:723:0:o;210:181::-;268:7;;300:5;304:1;300;:5;:::i;:::-;288:17;;329:1;324;:6;;316:46;;;;-1:-1:-1;;;316:46:0;;10922:2:1;316:46:0;;;10904:21:1;10961:2;10941:18;;;10934:30;11000:29;10980:18;;;10973:57;11047:18;;316:46:0;10720:351:1;737:250:0;795:7;819:1;824;819:6;815:47;;-1:-1:-1;849:1:0;842:8;;815:47;874:9;886:5;890:1;886;:5;:::i;:::-;874:17;-1:-1:-1;919:1:0;910:5;914:1;874:17;910:5;:::i;:::-;:10;902:56;;;;-1:-1:-1;;;902:56:0;;11278:2:1;902:56:0;;;11260:21:1;11317:2;11297:18;;;11290:30;11356:34;11336:18;;;11329:62;-1:-1:-1;;;11407:18:1;;;11400:31;11448:19;;902:56:0;11076:397:1;993:132:0;1051:7;1078:39;1082:1;1085;1078:39;;;;;;;;;;;;;;;;;:3;:39::i;397:136::-;455:7;482:43;486:1;489;482:43;;;;;;;;;;;;;;;;;:3;:43::i;1131:189::-;1217:7;1252:12;1245:5;1237:28;;;;-1:-1:-1;;;1237:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1276:9:0;1288:5;1292:1;1288;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:750;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:548::-;1186:4;1215:2;1244;1233:9;1226:21;1276:6;1270:13;1319:6;1314:2;1303:9;1299:18;1292:34;1344:1;1354:140;1368:6;1365:1;1362:13;1354:140;;;1463:14;;;1459:23;;1453:30;1429:17;;;1448:2;1425:26;1418:66;1383:10;;1354:140;;;1358:3;1543:1;1538:2;1529:6;1518:9;1514:22;1510:31;1503:42;1613:2;1606;1602:7;1597:2;1589:6;1585:15;1581:29;1570:9;1566:45;1562:54;1554:62;;;;1074:548;;;;:::o;1627:173::-;1695:20;;-1:-1:-1;;;;;1744:31:1;;1734:42;;1724:70;;1790:1;1787;1780:12;1724:70;1627:173;;;:::o;1805:254::-;1873:6;1881;1934:2;1922:9;1913:7;1909:23;1905:32;1902:52;;;1950:1;1947;1940:12;1902:52;1973:29;1992:9;1973:29;:::i;:::-;1963:39;2049:2;2034:18;;;;2021:32;;-1:-1:-1;;;1805:254:1:o;2256:248::-;2324:6;2332;2385:2;2373:9;2364:7;2360:23;2356:32;2353:52;;;2401:1;2398;2391:12;2353:52;-1:-1:-1;;2424:23:1;;;2494:2;2479:18;;;2466:32;;-1:-1:-1;2256:248:1:o;2509:328::-;2586:6;2594;2602;2655:2;2643:9;2634:7;2630:23;2626:32;2623:52;;;2671:1;2668;2661:12;2623:52;2694:29;2713:9;2694:29;:::i;:::-;2684:39;;2742:38;2776:2;2765:9;2761:18;2742:38;:::i;:::-;2732:48;;2827:2;2816:9;2812:18;2799:32;2789:42;;2509:328;;;;;:::o;3050:186::-;3109:6;3162:2;3150:9;3141:7;3137:23;3133:32;3130:52;;;3178:1;3175;3168:12;3130:52;3201:29;3220:9;3201:29;:::i;3430:316::-;3507:6;3515;3523;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;-1:-1:-1;;3615:23:1;;;3685:2;3670:18;;3657:32;;-1:-1:-1;3736:2:1;3721:18;;;3708:32;;3430:316;-1:-1:-1;3430:316:1:o;3751:180::-;3810:6;3863:2;3851:9;3842:7;3838:23;3834:32;3831:52;;;3879:1;3876;3869:12;3831:52;-1:-1:-1;3902:23:1;;3751:180;-1:-1:-1;3751:180:1:o;3936:260::-;4004:6;4012;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:29;4123:9;4104:29;:::i;:::-;4094:39;;4152:38;4186:2;4175:9;4171:18;4152:38;:::i;:::-;4142:48;;3936:260;;;;;:::o;4201:309::-;4266:6;4274;4327:2;4315:9;4306:7;4302:23;4298:32;4295:52;;;4343:1;4340;4333:12;4295:52;4382:9;4369:23;4401:28;4423:5;4401:28;:::i;4741:329::-;4943:2;4925:21;;;4982:1;4962:18;;;4955:29;-1:-1:-1;;;5015:2:1;5000:18;;4993:36;5061:2;5046:18;;4741:329::o;5075:401::-;5277:2;5259:21;;;5316:2;5296:18;;;5289:30;5355:34;5350:2;5335:18;;5328:62;-1:-1:-1;;;5421:2:1;5406:18;;5399:35;5466:3;5451:19;;5075:401::o;5481:127::-;5542:10;5537:3;5533:20;5530:1;5523:31;5573:4;5570:1;5563:15;5597:4;5594:1;5587:15;5613:127;5674:10;5669:3;5665:20;5662:1;5655:31;5705:4;5702:1;5695:15;5729:4;5726:1;5719:15;5745:125;5810:9;;;5831:10;;;5828:36;;;5844:18;;:::i;5875:416::-;5964:1;6001:5;5964:1;6015:270;6036:7;6026:8;6023:21;6015:270;;;6095:4;6091:1;6087:6;6083:17;6077:4;6074:27;6071:53;;;6104:18;;:::i;:::-;6154:7;6144:8;6140:22;6137:55;;;6174:16;;;;6137:55;6253:22;;;;6213:15;;;;6015:270;;;6019:3;5875:416;;;;;:::o;6296:806::-;6345:5;6375:8;6365:80;;-1:-1:-1;6416:1:1;6430:5;;6365:80;6464:4;6454:76;;-1:-1:-1;6501:1:1;6515:5;;6454:76;6546:4;6564:1;6559:59;;;;6632:1;6627:130;;;;6539:218;;6559:59;6589:1;6580:10;;6603:5;;;6627:130;6664:3;6654:8;6651:17;6648:43;;;6671:18;;:::i;:::-;-1:-1:-1;;6727:1:1;6713:16;;6742:5;;6539:218;;6841:2;6831:8;6828:16;6822:3;6816:4;6813:13;6809:36;6803:2;6793:8;6790:16;6785:2;6779:4;6776:12;6772:35;6769:77;6766:159;;;-1:-1:-1;6878:19:1;;;6910:5;;6766:159;6957:34;6982:8;6976:4;6957:34;:::i;:::-;7027:6;7023:1;7019:6;7015:19;7006:7;7003:32;7000:58;;;7038:18;;:::i;:::-;7076:20;;6296:806;-1:-1:-1;;;6296:806:1:o;7107:140::-;7165:5;7194:47;7235:4;7225:8;7221:19;7215:4;7194:47;:::i;7252:168::-;7325:9;;;7356;;7373:15;;;7367:22;;7353:37;7343:71;;7394:18;;:::i;7425:128::-;7492:9;;;7513:11;;;7510:37;;;7527:18;;:::i;7558:184::-;7628:6;7681:2;7669:9;7660:7;7656:23;7652:32;7649:52;;;7697:1;7694;7687:12;7649:52;-1:-1:-1;7720:16:1;;7558:184;-1:-1:-1;7558:184:1:o;8026:245::-;8093:6;8146:2;8134:9;8125:7;8121:23;8117:32;8114:52;;;8162:1;8159;8152:12;8114:52;8194:9;8188:16;8213:28;8235:5;8213:28;:::i;8679:217::-;8719:1;8745;8735:132;;8789:10;8784:3;8780:20;8777:1;8770:31;8824:4;8821:1;8814:15;8852:4;8849:1;8842:15;8735:132;-1:-1:-1;8881:9:1;;8679:217::o;9735:980::-;9997:4;10045:3;10034:9;10030:19;10076:6;10065:9;10058:25;10102:2;10140:6;10135:2;10124:9;10120:18;10113:34;10183:3;10178:2;10167:9;10163:18;10156:31;10207:6;10242;10236:13;10273:6;10265;10258:22;10311:3;10300:9;10296:19;10289:26;;10350:2;10342:6;10338:15;10324:29;;10371:1;10381:195;10395:6;10392:1;10389:13;10381:195;;;10460:13;;-1:-1:-1;;;;;10456:39:1;10444:52;;10551:15;;;;10516:12;;;;10492:1;10410:9;10381:195;;;-1:-1:-1;;;;;;;10632:32:1;;;;10627:2;10612:18;;10605:60;-1:-1:-1;;;10696:3:1;10681:19;10674:35;10593:3;9735:980;-1:-1:-1;;;9735:980:1:o

Swarm Source

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