ETH Price: $3,215.41 (+1.66%)

Token

0xAISwap (0xAISwap)
 

Overview

Max Total Supply

1,000,000 0xAISwap

Holders

899 (0.00%)

Total Transfers

-

Market

Price

$0.27 @ 0.000084 ETH (+1.41%)

Onchain Market Cap

$269,147.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Experience the first-ever Conversational Swap in crypto, making it accessible to anyone who knows how to talk – simplifying transactions and bypassing the complexities of traditional swaps or Telegram bot commands.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ZeroXAISwapToken

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
    0xAISwap - Experience the first-ever Conversational Swap in crypto powered by GPT-4, making it accessible to 
    anyone who knows how to talk - simplifying transactions and bypassing the complexities of 
    traditional swaps or Telegram bot commands.

    Website: https://0xai.app/
    Telegram: https://t.me/ZeroXAISwap
    Twitter: https://twitter.com/0xAISwap

**/

// SPDX-License-Identifier: MIT
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 transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

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

 
library SafeMath {

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

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

contract ZeroXAISwapToken is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    string private constant _name = "0xAISwap";
    string private constant _symbol = "0xAISwap";
    uint256 private constant _totalSupply = 1_000_000 * 10**18; // 1 million
    uint256 public minSwap = 3_000 * 10**18; //Set to 0.3% (Should be between 0.01% to 0.5% of the total supply)
    uint8 private constant _decimals = 18;

    mapping (address => bool) public _isBlacklisted;
    mapping (address => bool) private isWalletLimitExempt;
    mapping (address => bool) private isTxLimitExempt;
    uint256 public _walletMax =     20_000 * 10**18; // 2%
    uint256 public _maxTxAmount =   20_000 * 10**18;  // 2%
    bool public checkWalletLimit = true; // check wallet limits


    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address immutable WETH;
    address payable public marketingWallet;
    address public ownerAddress;
    uint256 public buyTax;
    uint256 public sellTax;
    uint8 private inSwapAndLiquify;

    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;

    bool public isTradingEnabled = false;
    mapping(address => bool) private _ownerT;
    modifier open(address from, address to) {
        require(isTradingEnabled || from == ownerAddress || to == ownerAddress, "Not Open");
        _;
    }

    constructor() {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = uniswapV2Router.WETH();
        buyTax = 20;
        sellTax = 25;

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            WETH
        );

        marketingWallet = payable(0x9EAc247C8F663c4cF2Fd83C6d330A96a2D008B7e); // Marketing Fee Receiver Addresss
        _balance[msg.sender] = _totalSupply;
        _isExcludedFromFees[marketingWallet] = true;
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;
        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(uniswapV2Pair)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(uniswapV2Pair)] = true;
        ownerAddress = msg.sender;

        _allowances[address(this)][address(uniswapV2Router)] = type(uint256)
            .max;
        _allowances[msg.sender][address(uniswapV2Router)] = type(uint256).max;
        _allowances[marketingWallet][address(uniswapV2Router)] = type(uint256)
            .max;

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }


    function ExcludeWalletFromFees(address wallet) external onlyOwner {
        _isExcludedFromFees[wallet] = true;
    }
    
    function IncludeWalletinFees(address wallet) external onlyOwner {
        _isExcludedFromFees[wallet] = false;
    }

    function ChangeTax(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        buyTax = newBuyTax;
        sellTax = newSellTax;
    }
    
    function ChangeMinSwap(uint256 NewMinSwapAmount) external onlyOwner {
        minSwap = NewMinSwapAmount;
    }

    function ChangeMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function EnableTrading() external onlyOwner {
        isTradingEnabled = true;
    }
    
    function BlacklistBot(address[] calldata addresses) external onlyOwner {
      for (uint256 i; i < addresses.length; ++i) {
        _isBlacklisted[addresses[i]] = true;
      }
    }

    function UnBlockBot(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function enableDisableLimits(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }   

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    // Withdraw Ether from the contract. Only the owner can call this function.
    function withdrawEther(uint256 amount) external onlyOwner {
        require(address(this).balance >= amount, "Insufficient balance");
        payable(owner()).transfer(amount);
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 1e9, "Min transfer amt");
        require(isTradingEnabled || from == ownerAddress || to == ownerAddress, "Not Open");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "To/from address is blacklisted!");

        if(checkWalletLimit && !isTxLimitExempt[from] && !isTxLimitExempt[to]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }  

        if(checkWalletLimit && !isWalletLimitExempt[to])
                require(balanceOf(to).add(amount) <= _walletMax);

        uint256 _tax;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            _tax = 0;
        } else {

            if (inSwapAndLiquify == 1) {
                //No tax transfer
                _balance[from] -= amount;
                _balance[to] += amount;

                emit Transfer(from, to, amount);
                return;
            }

            if (from == uniswapV2Pair) {
                _tax = buyTax;
            } else if (to == uniswapV2Pair) {
                uint256 tokensToSwap = _balance[address(this)];
                if (tokensToSwap > minSwap && inSwapAndLiquify == 0) {
                    inSwapAndLiquify = 1;
                    address[] memory path = new address[](2);
                    path[0] = address(this);
                    path[1] = WETH;
                    uniswapV2Router
                        .swapExactTokensForETHSupportingFeeOnTransferTokens(
                            tokensToSwap,
                            0,
                            path,
                            marketingWallet,
                            block.timestamp
                        );
                    inSwapAndLiquify = 0;
                }
                _tax = sellTax;
            } else {
                _tax = 0;
            }
        }

        //Is there tax for sender|receiver?
        if (_tax != 0) {
            //Tax transfer
            uint256 taxTokens = (amount * _tax) / 100;
            uint256 transferAmount = amount - taxTokens;

            _balance[from] -= amount;
            _balance[to] += transferAmount;
            _balance[address(this)] += taxTokens;
            emit Transfer(from, address(this), taxTokens);
            emit Transfer(from, to, transferAmount);
        } else {
            //No tax transfer
            _balance[from] -= amount;
            _balance[to] += amount;

            emit Transfer(from, to, amount);
        }
    }

    receive() external payable {}
}

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":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":"addresses","type":"address[]"}],"name":"BlacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"ChangeMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"NewMinSwapAmount","type":"uint256"}],"name":"ChangeMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"ChangeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"ExcludeWalletFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"IncludeWalletinFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UnBlockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e060405268a2a15d09519be0000060025569043c33c193756480000060068190556007556008805460ff199081166001179091556010805490911690553480156200004a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620000e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010891906200043f565b6001600160a01b0390811660c0526014600a556019600b556080516040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018991906200043f565b60c0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020191906200043f565b6001600160a01b0390811660a05260088054610100600160a81b031916749eac247c8f663c4cf2fd83c6d330a96a2d008b7e00178155336000818152600d6020908152604080832069d3c21bcecceda10000009055935461010090049094168152600f909352818320805460ff199081166001908117909255918452828420805483168217905530845291832080549091168217905590600490620002ae6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600490935281832080548516600190811790915560a0519091168352908220805490931681179092556005906200031e6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308082526005855283822080548716600190811790915560a05184168352848320805490971617909555600980546001600160a01b03191633908117909155948152600e80855283822060805184168084529086528483206000199081905596835281865284832081845286528483208790556008546101009004909316825284528281209181529252902055620003e13390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda10000006040516200043191815260200190565b60405180910390a362000471565b6000602082840312156200045257600080fd5b81516001600160a01b03811681146200046a57600080fd5b9392505050565b60805160a05160c0516119ee620004b660003960006112c7015260008181610443015281816111c101526112030152600081816102ef015261132101526119ee6000f3fe6080604052600436106102295760003560e01c8063715018a61161012357806395d89b41116100ab578063ec28438a1161006f578063ec28438a146106a7578063f1d5f517146106c7578063f2fde38b146106e7578063f84ba65d14610707578063f872858a1461072757600080fd5b806395d89b4114610286578063a9059cbb1461060b578063b2f71bb91461062b578063cc1776d31461064b578063dd62ed3e1461066157600080fd5b8063807c2d9c116100f2578063807c2d9c14610577578063860e83be1461058d5780638da5cb5b146105ad5780638e01b498146105cb5780638f84aa09146105eb57600080fd5b8063715018a61461050757806374233c061461051c57806375f0a8741461053c5780637d1db4a51461056157600080fd5b806323b872dd116101b15780634ef5e7a3116101755780634ef5e7a3146104655780634f7041a51461048557806359cd90311461049b57806365490d0b146104b157806370a08231146104d157600080fd5b806323b872dd146103b55780632f6bc9e7146103d5578063313ce567146103f55780633bed33ce1461041157806349bd5a5e1461043157600080fd5b80631694505e116101f85780631694505e146102dd57806318160ddd146103295780631cdd3be3146103505780631d97b7cd146103805780632198cf6c1461039557600080fd5b806305d2743f14610235578063064a59d01461025757806306fdde0314610286578063095ea7b3146102bd57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50610255610250366004611667565b610741565b005b34801561026357600080fd5b506010546102719060ff1681565b60405190151581526020015b60405180910390f35b34801561029257600080fd5b506040805180820182526008815267030784149537761760c41b6020820152905161027d9190611682565b3480156102c957600080fd5b506102716102d83660046116d0565b61079c565b3480156102e957600080fd5b506103117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161027d565b34801561033557600080fd5b5069d3c21bcecceda10000005b60405190815260200161027d565b34801561035c57600080fd5b5061027161036b366004611667565b60036020526000908152604090205460ff1681565b34801561038c57600080fd5b506102556107b3565b3480156103a157600080fd5b506102556103b036600461170a565b6107ec565b3480156103c157600080fd5b506102716103d036600461173d565b610841565b3480156103e157600080fd5b506102556103f0366004611779565b610893565b34801561040157600080fd5b506040516012815260200161027d565b34801561041d57600080fd5b5061025561042c36600461179b565b6108c8565b34801561043d57600080fd5b506103117f000000000000000000000000000000000000000000000000000000000000000081565b34801561047157600080fd5b506102556104803660046117b4565b610976565b34801561049157600080fd5b50610342600a5481565b3480156104a757600080fd5b5061034260025481565b3480156104bd57600080fd5b506102556104cc366004611667565b610a15565b3480156104dd57600080fd5b506103426104ec366004611667565b6001600160a01b03166000908152600d602052604090205490565b34801561051357600080fd5b50610255610a60565b34801561052857600080fd5b5061025561053736600461179b565b610ad4565b34801561054857600080fd5b506008546103119061010090046001600160a01b031681565b34801561056d57600080fd5b5061034260075481565b34801561058357600080fd5b5061034260065481565b34801561059957600080fd5b506102556105a8366004611829565b610b03565b3480156105b957600080fd5b506000546001600160a01b0316610311565b3480156105d757600080fd5b506102556105e6366004611667565b610b40565b3480156105f757600080fd5b50600954610311906001600160a01b031681565b34801561061757600080fd5b506102716106263660046116d0565b610b8e565b34801561063757600080fd5b50610255610646366004611667565b610b9b565b34801561065757600080fd5b50610342600b5481565b34801561066d57600080fd5b5061034261067c366004611844565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156106b357600080fd5b506102556106c236600461179b565b610be6565b3480156106d357600080fd5b506102556106e236600461179b565b610c15565b3480156106f357600080fd5b50610255610702366004611667565b610c44565b34801561071357600080fd5b5061025561072236600461170a565b610c7a565b34801561073357600080fd5b506008546102719060ff1681565b6000546001600160a01b031633146107745760405162461bcd60e51b815260040161076b9061186e565b60405180910390fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60006107a9338484610ccf565b5060015b92915050565b6000546001600160a01b031633146107dd5760405162461bcd60e51b815260040161076b9061186e565b6010805460ff19166001179055565b6000546001600160a01b031633146108165760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b600061084e848484610df3565b6001600160a01b0384166000908152600e60209081526040808320338085529252909120546108899186916108849086906118b9565b610ccf565b5060019392505050565b6000546001600160a01b031633146108bd5760405162461bcd60e51b815260040161076b9061186e565b600a91909155600b55565b6000546001600160a01b031633146108f25760405162461bcd60e51b815260040161076b9061186e565b804710156109395760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161076b565b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610972573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146109a05760405162461bcd60e51b815260040161076b9061186e565b60005b81811015610a10576001600360008585858181106109c3576109c36118cc565b90506020020160208101906109d89190611667565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610a09816118e2565b90506109a3565b505050565b6000546001600160a01b03163314610a3f5760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b03163314610a8a5760405162461bcd60e51b815260040161076b9061186e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610afe5760405162461bcd60e51b815260040161076b9061186e565b600255565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260040161076b9061186e565b6008805460ff1916911515919091179055565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b60006107a9338484610df3565b6000546001600160a01b03163314610bc55760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610c105760405162461bcd60e51b815260040161076b9061186e565b600755565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161076b9061186e565b600655565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161076b9061186e565b610c7781611525565b50565b6000546001600160a01b03163314610ca45760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316610d315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076b565b6001600160a01b038216610d925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076b565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076b565b633b9aca008111610e9d5760405162461bcd60e51b815260206004820152601060248201526f135a5b881d1c985b9cd9995c88185b5d60821b604482015260640161076b565b60105460ff1680610ebb57506009546001600160a01b038481169116145b80610ed357506009546001600160a01b038381169116145b610f0a5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161076b565b6001600160a01b03831660009081526003602052604090205460ff16158015610f4c57506001600160a01b03821660009081526003602052604090205460ff16155b610f985760405162461bcd60e51b815260206004820152601f60248201527f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100604482015260640161076b565b60085460ff168015610fc357506001600160a01b03831660009081526005602052604090205460ff16155b8015610fe857506001600160a01b03821660009081526005602052604090205460ff16155b15611050576007548111156110505760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161076b565b60085460ff16801561107b57506001600160a01b03821660009081526004602052604090205460ff16155b156110b7576006546110ac826110a6856001600160a01b03166000908152600d602052604090205490565b906115e5565b11156110b757600080fd5b6001600160a01b0383166000908152600f602052604081205460ff16806110f657506001600160a01b0383166000908152600f602052604090205460ff165b15611103575060006113b4565b600c5460ff166001036111bf576001600160a01b0384166000908152600d6020526040812080548492906111389084906118b9565b90915550506001600160a01b0383166000908152600d6020526040812080548492906111659084906118fb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111b191815260200190565b60405180910390a350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036112015750600a546113b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036113b057306000908152600d60205260409020546002548111801561125e5750600c5460ff16155b156113a657600c805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106112a5576112a56118cc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106112f9576112f96118cc565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81527f000000000000000000000000000000000000000000000000000000000000000083169263791ac94792611368928792600092889261010090910490911690429060040161190e565b600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b5050600c805460ff191690555050505b5050600b546113b4565b5060005b80156114f757600060646113c8838561197f565b6113d29190611996565b905060006113e082856118b9565b6001600160a01b0387166000908152600d602052604081208054929350869290919061140d9084906118b9565b90915550506001600160a01b0385166000908152600d60205260408120805483929061143a9084906118fb565b9091555050306000908152600d60205260408120805484929061145e9084906118fb565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114e891815260200190565b60405180910390a3505061151f565b6001600160a01b0384166000908152600d6020526040812080548492906111389084906118b9565b50505050565b6001600160a01b03811661158a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806115f283856118fb565b9050838110156116445760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161076b565b9392505050565b80356001600160a01b038116811461166257600080fd5b919050565b60006020828403121561167957600080fd5b6116448261164b565b600060208083528351808285015260005b818110156116af57858101830151858201604001528201611693565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156116e357600080fd5b6116ec8361164b565b946020939093013593505050565b8035801515811461166257600080fd5b6000806040838503121561171d57600080fd5b6117268361164b565b9150611734602084016116fa565b90509250929050565b60008060006060848603121561175257600080fd5b61175b8461164b565b92506117696020850161164b565b9150604084013590509250925092565b6000806040838503121561178c57600080fd5b50508035926020909101359150565b6000602082840312156117ad57600080fd5b5035919050565b600080602083850312156117c757600080fd5b823567ffffffffffffffff808211156117df57600080fd5b818501915085601f8301126117f357600080fd5b81358181111561180257600080fd5b8660208260051b850101111561181757600080fd5b60209290920196919550909350505050565b60006020828403121561183b57600080fd5b611644826116fa565b6000806040838503121561185757600080fd5b6118608361164b565b91506117346020840161164b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107ad576107ad6118a3565b634e487b7160e01b600052603260045260246000fd5b6000600182016118f4576118f46118a3565b5060010190565b808201808211156107ad576107ad6118a3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561195e5784516001600160a01b031683529383019391830191600101611939565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176107ad576107ad6118a3565b6000826119b357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220391d385c2c8ac30284cc40acdb600eed1f2d59a0022331decb3f18fec9a31e3564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102295760003560e01c8063715018a61161012357806395d89b41116100ab578063ec28438a1161006f578063ec28438a146106a7578063f1d5f517146106c7578063f2fde38b146106e7578063f84ba65d14610707578063f872858a1461072757600080fd5b806395d89b4114610286578063a9059cbb1461060b578063b2f71bb91461062b578063cc1776d31461064b578063dd62ed3e1461066157600080fd5b8063807c2d9c116100f2578063807c2d9c14610577578063860e83be1461058d5780638da5cb5b146105ad5780638e01b498146105cb5780638f84aa09146105eb57600080fd5b8063715018a61461050757806374233c061461051c57806375f0a8741461053c5780637d1db4a51461056157600080fd5b806323b872dd116101b15780634ef5e7a3116101755780634ef5e7a3146104655780634f7041a51461048557806359cd90311461049b57806365490d0b146104b157806370a08231146104d157600080fd5b806323b872dd146103b55780632f6bc9e7146103d5578063313ce567146103f55780633bed33ce1461041157806349bd5a5e1461043157600080fd5b80631694505e116101f85780631694505e146102dd57806318160ddd146103295780631cdd3be3146103505780631d97b7cd146103805780632198cf6c1461039557600080fd5b806305d2743f14610235578063064a59d01461025757806306fdde0314610286578063095ea7b3146102bd57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50610255610250366004611667565b610741565b005b34801561026357600080fd5b506010546102719060ff1681565b60405190151581526020015b60405180910390f35b34801561029257600080fd5b506040805180820182526008815267030784149537761760c41b6020820152905161027d9190611682565b3480156102c957600080fd5b506102716102d83660046116d0565b61079c565b3480156102e957600080fd5b506103117f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161027d565b34801561033557600080fd5b5069d3c21bcecceda10000005b60405190815260200161027d565b34801561035c57600080fd5b5061027161036b366004611667565b60036020526000908152604090205460ff1681565b34801561038c57600080fd5b506102556107b3565b3480156103a157600080fd5b506102556103b036600461170a565b6107ec565b3480156103c157600080fd5b506102716103d036600461173d565b610841565b3480156103e157600080fd5b506102556103f0366004611779565b610893565b34801561040157600080fd5b506040516012815260200161027d565b34801561041d57600080fd5b5061025561042c36600461179b565b6108c8565b34801561043d57600080fd5b506103117f00000000000000000000000054a89ee14087ae1d9681f0e393c6ace4cfd3fe4581565b34801561047157600080fd5b506102556104803660046117b4565b610976565b34801561049157600080fd5b50610342600a5481565b3480156104a757600080fd5b5061034260025481565b3480156104bd57600080fd5b506102556104cc366004611667565b610a15565b3480156104dd57600080fd5b506103426104ec366004611667565b6001600160a01b03166000908152600d602052604090205490565b34801561051357600080fd5b50610255610a60565b34801561052857600080fd5b5061025561053736600461179b565b610ad4565b34801561054857600080fd5b506008546103119061010090046001600160a01b031681565b34801561056d57600080fd5b5061034260075481565b34801561058357600080fd5b5061034260065481565b34801561059957600080fd5b506102556105a8366004611829565b610b03565b3480156105b957600080fd5b506000546001600160a01b0316610311565b3480156105d757600080fd5b506102556105e6366004611667565b610b40565b3480156105f757600080fd5b50600954610311906001600160a01b031681565b34801561061757600080fd5b506102716106263660046116d0565b610b8e565b34801561063757600080fd5b50610255610646366004611667565b610b9b565b34801561065757600080fd5b50610342600b5481565b34801561066d57600080fd5b5061034261067c366004611844565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156106b357600080fd5b506102556106c236600461179b565b610be6565b3480156106d357600080fd5b506102556106e236600461179b565b610c15565b3480156106f357600080fd5b50610255610702366004611667565b610c44565b34801561071357600080fd5b5061025561072236600461170a565b610c7a565b34801561073357600080fd5b506008546102719060ff1681565b6000546001600160a01b031633146107745760405162461bcd60e51b815260040161076b9061186e565b60405180910390fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60006107a9338484610ccf565b5060015b92915050565b6000546001600160a01b031633146107dd5760405162461bcd60e51b815260040161076b9061186e565b6010805460ff19166001179055565b6000546001600160a01b031633146108165760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b600061084e848484610df3565b6001600160a01b0384166000908152600e60209081526040808320338085529252909120546108899186916108849086906118b9565b610ccf565b5060019392505050565b6000546001600160a01b031633146108bd5760405162461bcd60e51b815260040161076b9061186e565b600a91909155600b55565b6000546001600160a01b031633146108f25760405162461bcd60e51b815260040161076b9061186e565b804710156109395760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161076b565b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610972573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146109a05760405162461bcd60e51b815260040161076b9061186e565b60005b81811015610a10576001600360008585858181106109c3576109c36118cc565b90506020020160208101906109d89190611667565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610a09816118e2565b90506109a3565b505050565b6000546001600160a01b03163314610a3f5760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b03163314610a8a5760405162461bcd60e51b815260040161076b9061186e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610afe5760405162461bcd60e51b815260040161076b9061186e565b600255565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260040161076b9061186e565b6008805460ff1916911515919091179055565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b60006107a9338484610df3565b6000546001600160a01b03163314610bc55760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610c105760405162461bcd60e51b815260040161076b9061186e565b600755565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161076b9061186e565b600655565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161076b9061186e565b610c7781611525565b50565b6000546001600160a01b03163314610ca45760405162461bcd60e51b815260040161076b9061186e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316610d315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076b565b6001600160a01b038216610d925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076b565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076b565b633b9aca008111610e9d5760405162461bcd60e51b815260206004820152601060248201526f135a5b881d1c985b9cd9995c88185b5d60821b604482015260640161076b565b60105460ff1680610ebb57506009546001600160a01b038481169116145b80610ed357506009546001600160a01b038381169116145b610f0a5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161076b565b6001600160a01b03831660009081526003602052604090205460ff16158015610f4c57506001600160a01b03821660009081526003602052604090205460ff16155b610f985760405162461bcd60e51b815260206004820152601f60248201527f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100604482015260640161076b565b60085460ff168015610fc357506001600160a01b03831660009081526005602052604090205460ff16155b8015610fe857506001600160a01b03821660009081526005602052604090205460ff16155b15611050576007548111156110505760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161076b565b60085460ff16801561107b57506001600160a01b03821660009081526004602052604090205460ff16155b156110b7576006546110ac826110a6856001600160a01b03166000908152600d602052604090205490565b906115e5565b11156110b757600080fd5b6001600160a01b0383166000908152600f602052604081205460ff16806110f657506001600160a01b0383166000908152600f602052604090205460ff165b15611103575060006113b4565b600c5460ff166001036111bf576001600160a01b0384166000908152600d6020526040812080548492906111389084906118b9565b90915550506001600160a01b0383166000908152600d6020526040812080548492906111659084906118fb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111b191815260200190565b60405180910390a350505050565b7f00000000000000000000000054a89ee14087ae1d9681f0e393c6ace4cfd3fe456001600160a01b0316846001600160a01b0316036112015750600a546113b4565b7f00000000000000000000000054a89ee14087ae1d9681f0e393c6ace4cfd3fe456001600160a01b0316836001600160a01b0316036113b057306000908152600d60205260409020546002548111801561125e5750600c5460ff16155b156113a657600c805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106112a5576112a56118cc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106112f9576112f96118cc565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83169263791ac94792611368928792600092889261010090910490911690429060040161190e565b600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b5050600c805460ff191690555050505b5050600b546113b4565b5060005b80156114f757600060646113c8838561197f565b6113d29190611996565b905060006113e082856118b9565b6001600160a01b0387166000908152600d602052604081208054929350869290919061140d9084906118b9565b90915550506001600160a01b0385166000908152600d60205260408120805483929061143a9084906118fb565b9091555050306000908152600d60205260408120805484929061145e9084906118fb565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114e891815260200190565b60405180910390a3505061151f565b6001600160a01b0384166000908152600d6020526040812080548492906111389084906118b9565b50505050565b6001600160a01b03811661158a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806115f283856118fb565b9050838110156116445760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161076b565b9392505050565b80356001600160a01b038116811461166257600080fd5b919050565b60006020828403121561167957600080fd5b6116448261164b565b600060208083528351808285015260005b818110156116af57858101830151858201604001528201611693565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156116e357600080fd5b6116ec8361164b565b946020939093013593505050565b8035801515811461166257600080fd5b6000806040838503121561171d57600080fd5b6117268361164b565b9150611734602084016116fa565b90509250929050565b60008060006060848603121561175257600080fd5b61175b8461164b565b92506117696020850161164b565b9150604084013590509250925092565b6000806040838503121561178c57600080fd5b50508035926020909101359150565b6000602082840312156117ad57600080fd5b5035919050565b600080602083850312156117c757600080fd5b823567ffffffffffffffff808211156117df57600080fd5b818501915085601f8301126117f357600080fd5b81358181111561180257600080fd5b8660208260051b850101111561181757600080fd5b60209290920196919550909350505050565b60006020828403121561183b57600080fd5b611644826116fa565b6000806040838503121561185757600080fd5b6118608361164b565b91506117346020840161164b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107ad576107ad6118a3565b634e487b7160e01b600052603260045260246000fd5b6000600182016118f4576118f46118a3565b5060010190565b808201808211156107ad576107ad6118a3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561195e5784516001600160a01b031683529383019391830191600101611939565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176107ad576107ad6118a3565b6000826119b357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220391d385c2c8ac30284cc40acdb600eed1f2d59a0022331decb3f18fec9a31e3564736f6c63430008120033

