ETH Price: $3,337.55 (-0.17%)

Token

KANZZAI (KAAI)
 

Overview

Max Total Supply

100,000,000 KAAI

Holders

1,363

Market

Price

$0.18 @ 0.000054 ETH (+19.68%)

Onchain Market Cap

$17,994,500.00

Circulating Supply Market Cap

$17,994,294.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,924.651374822 KAAI

Value
$346.33 ( ~0.103767781510664 Eth) [0.0019%]
0xbc382cc7061812ebf1d68687e89514b4fe7ed348
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

KanzzAI combines AI and blockchain technology to offer customizable AI Chatbots and Agents. Users can automate tasks, enhance engagement, and streamline workflows, all within a secure, user-friendly ecosystem designed for adaptability and innovation.

Market

Volume (24H):$84,877.00
Market Capitalization:$17,994,294.00
Circulating Supply:100,000,000.00 KAAI
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KAAI

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-11-16
*/

// SPDX-License-Identifier: MIT
/*

Create your own AI Chatbots and AI Agents with ease on our website:
https://kanzzai.com

Stay updated with the latest announcements and developments by following us on Twitter:
https://x.com/Kanzz_AI

Join our Telegram community to connect with us and fellow enthusiasts:
https://t.me/KanzzAICommunity

Explore our whitepaper for an in-depth look at KanzzAI's technology and vision:
https://docs.kanzzai.com

Watch our tutorials and updates on KanzzAI's YouTube channel:
https://www.youtube.com/@KanzzAI

Find all our resources in one place on Linktree:
https://linktr.ee/kanzzai

*/

pragma solidity ^0.8.27;

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

// IERC20 Interface
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
    );
}

