ETH Price: $3,244.27 (-0.48%)
Gas: 2 Gwei

Token

ScanAI (SCAN)
 

Overview

Max Total Supply

100,000 SCAN

Holders

164

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
73.202068142 SCAN

Value
$0.00
0x1206afff67445bbe51b393eec6c0c85e4c703529
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:
ScanAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*
Welcome to ScanAI, the only bot you need for telegram. 

The fastest telegram utility bot for both casual and professional traders. You’re one scan away from your maximum potential.

Linktree - https://linktr.ee/scanai

Experience Now:
https://t.me/ScanAIBot

Twitter : https://x.com/scanaieth
Community : https://t.me/ScanAIETH
Documents: https://docs.scanaieth.xyz/
Website: https://scanaieth.xyz/
Github: https://github.com/scanaieth/scanai
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
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
    );
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function 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;
    }
}
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 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 ScanAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "ScanAI";
    string private constant _symbol = "SCAN";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private BuyFees = 15;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private SellFees = 15;
 
    //Original Fee
    uint256 private _redisFee = 0;
    uint256 private _taxFee = SellFees;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable public _developmentAddress;
    address payable public  _marketingAddress;
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 2000 * 10**9; 
    uint256 public _maxWalletSize = 2000 * 10**9; 
    uint256 public _swapTokensAtAmount = 200 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _developmentAddress = payable(owner());
        _marketingAddress = payable(0x1aBDFfad076D44701c1742Da9c164580623Bc872);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[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;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = BuyFees;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = SellFees;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
    function OpenSCANAI() public onlyOwner {
        tradingOpen = true;
    }
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function BlockWallets(address[] memory addys) public onlyOwner {
        for (uint256 i = 0; i < addys.length; i++) {
            bots[addys[i]] = true;
        }
    }
    function unBlockWallet(address _addy) public onlyOwner {
        bots[_addy] = false;
    }
    function _tokenTransfer(
        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);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    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 = _getRate();
        (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 _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function changeFees(uint256 _buyTaxes, uint256 _sellTaxes) public onlyOwner {
        BuyFees = _buyTaxes;
        SellFees = _sellTaxes;
    }
    function changeSwapbackThreshold(uint256 _amount) public onlyOwner {
        _swapTokensAtAmount = _amount;
    }
    function _toggleSwapback(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
    function changeTaxWallet(address _marketing) public onlyOwner{
        _marketingAddress = payable(_marketing);
    }
    function setMaxTx(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;       
    }
    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
    function removeLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
    
}

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":[{"internalType":"address[]","name":"addys","type":"address[]"}],"name":"BlockWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"OpenSCANAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"_toggleSwapback","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTaxes","type":"uint256"},{"internalType":"uint256","name":"_sellTaxes","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeSwapbackThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"changeTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","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":[{"internalType":"address","name":"_addy","type":"address"}],"name":"unBlockWallet","outputs":[],"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"},{"stateMutability":"payable","type":"receive"}]