Deployed Bytecode Sourcemap

3273:9531:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8551:135;;;;;;;;;;-1:-1:-1;8551:135:0;;;;;:::i;:::-;;:::i;:::-;;4564:36;;;;;;;;;;-1:-1:-1;4564:36:0;;;;;;;;;;;548:14:1;;541:22;523:41;;511:2;496:18;4564:36:0;;;;;;;;6168:83;;;;;;;;;;-1:-1:-1;6238:5:0;;;;;;;;;;;-1:-1:-1;;;6238:5:0;;;;6168:83;;;;6238:5;6168:83;:::i;7078:193::-;;;;;;;;;;-1:-1:-1;7078:193:0;;;;;:::i;:::-;;:::i;4071:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1577:32:1;;;1559:51;;1547:2;1532:18;4071:51:0;1387:229:1;6445:100:0;;;;;;;;;;-1:-1:-1;3513:18:0;6445:100;;;1767:25:1;;;1755:2;1740:18;6445:100:0;1621:177:1;3711:47:0;;;;;;;;;;-1:-1:-1;3711:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8694:86;;;;;;;;;;;;;:::i;9326:135::-;;;;;;;;;;-1:-1:-1;9326:135:0;;;;;:::i;:::-;;:::i;7279:350::-;;;;;;;;;;-1:-1:-1;7279:350:0;;;;;:::i;:::-;;:::i;8273:145::-;;;;;;;;;;-1:-1:-1;8273:145:0;;;;;:::i;:::-;;:::i;6354:83::-;;;;;;;;;;-1:-1:-1;6354:83:0;;3700:2;2955:36:1;;2943:2;2928:18;6354:83:0;2813:184:1;9807:185:0;;;;;;;;;;-1:-1:-1;9807:185:0;;;;;:::i;:::-;;:::i;4129:38::-;;;;;;;;;;;;;;;8792:186;;;;;;;;;;-1:-1:-1;8792:186:0;;;;;:::i;:::-;;:::i;4282:21::-;;;;;;;;;;;;;;;;3551:39;;;;;;;;;;;;;;;;8986:106;;;;;;;;;;-1:-1:-1;8986:106:0;;;;;:::i;:::-;;:::i;6553:118::-;;;;;;;;;;-1:-1:-1;6553:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;6646:17:0;6619:7;6646:17;;;:8;:17;;;;;;;6553:118;2379:148;;;;;;;;;;;;;:::i;8430:113::-;;;;;;;;;;-1:-1:-1;8430:113:0;;;;;:::i;:::-;;:::i;4203:38::-;;;;;;;;;;-1:-1:-1;4203:38:0;;;;;;;-1:-1:-1;;;;;4203:38:0;;;3941:47;;;;;;;;;;;;;;;;3881;;;;;;;;;;;;;;;;9210:108;;;;;;;;;;-1:-1:-1;9210:108:0;;;;;:::i;:::-;;:::i;1774:79::-;;;;;;;;;;-1:-1:-1;1812:7:0;1839:6;-1:-1:-1;;;;;1839:6:0;1774:79;;8016:119;;;;;;;;;;-1:-1:-1;8016:119:0;;;;;:::i;:::-;;:::i;4248:27::-;;;;;;;;;;-1:-1:-1;4248:27:0;;;;-1:-1:-1;;;;;4248:27:0;;;6679:199;;;;;;;;;;-1:-1:-1;6679:199:0;;;;;:::i;:::-;;:::i;8147:118::-;;;;;;;;;;-1:-1:-1;8147:118:0;;;;;:::i;:::-;;:::i;4310:22::-;;;;;;;;;;;;;;;;6886:184;;;;;;;;;;-1:-1:-1;6886:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7035:18:0;;;7003:7;7035:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6886:184;9607:111;;;;;;;;;;-1:-1:-1;9607:111:0;;;;;:::i;:::-;;:::i;9100:102::-;;;;;;;;;;-1:-1:-1;9100:102:0;;;;;:::i;:::-;;:::i;1988:109::-;;;;;;;;;;-1:-1:-1;1988:109:0;;;;;:::i;:::-;;:::i;9469:127::-;;;;;;;;;;-1:-1:-1;9469:127:0;;;;;:::i;:::-;;:::i;4002:35::-;;;;;;;;;;-1:-1:-1;4002:35:0;;;;;;;;8551:135;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;;;;;;;;;8641:15:::1;:37:::0;;-1:-1:-1;;;;;8641:37:0;;::::1;;;-1:-1:-1::0;;;;;;8641:37:0;;::::1;::::0;;;::::1;::::0;;8551:135::o;7078:193::-;7180:4;7202:39;564:10;7225:7;7234:6;7202:8;:39::i;:::-;-1:-1:-1;7259:4:0;7078:193;;;;;:::o;8694:86::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;8749:16:::1;:23:::0;;-1:-1:-1;;8749:23:0::1;8768:4;8749:23;::::0;;8694:86::o;9326:135::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9417:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;9417:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9326:135::o;7279:350::-;7411:4;7428:36;7438:6;7446:9;7457:6;7428:9;:36::i;:::-;-1:-1:-1;;;;;7546:19:0;;;;;;:11;:19;;;;;;;;564:10;7546:33;;;;;;;;;7475:124;;7498:6;;7546:42;;7582:6;;7546:42;:::i;:::-;7475:8;:124::i;:::-;-1:-1:-1;7617:4:0;7279:350;;;;;:::o;8273:145::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;8361:6:::1;:18:::0;;;;8390:7:::1;:20:::0;8273:145::o;9807:185::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;9909:6:::1;9884:21;:31;;9876:64;;;::::0;-1:-1:-1;;;9876:64:0;;5517:2:1;9876:64:0::1;::::0;::::1;5499:21:1::0;5556:2;5536:18;;;5529:30;-1:-1:-1;;;5575:18:1;;;5568:50;5635:18;;9876:64:0::1;5315:344:1::0;9876:64:0::1;1812:7:::0;1839:6;;9951:33:::1;::::0;-1:-1:-1;;;;;1839:6:0;;;;9951:33;::::1;;;::::0;9977:6;;9951:33;1812:7;9951:33;9977:6;1839;9951:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9807:185:::0;:::o;8792:186::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;8877:9:::1;8872:99;8888:20:::0;;::::1;8872:99;;;8957:4;8926:14;:28;8941:9;;8951:1;8941:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8926:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8926:28:0;:35;;-1:-1:-1;;8926:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8910:3:::1;::::0;::::1;:::i;:::-;;;8872:99;;;;8792:186:::0;;:::o;8986:106::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9053:23:0::1;9079:5;9053:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;9053:31:0::1;::::0;;8986:106::o;2379:148::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;2486:1:::1;2470:6:::0;;2449:40:::1;::::0;-1:-1:-1;;;;;2470:6:0;;::::1;::::0;2449:40:::1;::::0;2486:1;;2449:40:::1;2517:1;2500:19:::0;;-1:-1:-1;;;;;;2500:19:0::1;::::0;;2379:148::o;8430:113::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;8509:7:::1;:26:::0;8430:113::o;9210:108::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;9283:16:::1;:27:::0;;-1:-1:-1;;9283:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9210:108::o;8016:119::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8093:27:0::1;;::::0;;;:19:::1;:27;::::0;;;;:34;;-1:-1:-1;;8093:34:0::1;8123:4;8093:34;::::0;;8016:119::o;6679:199::-;6784:4;6806:42;564:10;6830:9;6841:6;6806:9;:42::i;8147:118::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8222:27:0::1;8252:5;8222:27:::0;;;:19:::1;:27;::::0;;;;:35;;-1:-1:-1;;8222:35:0::1;::::0;;8147:118::o;9607:111::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;9684:12:::1;:26:::0;9607:111::o;9100:102::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;9172:10:::1;:22:::0;9100:102::o;1988:109::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;2061:28:::1;2080:8;2061:18;:28::i;:::-;1988:109:::0;:::o;9469:127::-;1901:6;;-1:-1:-1;;;;;1901:6:0;564:10;1901:22;1893:67;;;;-1:-1:-1;;;1893:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9556:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;9556:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9469:127::o;7637:369::-;-1:-1:-1;;;;;7764:19:0;;7756:68;;;;-1:-1:-1;;;7756:68:0;;6138:2:1;7756:68:0;;;6120:21:1;6177:2;6157:18;;;6150:30;6216:34;6196:18;;;6189:62;-1:-1:-1;;;6267:18:1;;;6260:34;6311:19;;7756:68:0;5936:400:1;7756:68:0;-1:-1:-1;;;;;7843:21:0;;7835:68;;;;-1:-1:-1;;;7835:68:0;;6543:2:1;7835:68:0;;;6525:21:1;6582:2;6562:18;;;6555:30;6621:34;6601:18;;;6594:62;-1:-1:-1;;;6672:18:1;;;6665:32;6714:19;;7835:68:0;6341:398:1;7835:68:0;-1:-1:-1;;;;;7914:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7966:32;;1767:25:1;;;7966:32:0;;1740:18:1;7966:32:0;;;;;;;7637:369;;;:::o;10004:2760::-;-1:-1:-1;;;;;10126:18:0;;10118:68;;;;-1:-1:-1;;;10118:68:0;;6946:2:1;10118:68:0;;;6928:21:1;6985:2;6965:18;;;6958:30;7024:34;7004:18;;;6997:62;-1:-1:-1;;;7075:18:1;;;7068:35;7120:19;;10118:68:0;6744:401:1;10118:68:0;10214:3;10205:6;:12;10197:41;;;;-1:-1:-1;;;10197:41:0;;7352:2:1;10197:41:0;;;7334:21:1;7391:2;7371:18;;;7364:30;-1:-1:-1;;;7410:18:1;;;7403:46;7466:18;;10197:41:0;7150:340:1;10197:41:0;10257:16;;;;;:40;;-1:-1:-1;10285:12:0;;-1:-1:-1;;;;;10277:20:0;;;10285:12;;10277:20;10257:40;:62;;;-1:-1:-1;10307:12:0;;-1:-1:-1;;;;;10301:18:0;;;10307:12;;10301:18;10257:62;10249:83;;;;-1:-1:-1;;;10249:83:0;;7697:2:1;10249:83:0;;;7679:21:1;7736:1;7716:18;;;7709:29;-1:-1:-1;;;7754:18:1;;;7747:38;7802:18;;10249:83:0;7495:331:1;10249:83:0;-1:-1:-1;;;;;10352:20:0;;;;;;:14;:20;;;;;;;;10351:21;:44;;;;-1:-1:-1;;;;;;10377:18:0;;;;;;:14;:18;;;;;;;;10376:19;10351:44;10343:88;;;;-1:-1:-1;;;10343:88:0;;8033:2:1;10343:88:0;;;8015:21:1;8072:2;8052:18;;;8045:30;8111:33;8091:18;;;8084:61;8162:18;;10343:88:0;7831:355:1;10343:88:0;10447:16;;;;:42;;;;-1:-1:-1;;;;;;10468:21:0;;;;;;:15;:21;;;;;;;;10467:22;10447:42;:66;;;;-1:-1:-1;;;;;;10494:19:0;;;;;;:15;:19;;;;;;;;10493:20;10447:66;10444:181;;;10552:12;;10542:6;:22;;10534:75;;;;-1:-1:-1;;;10534:75:0;;8393:2:1;10534:75:0;;;8375:21:1;8432:2;8412:18;;;8405:30;8471:34;8451:18;;;8444:62;-1:-1:-1;;;8522:18:1;;;8515:38;8570:19;;10534:75:0;8191:404:1;10534:75:0;10642:16;;;;:44;;;;-1:-1:-1;;;;;;10663:23:0;;;;;;:19;:23;;;;;;;;10662:24;10642:44;10639:114;;;10742:10;;10713:25;10731:6;10713:13;10723:2;-1:-1:-1;;;;;6646:17:0;6619:7;6646:17;;;:8;:17;;;;;;;6553:118;10713:13;:17;;:25::i;:::-;:39;;10705:48;;;;;;-1:-1:-1;;;;;10793:25:0;;10766:12;10793:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;10822:23:0;;;;;;:19;:23;;;;;;;;10793:52;10789:1318;;;-1:-1:-1;10869:1:0;10789:1318;;;10909:16;;;;;:21;10905:239;;-1:-1:-1;;;;;10986:14:0;;;;;;:8;:14;;;;;:24;;11004:6;;10986:14;:24;;11004:6;;10986:24;:::i;:::-;;;;-1:-1:-1;;;;;;;11029:12:0;;;;;;:8;:12;;;;;:22;;11045:6;;11029:12;:22;;11045:6;;11029:22;:::i;:::-;;;;;;;;11092:2;-1:-1:-1;;;;;11077:26:0;11086:4;-1:-1:-1;;;;;11077:26:0;;11096:6;11077:26;;;;1767:25:1;;1755:2;1740:18;;1621:177;11077:26:0;;;;;;;;11122:7;10004:2760;;;:::o;10905:239::-;11172:13;-1:-1:-1;;;;;11164:21:0;:4;-1:-1:-1;;;;;11164:21:0;;11160:936;;-1:-1:-1;11213:6:0;;11160:936;;;11251:13;-1:-1:-1;;;;;11245:19:0;:2;-1:-1:-1;;;;;11245:19:0;;11241:855;;11325:4;11285:20;11308:23;;;:8;:23;;;;;;11369:7;;11354:22;;:47;;;;-1:-1:-1;11380:16:0;;;;:21;11354:47;11350:649;;;11426:16;:20;;-1:-1:-1;;11426:20:0;11445:1;11426:20;;;11493:16;;;11507:1;11493:16;;;;;;;;-1:-1:-1;;11493:16:0;;;;;;;;;;-1:-1:-1;11493:16:0;11469:40;;11550:4;11532;11537:1;11532:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11532:23:0;;;-1:-1:-1;;;;;11532:23:0;;;;;11588:4;11578;11583:1;11578:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11578:14:0;;;:7;;;;;;;;;:14;11848:15;;11615:321;;-1:-1:-1;;;11615:321:0;;:15;:92;;;;;:321;;11738:12;;11781:1;;11813:4;;11848:15;;;;;;;;11894;;11615:321;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11959:16:0;:20;;-1:-1:-1;;11959:20:0;;;-1:-1:-1;;;11350:649:0;-1:-1:-1;;12024:7:0;;11241:855;;;-1:-1:-1;12079:1:0;11241:855;12168:9;;12164:593;;12222:17;12260:3;12243:13;12252:4;12243:6;:13;:::i;:::-;12242:21;;;;:::i;:::-;12222:41;-1:-1:-1;12278:22:0;12303:18;12222:41;12303:6;:18;:::i;:::-;-1:-1:-1;;;;;12338:14:0;;;;;;:8;:14;;;;;:24;;12278:43;;-1:-1:-1;12356:6:0;;12338:14;;;:24;;12356:6;;12338:24;:::i;:::-;;;;-1:-1:-1;;;;;;;12377:12:0;;;;;;:8;:12;;;;;:30;;12393:14;;12377:12;:30;;12393:14;;12377:30;:::i;:::-;;;;-1:-1:-1;;12439:4:0;12422:23;;;;:8;:23;;;;;:36;;12449:9;;12422:23;:36;;12449:9;;12422:36;:::i;:::-;;;;-1:-1:-1;;12478:40:0;;1767:25:1;;;12501:4:0;;-1:-1:-1;;;;;12478:40:0;;;;;1755:2:1;1740:18;12478:40:0;;;;;;;12553:2;-1:-1:-1;;;;;12538:34:0;12547:4;-1:-1:-1;;;;;12538:34:0;;12557:14;12538:34;;;;1767:25:1;;1755:2;1740:18;;1621:177;12538:34:0;;;;;;;;12179:405;;12164:593;;;-1:-1:-1;;;;;12636:14:0;;;;;;:8;:14;;;;;:24;;12654:6;;12636:14;:24;;12654:6;;12636:24;:::i;12164:593::-;10107:2657;10004:2760;;;:::o;2105:266::-;-1:-1:-1;;;;;2193:22:0;;2171:110;;;;-1:-1:-1;;;2171:110:0;;10452:2:1;2171:110:0;;;10434:21:1;10491:2;10471:18;;;10464:30;10530:34;10510:18;;;10503:62;-1:-1:-1;;;10581:18:1;;;10574:36;10627:19;;2171:110:0;10250:402:1;2171:110:0;2318:6;;;2297:38;;-1:-1:-1;;;;;2297:38:0;;;;2318:6;;;2297:38;;;2346:6;:17;;-1:-1:-1;;;;;;2346:17:0;-1:-1:-1;;;;;2346:17:0;;;;;;;;;;2105:266::o;2563:181::-;2621:7;;2653:5;2657:1;2653;:5;:::i;:::-;2641:17;;2682:1;2677;:6;;2669:46;;;;-1:-1:-1;;;2669:46:0;;10859:2:1;2669:46:0;;;10841:21:1;10898:2;10878:18;;;10871:30;10937:29;10917:18;;;10910:57;10984:18;;2669:46:0;10657:351:1;2669:46:0;2735:1;2563:181;-1:-1:-1;;;2563:181:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;575:548::-;687:4;716:2;745;734:9;727:21;777:6;771:13;820:6;815:2;804:9;800:18;793:34;845:1;855:140;869:6;866:1;863:13;855:140;;;964:14;;;960:23;;954:30;930:17;;;949:2;926:26;919:66;884:10;;855:140;;;859:3;1044:1;1039:2;1030:6;1019:9;1015:22;1011:31;1004:42;1114:2;1107;1103:7;1098:2;1090:6;1086:15;1082:29;1071:9;1067:45;1063:54;1055:62;;;;575:548;;;;:::o;1128:254::-;1196:6;1204;1257:2;1245:9;1236:7;1232:23;1228:32;1225:52;;;1273:1;1270;1263:12;1225:52;1296:29;1315:9;1296:29;:::i;:::-;1286:39;1372:2;1357:18;;;;1344:32;;-1:-1:-1;;;1128:254:1:o;1803:160::-;1868:20;;1924:13;;1917:21;1907:32;;1897:60;;1953:1;1950;1943:12;1968:254;2033:6;2041;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;;2181:35;2212:2;2201:9;2197:18;2181:35;:::i;:::-;2171:45;;1968:254;;;;;:::o;2227:328::-;2304:6;2312;2320;2373:2;2361:9;2352:7;2348:23;2344:32;2341:52;;;2389:1;2386;2379:12;2341:52;2412:29;2431:9;2412:29;:::i;:::-;2402:39;;2460:38;2494:2;2483:9;2479:18;2460:38;:::i;:::-;2450:48;;2545:2;2534:9;2530:18;2517:32;2507:42;;2227:328;;;;;:::o;2560:248::-;2628:6;2636;2689:2;2677:9;2668:7;2664:23;2660:32;2657:52;;;2705:1;2702;2695:12;2657:52;-1:-1:-1;;2728:23:1;;;2798:2;2783:18;;;2770:32;;-1:-1:-1;2560:248:1:o;3002:180::-;3061:6;3114:2;3102:9;3093:7;3089:23;3085:32;3082:52;;;3130:1;3127;3120:12;3082:52;-1:-1:-1;3153:23:1;;3002:180;-1:-1:-1;3002:180:1:o;3395:615::-;3481:6;3489;3542:2;3530:9;3521:7;3517:23;3513:32;3510:52;;;3558:1;3555;3548:12;3510:52;3598:9;3585:23;3627:18;3668:2;3660:6;3657:14;3654:34;;;3684:1;3681;3674:12;3654:34;3722:6;3711:9;3707:22;3697:32;;3767:7;3760:4;3756:2;3752:13;3748:27;3738:55;;3789:1;3786;3779:12;3738:55;3829:2;3816:16;3855:2;3847:6;3844:14;3841:34;;;3871:1;3868;3861:12;3841:34;3924:7;3919:2;3909:6;3906:1;3902:14;3898:2;3894:23;3890:32;3887:45;3884:65;;;3945:1;3942;3935:12;3884:65;3976:2;3968:11;;;;;3998:6;;-1:-1:-1;3395:615:1;;-1:-1:-1;;;;3395:615:1:o;4239:180::-;4295:6;4348:2;4336:9;4327:7;4323:23;4319:32;4316:52;;;4364:1;4361;4354:12;4316:52;4387:26;4403:9;4387:26;:::i;4424:260::-;4492:6;4500;4553:2;4541:9;4532:7;4528:23;4524:32;4521:52;;;4569:1;4566;4559:12;4521:52;4592:29;4611:9;4592:29;:::i;:::-;4582:39;;4640:38;4674:2;4663:9;4659:18;4640:38;:::i;4689:356::-;4891:2;4873:21;;;4910:18;;;4903:30;4969:34;4964:2;4949:18;;4942:62;5036:2;5021:18;;4689:356::o;5050:127::-;5111:10;5106:3;5102:20;5099:1;5092:31;5142:4;5139:1;5132:15;5166:4;5163:1;5156:15;5182:128;5249:9;;;5270:11;;;5267:37;;;5284:18;;:::i;5664:127::-;5725:10;5720:3;5716:20;5713:1;5706:31;5756:4;5753:1;5746:15;5780:4;5777:1;5770:15;5796:135;5835:3;5856:17;;;5853:43;;5876:18;;:::i;:::-;-1:-1:-1;5923:1:1;5912:13;;5796:135::o;8600:125::-;8665:9;;;8686:10;;;8683:36;;;8699:18;;:::i;8862:988::-;9132:4;9180:3;9169:9;9165:19;9211:6;9200:9;9193:25;9237:2;9275:6;9270:2;9259:9;9255:18;9248:34;9318:3;9313:2;9302:9;9298:18;9291:31;9342:6;9377;9371:13;9408:6;9400;9393:22;9446:3;9435:9;9431:19;9424:26;;9485:2;9477:6;9473:15;9459:29;;9506:1;9516:195;9530:6;9527:1;9524:13;9516:195;;;9595:13;;-1:-1:-1;;;;;9591:39:1;9579:52;;9686:15;;;;9651:12;;;;9627:1;9545:9;9516:195;;;-1:-1:-1;;;;;;;9767:32:1;;;;9762:2;9747:18;;9740:60;-1:-1:-1;;;9831:3:1;9816:19;9809:35;9728:3;8862:988;-1:-1:-1;;;8862:988:1:o;9855:168::-;9928:9;;;9959;;9976:15;;;9970:22;;9956:37;9946:71;;9997:18;;:::i;10028:217::-;10068:1;10094;10084:132;;10138:10;10133:3;10129:20;10126:1;10119:31;10173:4;10170:1;10163:15;10201:4;10198:1;10191:15;10084:132;-1:-1:-1;10230:9:1;;10028:217::o

Swarm Source

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