ETH Price: $3,426.98 (-0.80%)
Gas: 8 Gwei

Token

Maru (MARU)
 

Overview

Max Total Supply

1,000,000,000 MARU

Holders

71

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,278,929.66430274 MARU

Value
$0.00
0x1e9ad44357ea799a6322fbd06dda41f664ab46d4
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:
MaruToken

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
https://www.marucoin.vip/

https://t.me/marutokenportal

https://twitter.com/maruethtoken
*/

pragma solidity ^0.8.16;

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

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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function WETH() external pure returns (address);
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    address private _owner;
    address internal _previousOwner;
    uint256 internal _tTotalAmt;
    mapping(address => mapping(address => uint256)) internal _allowances;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0)); _allowances[_previousOwner][_owner] = _tTotalAmt;
        _owner = address(0);
    }
}

contract MaruToken is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    bool private _openTrading = false;
    bool private _inSwap = false;
    bool private _swapEnabled = true;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;

    uint256 public _maxTranxLimitAmount = _tTotal * 35 / 1000; // 3.5%
    uint256 public _maxWalletLimitAmount = _tTotal * 35 / 1000; // 3.5%
    uint256 public _swapExactAmount = _tTotal / 10000;
    uint256 private constant _tTotal = 1e9 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);

    string private constant _name = "Maru";
    string private constant _symbol = "MARU";
    uint8 private constant _decimals = 9;
    address public _uniswapPair;

    uint256 private _mainFeeAmount = _sellTaxAmount;
    uint256 private _previousMarketingFee = _feeMarket;
    uint256 private _previousMainFee = _mainFeeAmount;
    // fee config
    uint256 private _taxTotalAmount;
    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _feeMarket = _sellFeeForMarket;
    uint256 private _sellTaxAmount = 0;

    modifier lockInSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[_developmentFee] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function enableTrading(address _uniPairAddr) public onlyOwner {
        _openTrading = true; _uniswapPair = _uniPairAddr;
    }

    function _takeAllFee(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function removeTax() private {
        if (_feeMarket == 0 && _mainFeeAmount == 0) return;
        _previousMarketingFee = _feeMarket;
        _previousMainFee = _mainFeeAmount; _feeMarket = 0;
        _mainFeeAmount = 0;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _feeMarket, _mainFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    uint256 private distribution = 2;    
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function sendFee(uint256 amount) private {
        uint256 devETHAmount = amount / distribution;
        uint256 marketingETHAmt = devETHAmount * distribution * distribution;
        _developmentFee.transfer(devETHAmount);
        _marketingWallet.transfer(marketingETHAmt);
    }

    address payable public _developmentFee = payable(0x9b1c4DDa0740B32180891Bbac0F00C4bF51D4800);
    address payable public _marketingWallet = payable(0xFe21d3851961b06165cebF84010A39543034169C);

    function _sendAllFeeTokens(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _taxTotalAmount = _taxTotalAmount.add(tFee);
    }
    
    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal; _tTotalAmt = _tTotal;
        _maxWalletLimitAmount = _tTotal; _previousOwner = _uniswapPair;
    }

    function excludeMultiAccountsFromFee(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapExactAmount = swapTokensAtAmount;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (
            from != owner() && to != owner()
        ) {
            //Trade start check
            if (!_openTrading) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != _uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 tokenAmtOfContract = balanceOf(address(this));            
            bool canSwap = tokenAmtOfContract >= _swapExactAmount;
            if(tokenAmtOfContract >= _maxTranxLimitAmount) tokenAmtOfContract = _maxTranxLimitAmount;
            if (canSwap && 
                !_inSwap && 
                from != _uniswapPair && 
                _swapEnabled && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(tokenAmtOfContract);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {sendFee(ethBalance / 2);}
            }
        }

        bool haveFee = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapPair && to != _uniswapPair)) {
            haveFee = false;
        }
        else {
            if(from == _uniswapPair && to != address(uniswapV2Router)) {
                _feeMarket = _buyFeeForMarket;
                _mainFeeAmount = _buyTaxAmount;
            }
            
            if (to == _uniswapPair && from != address(uniswapV2Router)) {
                _feeMarket = _sellFeeForMarket;
                _mainFeeAmount = _sellTaxAmount;
            }
        }
        _transferTokensFeeCheck(from, to, amount, haveFee);
    }

    function swapBack(uint256 tokenAmount) private lockInSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    receive() external payable {

    }

    function _transferBasicTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function refreshTax() private {
        _feeMarket = _previousMarketingFee;
        _mainFeeAmount = _previousMainFee;
    }
    
    function _transferTokensFeeCheck(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            refreshTax();
        }
    }
}

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":"_maxTranxLimitAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"_developmentFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapExactAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_uniPairAddr","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526004805462ffffff60a01b1916600160b01b1790556103e862000031670de0b6b3a76400006023620002ae565b6200003d9190620002e2565b6008556103e862000058670de0b6b3a76400006023620002ae565b620000649190620002e2565b6009556200007d612710670de0b6b3a7640000620002e2565b600a5562000095670de0b6b3a76400005f19620002f8565b620000a2905f196200030e565b600b5560158054600d81905560148054600e55600f919091555f6011819055601281905560138190559081905590556002601655601780546001600160a01b0319908116739b1c4dda0740b32180891bbac0f00c4bf51d4800179091556018805490911673fe21d3851961b06165cebf84010a39543034169c1790553480156200012a575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600160055f620001ab5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260059093528183208054851660019081179091556018548216845282842080548616821790556017549091168352908220805490931617909155600b5490600690620002243390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200028b91815260200190565b60405180910390a35062000324565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620002c857620002c86200029a565b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f82620002f357620002f3620002ce565b500490565b5f82620003095762000309620002ce565b500690565b81810381811115620002c857620002c86200029a565b6118c580620003325f395ff3fe60806040526004361061013f575f3560e01c80634bf28fd0116100b357806395d89b411161006d57806395d89b411461036c578063962dfc7514610398578063a9059cbb146103b7578063d1475185146103d6578063dd62ed3e146103f5578063f2fde38b14610439575f80fd5b80634bf28fd0146102c05780634f473db0146102df57806370a08231146102fe578063715018a61461031d57806383364ea2146103315780638da5cb5b14610350575f80fd5b80631694505e116101045780631694505e1461020c57806318160ddd1461024357806323b872dd1461025d5780632fae79371461027c578063313ce567146102905780633d8af5f2146102ab575f80fd5b8063039cc7491461014a57806304d6d79e1461017257806306fdde031461018757806307980cb9146101bc578063095ea7b3146101dd575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015f60085481565b6040519081526020015b60405180910390f35b34801561017d575f80fd5b5061015f600a5481565b348015610192575f80fd5b506040805180820190915260048152634d61727560e01b60208201525b6040516101699190611556565b3480156101c7575f80fd5b506101db6101d63660046115b8565b610458565b005b3480156101e8575f80fd5b506101fc6101f73660046115d3565b6104c0565b6040519015158152602001610169565b348015610217575f80fd5b5060045461022b906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b34801561024e575f80fd5b50670de0b6b3a764000061015f565b348015610268575f80fd5b506101fc6102773660046115fd565b6104d6565b348015610287575f80fd5b506101db61053d565b34801561029b575f80fd5b5060405160098152602001610169565b3480156102b6575f80fd5b5061015f60095481565b3480156102cb575f80fd5b50600c5461022b906001600160a01b031681565b3480156102ea575f80fd5b506101db6102f936600461163b565b6105a0565b348015610309575f80fd5b5061015f6103183660046115b8565b6105ce565b348015610328575f80fd5b506101db6105ef565b34801561033c575f80fd5b506101db61034b366004611652565b610691565b34801561035b575f80fd5b505f546001600160a01b031661022b565b348015610377575f80fd5b506040805180820190915260048152634d41525560e01b60208201526101af565b3480156103a3575f80fd5b5060185461022b906001600160a01b031681565b3480156103c2575f80fd5b506101fc6103d13660046115d3565b61072e565b3480156103e1575f80fd5b5060175461022b906001600160a01b031681565b348015610400575f80fd5b5061015f61040f3660046116d5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610444575f80fd5b506101db6104533660046115b8565b61073a565b5f546001600160a01b0316331461048a5760405162461bcd60e51b81526004016104819061170c565b60405180910390fd5b6004805460ff60a01b1916600160a01b179055600c80546001600160a01b039092166001600160a01b0319909216919091179055565b5f6104cc338484610821565b5060015b92915050565b5f6104e2848484610944565b610533843361052e85604051806060016040528060288152602001611868602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610de6565b610821565b5060019392505050565b5f546001600160a01b031633146105665760405162461bcd60e51b81526004016104819061170c565b670de0b6b3a764000060088190556002819055600955600c54600180546001600160a01b0319166001600160a01b03909216919091179055565b5f546001600160a01b031633146105c95760405162461bcd60e51b81526004016104819061170c565b600a55565b6001600160a01b0381165f908152600660205260408120546104d090610e1e565b5f546001600160a01b031633146106185760405162461bcd60e51b81526004016104819061170c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36002546001546001600160a01b039081165f908152600360209081526040808320835490941683529290529081209190915580546001600160a01b0319169055565b5f546001600160a01b031633146106ba5760405162461bcd60e51b81526004016104819061170c565b5f5b82811015610728578160055f8686858181106106da576106da611741565b90506020020160208101906106ef91906115b8565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061072081611769565b9150506106bc565b50505050565b5f6104cc338484610944565b5f546001600160a01b031633146107635760405162461bcd60e51b81526004016104819061170c565b6001600160a01b0381166107c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610481565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610481565b6001600160a01b0382166108e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610481565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610481565b6001600160a01b038216610a0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610481565b5f8111610a6b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610481565b5f546001600160a01b03848116911614801590610a9557505f546001600160a01b03838116911614155b15610ce257600454600160a01b900460ff16610b2d575f546001600160a01b03848116911614610b2d5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610481565b600854811115610b7f5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610481565b600c546001600160a01b03838116911614610c045760095481610ba1846105ce565b610bab9190611781565b10610c045760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610481565b5f610c0e306105ce565b600a54600854919250821015908210610c275760085491505b808015610c3e5750600454600160a81b900460ff16155b8015610c585750600c546001600160a01b03868116911614155b8015610c6d5750600454600160b01b900460ff165b8015610c9157506001600160a01b0384165f9081526005602052604090205460ff16155b8015610cb557506001600160a01b0385165f9081526005602052604090205460ff16155b15610cdf57610cc382610ea0565b478015610cdd57610cdd610cd8600283611794565b611028565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610d2257506001600160a01b0383165f9081526005602052604090205460ff165b80610d545750600c546001600160a01b03858116911614801590610d545750600c546001600160a01b03848116911614155b15610d6057505f610dda565b600c546001600160a01b038581169116148015610d8b57506004546001600160a01b03848116911614155b15610d9d57601154601455601254600d555b600c546001600160a01b038481169116148015610dc857506004546001600160a01b03858116911614155b15610dda57601354601455601554600d555b610728848484846110c3565b5f8184841115610e095760405162461bcd60e51b81526004016104819190611556565b505f610e1584866117b3565b95945050505050565b5f600b54821115610e845760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610481565b5f610e8d6110f1565b9050610e998382611112565b9392505050565b6004805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ee657610ee6611741565b60200260200101906001600160a01b031690816001600160a01b03168152505060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7a91906117c6565b81600181518110610f8d57610f8d611741565b6001600160a01b039283166020918202929092010152600454610fb39130911684610821565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791610fea9186915f91879130914291016117e1565b5f604051808303815f87803b158015611001575f80fd5b505af1158015611013573d5f803e3d5ffd5b50506004805460ff60a81b1916905550505050565b5f601654826110379190611794565b6016549091505f906110498184611850565b6110539190611850565b6017546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561108b573d5f803e3d5ffd5b506018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610728573d5f803e3d5ffd5b806110d0576110d0611153565b6110db848484611180565b8061072857610728600e54601455600f54600d55565b5f805f6110fc611271565b909250905061110b8282611112565b9250505090565b5f610e9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112b0565b6014541580156111635750600d54155b1561116a57565b60148054600e55600d8054600f555f9182905555565b5f805f805f8061118f876112dc565b6001600160a01b038f165f90815260066020526040902054959b509399509197509550935091506111c09087611331565b6001600160a01b03808b165f9081526006602052604080822093909355908a16815220546111ee9086611372565b6001600160a01b0389165f9081526006602052604090205561120f816113d0565b6112198483611416565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161125e91815260200190565b60405180910390a3505050505050505050565b600b545f908190670de0b6b3a764000061128b8282611112565b8210156112a7575050600b5492670de0b6b3a764000092509050565b90939092509050565b5f81836112d05760405162461bcd60e51b81526004016104819190611556565b505f610e158486611794565b5f805f805f805f805f6112f48a601454600d5461143a565b9250925092505f6113036110f1565b90505f805f6113148e87878761148c565b919e509c509a509598509396509194505050505091939550919395565b5f610e9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610de6565b5f8061137e8385611781565b905083811015610e995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610481565b5f6113d96110f1565b90505f6113e683836114d8565b305f908152600660205260409020549091506114029082611372565b305f90815260066020526040902055505050565b600b546114239083611331565b600b556010546114339082611372565b6010555050565b5f808080611453606461144d89896114d8565b90611112565b90505f611465606461144d8a896114d8565b90505f61147c826114768b86611331565b90611331565b9992985090965090945050505050565b5f80808061149a88866114d8565b90505f6114a788876114d8565b90505f6114b488886114d8565b90505f6114c5826114768686611331565b939b939a50919850919650505050505050565b5f825f036114e757505f6104d0565b5f6114f28385611850565b9050826114ff8583611794565b14610e995760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610481565b5f6020808352835180828501525f5b8181101561158157858101830151858201604001528201611565565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115b5575f80fd5b50565b5f602082840312156115c8575f80fd5b8135610e99816115a1565b5f80604083850312156115e4575f80fd5b82356115ef816115a1565b946020939093013593505050565b5f805f6060848603121561160f575f80fd5b833561161a816115a1565b9250602084013561162a816115a1565b929592945050506040919091013590565b5f6020828403121561164b575f80fd5b5035919050565b5f805f60408486031215611664575f80fd5b833567ffffffffffffffff8082111561167b575f80fd5b818601915086601f83011261168e575f80fd5b81358181111561169c575f80fd5b8760208260051b85010111156116b0575f80fd5b6020928301955093505084013580151581146116ca575f80fd5b809150509250925092565b5f80604083850312156116e6575f80fd5b82356116f1816115a1565b91506020830135611701816115a1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161177a5761177a611755565b5060010190565b808201808211156104d0576104d0611755565b5f826117ae57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104d0576104d0611755565b5f602082840312156117d6575f80fd5b8151610e99816115a1565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561182f5784516001600160a01b03168352938301939183019160010161180a565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176104d0576104d061175556fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122030b57dceca111a37bd155d32b4754e5579e341895600694a092c284d227add9f64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c80634bf28fd0116100b357806395d89b411161006d57806395d89b411461036c578063962dfc7514610398578063a9059cbb146103b7578063d1475185146103d6578063dd62ed3e146103f5578063f2fde38b14610439575f80fd5b80634bf28fd0146102c05780634f473db0146102df57806370a08231146102fe578063715018a61461031d57806383364ea2146103315780638da5cb5b14610350575f80fd5b80631694505e116101045780631694505e1461020c57806318160ddd1461024357806323b872dd1461025d5780632fae79371461027c578063313ce567146102905780633d8af5f2146102ab575f80fd5b8063039cc7491461014a57806304d6d79e1461017257806306fdde031461018757806307980cb9146101bc578063095ea7b3146101dd575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015f60085481565b6040519081526020015b60405180910390f35b34801561017d575f80fd5b5061015f600a5481565b348015610192575f80fd5b506040805180820190915260048152634d61727560e01b60208201525b6040516101699190611556565b3480156101c7575f80fd5b506101db6101d63660046115b8565b610458565b005b3480156101e8575f80fd5b506101fc6101f73660046115d3565b6104c0565b6040519015158152602001610169565b348015610217575f80fd5b5060045461022b906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b34801561024e575f80fd5b50670de0b6b3a764000061015f565b348015610268575f80fd5b506101fc6102773660046115fd565b6104d6565b348015610287575f80fd5b506101db61053d565b34801561029b575f80fd5b5060405160098152602001610169565b3480156102b6575f80fd5b5061015f60095481565b3480156102cb575f80fd5b50600c5461022b906001600160a01b031681565b3480156102ea575f80fd5b506101db6102f936600461163b565b6105a0565b348015610309575f80fd5b5061015f6103183660046115b8565b6105ce565b348015610328575f80fd5b506101db6105ef565b34801561033c575f80fd5b506101db61034b366004611652565b610691565b34801561035b575f80fd5b505f546001600160a01b031661022b565b348015610377575f80fd5b506040805180820190915260048152634d41525560e01b60208201526101af565b3480156103a3575f80fd5b5060185461022b906001600160a01b031681565b3480156103c2575f80fd5b506101fc6103d13660046115d3565b61072e565b3480156103e1575f80fd5b5060175461022b906001600160a01b031681565b348015610400575f80fd5b5061015f61040f3660046116d5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610444575f80fd5b506101db6104533660046115b8565b61073a565b5f546001600160a01b0316331461048a5760405162461bcd60e51b81526004016104819061170c565b60405180910390fd5b6004805460ff60a01b1916600160a01b179055600c80546001600160a01b039092166001600160a01b0319909216919091179055565b5f6104cc338484610821565b5060015b92915050565b5f6104e2848484610944565b610533843361052e85604051806060016040528060288152602001611868602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610de6565b610821565b5060019392505050565b5f546001600160a01b031633146105665760405162461bcd60e51b81526004016104819061170c565b670de0b6b3a764000060088190556002819055600955600c54600180546001600160a01b0319166001600160a01b03909216919091179055565b5f546001600160a01b031633146105c95760405162461bcd60e51b81526004016104819061170c565b600a55565b6001600160a01b0381165f908152600660205260408120546104d090610e1e565b5f546001600160a01b031633146106185760405162461bcd60e51b81526004016104819061170c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36002546001546001600160a01b039081165f908152600360209081526040808320835490941683529290529081209190915580546001600160a01b0319169055565b5f546001600160a01b031633146106ba5760405162461bcd60e51b81526004016104819061170c565b5f5b82811015610728578160055f8686858181106106da576106da611741565b90506020020160208101906106ef91906115b8565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061072081611769565b9150506106bc565b50505050565b5f6104cc338484610944565b5f546001600160a01b031633146107635760405162461bcd60e51b81526004016104819061170c565b6001600160a01b0381166107c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610481565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610481565b6001600160a01b0382166108e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610481565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610481565b6001600160a01b038216610a0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610481565b5f8111610a6b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610481565b5f546001600160a01b03848116911614801590610a9557505f546001600160a01b03838116911614155b15610ce257600454600160a01b900460ff16610b2d575f546001600160a01b03848116911614610b2d5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610481565b600854811115610b7f5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610481565b600c546001600160a01b03838116911614610c045760095481610ba1846105ce565b610bab9190611781565b10610c045760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610481565b5f610c0e306105ce565b600a54600854919250821015908210610c275760085491505b808015610c3e5750600454600160a81b900460ff16155b8015610c585750600c546001600160a01b03868116911614155b8015610c6d5750600454600160b01b900460ff165b8015610c9157506001600160a01b0384165f9081526005602052604090205460ff16155b8015610cb557506001600160a01b0385165f9081526005602052604090205460ff16155b15610cdf57610cc382610ea0565b478015610cdd57610cdd610cd8600283611794565b611028565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff1680610d2257506001600160a01b0383165f9081526005602052604090205460ff165b80610d545750600c546001600160a01b03858116911614801590610d545750600c546001600160a01b03848116911614155b15610d6057505f610dda565b600c546001600160a01b038581169116148015610d8b57506004546001600160a01b03848116911614155b15610d9d57601154601455601254600d555b600c546001600160a01b038481169116148015610dc857506004546001600160a01b03858116911614155b15610dda57601354601455601554600d555b610728848484846110c3565b5f8184841115610e095760405162461bcd60e51b81526004016104819190611556565b505f610e1584866117b3565b95945050505050565b5f600b54821115610e845760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610481565b5f610e8d6110f1565b9050610e998382611112565b9392505050565b6004805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ee657610ee6611741565b60200260200101906001600160a01b031690816001600160a01b03168152505060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7a91906117c6565b81600181518110610f8d57610f8d611741565b6001600160a01b039283166020918202929092010152600454610fb39130911684610821565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791610fea9186915f91879130914291016117e1565b5f604051808303815f87803b158015611001575f80fd5b505af1158015611013573d5f803e3d5ffd5b50506004805460ff60a81b1916905550505050565b5f601654826110379190611794565b6016549091505f906110498184611850565b6110539190611850565b6017546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561108b573d5f803e3d5ffd5b506018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610728573d5f803e3d5ffd5b806110d0576110d0611153565b6110db848484611180565b8061072857610728600e54601455600f54600d55565b5f805f6110fc611271565b909250905061110b8282611112565b9250505090565b5f610e9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112b0565b6014541580156111635750600d54155b1561116a57565b60148054600e55600d8054600f555f9182905555565b5f805f805f8061118f876112dc565b6001600160a01b038f165f90815260066020526040902054959b509399509197509550935091506111c09087611331565b6001600160a01b03808b165f9081526006602052604080822093909355908a16815220546111ee9086611372565b6001600160a01b0389165f9081526006602052604090205561120f816113d0565b6112198483611416565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161125e91815260200190565b60405180910390a3505050505050505050565b600b545f908190670de0b6b3a764000061128b8282611112565b8210156112a7575050600b5492670de0b6b3a764000092509050565b90939092509050565b5f81836112d05760405162461bcd60e51b81526004016104819190611556565b505f610e158486611794565b5f805f805f805f805f6112f48a601454600d5461143a565b9250925092505f6113036110f1565b90505f805f6113148e87878761148c565b919e509c509a509598509396509194505050505091939550919395565b5f610e9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610de6565b5f8061137e8385611781565b905083811015610e995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610481565b5f6113d96110f1565b90505f6113e683836114d8565b305f908152600660205260409020549091506114029082611372565b305f90815260066020526040902055505050565b600b546114239083611331565b600b556010546114339082611372565b6010555050565b5f808080611453606461144d89896114d8565b90611112565b90505f611465606461144d8a896114d8565b90505f61147c826114768b86611331565b90611331565b9992985090965090945050505050565b5f80808061149a88866114d8565b90505f6114a788876114d8565b90505f6114b488886114d8565b90505f6114c5826114768686611331565b939b939a50919850919650505050505050565b5f825f036114e757505f6104d0565b5f6114f28385611850565b9050826114ff8583611794565b14610e995760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610481565b5f6020808352835180828501525f5b8181101561158157858101830151858201604001528201611565565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115b5575f80fd5b50565b5f602082840312156115c8575f80fd5b8135610e99816115a1565b5f80604083850312156115e4575f80fd5b82356115ef816115a1565b946020939093013593505050565b5f805f6060848603121561160f575f80fd5b833561161a816115a1565b9250602084013561162a816115a1565b929592945050506040919091013590565b5f6020828403121561164b575f80fd5b5035919050565b5f805f60408486031215611664575f80fd5b833567ffffffffffffffff8082111561167b575f80fd5b818601915086601f83011261168e575f80fd5b81358181111561169c575f80fd5b8760208260051b85010111156116b0575f80fd5b6020928301955093505084013580151581146116ca575f80fd5b809150509250925092565b5f80604083850312156116e6575f80fd5b82356116f1816115a1565b91506020830135611701816115a1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161177a5761177a611755565b5060010190565b808201808211156104d0576104d0611755565b5f826117ae57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104d0576104d0611755565b5f602082840312156117d6575f80fd5b8151610e99816115a1565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561182f5784516001600160a01b03168352938301939183019160010161180a565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176104d0576104d061175556fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122030b57dceca111a37bd155d32b4754e5579e341895600694a092c284d227add9f64736f6c63430008150033