608060405262000018655af3107a40006000196200039b565b6200002690600019620003be565b60065560006008819055600f6009819055600a829055600b819055600c829055600d819055600e9190915580556015805461ffff60a81b1916600160b01b1790556501d1a94a20006016819055601755642e90edd0006018553480156200008c57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001709190620003e6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e49190620003e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000232573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002589190620003e6565b601580546001600160a01b0319166001600160a01b0392831617905560005416601280546001600160a01b03929092166001600160a01b031992831617905560138054909116731abdffad076d44701c1742da9c164580623bc872179055600160056000620002cf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155601254821684528284208054861682179055601354909116835291208054909216179055620003403390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef655af3107a40006040516200038c91815260200190565b60405180910390a35062000418565b600082620003b957634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620003e057634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620003f957600080fd5b81516001600160a01b03811681146200041157600080fd5b9392505050565b611ecb80620004286000396000f3fe6080604052600436106101fd5760003560e01c80637f2feddc1161010d578063c3c2cb7e116100a0578063caac79341161006f578063caac7934146105d1578063cb711595146105f1578063dd62ed3e14610611578063ebe4b2f514610657578063f2fde38b1461066c57600080fd5b8063c3c2cb7e1461055c578063c3c8cd801461057c578063c492f04614610591578063c767d9f1146105b157600080fd5b8063a9059cbb116100dc578063a9059cbb146104cc578063ba759f0e146104ec578063bc3371821461050c578063bfd792841461052c57600080fd5b80637f2feddc1461043e5780638da5cb5b1461046b5780638f9a55c01461048957806395d89b411461049f57600080fd5b80633d6a9afe116101905780636fc3eaec1161015f5780636fc3eaec146103c957806370a08231146103de578063715018a6146103fe578063751039fc146104135780637d1db4a51461042857600080fd5b80633d6a9afe1461034957806349bd5a5e146103695780635c67d12d146103895780635d0044ca146103a957600080fd5b806321ecff5b116101cc57806321ecff5b146102d557806323b872dd146102f75780632fd689e314610317578063313ce5671461032d57600080fd5b806306fdde0314610209578063095ea7b31461024a5780631694505e1461027a57806318160ddd146102b257600080fd5b3661020457005b600080fd5b34801561021557600080fd5b506040805180820190915260068152655363616e414960d01b60208201525b6040516102419190611a0b565b60405180910390f35b34801561025657600080fd5b5061026a610265366004611a7e565b61068c565b6040519015158152602001610241565b34801561028657600080fd5b5060145461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156102be57600080fd5b50655af3107a40005b604051908152602001610241565b3480156102e157600080fd5b506102f56102f0366004611aaa565b6106a3565b005b34801561030357600080fd5b5061026a610312366004611acc565b6106e1565b34801561032357600080fd5b506102c760185481565b34801561033957600080fd5b5060405160098152602001610241565b34801561035557600080fd5b5060125461029a906001600160a01b031681565b34801561037557600080fd5b5060155461029a906001600160a01b031681565b34801561039557600080fd5b506102f56103a4366004611b1d565b61074a565b3480156103b557600080fd5b506102f56103c4366004611b38565b610792565b3480156103d557600080fd5b506102f56107c1565b3480156103ea57600080fd5b506102c76103f9366004611b51565b61080c565b34801561040a57600080fd5b506102f561082e565b34801561041f57600080fd5b506102f56108a2565b34801561043457600080fd5b506102c760165481565b34801561044a57600080fd5b506102c7610459366004611b51565b60116020526000908152604090205481565b34801561047757600080fd5b506000546001600160a01b031661029a565b34801561049557600080fd5b506102c760175481565b3480156104ab57600080fd5b5060408051808201909152600481526329a1a0a760e11b6020820152610234565b3480156104d857600080fd5b5061026a6104e7366004611a7e565b6108dd565b3480156104f857600080fd5b506102f5610507366004611b38565b6108ea565b34801561051857600080fd5b506102f5610527366004611b38565b610919565b34801561053857600080fd5b5061026a610547366004611b51565b60106020526000908152604090205460ff1681565b34801561056857600080fd5b506102f5610577366004611b84565b610948565b34801561058857600080fd5b506102f56109de565b34801561059d57600080fd5b506102f56105ac366004611c49565b610a32565b3480156105bd57600080fd5b506102f56105cc366004611b51565b610ad3565b3480156105dd57600080fd5b5060135461029a906001600160a01b031681565b3480156105fd57600080fd5b506102f561060c366004611b51565b610b1e565b34801561061d57600080fd5b506102c761062c366004611ccd565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561066357600080fd5b506102f5610b6a565b34801561067857600080fd5b506102f5610687366004611b51565b610ba9565b6000610699338484610c93565b5060015b92915050565b6000546001600160a01b031633146106d65760405162461bcd60e51b81526004016106cd90611d06565b60405180910390fd5b600991909155600b55565b60006106ee848484610db7565b610740843361073b85604051806060016040528060288152602001611e6e602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112e4565b610c93565b5060019392505050565b6000546001600160a01b031633146107745760405162461bcd60e51b81526004016106cd90611d06565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146107bc5760405162461bcd60e51b81526004016106cd90611d06565b601755565b6012546001600160a01b0316336001600160a01b031614806107f657506013546001600160a01b0316336001600160a01b0316145b6107ff57600080fd5b476108098161131e565b50565b6001600160a01b03811660009081526002602052604081205461069d90611358565b6000546001600160a01b031633146108585760405162461bcd60e51b81526004016106cd90611d06565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108cc5760405162461bcd60e51b81526004016106cd90611d06565b655af3107a40006016819055601755565b6000610699338484610db7565b6000546001600160a01b031633146109145760405162461bcd60e51b81526004016106cd90611d06565b601855565b6000546001600160a01b031633146109435760405162461bcd60e51b81526004016106cd90611d06565b601655565b6000546001600160a01b031633146109725760405162461bcd60e51b81526004016106cd90611d06565b60005b81518110156109da5760016010600084848151811061099657610996611d3b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109d281611d67565b915050610975565b5050565b6012546001600160a01b0316336001600160a01b03161480610a1357506013546001600160a01b0316336001600160a01b0316145b610a1c57600080fd5b6000610a273061080c565b9050610809816113dc565b6000546001600160a01b03163314610a5c5760405162461bcd60e51b81526004016106cd90611d06565b60005b82811015610acd578160056000868685818110610a7e57610a7e611d3b565b9050602002016020810190610a939190611b51565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ac581611d67565b915050610a5f565b50505050565b6000546001600160a01b03163314610afd5760405162461bcd60e51b81526004016106cd90611d06565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b03163314610b485760405162461bcd60e51b81526004016106cd90611d06565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b945760405162461bcd60e51b81526004016106cd90611d06565b6015805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610bd35760405162461bcd60e51b81526004016106cd90611d06565b6001600160a01b038116610c385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106cd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cf55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106cd565b6001600160a01b038216610d565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106cd565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106cd565b6001600160a01b038216610e7d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106cd565b60008111610edf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106cd565b6000546001600160a01b03848116911614801590610f0b57506000546001600160a01b03838116911614155b156111dd57601554600160a01b900460ff16610f99576000546001600160a01b03848116911614610f995760405162461bcd60e51b815260206004820152603260248201527f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c206044820152711d1c98591a5b99c81a5cc8195b98589b195960721b60648201526084016106cd565b601654811115610feb5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016106cd565b6001600160a01b03831660009081526010602052604090205460ff1615801561102d57506001600160a01b03821660009081526010602052604090205460ff16155b6110855760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016106cd565b6015546001600160a01b0383811691161461110a57601754816110a78461080c565b6110b19190611d80565b1061110a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106cd565b60006111153061080c565b601854909150811080159061112a5760185491505b8080156111415750601554600160a81b900460ff16155b801561115b57506015546001600160a01b03868116911614155b80156111705750601554600160b01b900460ff165b801561119557506001600160a01b03851660009081526005602052604090205460ff16155b80156111ba57506001600160a01b03841660009081526005602052604090205460ff16155b156111da576111c8826113dc565b4780156111d8576111d84761131e565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061121f57506001600160a01b03831660009081526005602052604090205460ff165b8061125157506015546001600160a01b0385811691161480159061125157506015546001600160a01b03848116911614155b1561125e575060006112d8565b6015546001600160a01b03858116911614801561128957506014546001600160a01b03848116911614155b1561129b57600854600c55600954600d555b6015546001600160a01b0384811691161480156112c657506014546001600160a01b03858116911614155b156112d857600a54600c55600b54600d555b610acd84848484611556565b600081848411156113085760405162461bcd60e51b81526004016106cd9190611a0b565b5060006113158486611d93565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156109da573d6000803e3d6000fd5b60006006548211156113bf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106cd565b60006113c9611584565b90506113d583826115a7565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061142457611424611d3b565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561147d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a19190611da6565b816001815181106114b4576114b4611d3b565b6001600160a01b0392831660209182029290920101526014546114da9130911684610c93565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611513908590600090869030904290600401611dc3565b600060405180830381600087803b15801561152d57600080fd5b505af1158015611541573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611563576115636115e9565b61156e848484611617565b80610acd57610acd600e54600c55600f54600d55565b600080600061159161170e565b90925090506115a082826115a7565b9250505090565b60006113d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061174a565b600c541580156115f95750600d54155b1561160057565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061162987611778565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061165b90876117d5565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461168a9086611817565b6001600160a01b0389166000908152600260205260409020556116ac81611876565b6116b684836118c0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116fb91815260200190565b60405180910390a3505050505050505050565b6006546000908190655af3107a400061172782826115a7565b82101561174157505060065492655af3107a400092509050565b90939092509050565b6000818361176b5760405162461bcd60e51b81526004016106cd9190611a0b565b5060006113158486611e34565b60008060008060008060008060006117958a600c54600d546118e4565b92509250925060006117a5611584565b905060008060006117b88e878787611939565b919e509c509a509598509396509194505050505091939550919395565b60006113d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e4565b6000806118248385611d80565b9050838110156113d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106cd565b6000611880611584565b9050600061188e8383611989565b306000908152600260205260409020549091506118ab9082611817565b30600090815260026020526040902055505050565b6006546118cd90836117d5565b6006556007546118dd9082611817565b6007555050565b60008080806118fe60646118f88989611989565b906115a7565b9050600061191160646118f88a89611989565b90506000611929826119238b866117d5565b906117d5565b9992985090965090945050505050565b60008080806119488886611989565b905060006119568887611989565b905060006119648888611989565b905060006119768261192386866117d5565b939b939a50919850919650505050505050565b60008260000361199b5750600061069d565b60006119a78385611e56565b9050826119b48583611e34565b146113d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cd565b600060208083528351808285015260005b81811015611a3857858101830151858201604001528201611a1c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461080957600080fd5b8035611a7981611a59565b919050565b60008060408385031215611a9157600080fd5b8235611a9c81611a59565b946020939093013593505050565b60008060408385031215611abd57600080fd5b50508035926020909101359150565b600080600060608486031215611ae157600080fd5b8335611aec81611a59565b92506020840135611afc81611a59565b929592945050506040919091013590565b80358015158114611a7957600080fd5b600060208284031215611b2f57600080fd5b6113d582611b0d565b600060208284031215611b4a57600080fd5b5035919050565b600060208284031215611b6357600080fd5b81356113d581611a59565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611b9757600080fd5b823567ffffffffffffffff80821115611baf57600080fd5b818501915085601f830112611bc357600080fd5b813581811115611bd557611bd5611b6e565b8060051b604051601f19603f83011681018181108582111715611bfa57611bfa611b6e565b604052918252848201925083810185019188831115611c1857600080fd5b938501935b82851015611c3d57611c2e85611a6e565b84529385019392850192611c1d565b98975050505050505050565b600080600060408486031215611c5e57600080fd5b833567ffffffffffffffff80821115611c7657600080fd5b818601915086601f830112611c8a57600080fd5b813581811115611c9957600080fd5b8760208260051b8501011115611cae57600080fd5b602092830195509350611cc49186019050611b0d565b90509250925092565b60008060408385031215611ce057600080fd5b8235611ceb81611a59565b91506020830135611cfb81611a59565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d7957611d79611d51565b5060010190565b8082018082111561069d5761069d611d51565b8181038181111561069d5761069d611d51565b600060208284031215611db857600080fd5b81516113d581611a59565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e135784516001600160a01b031683529383019391830191600101611dee565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611e5157634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761069d5761069d611d5156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204335507da6ed8d4a4e7bf61b20955f4d77cd7e6d583be8fcd31d73f39fbacf9e64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80637f2feddc1161010d578063c3c2cb7e116100a0578063caac79341161006f578063caac7934146105d1578063cb711595146105f1578063dd62ed3e14610611578063ebe4b2f514610657578063f2fde38b1461066c57600080fd5b8063c3c2cb7e1461055c578063c3c8cd801461057c578063c492f04614610591578063c767d9f1146105b157600080fd5b8063a9059cbb116100dc578063a9059cbb146104cc578063ba759f0e146104ec578063bc3371821461050c578063bfd792841461052c57600080fd5b80637f2feddc1461043e5780638da5cb5b1461046b5780638f9a55c01461048957806395d89b411461049f57600080fd5b80633d6a9afe116101905780636fc3eaec1161015f5780636fc3eaec146103c957806370a08231146103de578063715018a6146103fe578063751039fc146104135780637d1db4a51461042857600080fd5b80633d6a9afe1461034957806349bd5a5e146103695780635c67d12d146103895780635d0044ca146103a957600080fd5b806321ecff5b116101cc57806321ecff5b146102d557806323b872dd146102f75780632fd689e314610317578063313ce5671461032d57600080fd5b806306fdde0314610209578063095ea7b31461024a5780631694505e1461027a57806318160ddd146102b257600080fd5b3661020457005b600080fd5b34801561021557600080fd5b506040805180820190915260068152655363616e414960d01b60208201525b6040516102419190611a0b565b60405180910390f35b34801561025657600080fd5b5061026a610265366004611a7e565b61068c565b6040519015158152602001610241565b34801561028657600080fd5b5060145461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156102be57600080fd5b50655af3107a40005b604051908152602001610241565b3480156102e157600080fd5b506102f56102f0366004611aaa565b6106a3565b005b34801561030357600080fd5b5061026a610312366004611acc565b6106e1565b34801561032357600080fd5b506102c760185481565b34801561033957600080fd5b5060405160098152602001610241565b34801561035557600080fd5b5060125461029a906001600160a01b031681565b34801561037557600080fd5b5060155461029a906001600160a01b031681565b34801561039557600080fd5b506102f56103a4366004611b1d565b61074a565b3480156103b557600080fd5b506102f56103c4366004611b38565b610792565b3480156103d557600080fd5b506102f56107c1565b3480156103ea57600080fd5b506102c76103f9366004611b51565b61080c565b34801561040a57600080fd5b506102f561082e565b34801561041f57600080fd5b506102f56108a2565b34801561043457600080fd5b506102c760165481565b34801561044a57600080fd5b506102c7610459366004611b51565b60116020526000908152604090205481565b34801561047757600080fd5b506000546001600160a01b031661029a565b34801561049557600080fd5b506102c760175481565b3480156104ab57600080fd5b5060408051808201909152600481526329a1a0a760e11b6020820152610234565b3480156104d857600080fd5b5061026a6104e7366004611a7e565b6108dd565b3480156104f857600080fd5b506102f5610507366004611b38565b6108ea565b34801561051857600080fd5b506102f5610527366004611b38565b610919565b34801561053857600080fd5b5061026a610547366004611b51565b60106020526000908152604090205460ff1681565b34801561056857600080fd5b506102f5610577366004611b84565b610948565b34801561058857600080fd5b506102f56109de565b34801561059d57600080fd5b506102f56105ac366004611c49565b610a32565b3480156105bd57600080fd5b506102f56105cc366004611b51565b610ad3565b3480156105dd57600080fd5b5060135461029a906001600160a01b031681565b3480156105fd57600080fd5b506102f561060c366004611b51565b610b1e565b34801561061d57600080fd5b506102c761062c366004611ccd565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561066357600080fd5b506102f5610b6a565b34801561067857600080fd5b506102f5610687366004611b51565b610ba9565b6000610699338484610c93565b5060015b92915050565b6000546001600160a01b031633146106d65760405162461bcd60e51b81526004016106cd90611d06565b60405180910390fd5b600991909155600b55565b60006106ee848484610db7565b610740843361073b85604051806060016040528060288152602001611e6e602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112e4565b610c93565b5060019392505050565b6000546001600160a01b031633146107745760405162461bcd60e51b81526004016106cd90611d06565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146107bc5760405162461bcd60e51b81526004016106cd90611d06565b601755565b6012546001600160a01b0316336001600160a01b031614806107f657506013546001600160a01b0316336001600160a01b0316145b6107ff57600080fd5b476108098161131e565b50565b6001600160a01b03811660009081526002602052604081205461069d90611358565b6000546001600160a01b031633146108585760405162461bcd60e51b81526004016106cd90611d06565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108cc5760405162461bcd60e51b81526004016106cd90611d06565b655af3107a40006016819055601755565b6000610699338484610db7565b6000546001600160a01b031633146109145760405162461bcd60e51b81526004016106cd90611d06565b601855565b6000546001600160a01b031633146109435760405162461bcd60e51b81526004016106cd90611d06565b601655565b6000546001600160a01b031633146109725760405162461bcd60e51b81526004016106cd90611d06565b60005b81518110156109da5760016010600084848151811061099657610996611d3b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109d281611d67565b915050610975565b5050565b6012546001600160a01b0316336001600160a01b03161480610a1357506013546001600160a01b0316336001600160a01b0316145b610a1c57600080fd5b6000610a273061080c565b9050610809816113dc565b6000546001600160a01b03163314610a5c5760405162461bcd60e51b81526004016106cd90611d06565b60005b82811015610acd578160056000868685818110610a7e57610a7e611d3b565b9050602002016020810190610a939190611b51565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ac581611d67565b915050610a5f565b50505050565b6000546001600160a01b03163314610afd5760405162461bcd60e51b81526004016106cd90611d06565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b03163314610b485760405162461bcd60e51b81526004016106cd90611d06565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b945760405162461bcd60e51b81526004016106cd90611d06565b6015805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610bd35760405162461bcd60e51b81526004016106cd90611d06565b6001600160a01b038116610c385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106cd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cf55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106cd565b6001600160a01b038216610d565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106cd565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106cd565b6001600160a01b038216610e7d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106cd565b60008111610edf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106cd565b6000546001600160a01b03848116911614801590610f0b57506000546001600160a01b03838116911614155b156111dd57601554600160a01b900460ff16610f99576000546001600160a01b03848116911614610f995760405162461bcd60e51b815260206004820152603260248201527f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c206044820152711d1c98591a5b99c81a5cc8195b98589b195960721b60648201526084016106cd565b601654811115610feb5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016106cd565b6001600160a01b03831660009081526010602052604090205460ff1615801561102d57506001600160a01b03821660009081526010602052604090205460ff16155b6110855760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016106cd565b6015546001600160a01b0383811691161461110a57601754816110a78461080c565b6110b19190611d80565b1061110a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106cd565b60006111153061080c565b601854909150811080159061112a5760185491505b8080156111415750601554600160a81b900460ff16155b801561115b57506015546001600160a01b03868116911614155b80156111705750601554600160b01b900460ff165b801561119557506001600160a01b03851660009081526005602052604090205460ff16155b80156111ba57506001600160a01b03841660009081526005602052604090205460ff16155b156111da576111c8826113dc565b4780156111d8576111d84761131e565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061121f57506001600160a01b03831660009081526005602052604090205460ff165b8061125157506015546001600160a01b0385811691161480159061125157506015546001600160a01b03848116911614155b1561125e575060006112d8565b6015546001600160a01b03858116911614801561128957506014546001600160a01b03848116911614155b1561129b57600854600c55600954600d555b6015546001600160a01b0384811691161480156112c657506014546001600160a01b03858116911614155b156112d857600a54600c55600b54600d555b610acd84848484611556565b600081848411156113085760405162461bcd60e51b81526004016106cd9190611a0b565b5060006113158486611d93565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156109da573d6000803e3d6000fd5b60006006548211156113bf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106cd565b60006113c9611584565b90506113d583826115a7565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061142457611424611d3b565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561147d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a19190611da6565b816001815181106114b4576114b4611d3b565b6001600160a01b0392831660209182029290920101526014546114da9130911684610c93565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611513908590600090869030904290600401611dc3565b600060405180830381600087803b15801561152d57600080fd5b505af1158015611541573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611563576115636115e9565b61156e848484611617565b80610acd57610acd600e54600c55600f54600d55565b600080600061159161170e565b90925090506115a082826115a7565b9250505090565b60006113d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061174a565b600c541580156115f95750600d54155b1561160057565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061162987611778565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061165b90876117d5565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461168a9086611817565b6001600160a01b0389166000908152600260205260409020556116ac81611876565b6116b684836118c0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116fb91815260200190565b60405180910390a3505050505050505050565b6006546000908190655af3107a400061172782826115a7565b82101561174157505060065492655af3107a400092509050565b90939092509050565b6000818361176b5760405162461bcd60e51b81526004016106cd9190611a0b565b5060006113158486611e34565b60008060008060008060008060006117958a600c54600d546118e4565b92509250925060006117a5611584565b905060008060006117b88e878787611939565b919e509c509a509598509396509194505050505091939550919395565b60006113d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e4565b6000806118248385611d80565b9050838110156113d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106cd565b6000611880611584565b9050600061188e8383611989565b306000908152600260205260409020549091506118ab9082611817565b30600090815260026020526040902055505050565b6006546118cd90836117d5565b6006556007546118dd9082611817565b6007555050565b60008080806118fe60646118f88989611989565b906115a7565b9050600061191160646118f88a89611989565b90506000611929826119238b866117d5565b906117d5565b9992985090965090945050505050565b60008080806119488886611989565b905060006119568887611989565b905060006119648888611989565b905060006119768261192386866117d5565b939b939a50919850919650505050505050565b60008260000361199b5750600061069d565b60006119a78385611e56565b9050826119b48583611e34565b146113d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cd565b600060208083528351808285015260005b81811015611a3857858101830151858201604001528201611a1c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461080957600080fd5b8035611a7981611a59565b919050565b60008060408385031215611a9157600080fd5b8235611a9c81611a59565b946020939093013593505050565b60008060408385031215611abd57600080fd5b50508035926020909101359150565b600080600060608486031215611ae157600080fd5b8335611aec81611a59565b92506020840135611afc81611a59565b929592945050506040919091013590565b80358015158114611a7957600080fd5b600060208284031215611b2f57600080fd5b6113d582611b0d565b600060208284031215611b4a57600080fd5b5035919050565b600060208284031215611b6357600080fd5b81356113d581611a59565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611b9757600080fd5b823567ffffffffffffffff80821115611baf57600080fd5b818501915085601f830112611bc357600080fd5b813581811115611bd557611bd5611b6e565b8060051b604051601f19603f83011681018181108582111715611bfa57611bfa611b6e565b604052918252848201925083810185019188831115611c1857600080fd5b938501935b82851015611c3d57611c2e85611a6e565b84529385019392850192611c1d565b98975050505050505050565b600080600060408486031215611c5e57600080fd5b833567ffffffffffffffff80821115611c7657600080fd5b818601915086601f830112611c8a57600080fd5b813581811115611c9957600080fd5b8760208260051b8501011115611cae57600080fd5b602092830195509350611cc49186019050611b0d565b90509250925092565b60008060408385031215611ce057600080fd5b8235611ceb81611a59565b91506020830135611cfb81611a59565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d7957611d79611d51565b5060010190565b8082018082111561069d5761069d611d51565b8181038181111561069d5761069d611d51565b600060208284031215611db857600080fd5b81516113d581611a59565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e135784516001600160a01b031683529383019391830191600101611dee565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611e5157634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761069d5761069d611d5156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204335507da6ed8d4a4e7bf61b20955f4d77cd7e6d583be8fcd31d73f39fbacf9e64736f6c63430008120033

