ETH Price: $3,499.06 (-0.30%)
Gas: 2 Gwei

Token

OrdiZK (OZK)
 

Overview

Max Total Supply

1,000,000,000 OZK

Holders

789

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,000,000 OZK

Value
$0.00
0x7dbfc0f6bbfd2e13bdd0a1a4a1d5caf7c9633bbf
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:
OrdiZKV2

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-26
*/

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

/*
    https://ordizk.io
    https://ordizk.gitbook.io
    https://x.com/OrdiZK_
    https://t.me/ordizk
*/

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

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 {
    error NotOwner();

    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        if (_owner != msg.sender) revert NotOwner();
        _;
    }

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

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 OrdiZKV2 is IERC20, Ownable {
    error TradingAlreadyOpen();
    error ZeroAddress();
    error ZeroAmount();
    error ZeroValue();
    error ZeroToken();
    error TaxTooHigh();
    error NotSelf();
    error Unauthorized();
    error MigrationDisabled();
    error ExceedMax();

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromLimits;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    address payable private _taxWallet;
    uint256 private _firstBlock;

    uint256 internal _initialBuyTax = 20;
    uint256 internal _initialSellTax = 25;
    uint256 internal _finalBuyTax = 15;
    uint256 internal _finalSellTax = 20;
    uint256 internal _reduceBuyTaxAt = 25;
    uint256 internal _reduceSellTaxAt = 25;
    uint256 internal _preventSwapBefore = 40;
    uint256 internal _buyCount = 0;

    address internal constant _DEV_WALLET = 0xBfdD36F5CA739344A44758aA44c2cC439f679c83;
    address internal constant _OZKV1 = 0xB4Fc1Fc74EFFa5DC15A031eB8159302cFa4f1288;
    uint8 private constant _DECIMALS = 9;
    uint256 internal constant _MAX_SUPPLY = 1000000000 * 10 ** _DECIMALS;
    string private constant _NAME = unicode"OrdiZK";
    string private constant _SYMBOL = unicode"OZK";
    uint256 public maxTx = 20000000 * 10 ** _DECIMALS;
    uint256 public maxWallet = _MAX_SUPPLY;
    uint256 public swapThreshold = 10000000 * 10 ** _DECIMALS;
    uint256 public maxTaxSwap = 10000000 * 10 ** _DECIMALS;

    IUniswapV2Router02 internal constant _UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address internal _uniswapV2Pair;
    bool public lpAdded;
    bool private _inSwap = false;
    bool private _swapEnabled = false;
    bool public migrationEnabled = false;
    uint256 private _totalSupply;

    event MaxTxAmountUpdated(uint256 maxTx);

    constructor() {
        _taxWallet = payable(tx.origin);

        _isExcludedFromLimits[tx.origin] = true;
        _isExcludedFromLimits[_DEV_WALLET] = true;
        _isExcludedFromLimits[address(0)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(_UNISWAP_V2_ROUTER)] = true;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[tx.origin] = true;
        _isExcludedFromFee[_DEV_WALLET] = true;

        _balances[tx.origin] += _MAX_SUPPLY / 10;
        _totalSupply += _MAX_SUPPLY / 10;
        emit Transfer(address(0), tx.origin, _MAX_SUPPLY / 10);
    }

    receive() external payable {}

    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 view override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) revert ZeroAddress();
        if (spender == address(0)) revert ZeroAddress();
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        if (from == address(0)) revert ZeroAddress();
        if (to == address(0)) revert ZeroAddress();
        if (amount == 0) revert ZeroAmount();

        require(!bots[from] && !bots[to], "shoo");

        if (maxWallet != _MAX_SUPPLY && !_isExcludedFromLimits[to]) {
            require(balanceOf(to) + amount <= maxWallet, "Exceeds maxWalletSize");
        }

        if (maxTx != _MAX_SUPPLY && !_isExcludedFromLimits[from]) {
            require(amount <= maxTx, "Exceeds maxTx");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (
            !_inSwap && contractTokenBalance >= swapThreshold && _swapEnabled && _buyCount > _preventSwapBefore
                && to == _uniswapV2Pair && !_isExcludedFromFee[from]
        ) {
            _swapTokensForEth(_min(amount, _min(contractTokenBalance, maxTaxSwap)));
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                _sendETHToFee(contractETHBalance);
            }
        }

        uint256 taxAmount = 0;
        if (!_inSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            // sell
            if (to == _uniswapV2Pair) {
                taxAmount = (amount * ((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax)) / 100;
            }
            // buy
            else if (from == _uniswapV2Pair) {
                if (_firstBlock + 25 > block.number) {
                    require(!_isContract(to), "contract");
                }
                taxAmount = (amount * ((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax)) / 100;
                ++_buyCount;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)] + taxAmount;
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + amount - taxAmount;
        emit Transfer(from, to, amount - taxAmount);
    }

    function migrate(uint256 amount) external {
        if (!migrationEnabled) revert MigrationDisabled();

        uint256 __totalSupply = _totalSupply;
        if (__totalSupply + amount > _MAX_SUPPLY) revert ExceedMax();

        IERC20(_OZKV1).transferFrom(msg.sender, _DEV_WALLET, amount);

        _balances[msg.sender] += amount;
        _totalSupply = __totalSupply + amount;
        emit Transfer(address(0), msg.sender, amount);
    }

    function setEnableMigration(bool e) external onlyOwner {
        migrationEnabled = e;
    }

    function removeLimits() external onlyOwner {
        maxTx = _MAX_SUPPLY;
        maxWallet = _MAX_SUPPLY;
        emit MaxTxAmountUpdated(_MAX_SUPPLY);
    }

    function setBots(address[] memory bots_, bool isBot_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = isBot_;
        }
    }

    function openTrading(uint256 amount) external payable onlyOwner {
        if (lpAdded) revert TradingAlreadyOpen();
        if (msg.value == 0) revert ZeroValue();
        if (amount == 0) revert ZeroToken();
        _transfer(msg.sender, address(this), amount);
        _approve(address(this), address(_UNISWAP_V2_ROUTER), _MAX_SUPPLY);

        _uniswapV2Pair =
            IUniswapV2Factory(_UNISWAP_V2_ROUTER.factory()).createPair(address(this), _UNISWAP_V2_ROUTER.WETH());
        _isExcludedFromLimits[_uniswapV2Pair] = true;

        _UNISWAP_V2_ROUTER.addLiquidityETH{value: address(this).balance}(
            address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp
        );
        IERC20(_uniswapV2Pair).approve(address(_UNISWAP_V2_ROUTER), type(uint256).max);
        _swapEnabled = true;
        lpAdded = true;
        _firstBlock = block.number;
    }

    function lowerTaxes(uint256 buyTax_, uint256 sellTax_) external onlyOwner {
        if (buyTax_ > _finalBuyTax) revert TaxTooHigh();
        if (sellTax_ > _finalSellTax) revert TaxTooHigh();

        _finalBuyTax = buyTax_;
        _finalSellTax = sellTax_;
    }

    function clearStuck() external {
        (bool success,) = _taxWallet.call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckSelf() external {
        if (msg.sender != _taxWallet) revert Unauthorized();
        _transfer(address(this), _taxWallet, balanceOf(address(this)));
    }

    function clearStuckToken(address token) external {
        if (token == address(this)) revert NotSelf();
        IERC20(token).transfer(_taxWallet, IERC20(token).balanceOf(address(this)));
    }

    struct Airdrop {
        uint256 amount;
        address addr;
    }

    function airdrop(Airdrop[] calldata arr) external onlyOwner {
        uint256 __totalSupply = _totalSupply;
        uint256 _amount = 0;
        for (uint256 i = 0; i < arr.length; i++) {
            _amount += arr[i].amount;
            if (__totalSupply + _amount > _MAX_SUPPLY) revert ExceedMax();
            _balances[arr[i].addr] += arr[i].amount;
            emit Transfer(address(0), arr[i].addr, arr[i].amount);
        }

        _totalSupply += _amount;
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    function _min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function _isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        _inSwap = true;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _UNISWAP_V2_ROUTER.WETH();
        _approve(address(this), address(_UNISWAP_V2_ROUTER), tokenAmount);
        _UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount, 0, path, address(this), block.timestamp
        );
        _inSwap = false;
    }

    function _sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ExceedMax","type":"error"},{"inputs":[],"name":"MigrationDisabled","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSelf","type":"error"},{"inputs":[],"name":"TaxTooHigh","type":"error"},{"inputs":[],"name":"TradingAlreadyOpen","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"inputs":[],"name":"ZeroToken","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"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":"maxTx","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":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"internalType":"struct OrdiZKV2.Airdrop[]","name":"arr","type":"tuple[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckSelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax_","type":"uint256"},{"internalType":"uint256","name":"sellTax_","type":"uint256"}],"name":"lowerTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"isBot_","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e","type":"bool"}],"name":"setEnableMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","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"},{"stateMutability":"payable","type":"receive"}]