// Ownable Contract
contract Ownable is Context {
    address private _owner;
    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 changeOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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;
    }    
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }    
    function mod(uint256 a, uint256 b, string memory errorMessage) 
        internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// Interfaces for Uniswap
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 KAAI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "KANZZAI";
    string private constant _symbol = "KAAI";
    uint8 private constant _decimals = 9;

    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _tFeeTotal;

    uint256 private _taxFeeOnBuy = 4;
    uint256 private _taxFeeOnSell = 4;

    uint256 private _taxFee;

    uint256 private _previousTaxFee;

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

    address payable private _feeWallet =
        payable(0xb129a14E8D3162Ba295aB8509e916534FA2Eb54b);

    mapping(address => bool) private _isExcludedFromFee;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingEnabled = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
    bool private autoTaxEnabled = true;
    uint256 private launchBlock;

    uint256 public _maxTransactionAmount = 1000000 * 10**9;
    uint256 public _maxWalletSize = 1000000 * 10**9;
    uint256 public _swapTokensAtTreshold = 1000000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event TradingEnabled(uint256 launchBlock);
    event FeesUpdated(uint256 taxFeeOnBuy, uint256 taxFeeOnSell);
    event SwapEnabledUpdated(bool enabled);
    event AutoTaxEnabledUpdated(bool enabled);

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _balances[_msgSender()] = _tTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        ); // Uniswap V2 Router
        uniswapV2Router = _uniswapV2Router;

        // Create a uniswap pair for this token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // Exclude addresses from fees
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeWallet] = true;

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

    // ERC20 standard functions
    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 _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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 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;
    }

    // Internal functions
    function removeAllFee() private {
        if (_taxFee == 0) return;

        _previousTaxFee = _taxFee;

        _taxFee = 0;
    }

    function restoreAllFee() private {
        _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);
    }

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

        if (from != owner() && to != owner()) {
            // Trading enabled check
            if (!tradingEnabled) {
                require(from == owner(), "TOKEN: Trading is not enabled yet");
            }

            require(
                amount <= _maxTransactionAmount,
                "TOKEN: Exceeds max transaction limit"
            );

            if (to != uniswapV2Pair) {
                require(
                    _balances[to].add(amount) <= _maxWalletSize,
                    "TOKEN: Exceeds max wallet size"
                );
            }

            uint256 contractTokenBalance = _balances[address(this)];
            bool canSwap = contractTokenBalance >= _swapTokensAtTreshold;

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

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        bool takeFee = true;

        // Exclude from fee
        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            // Set Fee for Buys and Sells ( Snipe Protection )
            if (autoTaxEnabled) {
                uint256 blocksSinceLaunch = block.number.sub(launchBlock);
                if (from == uniswapV2Pair) {
                    // Buy
                    if ( blocksSinceLaunch <= 4) {
                        _taxFee = 50;
                    } else if (blocksSinceLaunch > 4 && blocksSinceLaunch <= 20) {
                        _taxFee = 25;
                     } else if (blocksSinceLaunch > 20 && blocksSinceLaunch <= 60) {
                        _taxFee = 10;
                    } else {
                        _taxFee = _taxFeeOnBuy;
                    }
                } else if (to == uniswapV2Pair) {
                    // Sell
                     if ( blocksSinceLaunch <= 4) {
                        _taxFee = 50;
                    } else if (blocksSinceLaunch > 4 && blocksSinceLaunch <= 20) {
                        _taxFee = 25;
                     } else if (blocksSinceLaunch > 20 && blocksSinceLaunch <= 60) {
                        _taxFee = 10;
                    } else {
                        _taxFee = _taxFeeOnSell;
                    }
                }
            } else {
                if (from == uniswapV2Pair) {
                    // Buy
                    _taxFee = _taxFeeOnBuy;
                } else if (to == uniswapV2Pair) {
                    // Sell
                    _taxFee = _taxFeeOnSell;
                }
            }
        }

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

    // Swap tokens for ETH
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        // Generate the uniswap pair path of token -> WETH (ETH)
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // Make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // Accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    // Send ETH to fee wallet
    function sendETHToFee(uint256 amount) private {
        _feeWallet.transfer(amount);
    }

    // Enable trading
    function enableTrading() public onlyOwner {
        tradingEnabled = true;
        launchBlock = block.number;
        emit TradingEnabled(launchBlock);
    }

    function isTradingEnabled() public view returns (bool) {
        return tradingEnabled;
    }

    // Manual swap and send functions
    function manualSwap() external {
        require(_msgSender() == _feeWallet, "Not authorized");
        uint256 contractBalance = _balances[address(this)];
        swapTokensForEth(contractBalance);
    }

    function manualSend() external {
        require(_msgSender() == _feeWallet, "Not authorized");
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    // Token transfer function
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        uint256 fee = amount.mul(_taxFee).div(100);
        uint256 transferAmount = amount.sub(fee);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(fee);

        emit Transfer(sender, recipient, transferAmount);

        if (takeFee) {
            emit Transfer(sender, address(this), fee);
        }

        if (!takeFee) restoreAllFee();
    }

    // Receive ETH from Uniswap
    receive() external payable {}

    // Owner functions to update settings
    function updateFees(uint256 taxFeeOnBuy, uint256 taxFeeOnSell)
        public
        onlyOwner
    {
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        emit FeesUpdated(taxFeeOnBuy, taxFeeOnSell);
    }

    function updateSwapTokensThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtTreshold = swapTokensAtAmount;
    }

    function setSwapEnabled(bool enabled) public onlyOwner {
        swapEnabled = enabled;
        emit SwapEnabledUpdated(enabled);
    }

    function setAutoTaxEnabled(bool enabled) public onlyOwner {
        autoTaxEnabled = enabled;
        emit AutoTaxEnabledUpdated(enabled);
    }

    function updateMaxTransactionAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTransactionAmount = maxTxAmount;
        emit MaxTxAmountUpdated(maxTxAmount);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

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":"bool","name":"enabled","type":"bool"}],"name":"AutoTaxEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"FeesUpdated","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"launchBlock","type":"uint256"}],"name":"TradingEnabled","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":"_maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtTreshold","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAutoTaxEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"updateMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"updateSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260046002819055600355600880546001600160a01b03191673b129a14e8d3162ba295ab8509e916534fa2eb54b179055600b805461010160b01b63ffffffff60a01b1990911617905566038d7ea4c68000600d819055600e819055600f5534801561006d575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350335f9081526006602090815260409182902067016345785d8a00009055600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155825163c45a015560e01b815292519092839263c45a0155926004808401938290030181865afa158015610129573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014d91906102e2565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bc91906102e2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610206573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022a91906102e2565b600b80546001600160a01b0319166001600160a01b039283161790555f80548216815260096020526040808220805460ff1990811660019081179092553084528284208054821683179055600854909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516102d491815260200190565b60405180910390a35061030f565b5f602082840312156102f2575f5ffd5b81516001600160a01b0381168114610308575f5ffd5b9392505050565b611a7e8061031c5f395ff3fe6080604052600436106101b2575f3560e01c806370a08231116100e7578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e146104cd578063e01af92c14610511578063ea1644d514610530578063f42938901461054f575f5ffd5b8063a9059cbb14610470578063aa4980231461048f578063b6e85216146104ae575f5ffd5b80638baa63b2116100c25780638baa63b2146103f45780638da5cb5b146104135780638f9a55c01461042f57806395d89b4114610444575f5ffd5b806370a0823114610398578063715018a6146103cc5780638a8c523c146103e0575f5ffd5b806323b872dd1161015257806349bd5a5e1161012d57806349bd5a5e1461032757806351bc3c851461034657806364d1966f1461035a5780636db7943714610379575f5ffd5b806323b872dd146102cc5780632af4c31e146102eb578063313ce5671461030c575f5ffd5b8063095ea7b31161018d578063095ea7b3146102475780630ac742f3146102665780631694505e1461027b57806318160ddd146102b2575f5ffd5b806304beaeb8146101bd578063064a59d0146101e557806306fdde031461020f575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101d2600d5481565b6040519081526020015b60405180910390f35b3480156101f0575f5ffd5b50600b54600160a01b900460ff165b60405190151581526020016101dc565b34801561021a575f5ffd5b506040805180820190915260078152664b414e5a5a414960c81b60208201525b6040516101dc91906116d0565b348015610252575f5ffd5b506101ff610261366004611719565b610563565b348015610271575f5ffd5b506101d2600f5481565b348015610286575f5ffd5b50600a5461029a906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b3480156102bd575f5ffd5b5067016345785d8a00006101d2565b3480156102d7575f5ffd5b506101ff6102e6366004611743565b610579565b3480156102f6575f5ffd5b5061030a610305366004611781565b6105e0565b005b348015610317575f5ffd5b50604051600981526020016101dc565b348015610332575f5ffd5b50600b5461029a906001600160a01b031681565b348015610351575f5ffd5b5061030a6106d0565b348015610365575f5ffd5b5061030a6103743660046117b0565b61073f565b348015610384575f5ffd5b5061030a6103933660046117c9565b6107c0565b3480156103a3575f5ffd5b506101d26103b2366004611781565b6001600160a01b03165f9081526006602052604090205490565b3480156103d7575f5ffd5b5061030a610830565b3480156103eb575f5ffd5b5061030a6108a1565b3480156103ff575f5ffd5b5061030a61040e3660046117e9565b61091f565b34801561041e575f5ffd5b505f546001600160a01b031661029a565b34801561043a575f5ffd5b506101d2600e5481565b34801561044f575f5ffd5b506040805180820190915260048152634b41414960e01b602082015261023a565b34801561047b575f5ffd5b506101ff61048a366004611719565b61094d565b34801561049a575f5ffd5b5061030a6104a93660046117e9565b610959565b3480156104b9575f5ffd5b5061030a6104c8366004611800565b6109b7565b3480156104d8575f5ffd5b506101d26104e736600461187f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561051c575f5ffd5b5061030a61052b3660046117b0565b610a4a565b34801561053b575f5ffd5b5061030a61054a3660046117e9565b610ac0565b34801561055a575f5ffd5b5061030a610aee565b5f61056f338484610b4c565b5060015b92915050565b5f610585848484610c6f565b6105d684336105d185604051806060016040528060288152602001611a21602891396001600160a01b038a165f90815260076020908152604080832033845290915290205491906111c4565b610b4c565b5060019392505050565b5f546001600160a01b031633146106125760405162461bcd60e51b8152600401610609906118b6565b60405180910390fd5b6001600160a01b0381166106775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610609565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316336001600160a01b0316146107245760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610609565b305f9081526006602052604090205461073c816111fc565b50565b5f546001600160a01b031633146107685760405162461bcd60e51b8152600401610609906118b6565b600b8054821515600160b81b0260ff60b81b199091161790556040517f58a7dba56eaaea4e4e6083c90c8125c21ab7ad09121a3b17fcb6a059df0ec2a0906107b590831515815260200190565b60405180910390a150565b5f546001600160a01b031633146107e95760405162461bcd60e51b8152600401610609906118b6565b6002829055600381905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b5f546001600160a01b031633146108595760405162461bcd60e51b8152600401610609906118b6565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108ca5760405162461bcd60e51b8152600401610609906118b6565b600b805460ff60a01b1916600160a01b17905543600c8190556040517fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e923916109159190815260200190565b60405180910390a1565b5f546001600160a01b031633146109485760405162461bcd60e51b8152600401610609906118b6565b600f55565b5f61056f338484610c6f565b5f546001600160a01b031633146109825760405162461bcd60e51b8152600401610609906118b6565b600d8190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906020016107b5565b5f546001600160a01b031633146109e05760405162461bcd60e51b8152600401610609906118b6565b5f5b82811015610a44578160095f868685818110610a0057610a006118eb565b9050602002016020810190610a159190611781565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016109e2565b50505050565b5f546001600160a01b03163314610a735760405162461bcd60e51b8152600401610609906118b6565b600b8054821515600160b01b0260ff60b01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a12906107b590831515815260200190565b5f546001600160a01b03163314610ae95760405162461bcd60e51b8152600401610609906118b6565b600e55565b6008546001600160a01b0316336001600160a01b031614610b425760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610609565b4761073c8161136c565b6001600160a01b038316610bae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610609565b6001600160a01b038216610c0f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610609565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ccf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610609565b6001600160a01b038216610d255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610609565b5f8111610d865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610609565b5f546001600160a01b03848116911614801590610db057505f546001600160a01b03838116911614155b15610fe957600b54600160a01b900460ff16610e2c575f546001600160a01b03848116911614610e2c5760405162461bcd60e51b815260206004820152602160248201527f544f4b454e3a2054726164696e67206973206e6f7420656e61626c65642079656044820152601d60fa1b6064820152608401610609565b600d54811115610e8a5760405162461bcd60e51b8152602060048201526024808201527f544f4b454e3a2045786365656473206d6178207472616e73616374696f6e206c6044820152631a5b5a5d60e21b6064820152608401610609565b600b546001600160a01b03838116911614610f1257600e546001600160a01b0383165f90815260066020526040902054610ec490836113a7565b1115610f125760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a2045786365656473206d61782077616c6c65742073697a6500006044820152606401610609565b305f90815260066020526040902054600f54600d5490821015908210610f3857600d5491505b808015610f4f5750600b54600160a81b900460ff16155b8015610f695750600b546001600160a01b03868116911614155b8015610f7e5750600b54600160b01b900460ff165b8015610fa257506001600160a01b0385165f9081526009602052604090205460ff16155b8015610fc657506001600160a01b0384165f9081526009602052604090205460ff16155b15610fe657610fd4826111fc565b478015610fe457610fe48161136c565b505b50505b6001600160a01b0383165f9081526009602052604090205460019060ff168061102957506001600160a01b0383165f9081526009602052604090205460ff165b8061105b5750600b546001600160a01b0385811691161480159061105b5750600b546001600160a01b03848116911614155b1561106757505f6111b8565b600b54600160b81b900460ff161561117a575f61108f600c544361140c90919063ffffffff16565b600b549091506001600160a01b039081169086160361110557600481116110ba576032600455611174565b6004811180156110cb575060148111155b156110da576019600455611174565b6014811180156110eb5750603c8111155b156110fa57600a600455611174565b600254600455611174565b600b546001600160a01b0390811690851603611174576004811161112d576032600455611174565b60048111801561113e575060148111155b1561114d576019600455611174565b60148111801561115e5750603c8111155b1561116d57600a600455611174565b6003546004555b506111b8565b600b546001600160a01b039081169085160361119b576002546004556111b8565b600b546001600160a01b03908116908416036111b8576003546004555b610a448484848461144d565b5f81848411156111e75760405162461bcd60e51b815260040161060991906116d0565b505f6111f38486611913565b95945050505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611242576112426118eb565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611299573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bd9190611926565b816001815181106112d0576112d06118eb565b6001600160a01b039283166020918202929092010152600a546112f69130911684610b4c565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061132e9085905f90869030904290600401611941565b5f604051808303815f87803b158015611345575f5ffd5b505af1158015611357573d5f5f3e3d5ffd5b5050600b805460ff60a81b1916905550505050565b6008546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113a3573d5f5f3e3d5ffd5b5050565b5f806113b383856119b1565b9050838110156114055760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610609565b9392505050565b5f61140583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c4565b8061145a5761145a6115d3565b5f61147b6064611475600454866115ea90919063ffffffff16565b90611668565b90505f611488848361140c565b90506114c6846040518060600160405280602681526020016119fb602691396001600160a01b0389165f9081526006602052604090205491906111c4565b6001600160a01b038088165f9081526006602052604080822093909355908716815220546114f490826113a7565b6001600160a01b0386165f9081526006602052604080822092909255308152205461151f90836113a7565b305f9081526006602090815260409182902092909255518281526001600160a01b0387811692908916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a382156115bb5760405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b826115cb576115cb600554600455565b505050505050565b6004545f036115de57565b600480546005555f9055565b5f825f036115f957505f610573565b5f61160483856119c4565b90508261161185836119db565b146114055760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610609565b5f61140583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836116c45760405162461bcd60e51b815260040161060991906116d0565b505f6111f384866119db565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461073c575f5ffd5b5f5f6040838503121561172a575f5ffd5b823561173581611705565b946020939093013593505050565b5f5f5f60608486031215611755575f5ffd5b833561176081611705565b9250602084013561177081611705565b929592945050506040919091013590565b5f60208284031215611791575f5ffd5b813561140581611705565b803580151581146117ab575f5ffd5b919050565b5f602082840312156117c0575f5ffd5b6114058261179c565b5f5f604083850312156117da575f5ffd5b50508035926020909101359150565b5f602082840312156117f9575f5ffd5b5035919050565b5f5f5f60408486031215611812575f5ffd5b833567ffffffffffffffff811115611828575f5ffd5b8401601f81018613611838575f5ffd5b803567ffffffffffffffff81111561184e575f5ffd5b8660208260051b8401011115611862575f5ffd5b60209182019450925061187690850161179c565b90509250925092565b5f5f60408385031215611890575f5ffd5b823561189b81611705565b915060208301356118ab81611705565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610573576105736118ff565b5f60208284031215611936575f5ffd5b815161140581611705565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156119915783516001600160a01b031683526020938401939092019160010161196a565b50506001600160a01b039590951660608401525050608001529392505050565b80820180821115610573576105736118ff565b8082028115828204841417610573576105736118ff565b5f826119f557634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d732973b230e74d5b8ce3cad1420275e6a74647a7a0e25f347c8ec485db90fd864736f6c634300081b0033

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c806370a08231116100e7578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e146104cd578063e01af92c14610511578063ea1644d514610530578063f42938901461054f575f5ffd5b8063a9059cbb14610470578063aa4980231461048f578063b6e85216146104ae575f5ffd5b80638baa63b2116100c25780638baa63b2146103f45780638da5cb5b146104135780638f9a55c01461042f57806395d89b4114610444575f5ffd5b806370a0823114610398578063715018a6146103cc5780638a8c523c146103e0575f5ffd5b806323b872dd1161015257806349bd5a5e1161012d57806349bd5a5e1461032757806351bc3c851461034657806364d1966f1461035a5780636db7943714610379575f5ffd5b806323b872dd146102cc5780632af4c31e146102eb578063313ce5671461030c575f5ffd5b8063095ea7b31161018d578063095ea7b3146102475780630ac742f3146102665780631694505e1461027b57806318160ddd146102b2575f5ffd5b806304beaeb8146101bd578063064a59d0146101e557806306fdde031461020f575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101d2600d5481565b6040519081526020015b60405180910390f35b3480156101f0575f5ffd5b50600b54600160a01b900460ff165b60405190151581526020016101dc565b34801561021a575f5ffd5b506040805180820190915260078152664b414e5a5a414960c81b60208201525b6040516101dc91906116d0565b348015610252575f5ffd5b506101ff610261366004611719565b610563565b348015610271575f5ffd5b506101d2600f5481565b348015610286575f5ffd5b50600a5461029a906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b3480156102bd575f5ffd5b5067016345785d8a00006101d2565b3480156102d7575f5ffd5b506101ff6102e6366004611743565b610579565b3480156102f6575f5ffd5b5061030a610305366004611781565b6105e0565b005b348015610317575f5ffd5b50604051600981526020016101dc565b348015610332575f5ffd5b50600b5461029a906001600160a01b031681565b348015610351575f5ffd5b5061030a6106d0565b348015610365575f5ffd5b5061030a6103743660046117b0565b61073f565b348015610384575f5ffd5b5061030a6103933660046117c9565b6107c0565b3480156103a3575f5ffd5b506101d26103b2366004611781565b6001600160a01b03165f9081526006602052604090205490565b3480156103d7575f5ffd5b5061030a610830565b3480156103eb575f5ffd5b5061030a6108a1565b3480156103ff575f5ffd5b5061030a61040e3660046117e9565b61091f565b34801561041e575f5ffd5b505f546001600160a01b031661029a565b34801561043a575f5ffd5b506101d2600e5481565b34801561044f575f5ffd5b506040805180820190915260048152634b41414960e01b602082015261023a565b34801561047b575f5ffd5b506101ff61048a366004611719565b61094d565b34801561049a575f5ffd5b5061030a6104a93660046117e9565b610959565b3480156104b9575f5ffd5b5061030a6104c8366004611800565b6109b7565b3480156104d8575f5ffd5b506101d26104e736600461187f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561051c575f5ffd5b5061030a61052b3660046117b0565b610a4a565b34801561053b575f5ffd5b5061030a61054a3660046117e9565b610ac0565b34801561055a575f5ffd5b5061030a610aee565b5f61056f338484610b4c565b5060015b92915050565b5f610585848484610c6f565b6105d684336105d185604051806060016040528060288152602001611a21602891396001600160a01b038a165f90815260076020908152604080832033845290915290205491906111c4565b610b4c565b5060019392505050565b5f546001600160a01b031633146106125760405162461bcd60e51b8152600401610609906118b6565b60405180910390fd5b6001600160a01b0381166106775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610609565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316336001600160a01b0316146107245760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610609565b305f9081526006602052604090205461073c816111fc565b50565b5f546001600160a01b031633146107685760405162461bcd60e51b8152600401610609906118b6565b600b8054821515600160b81b0260ff60b81b199091161790556040517f58a7dba56eaaea4e4e6083c90c8125c21ab7ad09121a3b17fcb6a059df0ec2a0906107b590831515815260200190565b60405180910390a150565b5f546001600160a01b031633146107e95760405162461bcd60e51b8152600401610609906118b6565b6002829055600381905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b5f546001600160a01b031633146108595760405162461bcd60e51b8152600401610609906118b6565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108ca5760405162461bcd60e51b8152600401610609906118b6565b600b805460ff60a01b1916600160a01b17905543600c8190556040517fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e923916109159190815260200190565b60405180910390a1565b5f546001600160a01b031633146109485760405162461bcd60e51b8152600401610609906118b6565b600f55565b5f61056f338484610c6f565b5f546001600160a01b031633146109825760405162461bcd60e51b8152600401610609906118b6565b600d8190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906020016107b5565b5f546001600160a01b031633146109e05760405162461bcd60e51b8152600401610609906118b6565b5f5b82811015610a44578160095f868685818110610a0057610a006118eb565b9050602002016020810190610a159190611781565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016109e2565b50505050565b5f546001600160a01b03163314610a735760405162461bcd60e51b8152600401610609906118b6565b600b8054821515600160b01b0260ff60b01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a12906107b590831515815260200190565b5f546001600160a01b03163314610ae95760405162461bcd60e51b8152600401610609906118b6565b600e55565b6008546001600160a01b0316336001600160a01b031614610b425760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610609565b4761073c8161136c565b6001600160a01b038316610bae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610609565b6001600160a01b038216610c0f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610609565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ccf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610609565b6001600160a01b038216610d255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610609565b5f8111610d865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610609565b5f546001600160a01b03848116911614801590610db057505f546001600160a01b03838116911614155b15610fe957600b54600160a01b900460ff16610e2c575f546001600160a01b03848116911614610e2c5760405162461bcd60e51b815260206004820152602160248201527f544f4b454e3a2054726164696e67206973206e6f7420656e61626c65642079656044820152601d60fa1b6064820152608401610609565b600d54811115610e8a5760405162461bcd60e51b8152602060048201526024808201527f544f4b454e3a2045786365656473206d6178207472616e73616374696f6e206c6044820152631a5b5a5d60e21b6064820152608401610609565b600b546001600160a01b03838116911614610f1257600e546001600160a01b0383165f90815260066020526040902054610ec490836113a7565b1115610f125760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a2045786365656473206d61782077616c6c65742073697a6500006044820152606401610609565b305f90815260066020526040902054600f54600d5490821015908210610f3857600d5491505b808015610f4f5750600b54600160a81b900460ff16155b8015610f695750600b546001600160a01b03868116911614155b8015610f7e5750600b54600160b01b900460ff165b8015610fa257506001600160a01b0385165f9081526009602052604090205460ff16155b8015610fc657506001600160a01b0384165f9081526009602052604090205460ff16155b15610fe657610fd4826111fc565b478015610fe457610fe48161136c565b505b50505b6001600160a01b0383165f9081526009602052604090205460019060ff168061102957506001600160a01b0383165f9081526009602052604090205460ff165b8061105b5750600b546001600160a01b0385811691161480159061105b5750600b546001600160a01b03848116911614155b1561106757505f6111b8565b600b54600160b81b900460ff161561117a575f61108f600c544361140c90919063ffffffff16565b600b549091506001600160a01b039081169086160361110557600481116110ba576032600455611174565b6004811180156110cb575060148111155b156110da576019600455611174565b6014811180156110eb5750603c8111155b156110fa57600a600455611174565b600254600455611174565b600b546001600160a01b0390811690851603611174576004811161112d576032600455611174565b60048111801561113e575060148111155b1561114d576019600455611174565b60148111801561115e5750603c8111155b1561116d57600a600455611174565b6003546004555b506111b8565b600b546001600160a01b039081169085160361119b576002546004556111b8565b600b546001600160a01b03908116908416036111b8576003546004555b610a448484848461144d565b5f81848411156111e75760405162461bcd60e51b815260040161060991906116d0565b505f6111f38486611913565b95945050505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611242576112426118eb565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611299573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bd9190611926565b816001815181106112d0576112d06118eb565b6001600160a01b039283166020918202929092010152600a546112f69130911684610b4c565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061132e9085905f90869030904290600401611941565b5f604051808303815f87803b158015611345575f5ffd5b505af1158015611357573d5f5f3e3d5ffd5b5050600b805460ff60a81b1916905550505050565b6008546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113a3573d5f5f3e3d5ffd5b5050565b5f806113b383856119b1565b9050838110156114055760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610609565b9392505050565b5f61140583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c4565b8061145a5761145a6115d3565b5f61147b6064611475600454866115ea90919063ffffffff16565b90611668565b90505f611488848361140c565b90506114c6846040518060600160405280602681526020016119fb602691396001600160a01b0389165f9081526006602052604090205491906111c4565b6001600160a01b038088165f9081526006602052604080822093909355908716815220546114f490826113a7565b6001600160a01b0386165f9081526006602052604080822092909255308152205461151f90836113a7565b305f9081526006602090815260409182902092909255518281526001600160a01b0387811692908916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a382156115bb5760405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b826115cb576115cb600554600455565b505050505050565b6004545f036115de57565b600480546005555f9055565b5f825f036115f957505f610573565b5f61160483856119c4565b90508261161185836119db565b146114055760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610609565b5f61140583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836116c45760405162461bcd60e51b815260040161060991906116d0565b505f6111f384866119db565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461073c575f5ffd5b5f5f6040838503121561172a575f5ffd5b823561173581611705565b946020939093013593505050565b5f5f5f60608486031215611755575f5ffd5b833561176081611705565b9250602084013561177081611705565b929592945050506040919091013590565b5f60208284031215611791575f5ffd5b813561140581611705565b803580151581146117ab575f5ffd5b919050565b5f602082840312156117c0575f5ffd5b6114058261179c565b5f5f604083850312156117da575f5ffd5b50508035926020909101359150565b5f602082840312156117f9575f5ffd5b5035919050565b5f5f5f60408486031215611812575f5ffd5b833567ffffffffffffffff811115611828575f5ffd5b8401601f81018613611838575f5ffd5b803567ffffffffffffffff81111561184e575f5ffd5b8660208260051b8401011115611862575f5ffd5b60209182019450925061187690850161179c565b90509250925092565b5f5f60408385031215611890575f5ffd5b823561189b81611705565b915060208301356118ab81611705565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610573576105736118ff565b5f60208284031215611936575f5ffd5b815161140581611705565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156119915783516001600160a01b031683526020938401939092019160010161196a565b50506001600160a01b039590951660608401525050608001529392505050565b80820180821115610573576105736118ff565b8082028115828204841417610573576105736118ff565b5f826119f557634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d732973b230e74d5b8ce3cad1420275e6a74647a7a0e25f347c8ec485db90fd864736f6c634300081b0033

