ETH Price: $3,270.17 (-4.11%)
Gas: 8 Gwei

Token

Spark AI (SPKAI)
 

Overview

Max Total Supply

1,000,000,000 SPKAI

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*mark🚀️.eth
Balance
14,456,795.943419434 SPKAI

Value
$0.00
0x14c0a1d0ab0623bb0ad758d534c41b2249e61e59
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:
SPKAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-14
*/

// SPDX-License-Identifier: Unlicensed

/**
Create your Spark story together. Experience a playful and interactive dating simulation without any commitments with a virtual video AI companion who listens, responds and appreciates you.

Web: https://sparkai.life
App: https://chat.sparkai.life
Tg: https://t.me/sparkai_life_official
X: https://twitter.com/sparkai_life
**/

pragma solidity 0.8.21;

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface 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 allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

contract Ownable is Context {
    address private _owner;
    address private _preiousOwner;
    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 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;
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract SPKAI is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"Spark AI";
    string private constant _symbol = unicode"SPKAI";

    mapping(address => uint256) private _rBal;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isFeeExempt;
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = 10 ** 30;
    uint256 private constant _tTotals = 10 ** 9 * 10**9;
    uint256 private _rTotals = (MAX - (MAX % _tTotals));
    uint256 private _totalFee;
    uint256 private _redisBuyFee = 0;
    uint256 private _taxBuyFee = 24;
    uint256 private _redisSellFee = 0;
    uint256 private _taxSellFee = 24;

    uint256 private _redisFee = _redisSellFee;
    uint256 private _taxFee = _taxSellFee;

    uint256 private _previousRedisTaxFee = _redisFee;
    uint256 private _previousTaxFee = _taxFee;
    address payable private taxWallet;

    IUniswapV2Router02 public uniswapRouter;
    address public pairAddress;

    bool private tradeActive;
    bool private _inswap = false;
    bool private _swapFeeEnabled = true;

    uint256 public _maxTxAmount = 25 * 10 ** 6 * 10**9;
    uint256 public _maxWalletAmount = 25 * 10 ** 6 * 10**9;
    uint256 public feeSwapThreshold = 10 ** 4 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        _inswap = true;
        _;
        _inswap = false;
    }

    constructor() {

        _rBal[_msgSender()] = _rTotals;
        taxWallet = payable(0x6E0e654e96B74986B8026b223A4a47a05250eF84);
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapRouter = _uniswapV2Router;
        pairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isFeeExempt[owner()] = true;
        _isFeeExempt[taxWallet] = true;

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

    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 _tTotals;
    }

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

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

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

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

    function transferETHFee(uint256 amount) private {
        taxWallet.transfer(amount);
    }

    function startTrade() public onlyOwner {
        tradeActive = true;
    }
    
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousRedisTaxFee = _redisFee;
        _previousTaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function _transferInternal(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        if (!_isFeeExempt[sender] || !tradeActive) {
            _rBal[sender] = _rBal[sender].sub(rAmount);
        }
        _rBal[recipient] = _rBal[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _updateTotalFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getCurrentRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rBal[address(this)] = _rBal[address(this)].add(rTeam);
    }

    function _updateTotalFees(uint256 rFee, uint256 tFee) private {
        _rTotals = _rTotals.sub(rFee);
        _totalFee = _totalFee.add(tFee);
    }

    receive() external payable {}
    
    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 _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 (!tradeActive) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

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

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

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

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !_inswap && to == pairAddress && _swapFeeEnabled && !_isFeeExempt[from] && amount > feeSwapThreshold) {
                swapTokensforEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    transferETHFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;
        if ((_isFeeExempt[from] || _isFeeExempt[to]) || (from != pairAddress && to != pairAddress)) {
            takeFee = false;
        } else {
            if(from == pairAddress && to != address(uniswapRouter)) {
                _redisFee = _redisBuyFee;
                _taxFee = _taxBuyFee;
            }

            //Set Fee for Sells
            if (to == pairAddress && from != address(uniswapRouter)) {
                _redisFee = _redisSellFee;
                _taxFee = _taxSellFee;
            }

        }

        _transferInternal(from, to, amount, takeFee);
    }

    function swapTokensforEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function getReflections(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        uint256 currentRate = _getCurrentRate();
        return rAmount.div(currentRate);
    }

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

    function _getTValues(
        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 _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 _getCurrentRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getSupply();
        return rSupply.div(tSupply);
    }
    
    function _getSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotals;
        uint256 tSupply = _tTotals;
        if (rSupply < _rTotals.div(_tTotals)) return (_rTotals, _tTotals);
        return (rSupply, tSupply);
    }

    function restoreAllFee() private {
        _redisFee = _previousRedisTaxFee;
        _taxFee = _previousTaxFee;
    }

    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 removeLimits() external onlyOwner {
        _maxTxAmount = _rTotals;
        _maxWalletAmount = _rTotals;
        _redisBuyFee = 0;
        _taxBuyFee = 2;
        _redisSellFee = 0;
        _taxSellFee = 2;
    }
}

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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"pairAddress","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":"startTrade","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":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000025670de0b6b3a76400006c0c9f2c9cd04674edea4000000062000333565b6200003e906c0c9f2c9cd04674edea4000000062000353565b6005555f6007819055601860088190556009829055600a819055600b829055600c819055600d91909155600e556011805461ffff60a81b1916600160b01b1790556658d15e1762800060128190556013556509184e72a000601455348015620000a5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600554335f9081526002602090815260409182902092909255600f8054736e0e654e96b74986b8026b223a4a47a05250ef846001600160a01b03199182161790915560108054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200017e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a4919062000379565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000216919062000379565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000261573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000287919062000379565b601180546001600160a01b0319166001600160a01b039283161790555f80548216815260046020526040808220805460ff199081166001908117909255600f54909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200032491815260200190565b60405180910390a350620003a8565b5f826200034e57634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200037357634e487b7160e01b5f52601160045260245ffd5b92915050565b5f602082840312156200038a575f80fd5b81516001600160a01b0381168114620003a1575f80fd5b9392505050565b61157c80620003b65f395ff3fe608060405260043610610113575f3560e01c8063735de9f71161009d578063a8b0898211610062578063a8b08982146102f4578063a9059cbb14610313578063dd62ed3e14610332578063de28707114610376578063f2fde38b1461038b575f80fd5b8063735de9f71461024b578063751039fc146102825780637d1db4a5146102965780638da5cb5b146102ab57806395d89b41146102c7575f80fd5b8063313ce567116100e3578063313ce567146101d25780636c0a24eb146101ed5780636c5808011461020257806370a0823114610218578063715018a614610237575f80fd5b806306fdde031461011e578063095ea7b31461016057806318160ddd1461018f57806323b872dd146101b3575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526008815267537061726b20414960c01b60208201525b60405161015791906112bf565b60405180910390f35b34801561016b575f80fd5b5061017f61017a366004611321565b6103aa565b6040519015158152602001610157565b34801561019a575f80fd5b50670de0b6b3a76400005b604051908152602001610157565b3480156101be575f80fd5b5061017f6101cd36600461134b565b6103c0565b3480156101dd575f80fd5b5060405160098152602001610157565b3480156101f8575f80fd5b506101a560135481565b34801561020d575f80fd5b50610216610427565b005b348015610223575f80fd5b506101a5610232366004611389565b61046e565b348015610242575f80fd5b5061021661048f565b348015610256575f80fd5b5060105461026a906001600160a01b031681565b6040516001600160a01b039091168152602001610157565b34801561028d575f80fd5b50610216610500565b3480156102a1575f80fd5b506101a560125481565b3480156102b6575f80fd5b505f546001600160a01b031661026a565b3480156102d2575f80fd5b5060408051808201909152600581526453504b414960d81b602082015261014a565b3480156102ff575f80fd5b5060115461026a906001600160a01b031681565b34801561031e575f80fd5b5061017f61032d366004611321565b61054c565b34801561033d575f80fd5b506101a561034c3660046113a4565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610381575f80fd5b506101a560145481565b348015610396575f80fd5b506102166103a5366004611389565b610558565b5f6103b633848461063f565b5060015b92915050565b5f6103cc848484610762565b61041d84336104188560405180606001604052806028815260200161151f602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610be9565b61063f565b5060019392505050565b5f546001600160a01b031633146104595760405162461bcd60e51b8152600401610450906113db565b60405180910390fd5b6011805460ff60a01b1916600160a01b179055565b6001600160a01b0381165f908152600260205260408120546103ba90610c21565b5f546001600160a01b031633146104b85760405162461bcd60e51b8152600401610450906113db565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105295760405162461bcd60e51b8152600401610450906113db565b60055460128190556013555f600781905560026008819055600991909155600a55565b5f6103b6338484610762565b5f546001600160a01b031633146105815760405162461bcd60e51b8152600401610450906113db565b6001600160a01b0381166105e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610450565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610450565b6001600160a01b0382166107025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610450565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610450565b6001600160a01b0382166108285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610450565b5f81116108895760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610450565b5f546001600160a01b038481169116148015906108b357505f546001600160a01b03838116911614155b15610adf57601154600160a01b900460ff1661094b575f546001600160a01b0384811691161461094b5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610450565b60125481111561099d5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610450565b6011546001600160a01b03838116911614610a2357601354816109bf8461046e565b6109c99190611424565b1115610a235760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610450565b5f610a2d3061046e565b601454601254919250821015908210610a465760125491505b808015610a5d5750601154600160a81b900460ff16155b8015610a7657506011546001600160a01b038581169116145b8015610a8b5750601154600160b01b900460ff165b8015610aaf57506001600160a01b0385165f9081526004602052604090205460ff16155b8015610abc575060145483115b15610adc57610aca82610c3e565b478015610ada57610ada47610dae565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610b1f57506001600160a01b0383165f9081526004602052604090205460ff165b80610b5157506011546001600160a01b03858116911614801590610b5157506011546001600160a01b03848116911614155b15610b5d57505f610bd7565b6011546001600160a01b038581169116148015610b8857506010546001600160a01b03848116911614155b15610b9a57600754600b55600854600c555b6011546001600160a01b038481169116148015610bc557506010546001600160a01b03858116911614155b15610bd757600954600b55600a54600c555b610be384848484610de9565b50505050565b5f8184841115610c0c5760405162461bcd60e51b815260040161045091906112bf565b505f610c188486611437565b95945050505050565b5f80610c2b610e17565b9050610c378382610e38565b9392505050565b6011805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c8457610c8461144a565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff919061145e565b81600181518110610d1257610d1261144a565b6001600160a01b039283166020918202929092010152601054610d38913091168461063f565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d709085905f90869030904290600401611479565b5f604051808303815f87803b158015610d87575f80fd5b505af1158015610d99573d5f803e3d5ffd5b50506011805460ff60a81b1916905550505050565b600f546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610de5573d5f803e3d5ffd5b5050565b80610df657610df6610e79565b610e01848484610ea6565b80610be357610be3600d54600b55600e54600c55565b5f805f610e22610fda565b9092509050610e318282610e38565b9250505090565b5f610c3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611019565b600b54158015610e895750600c54155b15610e9057565b600b8054600d55600c8054600e555f9182905555565b5f805f805f80610eb587611045565b6001600160a01b038f165f90815260046020526040902054959b5093995091975095509350915060ff161580610ef55750601154600160a01b900460ff16155b15610f35576001600160a01b0389165f90815260026020526040902054610f1c908761109a565b6001600160a01b038a165f908152600260205260409020555b6001600160a01b0388165f90815260026020526040902054610f5790866110db565b6001600160a01b0389165f90815260026020526040902055610f7881611139565b610f82848361117f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fc791815260200190565b60405180910390a3505050505050505050565b6005545f908190670de0b6b3a7640000610ff48282610e38565b82101561101057505060055492670de0b6b3a764000092509050565b90939092509050565b5f81836110395760405162461bcd60e51b815260040161045091906112bf565b505f610c1884866114e8565b5f805f805f805f805f61105d8a600b54600c546111a3565b9250925092505f61106c610e17565b90505f805f61107d8e8787876111f5565b919e509c509a509598509396509194505050505091939550919395565b5f610c3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be9565b5f806110e78385611424565b905083811015610c375760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610450565b5f611142610e17565b90505f61114f8383611241565b305f9081526002602052604090205490915061116b90826110db565b305f90815260026020526040902055505050565b60055461118c908361109a565b60055560065461119c90826110db565b6006555050565b5f8080806111bc60646111b68989611241565b90610e38565b90505f6111ce60646111b68a89611241565b90505f6111e5826111df8b8661109a565b9061109a565b9992985090965090945050505050565b5f8080806112038886611241565b90505f6112108887611241565b90505f61121d8888611241565b90505f61122e826111df868661109a565b939b939a50919850919650505050505050565b5f825f0361125057505f6103ba565b5f61125b8385611507565b90508261126885836114e8565b14610c375760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610450565b5f6020808352835180828501525f5b818110156112ea578581018301518582016040015282016112ce565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461131e575f80fd5b50565b5f8060408385031215611332575f80fd5b823561133d8161130a565b946020939093013593505050565b5f805f6060848603121561135d575f80fd5b83356113688161130a565b925060208401356113788161130a565b929592945050506040919091013590565b5f60208284031215611399575f80fd5b8135610c378161130a565b5f80604083850312156113b5575f80fd5b82356113c08161130a565b915060208301356113d08161130a565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103ba576103ba611410565b818103818111156103ba576103ba611410565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561146e575f80fd5b8151610c378161130a565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156114c75784516001600160a01b0316835293830193918301916001016114a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261150257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176103ba576103ba61141056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207078d24676261bca461b28d1fa19e03ff178c788bac492598ac94b43780e522b64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063735de9f71161009d578063a8b0898211610062578063a8b08982146102f4578063a9059cbb14610313578063dd62ed3e14610332578063de28707114610376578063f2fde38b1461038b575f80fd5b8063735de9f71461024b578063751039fc146102825780637d1db4a5146102965780638da5cb5b146102ab57806395d89b41146102c7575f80fd5b8063313ce567116100e3578063313ce567146101d25780636c0a24eb146101ed5780636c5808011461020257806370a0823114610218578063715018a614610237575f80fd5b806306fdde031461011e578063095ea7b31461016057806318160ddd1461018f57806323b872dd146101b3575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526008815267537061726b20414960c01b60208201525b60405161015791906112bf565b60405180910390f35b34801561016b575f80fd5b5061017f61017a366004611321565b6103aa565b6040519015158152602001610157565b34801561019a575f80fd5b50670de0b6b3a76400005b604051908152602001610157565b3480156101be575f80fd5b5061017f6101cd36600461134b565b6103c0565b3480156101dd575f80fd5b5060405160098152602001610157565b3480156101f8575f80fd5b506101a560135481565b34801561020d575f80fd5b50610216610427565b005b348015610223575f80fd5b506101a5610232366004611389565b61046e565b348015610242575f80fd5b5061021661048f565b348015610256575f80fd5b5060105461026a906001600160a01b031681565b6040516001600160a01b039091168152602001610157565b34801561028d575f80fd5b50610216610500565b3480156102a1575f80fd5b506101a560125481565b3480156102b6575f80fd5b505f546001600160a01b031661026a565b3480156102d2575f80fd5b5060408051808201909152600581526453504b414960d81b602082015261014a565b3480156102ff575f80fd5b5060115461026a906001600160a01b031681565b34801561031e575f80fd5b5061017f61032d366004611321565b61054c565b34801561033d575f80fd5b506101a561034c3660046113a4565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610381575f80fd5b506101a560145481565b348015610396575f80fd5b506102166103a5366004611389565b610558565b5f6103b633848461063f565b5060015b92915050565b5f6103cc848484610762565b61041d84336104188560405180606001604052806028815260200161151f602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610be9565b61063f565b5060019392505050565b5f546001600160a01b031633146104595760405162461bcd60e51b8152600401610450906113db565b60405180910390fd5b6011805460ff60a01b1916600160a01b179055565b6001600160a01b0381165f908152600260205260408120546103ba90610c21565b5f546001600160a01b031633146104b85760405162461bcd60e51b8152600401610450906113db565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105295760405162461bcd60e51b8152600401610450906113db565b60055460128190556013555f600781905560026008819055600991909155600a55565b5f6103b6338484610762565b5f546001600160a01b031633146105815760405162461bcd60e51b8152600401610450906113db565b6001600160a01b0381166105e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610450565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610450565b6001600160a01b0382166107025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610450565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610450565b6001600160a01b0382166108285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610450565b5f81116108895760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610450565b5f546001600160a01b038481169116148015906108b357505f546001600160a01b03838116911614155b15610adf57601154600160a01b900460ff1661094b575f546001600160a01b0384811691161461094b5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610450565b60125481111561099d5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610450565b6011546001600160a01b03838116911614610a2357601354816109bf8461046e565b6109c99190611424565b1115610a235760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610450565b5f610a2d3061046e565b601454601254919250821015908210610a465760125491505b808015610a5d5750601154600160a81b900460ff16155b8015610a7657506011546001600160a01b038581169116145b8015610a8b5750601154600160b01b900460ff165b8015610aaf57506001600160a01b0385165f9081526004602052604090205460ff16155b8015610abc575060145483115b15610adc57610aca82610c3e565b478015610ada57610ada47610dae565b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff1680610b1f57506001600160a01b0383165f9081526004602052604090205460ff165b80610b5157506011546001600160a01b03858116911614801590610b5157506011546001600160a01b03848116911614155b15610b5d57505f610bd7565b6011546001600160a01b038581169116148015610b8857506010546001600160a01b03848116911614155b15610b9a57600754600b55600854600c555b6011546001600160a01b038481169116148015610bc557506010546001600160a01b03858116911614155b15610bd757600954600b55600a54600c555b610be384848484610de9565b50505050565b5f8184841115610c0c5760405162461bcd60e51b815260040161045091906112bf565b505f610c188486611437565b95945050505050565b5f80610c2b610e17565b9050610c378382610e38565b9392505050565b6011805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c8457610c8461144a565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff919061145e565b81600181518110610d1257610d1261144a565b6001600160a01b039283166020918202929092010152601054610d38913091168461063f565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d709085905f90869030904290600401611479565b5f604051808303815f87803b158015610d87575f80fd5b505af1158015610d99573d5f803e3d5ffd5b50506011805460ff60a81b1916905550505050565b600f546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610de5573d5f803e3d5ffd5b5050565b80610df657610df6610e79565b610e01848484610ea6565b80610be357610be3600d54600b55600e54600c55565b5f805f610e22610fda565b9092509050610e318282610e38565b9250505090565b5f610c3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611019565b600b54158015610e895750600c54155b15610e9057565b600b8054600d55600c8054600e555f9182905555565b5f805f805f80610eb587611045565b6001600160a01b038f165f90815260046020526040902054959b5093995091975095509350915060ff161580610ef55750601154600160a01b900460ff16155b15610f35576001600160a01b0389165f90815260026020526040902054610f1c908761109a565b6001600160a01b038a165f908152600260205260409020555b6001600160a01b0388165f90815260026020526040902054610f5790866110db565b6001600160a01b0389165f90815260026020526040902055610f7881611139565b610f82848361117f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fc791815260200190565b60405180910390a3505050505050505050565b6005545f908190670de0b6b3a7640000610ff48282610e38565b82101561101057505060055492670de0b6b3a764000092509050565b90939092509050565b5f81836110395760405162461bcd60e51b815260040161045091906112bf565b505f610c1884866114e8565b5f805f805f805f805f61105d8a600b54600c546111a3565b9250925092505f61106c610e17565b90505f805f61107d8e8787876111f5565b919e509c509a509598509396509194505050505091939550919395565b5f610c3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be9565b5f806110e78385611424565b905083811015610c375760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610450565b5f611142610e17565b90505f61114f8383611241565b305f9081526002602052604090205490915061116b90826110db565b305f90815260026020526040902055505050565b60055461118c908361109a565b60055560065461119c90826110db565b6006555050565b5f8080806111bc60646111b68989611241565b90610e38565b90505f6111ce60646111b68a89611241565b90505f6111e5826111df8b8661109a565b9061109a565b9992985090965090945050505050565b5f8080806112038886611241565b90505f6112108887611241565b90505f61121d8888611241565b90505f61122e826111df868661109a565b939b939a50919850919650505050505050565b5f825f0361125057505f6103ba565b5f61125b8385611507565b90508261126885836114e8565b14610c375760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610450565b5f6020808352835180828501525f5b818110156112ea578581018301518582016040015282016112ce565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461131e575f80fd5b50565b5f8060408385031215611332575f80fd5b823561133d8161130a565b946020939093013593505050565b5f805f6060848603121561135d575f80fd5b83356113688161130a565b925060208401356113788161130a565b929592945050506040919091013590565b5f60208284031215611399575f80fd5b8135610c378161130a565b5f80604083850312156113b5575f80fd5b82356113c08161130a565b915060208301356113d08161130a565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103ba576103ba611410565b818103818111156103ba576103ba611410565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561146e575f80fd5b8151610c378161130a565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156114c75784516001600160a01b0316835293830193918301916001016114a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261150257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176103ba576103ba61141056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207078d24676261bca461b28d1fa19e03ff178c788bac492598ac94b43780e522b64736f6c63430008150033