608060405260146008556019600955600f600a556014600b556019600c556019600d556028600e555f600f556009600a6200003b91906200045a565b6200004b906301312d0062000471565b6010556200005c6009600a6200045a565b6200006c90633b9aca0062000471565b6011556200007d6009600a6200045a565b6200008c906298968062000471565b6012556200009d6009600a6200045a565b620000ac906298968062000471565b6013556014805462ffffff60a81b19169055348015620000ca575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916329081179091555f818152600360209081526040808320805460ff1990811660019081179092557ff300a82c9ed4fdd66dc3f75ae67c2318511a1cb35b90cff2064ee35744c31d0b80548216831790557f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff80548216831790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c805482168317905530855282852080548216831790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba88054821683179055600490935281842080548416821790559383528220805482168417905573bfdd36f5ca739344a44758aa44c2cc439f679c839091527f95fbb479e2ff83d9f744b3e3577fda3b40ff49b4f42ffd777f6d0a28bd212d7f80549091169091179055600a620002616009826200045a565b6200027190633b9aca0062000471565b6200027d91906200048b565b325f90815260016020526040812080549091906200029d908490620004ab565b90915550600a9050620002b26009826200045a565b620002c290633b9aca0062000471565b620002ce91906200048b565b60155f828254620002e09190620004ab565b909155503290505f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a620003186009826200045a565b6200032890633b9aca0062000471565b6200033491906200048b565b60405190815260200160405180910390a3620004c1565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200039f57815f19048211156200038357620003836200034b565b808516156200039157918102915b93841c939080029062000364565b509250929050565b5f82620003b75750600162000454565b81620003c557505f62000454565b8160018114620003de5760028114620003e95762000409565b600191505062000454565b60ff841115620003fd57620003fd6200034b565b50506001821b62000454565b5060208310610133831016604e8410600b84101617156200042e575081810a62000454565b6200043a83836200035f565b805f19048211156200045057620004506200034b565b0290505b92915050565b5f6200046a60ff841683620003a7565b9392505050565b80820281158282048414176200045457620004546200034b565b5f82620004a657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200045457620004546200034b565b611e9880620004cf5f395ff3fe6080604052600436106101b2575f3560e01c80637437681e116100e7578063a9059cbb11610087578063d163364911610062578063d1633649146104cb578063dd62ed3e146104de578063f782103314610522578063f8b45b0514610541575f80fd5b8063a9059cbb1461046d578063af8deddb1461048c578063baeeeab1146104ac575f80fd5b80638de5c064116100c25780638de5c064146103f057806395d89b41146104045780639be953b31461042f5780639c0db5f31461044e575f80fd5b80637437681e146103a1578063751039fc146103b65780638da5cb5b146103ca575f80fd5b80633bbac5791161015257806362997f8c1161012d57806362997f8c146103305780636481f2011461034557806370a0823114610359578063715018a61461038d575f80fd5b80633bbac579146102b9578063454b0608146102f057806357d0a98214610311575f80fd5b806318160ddd1161018d57806318160ddd1461024b57806323b872dd1461025f578063313ce5671461027e57806335b944bf14610299575f80fd5b80630445b667146101bd57806306fdde03146101e5578063095ea7b31461021c575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101d260125481565b6040519081526020015b60405180910390f35b3480156101f0575f80fd5b506040805180820190915260068152654f7264695a4b60d01b60208201525b6040516101dc91906118e6565b348015610227575f80fd5b5061023b610236366004611956565b610556565b60405190151581526020016101dc565b348015610256575f80fd5b506015546101d2565b34801561026a575f80fd5b5061023b610279366004611980565b61056c565b348015610289575f80fd5b50604051600981526020016101dc565b3480156102a4575f80fd5b5060145461023b90600160b81b900460ff1681565b3480156102c4575f80fd5b5061023b6102d33660046119be565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156102fb575f80fd5b5061030f61030a3660046119d9565b6105ba565b005b34801561031c575f80fd5b5061030f61032b3660046119f0565b610717565b34801561033b575f80fd5b506101d260135481565b348015610350575f80fd5b5061030f610792565b348015610364575f80fd5b506101d26103733660046119be565b6001600160a01b03165f9081526001602052604090205490565b348015610398575f80fd5b5061030f6107e3565b3480156103ac575f80fd5b506101d260105481565b3480156103c1575f80fd5b5061030f610855565b3480156103d5575f80fd5b505f546040516001600160a01b0390911681526020016101dc565b3480156103fb575f80fd5b5061030f610907565b34801561040f575f80fd5b506040805180820190915260038152624f5a4b60e81b602082015261020f565b34801561043a575f80fd5b5061030f6104493660046119be565b610966565b348015610459575f80fd5b5061030f610468366004611a3c565b610a74565b348015610478575f80fd5b5061023b610487366004611956565b610afd565b348015610497575f80fd5b5060145461023b90600160a01b900460ff1681565b3480156104b7575f80fd5b5061030f6104c6366004611b0e565b610b09565b61030f6104d93660046119d9565b610cb8565b3480156104e9575f80fd5b506101d26104f8366004611b7d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561052d575f80fd5b5061030f61053c366004611bb4565b6110a8565b34801561054c575f80fd5b506101d260115481565b5f6105623384846110f0565b5060015b92915050565b6001600160a01b0383165f9081526002602090815260408083203380855292528220546105a59186916105a0908690611be3565b6110f0565b6105b084848461119e565b5060019392505050565b601454600160b81b900460ff166105e457604051631e6a33fb60e01b815260040160405180910390fd5b6015546105f36009600a611cd6565b61060190633b9aca00611ce4565b61060b8383611cfb565b111561062a5760405163622e044b60e01b815260040160405180910390fd5b6040516323b872dd60e01b815233600482015273bfdd36f5ca739344a44758aa44c2cc439f679c8360248201526044810183905273b4fc1fc74effa5dc15a031eb8159302cfa4f1288906323b872dd906064016020604051808303815f875af1158015610699573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bd9190611d0e565b50335f90815260016020526040812080548492906106dc908490611cfb565b909155506106ec90508282611cfb565b60155560405182815233905f905f80516020611e438339815191529060200160405180910390a35050565b5f546001600160a01b03163314610741576040516330cd747160e01b815260040160405180910390fd5b600a5482111561076457604051632bc7b84d60e21b815260040160405180910390fd5b600b5481111561078757604051632bc7b84d60e21b815260040160405180910390fd5b600a91909155600b55565b6006546001600160a01b031633146107bc576040516282b42960e81b815260040160405180910390fd5b600654305f818152600160205260409020546107e1926001600160a01b03169061119e565b565b5f546001600160a01b0316331461080d576040516330cd747160e01b815260040160405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461087f576040516330cd747160e01b815260040160405180910390fd5b61088b6009600a611cd6565b61089990633b9aca00611ce4565b6010556108a86009600a611cd6565b6108b690633b9aca00611ce4565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108e66009600a611cd6565b6108f490633b9aca00611ce4565b60405190815260200160405180910390a1565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610951576040519150601f19603f3d011682016040523d82523d5f602084013e610956565b606091505b5050905080610963575f80fd5b50565b306001600160a01b0382160361098f576040516314e1dbf760e11b815260040160405180910390fd5b6006546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156109e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190611d29565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610a4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190611d0e565b5050565b5f546001600160a01b03163314610a9e576040516330cd747160e01b815260040160405180910390fd5b5f5b8251811015610af8578160055f858481518110610abf57610abf611d40565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610aa0565b505050565b5f61056233848461119e565b5f546001600160a01b03163314610b33576040516330cd747160e01b815260040160405180910390fd5b6015545f805b83811015610c9b57848482818110610b5357610b53611d40565b610b669260409091020135905083611cfb565b9150610b746009600a611cd6565b610b8290633b9aca00611ce4565b610b8c8385611cfb565b1115610bab5760405163622e044b60e01b815260040160405180910390fd5b848482818110610bbd57610bbd611d40565b9050604002015f013560015f878785818110610bdb57610bdb611d40565b9050604002016020016020810190610bf391906119be565b6001600160a01b03166001600160a01b031681526020019081526020015f205f828254610c209190611cfb565b909155508590508482818110610c3857610c38611d40565b9050604002016020016020810190610c5091906119be565b6001600160a01b03165f5f80516020611e43833981519152878785818110610c7a57610c7a611d40565b604080519102929092013582525060200160405180910390a3600101610b39565b508060155f828254610cad9190611cfb565b909155505050505050565b5f546001600160a01b03163314610ce2576040516330cd747160e01b815260040160405180910390fd5b601454600160a01b900460ff1615610d0d5760405163250856ab60e21b815260040160405180910390fd5b345f03610d2d57604051637c946ed760e01b815260040160405180910390fd5b805f03610d4d5760405163ad1991f560e01b815260040160405180910390fd5b610d5833308361119e565b610d8b30737a250d5630b4cf539739df2c5dacb4c659f2488d610d7d6009600a611cd6565b6105a090633b9aca00611ce4565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff9190611d54565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e829190611d54565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ecc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef09190611d54565b601480546001600160a01b03929092166001600160a01b0319909216821790555f908152600360205260409020805460ff19166001179055737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730610f62816001600160a01b03165f9081526001602052604090205490565b5f80610f755f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fdb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110009190611d6f565b505060145460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190611d0e565b50506014805462ff00ff60a01b19166201000160a01b17905543600755565b5f546001600160a01b031633146110d2576040516330cd747160e01b815260040160405180910390fd5b60148054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b0383166111175760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661113e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c55760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166111ec5760405163d92e233d60e01b815260040160405180910390fd5b805f0361120c57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0383165f9081526005602052604090205460ff1615801561124c57506001600160a01b0382165f9081526005602052604090205460ff16155b61128a5760405162461bcd60e51b81526004016112819060208082526004908201526373686f6f60e01b604082015260600190565b60405180910390fd5b6112966009600a611cd6565b6112a490633b9aca00611ce4565b601154141580156112cd57506001600160a01b0382165f9081526003602052604090205460ff16155b1561134457601154816112f4846001600160a01b03165f9081526001602052604090205490565b6112fe9190611cfb565b11156113445760405162461bcd60e51b815260206004820152601560248201527445786365656473206d617857616c6c657453697a6560581b6044820152606401611281565b6113506009600a611cd6565b61135e90633b9aca00611ce4565b6010541415801561138757506001600160a01b0383165f9081526003602052604090205460ff16155b156113ce576010548111156113ce5760405162461bcd60e51b815260206004820152600d60248201526c08af0c6cacac8e640dac2f0a8f609b1b6044820152606401611281565b305f90815260016020526040902054601454600160a81b900460ff161580156113f957506012548110155b801561140e5750601454600160b01b900460ff165b801561141d5750600e54600f54115b801561143657506014546001600160a01b038481169116145b801561145a57506001600160a01b0384165f9081526004602052604090205460ff16155b1561148e5761147c61147783611472846013546116ef565b6116ef565b611706565b47801561148c5761148c816118af565b505b6014545f90600160a81b900460ff161580156114c257506001600160a01b0385165f9081526004602052604090205460ff16155b80156114e657506001600160a01b0384165f9081526004602052604090205460ff16155b156115dd576014546001600160a01b0390811690851603611535576064600d54600f54116115165760095461151a565b600b545b6115249085611ce4565b61152e9190611d9a565b90506115dd565b6014546001600160a01b03908116908616036115dd5743600754601961155b9190611cfb565b111561159b57833b1561159b5760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606401611281565b6064600c54600f54116115b0576008546115b4565b600a545b6115be9085611ce4565b6115c89190611d9a565b9050600f5f81546115d890611db9565b909155505b801561164357305f908152600160205260409020546115fd908290611cfb565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611e438339815191529061163a9085815260200190565b60405180910390a35b6001600160a01b0385165f90815260016020526040902054611666908490611be3565b6001600160a01b038087165f9081526001602052604080822093909355908616815220548190611697908590611cfb565b6116a19190611be3565b6001600160a01b038086165f8181526001602052604090209290925586165f80516020611e438339815191526116d78487611be3565b60405190815260200160405180910390a35050505050565b5f8183116116fd57826116ff565b815b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061174c5761174c611d40565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e09190611d54565b816001815181106117f3576117f3611d40565b60200260200101906001600160a01b031690816001600160a01b03168152505061183230737a250d5630b4cf539739df2c5dacb4c659f2488d846110f0565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906118719085905f90869030904290600401611dd1565b5f604051808303815f87803b158015611888575f80fd5b505af115801561189a573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6006546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610a70573d5f803e3d5ffd5b5f602080835283518060208501525f5b81811015611912578581018301518582016040015282016118f6565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610963575f80fd5b803561195181611932565b919050565b5f8060408385031215611967575f80fd5b823561197281611932565b946020939093013593505050565b5f805f60608486031215611992575f80fd5b833561199d81611932565b925060208401356119ad81611932565b929592945050506040919091013590565b5f602082840312156119ce575f80fd5b81356116ff81611932565b5f602082840312156119e9575f80fd5b5035919050565b5f8060408385031215611a01575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b8015158114610963575f80fd5b803561195181611a24565b5f8060408385031215611a4d575f80fd5b823567ffffffffffffffff80821115611a64575f80fd5b818501915085601f830112611a77575f80fd5b8135602082821115611a8b57611a8b611a10565b8160051b604051601f19603f83011681018181108682111715611ab057611ab0611a10565b604052928352818301935084810182019289841115611acd575f80fd5b948201945b83861015611af257611ae386611946565b85529482019493820193611ad2565b9650611b019050878201611a31565b9450505050509250929050565b5f8060208385031215611b1f575f80fd5b823567ffffffffffffffff80821115611b36575f80fd5b818501915085601f830112611b49575f80fd5b813581811115611b57575f80fd5b8660208260061b8501011115611b6b575f80fd5b60209290920196919550909350505050565b5f8060408385031215611b8e575f80fd5b8235611b9981611932565b91506020830135611ba981611932565b809150509250929050565b5f60208284031215611bc4575f80fd5b81356116ff81611a24565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561056657610566611bcf565b600181815b80851115611c3057815f1904821115611c1657611c16611bcf565b80851615611c2357918102915b93841c9390800290611bfb565b509250929050565b5f82611c4657506001610566565b81611c5257505f610566565b8160018114611c685760028114611c7257611c8e565b6001915050610566565b60ff841115611c8357611c83611bcf565b50506001821b610566565b5060208310610133831016604e8410600b8410161715611cb1575081810a610566565b611cbb8383611bf6565b805f1904821115611cce57611cce611bcf565b029392505050565b5f6116ff60ff841683611c38565b808202811582820484141761056657610566611bcf565b8082018082111561056657610566611bcf565b5f60208284031215611d1e575f80fd5b81516116ff81611a24565b5f60208284031215611d39575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611d64575f80fd5b81516116ff81611932565b5f805f60608486031215611d81575f80fd5b8351925060208401519150604084015190509250925092565b5f82611db457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60018201611dca57611dca611bcf565b5060010190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e215784516001600160a01b031683529383019391830191600101611dfc565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220875261c06f8d325a2b18d03a275ad1252ea59c122e17a329072c3ed5a792a68164736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c80637437681e116100e7578063a9059cbb11610087578063d163364911610062578063d1633649146104cb578063dd62ed3e146104de578063f782103314610522578063f8b45b0514610541575f80fd5b8063a9059cbb1461046d578063af8deddb1461048c578063baeeeab1146104ac575f80fd5b80638de5c064116100c25780638de5c064146103f057806395d89b41146104045780639be953b31461042f5780639c0db5f31461044e575f80fd5b80637437681e146103a1578063751039fc146103b65780638da5cb5b146103ca575f80fd5b80633bbac5791161015257806362997f8c1161012d57806362997f8c146103305780636481f2011461034557806370a0823114610359578063715018a61461038d575f80fd5b80633bbac579146102b9578063454b0608146102f057806357d0a98214610311575f80fd5b806318160ddd1161018d57806318160ddd1461024b57806323b872dd1461025f578063313ce5671461027e57806335b944bf14610299575f80fd5b80630445b667146101bd57806306fdde03146101e5578063095ea7b31461021c575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101d260125481565b6040519081526020015b60405180910390f35b3480156101f0575f80fd5b506040805180820190915260068152654f7264695a4b60d01b60208201525b6040516101dc91906118e6565b348015610227575f80fd5b5061023b610236366004611956565b610556565b60405190151581526020016101dc565b348015610256575f80fd5b506015546101d2565b34801561026a575f80fd5b5061023b610279366004611980565b61056c565b348015610289575f80fd5b50604051600981526020016101dc565b3480156102a4575f80fd5b5060145461023b90600160b81b900460ff1681565b3480156102c4575f80fd5b5061023b6102d33660046119be565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156102fb575f80fd5b5061030f61030a3660046119d9565b6105ba565b005b34801561031c575f80fd5b5061030f61032b3660046119f0565b610717565b34801561033b575f80fd5b506101d260135481565b348015610350575f80fd5b5061030f610792565b348015610364575f80fd5b506101d26103733660046119be565b6001600160a01b03165f9081526001602052604090205490565b348015610398575f80fd5b5061030f6107e3565b3480156103ac575f80fd5b506101d260105481565b3480156103c1575f80fd5b5061030f610855565b3480156103d5575f80fd5b505f546040516001600160a01b0390911681526020016101dc565b3480156103fb575f80fd5b5061030f610907565b34801561040f575f80fd5b506040805180820190915260038152624f5a4b60e81b602082015261020f565b34801561043a575f80fd5b5061030f6104493660046119be565b610966565b348015610459575f80fd5b5061030f610468366004611a3c565b610a74565b348015610478575f80fd5b5061023b610487366004611956565b610afd565b348015610497575f80fd5b5060145461023b90600160a01b900460ff1681565b3480156104b7575f80fd5b5061030f6104c6366004611b0e565b610b09565b61030f6104d93660046119d9565b610cb8565b3480156104e9575f80fd5b506101d26104f8366004611b7d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561052d575f80fd5b5061030f61053c366004611bb4565b6110a8565b34801561054c575f80fd5b506101d260115481565b5f6105623384846110f0565b5060015b92915050565b6001600160a01b0383165f9081526002602090815260408083203380855292528220546105a59186916105a0908690611be3565b6110f0565b6105b084848461119e565b5060019392505050565b601454600160b81b900460ff166105e457604051631e6a33fb60e01b815260040160405180910390fd5b6015546105f36009600a611cd6565b61060190633b9aca00611ce4565b61060b8383611cfb565b111561062a5760405163622e044b60e01b815260040160405180910390fd5b6040516323b872dd60e01b815233600482015273bfdd36f5ca739344a44758aa44c2cc439f679c8360248201526044810183905273b4fc1fc74effa5dc15a031eb8159302cfa4f1288906323b872dd906064016020604051808303815f875af1158015610699573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bd9190611d0e565b50335f90815260016020526040812080548492906106dc908490611cfb565b909155506106ec90508282611cfb565b60155560405182815233905f905f80516020611e438339815191529060200160405180910390a35050565b5f546001600160a01b03163314610741576040516330cd747160e01b815260040160405180910390fd5b600a5482111561076457604051632bc7b84d60e21b815260040160405180910390fd5b600b5481111561078757604051632bc7b84d60e21b815260040160405180910390fd5b600a91909155600b55565b6006546001600160a01b031633146107bc576040516282b42960e81b815260040160405180910390fd5b600654305f818152600160205260409020546107e1926001600160a01b03169061119e565b565b5f546001600160a01b0316331461080d576040516330cd747160e01b815260040160405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461087f576040516330cd747160e01b815260040160405180910390fd5b61088b6009600a611cd6565b61089990633b9aca00611ce4565b6010556108a86009600a611cd6565b6108b690633b9aca00611ce4565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108e66009600a611cd6565b6108f490633b9aca00611ce4565b60405190815260200160405180910390a1565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610951576040519150601f19603f3d011682016040523d82523d5f602084013e610956565b606091505b5050905080610963575f80fd5b50565b306001600160a01b0382160361098f576040516314e1dbf760e11b815260040160405180910390fd5b6006546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156109e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190611d29565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610a4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190611d0e565b5050565b5f546001600160a01b03163314610a9e576040516330cd747160e01b815260040160405180910390fd5b5f5b8251811015610af8578160055f858481518110610abf57610abf611d40565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610aa0565b505050565b5f61056233848461119e565b5f546001600160a01b03163314610b33576040516330cd747160e01b815260040160405180910390fd5b6015545f805b83811015610c9b57848482818110610b5357610b53611d40565b610b669260409091020135905083611cfb565b9150610b746009600a611cd6565b610b8290633b9aca00611ce4565b610b8c8385611cfb565b1115610bab5760405163622e044b60e01b815260040160405180910390fd5b848482818110610bbd57610bbd611d40565b9050604002015f013560015f878785818110610bdb57610bdb611d40565b9050604002016020016020810190610bf391906119be565b6001600160a01b03166001600160a01b031681526020019081526020015f205f828254610c209190611cfb565b909155508590508482818110610c3857610c38611d40565b9050604002016020016020810190610c5091906119be565b6001600160a01b03165f5f80516020611e43833981519152878785818110610c7a57610c7a611d40565b604080519102929092013582525060200160405180910390a3600101610b39565b508060155f828254610cad9190611cfb565b909155505050505050565b5f546001600160a01b03163314610ce2576040516330cd747160e01b815260040160405180910390fd5b601454600160a01b900460ff1615610d0d5760405163250856ab60e21b815260040160405180910390fd5b345f03610d2d57604051637c946ed760e01b815260040160405180910390fd5b805f03610d4d5760405163ad1991f560e01b815260040160405180910390fd5b610d5833308361119e565b610d8b30737a250d5630b4cf539739df2c5dacb4c659f2488d610d7d6009600a611cd6565b6105a090633b9aca00611ce4565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff9190611d54565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e829190611d54565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ecc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef09190611d54565b601480546001600160a01b03929092166001600160a01b0319909216821790555f908152600360205260409020805460ff19166001179055737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730610f62816001600160a01b03165f9081526001602052604090205490565b5f80610f755f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fdb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110009190611d6f565b505060145460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190611d0e565b50506014805462ff00ff60a01b19166201000160a01b17905543600755565b5f546001600160a01b031633146110d2576040516330cd747160e01b815260040160405180910390fd5b60148054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b0383166111175760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661113e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c55760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166111ec5760405163d92e233d60e01b815260040160405180910390fd5b805f0361120c57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0383165f9081526005602052604090205460ff1615801561124c57506001600160a01b0382165f9081526005602052604090205460ff16155b61128a5760405162461bcd60e51b81526004016112819060208082526004908201526373686f6f60e01b604082015260600190565b60405180910390fd5b6112966009600a611cd6565b6112a490633b9aca00611ce4565b601154141580156112cd57506001600160a01b0382165f9081526003602052604090205460ff16155b1561134457601154816112f4846001600160a01b03165f9081526001602052604090205490565b6112fe9190611cfb565b11156113445760405162461bcd60e51b815260206004820152601560248201527445786365656473206d617857616c6c657453697a6560581b6044820152606401611281565b6113506009600a611cd6565b61135e90633b9aca00611ce4565b6010541415801561138757506001600160a01b0383165f9081526003602052604090205460ff16155b156113ce576010548111156113ce5760405162461bcd60e51b815260206004820152600d60248201526c08af0c6cacac8e640dac2f0a8f609b1b6044820152606401611281565b305f90815260016020526040902054601454600160a81b900460ff161580156113f957506012548110155b801561140e5750601454600160b01b900460ff165b801561141d5750600e54600f54115b801561143657506014546001600160a01b038481169116145b801561145a57506001600160a01b0384165f9081526004602052604090205460ff16155b1561148e5761147c61147783611472846013546116ef565b6116ef565b611706565b47801561148c5761148c816118af565b505b6014545f90600160a81b900460ff161580156114c257506001600160a01b0385165f9081526004602052604090205460ff16155b80156114e657506001600160a01b0384165f9081526004602052604090205460ff16155b156115dd576014546001600160a01b0390811690851603611535576064600d54600f54116115165760095461151a565b600b545b6115249085611ce4565b61152e9190611d9a565b90506115dd565b6014546001600160a01b03908116908616036115dd5743600754601961155b9190611cfb565b111561159b57833b1561159b5760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606401611281565b6064600c54600f54116115b0576008546115b4565b600a545b6115be9085611ce4565b6115c89190611d9a565b9050600f5f81546115d890611db9565b909155505b801561164357305f908152600160205260409020546115fd908290611cfb565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611e438339815191529061163a9085815260200190565b60405180910390a35b6001600160a01b0385165f90815260016020526040902054611666908490611be3565b6001600160a01b038087165f9081526001602052604080822093909355908616815220548190611697908590611cfb565b6116a19190611be3565b6001600160a01b038086165f8181526001602052604090209290925586165f80516020611e438339815191526116d78487611be3565b60405190815260200160405180910390a35050505050565b5f8183116116fd57826116ff565b815b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061174c5761174c611d40565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e09190611d54565b816001815181106117f3576117f3611d40565b60200260200101906001600160a01b031690816001600160a01b03168152505061183230737a250d5630b4cf539739df2c5dacb4c659f2488d846110f0565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906118719085905f90869030904290600401611dd1565b5f604051808303815f87803b158015611888575f80fd5b505af115801561189a573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6006546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610a70573d5f803e3d5ffd5b5f602080835283518060208501525f5b81811015611912578581018301518582016040015282016118f6565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610963575f80fd5b803561195181611932565b919050565b5f8060408385031215611967575f80fd5b823561197281611932565b946020939093013593505050565b5f805f60608486031215611992575f80fd5b833561199d81611932565b925060208401356119ad81611932565b929592945050506040919091013590565b5f602082840312156119ce575f80fd5b81356116ff81611932565b5f602082840312156119e9575f80fd5b5035919050565b5f8060408385031215611a01575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b8015158114610963575f80fd5b803561195181611a24565b5f8060408385031215611a4d575f80fd5b823567ffffffffffffffff80821115611a64575f80fd5b818501915085601f830112611a77575f80fd5b8135602082821115611a8b57611a8b611a10565b8160051b604051601f19603f83011681018181108682111715611ab057611ab0611a10565b604052928352818301935084810182019289841115611acd575f80fd5b948201945b83861015611af257611ae386611946565b85529482019493820193611ad2565b9650611b019050878201611a31565b9450505050509250929050565b5f8060208385031215611b1f575f80fd5b823567ffffffffffffffff80821115611b36575f80fd5b818501915085601f830112611b49575f80fd5b813581811115611b57575f80fd5b8660208260061b8501011115611b6b575f80fd5b60209290920196919550909350505050565b5f8060408385031215611b8e575f80fd5b8235611b9981611932565b91506020830135611ba981611932565b809150509250929050565b5f60208284031215611bc4575f80fd5b81356116ff81611a24565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561056657610566611bcf565b600181815b80851115611c3057815f1904821115611c1657611c16611bcf565b80851615611c2357918102915b93841c9390800290611bfb565b509250929050565b5f82611c4657506001610566565b81611c5257505f610566565b8160018114611c685760028114611c7257611c8e565b6001915050610566565b60ff841115611c8357611c83611bcf565b50506001821b610566565b5060208310610133831016604e8410600b8410161715611cb1575081810a610566565b611cbb8383611bf6565b805f1904821115611cce57611cce611bcf565b029392505050565b5f6116ff60ff841683611c38565b808202811582820484141761056657610566611bcf565b8082018082111561056657610566611bcf565b5f60208284031215611d1e575f80fd5b81516116ff81611a24565b5f60208284031215611d39575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611d64575f80fd5b81516116ff81611932565b5f805f60608486031215611d81575f80fd5b8351925060208401519150604084015190509250925092565b5f82611db457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60018201611dca57611dca611bcf565b5060010190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e215784516001600160a01b031683529383019391830191600101611dfc565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220875261c06f8d325a2b18d03a275ad1252ea59c122e17a329072c3ed5a792a68164736f6c63430008180033