Deployed Bytecode Sourcemap

5076:11922:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6117:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6117:54:0;;;;;;;;14221:95;;;;;;;;;;-1:-1:-1;14294:14:0;;-1:-1:-1;;;14294:14:0;;;;14221:95;;;361:14:1;;354:22;336:41;;324:2;309:18;14221:95:0;196:187:1;7403:83:0;;;;;;;;;;-1:-1:-1;7473:5:0;;;;;;;;;;;;-1:-1:-1;;;7473:5:0;;;;7403:83;;;;;;;:::i;8309:193::-;;;;;;;;;;-1:-1:-1;8309:193:0;;;;;:::i;:::-;;:::i;6232:54::-;;;;;;;;;;;;;;;;5841:41;;;;;;;;;;-1:-1:-1;5841:41:0;;;;-1:-1:-1;;;;;5841:41:0;;;;;;-1:-1:-1;;;;;1509:32:1;;;1491:51;;1479:2;1464:18;5841:41:0;1319:229:1;7680:95:0;;;;;;;;;;-1:-1:-1;5335:17:0;7680:95;;8510:446;;;;;;;;;;-1:-1:-1;8510:446:0;;;;;:::i;:::-;;:::i;2387:279::-;;;;;;;;;;-1:-1:-1;2387:279:0;;;;;:::i;:::-;;:::i;:::-;;7589:83;;;;;;;;;;-1:-1:-1;7589:83:0;;5290:1;2460:36:1;;2448:2;2433:18;7589:83:0;2318:184:1;5889:28:0;;;;;;;;;;-1:-1:-1;5889:28:0;;;;-1:-1:-1;;;;;5889:28:0;;;14363:208;;;;;;;;;;;;;:::i;16289:147::-;;;;;;;;;;-1:-1:-1;16289:147:0;;;;;:::i;:::-;;:::i;15722:241::-;;;;;;;;;;-1:-1:-1;15722:241:0;;;;;:::i;:::-;;:::i;7783:119::-;;;;;;;;;;-1:-1:-1;7783:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7876:18:0;7849:7;7876:18;;;:9;:18;;;;;;;7783:119;2231:148;;;;;;;;;;;;;:::i;14051:162::-;;;;;;;;;;;;;:::i;15971:164::-;;;;;;;;;;-1:-1:-1;15971:164:0;;;;;:::i;:::-;;:::i;2017:79::-;;;;;;;;;;-1:-1:-1;2055:7:0;2082:6;-1:-1:-1;;;;;2082:6:0;2017:79;;6178:47;;;;;;;;;;;;;;;;7494:87;;;;;;;;;;-1:-1:-1;7566:7:0;;;;;;;;;;;;-1:-1:-1;;;7566:7:0;;;;7494:87;;7910:199;;;;;;;;;;-1:-1:-1;7910:199:0;;;;;:::i;:::-;;:::i;16444:175::-;;;;;;;;;;-1:-1:-1;16444:175:0;;;;;:::i;:::-;;:::i;16750:245::-;;;;;;;;;;-1:-1:-1;16750:245:0;;;;;:::i;:::-;;:::i;8117:184::-;;;;;;;;;;-1:-1:-1;8117:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8266:18:0;;;8234:7;8266:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8117:184;16143:138;;;;;;;;;;-1:-1:-1;16143:138:0;;;;;:::i;:::-;;:::i;16627:115::-;;;;;;;;;;-1:-1:-1;16627:115:0;;;;;:::i;:::-;;:::i;14579:207::-;;;;;;;;;;;;;:::i;8309:193::-;8411:4;8433:39;806:10;8456:7;8465:6;8433:8;:39::i;:::-;-1:-1:-1;8490:4:0;8309:193;;;;;:::o;8510:446::-;8642:4;8659:36;8669:6;8677:9;8688:6;8659:9;:36::i;:::-;8706:220;8729:6;806:10;8777:138;8833:6;8777:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8777:19:0;;;;;;:11;:19;;;;;;;;806:10;8777:33;;;;;;;;;;:37;:138::i;:::-;8706:8;:220::i;:::-;-1:-1:-1;8944:4:0;8510:446;;;;;:::o;2387:279::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2488:22:0;::::1;2466:110;;;::::0;-1:-1:-1;;;2466:110:0;;5292:2:1;2466:110:0::1;::::0;::::1;5274:21:1::0;5331:2;5311:18;;;5304:30;5370:34;5350:18;;;5343:62;-1:-1:-1;;;5421:18:1;;;5414:36;5467:19;;2466:110:0::1;5090:402:1::0;2466:110:0::1;2613:6;::::0;;2592:38:::1;::::0;-1:-1:-1;;;;;2592:38:0;;::::1;::::0;2613:6;::::1;::::0;2592:38:::1;::::0;::::1;2641:6;:17:::0;;-1:-1:-1;;;;;;2641:17:0::1;-1:-1:-1::0;;;;;2641:17:0;;;::::1;::::0;;;::::1;::::0;;2387:279::o;14363:208::-;14429:10;;-1:-1:-1;;;;;14429:10:0;806;-1:-1:-1;;;;;14413:26:0;;14405:53;;;;-1:-1:-1;;;14405:53:0;;5699:2:1;14405:53:0;;;5681:21:1;5738:2;5718:18;;;5711:30;-1:-1:-1;;;5757:18:1;;;5750:44;5811:18;;14405:53:0;5497:338:1;14405:53:0;14513:4;14469:23;14495:24;;;:9;:24;;;;;;14530:33;14495:24;14530:16;:33::i;:::-;14394:177;14363:208::o;16289:147::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;16358:14:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;16358:24:0::1;-1:-1:-1::0;;;;16358:24:0;;::::1;;::::0;;16398:30:::1;::::0;::::1;::::0;::::1;::::0;16375:7;361:14:1;354:22;336:41;;324:2;309:18;;196:187;16398:30:0::1;;;;;;;;16289:147:::0;:::o;15722:241::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;15836:12:::1;:26:::0;;;15873:13:::1;:28:::0;;;15917:38:::1;::::0;;6014:25:1;;;6070:2;6055:18;;6048:34;;;15917:38:0::1;::::0;5987:18:1;15917:38:0::1;;;;;;;15722:241:::0;;:::o;2231:148::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;2338:1:::1;2322:6:::0;;2301:40:::1;::::0;-1:-1:-1;;;;;2322:6:0;;::::1;::::0;2301:40:::1;::::0;2338:1;;2301:40:::1;2369:1;2352:19:::0;;-1:-1:-1;;;;;;2352:19:0::1;::::0;;2231:148::o;14051:162::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;14104:14:::1;:21:::0;;-1:-1:-1;;;;14104:21:0::1;-1:-1:-1::0;;;14104:21:0::1;::::0;;14150:12:::1;14136:11;:26:::0;;;14178:27:::1;::::0;::::1;::::0;::::1;::::0;160:25:1;;;148:2;133:18;;14:177;14178:27:0::1;;;;;;;;14051:162::o:0;15971:164::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;16085:21:::1;:42:::0;15971:164::o;7910:199::-;8015:4;8037:42;806:10;8061:9;8072:6;8037:9;:42::i;16444:175::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;16529:21:::1;:35:::0;;;16580:31:::1;::::0;160:25:1;;;16580:31:0::1;::::0;148:2:1;133:18;16580:31:0::1;14:177:1::0;16750:245:0;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;16878:9:::1;16873:115;16893:19:::0;;::::1;16873:115;;;16968:8;16934:18;:31;16953:8;;16962:1;16953:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16934:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16934:31:0;:42;;-1:-1:-1;;16934:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;16914:3:0::1;16873:115;;;;16750:245:::0;;;:::o;16143:138::-;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;16209:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;16209:21:0::1;-1:-1:-1::0;;;;16209:21:0;;::::1;;::::0;;16246:27:::1;::::0;::::1;::::0;::::1;::::0;16223:7;361:14:1;354:22;336:41;;324:2;309:18;;196:187;16627:115:0;2144:6;;-1:-1:-1;;;;;2144:6:0;806:10;2144:22;2136:67;;;;-1:-1:-1;;;2136:67:0;;;;;;;:::i;:::-;16704:14:::1;:30:::0;16627:115::o;14579:207::-;14645:10;;-1:-1:-1;;;;;14645:10:0;806;-1:-1:-1;;;;;14629:26:0;;14621:53;;;;-1:-1:-1;;;14621:53:0;;5699:2:1;14621:53:0;;;5681:21:1;5738:2;5718:18;;;5711:30;-1:-1:-1;;;5757:18:1;;;5750:44;5811:18;;14621:53:0;5497:338:1;14621:53:0;14714:21;14746:32;14714:21;14746:12;:32::i;9221:369::-;-1:-1:-1;;;;;9348:19:0;;9340:68;;;;-1:-1:-1;;;9340:68:0;;6427:2:1;9340:68:0;;;6409:21:1;6466:2;6446:18;;;6439:30;6505:34;6485:18;;;6478:62;-1:-1:-1;;;6556:18:1;;;6549:34;6600:19;;9340:68:0;6225:400:1;9340:68:0;-1:-1:-1;;;;;9427:21:0;;9419:68;;;;-1:-1:-1;;;9419:68:0;;6832:2:1;9419:68:0;;;6814:21:1;6871:2;6851:18;;;6844:30;6910:34;6890:18;;;6883:62;-1:-1:-1;;;6961:18:1;;;6954:32;7003:19;;9419:68:0;6630:398:1;9419:68:0;-1:-1:-1;;;;;9498:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9550:32;;160:25:1;;;9550:32:0;;133:18:1;9550:32:0;;;;;;;9221:369;;;:::o;9629:3617::-;-1:-1:-1;;;;;9751:18:0;;9743:64;;;;-1:-1:-1;;;9743:64:0;;7235:2:1;9743:64:0;;;7217:21:1;7274:2;7254:18;;;7247:30;7313:34;7293:18;;;7286:62;-1:-1:-1;;;7364:18:1;;;7357:31;7405:19;;9743:64:0;7033:397:1;9743:64:0;-1:-1:-1;;;;;9826:16:0;;9818:60;;;;-1:-1:-1;;;9818:60:0;;7637:2:1;9818:60:0;;;7619:21:1;7676:2;7656:18;;;7649:30;7715:33;7695:18;;;7688:61;7766:18;;9818:60:0;7435:355:1;9818:60:0;9906:1;9897:6;:10;9889:64;;;;-1:-1:-1;;;9889:64:0;;7997:2:1;9889:64:0;;;7979:21:1;8036:2;8016:18;;;8009:30;8075:34;8055:18;;;8048:62;-1:-1:-1;;;8126:18:1;;;8119:39;8175:19;;9889:64:0;7795:405:1;9889:64:0;2055:7;2082:6;-1:-1:-1;;;;;9970:15:0;;;2082:6;;9970:15;;;;:32;;-1:-1:-1;2055:7:0;2082:6;-1:-1:-1;;;;;9989:13:0;;;2082:6;;9989:13;;9970:32;9966:1397;;;10062:14;;-1:-1:-1;;;10062:14:0;;;;10057:117;;2055:7;2082:6;-1:-1:-1;;;;;10105:15:0;;;2082:6;;10105:15;10097:61;;;;-1:-1:-1;;;10097:61:0;;8407:2:1;10097:61:0;;;8389:21:1;8446:2;8426:18;;;8419:30;8485:34;8465:18;;;8458:62;-1:-1:-1;;;8536:18:1;;;8529:31;8577:19;;10097:61:0;8205:397:1;10097:61:0;10226:21;;10216:6;:31;;10190:129;;;;-1:-1:-1;;;10190:129:0;;8809:2:1;10190:129:0;;;8791:21:1;8848:2;8828:18;;;8821:30;8887:34;8867:18;;;8860:62;-1:-1:-1;;;8938:18:1;;;8931:34;8982:19;;10190:129:0;8607:400:1;10190:129:0;10346:13;;-1:-1:-1;;;;;10340:19:0;;;10346:13;;10340:19;10336:207;;10439:14;;-1:-1:-1;;;;;10410:13:0;;;;;;:9;:13;;;;;;:25;;10428:6;10410:17;:25::i;:::-;:43;;10380:147;;;;-1:-1:-1;;;10380:147:0;;9214:2:1;10380:147:0;;;9196:21:1;9253:2;9233:18;;;9226:30;9292:32;9272:18;;;9265:60;9342:18;;10380:147:0;9012:354:1;10380:147:0;10608:4;10559:28;10590:24;;;:9;:24;;;;;;10668:21;;10734;;10644:45;;;;;10710;;10706:130;;10799:21;;10776:44;;10706:130;10874:7;:35;;;;-1:-1:-1;10903:6:0;;-1:-1:-1;;;10903:6:0;;;;10902:7;10874:35;:77;;;;-1:-1:-1;10938:13:0;;-1:-1:-1;;;;;10930:21:0;;;10938:13;;10930:21;;10874:77;:109;;;;-1:-1:-1;10972:11:0;;-1:-1:-1;;;10972:11:0;;;;10874:109;:155;;;;-1:-1:-1;;;;;;11005:24:0;;;;;;:18;:24;;;;;;;;11004:25;10874:155;:199;;;;-1:-1:-1;;;;;;11051:22:0;;;;;;:18;:22;;;;;;;;11050:23;10874:199;10852:500;;;11108:38;11125:20;11108:16;:38::i;:::-;11194:21;11238:22;;11234:103;;11285:32;11298:18;11285:12;:32::i;:::-;11089:263;10852:500;10004:1359;;9966:1397;-1:-1:-1;;;;;11454:24:0;;11375:12;11454:24;;;:18;:24;;;;;;11390:4;;11454:24;;;:63;;-1:-1:-1;;;;;;11495:22:0;;;;;;:18;:22;;;;;;;;11454:63;:126;;;-1:-1:-1;11543:13:0;;-1:-1:-1;;;;;11535:21:0;;;11543:13;;11535:21;;;;:44;;-1:-1:-1;11566:13:0;;-1:-1:-1;;;;;11560:19:0;;;11566:13;;11560:19;;11535:44;11436:1749;;;-1:-1:-1;11617:5:0;11436:1749;;;11723:14;;-1:-1:-1;;;11723:14:0;;;;11719:1455;;;11758:25;11786:29;11803:11;;11786:12;:16;;:29;;;;:::i;:::-;11846:13;;11758:57;;-1:-1:-1;;;;;;11846:13:0;;;11838:21;;;;11834:1039;;11938:1;11917:17;:22;11912:419;;11978:2;11968:7;:12;11834:1039;;11912:419;12034:1;12014:17;:21;:48;;;;;12060:2;12039:17;:23;;12014:48;12010:321;;;12101:2;12091:7;:12;11834:1039;;12010:321;12158:2;12138:17;:22;:49;;;;;12185:2;12164:17;:23;;12138:49;12134:197;;;12226:2;12216:7;:12;11834:1039;;12134:197;12295:12;;12285:7;:22;11834:1039;;;12366:13;;-1:-1:-1;;;;;12366:13:0;;;12360:19;;;;12356:517;;12460:1;12439:17;:22;12434:420;;12500:2;12490:7;:12;12434:420;;;12556:1;12536:17;:21;:48;;;;;12582:2;12561:17;:23;;12536:48;12532:322;;;12623:2;12613:7;:12;12532:322;;;12680:2;12660:17;:22;:49;;;;;12707:2;12686:17;:23;;12660:49;12656:198;;;12748:2;12738:7;:12;12656:198;;;12817:13;;12807:7;:23;12656:198;11739:1149;11719:1455;;;12925:13;;-1:-1:-1;;;;;12925:13:0;;;12917:21;;;;12913:246;;13001:12;;12991:7;:22;12913:246;;;13049:13;;-1:-1:-1;;;;;13049:13:0;;;13043:19;;;;13039:120;;13126:13;;13116:7;:23;13039:120;13197:41;13212:4;13218:2;13222:6;13230:7;13197:14;:41::i;3032:200::-;3128:7;3164:12;3156:6;;;;3148:29;;;;-1:-1:-1;;;3148:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3188:9:0;3200:5;3204:1;3200;:5;:::i;:::-;3188:17;3032:200;-1:-1:-1;;;;;3032:200:0:o;13282:607::-;6592:6;:13;;-1:-1:-1;;;;6592:13:0;-1:-1:-1;;;6592:13:0;;;13450:16:::1;::::0;;13464:1:::1;13450:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13450:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13450:16:0::1;13426:40;;13495:4;13477;13482:1;13477:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13477:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13521:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13521:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13477:7;;13521:22;;;;;:15;:22:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13511:4;13516:1;13511:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13511:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13588:15:::1;::::0;13556:62:::1;::::0;13573:4:::1;::::0;13588:15:::1;13606:11:::0;13556:8:::1;:62::i;:::-;13657:15;::::0;:224:::1;::::0;-1:-1:-1;;;13657:224:0;;-1:-1:-1;;;;;13657:15:0;;::::1;::::0;:66:::1;::::0;:224:::1;::::0;13738:11;;13657:15:::1;::::0;13808:4;;13835::::1;::::0;13855:15:::1;::::0;13657:224:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;6628:6:0;:14;;-1:-1:-1;;;;6628:14:0;;;-1:-1:-1;;;;13282:607:0:o;13928:92::-;13985:10;;:27;;-1:-1:-1;;;;;13985:10:0;;;;:27;;;;;14005:6;;13985:10;:27;:10;:27;14005:6;13985:10;:27;;;;;;;;;;;;;;;;;;;;;13928:92;:::o;2697:179::-;2755:7;;2787:5;2791:1;2787;:5;:::i;:::-;2775:17;;2816:1;2811;:6;;2803:46;;;;-1:-1:-1;;;2803:46:0;;11320:2:1;2803:46:0;;;11302:21:1;11359:2;11339:18;;;11332:30;11398:29;11378:18;;;11371:57;11445:18;;2803:46:0;11118:351:1;2803:46:0;2867:1;2697:179;-1:-1:-1;;;2697:179:0:o;2886:136::-;2944:7;2971:43;2975:1;2978;2971:43;;;;;;;;;;;;;;;;;:3;:43::i;14826:775::-;14982:7;14977:28;;14991:14;:12;:14::i;:::-;15018:11;15032:28;15056:3;15032:19;15043:7;;15032:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;15018:42;-1:-1:-1;15071:22:0;15096:15;:6;15018:42;15096:10;:15::i;:::-;15071:40;;15144:108;15180:6;15144:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15144:17:0;;;;;;:9;:17;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;15124:17:0;;;;;;;:9;:17;;;;;;:128;;;;15286:20;;;;;;;:40;;15311:14;15286:24;:40::i;:::-;-1:-1:-1;;;;;15263:20:0;;;;;;:9;:20;;;;;;:63;;;;15382:4;15364:24;;;;:33;;15393:3;15364:28;:33::i;:::-;15355:4;15337:24;;;;:9;:24;;;;;;;;;:60;;;;15415:43;160:25:1;;;-1:-1:-1;;;;;15415:43:0;;;;;;;;;;133:18:1;15415:43:0;;;;;;;15475:7;15471:81;;;15504:36;;160:25:1;;;15529:4:0;;-1:-1:-1;;;;;15504:36:0;;;;;148:2:1;133:18;15504:36:0;;;;;;;15471:81;15569:7;15564:29;;15578:15;9190;;9180:7;:25;9136:77;15578:15;14966:635;;14826:775;;;;:::o;8991:137::-;9038:7;;9049:1;9038:12;9034:25;;8991:137::o;9034:25::-;9089:7;;;9071:15;:25;-1:-1:-1;9109:11:0;;8991:137::o;3242:228::-;3300:7;3324:1;3329;3324:6;3320:25;;-1:-1:-1;3341:1:0;3334:8;;3320:25;3359:9;3371:5;3375:1;3371;:5;:::i;:::-;3359:17;-1:-1:-1;3404:1:0;3395:5;3399:1;3359:17;3395:5;:::i;:::-;:10;3387:56;;;;-1:-1:-1;;;3387:56:0;;12071:2:1;3387:56:0;;;12053:21:1;12110:2;12090:18;;;12083:30;12149:34;12129:18;;;12122:62;-1:-1:-1;;;12200:18:1;;;12193:31;12241:19;;3387:56:0;11869:397:1;3480:132:0;3538:7;3565:39;3569:1;3572;3565:39;;;;;;;;;;;;;;;;;3718:7;3753:12;3746:5;3738:28;;;;-1:-1:-1;;;3738:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3777:9:0;3789:5;3793:1;3789;:5;:::i;388:418:1:-;537:2;526:9;519:21;500:4;569:6;563:13;612:6;607:2;596:9;592:18;585:34;671:6;666:2;658:6;654:15;649:2;638:9;634:18;628:50;727:1;722:2;713:6;702:9;698:22;694:31;687:42;797:2;790;786:7;781:2;773:6;769:15;765:29;754:9;750:45;746:54;738:62;;;388:418;;;;:::o;811:131::-;-1:-1:-1;;;;;886:31:1;;876:42;;866:70;;932:1;929;922:12;947:367;1015:6;1023;1076:2;1064:9;1055:7;1051:23;1047:32;1044:52;;;1092:1;1089;1082:12;1044:52;1131:9;1118:23;1150:31;1175:5;1150:31;:::i;:::-;1200:5;1278:2;1263:18;;;;1250:32;;-1:-1:-1;;;947:367:1:o;1553:508::-;1630:6;1638;1646;1699:2;1687:9;1678:7;1674:23;1670:32;1667:52;;;1715:1;1712;1705:12;1667:52;1754:9;1741:23;1773:31;1798:5;1773:31;:::i;:::-;1823:5;-1:-1:-1;1880:2:1;1865:18;;1852:32;1893:33;1852:32;1893:33;:::i;:::-;1553:508;;1945:7;;-1:-1:-1;;;2025:2:1;2010:18;;;;1997:32;;1553:508::o;2066:247::-;2125:6;2178:2;2166:9;2157:7;2153:23;2149:32;2146:52;;;2194:1;2191;2184:12;2146:52;2233:9;2220:23;2252:31;2277:5;2252:31;:::i;2715:160::-;2780:20;;2836:13;;2829:21;2819:32;;2809:60;;2865:1;2862;2855:12;2809:60;2715:160;;;:::o;2880:180::-;2936:6;2989:2;2977:9;2968:7;2964:23;2960:32;2957:52;;;3005:1;3002;2995:12;2957:52;3028:26;3044:9;3028:26;:::i;3065:346::-;3133:6;3141;3194:2;3182:9;3173:7;3169:23;3165:32;3162:52;;;3210:1;3207;3200:12;3162:52;-1:-1:-1;;3255:23:1;;;3375:2;3360:18;;;3347:32;;-1:-1:-1;3065:346:1:o;3416:226::-;3475:6;3528:2;3516:9;3507:7;3503:23;3499:32;3496:52;;;3544:1;3541;3534:12;3496:52;-1:-1:-1;3589:23:1;;3416:226;-1:-1:-1;3416:226:1:o;3647:684::-;3739:6;3747;3755;3808:2;3796:9;3787:7;3783:23;3779:32;3776:52;;;3824:1;3821;3814:12;3776:52;3864:9;3851:23;3897:18;3889:6;3886:30;3883:50;;;3929:1;3926;3919:12;3883:50;3952:22;;4005:4;3997:13;;3993:27;-1:-1:-1;3983:55:1;;4034:1;4031;4024:12;3983:55;4074:2;4061:16;4100:18;4092:6;4089:30;4086:50;;;4132:1;4129;4122:12;4086:50;4187:7;4180:4;4170:6;4167:1;4163:14;4159:2;4155:23;4151:34;4148:47;4145:67;;;4208:1;4205;4198:12;4145:67;4239:4;4231:13;;;;-1:-1:-1;4263:6:1;-1:-1:-1;4288:37:1;;4304:20;;4288:37;:::i;:::-;4278:47;;3647:684;;;;;:::o;4336:388::-;4404:6;4412;4465:2;4453:9;4444:7;4440:23;4436:32;4433:52;;;4481:1;4478;4471:12;4433:52;4520:9;4507:23;4539:31;4564:5;4539:31;:::i;:::-;4589:5;-1:-1:-1;4646:2:1;4631:18;;4618:32;4659:33;4618:32;4659:33;:::i;:::-;4711:7;4701:17;;;4336:388;;;;;:::o;4729:356::-;4931:2;4913:21;;;4950:18;;;4943:30;5009:34;5004:2;4989:18;;4982:62;5076:2;5061:18;;4729:356::o;6093:127::-;6154:10;6149:3;6145:20;6142:1;6135:31;6185:4;6182:1;6175:15;6209:4;6206:1;6199:15;9371:127;9432:10;9427:3;9423:20;9420:1;9413:31;9463:4;9460:1;9453:15;9487:4;9484:1;9477:15;9503:128;9570:9;;;9591:11;;;9588:37;;;9605:18;;:::i;9768:251::-;9838:6;9891:2;9879:9;9870:7;9866:23;9862:32;9859:52;;;9907:1;9904;9897:12;9859:52;9939:9;9933:16;9958:31;9983:5;9958:31;:::i;10024:959::-;10286:4;10334:3;10323:9;10319:19;10365:6;10354:9;10347:25;10408:6;10403:2;10392:9;10388:18;10381:34;10451:3;10446:2;10435:9;10431:18;10424:31;10475:6;10510;10504:13;10541:6;10533;10526:22;10579:3;10568:9;10564:19;10557:26;;10618:2;10610:6;10606:15;10592:29;;10639:1;10649:195;10663:6;10660:1;10657:13;10649:195;;;10728:13;;-1:-1:-1;;;;;10724:39:1;10712:52;;10793:2;10819:15;;;;10784:12;;;;10760:1;10678:9;10649:195;;;-1:-1:-1;;;;;;;10900:32:1;;;;10895:2;10880:18;;10873:60;-1:-1:-1;;10964:3:1;10949:19;10942:35;10861:3;10024:959;-1:-1:-1;;;10024:959:1:o;10988:125::-;11053:9;;;11074:10;;;11071:36;;;11087:18;;:::i;11474:168::-;11547:9;;;11578;;11595:15;;;11589:22;;11575:37;11565:71;;11616:18;;:::i;11647:217::-;11687:1;11713;11703:132;;11757:10;11752:3;11748:20;11745:1;11738:31;11792:4;11789:1;11782:15;11820:4;11817:1;11810:15;11703:132;-1:-1:-1;11849:9:1;;11647:217::o

Swarm Source

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