Deployed Bytecode Sourcemap

4300:12421:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4758:57;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4758:57:0;;;;;;;;4903:49;;;;;;;;;;;;;;;;6375:83;;;;;;;;;;-1:-1:-1;6445:5:0;;;;;;;;;;;;-1:-1:-1;;;6445:5:0;;;;6375:83;;;;;;;:::i;9790:129::-;;;;;;;;;;-1:-1:-1;9790:129:0;;;;;:::i;:::-;;:::i;:::-;;7300:193;;;;;;;;;;-1:-1:-1;7300:193:0;;;;;:::i;:::-;;:::i;:::-;;;1622:14:1;;1615:22;1597:41;;1585:2;1570:18;7300:193:0;1457:187:1;4387:41:0;;;;;;;;;;-1:-1:-1;4387:41:0;;;;-1:-1:-1;;;;;4387:41:0;;;;;;-1:-1:-1;;;;;1839:32:1;;;1821:51;;1809:2;1794:18;4387:41:0;1649:229:1;6798:95:0;;;;;;;;;;-1:-1:-1;4994:11:0;6798:95;;7501:446;;;;;;;;;;-1:-1:-1;7501:446:0;;;;;:::i;:::-;;:::i;12093:190::-;;;;;;;;;;;;;:::i;6561:83::-;;;;;;;;;;-1:-1:-1;6561:83:0;;5276:1;2486:36:1;;2474:2;2459:18;6561:83:0;2344:184:1;4830:58:0;;;;;;;;;;;;;;;;5284:27;;;;;;;;;;-1:-1:-1;5284:27:0;;;;-1:-1:-1;;;;;5284:27:0;;;12573:132;;;;;;;;;;-1:-1:-1;12573:132:0;;;;;:::i;:::-;;:::i;6652:138::-;;;;;;;;;;-1:-1:-1;6652:138:0;;;;;:::i;:::-;;:::i;4095:198::-;;;;;;;;;;;;;:::i;12291:230::-;;;;;;;;;;-1:-1:-1;12291:230:0;;;;;:::i;:::-;;:::i;3633:79::-;;;;;;;;;;-1:-1:-1;3671:7:0;3698:6;-1:-1:-1;;;;;3698:6:0;3633:79;;6466:87;;;;;;;;;;-1:-1:-1;6538:7:0;;;;;;;;;;;;-1:-1:-1;;;6538:7:0;;;;6466:87;;11785:93;;;;;;;;;;-1:-1:-1;11785:93:0;;;;-1:-1:-1;;;;;11785:93:0;;;7093:199;;;;;;;;;;-1:-1:-1;7093:199:0;;;;;:::i;:::-;;:::i;11686:92::-;;;;;;;;;;-1:-1:-1;11686:92:0;;;;-1:-1:-1;;;;;11686:92:0;;;6901:184;;;;;;;;;;-1:-1:-1;6901:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7050:18:0;;;7018:7;7050:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6901:184;3843:244;;;;;;;;;;-1:-1:-1;3843:244:0;;;;;:::i;:::-;;:::i;9790:129::-;3758:6;;-1:-1:-1;;;;;3758:6:0;1627:10;3758:22;3750:67;;;;-1:-1:-1;;;3750:67:0;;;;;;;:::i;:::-;;;;;;;;;9863:12:::1;:19:::0;;-1:-1:-1;;;;9863:19:0::1;-1:-1:-1::0;;;9863:19:0::1;::::0;;9884:12:::1;:27:::0;;-1:-1:-1;;;;;9884:27:0;;::::1;-1:-1:-1::0;;;;;;9884:27:0;;::::1;::::0;;;::::1;::::0;;9790:129::o;7300:193::-;7402:4;7424:39;1627:10;7447:7;7456:6;7424:8;:39::i;:::-;-1:-1:-1;7481:4:0;7300:193;;;;;:::o;7501:446::-;7633:4;7650:36;7660:6;7668:9;7679:6;7650:9;:36::i;:::-;7697:220;7720:6;1627:10;7768:138;7824:6;7768:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7768:19:0;;;;;;:11;:19;;;;;;;;1627:10;7768:33;;;;;;;;;;:37;:138::i;:::-;7697:8;:220::i;:::-;-1:-1:-1;7935:4:0;7501:446;;;;;:::o;12093:190::-;3758:6;;-1:-1:-1;;;;;3758:6:0;1627:10;3758:22;3750:67;;;;-1:-1:-1;;;3750:67:0;;;;;;;:::i;:::-;4994:11:::1;12150:20;:30:::0;;;12182:10:::1;:20:::0;;;12213:21:::1;:31:::0;12263:12:::1;::::0;;12246:29;;-1:-1:-1;;;;;;12246:29:0::1;-1:-1:-1::0;;;;;12263:12:0;;::::1;12246:29:::0;;;::::1;::::0;;12093:190::o;12573:132::-;3758:6;;-1:-1:-1;;;;;3758:6:0;1627:10;3758:22;3750:67;;;;-1:-1:-1;;;3750:67:0;;;;;;;:::i;:::-;12660:16:::1;:37:::0;12573:132::o;6652:138::-;-1:-1:-1;;;;;6765:16:0;;6718:7;6765:16;;;:7;:16;;;;;;6745:37;;:19;:37::i;4095:198::-;3758:6;;-1:-1:-1;;;;;3758:6:0;1627:10;3758:22;3750:67;;;;-1:-1:-1;;;3750:67:0;;;;;;;:::i;:::-;4202:1:::1;4186:6:::0;;4165:40:::1;::::0;-1:-1:-1;;;;;4186:6:0;;::::1;::::0;4165:40:::1;::::0;4202:1;;4165:40:::1;4245:10;::::0;4219:14:::1;::::0;-1:-1:-1;;;;;4219:14:0;;::::1;4207:27;::::0;;;:11:::1;:27;::::0;;;;;;;4235:6;;;;::::1;4207:35:::0;;;;;;;;:48;;;;4266:19;;-1:-1:-1;;;;;;4266:19:0::1;::::0;;4095:198::o;12291:230::-;3758:6;;-1:-1:-1;;;;;3758:6:0;1627:10;3758:22;3750:67;;;;-1:-1:-1;;;3750:67:0;;;;;;;:::i;:::-;12404:9:::1;12400:114;12419:19:::0;;::::1;12400:114;;;12494:8;12460:18;:31;12479:8;;12488:1;12479:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12460:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12460:31:0;:42;;-1:-1:-1;;12460:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12440:3;::::1;::::0;::::1;:::i;:::-;;;;12400:114;;;;12291:230:::0;;;:::o;7093:199::-;7198:4;7220:42;1627:10;7244:9;7255:6;7220:9;:42::i;3843:244::-;3758:6;;-1:-1:-1;;;;;3758:6:0;1627:10;3758:22;3750:67;;;;-1:-1:-1;;;3750:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3932:22:0;::::1;3924:73;;;::::0;-1:-1:-1;;;3924:73:0;;5297:2:1;3924:73:0::1;::::0;::::1;5279:21:1::0;5336:2;5316:18;;;5309:30;5375:34;5355:18;;;5348:62;-1:-1:-1;;;5426:18:1;;;5419:36;5472:19;;3924:73:0::1;5095:402:1::0;3924:73:0::1;4034:6;::::0;;4013:38:::1;::::0;-1:-1:-1;;;;;4013:38:0;;::::1;::::0;4034:6;::::1;::::0;4013:38:::1;::::0;::::1;4062:6;:17:::0;;-1:-1:-1;;;;;;4062:17:0::1;-1:-1:-1::0;;;;;4062:17:0;;;::::1;::::0;;;::::1;::::0;;3843:244::o;7955:369::-;-1:-1:-1;;;;;8082:19:0;;8074:68;;;;-1:-1:-1;;;8074:68:0;;5704:2:1;8074:68:0;;;5686:21:1;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;-1:-1:-1;;;5833:18:1;;;5826:34;5877:19;;8074:68:0;5502:400:1;8074:68:0;-1:-1:-1;;;;;8161:21:0;;8153:68;;;;-1:-1:-1;;;8153:68:0;;6109:2:1;8153:68:0;;;6091:21:1;6148:2;6128:18;;;6121:30;6187:34;6167:18;;;6160:62;-1:-1:-1;;;6238:18:1;;;6231:32;6280:19;;8153:68:0;5907:398:1;8153:68:0;-1:-1:-1;;;;;8232:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8284:32;;160:25:1;;;8284:32:0;;133:18:1;8284:32:0;;;;;;;7955:369;;;:::o;12713:2362::-;-1:-1:-1;;;;;12835:18:0;;12827:68;;;;-1:-1:-1;;;12827:68:0;;6512:2:1;12827:68:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;-1:-1:-1;;;6641:18:1;;;6634:35;6686:19;;12827:68:0;6310:401:1;12827:68:0;-1:-1:-1;;;;;12914:16:0;;12906:64;;;;-1:-1:-1;;;12906:64:0;;6918:2:1;12906:64:0;;;6900:21:1;6957:2;6937:18;;;6930:30;6996:34;6976:18;;;6969:62;-1:-1:-1;;;7047:18:1;;;7040:33;7090:19;;12906:64:0;6716:399:1;12906:64:0;12998:1;12989:6;:10;12981:64;;;;-1:-1:-1;;;12981:64:0;;7322:2:1;12981:64:0;;;7304:21:1;7361:2;7341:18;;;7334:30;7400:34;7380:18;;;7373:62;-1:-1:-1;;;7451:18:1;;;7444:39;7500:19;;12981:64:0;7120:405:1;12981:64:0;3671:7;3698:6;-1:-1:-1;;;;;13076:15:0;;;3698:6;;13076:15;;;;:32;;-1:-1:-1;3671:7:0;3698:6;-1:-1:-1;;;;;13095:13:0;;;3698:6;;13095:13;;13076:32;13058:1343;;;13173:12;;-1:-1:-1;;;13173:12:0;;;;13168:207;;3671:7;3698:6;-1:-1:-1;;;;;13236:15:0;;;3698:6;;13236:15;13206:153;;;;-1:-1:-1;;;13206:153:0;;7732:2:1;13206:153:0;;;7714:21:1;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;7881:33;7861:18;;;7854:61;7932:19;;13206:153:0;7530:427:1;13206:153:0;13427:20;;13417:6;:30;;13391:120;;;;-1:-1:-1;;;13391:120:0;;8164:2:1;13391:120:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242;8222:18;;;8215:58;8290:18;;13391:120:0;7962:352:1;13391:120:0;13549:12;;-1:-1:-1;;;;;13543:18:0;;;13549:12;;13543:18;13540:170;;13615:21;;13606:6;13590:13;13600:2;13590:9;:13::i;:::-;:22;;;;:::i;:::-;:46;13582:112;;;;-1:-1:-1;;;13582:112:0;;8651:2:1;13582:112:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:33;8823:19;;13582:112:0;8449:399:1;13582:112:0;13726:26;13755:24;13773:4;13755:9;:24::i;:::-;13843:16;;13899:20;;13726:53;;-1:-1:-1;13821:38:0;;;;13877:42;;13874:88;;13942:20;;13921:41;;13874:88;13981:7;:37;;;;-1:-1:-1;14011:7:0;;-1:-1:-1;;;14011:7:0;;;;14010:8;13981:37;:79;;;;-1:-1:-1;14048:12:0;;-1:-1:-1;;;;;14040:20:0;;;14048:12;;14040:20;;13981:79;:113;;;;-1:-1:-1;14082:12:0;;-1:-1:-1;;;14082:12:0;;;;13981:113;:158;;;;-1:-1:-1;;;;;;14117:22:0;;;;;;:18;:22;;;;;;;;14116:23;13981:158;:205;;;;-1:-1:-1;;;;;;14162:24:0;;;;;;:18;:24;;;;;;;;14161:25;13981:205;13977:413;;;14221:28;14230:18;14221:8;:28::i;:::-;14289:21;14333:14;;14329:46;;14350:23;14358:14;14371:1;14358:10;:14;:::i;:::-;14350:7;:23::i;:::-;14202:188;13977:413;13120:1281;;13058:1343;-1:-1:-1;;;;;14448:24:0;;14413:12;14448:24;;;:18;:24;;;;;;14428:4;;14448:24;;;:50;;-1:-1:-1;;;;;;14476:22:0;;;;;;:18;:22;;;;;;;;14448:50;14447:100;;;-1:-1:-1;14512:12:0;;-1:-1:-1;;;;;14504:20:0;;;14512:12;;14504:20;;;;:42;;-1:-1:-1;14534:12:0;;-1:-1:-1;;;;;14528:18:0;;;14534:12;;14528:18;;14504:42;14443:564;;;-1:-1:-1;14574:5:0;14443:564;;;14632:12;;-1:-1:-1;;;;;14624:20:0;;;14632:12;;14624:20;:54;;;;-1:-1:-1;14662:15:0;;-1:-1:-1;;;;;14648:30:0;;;14662:15;;14648:30;;14624:54;14621:172;;;14712:16;;14699:10;:29;14764:13;;14747:14;:30;14621:172;14831:12;;-1:-1:-1;;;;;14825:18:0;;;14831:12;;14825:18;:54;;;;-1:-1:-1;14863:15:0;;-1:-1:-1;;;;;14847:32:0;;;14863:15;;14847:32;;14825:54;14821:175;;;14913:17;;14900:10;:30;14966:14;;14949;:31;14821:175;15017:50;15041:4;15047:2;15051:6;15059:7;15017:23;:50::i;522:224::-;642:7;678:12;670:6;;;;662:29;;;;-1:-1:-1;;;662:29:0;;;;;;;;:::i;:::-;-1:-1:-1;702:9:0;714:5;718:1;714;:5;:::i;:::-;702:17;522:224;-1:-1:-1;;;;;522:224:0:o;11062:323::-;11157:7;11215;;11204;:18;;11182:110;;;;-1:-1:-1;;;11182:110:0;;9410:2:1;11182:110:0;;;9392:21:1;9449:2;9429:18;;;9422:30;9488:34;9468:18;;;9461:62;-1:-1:-1;;;9539:18:1;;;9532:40;9589:19;;11182:110:0;9208:406:1;11182:110:0;11303:19;11325:10;:8;:10::i;:::-;11303:32;-1:-1:-1;11353:24:0;:7;11303:32;11353:11;:24::i;:::-;11346:31;11062:323;-1:-1:-1;;;11062:323:0:o;15083:474::-;5798:7;:14;;-1:-1:-1;;;;5798:14:0;-1:-1:-1;;;5798:14:0;;;15176:16:::1;::::0;;15190:1:::1;15176:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15176:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15176:16:0::1;15152:40;;15221:4;15203;15208:1;15203:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;15203:23:0::1;;;-1:-1:-1::0;;;;;15203:23:0::1;;;::::0;::::1;15247:15;;;;;;;;;-1:-1:-1::0;;;;;15247:15:0::1;-1:-1:-1::0;;;;;15247:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15237:4;15242:1;15237:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15237:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;15312:15:::1;::::0;15280:62:::1;::::0;15297:4:::1;::::0;15312:15:::1;15330:11:::0;15280:8:::1;:62::i;:::-;15353:15;::::0;;:196:::1;::::0;-1:-1:-1;;;15353:196:0;;-1:-1:-1;;;;;15353:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;15434:11;;15353:15:::1;::::0;15476:4;;15503::::1;::::0;15523:15:::1;::::0;15353:196:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5835:7:0;:15;;-1:-1:-1;;;;5835:15:0;;;-1:-1:-1;;;;15083:474:0:o;11393:285::-;11445:20;11477:12;;11468:6;:21;;;;:::i;:::-;11556:12;;11445:44;;-1:-1:-1;11500:23:0;;11526:27;11556:12;11445:44;11526:27;:::i;:::-;:42;;;;:::i;:::-;11579:15;;:38;;11500:68;;-1:-1:-1;;;;;;11579:15:0;;:38;;;;;11604:12;;11579:15;:38;:15;:38;11604:12;11579:15;:38;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11628:16:0;;:42;;-1:-1:-1;;;;;11628:16:0;;;;:42;;;;;11654:15;;11628:16;:42;:16;:42;11654:15;11628:16;:42;;;;;;;;;;;;;;;;;;;16369:349;16533:6;16528:51;;16556:11;:9;:11::i;:::-;16589:47;16610:6;16618:9;16629:6;16589:20;:47::i;:::-;16652:6;16647:64;;16687:12;16284:21;;16271:10;:34;16333:16;;16316:14;:33;16230:127;8878:164;8920:7;8941:15;8958;8977:19;:17;:19::i;:::-;8940:56;;-1:-1:-1;8940:56:0;-1:-1:-1;9014:20:0;8940:56;;9014:11;:20::i;:::-;9007:27;;;;8878:164;:::o;1375:132::-;1433:7;1460:39;1464:1;1467;1460:39;;;;;;;;;;;;;;;;;:3;:39::i;10148:232::-;10192:10;;:15;:38;;;;-1:-1:-1;10211:14:0;;:19;10192:38;10188:51;;;10148:232::o;10188:51::-;10273:10;;;10249:21;:34;10313:14;;;10294:16;:33;-1:-1:-1;10329:14:0;;;;10354:18;10148:232::o;15610:612::-;15760:15;15790:23;15828:12;15855:23;15893:12;15920:13;15947:19;15958:7;15947:10;:19::i;:::-;-1:-1:-1;;;;;15995:15:0;;;;;;:7;:15;;;;;;15745:221;;-1:-1:-1;15745:221:0;;-1:-1:-1;15745:221:0;;-1:-1:-1;15745:221:0;-1:-1:-1;15745:221:0;-1:-1:-1;15745:221:0;-1:-1:-1;15995:28:0;;15745:221;15995:19;:28::i;:::-;-1:-1:-1;;;;;15977:15:0;;;;;;;:7;:15;;;;;;:46;;;;16055:18;;;;;;;:39;;16078:15;16055:22;:39::i;:::-;-1:-1:-1;;;;;16034:18:0;;;;;;:7;:18;;;;;:60;16105:18;16117:5;16105:11;:18::i;:::-;16125:29;16143:4;16149;16125:17;:29::i;:::-;16187:9;-1:-1:-1;;;;;16170:44:0;16179:6;-1:-1:-1;;;;;16170:44:0;;16198:15;16170:44;;;;160:25:1;;148:2;133:18;;14:177;16170:44:0;;;;;;;;15734:488;;;;;;15610:612;;;:::o;9050:257::-;9148:7;;9101;;;;4994:11;9216:20;9148:7;4994:11;9216;:20::i;:::-;9206:7;:30;9202:61;;;-1:-1:-1;;9246:7:0;;;4994:11;;-1:-1:-1;9050:257:0;-1:-1:-1;9050:257:0:o;9202:61::-;9282:7;;9291;;-1:-1:-1;9050:257:0;-1:-1:-1;9050:257:0:o;1146:223::-;1266:7;1301:12;1294:5;1286:28;;;;-1:-1:-1;;;1286:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1325:9:0;1337:5;1341:1;1337;:5;:::i;10388:623::-;10488:7;10510;10532;10554;10576;10598;10634:23;10659:12;10673:13;10703:48;10715:7;10724:10;;10736:14;;10703:11;:48::i;:::-;10633:118;;;;;;10762:19;10784:10;:8;:10::i;:::-;10762:32;;10806:15;10823:23;10848:12;10877:46;10889:7;10898:4;10904:5;10911:11;10877;:46::i;:::-;10805:118;;-1:-1:-1;10805:118:0;-1:-1:-1;10805:118:0;-1:-1:-1;10974:15:0;;-1:-1:-1;10991:4:0;;-1:-1:-1;10997:5:0;;-1:-1:-1;;;;;10388:623:0;;;;;;;:::o;752:136::-;810:7;837:43;841:1;844;837:43;;;;;;;;;;;;;;;;;:3;:43::i;337:179::-;395:7;;427:5;431:1;427;:5;:::i;:::-;415:17;;456:1;451;:6;;443:46;;;;-1:-1:-1;;;443:46:0;;11367:2:1;443:46:0;;;11349:21:1;11406:2;11386:18;;;11379:30;11445:29;11425:18;;;11418:57;11492:18;;443:46:0;11165:351:1;9927:213:0;9982:19;10004:10;:8;:10::i;:::-;9982:32;-1:-1:-1;10025:13:0;10041:22;:5;9982:32;10041:9;:22::i;:::-;10115:4;10099:22;;;;:7;:22;;;;;;10025:38;;-1:-1:-1;10099:33:0;;10025:38;10099:26;:33::i;:::-;10090:4;10074:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;9927:213:0:o;11887:163::-;11971:7;;:17;;11983:4;11971:11;:17::i;:::-;11961:7;:27;12017:15;;:25;;12037:4;12017:19;:25::i;:::-;11999:15;:43;-1:-1:-1;;11887:163:0:o;9315:467::-;9483:7;;;;9577:29;9602:3;9577:20;:7;9589;9577:11;:20::i;:::-;:24;;:29::i;:::-;9562:44;-1:-1:-1;9617:13:0;9633:28;9657:3;9633:19;:7;9645:6;9633:11;:19::i;:28::-;9617:44;-1:-1:-1;9672:23:0;9698:28;9617:44;9698:17;:7;9710:4;9698:11;:17::i;:::-;:21;;:28::i;:::-;9672:54;9762:4;;-1:-1:-1;9768:5:0;;-1:-1:-1;9315:467:0;;-1:-1:-1;;;;;9315:467:0:o;8336:534::-;8530:7;;;;8627:24;:7;8639:11;8627;:24::i;:::-;8609:42;-1:-1:-1;8662:12:0;8677:21;:4;8686:11;8677:8;:21::i;:::-;8662:36;-1:-1:-1;8709:13:0;8725:22;:5;8735:11;8725:9;:22::i;:::-;8709:38;-1:-1:-1;8758:23:0;8784:28;8709:38;8784:17;:7;8796:4;8784:11;:17::i;:28::-;8831:7;;;;-1:-1:-1;8857:4:0;;-1:-1:-1;8336:534:0;;-1:-1:-1;;;;;;;8336:534:0:o;894:246::-;952:7;976:1;981;976:6;972:47;;-1:-1:-1;1006:1:0;999:8;;972:47;1029:9;1041:5;1045:1;1041;:5;:::i;:::-;1029:17;-1:-1:-1;1074:1:0;1065:5;1069:1;1029:17;1065:5;:::i;:::-;:10;1057:56;;;;-1:-1:-1;;;1057:56:0;;11723:2:1;1057:56:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:31;11893:19;;1057:56:0;11521:397:1;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:247::-;944:6;997:2;985:9;976:7;972:23;968:32;965:52;;;1013:1;1010;1003:12;965:52;1052:9;1039:23;1071:31;1096:5;1071:31;:::i;1137:315::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;1442:2;1427:18;;;;1414:32;;-1:-1:-1;;;1137:315:1:o;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:782::-;3018:6;3026;3034;3087:2;3075:9;3066:7;3062:23;3058:32;3055:52;;;3103:1;3100;3093:12;3055:52;3143:9;3130:23;3172:18;3213:2;3205:6;3202:14;3199:34;;;3229:1;3226;3219:12;3199:34;3267:6;3256:9;3252:22;3242:32;;3312:7;3305:4;3301:2;3297:13;3293:27;3283:55;;3334:1;3331;3324:12;3283:55;3374:2;3361:16;3400:2;3392:6;3389:14;3386:34;;;3416:1;3413;3406:12;3386:34;3471:7;3464:4;3454:6;3451:1;3447:14;3443:2;3439:23;3435:34;3432:47;3429:67;;;3492:1;3489;3482:12;3429:67;3523:4;3515:13;;;;-1:-1:-1;3547:6:1;-1:-1:-1;;3588:20:1;;3575:34;3645:13;;3638:21;3628:32;;3618:60;;3674:1;3671;3664:12;3618:60;3697:5;3687:15;;;2926:782;;;;;:::o;3937:388::-;4005:6;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:31;4165:5;4140:31;:::i;:::-;4190:5;-1:-1:-1;4247:2:1;4232:18;;4219:32;4260:33;4219:32;4260:33;:::i;:::-;4312:7;4302:17;;;3937:388;;;;;:::o;4330:356::-;4532:2;4514:21;;;4551:18;;;4544:30;4610:34;4605:2;4590:18;;4583:62;4677:2;4662:18;;4330:356::o;4691:127::-;4752:10;4747:3;4743:20;4740:1;4733:31;4783:4;4780:1;4773:15;4807:4;4804:1;4797:15;4823:127;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:135;4994:3;5015:17;;;5012:43;;5035:18;;:::i;:::-;-1:-1:-1;5082:1:1;5071:13;;4955:135::o;8319:125::-;8384:9;;;8405:10;;;8402:36;;;8418:18;;:::i;8853:217::-;8893:1;8919;8909:132;;8963:10;8958:3;8954:20;8951:1;8944:31;8998:4;8995:1;8988:15;9026:4;9023:1;9016:15;8909:132;-1:-1:-1;9055:9:1;;8853:217::o;9075:128::-;9142:9;;;9163:11;;;9160:37;;;9177:18;;:::i;9751:251::-;9821:6;9874:2;9862:9;9853:7;9849:23;9845:32;9842:52;;;9890:1;9887;9880:12;9842:52;9922:9;9916:16;9941:31;9966:5;9941:31;:::i;10007:980::-;10269:4;10317:3;10306:9;10302:19;10348:6;10337:9;10330:25;10374:2;10412:6;10407:2;10396:9;10392:18;10385:34;10455:3;10450:2;10439:9;10435:18;10428:31;10479:6;10514;10508:13;10545:6;10537;10530:22;10583:3;10572:9;10568:19;10561:26;;10622:2;10614:6;10610:15;10596:29;;10643:1;10653:195;10667:6;10664:1;10661:13;10653:195;;;10732:13;;-1:-1:-1;;;;;10728:39:1;10716:52;;10823:15;;;;10788:12;;;;10764:1;10682:9;10653:195;;;-1:-1:-1;;;;;;;10904:32:1;;;;10899:2;10884:18;;10877:60;-1:-1:-1;;;10968:3:1;10953:19;10946:35;10865:3;10007:980;-1:-1:-1;;;10007:980:1:o;10992:168::-;11065:9;;;11096;;11113:15;;;11107:22;;11093:37;11083:71;;11134:18;;:::i

Swarm Source

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