Deployed Bytecode Sourcemap

2397:10765:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3915:57;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;3915:57:0;;;;;;;;5197:83;;;;;;;;;;-1:-1:-1;5267:5:0;;;;;;;;;;;;-1:-1:-1;;;5267:5:0;;;;5197:83;;;;;;;:::i;6033:159::-;;;;;;;;;;-1:-1:-1;6033:159:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;6033:159:0;1344:187:1;5474:100:0;;;;;;;;;;-1:-1:-1;5554:12:0;;5474:100;;6200:262;;;;;;;;;;-1:-1:-1;6200:262:0;;;;;:::i;:::-;;:::i;5383:83::-;;;;;;;;;;-1:-1:-1;5383:83:0;;3624:1;2139:36:1;;2127:2;2112:18;5383:83:0;1997:184:1;4317:36:0;;;;;;;;;;-1:-1:-1;4317:36:0;;;;-1:-1:-1;;;4317:36:0;;;;;;12164:86;;;;;;;;;;-1:-1:-1;12164:86:0;;;;;:::i;:::-;-1:-1:-1;;;;;12235:7:0;12211:4;12235:7;;;:4;:7;;;;;;;;;12164:86;8944:451;;;;;;;;;;-1:-1:-1;8944:451:0;;;;;:::i;:::-;;:::i;:::-;;10775:270;;;;;;;;;;-1:-1:-1;10775:270:0;;;;;:::i;:::-;;:::i;3979:54::-;;;;;;;;;;;;;;;;11205:178;;;;;;;;;;;;;:::i;5582:119::-;;;;;;;;;;-1:-1:-1;5582:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5675:18:0;5648:7;5675:18;;;:9;:18;;;;;;;5582:119;1450:148;;;;;;;;;;;;;:::i;3814:49::-;;;;;;;;;;;;;;;;9505:162;;;;;;;;;;;;;:::i;1260:79::-;;;;;;;;;;-1:-1:-1;1298:7:0;1325:6;1260:79;;-1:-1:-1;;;;;1325:6:0;;;3022:51:1;;3010:2;2995:18;1260:79:0;2876:203:1;11053:144:0;;;;;;;;;;;;;:::i;5288:87::-;;;;;;;;;;-1:-1:-1;5360:7:0;;;;;;;;;;;;-1:-1:-1;;;5360:7:0;;;;5288:87;;11391:197;;;;;;;;;;-1:-1:-1;11391:197:0;;;;;:::i;:::-;;:::i;9675:182::-;;;;;;;;;;-1:-1:-1;9675:182:0;;;;;:::i;:::-;;:::i;5709:165::-;;;;;;;;;;-1:-1:-1;5709:165:0;;;;;:::i;:::-;;:::i;4216:19::-;;;;;;;;;;-1:-1:-1;4216:19:0;;;;-1:-1:-1;;;4216:19:0;;;;;;11675:481;;;;;;;;;;-1:-1:-1;11675:481:0;;;;;:::i;:::-;;:::i;9865:902::-;;;;;;:::i;:::-;;:::i;5882:143::-;;;;;;;;;;-1:-1:-1;5882:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5990:18:0;;;5963:7;5990:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5882:143;9403:94;;;;;;;;;;-1:-1:-1;9403:94:0;;;;;:::i;:::-;;:::i;3870:38::-;;;;;;;;;;;;;;;;6033:159;6108:4;6125:37;6134:10;6146:7;6155:6;6125:8;:37::i;:::-;-1:-1:-1;6180:4:0;6033:159;;;;;:::o;6200:262::-;-1:-1:-1;;;;;6344:19:0;;6298:4;6344:19;;;:11;:19;;;;;;;;6332:10;6344:31;;;;;;;;6315:70;;6324:6;;6344:40;;6378:6;;6344:40;:::i;:::-;6315:8;:70::i;:::-;6396:36;6406:6;6414:9;6425:6;6396:9;:36::i;:::-;-1:-1:-1;6450:4:0;6200:262;;;;;:::o;8944:451::-;9002:16;;-1:-1:-1;;;9002:16:0;;;;8997:49;;9027:19;;-1:-1:-1;;;9027:19:0;;;;;;;;;;;8997:49;9083:12;;3685:15;3624:1;3685:2;:15;:::i;:::-;3672:28;;:10;:28;:::i;:::-;9110:22;9126:6;9110:13;:22;:::i;:::-;:36;9106:60;;;9155:11;;-1:-1:-1;;;9155:11:0;;;;;;;;;;;9106:60;9179;;-1:-1:-1;;;9179:60:0;;9207:10;9179:60;;;8139:34:1;3456:42:0;8189:18:1;;;8182:43;8241:18;;;8234:34;;;3540:42:0;;9179:27;;8074:18:1;;9179:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9262:10:0;9252:21;;;;:9;:21;;;;;:31;;9277:6;;9252:21;:31;;9277:6;;9252:31;:::i;:::-;;;;-1:-1:-1;9309:22:0;;-1:-1:-1;9325:6:0;9309:13;:22;:::i;:::-;9294:12;:37;9347:40;;160:25:1;;;9368:10:0;;9364:1;;-1:-1:-1;;;;;;;;;;;9347:40:0;148:2:1;133:18;9347:40:0;;;;;;;8986:409;8944:451;:::o;10775:270::-;1383:6;;-1:-1:-1;;;;;1383:6:0;1393:10;1383:20;1379:43;;1412:10;;-1:-1:-1;;;1412:10:0;;;;;;;;;;;1379:43;10874:12:::1;;10864:7;:22;10860:47;;;10895:12;;-1:-1:-1::0;;;10895:12:0::1;;;;;;;;;;;10860:47;10933:13;;10922:8;:24;10918:49;;;10955:12;;-1:-1:-1::0;;;10955:12:0::1;;;;;;;;;;;10918:49;10980:12;:22:::0;;;;11013:13:::1;:24:::0;10775:270::o;11205:178::-;11269:10;;-1:-1:-1;;;;;11269:10:0;11255;:24;11251:51;;11288:14;;-1:-1:-1;;;11288:14:0;;;;;;;;;;;11251:51;11338:10;;11331:4;5648:7;5675:18;;;:9;:18;;;;;;11313:62;;-1:-1:-1;;;;;11338:10:0;;11313:9;:62::i;:::-;11205:178::o;1450:148::-;1383:6;;-1:-1:-1;;;;;1383:6:0;1393:10;1383:20;1379:43;;1412:10;;-1:-1:-1;;;1412:10:0;;;;;;;;;;;1379:43;1557:1:::1;1541:6:::0;;1520:40:::1;::::0;-1:-1:-1;;;;;1541:6:0;;::::1;::::0;1520:40:::1;::::0;1557:1;;1520:40:::1;1588:1;1571:19:::0;;-1:-1:-1;;;;;;1571:19:0::1;::::0;;1450:148::o;9505:162::-;1383:6;;-1:-1:-1;;;;;1383:6:0;1393:10;1383:20;1379:43;;1412:10;;-1:-1:-1;;;1412:10:0;;;;;;;;;;;1379:43;3685:15:::1;3624:1;3685:2;:15;:::i;:::-;3672:28;::::0;:10:::1;:28;:::i;:::-;9559:5;:19:::0;3685:15:::1;3624:1;3685:2;:15;:::i;:::-;3672:28;::::0;:10:::1;:28;:::i;:::-;9589:9;:23:::0;9628:31:::1;3685:15;3624:1;3685:2;:15;:::i;:::-;3672:28;::::0;:10:::1;:28;:::i;:::-;9628:31;::::0;160:25:1;;;148:2;133:18;9628:31:0::1;;;;;;;9505:162::o:0;11053:144::-;11113:10;;:49;;11096:12;;-1:-1:-1;;;;;11113:10:0;;11136:21;;11096:12;11113:49;11096:12;11113:49;11136:21;11113:10;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11095:67;;;11181:7;11173:16;;;;;;11084:113;11053:144::o;11391:197::-;11472:4;-1:-1:-1;;;;;11455:22:0;;;11451:44;;11486:9;;-1:-1:-1;;;11486:9:0;;;;;;;;;;;11451:44;11529:10;;11541:38;;-1:-1:-1;;;11541:38:0;;11573:4;11541:38;;;3022:51:1;-1:-1:-1;;;;;11506:22:0;;;;;;11529:10;;;11506:22;;11541:23;;2995:18:1;;11541:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11506:74;;-1:-1:-1;;;;;;11506:74:0;;;;;;;-1:-1:-1;;;;;9128:32:1;;;11506:74:0;;;9110:51:1;9177:18;;;9170:34;9083:18;;11506:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11391:197;:::o;9675:182::-;1383:6;;-1:-1:-1;;;;;1383:6:0;1393:10;1383:20;1379:43;;1412:10;;-1:-1:-1;;;1412:10:0;;;;;;;;;;;1379:43;9762:9:::1;9757:93;9781:5;:12;9777:1;:16;9757:93;;;9832:6;9815:4;:14;9820:5;9826:1;9820:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;9815:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;9815:14:0;:23;;-1:-1:-1;;9815:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;9795:3:0::1;9757:93;;;;9675:182:::0;;:::o;5709:165::-;5787:4;5804:40;5814:10;5826:9;5837:6;5804:9;:40::i;11675:481::-;1383:6;;-1:-1:-1;;;;;1383:6:0;1393:10;1383:20;1379:43;;1412:10;;-1:-1:-1;;;1412:10:0;;;;;;;;;;;1379:43;11770:12:::1;::::0;11746:21:::1;::::0;11823:290:::1;11843:14:::0;;::::1;11823:290;;;11890:3;;11894:1;11890:6;;;;;;;:::i;:::-;11879:24;::::0;11890:6:::1;::::0;;::::1;;:13;::::0;-1:-1:-1;11879:24:0;::::1;:::i;:::-;::::0;-1:-1:-1;3685:15:0::1;3624:1;3685:2;:15;:::i;:::-;3672:28;::::0;:10:::1;:28;:::i;:::-;11922:23;11938:7:::0;11922:13;:23:::1;:::i;:::-;:37;11918:61;;;11968:11;;-1:-1:-1::0;;;11968:11:0::1;;;;;;;;;;;11918:61;12020:3;;12024:1;12020:6;;;;;;;:::i;:::-;;;;;;:13;;;11994:9;:22;12004:3;;12008:1;12004:6;;;;;;;:::i;:::-;;;;;;:11;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11994:22:0::1;-1:-1:-1::0;;;;;11994:22:0::1;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;12074:3:0;;-1:-1:-1;12074:3:0;12078:1;12074:6;;::::1;;;;;:::i;:::-;;;;;;:11;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12053:48:0::1;12070:1;-1:-1:-1::0;;;;;;;;;;;12087:3:0;;12091:1;12087:6;;::::1;;;;;:::i;:::-;;12053:48:::0;;12087:6;::::1;::::0;;;::::1;:13;160:25:1::0;;-1:-1:-1;148:2:1;133:18;12053:48:0::1;;;;;;;11859:3;;11823:290;;;;12141:7;12125:12;;:23;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;11675:481:0:o;9865:902::-;1383:6;;-1:-1:-1;;;;;1383:6:0;1393:10;1383:20;1379:43;;1412:10;;-1:-1:-1;;;1412:10:0;;;;;;;;;;;1379:43;9944:7:::1;::::0;-1:-1:-1;;;9944:7:0;::::1;;;9940:40;;;9960:20;;-1:-1:-1::0;;;9960:20:0::1;;;;;;;;;;;9940:40;9995:9;10008:1;9995:14:::0;9991:38:::1;;10018:11;;-1:-1:-1::0;;;10018:11:0::1;;;;;;;;;;;9991:38;10044:6;10054:1;10044:11:::0;10040:35:::1;;10064:11;;-1:-1:-1::0;;;10064:11:0::1;;;;;;;;;;;10040:35;10086:44;10096:10;10116:4;10123:6;10086:9;:44::i;:::-;10141:65;10158:4;4128:42;3685:15;3624:1;3685:2;:15;:::i;:::-;3672:28;::::0;:10:::1;:28;:::i;10141:65::-;4128:42;-1:-1:-1::0;;;;;10267:26:0::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10249:58:0::1;;10316:4;4128:42;-1:-1:-1::0;;;;;10323:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10249:100;::::0;-1:-1:-1;;;;;;10249:100:0::1;::::0;;;;;;-1:-1:-1;;;;;9833:15:1;;;10249:100:0::1;::::0;::::1;9815:34:1::0;9885:15;;9865:18;;;9858:43;9750:18;;10249:100:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10219:14;:130:::0;;-1:-1:-1;;;;;10219:130:0;;;::::1;-1:-1:-1::0;;;;;;10219:130:0;;::::1;::::0;::::1;::::0;;:14:::1;10360:37:::0;;;:21:::1;:37;::::0;;;;:44;;-1:-1:-1;;10360:44:0::1;10219:130:::0;10360:44:::1;::::0;;4128:42:::1;10417:34;10459:21;10504:4;10511:24;10504:4:::0;-1:-1:-1;;;;;5675:18:0;5648:7;5675:18;;;:9;:18;;;;;;;5582:119;10511:24:::1;10537:1;10540::::0;10543:7:::1;1298::::0;1325:6;-1:-1:-1;;;;;1325:6:0;;1260:79;10543:7:::1;10417:161;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10417:161:0;;;-1:-1:-1;;;;;10271:15:1;;;10417:161:0::1;::::0;::::1;10253:34:1::0;10303:18;;;10296:34;;;;10346:18;;;10339:34;;;;10389:18;;;10382:34;10453:15;;;10432:19;;;10425:44;10552:15:0::1;10485:19:1::0;;;10478:35;10187:19;;10417:161:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10596:14:0::1;::::0;10589:78:::1;::::0;-1:-1:-1;;;10589:78:0;;4128:42:::1;10589:78;::::0;::::1;9110:51:1::0;-1:-1:-1;;9177:18:1;;;9170:34;-1:-1:-1;;;;;10596:14:0;;::::1;::::0;-1:-1:-1;10589:30:0::1;::::0;9083:18:1;;10589:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10678:12:0::1;:19:::0;;-1:-1:-1;;;;10708:14:0;-1:-1:-1;;;10708:14:0;;;10747:12:::1;10733:11;:26:::0;9865:902::o;9403:94::-;1383:6;;-1:-1:-1;;;;;1383:6:0;1393:10;1383:20;1379:43;;1412:10;;-1:-1:-1;;;1412:10:0;;;;;;;;;;;1379:43;9469:16:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;9469:20:0::1;-1:-1:-1::0;;;;9469:20:0;;::::1;::::0;;;::::1;::::0;;9403:94::o;6470:291::-;-1:-1:-1;;;;;6559:19:0;;6555:45;;6587:13;;-1:-1:-1;;;6587:13:0;;;;;;;;;;;6555:45;-1:-1:-1;;;;;6615:21:0;;6611:47;;6645:13;;-1:-1:-1;;;6645:13:0;;;;;;;;;;;6611:47;-1:-1:-1;;;;;6669:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6721:32;;160:25:1;;;6721:32:0;;133:18:1;6721:32:0;;;;;;;6470:291;;;:::o;6769:2167::-;-1:-1:-1;;;;;6853:18:0;;6849:44;;6880:13;;-1:-1:-1;;;6880:13:0;;;;;;;;;;;6849:44;-1:-1:-1;;;;;6908:16:0;;6904:42;;6933:13;;-1:-1:-1;;;6933:13:0;;;;;;;;;;;6904:42;6961:6;6971:1;6961:11;6957:36;;6981:12;;-1:-1:-1;;;6981:12:0;;;;;;;;;;;6957:36;-1:-1:-1;;;;;7015:10:0;;;;;;:4;:10;;;;;;;;7014:11;:24;;;;-1:-1:-1;;;;;;7030:8:0;;;;;;:4;:8;;;;;;;;7029:9;7014:24;7006:41;;;;-1:-1:-1;;;7006:41:0;;;;;;11316:2:1;11298:21;;;11355:1;11335:18;;;11328:29;-1:-1:-1;;;11388:2:1;11373:18;;11366:34;11432:2;11417:18;;11114:327;7006:41:0;;;;;;;;;3685:15;3624:1;3685:2;:15;:::i;:::-;3672:28;;:10;:28;:::i;:::-;7064:9;;:24;;:54;;;;-1:-1:-1;;;;;;7093:25:0;;;;;;:21;:25;;;;;;;;7092:26;7064:54;7060:156;;;7169:9;;7159:6;7143:13;7153:2;-1:-1:-1;;;;;5675:18:0;5648:7;5675:18;;;:9;:18;;;;;;;5582:119;7143:13;:22;;;;:::i;:::-;:35;;7135:69;;;;-1:-1:-1;;;7135:69:0;;11648:2:1;7135:69:0;;;11630:21:1;11687:2;11667:18;;;11660:30;-1:-1:-1;;;11706:18:1;;;11699:51;11767:18;;7135:69:0;11446:345:1;7135:69:0;3685:15;3624:1;3685:2;:15;:::i;:::-;3672:28;;:10;:28;:::i;:::-;7232:5;;:20;;:52;;;;-1:-1:-1;;;;;;7257:27:0;;;;;;:21;:27;;;;;;;;7256:28;7232:52;7228:126;;;7319:5;;7309:6;:15;;7301:41;;;;-1:-1:-1;;;7301:41:0;;11998:2:1;7301:41:0;;;11980:21:1;12037:2;12017:18;;;12010:30;-1:-1:-1;;;12056:18:1;;;12049:43;12109:18;;7301:41:0;11796:337:1;7301:41:0;7415:4;7366:28;5675:18;;;:9;:18;;;;;;7451:7;;-1:-1:-1;;;7451:7:0;;;;7450:8;:49;;;;;7486:13;;7462:20;:37;;7450:49;:65;;;;-1:-1:-1;7503:12:0;;-1:-1:-1;;;7503:12:0;;;;7450:65;:99;;;;;7531:18;;7519:9;;:30;7450:99;:140;;;;-1:-1:-1;7576:14:0;;-1:-1:-1;;;;;7570:20:0;;;7576:14;;7570:20;7450:140;:169;;;;-1:-1:-1;;;;;;7595:24:0;;;;;;:18;:24;;;;;;;;7594:25;7450:169;7432:472;;;7646:71;7664:52;7669:6;7677:38;7682:20;7704:10;;7677:4;:38::i;:::-;7664:4;:52::i;:::-;7646:17;:71::i;:::-;7761:21;7801:22;;7797:96;;7844:33;7858:18;7844:13;:33::i;:::-;7631:273;7432:472;7953:7;;7916:17;;-1:-1:-1;;;7953:7:0;;;;7952:8;:37;;;;-1:-1:-1;;;;;;7965:24:0;;;;;;:18;:24;;;;;;;;7964:25;7952:37;:64;;;;-1:-1:-1;;;;;;7994:22:0;;;;;;:18;:22;;;;;;;;7993:23;7952:64;7948:632;;;8064:14;;-1:-1:-1;;;;;8064:14:0;;;8058:20;;;;8054:515;;8191:3;8135:16;;8123:9;;:28;8122:64;;8171:15;;8122:64;;;8155:13;;8122:64;8112:75;;:6;:75;:::i;:::-;8111:83;;;;:::i;:::-;8099:95;;8054:515;;;8261:14;;-1:-1:-1;;;;;8261:14:0;;;8253:22;;;;8249:320;;8319:12;8300:11;;8314:2;8300:16;;;;:::i;:::-;:31;8296:117;;;12506:20;;12554:8;8356:37;;;;-1:-1:-1;;;8356:37:0;;12562:2:1;8356:37:0;;;12544:21:1;12601:1;12581:18;;;12574:29;-1:-1:-1;;;12619:18:1;;;12612:38;12667:18;;8356:37:0;12360:331:1;8356:37:0;8520:3;8467:15;;8455:9;;:27;8454:61;;8501:14;;8454:61;;;8486:12;;8454:61;8444:72;;:6;:72;:::i;:::-;8443:80;;;;:::i;:::-;8431:92;;8544:9;;8542:11;;;;;:::i;:::-;;;;-1:-1:-1;8249:320:0;8596:13;;8592:169;;8671:4;8653:24;;;;:9;:24;;;;;;:36;;8680:9;;8653:36;:::i;:::-;8644:4;8626:24;;;;:9;:24;;;;;;;:63;;;;8709:40;;-1:-1:-1;;;;;8709:40:0;;;-1:-1:-1;;;;;;;;;;;8709:40:0;;;8739:9;160:25:1;;148:2;133:18;;14:177;8709:40:0;;;;;;;;8592:169;-1:-1:-1;;;;;8789:15:0;;;;;;:9;:15;;;;;;:24;;8807:6;;8789:24;:::i;:::-;-1:-1:-1;;;;;8771:15:0;;;;;;;:9;:15;;;;;;:42;;;;8840:13;;;;;;;8865:9;;8840:22;;8856:6;;8840:22;:::i;:::-;:34;;;;:::i;:::-;-1:-1:-1;;;;;8824:13:0;;;;;;;:9;:13;;;;;:50;;;;8890:38;;-1:-1:-1;;;;;;;;;;;8909:18:0;8918:9;8909:6;:18;:::i;:::-;8890:38;;160:25:1;;;148:2;133:18;8890:38:0;;;;;;;6838:2098;;6769:2167;;;:::o;12258:108::-;12316:7;12348:1;12344;:5;12343:15;;12357:1;12343:15;;;12353:1;12343:15;12336:22;12258:108;-1:-1:-1;;;12258:108:0:o;12578:480::-;12645:7;:14;;-1:-1:-1;;;;12645:14:0;-1:-1:-1;;;12645:14:0;;;12694:16;;;12708:1;12694:16;;;;;;;;-1:-1:-1;;12694:16:0;;;;;;;;;;-1:-1:-1;12694:16:0;12670:40;;12739:4;12721;12726:1;12721:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12721:23:0;;;-1:-1:-1;;;;;12721:23:0;;;;;4128:42;-1:-1:-1;;;;;12765:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12755:4;12760:1;12755:7;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;12755:35:0;;;-1:-1:-1;;;;;12755:35:0;;;;;12801:65;12818:4;4128:42;12854:11;12801:8;:65::i;:::-;12877:147;;-1:-1:-1;;;12877:147:0;;4128:42;;12877:69;;:147;;12961:11;;12974:1;;12977:4;;12991;;12998:15;;12877:147;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13035:7:0;:15;;-1:-1:-1;;;;13035:15:0;;;-1:-1:-1;;;;12578:480:0:o;13066:93::-;13124:10;;:27;;-1:-1:-1;;;;;13124:10:0;;;;:27;;;;;13144:6;;13124:10;:27;:10;:27;13144:6;13124:10;:27;;;;;;;;;;;;;;;;;;;196:548:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:247::-;2245:6;2298:2;2286:9;2277:7;2273:23;2269:32;2266:52;;;2314:1;2311;2304:12;2266:52;2353:9;2340:23;2372:31;2397:5;2372:31;:::i;2438:180::-;2497:6;2550:2;2538:9;2529:7;2525:23;2521:32;2518:52;;;2566:1;2563;2556:12;2518:52;-1:-1:-1;2589:23:1;;2438:180;-1:-1:-1;2438:180:1:o;2623:248::-;2691:6;2699;2752:2;2740:9;2731:7;2727:23;2723:32;2720:52;;;2768:1;2765;2758:12;2720:52;-1:-1:-1;;2791:23:1;;;2861:2;2846:18;;;2833:32;;-1:-1:-1;2623:248:1:o;3084:127::-;3145:10;3140:3;3136:20;3133:1;3126:31;3176:4;3173:1;3166:15;3200:4;3197:1;3190:15;3216:118;3302:5;3295:13;3288:21;3281:5;3278:32;3268:60;;3324:1;3321;3314:12;3339:128;3404:20;;3433:28;3404:20;3433:28;:::i;3472:1191::-;3562:6;3570;3623:2;3611:9;3602:7;3598:23;3594:32;3591:52;;;3639:1;3636;3629:12;3591:52;3679:9;3666:23;3708:18;3749:2;3741:6;3738:14;3735:34;;;3765:1;3762;3755:12;3735:34;3803:6;3792:9;3788:22;3778:32;;3848:7;3841:4;3837:2;3833:13;3829:27;3819:55;;3870:1;3867;3860:12;3819:55;3906:2;3893:16;3928:4;3951:2;3947;3944:10;3941:36;;;3957:18;;:::i;:::-;4003:2;4000:1;3996:10;4035:2;4029:9;4098:2;4094:7;4089:2;4085;4081:11;4077:25;4069:6;4065:38;4153:6;4141:10;4138:22;4133:2;4121:10;4118:18;4115:46;4112:72;;;4164:18;;:::i;:::-;4200:2;4193:22;4250:18;;;4284:15;;;;-1:-1:-1;4326:11:1;;;4322:20;;;4354:19;;;4351:39;;;4386:1;4383;4376:12;4351:39;4410:11;;;;4430:148;4446:6;4441:3;4438:15;4430:148;;;4512:23;4531:3;4512:23;:::i;:::-;4500:36;;4463:12;;;;4556;;;;4430:148;;;4597:6;-1:-1:-1;4622:35:1;;-1:-1:-1;4638:18:1;;;4622:35;:::i;:::-;4612:45;;;;;;3472:1191;;;;;:::o;4668:642::-;4781:6;4789;4842:2;4830:9;4821:7;4817:23;4813:32;4810:52;;;4858:1;4855;4848:12;4810:52;4898:9;4885:23;4927:18;4968:2;4960:6;4957:14;4954:34;;;4984:1;4981;4974:12;4954:34;5022:6;5011:9;5007:22;4997:32;;5067:7;5060:4;5056:2;5052:13;5048:27;5038:55;;5089:1;5086;5079:12;5038:55;5129:2;5116:16;5155:2;5147:6;5144:14;5141:34;;;5171:1;5168;5161:12;5141:34;5224:7;5219:2;5209:6;5206:1;5202:14;5198:2;5194:23;5190:32;5187:45;5184:65;;;5245:1;5242;5235:12;5184:65;5276:2;5268:11;;;;;5298:6;;-1:-1:-1;4668:642:1;;-1:-1:-1;;;;4668:642:1:o;5315:388::-;5383:6;5391;5444:2;5432:9;5423:7;5419:23;5415:32;5412:52;;;5460:1;5457;5450:12;5412:52;5499:9;5486:23;5518:31;5543:5;5518:31;:::i;:::-;5568:5;-1:-1:-1;5625:2:1;5610:18;;5597:32;5638:33;5597:32;5638:33;:::i;:::-;5690:7;5680:17;;;5315:388;;;;;:::o;5708:241::-;5764:6;5817:2;5805:9;5796:7;5792:23;5788:32;5785:52;;;5833:1;5830;5823:12;5785:52;5872:9;5859:23;5891:28;5913:5;5891:28;:::i;5954:127::-;6015:10;6010:3;6006:20;6003:1;5996:31;6046:4;6043:1;6036:15;6070:4;6067:1;6060:15;6086:128;6153:9;;;6174:11;;;6171:37;;;6188:18;;:::i;6219:416::-;6308:1;6345:5;6308:1;6359:270;6380:7;6370:8;6367:21;6359:270;;;6439:4;6435:1;6431:6;6427:17;6421:4;6418:27;6415:53;;;6448:18;;:::i;:::-;6498:7;6488:8;6484:22;6481:55;;;6518:16;;;;6481:55;6597:22;;;;6557:15;;;;6359:270;;;6363:3;6219:416;;;;;:::o;6640:806::-;6689:5;6719:8;6709:80;;-1:-1:-1;6760:1:1;6774:5;;6709:80;6808:4;6798:76;;-1:-1:-1;6845:1:1;6859:5;;6798:76;6890:4;6908:1;6903:59;;;;6976:1;6971:130;;;;6883:218;;6903:59;6933:1;6924:10;;6947:5;;;6971:130;7008:3;6998:8;6995:17;6992:43;;;7015:18;;:::i;:::-;-1:-1:-1;;7071:1:1;7057:16;;7086:5;;6883:218;;7185:2;7175:8;7172:16;7166:3;7160:4;7157:13;7153:36;7147:2;7137:8;7134:16;7129:2;7123:4;7120:12;7116:35;7113:77;7110:159;;;-1:-1:-1;7222:19:1;;;7254:5;;7110:159;7301:34;7326:8;7320:4;7301:34;:::i;:::-;7371:6;7367:1;7363:6;7359:19;7350:7;7347:32;7344:58;;;7382:18;;:::i;:::-;7420:20;;6640:806;-1:-1:-1;;;6640:806:1:o;7451:140::-;7509:5;7538:47;7579:4;7569:8;7565:19;7559:4;7538:47;:::i;7596:168::-;7669:9;;;7700;;7717:15;;;7711:22;;7697:37;7687:71;;7738:18;;:::i;7769:125::-;7834:9;;;7855:10;;;7852:36;;;7868:18;;:::i;8279:245::-;8346:6;8399:2;8387:9;8378:7;8374:23;8370:32;8367:52;;;8415:1;8412;8405:12;8367:52;8447:9;8441:16;8466:28;8488:5;8466:28;:::i;8739:184::-;8809:6;8862:2;8850:9;8841:7;8837:23;8833:32;8830:52;;;8878:1;8875;8868:12;8830:52;-1:-1:-1;8901:16:1;;8739:184;-1:-1:-1;8739:184:1:o;9215:127::-;9276:10;9271:3;9267:20;9264:1;9257:31;9307:4;9304:1;9297:15;9331:4;9328:1;9321:15;9347:251;9417:6;9470:2;9458:9;9449:7;9445:23;9441:32;9438:52;;;9486:1;9483;9476:12;9438:52;9518:9;9512:16;9537:31;9562:5;9537:31;:::i;10524:306::-;10612:6;10620;10628;10681:2;10669:9;10660:7;10656:23;10652:32;10649:52;;;10697:1;10694;10687:12;10649:52;10726:9;10720:16;10710:26;;10776:2;10765:9;10761:18;10755:25;10745:35;;10820:2;10809:9;10805:18;10799:25;10789:35;;10524:306;;;;;:::o;12138:217::-;12178:1;12204;12194:132;;12248:10;12243:3;12239:20;12236:1;12229:31;12283:4;12280:1;12273:15;12311:4;12308:1;12301:15;12194:132;-1:-1:-1;12340:9:1;;12138:217::o;12696:135::-;12735:3;12756:17;;;12753:43;;12776:18;;:::i;:::-;-1:-1:-1;12823:1:1;12812:13;;12696:135::o;12836:980::-;13098:4;13146:3;13135:9;13131:19;13177:6;13166:9;13159:25;13203:2;13241:6;13236:2;13225:9;13221:18;13214:34;13284:3;13279:2;13268:9;13264:18;13257:31;13308:6;13343;13337:13;13374:6;13366;13359:22;13412:3;13401:9;13397:19;13390:26;;13451:2;13443:6;13439:15;13425:29;;13472:1;13482:195;13496:6;13493:1;13490:13;13482:195;;;13561:13;;-1:-1:-1;;;;;13557:39:1;13545:52;;13652:15;;;;13617:12;;;;13593:1;13511:9;13482:195;;;-1:-1:-1;;;;;;;13733:32:1;;;;13728:2;13713:18;;13706:60;-1:-1:-1;;;13797:3:1;13782:19;13775:35;13694:3;12836:980;-1:-1:-1;;;12836:980:1:o

Swarm Source

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