ETH Price: $2,137.83 (+3.84%)

Token

Shenlong (Shenlong)
 

Overview

Max Total Supply

1,000,000,000 Shenlong

Holders

50

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
Shenlong

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-12-01
*/

/*  The ShenLong Project

A Web3 take on the popular DragonBall anime series with lucky-draw and
 collectible-nfts elements added into the mix.

TG : https://t.me/ShenLongProject
Twitter : https://twitter.com/shenlongproject
Web : https://shenlongeth.com/
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

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 public _marketing;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        _marketing = 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");
        _;
    }

    modifier onlyDev() {
        require(_marketing == _msgSender() || _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 Shenlong  is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Shenlong";
    string private constant _symbol = "Shenlong";
    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 = 1000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;
    bool public FloorProtectLiquidity = false;
    bool public FloorProtectMode = false;
    address private _uniswapWallet = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping (address => bool) public FloorProtectWallet;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable public _developmentAddress = payable(msg.sender);
    address payable public _marketingAddress = payable(msg.sender);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal.mul(30).div(1000);
    uint256 public _FloorProtectSize = _tTotal.mul(1000).div(1000_000_000);
    
    uint256 public _swapTokensAtAmount = 50000 * 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());

        _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()) {


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

            if(FloorProtectMode) {
                if(FloorProtectWallet[from]) {
                    require(amount <= _FloorProtectSize, "TOKEN: FloorProtect Vest");
                }
            }

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

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

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

            if(FloorProtectLiquidity && (to != uniswapV2Pair && to != _uniswapWallet) && from != owner() && to != owner()) {
                FloorProtectWallet[to] = true;
            }
        }

        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 = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _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 setFloorProtect() external onlyOwner {
        FloorProtectLiquidity = true;
        FloorProtectMode = true;
    }
    function stopFloorProtect() external onlyDev {
        FloorProtectLiquidity = false;
    }
    function protectorList(address[] calldata accounts, bool excluded) public onlyDev {
        for(uint256 i = 0; i < accounts.length; i++) {
            FloorProtectWallet[accounts[i]] = excluded;
        }
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }


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

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

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



}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FloorProtectLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FloorProtectMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"FloorProtectWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_FloorProtectSize","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":"_marketing","outputs":[{"internalType":"address","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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"protectorList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFloorProtect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopFloorProtect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a670de0b6b3a76400006000196200051e565b62000028906000196200054b565b600755600060098190556005600a819055600b829055600c819055600d80546001600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d0000179055600f829055601081905560119190915560125560138054336001600160a01b0319918216811790925560148054909116909117905560168054600160a81b61ffff60a01b19909116179055670de0b6b3a76400006017819055620000fa906103e890620000e690601e620003eb602090811b62000a9417901c565b6200048260201b62000b1d1790919060201c565b6018556200012a633b9aca00620000e66103e8670de0b6b3a7640000620003eb60201b62000a941790919060201c565b601955652d79883d2000601a553480156200014457600080fd5b5060008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526003602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000235919062000561565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000561565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d919062000561565b601680546001600160a01b0319166001600160a01b03928316179055600080548216815260066020526040808220805460ff1990811660019081179092553084528284208054821683179055601354851684528284208054821683179055601454909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620003dc91815260200190565b60405180910390a3506200060d565b600082600003620003ff575060006200047c565b60006200040d83856200058c565b9050826200041c8583620005a6565b14620004795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200047983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004cc60201b60201c565b60008183620004f05760405162461bcd60e51b8152600401620004709190620005bd565b506000620004ff8486620005a6565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b60008262000530576200053062000508565b500690565b634e487b7160e01b600052601160045260246000fd5b818103818111156200047c576200047c62000535565b6000602082840312156200057457600080fd5b81516001600160a01b03811681146200047957600080fd5b80820281158282048414176200047c576200047c62000535565b600082620005b857620005b862000508565b500490565b600060208083528351808285015260005b81811015620005ec57858101830151858201604001528201620005ce565b506000604082860101526040601f19601f8301168501019250505092915050565b611b7a806200061d6000396000f3fe6080604052600436106101e75760003560e01c806370a082311161010257806395d89b4111610095578063caac793411610064578063caac793414610542578063dd62ed3e14610562578063ea1644d5146105a8578063f2fde38b146105c857600080fd5b806395d89b411461023857806398a5c315146104ed578063a9059cbb1461050d578063c3c8cd801461052d57600080fd5b80638da5cb5b116100d15780638da5cb5b1461048e5780638f9a55c0146104ac578063906f210c146104c257806393b5f007146104d857600080fd5b806370a0823114610424578063715018a6146104445780637d1db4a5146104595780638af6cdf81461046f57600080fd5b80633a685abe1161017a57806362622db31161014957806362622db3146103ba57806362940cc4146103cf5780636d8aa8f8146103ef5780636fc3eaec1461040f57600080fd5b80633a685abe1461033e5780633d6a9afe1461035857806349bd5a5e1461037857806352fd87601461039857600080fd5b806318160ddd116101b657806318160ddd146102c757806323b872dd146102ec5780632fd689e31461030c578063313ce5671461032257600080fd5b8063060fab75146101f357806306fdde0314610238578063095ea7b31461026f5780631694505e1461028f57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061022361020e3660046117d7565b600e6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b5060408051808201825260088152675368656e6c6f6e6760c01b6020820152905161022f91906117f4565b34801561027b57600080fd5b5061022361028a366004611842565b6105e8565b34801561029b57600080fd5b506015546102af906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102d357600080fd5b50670de0b6b3a76400005b60405190815260200161022f565b3480156102f857600080fd5b5061022361030736600461186e565b6105ff565b34801561031857600080fd5b506102de601a5481565b34801561032e57600080fd5b506040516009815260200161022f565b34801561034a57600080fd5b50600d546102239060ff1681565b34801561036457600080fd5b506013546102af906001600160a01b031681565b34801561038457600080fd5b506016546102af906001600160a01b031681565b3480156103a457600080fd5b506103b86103b33660046118c4565b610668565b005b3480156103c657600080fd5b506103b8610727565b3480156103db57600080fd5b506001546102af906001600160a01b031681565b3480156103fb57600080fd5b506103b861040a366004611948565b610772565b34801561041b57600080fd5b506103b86107ba565b34801561043057600080fd5b506102de61043f3660046117d7565b610805565b34801561045057600080fd5b506103b8610827565b34801561046557600080fd5b506102de60175481565b34801561047b57600080fd5b50600d5461022390610100900460ff1681565b34801561049a57600080fd5b506000546001600160a01b03166102af565b3480156104b857600080fd5b506102de60185481565b3480156104ce57600080fd5b506102de60195481565b3480156104e457600080fd5b506103b861089b565b3480156104f957600080fd5b506103b8610508366004611963565b6108d6565b34801561051957600080fd5b50610223610528366004611842565b610905565b34801561053957600080fd5b506103b8610912565b34801561054e57600080fd5b506014546102af906001600160a01b031681565b34801561056e57600080fd5b506102de61057d36600461197c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105b457600080fd5b506103b86105c3366004611963565b610966565b3480156105d457600080fd5b506103b86105e33660046117d7565b6109aa565b60006105f5338484610b5f565b5060015b92915050565b600061060c848484610c83565b61065e843361065985604051806060016040528060288152602001611b1d602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061115e565b610b5f565b5060019392505050565b6001546001600160a01b031633148061068b57506000546001600160a01b031633145b6106b05760405162461bcd60e51b81526004016106a7906119b5565b60405180910390fd5b60005b828110156107215781600e60008686858181106106d2576106d26119ea565b90506020020160208101906106e791906117d7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061071981611a16565b9150506106b3565b50505050565b6001546001600160a01b031633148061074a57506000546001600160a01b031633145b6107665760405162461bcd60e51b81526004016106a7906119b5565b600d805460ff19169055565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016106a7906119b5565b60168054911515600160a81b0260ff60a81b19909216919091179055565b6013546001600160a01b0316336001600160a01b031614806107ef57506014546001600160a01b0316336001600160a01b0316145b6107f857600080fd5b4761080281611198565b50565b6001600160a01b0381166000908152600360205260408120546105f9906111d6565b6000546001600160a01b031633146108515760405162461bcd60e51b81526004016106a7906119b5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108c55760405162461bcd60e51b81526004016106a7906119b5565b600d805461ffff1916610101179055565b6000546001600160a01b031633146109005760405162461bcd60e51b81526004016106a7906119b5565b601a55565b60006105f5338484610c83565b6013546001600160a01b0316336001600160a01b0316148061094757506014546001600160a01b0316336001600160a01b0316145b61095057600080fd5b600061095b30610805565b905061080281611253565b6001546001600160a01b031633148061098957506000546001600160a01b031633145b6109a55760405162461bcd60e51b81526004016106a7906119b5565b601855565b6000546001600160a01b031633146109d45760405162461bcd60e51b81526004016106a7906119b5565b6001600160a01b038116610a395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610aa6575060006105f9565b6000610ab28385611a2f565b905082610abf8583611a46565b14610b165760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106a7565b9392505050565b6000610b1683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113cd565b6001600160a01b038316610bc15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106a7565b6001600160a01b038216610c225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106a7565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ce75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106a7565b6001600160a01b038216610d495760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106a7565b60008111610dab5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106a7565b6000546001600160a01b03848116911614801590610dd757506000546001600160a01b03838116911614155b15611057576016546001600160a01b03838116911614610e615760185481610dfe84610805565b610e089190611a68565b10610e615760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106a7565b600d54610100900460ff1615610ee4576001600160a01b0383166000908152600e602052604090205460ff1615610ee457601954811115610ee45760405162461bcd60e51b815260206004820152601860248201527f544f4b454e3a20466c6f6f7250726f746563742056657374000000000000000060448201526064016106a7565b6000610eef30610805565b601a54601754919250821015908210610f085760175491505b808015610f1f5750601654600160a01b900460ff16155b8015610f3957506016546001600160a01b03868116911614155b8015610f4e5750601654600160a81b900460ff165b8015610f7357506001600160a01b03851660009081526006602052604090205460ff16155b8015610f9857506001600160a01b03841660009081526006602052604090205460ff16155b15610fb857610fa682611253565b478015610fb657610fb647611198565b505b600d5460ff168015610ff757506016546001600160a01b03858116911614801590610ff75750600d546001600160a01b03858116620100009092041614155b801561101157506000546001600160a01b03868116911614155b801561102b57506000546001600160a01b03858116911614155b15611054576001600160a01b0384166000908152600e60205260409020805460ff191660011790555b50505b6001600160a01b03831660009081526006602052604090205460019060ff168061109957506001600160a01b03831660009081526006602052604090205460ff165b806110cb57506016546001600160a01b038581169116148015906110cb57506016546001600160a01b03848116911614155b156110d857506000611152565b6016546001600160a01b03858116911614801561110357506015546001600160a01b03848116911614155b1561111557600954600f55600a546010555b6016546001600160a01b03848116911614801561114057506015546001600160a01b03858116911614155b1561115257600b54600f55600c546010555b610721848484846113fb565b600081848411156111825760405162461bcd60e51b81526004016106a791906117f4565b50600061118f8486611a7b565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111d2573d6000803e3d6000fd5b5050565b600060075482111561123d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106a7565b6000611247611429565b9050610b168382610b1d565b6016805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061129b5761129b6119ea565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113189190611a8e565b8160018151811061132b5761132b6119ea565b6001600160a01b0392831660209182029290920101526015546113519130911684610b5f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac9479061138a908590600090869030904290600401611aab565b600060405180830381600087803b1580156113a457600080fd5b505af11580156113b8573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b600081836113ee5760405162461bcd60e51b81526004016106a791906117f4565b50600061118f8486611a46565b806114085761140861144c565b61141384848461147a565b8061072157610721601154600f55601254601055565b6000806000611436611571565b90925090506114458282610b1d565b9250505090565b600f5415801561145c5750601054155b1561146357565b600f80546011556010805460125560009182905555565b60008060008060008061148c876115b1565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506114be908761160e565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546114ed9086611650565b6001600160a01b03891660009081526003602052604090205561150f816116af565b61151984836116f9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161155e91815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a764000061158c8282610b1d565b8210156115a857505060075492670de0b6b3a764000092509050565b90939092509050565b60008060008060008060008060006115ce8a600f5460105461171d565b92509250925060006115de611429565b905060008060006115f18e878787611772565b919e509c509a509598509396509194505050505091939550919395565b6000610b1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061115e565b60008061165d8385611a68565b905083811015610b165760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106a7565b60006116b9611429565b905060006116c78383610a94565b306000908152600360205260409020549091506116e49082611650565b30600090815260036020526040902055505050565b600754611706908361160e565b6007556008546117169082611650565b6008555050565b600080808061173760646117318989610a94565b90610b1d565b9050600061174a60646117318a89610a94565b905060006117628261175c8b8661160e565b9061160e565b9992985090965090945050505050565b60008080806117818886610a94565b9050600061178f8887610a94565b9050600061179d8888610a94565b905060006117af8261175c868661160e565b939b939a50919850919650505050505050565b6001600160a01b038116811461080257600080fd5b6000602082840312156117e957600080fd5b8135610b16816117c2565b600060208083528351808285015260005b8181101561182157858101830151858201604001528201611805565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561185557600080fd5b8235611860816117c2565b946020939093013593505050565b60008060006060848603121561188357600080fd5b833561188e816117c2565b9250602084013561189e816117c2565b929592945050506040919091013590565b803580151581146118bf57600080fd5b919050565b6000806000604084860312156118d957600080fd5b833567ffffffffffffffff808211156118f157600080fd5b818601915086601f83011261190557600080fd5b81358181111561191457600080fd5b8760208260051b850101111561192957600080fd5b60209283019550935061193f91860190506118af565b90509250925092565b60006020828403121561195a57600080fd5b610b16826118af565b60006020828403121561197557600080fd5b5035919050565b6000806040838503121561198f57600080fd5b823561199a816117c2565b915060208301356119aa816117c2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a2857611a28611a00565b5060010190565b80820281158282048414176105f9576105f9611a00565b600082611a6357634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105f9576105f9611a00565b818103818111156105f9576105f9611a00565b600060208284031215611aa057600080fd5b8151610b16816117c2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611afb5784516001600160a01b031683529383019391830191600101611ad6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fed3ad47ab3757ebc84b883bfc8f50233cc285052be604eb3bd936e232efdc8064736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806370a082311161010257806395d89b4111610095578063caac793411610064578063caac793414610542578063dd62ed3e14610562578063ea1644d5146105a8578063f2fde38b146105c857600080fd5b806395d89b411461023857806398a5c315146104ed578063a9059cbb1461050d578063c3c8cd801461052d57600080fd5b80638da5cb5b116100d15780638da5cb5b1461048e5780638f9a55c0146104ac578063906f210c146104c257806393b5f007146104d857600080fd5b806370a0823114610424578063715018a6146104445780637d1db4a5146104595780638af6cdf81461046f57600080fd5b80633a685abe1161017a57806362622db31161014957806362622db3146103ba57806362940cc4146103cf5780636d8aa8f8146103ef5780636fc3eaec1461040f57600080fd5b80633a685abe1461033e5780633d6a9afe1461035857806349bd5a5e1461037857806352fd87601461039857600080fd5b806318160ddd116101b657806318160ddd146102c757806323b872dd146102ec5780632fd689e31461030c578063313ce5671461032257600080fd5b8063060fab75146101f357806306fdde0314610238578063095ea7b31461026f5780631694505e1461028f57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061022361020e3660046117d7565b600e6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b5060408051808201825260088152675368656e6c6f6e6760c01b6020820152905161022f91906117f4565b34801561027b57600080fd5b5061022361028a366004611842565b6105e8565b34801561029b57600080fd5b506015546102af906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102d357600080fd5b50670de0b6b3a76400005b60405190815260200161022f565b3480156102f857600080fd5b5061022361030736600461186e565b6105ff565b34801561031857600080fd5b506102de601a5481565b34801561032e57600080fd5b506040516009815260200161022f565b34801561034a57600080fd5b50600d546102239060ff1681565b34801561036457600080fd5b506013546102af906001600160a01b031681565b34801561038457600080fd5b506016546102af906001600160a01b031681565b3480156103a457600080fd5b506103b86103b33660046118c4565b610668565b005b3480156103c657600080fd5b506103b8610727565b3480156103db57600080fd5b506001546102af906001600160a01b031681565b3480156103fb57600080fd5b506103b861040a366004611948565b610772565b34801561041b57600080fd5b506103b86107ba565b34801561043057600080fd5b506102de61043f3660046117d7565b610805565b34801561045057600080fd5b506103b8610827565b34801561046557600080fd5b506102de60175481565b34801561047b57600080fd5b50600d5461022390610100900460ff1681565b34801561049a57600080fd5b506000546001600160a01b03166102af565b3480156104b857600080fd5b506102de60185481565b3480156104ce57600080fd5b506102de60195481565b3480156104e457600080fd5b506103b861089b565b3480156104f957600080fd5b506103b8610508366004611963565b6108d6565b34801561051957600080fd5b50610223610528366004611842565b610905565b34801561053957600080fd5b506103b8610912565b34801561054e57600080fd5b506014546102af906001600160a01b031681565b34801561056e57600080fd5b506102de61057d36600461197c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105b457600080fd5b506103b86105c3366004611963565b610966565b3480156105d457600080fd5b506103b86105e33660046117d7565b6109aa565b60006105f5338484610b5f565b5060015b92915050565b600061060c848484610c83565b61065e843361065985604051806060016040528060288152602001611b1d602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061115e565b610b5f565b5060019392505050565b6001546001600160a01b031633148061068b57506000546001600160a01b031633145b6106b05760405162461bcd60e51b81526004016106a7906119b5565b60405180910390fd5b60005b828110156107215781600e60008686858181106106d2576106d26119ea565b90506020020160208101906106e791906117d7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061071981611a16565b9150506106b3565b50505050565b6001546001600160a01b031633148061074a57506000546001600160a01b031633145b6107665760405162461bcd60e51b81526004016106a7906119b5565b600d805460ff19169055565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016106a7906119b5565b60168054911515600160a81b0260ff60a81b19909216919091179055565b6013546001600160a01b0316336001600160a01b031614806107ef57506014546001600160a01b0316336001600160a01b0316145b6107f857600080fd5b4761080281611198565b50565b6001600160a01b0381166000908152600360205260408120546105f9906111d6565b6000546001600160a01b031633146108515760405162461bcd60e51b81526004016106a7906119b5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108c55760405162461bcd60e51b81526004016106a7906119b5565b600d805461ffff1916610101179055565b6000546001600160a01b031633146109005760405162461bcd60e51b81526004016106a7906119b5565b601a55565b60006105f5338484610c83565b6013546001600160a01b0316336001600160a01b0316148061094757506014546001600160a01b0316336001600160a01b0316145b61095057600080fd5b600061095b30610805565b905061080281611253565b6001546001600160a01b031633148061098957506000546001600160a01b031633145b6109a55760405162461bcd60e51b81526004016106a7906119b5565b601855565b6000546001600160a01b031633146109d45760405162461bcd60e51b81526004016106a7906119b5565b6001600160a01b038116610a395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610aa6575060006105f9565b6000610ab28385611a2f565b905082610abf8583611a46565b14610b165760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106a7565b9392505050565b6000610b1683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113cd565b6001600160a01b038316610bc15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106a7565b6001600160a01b038216610c225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106a7565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ce75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106a7565b6001600160a01b038216610d495760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106a7565b60008111610dab5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106a7565b6000546001600160a01b03848116911614801590610dd757506000546001600160a01b03838116911614155b15611057576016546001600160a01b03838116911614610e615760185481610dfe84610805565b610e089190611a68565b10610e615760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106a7565b600d54610100900460ff1615610ee4576001600160a01b0383166000908152600e602052604090205460ff1615610ee457601954811115610ee45760405162461bcd60e51b815260206004820152601860248201527f544f4b454e3a20466c6f6f7250726f746563742056657374000000000000000060448201526064016106a7565b6000610eef30610805565b601a54601754919250821015908210610f085760175491505b808015610f1f5750601654600160a01b900460ff16155b8015610f3957506016546001600160a01b03868116911614155b8015610f4e5750601654600160a81b900460ff165b8015610f7357506001600160a01b03851660009081526006602052604090205460ff16155b8015610f9857506001600160a01b03841660009081526006602052604090205460ff16155b15610fb857610fa682611253565b478015610fb657610fb647611198565b505b600d5460ff168015610ff757506016546001600160a01b03858116911614801590610ff75750600d546001600160a01b03858116620100009092041614155b801561101157506000546001600160a01b03868116911614155b801561102b57506000546001600160a01b03858116911614155b15611054576001600160a01b0384166000908152600e60205260409020805460ff191660011790555b50505b6001600160a01b03831660009081526006602052604090205460019060ff168061109957506001600160a01b03831660009081526006602052604090205460ff165b806110cb57506016546001600160a01b038581169116148015906110cb57506016546001600160a01b03848116911614155b156110d857506000611152565b6016546001600160a01b03858116911614801561110357506015546001600160a01b03848116911614155b1561111557600954600f55600a546010555b6016546001600160a01b03848116911614801561114057506015546001600160a01b03858116911614155b1561115257600b54600f55600c546010555b610721848484846113fb565b600081848411156111825760405162461bcd60e51b81526004016106a791906117f4565b50600061118f8486611a7b565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111d2573d6000803e3d6000fd5b5050565b600060075482111561123d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106a7565b6000611247611429565b9050610b168382610b1d565b6016805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061129b5761129b6119ea565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113189190611a8e565b8160018151811061132b5761132b6119ea565b6001600160a01b0392831660209182029290920101526015546113519130911684610b5f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac9479061138a908590600090869030904290600401611aab565b600060405180830381600087803b1580156113a457600080fd5b505af11580156113b8573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b600081836113ee5760405162461bcd60e51b81526004016106a791906117f4565b50600061118f8486611a46565b806114085761140861144c565b61141384848461147a565b8061072157610721601154600f55601254601055565b6000806000611436611571565b90925090506114458282610b1d565b9250505090565b600f5415801561145c5750601054155b1561146357565b600f80546011556010805460125560009182905555565b60008060008060008061148c876115b1565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506114be908761160e565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546114ed9086611650565b6001600160a01b03891660009081526003602052604090205561150f816116af565b61151984836116f9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161155e91815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a764000061158c8282610b1d565b8210156115a857505060075492670de0b6b3a764000092509050565b90939092509050565b60008060008060008060008060006115ce8a600f5460105461171d565b92509250925060006115de611429565b905060008060006115f18e878787611772565b919e509c509a509598509396509194505050505091939550919395565b6000610b1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061115e565b60008061165d8385611a68565b905083811015610b165760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106a7565b60006116b9611429565b905060006116c78383610a94565b306000908152600360205260409020549091506116e49082611650565b30600090815260036020526040902055505050565b600754611706908361160e565b6007556008546117169082611650565b6008555050565b600080808061173760646117318989610a94565b90610b1d565b9050600061174a60646117318a89610a94565b905060006117628261175c8b8661160e565b9061160e565b9992985090965090945050505050565b60008080806117818886610a94565b9050600061178f8887610a94565b9050600061179d8888610a94565b905060006117af8261175c868661160e565b939b939a50919850919650505050505050565b6001600160a01b038116811461080257600080fd5b6000602082840312156117e957600080fd5b8135610b16816117c2565b600060208083528351808285015260005b8181101561182157858101830151858201604001528201611805565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561185557600080fd5b8235611860816117c2565b946020939093013593505050565b60008060006060848603121561188357600080fd5b833561188e816117c2565b9250602084013561189e816117c2565b929592945050506040919091013590565b803580151581146118bf57600080fd5b919050565b6000806000604084860312156118d957600080fd5b833567ffffffffffffffff808211156118f157600080fd5b818601915086601f83011261190557600080fd5b81358181111561191457600080fd5b8760208260051b850101111561192957600080fd5b60209283019550935061193f91860190506118af565b90509250925092565b60006020828403121561195a57600080fd5b610b16826118af565b60006020828403121561197557600080fd5b5035919050565b6000806040838503121561198f57600080fd5b823561199a816117c2565b915060208301356119aa816117c2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a2857611a28611a00565b5060010190565b80820281158282048414176105f9576105f9611a00565b600082611a6357634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105f9576105f9611a00565b818103818111156105f9576105f9611a00565b600060208284031215611aa057600080fd5b8151610b16816117c2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611afb5784516001600160a01b031683529383019391830191600101611ad6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fed3ad47ab3757ebc84b883bfc8f50233cc285052be604eb3bd936e232efdc8064736f6c63430008110033

Deployed Bytecode Sourcemap

4552:13056:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5557:51;;;;;;;;;;-1:-1:-1;5557:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;5557:51:0;;;;;;;;7181:83;;;;;;;;;;-1:-1:-1;7251:5:0;;;;;;;;;;;-1:-1:-1;;;7251:5:0;;;;7181:83;;;;7251:5;7181:83;:::i;8106:193::-;;;;;;;;;;-1:-1:-1;8106:193:0;;;;;:::i;:::-;;:::i;5979:41::-;;;;;;;;;;-1:-1:-1;5979:41:0;;;;-1:-1:-1;;;;;5979:41:0;;;;;;-1:-1:-1;;;;;1657:32:1;;;1639:51;;1627:2;1612:18;5979:41:0;1467:229:1;7458:95:0;;;;;;;;;;-1:-1:-1;5104:20:0;7458:95;;;1847:25:1;;;1835:2;1820:18;7458:95:0;1701:177:1;8307:446:0;;;;;;;;;;-1:-1:-1;8307:446:0;;;;;:::i;:::-;;:::i;6329:50::-;;;;;;;;;;;;;;;;7367:83;;;;;;;;;;-1:-1:-1;7367:83:0;;4778:1;2486:36:1;;2474:2;2459:18;7367:83:0;2344:184:1;5382:41:0;;;;;;;;;;-1:-1:-1;5382:41:0;;;;;;;;5837:64;;;;;;;;;;-1:-1:-1;5837:64:0;;;;-1:-1:-1;;;;;5837:64:0;;;6027:28;;;;;;;;;;-1:-1:-1;6027:28:0;;;;-1:-1:-1;;;;;6027:28:0;;;12926:214;;;;;;;;;;-1:-1:-1;12926:214:0;;;;;:::i;:::-;;:::i;:::-;;12827:93;;;;;;;;;;;;;:::i;1290:25::-;;;;;;;;;;-1:-1:-1;1290:25:0;;;;-1:-1:-1;;;;;1290:25:0;;;17377:101;;;;;;;;;;-1:-1:-1;17377:101:0;;;;;:::i;:::-;;:::i;13501:235::-;;;;;;;;;;;;;:::i;7561:138::-;;;;;;;;;;-1:-1:-1;7561:138:0;;;;;:::i;:::-;;:::i;2039:148::-;;;;;;;;;;;;;:::i;6138:37::-;;;;;;;;;;;;;;;;5430:36;;;;;;;;;;-1:-1:-1;5430:36:0;;;;;;;;;;;1670:79;;;;;;;;;;-1:-1:-1;1708:7:0;1735:6;-1:-1:-1;;;;;1735:6:0;1670:79;;6182:57;;;;;;;;;;;;;;;;6246:70;;;;;;;;;;;;;;;;12694:127;;;;;;;;;;;;;:::i;17186:139::-;;;;;;;;;;-1:-1:-1;17186:139:0;;;;;:::i;:::-;;:::i;7707:199::-;;;;;;;;;;-1:-1:-1;7707:199:0;;;;;:::i;:::-;;:::i;13257:236::-;;;;;;;;;;;;;:::i;5908:62::-;;;;;;;;;;-1:-1:-1;5908:62:0;;;;-1:-1:-1;;;;;5908:62:0;;;7914:184;;;;;;;;;;-1:-1:-1;7914:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8063:18:0;;;8031:7;8063:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7914:184;17486:113;;;;;;;;;;-1:-1:-1;17486:113:0;;;;;:::i;:::-;;:::i;2195:244::-;;;;;;;;;;-1:-1:-1;2195:244:0;;;;;:::i;:::-;;:::i;8106:193::-;8208:4;8230:39;444:10;8253:7;8262:6;8230:8;:39::i;:::-;-1:-1:-1;8287:4:0;8106:193;;;;;:::o;8307:446::-;8439:4;8456:36;8466:6;8474:9;8485:6;8456:9;:36::i;:::-;8503:220;8526:6;444:10;8574:138;8630:6;8574:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8574:19:0;;;;;;:11;:19;;;;;;;;444:10;8574:33;;;;;;;;;;:37;:138::i;:::-;8503:8;:220::i;:::-;-1:-1:-1;8741:4:0;8307:446;;;;;:::o;12926:214::-;1922:10;;-1:-1:-1;;;;;1922:10:0;444;1922:26;;:52;;-1:-1:-1;1952:6:0;;-1:-1:-1;;;;;1952:6:0;444:10;1952:22;1922:52;1914:97;;;;-1:-1:-1;;;1914:97:0;;;;;;;:::i;:::-;;;;;;;;;13023:9:::1;13019:114;13038:19:::0;;::::1;13019:114;;;13113:8;13079:18;:31;13098:8;;13107:1;13098:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13079:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13079:31:0;:42;;-1:-1:-1;;13079:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13059:3;::::1;::::0;::::1;:::i;:::-;;;;13019:114;;;;12926:214:::0;;;:::o;12827:93::-;1922:10;;-1:-1:-1;;;;;1922:10:0;444;1922:26;;:52;;-1:-1:-1;1952:6:0;;-1:-1:-1;;;;;1952:6:0;444:10;1952:22;1922:52;1914:97;;;;-1:-1:-1;;;1914:97:0;;;;;;;:::i;:::-;12883:21:::1;:29:::0;;-1:-1:-1;;12883:29:0::1;::::0;;12827:93::o;17377:101::-;1797:6;;-1:-1:-1;;;;;1797:6:0;444:10;1797:22;1789:67;;;;-1:-1:-1;;;1789:67:0;;;;;;;:::i;:::-;17444:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17444:26:0::1;-1:-1:-1::0;;;;17444:26:0;;::::1;::::0;;;::::1;::::0;;17377:101::o;13501:235::-;13567:19;;-1:-1:-1;;;;;13567:19:0;444:10;-1:-1:-1;;;;;13551:35:0;;:72;;;-1:-1:-1;13606:17:0;;-1:-1:-1;;;;;13606:17:0;444:10;-1:-1:-1;;;;;13590:33:0;;13551:72;13543:81;;;;;;13664:21;13696:32;13664:21;13696:12;:32::i;:::-;13532:204;13501:235::o;7561:138::-;-1:-1:-1;;;;;7674:16:0;;7627:7;7674:16;;;:7;:16;;;;;;7654:37;;:19;:37::i;2039:148::-;1797:6;;-1:-1:-1;;;;;1797:6:0;444:10;1797:22;1789:67;;;;-1:-1:-1;;;1789:67:0;;;;;;;:::i;:::-;2146:1:::1;2130:6:::0;;2109:40:::1;::::0;-1:-1:-1;;;;;2130:6:0;;::::1;::::0;2109:40:::1;::::0;2146:1;;2109:40:::1;2177:1;2160:19:::0;;-1:-1:-1;;;;;;2160:19:0::1;::::0;;2039:148::o;12694:127::-;1797:6;;-1:-1:-1;;;;;1797:6:0;444:10;1797:22;1789:67;;;;-1:-1:-1;;;1789:67:0;;;;;;;:::i;:::-;12751:21:::1;:28:::0;;-1:-1:-1;;12790:23:0;;;;;12694:127::o;17186:139::-;1797:6;;-1:-1:-1;;;;;1797:6:0;444:10;1797:22;1789:67;;;;-1:-1:-1;;;1789:67:0;;;;;;;:::i;:::-;17277:19:::1;:40:::0;17186:139::o;7707:199::-;7812:4;7834:42;444:10;7858:9;7869:6;7834:9;:42::i;13257:236::-;13323:19;;-1:-1:-1;;;;;13323:19:0;444:10;-1:-1:-1;;;;;13307:35:0;;:72;;;-1:-1:-1;13362:17:0;;-1:-1:-1;;;;;13362:17:0;444:10;-1:-1:-1;;;;;13346:33:0;;13307:72;13299:81;;;;;;13391:23;13417:24;13435:4;13417:9;:24::i;:::-;13391:50;;13452:33;13469:15;13452:16;:33::i;17486:113::-;1922:10;;-1:-1:-1;;;;;1922:10:0;444;1922:26;;:52;;-1:-1:-1;1952:6:0;;-1:-1:-1;;;;;1952:6:0;444:10;1952:22;1922:52;1914:97;;;;-1:-1:-1;;;1914:97:0;;;;;;;:::i;:::-;17561:14:::1;:30:::0;17486:113::o;2195:244::-;1797:6;;-1:-1:-1;;;;;1797:6:0;444:10;1797:22;1789:67;;;;-1:-1:-1;;;1789:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2284:22:0;::::1;2276:73;;;::::0;-1:-1:-1;;;2276:73:0;;5554:2:1;2276:73:0::1;::::0;::::1;5536:21:1::0;5593:2;5573:18;;;5566:30;5632:34;5612:18;;;5605:62;-1:-1:-1;;;5683:18:1;;;5676:36;5729:19;;2276:73:0::1;5352:402:1::0;2276:73:0::1;2386:6;::::0;;2365:38:::1;::::0;-1:-1:-1;;;;;2365:38:0;;::::1;::::0;2386:6;::::1;::::0;2365:38:::1;::::0;::::1;2414:6;:17:::0;;-1:-1:-1;;;;;;2414:17:0::1;-1:-1:-1::0;;;;;2414:17:0;;;::::1;::::0;;;::::1;::::0;;2195:244::o;3035:246::-;3093:7;3117:1;3122;3117:6;3113:47;;-1:-1:-1;3147:1:0;3140:8;;3113:47;3170:9;3182:5;3186:1;3182;:5;:::i;:::-;3170:17;-1:-1:-1;3215:1:0;3206:5;3210:1;3170:17;3206:5;:::i;:::-;:10;3198:56;;;;-1:-1:-1;;;3198:56:0;;6356:2:1;3198:56:0;;;6338:21:1;6395:2;6375:18;;;6368:30;6434:34;6414:18;;;6407:62;-1:-1:-1;;;6485:18:1;;;6478:31;6526:19;;3198:56:0;6154:397:1;3198:56:0;3272:1;3035:246;-1:-1:-1;;;3035:246:0:o;3289:132::-;3347:7;3374:39;3378:1;3381;3374:39;;;;;;;;;;;;;;;;;:3;:39::i;9444:369::-;-1:-1:-1;;;;;9571:19:0;;9563:68;;;;-1:-1:-1;;;9563:68:0;;6758:2:1;9563:68:0;;;6740:21:1;6797:2;6777:18;;;6770:30;6836:34;6816:18;;;6809:62;-1:-1:-1;;;6887:18:1;;;6880:34;6931:19;;9563:68:0;6556:400:1;9563:68:0;-1:-1:-1;;;;;9650:21:0;;9642:68;;;;-1:-1:-1;;;9642:68:0;;7163:2:1;9642:68:0;;;7145:21:1;7202:2;7182:18;;;7175:30;7241:34;7221:18;;;7214:62;-1:-1:-1;;;7292:18:1;;;7285:32;7334:19;;9642:68:0;6961:398:1;9642:68:0;-1:-1:-1;;;;;9721:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9773:32;;1847:25:1;;;9773:32:0;;1820:18:1;9773:32:0;;;;;;;9444:369;;;:::o;9821:2370::-;-1:-1:-1;;;;;9943:18:0;;9935:68;;;;-1:-1:-1;;;9935:68:0;;7566:2:1;9935:68:0;;;7548:21:1;7605:2;7585:18;;;7578:30;7644:34;7624:18;;;7617:62;-1:-1:-1;;;7695:18:1;;;7688:35;7740:19;;9935:68:0;7364:401:1;9935:68:0;-1:-1:-1;;;;;10022:16:0;;10014:64;;;;-1:-1:-1;;;10014:64:0;;7972:2:1;10014:64:0;;;7954:21:1;8011:2;7991:18;;;7984:30;8050:34;8030:18;;;8023:62;-1:-1:-1;;;8101:18:1;;;8094:33;8144:19;;10014:64:0;7770:399:1;10014:64:0;10106:1;10097:6;:10;10089:64;;;;-1:-1:-1;;;10089:64:0;;8376:2:1;10089:64:0;;;8358:21:1;8415:2;8395:18;;;8388:30;8454:34;8434:18;;;8427:62;-1:-1:-1;;;8505:18:1;;;8498:39;8554:19;;10089:64:0;8174:405:1;10089:64:0;1708:7;1735:6;-1:-1:-1;;;;;10170:15:0;;;1735:6;;10170:15;;;;:32;;-1:-1:-1;1708:7:0;1735:6;-1:-1:-1;;;;;10189:13:0;;;1735:6;;10189:13;;10170:32;10166:1299;;;10232:13;;-1:-1:-1;;;;;10226:19:0;;;10232:13;;10226:19;10223:146;;10299:14;;10290:6;10274:13;10284:2;10274:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10266:87;;;;-1:-1:-1;;;10266:87:0;;8916:2:1;10266:87:0;;;8898:21:1;8955:2;8935:18;;;8928:30;8994:34;8974:18;;;8967:62;-1:-1:-1;;;9045:18:1;;;9038:33;9088:19;;10266:87:0;8714:399:1;10266:87:0;10388:16;;;;;;;10385:191;;;-1:-1:-1;;;;;10428:24:0;;;;;;:18;:24;;;;;;;;10425:136;;;10495:17;;10485:6;:27;;10477:64;;;;-1:-1:-1;;;10477:64:0;;9320:2:1;10477:64:0;;;9302:21:1;9359:2;9339:18;;;9332:30;9398:26;9378:18;;;9371:54;9442:18;;10477:64:0;9118:348:1;10477:64:0;10592:28;10623:24;10641:4;10623:9;:24::i;:::-;10701:19;;10764:12;;10592:55;;-1:-1:-1;10677:43:0;;;;10740:36;;10737:124;;10833:12;;10810:35;;10737:124;10881:7;:18;;;;-1:-1:-1;10893:6:0;;-1:-1:-1;;;10893:6:0;;;;10892:7;10881:18;:43;;;;-1:-1:-1;10911:13:0;;-1:-1:-1;;;;;10903:21:0;;;10911:13;;10903:21;;10881:43;:58;;;;-1:-1:-1;10928:11:0;;-1:-1:-1;;;10928:11:0;;;;10881:58;:87;;;;-1:-1:-1;;;;;;10944:24:0;;;;;;:18;:24;;;;;;;;10943:25;10881:87;:114;;;;-1:-1:-1;;;;;;10973:22:0;;;;;;:18;:22;;;;;;;;10972:23;10881:114;10877:386;;;11016:38;11033:20;11016:16;:38::i;:::-;11102:21;11146:22;;11142:106;;11193:35;11206:21;11193:12;:35::i;:::-;10997:266;10877:386;11282:21;;;;:70;;;;-1:-1:-1;11314:13:0;;-1:-1:-1;;;;;11308:19:0;;;11314:13;;11308:19;;;;:43;;-1:-1:-1;11337:14:0;;-1:-1:-1;;;;;11331:20:0;;;11337:14;;;;;11331:20;;11308:43;11282:89;;;;-1:-1:-1;1708:7:0;1735:6;-1:-1:-1;;;;;11356:15:0;;;1735:6;;11356:15;;11282:89;:106;;;;-1:-1:-1;1708:7:0;1735:6;-1:-1:-1;;;;;11375:13:0;;;1735:6;;11375:13;;11282:106;11279:175;;;-1:-1:-1;;;;;11409:22:0;;;;;;:18;:22;;;;;:29;;-1:-1:-1;;11409:29:0;11434:4;11409:29;;;11279:175;10204:1261;;10166:1299;-1:-1:-1;;;;;11541:24:0;;11477:12;11541:24;;;:18;:24;;;;;;11492:4;;11541:24;;;:50;;-1:-1:-1;;;;;;11569:22:0;;;;;;:18;:22;;;;;;;;11541:50;11540:102;;;-1:-1:-1;11605:13:0;;-1:-1:-1;;;;;11597:21:0;;;11605:13;;11597:21;;;;:44;;-1:-1:-1;11628:13:0;;-1:-1:-1;;;;;11622:19:0;;;11628:13;;11622:19;;11597:44;11536:594;;;-1:-1:-1;11669:5:0;11536:594;;;11752:13;;-1:-1:-1;;;;;11744:21:0;;;11752:13;;11744:21;:55;;;;-1:-1:-1;11783:15:0;;-1:-1:-1;;;;;11769:30:0;;;11783:15;;11769:30;;11744:55;11741:162;;;11832:14;;11820:9;:26;11875:12;;11865:7;:22;11741:162;11962:13;;-1:-1:-1;;;;;11956:19:0;;;11962:13;;11956:19;:55;;;;-1:-1:-1;11995:15:0;;-1:-1:-1;;;;;11979:32:0;;;11995:15;;11979:32;;11956:55;11952:165;;;12044:15;;12032:9;:27;12088:13;;12078:7;:23;11952:165;12142:41;12157:4;12163:2;12167:6;12175:7;12142:14;:41::i;2803:224::-;2923:7;2959:12;2951:6;;;;2943:29;;;;-1:-1:-1;;;2943:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2983:9:0;2995:5;2999:1;2995;:5;:::i;:::-;2983:17;2803:224;-1:-1:-1;;;;;2803:224:0:o;13148:99::-;13205:17;;:34;;-1:-1:-1;;;;;13205:17:0;;;;:34;;;;;13232:6;;13205:17;:34;:17;:34;13232:6;13205:17;:34;;;;;;;;;;;;;;;;;;;;;13148:99;:::o;8761:323::-;8856:7;8914;;8903;:18;;8881:110;;;;-1:-1:-1;;;8881:110:0;;9806:2:1;8881:110:0;;;9788:21:1;9845:2;9825:18;;;9818:30;9884:34;9864:18;;;9857:62;-1:-1:-1;;;9935:18:1;;;9928:40;9985:19;;8881:110:0;9604:406:1;8881:110:0;9002:19;9024:10;:8;:10::i;:::-;9002:32;-1:-1:-1;9052:24:0;:7;9002:32;9052:11;:24::i;12199:483::-;6473:6;:13;;-1:-1:-1;;;;6473:13:0;-1:-1:-1;;;6473:13:0;;;12301:16:::1;::::0;;12315:1:::1;12301:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12301:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12301:16:0::1;12277:40;;12346:4;12328;12333:1;12328:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12328:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12372:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12372:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12328:7;;12372:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12362:4;12367:1;12362:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12362:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12437:15:::1;::::0;12405:62:::1;::::0;12422:4:::1;::::0;12437:15:::1;12455:11:::0;12405:8:::1;:62::i;:::-;12478:15;::::0;:196:::1;::::0;-1:-1:-1;;;12478:196:0;;-1:-1:-1;;;;;12478:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12559:11;;12478:15:::1;::::0;12601:4;;12628::::1;::::0;12648:15:::1;::::0;12478:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6509:6:0;:14;;-1:-1:-1;;;;6509:14:0;;;-1:-1:-1;;;;12199:483:0:o;3429:223::-;3549:7;3584:12;3577:5;3569:28;;;;-1:-1:-1;;;3569:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3608:9:0;3620:5;3624:1;3620;:5;:::i;13744:282::-;13900:7;13895:28;;13909:14;:12;:14::i;:::-;13934:44;13952:6;13960:9;13971:6;13934:17;:44::i;:::-;13994:7;13989:29;;14003:15;9375:17;;9363:9;:29;9413:15;;9403:7;:25;9319:117;16705:164;16747:7;16768:15;16785;16804:19;:17;:19::i;:::-;16767:56;;-1:-1:-1;16767:56:0;-1:-1:-1;16841:20:0;16767:56;;16841:11;:20::i;:::-;16834:27;;;;16705:164;:::o;9092:219::-;9139:9;;:14;:30;;;;-1:-1:-1;9157:7:0;;:12;9139:30;9135:43;;;9092:219::o;9135:43::-;9210:9;;;9190:17;:29;9248:7;;;9230:15;:25;-1:-1:-1;9268:13:0;;;;9292:11;9092:219::o;14034:610::-;14181:15;14211:23;14249:12;14276:23;14314:12;14341:13;14368:19;14379:7;14368:10;:19::i;:::-;-1:-1:-1;;;;;14416:15:0;;;;;;:7;:15;;;;;;14166:221;;-1:-1:-1;14166:221:0;;-1:-1:-1;14166:221:0;;-1:-1:-1;14166:221:0;-1:-1:-1;14166:221:0;-1:-1:-1;14166:221:0;-1:-1:-1;14416:28:0;;14166:221;14416:19;:28::i;:::-;-1:-1:-1;;;;;14398:15:0;;;;;;;:7;:15;;;;;;:46;;;;14476:18;;;;;;;:39;;14499:15;14476:22;:39::i;:::-;-1:-1:-1;;;;;14455:18:0;;;;;;:7;:18;;;;;:60;14526:16;14536:5;14526:9;:16::i;:::-;14553:23;14565:4;14571;14553:11;:23::i;:::-;14609:9;-1:-1:-1;;;;;14592:44:0;14601:6;-1:-1:-1;;;;;14592:44:0;;14620:15;14592:44;;;;1847:25:1;;1835:2;1820:18;;1701:177;14592:44:0;;;;;;;;14155:489;;;;;;14034:610;;;:::o;16877:257::-;16975:7;;16928;;;;5104:20;17043;16975:7;5104:20;17043:11;:20::i;:::-;17033:7;:30;17029:61;;;-1:-1:-1;;17073:7:0;;;5104:20;;-1:-1:-1;16877:257:0;-1:-1:-1;16877:257:0:o;17029:61::-;17109:7;;17118;;-1:-1:-1;16877:257:0;-1:-1:-1;16877:257:0:o;15063:615::-;15163:7;15185;15207;15229;15251;15273;15309:23;15334:12;15348:13;15378:40;15390:7;15399:9;;15410:7;;15378:11;:40::i;:::-;15308:110;;;;;;15429:19;15451:10;:8;:10::i;:::-;15429:32;;15473:15;15490:23;15515:12;15544:46;15556:7;15565:4;15571:5;15578:11;15544;:46::i;:::-;15472:118;;-1:-1:-1;15472:118:0;-1:-1:-1;15472:118:0;-1:-1:-1;15641:15:0;;-1:-1:-1;15658:4:0;;-1:-1:-1;15664:5:0;;-1:-1:-1;;;;;15063:615:0;;;;;;;:::o;2659:136::-;2717:7;2744:43;2748:1;2751;2744:43;;;;;;;;;;;;;;;;;:3;:43::i;2472:179::-;2530:7;;2562:5;2566:1;2562;:5;:::i;:::-;2550:17;;2591:1;2586;:6;;2578:46;;;;-1:-1:-1;;;2578:46:0;;11590:2:1;2578:46:0;;;11572:21:1;11629:2;11609:18;;;11602:30;11668:29;11648:18;;;11641:57;11715:18;;2578:46:0;11388:351:1;14652:211:0;14705:19;14727:10;:8;:10::i;:::-;14705:32;-1:-1:-1;14748:13:0;14764:22;:5;14705:32;14764:9;:22::i;:::-;14838:4;14822:22;;;;:7;:22;;;;;;14748:38;;-1:-1:-1;14822:33:0;;14748:38;14822:26;:33::i;:::-;14813:4;14797:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14652:211:0:o;14871:147::-;14949:7;;:17;;14961:4;14949:11;:17::i;:::-;14939:7;:27;14990:10;;:20;;15005:4;14990:14;:20::i;:::-;14977:10;:33;-1:-1:-1;;14871:147:0:o;15686:469::-;15855:7;;;;15949:30;15975:3;15949:21;:7;15961:8;15949:11;:21::i;:::-;:25;;:30::i;:::-;15934:45;-1:-1:-1;15990:13:0;16006:28;16030:3;16006:19;:7;16018:6;16006:11;:19::i;:28::-;15990:44;-1:-1:-1;16045:23:0;16071:28;15990:44;16071:17;:7;16083:4;16071:11;:17::i;:::-;:21;;:28::i;:::-;16045:54;16135:4;;-1:-1:-1;16141:5:0;;-1:-1:-1;15686:469:0;;-1:-1:-1;;;;;15686:469:0:o;16163:534::-;16357:7;;;;16454:24;:7;16466:11;16454;:24::i;:::-;16436:42;-1:-1:-1;16489:12:0;16504:21;:4;16513:11;16504:8;:21::i;:::-;16489:36;-1:-1:-1;16536:13:0;16552:22;:5;16562:11;16552:9;:22::i;:::-;16536:38;-1:-1:-1;16585:23:0;16611:28;16536:38;16611:17;:7;16623:4;16611:11;:17::i;:28::-;16658:7;;;;-1:-1:-1;16684:4:0;;-1:-1:-1;16163:534:0;;-1:-1:-1;;;;;;;16163:534:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;594:548::-;706:4;735:2;764;753:9;746:21;796:6;790:13;839:6;834:2;823:9;819:18;812:34;864:1;874:140;888:6;885:1;882:13;874:140;;;983:14;;;979:23;;973:30;949:17;;;968:2;945:26;938:66;903:10;;874:140;;;878:3;1063:1;1058:2;1049:6;1038:9;1034:22;1030:31;1023:42;1133:2;1126;1122:7;1117:2;1109:6;1105:15;1101:29;1090:9;1086:45;1082:54;1074:62;;;;594:548;;;;:::o;1147:315::-;1215:6;1223;1276:2;1264:9;1255:7;1251:23;1247:32;1244:52;;;1292:1;1289;1282:12;1244:52;1331:9;1318:23;1350:31;1375:5;1350:31;:::i;:::-;1400:5;1452:2;1437:18;;;;1424:32;;-1:-1:-1;;;1147:315:1:o;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2965:160::-;3030:20;;3086:13;;3079:21;3069:32;;3059:60;;3115:1;3112;3105:12;3059:60;2965:160;;;:::o;3130:689::-;3222:6;3230;3238;3291:2;3279:9;3270:7;3266:23;3262:32;3259:52;;;3307:1;3304;3297:12;3259:52;3347:9;3334:23;3376:18;3417:2;3409:6;3406:14;3403:34;;;3433:1;3430;3423:12;3403:34;3471:6;3460:9;3456:22;3446:32;;3516:7;3509:4;3505:2;3501:13;3497:27;3487:55;;3538:1;3535;3528:12;3487:55;3578:2;3565:16;3604:2;3596:6;3593:14;3590:34;;;3620:1;3617;3610:12;3590:34;3675:7;3668:4;3658:6;3655:1;3651:14;3647:2;3643:23;3639:34;3636:47;3633:67;;;3696:1;3693;3686:12;3633:67;3727:4;3719:13;;;;-1:-1:-1;3751:6:1;-1:-1:-1;3776:37:1;;3792:20;;;-1:-1:-1;3776:37:1;:::i;:::-;3766:47;;3130:689;;;;;:::o;3824:180::-;3880:6;3933:2;3921:9;3912:7;3908:23;3904:32;3901:52;;;3949:1;3946;3939:12;3901:52;3972:26;3988:9;3972:26;:::i;4009:180::-;4068:6;4121:2;4109:9;4100:7;4096:23;4092:32;4089:52;;;4137:1;4134;4127:12;4089:52;-1:-1:-1;4160:23:1;;4009:180;-1:-1:-1;4009:180:1:o;4194:388::-;4262:6;4270;4323:2;4311:9;4302:7;4298:23;4294:32;4291:52;;;4339:1;4336;4329:12;4291:52;4378:9;4365:23;4397:31;4422:5;4397:31;:::i;:::-;4447:5;-1:-1:-1;4504:2:1;4489:18;;4476:32;4517:33;4476:32;4517:33;:::i;:::-;4569:7;4559:17;;;4194:388;;;;;:::o;4587:356::-;4789:2;4771:21;;;4808:18;;;4801:30;4867:34;4862:2;4847:18;;4840:62;4934:2;4919:18;;4587:356::o;4948:127::-;5009:10;5004:3;5000:20;4997:1;4990:31;5040:4;5037:1;5030:15;5064:4;5061:1;5054:15;5080:127;5141:10;5136:3;5132:20;5129:1;5122:31;5172:4;5169:1;5162:15;5196:4;5193:1;5186:15;5212:135;5251:3;5272:17;;;5269:43;;5292:18;;:::i;:::-;-1:-1:-1;5339:1:1;5328:13;;5212:135::o;5759:168::-;5832:9;;;5863;;5880:15;;;5874:22;;5860:37;5850:71;;5901:18;;:::i;5932:217::-;5972:1;5998;5988:132;;6042:10;6037:3;6033:20;6030:1;6023:31;6077:4;6074:1;6067:15;6105:4;6102:1;6095:15;5988:132;-1:-1:-1;6134:9:1;;5932:217::o;8584:125::-;8649:9;;;8670:10;;;8667:36;;;8683:18;;:::i;9471:128::-;9538:9;;;9559:11;;;9556:37;;;9573:18;;:::i;10147:251::-;10217:6;10270:2;10258:9;10249:7;10245:23;10241:32;10238:52;;;10286:1;10283;10276:12;10238:52;10318:9;10312:16;10337:31;10362:5;10337:31;:::i;10403:980::-;10665:4;10713:3;10702:9;10698:19;10744:6;10733:9;10726:25;10770:2;10808:6;10803:2;10792:9;10788:18;10781:34;10851:3;10846:2;10835:9;10831:18;10824:31;10875:6;10910;10904:13;10941:6;10933;10926:22;10979:3;10968:9;10964:19;10957:26;;11018:2;11010:6;11006:15;10992:29;;11039:1;11049:195;11063:6;11060:1;11057:13;11049:195;;;11128:13;;-1:-1:-1;;;;;11124:39:1;11112:52;;11219:15;;;;11184:12;;;;11160:1;11078:9;11049:195;;;-1:-1:-1;;;;;;;11300:32:1;;;;11295:2;11280:18;;11273:60;-1:-1:-1;;;11364:3:1;11349:19;11342:35;11261:3;10403:980;-1:-1:-1;;;10403:980:1:o

Swarm Source

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