Deployed Bytecode Sourcemap

4410:11149:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6520:83;;;;;;;;;;-1:-1:-1;6590:5:0;;;;;;;;;;;;-1:-1:-1;;;6590:5:0;;;;6520:83;;;;;;;:::i;:::-;;;;;;;;7439:193;;;;;;;;;;-1:-1:-1;7439:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7439:193:0;1023:187:1;6797:96:0;;;;;;;;;;-1:-1:-1;4909:15:0;6797:96;;;1361:25:1;;;1349:2;1334:18;6797:96:0;1215:177:1;9459:446:0;;;;;;;;;;-1:-1:-1;9459:446:0;;;;;:::i;:::-;;:::i;6706:83::-;;;;;;;;;;-1:-1:-1;6706:83:0;;4819:1;2000:36:1;;1988:2;1973:18;6706:83:0;1858:184:1;5666:54:0;;;;;;;;;;;;;;;;7741:76;;;;;;;;;;;;;:::i;:::-;;6901:131;;;;;;;;;;-1:-1:-1;6901:131:0;;;;;:::i;:::-;;:::i;3108:148::-;;;;;;;;;;;;;:::i;5418:39::-;;;;;;;;;;-1:-1:-1;5418:39:0;;;;-1:-1:-1;;;;;5418:39:0;;;;;;-1:-1:-1;;;;;2489:32:1;;;2471:51;;2459:2;2444:18;5418:39:0;2299:229:1;15327::0;;;;;;;;;;;;;:::i;5609:50::-;;;;;;;;;;;;;;;;2894:79;;;;;;;;;;-1:-1:-1;2932:7:0;2959:6;-1:-1:-1;;;;;2959:6:0;2894:79;;6611:87;;;;;;;;;;-1:-1:-1;6683:7:0;;;;;;;;;;;;-1:-1:-1;;;6683:7:0;;;;6611:87;;5464:26;;;;;;;;;;-1:-1:-1;5464:26:0;;;;-1:-1:-1;;;;;5464:26:0;;;7040:199;;;;;;;;;;-1:-1:-1;7040:199:0;;;;;:::i;:::-;;:::i;7247:184::-;;;;;;;;;;-1:-1:-1;7247:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7396:18:0;;;7364:7;7396:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7247:184;5727:49;;;;;;;;;;;;;;;;3264:244;;;;;;;;;;-1:-1:-1;3264:244:0;;;;;:::i;:::-;;:::i;7439:193::-;7541:4;7563:39;2491:10;7586:7;7595:6;7563:8;:39::i;:::-;-1:-1:-1;7620:4:0;7439:193;;;;;:::o;9459:446::-;9591:4;9608:36;9618:6;9626:9;9637:6;9608:9;:36::i;:::-;9655:220;9678:6;2491:10;9726:138;9782:6;9726:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9726:19:0;;;;;;:11;:19;;;;;;;;2491:10;9726:33;;;;;;;;;;:37;:138::i;:::-;9655:8;:220::i;:::-;-1:-1:-1;9893:4:0;9459:446;;;;;:::o;7741:76::-;3021:6;;-1:-1:-1;;;;;3021:6:0;2491:10;3021:22;3013:67;;;;-1:-1:-1;;;3013:67:0;;;;;;;:::i;:::-;;;;;;;;;7791:11:::1;:18:::0;;-1:-1:-1;;;;7791:18:0::1;-1:-1:-1::0;;;7791:18:0::1;::::0;;7741:76::o;6901:131::-;-1:-1:-1;;;;;7009:14:0;;6967:7;7009:14;;;:5;:14;;;;;;6994:30;;:14;:30::i;3108:148::-;3021:6;;-1:-1:-1;;;;;3021:6:0;2491:10;3021:22;3013:67;;;;-1:-1:-1;;;3013:67:0;;;;;;;:::i;:::-;3215:1:::1;3199:6:::0;;3178:40:::1;::::0;-1:-1:-1;;;;;3199:6:0;;::::1;::::0;3178:40:::1;::::0;3215:1;;3178:40:::1;3246:1;3229:19:::0;;-1:-1:-1;;;;;;3229:19:0::1;::::0;;3108:148::o;15327:229::-;3021:6;;-1:-1:-1;;;;;3021:6:0;2491:10;3021:22;3013:67;;;;-1:-1:-1;;;3013:67:0;;;;;;;:::i;:::-;15396:8:::1;::::0;15381:12:::1;:23:::0;;;15415:16:::1;:27:::0;-1:-1:-1;15453:12:0::1;:16:::0;;;15493:1:::1;15480:10;:14:::0;;;15505:13:::1;:17:::0;;;;-1:-1:-1;15533:15:0;15327:229::o;7040:199::-;7145:4;7167:42;2491:10;7191:9;7202:6;7167:9;:42::i;3264:244::-;3021:6;;-1:-1:-1;;;;;3021:6:0;2491:10;3021:22;3013:67;;;;-1:-1:-1;;;3013:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3353:22:0;::::1;3345:73;;;::::0;-1:-1:-1;;;3345:73:0;;3697:2:1;3345:73:0::1;::::0;::::1;3679:21:1::0;3736:2;3716:18;;;3709:30;3775:34;3755:18;;;3748:62;-1:-1:-1;;;3826:18:1;;;3819:36;3872:19;;3345:73:0::1;3495:402:1::0;3345:73:0::1;3455:6;::::0;;3434:38:::1;::::0;-1:-1:-1;;;;;3434:38:0;;::::1;::::0;3455:6;::::1;::::0;3434:38:::1;::::0;::::1;3483:6;:17:::0;;-1:-1:-1;;;;;;3483:17:0::1;-1:-1:-1::0;;;;;3483:17:0;;;::::1;::::0;;;::::1;::::0;;3264:244::o;14950:369::-;-1:-1:-1;;;;;15077:19:0;;15069:68;;;;-1:-1:-1;;;15069:68:0;;4104:2:1;15069:68:0;;;4086:21:1;4143:2;4123:18;;;4116:30;4182:34;4162:18;;;4155:62;-1:-1:-1;;;4233:18:1;;;4226:34;4277:19;;15069:68:0;3902:400:1;15069:68:0;-1:-1:-1;;;;;15156:21:0;;15148:68;;;;-1:-1:-1;;;15148:68:0;;4509:2:1;15148:68:0;;;4491:21:1;4548:2;4528:18;;;4521:30;4587:34;4567:18;;;4560:62;-1:-1:-1;;;4638:18:1;;;4631:32;4680:19;;15148:68:0;4307:398:1;15148:68:0;-1:-1:-1;;;;;15227:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15279:32;;1361:25:1;;;15279:32:0;;1334:18:1;15279:32:0;;;;;;;14950:369;;;:::o;9913:2111::-;-1:-1:-1;;;;;10035:18:0;;10027:68;;;;-1:-1:-1;;;10027:68:0;;4912:2:1;10027:68:0;;;4894:21:1;4951:2;4931:18;;;4924:30;4990:34;4970:18;;;4963:62;-1:-1:-1;;;5041:18:1;;;5034:35;5086:19;;10027:68:0;4710:401:1;10027:68:0;-1:-1:-1;;;;;10114:16:0;;10106:64;;;;-1:-1:-1;;;10106:64:0;;5318:2:1;10106:64:0;;;5300:21:1;5357:2;5337:18;;;5330:30;5396:34;5376:18;;;5369:62;-1:-1:-1;;;5447:18:1;;;5440:33;5490:19;;10106:64:0;5116:399:1;10106:64:0;10198:1;10189:6;:10;10181:64;;;;-1:-1:-1;;;10181:64:0;;5722:2:1;10181:64:0;;;5704:21:1;5761:2;5741:18;;;5734:30;5800:34;5780:18;;;5773:62;-1:-1:-1;;;5851:18:1;;;5844:39;5900:19;;10181:64:0;5520:405:1;10181:64:0;2932:7;2959:6;-1:-1:-1;;;;;10262:15:0;;;2959:6;;10262:15;;;;:32;;-1:-1:-1;2932:7:0;2959:6;-1:-1:-1;;;;;10281:13:0;;;2959:6;;10281:13;;10262:32;10258:1134;;;10316:11;;-1:-1:-1;;;10316:11:0;;;;10311:144;;2932:7;2959:6;-1:-1:-1;;;;;10356:15:0;;;2959:6;;10356:15;10348:91;;;;-1:-1:-1;;;10348:91:0;;6132:2:1;10348:91:0;;;6114:21:1;6171:2;6151:18;;;6144:30;6210:34;6190:18;;;6183:62;6281:33;6261:18;;;6254:61;6332:19;;10348:91:0;5930:427:1;10348:91:0;10489:12;;10479:6;:22;;10471:63;;;;-1:-1:-1;;;10471:63:0;;6564:2:1;10471:63:0;;;6546:21:1;6603:2;6583:18;;;6576:30;6642;6622:18;;;6615:58;6690:18;;10471:63:0;6362:352:1;10471:63:0;10560:11;;-1:-1:-1;;;;;10554:17:0;;;10560:11;;10554:17;10551:147;;10626:16;;10616:6;10600:13;10610:2;10600:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;10592:90;;;;-1:-1:-1;;;10592:90:0;;7183:2:1;10592:90:0;;;7165:21:1;7222:2;7202:18;;;7195:30;7261:34;7241:18;;;7234:62;-1:-1:-1;;;7312:18:1;;;7305:33;7355:19;;10592:90:0;6981:399:1;10592:90:0;10714:28;10745:24;10763:4;10745:9;:24::i;:::-;10823:16;;10883:12;;10714:55;;-1:-1:-1;10799:40:0;;;;10859:36;;10856:124;;10952:12;;10929:35;;10856:124;11000:7;:19;;;;-1:-1:-1;11012:7:0;;-1:-1:-1;;;11012:7:0;;;;11011:8;11000:19;:40;;;;-1:-1:-1;11029:11:0;;-1:-1:-1;;;;;11023:17:0;;;11029:11;;11023:17;11000:40;:59;;;;-1:-1:-1;11044:15:0;;-1:-1:-1;;;11044:15:0;;;;11000:59;:82;;;;-1:-1:-1;;;;;;11064:18:0;;;;;;:12;:18;;;;;;;;11063:19;11000:82;:111;;;;;11095:16;;11086:6;:25;11000:111;10996:385;;;11132:38;11149:20;11132:16;:38::i;:::-;11218:21;11262:22;;11258:108;;11309:37;11324:21;11309:14;:37::i;:::-;11113:268;10996:385;10296:1096;;10258:1134;-1:-1:-1;;;;;11437:18:0;;11402:12;11437:18;;;:12;:18;;;;;;11417:4;;11437:18;;;:38;;-1:-1:-1;;;;;;11459:16:0;;;;;;:12;:16;;;;;;;;11437:38;11436:86;;;-1:-1:-1;11489:11:0;;-1:-1:-1;;;;;11481:19:0;;;11489:11;;11481:19;;;;:40;;-1:-1:-1;11510:11:0;;-1:-1:-1;;;;;11504:17:0;;;11510:11;;11504:17;;11481:40;11432:528;;;-1:-1:-1;11549:5:0;11432:528;;;11598:11;;-1:-1:-1;;;;;11590:19:0;;;11598:11;;11590:19;:51;;;;-1:-1:-1;11627:13:0;;-1:-1:-1;;;;;11613:28:0;;;11627:13;;11613:28;;11590:51;11587:154;;;11674:12;;11662:9;:24;11715:10;;11705:7;:20;11587:154;11800:11;;-1:-1:-1;;;;;11794:17:0;;;11800:11;;11794:17;:51;;;;-1:-1:-1;11831:13:0;;-1:-1:-1;;;;;11815:30:0;;;11831:13;;11815:30;;11794:51;11790:157;;;11878:13;;11866:9;:25;11920:11;;11910:7;:21;11790:157;11972:44;11990:4;11996:2;12000:6;12008:7;11972:17;:44::i;:::-;10016:2008;9913:2111;;;:::o;765:224::-;885:7;921:12;913:6;;;;905:29;;;;-1:-1:-1;;;905:29:0;;;;;;;;:::i;:::-;-1:-1:-1;945:9:0;957:5;961:1;957;:5;:::i;:::-;945:17;765:224;-1:-1:-1;;;;;765:224:0:o;12521:204::-;12611:7;12636:19;12658:17;:15;:17::i;:::-;12636:39;-1:-1:-1;12693:24:0;:7;12636:39;12693:11;:24::i;:::-;12686:31;12521:204;-1:-1:-1;;;12521:204:0:o;12032:477::-;5870:7;:14;;-1:-1:-1;;;;5870:14:0;-1:-1:-1;;;5870:14:0;;;12134:16:::1;::::0;;12148:1:::1;12134:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12134:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12134:16:0::1;12110:40;;12179:4;12161;12166:1;12161:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12161:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12205:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;12205:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;12161:7;;12205:20;;;;;:13;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12195:4;12200:1;12195:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12195:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;12268:13:::1;::::0;12236:60:::1;::::0;12253:4:::1;::::0;12268:13:::1;12284:11:::0;12236:8:::1;:60::i;:::-;12307:13;::::0;:194:::1;::::0;-1:-1:-1;;;12307:194:0;;-1:-1:-1;;;;;12307:13:0;;::::1;::::0;:64:::1;::::0;:194:::1;::::0;12386:11;;12307:13:::1;::::0;12428:4;;12455::::1;::::0;12475:15:::1;::::0;12307:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5907:7:0;:15;;-1:-1:-1;;;;5907:15:0;;;-1:-1:-1;;;;12032:477:0:o;7640:93::-;7699:9;;:26;;-1:-1:-1;;;;;7699:9:0;;;;:26;;;;;7718:6;;7699:9;:26;:9;:26;7718:6;7699:9;:26;;;;;;;;;;;;;;;;;;;;;7640:93;:::o;8059:285::-;8218:7;8213:28;;8227:14;:12;:14::i;:::-;8252:44;8270:6;8278:9;8289:6;8252:17;:44::i;:::-;8312:7;8307:29;;8321:15;14878:20;;14866:9;:32;14919:15;;14909:7;:25;14822:120;14382:164;14431:7;14452:15;14469;14488:12;:10;:12::i;:::-;14451:49;;-1:-1:-1;14451:49:0;-1:-1:-1;14518:20:0;14451:49;;14518:11;:20::i;:::-;14511:27;;;;14382:164;:::o;1251:132::-;1309:7;1336:39;1340:1;1343;1336:39;;;;;;;;;;;;;;;;;:3;:39::i;7829:222::-;7876:9;;:14;:30;;;;-1:-1:-1;7894:7:0;;:12;7876:30;7872:43;;;7829:222::o;7872:43::-;7950:9;;;7927:20;:32;7988:7;;;7970:15;:25;-1:-1:-1;8008:13:0;;;;8032:11;7829:222::o;8352:676::-;8499:15;8529:23;8567:12;8594:23;8632:12;8659:13;8686:19;8697:7;8686:10;:19::i;:::-;-1:-1:-1;;;;;8721:20:0;;;;;;:12;:20;;;;;;8484:221;;-1:-1:-1;8484:221:0;;-1:-1:-1;8484:221:0;;-1:-1:-1;8484:221:0;-1:-1:-1;8484:221:0;-1:-1:-1;8484:221:0;-1:-1:-1;8721:20:0;;8720:21;;:37;;-1:-1:-1;8746:11:0;;-1:-1:-1;;;8746:11:0;;;;8745:12;8720:37;8716:112;;;-1:-1:-1;;;;;8790:13:0;;;;;;:5;:13;;;;;;:26;;8808:7;8790:17;:26::i;:::-;-1:-1:-1;;;;;8774:13:0;;;;;;:5;:13;;;;;:42;8716:112;-1:-1:-1;;;;;8857:16:0;;;;;;:5;:16;;;;;;:37;;8878:15;8857:20;:37::i;:::-;-1:-1:-1;;;;;8838:16:0;;;;;;:5;:16;;;;;:56;8905:16;8915:5;8905:9;:16::i;:::-;8932:28;8949:4;8955;8932:16;:28::i;:::-;8993:9;-1:-1:-1;;;;;8976:44:0;8985:6;-1:-1:-1;;;;;8976:44:0;;9004:15;8976:44;;;;1361:25:1;;1349:2;1334:18;;1215:177;8976:44:0;;;;;;;;8473:555;;;;;;8352:676;;;:::o;14558:256::-;14649:8;;14602:7;;;;4909:15;14719:22;14649:8;4909:15;14719:12;:22::i;:::-;14709:7;:32;14705:65;;;-1:-1:-1;;14751:8:0;;;4909:15;;-1:-1:-1;14558:256:0;-1:-1:-1;14558:256:0:o;14705:65::-;14789:7;;14798;;-1:-1:-1;14558:256:0;-1:-1:-1;14558:256:0:o;1391:223::-;1511:7;1546:12;1539:5;1531:28;;;;-1:-1:-1;;;1531:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1570:9:0;1582:5;1586:1;1582;:5;:::i;12733:622::-;12833:7;12855;12877;12899;12921;12943;12979:23;13004:12;13018:13;13048:40;13060:7;13069:9;;13080:7;;13048:11;:40::i;:::-;12978:110;;;;;;13099:19;13121:17;:15;:17::i;:::-;13099:39;;13150:15;13167:23;13192:12;13221:46;13233:7;13242:4;13248:5;13255:11;13221;:46::i;:::-;13149:118;;-1:-1:-1;13149:118:0;-1:-1:-1;13149:118:0;-1:-1:-1;13318:15:0;;-1:-1:-1;13335:4:0;;-1:-1:-1;13341:5:0;;-1:-1:-1;;;;;12733:622:0;;;;;;;:::o;621:136::-;679:7;706:43;710:1;713;706:43;;;;;;;;;;;;;;;;;:3;:43::i;434:179::-;492:7;;524:5;528:1;524;:5;:::i;:::-;512:17;;553:1;548;:6;;540:46;;;;-1:-1:-1;;;540:46:0;;9447:2:1;540:46:0;;;9429:21:1;9486:2;9466:18;;;9459:30;9525:29;9505:18;;;9498:57;9572:18;;540:46:0;9245:351:1;9036:214:0;9089:19;9111:17;:15;:17::i;:::-;9089:39;-1:-1:-1;9139:13:0;9155:22;:5;9089:39;9155:9;:22::i;:::-;9225:4;9211:20;;;;:5;:20;;;;;;9139:38;;-1:-1:-1;9211:31:0;;9139:38;9211:24;:31::i;:::-;9202:4;9188:20;;;;:5;:20;;;;;:54;-1:-1:-1;;;9036:214:0:o;9258:152::-;9342:8;;:18;;9355:4;9342:12;:18::i;:::-;9331:8;:29;9383:9;;:19;;9397:4;9383:13;:19::i;:::-;9371:9;:31;-1:-1:-1;;9258:152:0:o;13363:469::-;13532:7;;;;13626:30;13652:3;13626:21;:7;13638:8;13626:11;:21::i;:::-;:25;;:30::i;:::-;13611:45;-1:-1:-1;13667:13:0;13683:28;13707:3;13683:19;:7;13695:6;13683:11;:19::i;:28::-;13667:44;-1:-1:-1;13722:23:0;13748:28;13667:44;13748:17;:7;13760:4;13748:11;:17::i;:::-;:21;;:28::i;:::-;13722:54;13812:4;;-1:-1:-1;13818:5:0;;-1:-1:-1;13363:469:0;;-1:-1:-1;;;;;13363:469:0:o;13840:534::-;14034:7;;;;14131:24;:7;14143:11;14131;:24::i;:::-;14113:42;-1:-1:-1;14166:12:0;14181:21;:4;14190:11;14181:8;:21::i;:::-;14166:36;-1:-1:-1;14213:13:0;14229:22;:5;14239:11;14229:9;:22::i;:::-;14213:38;-1:-1:-1;14262:23:0;14288:28;14213:38;14288:17;:7;14300:4;14288:11;:17::i;:28::-;14335:7;;;;-1:-1:-1;14361:4:0;;-1:-1:-1;13840:534:0;;-1:-1:-1;;;;;;;13840:534:0:o;997:246::-;1055:7;1079:1;1084;1079:6;1075:47;;-1:-1:-1;1109:1:0;1102:8;;1075:47;1132:9;1144:5;1148:1;1144;:5;:::i;:::-;1132:17;-1:-1:-1;1177:1:0;1168:5;1172:1;1132:17;1168:5;:::i;:::-;:10;1160:56;;;;-1:-1:-1;;;1160:56:0;;9976:2:1;1160:56:0;;;9958:21:1;10015:2;9995:18;;;9988:30;10054:34;10034:18;;;10027:62;-1:-1:-1;;;10105:18:1;;;10098:31;10146:19;;1160:56:0;9774:397: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;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:356::-;3336:2;3318:21;;;3355:18;;;3348:30;3414:34;3409:2;3394:18;;3387:62;3481:2;3466:18;;3134:356::o;6719:127::-;6780:10;6775:3;6771:20;6768:1;6761:31;6811:4;6808:1;6801:15;6835:4;6832:1;6825:15;6851:125;6916:9;;;6937:10;;;6934:36;;;6950:18;;:::i;7385:128::-;7452:9;;;7473:11;;;7470:37;;;7487:18;;:::i;7650:127::-;7711:10;7706:3;7702:20;7699:1;7692:31;7742:4;7739:1;7732:15;7766:4;7763:1;7756:15;7782:251;7852:6;7905:2;7893:9;7884:7;7880:23;7876:32;7873:52;;;7921:1;7918;7911:12;7873:52;7953:9;7947:16;7972:31;7997:5;7972:31;:::i;8038:980::-;8300:4;8348:3;8337:9;8333:19;8379:6;8368:9;8361:25;8405:2;8443:6;8438:2;8427:9;8423:18;8416:34;8486:3;8481:2;8470:9;8466:18;8459:31;8510:6;8545;8539:13;8576:6;8568;8561:22;8614:3;8603:9;8599:19;8592:26;;8653:2;8645:6;8641:15;8627:29;;8674:1;8684:195;8698:6;8695:1;8692:13;8684:195;;;8763:13;;-1:-1:-1;;;;;8759:39:1;8747:52;;8854:15;;;;8819:12;;;;8795:1;8713:9;8684:195;;;-1:-1:-1;;;;;;;8935:32:1;;;;8930:2;8915:18;;8908:60;-1:-1:-1;;;8999:3:1;8984:19;8977:35;8896:3;8038:980;-1:-1:-1;;;8038:980:1:o;9023:217::-;9063:1;9089;9079:132;;9133:10;9128:3;9124:20;9121:1;9114:31;9168:4;9165:1;9158:15;9196:4;9193:1;9186:15;9079:132;-1:-1:-1;9225:9:1;;9023:217::o;9601:168::-;9674:9;;;9705;;9722:15;;;9716:22;;9702:37;9692:71;;9743:18;;:::i

Swarm Source

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