Deployed Bytecode Sourcemap

4488:13425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6952:83;;;;;;;;;;-1:-1:-1;7022:5:0;;;;;;;;;;;;-1:-1:-1;;;7022:5:0;;;;6952:83;;;;;;;:::i;:::-;;;;;;;;7884:193;;;;;;;;;;-1:-1:-1;7884:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7884:193:0;1162:187:1;5690:41:0;;;;;;;;;;-1:-1:-1;5690:41:0;;;;-1:-1:-1;;;;;5690:41:0;;;;;;-1:-1:-1;;;;;1544:32:1;;;1526:51;;1514:2;1499:18;5690:41:0;1354:229:1;7232:95:0;;;;;;;;;;-1:-1:-1;5025:14:0;7232:95;;;1734:25:1;;;1722:2;1707:18;7232:95:0;1588:177:1;16803:146:0;;;;;;;;;;-1:-1:-1;16803:146:0;;;;;:::i;:::-;;:::i;:::-;;8086:446;;;;;;;;;;-1:-1:-1;8086:446:0;;;;;:::i;:::-;;:::i;5984:48::-;;;;;;;;;;;;;;;;7140:83;;;;;;;;;;-1:-1:-1;7140:83:0;;4701:1;2626:36:1;;2614:2;2599:18;7140:83:0;2484:184:1;5590:42:0;;;;;;;;;;-1:-1:-1;5590:42:0;;;;-1:-1:-1;;;;;5590:42:0;;;5738:28;;;;;;;;;;-1:-1:-1;5738:28:0;;;;-1:-1:-1;;;;;5738:28:0;;;17076:106;;;;;;;;;;-1:-1:-1;17076:106:0;;;;;:::i;:::-;;:::i;17670:111::-;;;;;;;;;;-1:-1:-1;17670:111:0;;;;;:::i;:::-;;:::i;12874:235::-;;;;;;;;;;;;;:::i;7336:138::-;;;;;;;;;;-1:-1:-1;7336:138:0;;;;;:::i;:::-;;:::i;2000:148::-;;;;;;;;;;;;;:::i;17787:117::-;;;;;;;;;;;;;:::i;5882:42::-;;;;;;;;;;;;;;;;5539:43;;;;;;;;;;-1:-1:-1;5539:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1790:79;;;;;;;;;;-1:-1:-1;1828:7:0;1855:6;-1:-1:-1;;;;;1855:6:0;1790:79;;5932:44;;;;;;;;;;;;;;;;7044:87;;;;;;;;;;-1:-1:-1;7116:7:0;;;;;;;;;;;;-1:-1:-1;;;7116:7:0;;;;7044:87;;7483:199;;;;;;;;;;-1:-1:-1;7483:199:0;;;;;:::i;:::-;;:::i;16955:115::-;;;;;;;;;;-1:-1:-1;16955:115:0;;;;;:::i;:::-;;:::i;17553:111::-;;;;;;;;;;-1:-1:-1;17553:111:0;;;;;:::i;:::-;;:::i;5501:36::-;;;;;;;;;;-1:-1:-1;5501:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13118:172;;;;;;;;;;-1:-1:-1;13118:172:0;;;;;:::i;:::-;;:::i;12629:236::-;;;;;;;;;;;;;:::i;17188:234::-;;;;;;;;;;-1:-1:-1;17188:234:0;;;;;:::i;:::-;;:::i;13296:93::-;;;;;;;;;;-1:-1:-1;13296:93:0;;;;;:::i;:::-;;:::i;5639:41::-;;;;;;;;;;-1:-1:-1;5639:41:0;;;;-1:-1:-1;;;;;5639:41:0;;;17428:119;;;;;;;;;;-1:-1:-1;17428:119:0;;;;;:::i;:::-;;:::i;7691:184::-;;;;;;;;;;-1:-1:-1;7691:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7840:18:0;;;7808:7;7840:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7691:184;12547:76;;;;;;;;;;;;;:::i;2157:244::-;;;;;;;;;;-1:-1:-1;2157:244:0;;;;;:::i;:::-;;:::i;7884:193::-;7986:4;8008:39;649:10;8031:7;8040:6;8008:8;:39::i;:::-;-1:-1:-1;8065:4:0;7884:193;;;;;:::o;16803:146::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;;;;;;;;;16890:7:::1;:19:::0;;;;16920:8:::1;:21:::0;16803:146::o;8086:446::-;8218:4;8235:36;8245:6;8253:9;8264:6;8235:9;:36::i;:::-;8282:220;8305:6;649:10;8353:138;8409:6;8353:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8353:19:0;;;;;;:11;:19;;;;;;;;649:10;8353:33;;;;;;;;;;:37;:138::i;:::-;8282:8;:220::i;:::-;-1:-1:-1;8520:4:0;8086:446;;;;;:::o;17076:106::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;17148:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17148:26:0::1;-1:-1:-1::0;;;;17148:26:0;;::::1;::::0;;;::::1;::::0;;17076:106::o;17670:111::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;17743:14:::1;:30:::0;17670:111::o;12874:235::-;12940:19;;-1:-1:-1;;;;;12940:19:0;649:10;-1:-1:-1;;;;;12924:35:0;;:72;;;-1:-1:-1;12979:17:0;;-1:-1:-1;;;;;12979:17:0;649:10;-1:-1:-1;;;;;12963:33:0;;12924:72;12916:81;;;;;;13037:21;13069:32;13037:21;13069:12;:32::i;:::-;12905:204;12874:235::o;7336:138::-;-1:-1:-1;;;;;7449:16:0;;7402:7;7449:16;;;:7;:16;;;;;;7429:37;;:19;:37::i;2000:148::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;2107:1:::1;2091:6:::0;;2070:40:::1;::::0;-1:-1:-1;;;;;2091:6:0;;::::1;::::0;2070:40:::1;::::0;2107:1;;2070:40:::1;2138:1;2121:19:::0;;-1:-1:-1;;;;;;2121:19:0::1;::::0;;2000:148::o;17787:117::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;5025:14:::1;17839:12;:22:::0;;;17872:14:::1;:24:::0;17787:117::o;7483:199::-;7588:4;7610:42;649:10;7634:9;7645:6;7610:9;:42::i;16955:115::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;17033:19:::1;:29:::0;16955:115::o;17553:111::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;17623:12:::1;:26:::0;17553:111::o;13118:172::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;13197:9:::1;13192:91;13216:5;:12;13212:1;:16;13192:91;;;13267:4;13250;:14;13255:5;13261:1;13255:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13250:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13250:14:0;:21;;-1:-1:-1;;13250:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13230:3;::::1;::::0;::::1;:::i;:::-;;;;13192:91;;;;13118:172:::0;:::o;12629:236::-;12695:19;;-1:-1:-1;;;;;12695:19:0;649:10;-1:-1:-1;;;;;12679:35:0;;:72;;;-1:-1:-1;12734:17:0;;-1:-1:-1;;;;;12734:17:0;649:10;-1:-1:-1;;;;;12718:33:0;;12679:72;12671:81;;;;;;12763:23;12789:24;12807:4;12789:9;:24::i;:::-;12763:50;;12824:33;12841:15;12824:16;:33::i;17188:234::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;17305:9:::1;17301:114;17320:19:::0;;::::1;17301:114;;;17395:8;17361:18;:31;17380:8;;17389:1;17380:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17361:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17361:31:0;:42;;-1:-1:-1;;17361:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17341:3;::::1;::::0;::::1;:::i;:::-;;;;17301:114;;;;17188:234:::0;;;:::o;13296:93::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13362:11:0::1;13376:5;13362:11:::0;;;:4:::1;:11;::::0;;;;:19;;-1:-1:-1;;13362:19:0::1;::::0;;13296:93::o;17428:119::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;17500:17:::1;:39:::0;;-1:-1:-1;;;;;;17500:39:0::1;-1:-1:-1::0;;;;;17500:39:0;;;::::1;::::0;;;::::1;::::0;;17428:119::o;12547:76::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;12597:11:::1;:18:::0;;-1:-1:-1;;;;12597:18:0::1;-1:-1:-1::0;;;12597:18:0::1;::::0;;12547:76::o;2157:244::-;1915:6;;-1:-1:-1;;;;;1915:6:0;649:10;1915:22;1907:67;;;;-1:-1:-1;;;1907:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2246:22:0;::::1;2238:73;;;::::0;-1:-1:-1;;;2238:73:0;;7204:2:1;2238:73:0::1;::::0;::::1;7186:21:1::0;7243:2;7223:18;;;7216:30;7282:34;7262:18;;;7255:62;-1:-1:-1;;;7333:18:1;;;7326:36;7379:19;;2238:73:0::1;7002:402:1::0;2238:73:0::1;2348:6;::::0;;2327:38:::1;::::0;-1:-1:-1;;;;;2327:38:0;;::::1;::::0;2348:6;::::1;::::0;2327:38:::1;::::0;::::1;2376:6;:17:::0;;-1:-1:-1;;;;;;2376:17:0::1;-1:-1:-1::0;;;;;2376:17:0;;;::::1;::::0;;;::::1;::::0;;2157:244::o;9229:369::-;-1:-1:-1;;;;;9356:19:0;;9348:68;;;;-1:-1:-1;;;9348:68:0;;7611:2:1;9348:68:0;;;7593:21:1;7650:2;7630:18;;;7623:30;7689:34;7669:18;;;7662:62;-1:-1:-1;;;7740:18:1;;;7733:34;7784:19;;9348:68:0;7409:400:1;9348:68:0;-1:-1:-1;;;;;9435:21:0;;9427:68;;;;-1:-1:-1;;;9427:68:0;;8016:2:1;9427:68:0;;;7998:21:1;8055:2;8035:18;;;8028:30;8094:34;8074:18;;;8067:62;-1:-1:-1;;;8145:18:1;;;8138:32;8187:19;;9427:68:0;7814:398:1;9427:68:0;-1:-1:-1;;;;;9506:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9558:32;;1734:25:1;;;9558:32:0;;1707:18:1;9558:32:0;;;;;;;9229:369;;;:::o;9607:2334::-;-1:-1:-1;;;;;9729:18:0;;9721:68;;;;-1:-1:-1;;;9721:68:0;;8419:2:1;9721:68:0;;;8401:21:1;8458:2;8438:18;;;8431:30;8497:34;8477:18;;;8470:62;-1:-1:-1;;;8548:18:1;;;8541:35;8593:19;;9721:68:0;8217:401:1;9721:68:0;-1:-1:-1;;;;;9808:16:0;;9800:64;;;;-1:-1:-1;;;9800:64:0;;8825:2:1;9800:64:0;;;8807:21:1;8864:2;8844:18;;;8837:30;8903:34;8883:18;;;8876:62;-1:-1:-1;;;8954:18:1;;;8947:33;8997:19;;9800:64:0;8623:399:1;9800:64:0;9892:1;9883:6;:10;9875:64;;;;-1:-1:-1;;;9875:64:0;;9229:2:1;9875:64:0;;;9211:21:1;9268:2;9248:18;;;9241:30;9307:34;9287:18;;;9280:62;-1:-1:-1;;;9358:18:1;;;9351:39;9407:19;;9875:64:0;9027:405:1;9875:64:0;1828:7;1855:6;-1:-1:-1;;;;;9957:15:0;;;1855:6;;9957:15;;;;:32;;-1:-1:-1;1828:7:0;1855:6;-1:-1:-1;;;;;9976:13:0;;;1855:6;;9976:13;;9957:32;9953:1266;;;10047:11;;-1:-1:-1;;;10047:11:0;;;;10042:131;;1828:7;1855:6;-1:-1:-1;;;;;10087:15:0;;;1855:6;;10087:15;10079:78;;;;-1:-1:-1;;;10079:78:0;;9639:2:1;10079:78:0;;;9621:21:1;9678:2;9658:18;;;9651:30;9717:34;9697:18;;;9690:62;-1:-1:-1;;;9768:18:1;;;9761:48;9826:19;;10079:78:0;9437:414:1;10079:78:0;10208:12;;10198:6;:22;;10190:63;;;;-1:-1:-1;;;10190:63:0;;10058:2:1;10190:63:0;;;10040:21:1;10097:2;10077:18;;;10070:30;10136;10116:18;;;10109:58;10184:18;;10190:63:0;9856:352:1;10190:63:0;-1:-1:-1;;;;;10277:10:0;;;;;;:4;:10;;;;;;;;10276:11;:24;;;;-1:-1:-1;;;;;;10292:8:0;;;;;;:4;:8;;;;;;;;10291:9;10276:24;10268:72;;;;-1:-1:-1;;;10268:72:0;;10415:2:1;10268:72:0;;;10397:21:1;10454:2;10434:18;;;10427:30;10493:34;10473:18;;;10466:62;-1:-1:-1;;;10544:18:1;;;10537:33;10587:19;;10268:72:0;10213:399:1;10268:72:0;10367:13;;-1:-1:-1;;;;;10361:19:0;;;10367:13;;10361:19;10358:146;;10434:14;;10425:6;10409:13;10419:2;10409:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10401:87;;;;-1:-1:-1;;;10401:87:0;;10949:2:1;10401:87:0;;;10931:21:1;10988:2;10968:18;;;10961:30;11027:34;11007:18;;;11000:62;-1:-1:-1;;;11078:18:1;;;11071:33;11121:19;;10401:87:0;10747:399:1;10401:87:0;10521:28;10552:24;10570:4;10552:9;:24::i;:::-;10630:19;;10521:55;;-1:-1:-1;10606:43:0;;;;;10667:138;;10770:19;;10747:42;;10667:138;10826:7;:18;;;;-1:-1:-1;10838:6:0;;-1:-1:-1;;;10838:6:0;;;;10837:7;10826:18;:43;;;;-1:-1:-1;10856:13:0;;-1:-1:-1;;;;;10848:21:0;;;10856:13;;10848:21;;10826:43;:58;;;;-1:-1:-1;10873:11:0;;-1:-1:-1;;;10873:11:0;;;;10826:58;:87;;;;-1:-1:-1;;;;;;10889:24:0;;;;;;:18;:24;;;;;;;;10888:25;10826:87;:114;;;;-1:-1:-1;;;;;;10918:22:0;;;;;;:18;:22;;;;;;;;10917:23;10826:114;10822:386;;;10961:38;10978:20;10961:16;:38::i;:::-;11047:21;11091:22;;11087:106;;11138:35;11151:21;11138:12;:35::i;:::-;10942:266;10822:386;9991:1228;;9953:1266;-1:-1:-1;;;;;11297:24:0;;11232:12;11297:24;;;:18;:24;;;;;;11247:4;;11297:24;;;:50;;-1:-1:-1;;;;;;11325:22:0;;;;;;:18;:22;;;;;;;;11297:50;11296:102;;;-1:-1:-1;11361:13:0;;-1:-1:-1;;;;;11353:21:0;;;11361:13;;11353:21;;;;:44;;-1:-1:-1;11384:13:0;;-1:-1:-1;;;;;11378:19:0;;;11384:13;;11378:19;;11353:44;11292:587;;;-1:-1:-1;11425:5:0;11292:587;;;11509:13;;-1:-1:-1;;;;;11501:21:0;;;11509:13;;11501:21;:55;;;;-1:-1:-1;11540:15:0;;-1:-1:-1;;;;;11526:30:0;;;11540:15;;11526:30;;11501:55;11498:157;;;11589:14;;11577:9;:26;11632:7;;11622;:17;11498:157;11715:13;;-1:-1:-1;;;;;11709:19:0;;;11715:13;;11709:19;:55;;;;-1:-1:-1;11748:15:0;;-1:-1:-1;;;;;11732:32:0;;;11748:15;;11732:32;;11709:55;11705:160;;;11797:15;;11785:9;:27;11841:8;;11831:7;:18;11705:160;11892:41;11907:4;11913:2;11917:6;11925:7;11892:14;:41::i;2757:224::-;2877:7;2913:12;2905:6;;;;2897:29;;;;-1:-1:-1;;;2897:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2937:9:0;2949:5;2953:1;2949;:5;:::i;:::-;2937:17;2757:224;-1:-1:-1;;;;;2757:224:0:o;12442:99::-;12499:17;;:34;;-1:-1:-1;;;;;12499:17:0;;;;:34;;;;;12526:6;;12499:17;:34;:17;:34;12526:6;12499:17;:34;;;;;;;;;;;;;;;;;;;8541:323;8636:7;8694;;8683;:18;;8661:110;;;;-1:-1:-1;;;8661:110:0;;11486:2:1;8661:110:0;;;11468:21:1;11525:2;11505:18;;;11498:30;11564:34;11544:18;;;11537:62;-1:-1:-1;;;11615:18:1;;;11608:40;11665:19;;8661:110:0;11284:406:1;8661:110:0;8782:19;8804:10;:8;:10::i;:::-;8782:32;-1:-1:-1;8832:24:0;:7;8782:32;8832:11;:24::i;:::-;8825:31;8541:323;-1:-1:-1;;;8541:323:0:o;11950:483::-;6127:6;:13;;-1:-1:-1;;;;6127:13:0;-1:-1:-1;;;6127:13:0;;;12052:16:::1;::::0;;12066:1:::1;12052:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12052:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12052:16:0::1;12028:40;;12097:4;12079;12084:1;12079:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12079:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12123:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12123:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12079:7;;12123:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12113:4;12118:1;12113:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12113:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12188:15:::1;::::0;12156:62:::1;::::0;12173:4:::1;::::0;12188:15:::1;12206:11:::0;12156:8:::1;:62::i;:::-;12229:15;::::0;:196:::1;::::0;-1:-1:-1;;;12229:196:0;;-1:-1:-1;;;;;12229:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12310:11;;12229:15:::1;::::0;12352:4;;12379::::1;::::0;12399:15:::1;::::0;12229:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6163:6:0;:14;;-1:-1:-1;;;;6163:14:0;;;-1:-1:-1;;;;11950:483:0:o;13395:282::-;13551:7;13546:28;;13560:14;:12;:14::i;:::-;13585:44;13603:6;13611:9;13622:6;13585:17;:44::i;:::-;13645:7;13640:29;;13654:15;9159:17;;9147:9;:29;9197:15;;9187:7;:25;9103:117;16364:164;16406:7;16427:15;16444;16463:19;:17;:19::i;:::-;16426:56;;-1:-1:-1;16426:56:0;-1:-1:-1;16500:20:0;16426:56;;16500:11;:20::i;:::-;16493:27;;;;16364:164;:::o;3239:132::-;3297:7;3324:39;3328:1;3331;3324:39;;;;;;;;;;;;;;;;;:3;:39::i;8873:221::-;8920:9;;:14;:30;;;;-1:-1:-1;8938:7:0;;:12;8920:30;8916:43;;;8873:221::o;8916:43::-;8992:9;;;8972:17;:29;9030:7;;;9012:15;:25;-1:-1:-1;9051:13:0;;;;9075:11;8873:221::o;13686:610::-;13833:15;13863:23;13901:12;13928:23;13966:12;13993:13;14020:19;14031:7;14020:10;:19::i;:::-;-1:-1:-1;;;;;14068:15:0;;;;;;:7;:15;;;;;;13818:221;;-1:-1:-1;13818:221:0;;-1:-1:-1;13818:221:0;;-1:-1:-1;13818:221:0;-1:-1:-1;13818:221:0;-1:-1:-1;13818:221:0;-1:-1:-1;14068:28:0;;13818:221;14068:19;:28::i;:::-;-1:-1:-1;;;;;14050:15:0;;;;;;;:7;:15;;;;;;:46;;;;14128:18;;;;;;;:39;;14151:15;14128:22;:39::i;:::-;-1:-1:-1;;;;;14107:18:0;;;;;;:7;:18;;;;;:60;14178:16;14188:5;14178:9;:16::i;:::-;14205:23;14217:4;14223;14205:11;:23::i;:::-;14261:9;-1:-1:-1;;;;;14244:44:0;14253:6;-1:-1:-1;;;;;14244:44:0;;14272:15;14244:44;;;;1734:25:1;;1722:2;1707:18;;1588:177;14244:44:0;;;;;;;;13807:489;;;;;;13686:610;;;:::o;16537:257::-;16635:7;;16588;;;;5025:14;16703:20;16635:7;5025:14;16703:11;:20::i;:::-;16693:7;:30;16689:61;;;-1:-1:-1;;16733:7:0;;;5025:14;;-1:-1:-1;16537:257:0;-1:-1:-1;16537:257:0:o;16689:61::-;16769:7;;16778;;-1:-1:-1;16537:257:0;-1:-1:-1;16537:257:0:o;3377:223::-;3497:7;3532:12;3525:5;3517:28;;;;-1:-1:-1;;;3517:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3556:9:0;3568:5;3572:1;3568;:5;:::i;14719:615::-;14819:7;14841;14863;14885;14907;14929;14965:23;14990:12;15004:13;15034:40;15046:7;15055:9;;15066:7;;15034:11;:40::i;:::-;14964:110;;;;;;15085:19;15107:10;:8;:10::i;:::-;15085:32;;15129:15;15146:23;15171:12;15200:46;15212:7;15221:4;15227:5;15234:11;15200;:46::i;:::-;15128:118;;-1:-1:-1;15128:118:0;-1:-1:-1;15128:118:0;-1:-1:-1;15297:15:0;;-1:-1:-1;15314:4:0;;-1:-1:-1;15320:5:0;;-1:-1:-1;;;;;14719:615:0;;;;;;;:::o;2615:136::-;2673:7;2700:43;2704:1;2707;2700:43;;;;;;;;;;;;;;;;;:3;:43::i;2430:179::-;2488:7;;2520:5;2524:1;2520;:5;:::i;:::-;2508:17;;2549:1;2544;:6;;2536:46;;;;-1:-1:-1;;;2536:46:0;;13360:2:1;2536:46:0;;;13342:21:1;13399:2;13379:18;;;13372:30;13438:29;13418:18;;;13411:57;13485:18;;2536:46:0;13158:351:1;14305:211:0;14358:19;14380:10;:8;:10::i;:::-;14358:32;-1:-1:-1;14401:13:0;14417:22;:5;14358:32;14417:9;:22::i;:::-;14491:4;14475:22;;;;:7;:22;;;;;;14401:38;;-1:-1:-1;14475:33:0;;14401:38;14475:26;:33::i;:::-;14466:4;14450:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14305:211:0:o;14525:147::-;14603:7;;:17;;14615:4;14603:11;:17::i;:::-;14593:7;:27;14644:10;;:20;;14659:4;14644:14;:20::i;:::-;14631:10;:33;-1:-1:-1;;14525:147:0:o;15343:469::-;15512:7;;;;15606:30;15632:3;15606:21;:7;15618:8;15606:11;:21::i;:::-;:25;;:30::i;:::-;15591:45;-1:-1:-1;15647:13:0;15663:28;15687:3;15663:19;:7;15675:6;15663:11;:19::i;:28::-;15647:44;-1:-1:-1;15702:23:0;15728:28;15647:44;15728:17;:7;15740:4;15728:11;:17::i;:::-;:21;;:28::i;:::-;15702:54;15792:4;;-1:-1:-1;15798:5:0;;-1:-1:-1;15343:469:0;;-1:-1:-1;;;;;15343:469:0:o;15821:534::-;16015:7;;;;16112:24;:7;16124:11;16112;:24::i;:::-;16094:42;-1:-1:-1;16147:12:0;16162:21;:4;16171:11;16162:8;:21::i;:::-;16147:36;-1:-1:-1;16194:13:0;16210:22;:5;16220:11;16210:9;:22::i;:::-;16194:38;-1:-1:-1;16243:23:0;16269:28;16194:38;16269:17;:7;16281:4;16269:11;:17::i;:28::-;16316:7;;;;-1:-1:-1;16342:4:0;;-1:-1:-1;15821:534:0;;-1:-1:-1;;;;;;;15821:534:0:o;2987:246::-;3045:7;3069:1;3074;3069:6;3065:47;;-1:-1:-1;3099:1:0;3092:8;;3065:47;3122:9;3134:5;3138:1;3134;:5;:::i;:::-;3122:17;-1:-1:-1;3167:1:0;3158:5;3162:1;3122:17;3158:5;:::i;:::-;:10;3150:56;;;;-1:-1:-1;;;3150:56:0;;13889:2:1;3150:56:0;;;13871:21:1;13928:2;13908:18;;;13901:30;13967:34;13947:18;;;13940:62;-1:-1:-1;;;14018:18:1;;;14011:31;14059:19;;3150:56:0;13687: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;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1770:248::-;1838:6;1846;1899:2;1887:9;1878:7;1874:23;1870:32;1867:52;;;1915:1;1912;1905:12;1867:52;-1:-1:-1;;1938:23:1;;;2008:2;1993:18;;;1980:32;;-1:-1:-1;1770:248:1:o;2023:456::-;2100:6;2108;2116;2169:2;2157:9;2148:7;2144:23;2140:32;2137:52;;;2185:1;2182;2175:12;2137:52;2224:9;2211:23;2243:31;2268:5;2243:31;:::i;:::-;2293:5;-1:-1:-1;2350:2:1;2335:18;;2322:32;2363:33;2322:32;2363:33;:::i;:::-;2023:456;;2415:7;;-1:-1:-1;;;2469:2:1;2454:18;;;;2441:32;;2023:456::o;3105:160::-;3170:20;;3226:13;;3219:21;3209:32;;3199:60;;3255:1;3252;3245:12;3270:180;3326:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:52;;;3395:1;3392;3385:12;3347:52;3418:26;3434:9;3418:26;:::i;3455:180::-;3514:6;3567:2;3555:9;3546:7;3542:23;3538:32;3535:52;;;3583:1;3580;3573:12;3535:52;-1:-1:-1;3606:23:1;;3455:180;-1:-1:-1;3455:180:1:o;3640:247::-;3699:6;3752:2;3740:9;3731:7;3727:23;3723:32;3720:52;;;3768:1;3765;3758:12;3720:52;3807:9;3794:23;3826:31;3851:5;3826:31;:::i;3892:127::-;3953:10;3948:3;3944:20;3941:1;3934:31;3984:4;3981:1;3974:15;4008:4;4005:1;3998:15;4024:1121;4108:6;4139:2;4182;4170:9;4161:7;4157:23;4153:32;4150:52;;;4198:1;4195;4188:12;4150:52;4238:9;4225:23;4267:18;4308:2;4300:6;4297:14;4294:34;;;4324:1;4321;4314:12;4294:34;4362:6;4351:9;4347:22;4337:32;;4407:7;4400:4;4396:2;4392:13;4388:27;4378:55;;4429:1;4426;4419:12;4378:55;4465:2;4452:16;4487:2;4483;4480:10;4477:36;;;4493:18;;:::i;:::-;4539:2;4536:1;4532:10;4571:2;4565:9;4634:2;4630:7;4625:2;4621;4617:11;4613:25;4605:6;4601:38;4689:6;4677:10;4674:22;4669:2;4657:10;4654:18;4651:46;4648:72;;;4700:18;;:::i;:::-;4736:2;4729:22;4786:18;;;4820:15;;;;-1:-1:-1;4862:11:1;;;4858:20;;;4890:19;;;4887:39;;;4922:1;4919;4912:12;4887:39;4946:11;;;;4966:148;4982:6;4977:3;4974:15;4966:148;;;5048:23;5067:3;5048:23;:::i;:::-;5036:36;;4999:12;;;;5092;;;;4966:148;;;5133:6;4024:1121;-1:-1:-1;;;;;;;;4024:1121:1:o;5150:689::-;5242:6;5250;5258;5311:2;5299:9;5290:7;5286:23;5282:32;5279:52;;;5327:1;5324;5317:12;5279:52;5367:9;5354:23;5396:18;5437:2;5429:6;5426:14;5423:34;;;5453:1;5450;5443:12;5423:34;5491:6;5480:9;5476:22;5466:32;;5536:7;5529:4;5525:2;5521:13;5517:27;5507:55;;5558:1;5555;5548:12;5507:55;5598:2;5585:16;5624:2;5616:6;5613:14;5610:34;;;5640:1;5637;5630:12;5610:34;5695:7;5688:4;5678:6;5675:1;5671:14;5667:2;5663:23;5659:34;5656:47;5653:67;;;5716:1;5713;5706:12;5653:67;5747:4;5739:13;;;;-1:-1:-1;5771:6:1;-1:-1:-1;5796:37:1;;5812:20;;;-1:-1:-1;5796:37:1;:::i;:::-;5786:47;;5150:689;;;;;:::o;5844:388::-;5912:6;5920;5973:2;5961:9;5952:7;5948:23;5944:32;5941:52;;;5989:1;5986;5979:12;5941:52;6028:9;6015:23;6047:31;6072:5;6047:31;:::i;:::-;6097:5;-1:-1:-1;6154:2:1;6139:18;;6126:32;6167:33;6126:32;6167:33;:::i;:::-;6219:7;6209:17;;;5844:388;;;;;:::o;6237:356::-;6439:2;6421:21;;;6458:18;;;6451:30;6517:34;6512:2;6497:18;;6490:62;6584:2;6569:18;;6237:356::o;6598:127::-;6659:10;6654:3;6650:20;6647:1;6640:31;6690:4;6687:1;6680:15;6714:4;6711:1;6704:15;6730:127;6791:10;6786:3;6782:20;6779:1;6772:31;6822:4;6819:1;6812:15;6846:4;6843:1;6836:15;6862:135;6901:3;6922:17;;;6919:43;;6942:18;;:::i;:::-;-1:-1:-1;6989:1:1;6978:13;;6862:135::o;10617:125::-;10682:9;;;10703:10;;;10700:36;;;10716:18;;:::i;11151:128::-;11218:9;;;11239:11;;;11236:37;;;11253:18;;:::i;11695:251::-;11765:6;11818:2;11806:9;11797:7;11793:23;11789:32;11786:52;;;11834:1;11831;11824:12;11786:52;11866:9;11860:16;11885:31;11910:5;11885:31;:::i;11951:980::-;12213:4;12261:3;12250:9;12246:19;12292:6;12281:9;12274:25;12318:2;12356:6;12351:2;12340:9;12336:18;12329:34;12399:3;12394:2;12383:9;12379:18;12372:31;12423:6;12458;12452:13;12489:6;12481;12474:22;12527:3;12516:9;12512:19;12505:26;;12566:2;12558:6;12554:15;12540:29;;12587:1;12597:195;12611:6;12608:1;12605:13;12597:195;;;12676:13;;-1:-1:-1;;;;;12672:39:1;12660:52;;12767:15;;;;12732:12;;;;12708:1;12626:9;12597:195;;;-1:-1:-1;;;;;;;12848:32:1;;;;12843:2;12828:18;;12821:60;-1:-1:-1;;;12912:3:1;12897:19;12890:35;12809:3;11951:980;-1:-1:-1;;;11951:980:1:o;12936:217::-;12976:1;13002;12992:132;;13046:10;13041:3;13037:20;13034:1;13027:31;13081:4;13078:1;13071:15;13109:4;13106:1;13099:15;12992:132;-1:-1:-1;13138:9:1;;12936:217::o;13514:168::-;13587:9;;;13618;;13635:15;;;13629:22;;13615:37;13605:71;;13656:18;;:::i

Swarm Source

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