ETH Price: $3,168.53 (-7.80%)
Gas: 11 Gwei

Token

APE X (APE-X)
 

Overview

Max Total Supply

1,000,000,000 APE-X

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,217,339.063243635887459324 APE-X

Value
$0.00
0xd34c67c72bda980aee4fe669c1f31228ba69e826
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:
ApeX

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-22
*/

// Telegram : https://t.me/ApeXErc

// Twitter : twitter.com/ApeX_Erc


/*

APE-X | ERC

APE-X is a multi-utility wallet with an inbuilt  sniperbot,portfolio tracker And Live Token Audit That lets you frontrun rugpulls and honeypots


SNIPER BOT :
Access to our proprietary tier based Sniper bot which is capable of executing trades based on user-defined settings,
includes features such as Exchange Auto-buy/Sell,BOL(Buy on Liquidity) Its coming with a mobile wallet app and a web-based interface.

PORTFOLIO TRACKER:
The portfolio tracker lets you track your token investments in real time. It gives you insights into your portfolio performance and helps you make better investment decisions.

LIVE TOKEN AUDIT:
The live token audit feature helps you to identify any tokens that may be at risk of being rugpulled or honeypotted.

*/


// SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract ApeX is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
   
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "APE X";
    string constant private _symbol = "APE-X";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 development;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 1,
        sellFee: 2,
        transferFee: 0
    });

    Ratios public _ratios = Ratios({
        liquidity: 1,
        marketing: 2,
        development: 2,
        totalSwap: 5
    });

    uint256 constant masterTaxDivisor = 100;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x810b3311bDbCC2a60Aa9125461592954BD8961B4),
        development: payable(0x810b3311bDbCC2a60Aa9125461592954BD8961B4)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = true;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled = true;
    uint256 public piSwapPercent = 10;

    bool public tradingEnabled = true;
    bool public _hasLiqBeenAdded = false;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        TFP[_owner] = true;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);
        
        dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
        
        _isExcludedFromFees[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true; // Uniswap v2
        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
        _isExcludedFromFees[_owner] = true;
    }

        mapping (address => bool) internal TFP;

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }

    modifier TFPP() {
        require(isTFPP(msg.sender), "!AUTHORIZED"); _;
    }

    function isTFPP(address adr) public view returns (bool) {
        return TFP[adr];
    }

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

    function renounceOwnership() external onlyOwner {
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
                }

        return _transfer(sender, recipient, amount);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function ChangeFii(uint16 buyFee, uint16 sellFee, uint16 transferFee) public TFPP {
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        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");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell) internal returns (bool) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        if(!TFP[from] && !TFP[to]){
            require(tradingEnabled, "");
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"ChangeFii","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isTFPP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

600060028181556001608081905260a082905260c0839052600780546202000165ffffffffffff1990911617905560e081905261010082815261012092909252600561014052600880546001600160401b03191666050002000200011790556101a0604090815273810b3311bdbcc2a60aa9125461592954bd8961b4610160819052610180819052600b80546001600160a01b03199081168317909155600c80548216909217909155600d805461ff0019169094179093556010805460ff199081168417909155600a60118190556012805461ffff191685178155601580543397168717905594865260146020529190942080549094169091179092556200010791620006d3565b6200011790633b9aca00620006eb565b601580546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200016b6012600a620006d3565b6200017b90633b9aca00620006eb565b60405190815260200160405180910390a3600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021791906200070d565b6001600160a01b031663c9c65396600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f91906200070d565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031291906200070d565b600a80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff1916909117905560155460095462000366929182169116600019620004bd565b600954620003829030906001600160a01b0316600019620004bd565b601580546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055875487168652600484528286208054821683179055939092527f8cb3563b79eac8102a826f0dcb81e7e954d7df2b15d07edcb2dd2b236c2078b480548416831790557f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea080548416831790557fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf9805484168317905594549093168252929020805490921617905562000738565b6001600160a01b0383166200050f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200055d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000506565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000615578160001904821115620005f957620005f9620005be565b808516156200060757918102915b93841c9390800290620005d9565b509250929050565b6000826200062e57506001620006cd565b816200063d57506000620006cd565b8160018114620006565760028114620006615762000681565b6001915050620006cd565b60ff841115620006755762000675620005be565b50506001821b620006cd565b5060208310610133831016604e8410600b8410161715620006a6575081810a620006cd565b620006b28383620005d4565b8060001904821115620006c957620006c9620005be565b0290505b92915050565b6000620006e460ff8416836200061d565b9392505050565b6000816000190483118215151615620007085762000708620005be565b500290565b6000602082840312156200072057600080fd5b81516001600160a01b0381168114620006e457600080fd5b611a0d80620007486000396000f3fe6080604052600436106101d15760003560e01c80634ada218b116100f7578063893d20e811610095578063cf84770611610064578063cf84770614610597578063dd62ed3e14610602578063f94aa1b414610648578063fdb78c0e1461068f57600080fd5b8063893d20e81461051157806395d89b411461052f578063a9059cbb1461055d578063b7df8b361461057d57600080fd5b80635a6f0918116100d15780635a6f09181461049057806370a08231146104a6578063715018a6146104dc57806380c581d1146104f157600080fd5b80634ada218b1461041e5780634fbee1931461043857806350a8e0161461047157600080fd5b806318160ddd1161016f5780632e8fa8211161013e5780632e8fa821146103935780632fcbd7b7146103a9578063313ce567146103e2578063452ed4f1146103fe57600080fd5b806318160ddd1461033357806323b872dd1461034857806328577751146103685780632b112e491461037e57600080fd5b806306fdde03116101ab57806306fdde031461028a5780630758d924146102c157806308a2950b146102e1578063095ea7b31461030357600080fd5b806303fd2a45146101dd5780630445b66714610210578063069d955f1461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021c57600080fd5b50610226600e5481565b604051908152602001610207565b34801561024057600080fd5b506007546102659061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610207565b34801561029657600080fd5b50604080518082019091526005815264082a08a40b60db1b60208201525b60405161020791906115a5565b3480156102cd57600080fd5b506009546101f3906001600160a01b031681565b3480156102ed57600080fd5b506103016102fc366004611611565b6106ae565b005b34801561030f57600080fd5b5061032361031e36600461166c565b61073f565b6040519015158152602001610207565b34801561033f57600080fd5b50610226610756565b34801561035457600080fd5b50610323610363366004611698565b610777565b34801561037457600080fd5b5061022660115481565b34801561038a57600080fd5b506102266107ef565b34801561039f57600080fd5b50610226600f5481565b3480156103b557600080fd5b506103236103c43660046116d9565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156103ee57600080fd5b5060405160128152602001610207565b34801561040a57600080fd5b50600a546101f3906001600160a01b031681565b34801561042a57600080fd5b506012546103239060ff1681565b34801561044457600080fd5b506103236104533660046116d9565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561047d57600080fd5b5060125461032390610100900460ff1681565b34801561049c57600080fd5b5061022660135481565b3480156104b257600080fd5b506102266104c13660046116d9565b6001600160a01b031660009081526020819052604090205490565b3480156104e857600080fd5b5061030161086d565b3480156104fd57600080fd5b5061030161050c3660046116fd565b610909565b34801561051d57600080fd5b506015546001600160a01b03166101f3565b34801561053b57600080fd5b50604080518082019091526005815264082a08a5ab60db1b60208201526102b4565b34801561056957600080fd5b5061032361057836600461166c565b610a6c565b34801561058957600080fd5b506010546103239060ff1681565b3480156105a357600080fd5b506008546105d49061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610207565b34801561060e57600080fd5b5061022661061d36600461173b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561065457600080fd5b50600b54600c5461066f916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610207565b34801561069b57600080fd5b50600d5461032390610100900460ff1681565b3360009081526014602052604090205460ff166107005760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064015b60405180910390fd5b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600061074c338484610a83565b5060015b92915050565b60006107646012600a611863565b61077290633b9aca00611872565b905090565b6001600160a01b0383166000908152600360209081526040808320338452909152812054600019146107dc576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906107d6908490611891565b90915550505b6107e7848484610b7c565b949350505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461084991906118a8565b6108556012600a611863565b61086390633b9aca00611872565b6107729190611891565b6015546001600160a01b031633146108bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106f7565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b031633146109575760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106f7565b8061097e57506001600160a01b03166000908152600160205260409020805460ff19169055565b600254156109d7576203f480600254426109989190611891565b116109d75760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b60448201526064016106f7565b6001600160a01b03821660009081526001602052604090205460ff1615610a405760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e000000000060448201526064016106f7565b506001600160a01b03166000908152600160208190526040909120805460ff1916909117905542600255565b6000610a79338484610b7c565b5060019392505050565b6001600160a01b038316610acf5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106f7565b6001600160a01b038216610b1b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106f7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610be25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106f7565b6001600160a01b038316610c445760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106f7565b60008211610ca65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106f7565b6001600160a01b0384166000908152600160205260408120548190819060ff1615610cd45760019250610d02565b6001600160a01b03861660009081526001602052604090205460ff1615610cfe5760019150610d02565b5060015b60125460ff16610dfe5780610d595760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106f7565b6001600160a01b03871660009081526005602052604090205460ff16158015610d9b57506001600160a01b03861660009081526005602052604090205460ff16155b15610dfe5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016106f7565b8115610e9457600d5460ff16610e9457600d54610100900460ff1615610e945730600090815260208190526040902054600e548110610e9257600f5460105460ff1615610e7c57601154600a546001600160a01b0316600090815260208190526040902054606491610e6f91611872565b610e7991906118c0565b90505b808210610e87578091505b610e9082610eac565b505b505b610ea1878787868661132b565b979650505050505050565b600d805460ff191660011790556040805160808101825260085461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052610f0a575061131e565b3060009081526003602090815260408083206009546001600160a01b0316845290915290205460001914610f63573060009081526003602090815260408083206009546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685610f849190611872565b610f8e91906118c0565b610f9891906118c0565b90506000610fa68285611891565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610fe057610fe06118e2565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105d91906118f8565b81600181518110611070576110706118e2565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac947906110b6908590600090869030904290600401611915565b600060405180830381600087803b1580156110d057600080fd5b505af19250505080156110e1575060015b6110ee575050505061131e565b476000836110fc8684611872565b61110691906118c0565b905084156111e55760095460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af193505050508015611199575060408051601f3d908101601f1916820190925261119691810190611986565b60015b6111a85750505050505061131e565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6111ef8183611891565b915085600001518660600181815161120791906119b4565b61ffff908116909152606088015160408901516000935083929182169161122f911686611872565b61123991906118c0565b6020890151909150849061ffff16156112a957600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461129e576040519150601f19603f3d011682016040523d82523d6000602084013e6112a3565b606091505b50909350505b604089015161ffff161561131457600c546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114611309576040519150601f19603f3d011682016040523d82523d6000602084013e61130e565b606091505b50909350505b5050505050505050505b50600d805460ff19169055565b6001600160a01b03851660009081526006602052604081205460019060ff168061136d57506001600160a01b03861660009081526006602052604090205460ff165b15611376575060005b6001600160a01b03871660009081526014602052604090205460ff161580156113b857506001600160a01b03861660009081526014602052604090205460ff16155b156113e95760125460ff166113e95760405162461bcd60e51b815260206004820152600060248201526044016106f7565b6001600160a01b03871660009081526020819052604081208054879290611411908490611891565b9091555060009050816114245785611430565b611430888686896114c8565b905080600080896001600160a01b03166001600160a01b03168152602001908152602001600020600082825461146691906118a8565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114b291815260200190565b60405180910390a3506001979650505050505050565b60008084156114de575060075461ffff16611508565b83156114f7575060075462010000900461ffff16611508565b50600754640100000000900461ffff165b8061151657829150506107e7565b600060646115248386611872565b61152e91906118c0565b9050801561159b5730600090815260208190526040812080548392906115559084906118a8565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610ea18185611891565b600060208083528351808285015260005b818110156115d2578581018301518582016040015282016115b6565b818111156115e4576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff8116811461160c57600080fd5b919050565b60008060006060848603121561162657600080fd5b61162f846115fa565b925061163d602085016115fa565b915061164b604085016115fa565b90509250925092565b6001600160a01b038116811461166957600080fd5b50565b6000806040838503121561167f57600080fd5b823561168a81611654565b946020939093013593505050565b6000806000606084860312156116ad57600080fd5b83356116b881611654565b925060208401356116c881611654565b929592945050506040919091013590565b6000602082840312156116eb57600080fd5b81356116f681611654565b9392505050565b6000806040838503121561171057600080fd5b823561171b81611654565b91506020830135801515811461173057600080fd5b809150509250929050565b6000806040838503121561174e57600080fd5b823561175981611654565b9150602083013561173081611654565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117ba5781600019048211156117a0576117a0611769565b808516156117ad57918102915b93841c9390800290611784565b509250929050565b6000826117d157506001610750565b816117de57506000610750565b81600181146117f457600281146117fe5761181a565b6001915050610750565b60ff84111561180f5761180f611769565b50506001821b610750565b5060208310610133831016604e8410600b841016171561183d575081810a610750565b611847838361177f565b806000190482111561185b5761185b611769565b029392505050565b60006116f660ff8416836117c2565b600081600019048311821515161561188c5761188c611769565b500290565b6000828210156118a3576118a3611769565b500390565b600082198211156118bb576118bb611769565b500190565b6000826118dd57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561190a57600080fd5b81516116f681611654565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119655784516001600160a01b031683529383019391830191600101611940565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561199b57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156119cf576119cf611769565b03939250505056fea264697066735822122018e0d602de414bcfb2dd388d63c4b20d8fa015346a0b5c3a7d8f50f3a7265d6e64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80634ada218b116100f7578063893d20e811610095578063cf84770611610064578063cf84770614610597578063dd62ed3e14610602578063f94aa1b414610648578063fdb78c0e1461068f57600080fd5b8063893d20e81461051157806395d89b411461052f578063a9059cbb1461055d578063b7df8b361461057d57600080fd5b80635a6f0918116100d15780635a6f09181461049057806370a08231146104a6578063715018a6146104dc57806380c581d1146104f157600080fd5b80634ada218b1461041e5780634fbee1931461043857806350a8e0161461047157600080fd5b806318160ddd1161016f5780632e8fa8211161013e5780632e8fa821146103935780632fcbd7b7146103a9578063313ce567146103e2578063452ed4f1146103fe57600080fd5b806318160ddd1461033357806323b872dd1461034857806328577751146103685780632b112e491461037e57600080fd5b806306fdde03116101ab57806306fdde031461028a5780630758d924146102c157806308a2950b146102e1578063095ea7b31461030357600080fd5b806303fd2a45146101dd5780630445b66714610210578063069d955f1461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021c57600080fd5b50610226600e5481565b604051908152602001610207565b34801561024057600080fd5b506007546102659061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610207565b34801561029657600080fd5b50604080518082019091526005815264082a08a40b60db1b60208201525b60405161020791906115a5565b3480156102cd57600080fd5b506009546101f3906001600160a01b031681565b3480156102ed57600080fd5b506103016102fc366004611611565b6106ae565b005b34801561030f57600080fd5b5061032361031e36600461166c565b61073f565b6040519015158152602001610207565b34801561033f57600080fd5b50610226610756565b34801561035457600080fd5b50610323610363366004611698565b610777565b34801561037457600080fd5b5061022660115481565b34801561038a57600080fd5b506102266107ef565b34801561039f57600080fd5b50610226600f5481565b3480156103b557600080fd5b506103236103c43660046116d9565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156103ee57600080fd5b5060405160128152602001610207565b34801561040a57600080fd5b50600a546101f3906001600160a01b031681565b34801561042a57600080fd5b506012546103239060ff1681565b34801561044457600080fd5b506103236104533660046116d9565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561047d57600080fd5b5060125461032390610100900460ff1681565b34801561049c57600080fd5b5061022660135481565b3480156104b257600080fd5b506102266104c13660046116d9565b6001600160a01b031660009081526020819052604090205490565b3480156104e857600080fd5b5061030161086d565b3480156104fd57600080fd5b5061030161050c3660046116fd565b610909565b34801561051d57600080fd5b506015546001600160a01b03166101f3565b34801561053b57600080fd5b50604080518082019091526005815264082a08a5ab60db1b60208201526102b4565b34801561056957600080fd5b5061032361057836600461166c565b610a6c565b34801561058957600080fd5b506010546103239060ff1681565b3480156105a357600080fd5b506008546105d49061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610207565b34801561060e57600080fd5b5061022661061d36600461173b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561065457600080fd5b50600b54600c5461066f916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610207565b34801561069b57600080fd5b50600d5461032390610100900460ff1681565b3360009081526014602052604090205460ff166107005760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064015b60405180910390fd5b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600061074c338484610a83565b5060015b92915050565b60006107646012600a611863565b61077290633b9aca00611872565b905090565b6001600160a01b0383166000908152600360209081526040808320338452909152812054600019146107dc576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906107d6908490611891565b90915550505b6107e7848484610b7c565b949350505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461084991906118a8565b6108556012600a611863565b61086390633b9aca00611872565b6107729190611891565b6015546001600160a01b031633146108bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106f7565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b031633146109575760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106f7565b8061097e57506001600160a01b03166000908152600160205260409020805460ff19169055565b600254156109d7576203f480600254426109989190611891565b116109d75760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b60448201526064016106f7565b6001600160a01b03821660009081526001602052604090205460ff1615610a405760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e000000000060448201526064016106f7565b506001600160a01b03166000908152600160208190526040909120805460ff1916909117905542600255565b6000610a79338484610b7c565b5060019392505050565b6001600160a01b038316610acf5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106f7565b6001600160a01b038216610b1b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106f7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610be25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106f7565b6001600160a01b038316610c445760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106f7565b60008211610ca65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106f7565b6001600160a01b0384166000908152600160205260408120548190819060ff1615610cd45760019250610d02565b6001600160a01b03861660009081526001602052604090205460ff1615610cfe5760019150610d02565b5060015b60125460ff16610dfe5780610d595760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106f7565b6001600160a01b03871660009081526005602052604090205460ff16158015610d9b57506001600160a01b03861660009081526005602052604090205460ff16155b15610dfe5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016106f7565b8115610e9457600d5460ff16610e9457600d54610100900460ff1615610e945730600090815260208190526040902054600e548110610e9257600f5460105460ff1615610e7c57601154600a546001600160a01b0316600090815260208190526040902054606491610e6f91611872565b610e7991906118c0565b90505b808210610e87578091505b610e9082610eac565b505b505b610ea1878787868661132b565b979650505050505050565b600d805460ff191660011790556040805160808101825260085461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052610f0a575061131e565b3060009081526003602090815260408083206009546001600160a01b0316845290915290205460001914610f63573060009081526003602090815260408083206009546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685610f849190611872565b610f8e91906118c0565b610f9891906118c0565b90506000610fa68285611891565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610fe057610fe06118e2565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105d91906118f8565b81600181518110611070576110706118e2565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac947906110b6908590600090869030904290600401611915565b600060405180830381600087803b1580156110d057600080fd5b505af19250505080156110e1575060015b6110ee575050505061131e565b476000836110fc8684611872565b61110691906118c0565b905084156111e55760095460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af193505050508015611199575060408051601f3d908101601f1916820190925261119691810190611986565b60015b6111a85750505050505061131e565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6111ef8183611891565b915085600001518660600181815161120791906119b4565b61ffff908116909152606088015160408901516000935083929182169161122f911686611872565b61123991906118c0565b6020890151909150849061ffff16156112a957600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461129e576040519150601f19603f3d011682016040523d82523d6000602084013e6112a3565b606091505b50909350505b604089015161ffff161561131457600c546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114611309576040519150601f19603f3d011682016040523d82523d6000602084013e61130e565b606091505b50909350505b5050505050505050505b50600d805460ff19169055565b6001600160a01b03851660009081526006602052604081205460019060ff168061136d57506001600160a01b03861660009081526006602052604090205460ff165b15611376575060005b6001600160a01b03871660009081526014602052604090205460ff161580156113b857506001600160a01b03861660009081526014602052604090205460ff16155b156113e95760125460ff166113e95760405162461bcd60e51b815260206004820152600060248201526044016106f7565b6001600160a01b03871660009081526020819052604081208054879290611411908490611891565b9091555060009050816114245785611430565b611430888686896114c8565b905080600080896001600160a01b03166001600160a01b03168152602001908152602001600020600082825461146691906118a8565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114b291815260200190565b60405180910390a3506001979650505050505050565b60008084156114de575060075461ffff16611508565b83156114f7575060075462010000900461ffff16611508565b50600754640100000000900461ffff165b8061151657829150506107e7565b600060646115248386611872565b61152e91906118c0565b9050801561159b5730600090815260208190526040812080548392906115559084906118a8565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610ea18185611891565b600060208083528351808285015260005b818110156115d2578581018301518582016040015282016115b6565b818111156115e4576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff8116811461160c57600080fd5b919050565b60008060006060848603121561162657600080fd5b61162f846115fa565b925061163d602085016115fa565b915061164b604085016115fa565b90509250925092565b6001600160a01b038116811461166957600080fd5b50565b6000806040838503121561167f57600080fd5b823561168a81611654565b946020939093013593505050565b6000806000606084860312156116ad57600080fd5b83356116b881611654565b925060208401356116c881611654565b929592945050506040919091013590565b6000602082840312156116eb57600080fd5b81356116f681611654565b9392505050565b6000806040838503121561171057600080fd5b823561171b81611654565b91506020830135801515811461173057600080fd5b809150509250929050565b6000806040838503121561174e57600080fd5b823561175981611654565b9150602083013561173081611654565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117ba5781600019048211156117a0576117a0611769565b808516156117ad57918102915b93841c9390800290611784565b509250929050565b6000826117d157506001610750565b816117de57506000610750565b81600181146117f457600281146117fe5761181a565b6001915050610750565b60ff84111561180f5761180f611769565b50506001821b610750565b5060208310610133831016604e8410600b841016171561183d575081810a610750565b611847838361177f565b806000190482111561185b5761185b611769565b029392505050565b60006116f660ff8416836117c2565b600081600019048311821515161561188c5761188c611769565b500290565b6000828210156118a3576118a3611769565b500390565b600082198211156118bb576118bb611769565b500190565b6000826118dd57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561190a57600080fd5b81516116f681611654565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119655784516001600160a01b031683529383019391830191600101611940565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561199b57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156119cf576119cf611769565b03939250505056fea264697066735822122018e0d602de414bcfb2dd388d63c4b20d8fa015346a0b5c3a7d8f50f3a7265d6e64736f6c634300080b0033

Deployed Bytecode Sourcemap

4403:12603:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5717:73;;;;;;;;;;;;5748:42;5717:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5717:73:0;;;;;;;;6182:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6182:28:0;222:177:1;5354:103:0;;;;;;;;;;-1:-1:-1;5354:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;5354:103:0;404:365:1;9706:80:0;;;;;;;;;;-1:-1:-1;9778:5:0;;;;;;;;;;;;-1:-1:-1;;;9778:5:0;;;;9706:80;;;;;;;:::i;5656:26::-;;;;;;;;;;-1:-1:-1;5656:26:0;;;;-1:-1:-1;;;;;5656:26:0;;;11882:210;;;;;;;;;;-1:-1:-1;11882:210:0;;;;;:::i;:::-;;:::i;:::-;;10314:161;;;;;;;;;;-1:-1:-1;10314:161:0;;;;;:::i;:::-;;:::i;:::-;;;2719:14:1;;2712:22;2694:41;;2682:2;2667:18;10314:161:0;2554:187:1;9441:83:0;;;;;;;;;;;;;:::i;10801:314::-;;;;;;;;;;-1:-1:-1;10801:314:0;;;;;:::i;:::-;;:::i;6297:33::-;;;;;;;;;;;;;;;;11733:141;;;;;;;;;;;;;:::i;6217:25::-;;;;;;;;;;;;;;;;8681:90;;;;;;;;;;-1:-1:-1;8681:90:0;;;;;:::i;:::-;-1:-1:-1;;;;;8755:8:0;8731:4;8755:8;;;:3;:8;;;;;;;;;8681:90;9530:80;;;;;;;;;;-1:-1:-1;9530:80:0;;5025:2;3601:36:1;;3589:2;3574:18;9530:80:0;3459:184:1;5689:21:0;;;;;;;;;;-1:-1:-1;5689:21:0;;;;-1:-1:-1;;;;;5689:21:0;;;6339:33;;;;;;;;;;-1:-1:-1;6339:33:0;;;;;;;;11598:127;;;;;;;;;;-1:-1:-1;11598:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11689:28:0;11665:4;11689:28;;;:19;:28;;;;;;;;;11598:127;6379:36;;;;;;;;;;-1:-1:-1;6379:36:0;;;;;;;;;;;6422:26;;;;;;;;;;;;;;;;10016:117;;;;;;;;;;-1:-1:-1;10016:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10109:16:0;10082:7;10109:16;;;;;;;;;;;;10016:117;8871:180;;;;;;;;;;;;;:::i;11123:467::-;;;;;;;;;;-1:-1:-1;11123:467:0;;;;;:::i;:::-;;:::i;9792:79::-;;;;;;;;;;-1:-1:-1;9862:6:0;;-1:-1:-1;;;;;9862:6:0;9792:79;;9616:84;;;;;;;;;;-1:-1:-1;9690:7:0;;;;;;;;;;;;-1:-1:-1;;;9690:7:0;;;;9616:84;;10141:165;;;;;;;;;;-1:-1:-1;10141:165:0;;;;;:::i;:::-;;:::i;6249:41::-;;;;;;;;;;-1:-1:-1;6249:41:0;;;;;;;;5466:133;;;;;;;;;;-1:-1:-1;5466:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4302:6:1;4335:15;;;4317:34;;4387:15;;;4382:2;4367:18;;4360:43;4439:15;;;4419:18;;;4412:43;;;;4491:15;;;4486:2;4471:18;;4464:43;4279:3;4264:19;5466:133:0;4069:444:1;9877:133:0;;;;;;;;;;-1:-1:-1;9877:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9979:19:0;;;9961:7;9979:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9877:133;5907:199;;;;;;;;;;-1:-1:-1;5907:199:0;;;;;;-1:-1:-1;;;;;5907:199:0;;;;;;;;;;;-1:-1:-1;;;;;5173:15:1;;;5155:34;;5225:15;;;;5220:2;5205:18;;5198:43;5090:18;5907:199:0;4911:336:1;6137:38:0;;;;;;;;;;-1:-1:-1;6137:38:0;;;;;;;;;;;11882:210;8635:10;8731:4;8755:8;;;:3;:8;;;;;;;;8620:42;;;;-1:-1:-1;;;8620:42:0;;5454:2:1;8620:42:0;;;5436:21:1;5493:2;5473:18;;;5466:30;-1:-1:-1;;;5512:18:1;;;5505:41;5563:18;;8620:42:0;;;;;;;;;11975:9:::1;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;12011:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;12049:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;11882:210::o;10314:161::-;10391:4;10408:37;10417:10;10429:7;10438:6;10408:8;:37::i;:::-;-1:-1:-1;10463:4:0;10314:161;;;;;:::o;9441:83::-;9496:7;5086:13;5025:2;5086;:13;:::i;:::-;5069:30;;4876:13;5069:30;:::i;:::-;9507:14;;9441:83;:::o;10801:314::-;-1:-1:-1;;;;;10922:19:0;;10901:4;10922:19;;;:11;:19;;;;;;;;10942:10;10922:31;;;;;;;;-1:-1:-1;;10922:52:0;10918:134;;-1:-1:-1;;;;;10991:19:0;;;;;;:11;:19;;;;;;;;11011:10;10991:31;;;;;;;:41;;11026:6;;10991:19;:41;;11026:6;;10991:41;:::i;:::-;;;;-1:-1:-1;;10918:134:0;11071:36;11081:6;11089:9;11100:6;11071:9;:36::i;:::-;11064:43;10801:314;-1:-1:-1;;;;10801:314:0:o;11733:141::-;11786:7;10109:16;;;;;;5748:42;10109:16;;;;11825:39;;10109:16;11825:39;:::i;:::-;5086:13;5025:2;5086;:13;:::i;:::-;5069:30;;4876:13;5069:30;:::i;:::-;11814:51;;;;:::i;8871:180::-;8537:6;;-1:-1:-1;;;;;8537:6:0;8547:10;8537:20;8529:50;;;;-1:-1:-1;;;8529:50:0;;7745:2:1;8529:50:0;;;7727:21:1;7784:2;7764:18;;;7757:30;-1:-1:-1;;;7803:18:1;;;7796:47;7860:18;;8529:50:0;7543:341:1;8529:50:0;8949:6:::1;::::0;;-1:-1:-1;;;;;;8966:19:0;::::1;::::0;;;9001:42:::1;::::0;-1:-1:-1;;;;;8949:6:0;;::::1;::::0;8930:16:::1;::::0;8949:6;;9001:42:::1;::::0;8930:16;;9001:42:::1;8919:132;8871:180::o:0;11123:467::-;8537:6;;-1:-1:-1;;;;;8537:6:0;8547:10;8537:20;8529:50;;;;-1:-1:-1;;;8529:50:0;;7745:2:1;8529:50:0;;;7727:21:1;7784:2;7764:18;;;7757:30;-1:-1:-1;;;7803:18:1;;;7796:47;7860:18;;8529:50:0;7543:341:1;8529:50:0;11205:7:::1;11200:383;;-1:-1:-1::0;;;;;;11229:13:0::1;11245:5;11229:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;11229:21:0::1;::::0;;11123:467::o;11200:383::-:1;11287:17;::::0;:22;11283:135:::1;;11376:6;11356:17;;11338:15;:35;;;;:::i;:::-;:44;11330:72;;;::::0;-1:-1:-1;;;11330:72:0;;8091:2:1;11330:72:0::1;::::0;::::1;8073:21:1::0;8130:2;8110:18;;;8103:30;-1:-1:-1;;;8149:18:1;;;8142:45;8204:18;;11330:72:0::1;7889:339:1::0;11330:72:0::1;-1:-1:-1::0;;;;;11441:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11440:14;11432:54;;;::::0;-1:-1:-1;;;11432:54:0;;8435:2:1;11432:54:0::1;::::0;::::1;8417:21:1::0;8474:2;8454:18;;;8447:30;8513:29;8493:18;;;8486:57;8560:18;;11432:54:0::1;8233:351:1::0;11432:54:0::1;-1:-1:-1::0;;;;;;11501:13:0::1;;::::0;;;11517:4:::1;11501:13;::::0;;;;;;;:20;;-1:-1:-1;;11501:20:0::1;::::0;;::::1;::::0;;11556:15:::1;11536:17;:35:::0;11123:467::o;10141:165::-;10219:4;10236:40;10246:10;10258:9;10269:6;10236:9;:40::i;:::-;-1:-1:-1;10294:4:0;;10141:165;-1:-1:-1;;;10141:165:0:o;10483:310::-;-1:-1:-1;;;;;10578:20:0;;10570:52;;;;-1:-1:-1;;;10570:52:0;;8791:2:1;10570:52:0;;;8773:21:1;8830:2;8810:18;;;8803:30;-1:-1:-1;;;8849:18:1;;;8842:49;8908:18;;10570:52:0;8589:343:1;10570:52:0;-1:-1:-1;;;;;10641:21:0;;10633:53;;;;-1:-1:-1;;;10633:53:0;;8791:2:1;10633:53:0;;;8773:21:1;8830:2;8810:18;;;8803:30;-1:-1:-1;;;8849:18:1;;;8842:49;8908:18;;10633:53:0;8589:343:1;10633:53:0;-1:-1:-1;;;;;10699:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10752:33;;368:25:1;;;10752:33:0;;341:18:1;10752:33:0;;;;;;;10483:310;;;:::o;12100:1646::-;12179:4;-1:-1:-1;;;;;12204:18:0;;12196:68;;;;-1:-1:-1;;;12196:68:0;;9139:2:1;12196:68:0;;;9121:21:1;9178:2;9158:18;;;9151:30;9217:34;9197:18;;;9190:62;-1:-1:-1;;;9268:18:1;;;9261:35;9313:19;;12196:68:0;8937:401:1;12196:68:0;-1:-1:-1;;;;;12283:16:0;;12275:64;;;;-1:-1:-1;;;12275:64:0;;9545:2:1;12275:64:0;;;9527:21:1;9584:2;9564:18;;;9557:30;9623:34;9603:18;;;9596:62;-1:-1:-1;;;9674:18:1;;;9667:33;9717:19;;12275:64:0;9343:399:1;12275:64:0;12367:1;12358:6;:10;12350:64;;;;-1:-1:-1;;;12350:64:0;;9949:2:1;12350:64:0;;;9931:21:1;9988:2;9968:18;;;9961:30;10027:34;10007:18;;;10000:62;-1:-1:-1;;;10078:18:1;;;10071:39;10127:19;;12350:64:0;9747:405:1;12350:64:0;-1:-1:-1;;;;;12513:13:0;;12425:8;12513:13;;;:7;:13;;;;;;12425:8;;;;12513:13;;12509:162;;;12549:4;12543:10;;12509:162;;;-1:-1:-1;;;;;12575:11:0;;;;;;:7;:11;;;;;;;;12571:100;;;12610:4;12603:11;;12571:100;;;-1:-1:-1;12655:4:0;12571:100;12689:14;;;;12685:329;;12729:5;12724:279;;12759:34;;-1:-1:-1;;;12759:34:0;;10359:2:1;12759:34:0;;;10341:21:1;10398:2;10378:18;;;10371:30;10437:26;10417:18;;;10410:54;10481:18;;12759:34:0;10157:348:1;12724:279:0;-1:-1:-1;;;;;12824:31:0;;;;;;:25;:31;;;;;;;;12823:32;:66;;;;-1:-1:-1;;;;;;12860:29:0;;;;;;:25;:29;;;;;;;;12859:30;12823:66;12819:184;;;12914:55;;-1:-1:-1;;;12914:55:0;;10712:2:1;12914:55:0;;;10694:21:1;10751:2;10731:18;;;10724:30;10790:34;10770:18;;;10763:62;-1:-1:-1;;;10841:18:1;;;10834:43;10894:19;;12914:55:0;10510:409:1;12819:184:0;13030:4;13026:650;;;13056:6;;;;13051:614;;13087:19;;;;;;;13083:567;;;13198:4;13149:28;10109:16;;;;;;;;;;;13255:13;;13231:37;;13227:404;;13315:10;;13356:22;;;;13352:97;;;13413:13;;13403:6;;-1:-1:-1;;;;;13403:6:0;10082:7;10109:16;;;;;;;;;;;5644:3;;13393:33;;;:::i;:::-;13392:54;;;;:::i;:::-;13382:64;;13352:97;13503:7;13479:20;:31;13475:72;;13537:7;13514:30;;13475:72;13573:34;13586:20;13573:12;:34::i;:::-;13270:361;13227:404;13126:524;13083:567;13693:45;13710:4;13716:2;13720:6;13728:3;13733:4;13693:16;:45::i;:::-;13686:52;12100:1646;-1:-1:-1;;;;;;;12100:1646:0:o;13754:1990::-;6613:6;:13;;-1:-1:-1;;6613:13:0;6622:4;6613:13;;;13837:30:::1;::::0;;::::1;::::0;::::1;::::0;;13860:7:::1;13837:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;13878:60:::1;;13920:7;;;13878:60;13974:4;13954:26;::::0;;;:11:::1;:26;::::0;;;;;;;13989:9:::1;::::0;-1:-1:-1;;;;;13989:9:0::1;13954:46:::0;;;;;;;;-1:-1:-1;;13954:67:0::1;13950:166;;14058:4;14038:26;::::0;;;:11:::1;:26;::::0;;;;;;;14073:9:::1;::::0;-1:-1:-1;;;;;14073:9:0::1;14038:46:::0;;;;;;;-1:-1:-1;;14038:66:0;;13950:166:::1;14128:17;14213:1;14193:6;:16;;;14149:60;;14173:6;:16;;;14150:39;;:20;:39;;;;:::i;:::-;14149:60;;;;:::i;:::-;14148:66;;;;:::i;:::-;14128:86:::0;-1:-1:-1;14225:15:0::1;14243:32;14128:86:::0;14243:20;:32:::1;:::i;:::-;14320:16;::::0;;14334:1:::1;14320:16:::0;;;;;::::1;::::0;;14225:50;;-1:-1:-1;14296:21:0::1;::::0;14320:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14320:16:0::1;14296:40;;14365:4;14347;14352:1;14347:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14347:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14391:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;14391:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;14347:7;;14391:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14381:4;14386:1;14381:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14381:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;14424:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;14424:186:0;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;14499:7;;14424:9:::1;::::0;14537:4;;14564::::1;::::0;14584:15:::1;::::0;14424:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;14420:233;;14635:7;;;;;;14420:233;14686:21;14665:18;14772:7:::0;14746:22:::1;14759:9:::0;14686:21;14746:22:::1;:::i;:::-;14745:34;;;;:::i;:::-;14718:61:::0;-1:-1:-1;14796:13:0;;14792:400:::1;;14830:9;::::0;:222:::1;::::0;-1:-1:-1;;;14830:222:0;;14907:4:::1;14830:222;::::0;::::1;12992:34:1::0;13042:18;;;13035:34;;;14830:9:0::1;13085:18:1::0;;;13078:34;;;13128:18;;;13121:34;5748:42:0::1;13171:19:1::0;;;13164:44;15022:15:0::1;13224:19:1::0;;;13217:35;-1:-1:-1;;;;;14830:9:0;;::::1;::::0;:25:::1;::::0;14863:16;;12926:19:1;;14830:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14830:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;14830:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;14826:355;;15159:7;;;;;;;;14826:355;-1:-1:-1::0;;15077:40:0::1;::::0;;13748:25:1;;;13804:2;13789:18;;13782:34;;;15077:40:0::1;::::0;-1:-1:-1;13721:18:1;15077:40:0::1;;;;;;;14826:355;15204:30;15218:16:::0;15204:30;::::1;:::i;:::-;;;15265:6;:16;;;15245:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;15380:16:::1;::::0;::::1;::::0;15358:18:::1;::::0;::::1;::::0;15292:12:::1;::::0;-1:-1:-1;15292:12:0;;15344:52;;::::1;::::0;15345:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;15344:52;;;;:::i;:::-;15459:16;::::0;::::1;::::0;15315:81;;-1:-1:-1;15434:10:0;;15459:20:::1;;::::0;15455:133:::1;;15509:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;15509:21:0;;::::1;::::0;15566:5:::1;::::0;15543:16;;15509:67:::1;::::0;;;15543:16;15509:21;15566:5;15509:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15496:80:0;;-1:-1:-1;;15455:133:0::1;15602:18;::::0;::::1;::::0;:22:::1;;::::0;15598:139:::1;;15654:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;15654:23:0;;::::1;::::0;15715:5:::1;::::0;15690:18;;15654:71:::1;::::0;;;15690:18;15654:23;15715:5;15654:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15641:84:0;;-1:-1:-1;;15598:139:0::1;13826:1918;;;;;;;;;6637:1;-1:-1:-1::0;6649:6:0;:14;;-1:-1:-1;;6649:14:0;;;13754:1990::o;15752:587::-;-1:-1:-1;;;;;15910:25:0;;15859:4;15910:25;;;:19;:25;;;;;;15891:4;;15910:25;;;:52;;-1:-1:-1;;;;;;15939:23:0;;;;;;:19;:23;;;;;;;;15910:52;15906:99;;;-1:-1:-1;15988:5:0;15906:99;-1:-1:-1;;;;;16019:9:0;;;;;;:3;:9;;;;;;;;16018:10;:22;;;;-1:-1:-1;;;;;;16033:7:0;;;;;;:3;:7;;;;;;;;16032:8;16018:22;16015:80;;;16064:14;;;;16056:27;;;;-1:-1:-1;;;16056:27:0;;14461:2:1;16056:27:0;;;14443:21:1;-1:-1:-1;14480:18:1;;;14473:29;14519:18;;16056:27:0;14259:284:1;16056:27:0;-1:-1:-1;;;;;16105:13:0;;:7;:13;;;;;;;;;;:23;;16122:6;;16105:7;:23;;16122:6;;16105:23;:::i;:::-;;;;-1:-1:-1;16139:22:0;;-1:-1:-1;16165:7:0;16164:55;;16213:6;16164:55;;;16176:34;16186:4;16192:3;16197:4;16203:6;16176:9;:34::i;:::-;16139:80;;16245:14;16230:7;:11;16238:2;-1:-1:-1;;;;;16230:11:0;-1:-1:-1;;;;;16230:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;16290:2;-1:-1:-1;;;;;16275:34:0;16284:4;-1:-1:-1;;;;;16275:34:0;;16294:14;16275:34;;;;368:25:1;;356:2;341:18;;222:177;16275:34:0;;;;;;;;-1:-1:-1;16327:4:0;;15752:587;-1:-1:-1;;;;;;;15752:587:0:o;16347:656::-;16435:7;16455:18;16488:3;16484:205;;;-1:-1:-1;16521:9:0;:16;;;16484:205;;;16559:4;16555:134;;;-1:-1:-1;16593:9:0;:17;;;;;;16555:134;;;-1:-1:-1;16656:9:0;:21;;;;;;16555:134;16703:15;16699:39;;16729:6;16722:13;;;;;16699:39;16748:17;5644:3;16768:19;16777:10;16768:6;:19;:::i;:::-;:38;;;;:::i;:::-;16748:58;-1:-1:-1;16821:13:0;;16817:141;;16867:4;16851:7;:22;;;;;;;;;;:35;;16877:9;;16851:7;:35;;16877:9;;16851:35;:::i;:::-;;;;-1:-1:-1;;16906:40:0;;368:25:1;;;16929:4:0;;-1:-1:-1;;;;;16906:40:0;;;;;356:2:1;341:18;16906:40:0;;;;;;;16817:141;16977:18;16986:9;16977:6;:18;:::i;774:597:1:-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1355:2:1;1334:15;-1:-1:-1;;1330:29:1;1315:45;;;;1362:2;1311:54;;774:597;-1:-1:-1;;;774:597:1:o;1601:159::-;1668:20;;1728:6;1717:18;;1707:29;;1697:57;;1750:1;1747;1740:12;1697:57;1601:159;;;:::o;1765:328::-;1839:6;1847;1855;1908:2;1896:9;1887:7;1883:23;1879:32;1876:52;;;1924:1;1921;1914:12;1876:52;1947:28;1965:9;1947:28;:::i;:::-;1937:38;;1994:37;2027:2;2016:9;2012:18;1994:37;:::i;:::-;1984:47;;2050:37;2083:2;2072:9;2068:18;2050:37;:::i;:::-;2040:47;;1765:328;;;;;:::o;2098:131::-;-1:-1:-1;;;;;2173:31:1;;2163:42;;2153:70;;2219:1;2216;2209:12;2153:70;2098:131;:::o;2234:315::-;2302:6;2310;2363:2;2351:9;2342:7;2338:23;2334:32;2331:52;;;2379:1;2376;2369:12;2331:52;2418:9;2405:23;2437:31;2462:5;2437:31;:::i;:::-;2487:5;2539:2;2524:18;;;;2511:32;;-1:-1:-1;;;2234:315:1:o;2746:456::-;2823:6;2831;2839;2892:2;2880:9;2871:7;2867:23;2863:32;2860:52;;;2908:1;2905;2898:12;2860:52;2947:9;2934:23;2966:31;2991:5;2966:31;:::i;:::-;3016:5;-1:-1:-1;3073:2:1;3058:18;;3045:32;3086:33;3045:32;3086:33;:::i;:::-;2746:456;;3138:7;;-1:-1:-1;;;3192:2:1;3177:18;;;;3164:32;;2746:456::o;3207:247::-;3266:6;3319:2;3307:9;3298:7;3294:23;3290:32;3287:52;;;3335:1;3332;3325:12;3287:52;3374:9;3361:23;3393:31;3418:5;3393:31;:::i;:::-;3443:5;3207:247;-1:-1:-1;;;3207:247:1:o;3648:416::-;3713:6;3721;3774:2;3762:9;3753:7;3749:23;3745:32;3742:52;;;3790:1;3787;3780:12;3742:52;3829:9;3816:23;3848:31;3873:5;3848:31;:::i;:::-;3898:5;-1:-1:-1;3955:2:1;3940:18;;3927:32;3997:15;;3990:23;3978:36;;3968:64;;4028:1;4025;4018:12;3968:64;4051:7;4041:17;;;3648:416;;;;;:::o;4518:388::-;4586:6;4594;4647:2;4635:9;4626:7;4622:23;4618:32;4615:52;;;4663:1;4660;4653:12;4615:52;4702:9;4689:23;4721:31;4746:5;4721:31;:::i;:::-;4771:5;-1:-1:-1;4828:2:1;4813:18;;4800:32;4841:33;4800:32;4841:33;:::i;5592:127::-;5653:10;5648:3;5644:20;5641:1;5634:31;5684:4;5681:1;5674:15;5708:4;5705:1;5698:15;5724:422;5813:1;5856:5;5813:1;5870:270;5891:7;5881:8;5878:21;5870:270;;;5950:4;5946:1;5942:6;5938:17;5932:4;5929:27;5926:53;;;5959:18;;:::i;:::-;6009:7;5999:8;5995:22;5992:55;;;6029:16;;;;5992:55;6108:22;;;;6068:15;;;;5870:270;;;5874:3;5724:422;;;;;:::o;6151:806::-;6200:5;6230:8;6220:80;;-1:-1:-1;6271:1:1;6285:5;;6220:80;6319:4;6309:76;;-1:-1:-1;6356:1:1;6370:5;;6309:76;6401:4;6419:1;6414:59;;;;6487:1;6482:130;;;;6394:218;;6414:59;6444:1;6435:10;;6458:5;;;6482:130;6519:3;6509:8;6506:17;6503:43;;;6526:18;;:::i;:::-;-1:-1:-1;;6582:1:1;6568:16;;6597:5;;6394:218;;6696:2;6686:8;6683:16;6677:3;6671:4;6668:13;6664:36;6658:2;6648:8;6645:16;6640:2;6634:4;6631:12;6627:35;6624:77;6621:159;;;-1:-1:-1;6733:19:1;;;6765:5;;6621:159;6812:34;6837:8;6831:4;6812:34;:::i;:::-;6882:6;6878:1;6874:6;6870:19;6861:7;6858:32;6855:58;;;6893:18;;:::i;:::-;6931:20;;6151:806;-1:-1:-1;;;6151:806:1:o;6962:140::-;7020:5;7049:47;7090:4;7080:8;7076:19;7070:4;7049:47;:::i;7107:168::-;7147:7;7213:1;7209;7205:6;7201:14;7198:1;7195:21;7190:1;7183:9;7176:17;7172:45;7169:71;;;7220:18;;:::i;:::-;-1:-1:-1;7260:9:1;;7107:168::o;7280:125::-;7320:4;7348:1;7345;7342:8;7339:34;;;7353:18;;:::i;:::-;-1:-1:-1;7390:9:1;;7280:125::o;7410:128::-;7450:3;7481:1;7477:6;7474:1;7471:13;7468:39;;;7487:18;;:::i;:::-;-1:-1:-1;7523:9:1;;7410:128::o;10924:217::-;10964:1;10990;10980:132;;11034:10;11029:3;11025:20;11022:1;11015:31;11069:4;11066:1;11059:15;11097:4;11094:1;11087:15;10980:132;-1:-1:-1;11126:9:1;;10924:217::o;11278:127::-;11339:10;11334:3;11330:20;11327:1;11320:31;11370:4;11367:1;11360:15;11394:4;11391:1;11384:15;11410:251;11480:6;11533:2;11521:9;11512:7;11508:23;11504:32;11501:52;;;11549:1;11546;11539:12;11501:52;11581:9;11575:16;11600:31;11625:5;11600:31;:::i;11666:980::-;11928:4;11976:3;11965:9;11961:19;12007:6;11996:9;11989:25;12033:2;12071:6;12066:2;12055:9;12051:18;12044:34;12114:3;12109:2;12098:9;12094:18;12087:31;12138:6;12173;12167:13;12204:6;12196;12189:22;12242:3;12231:9;12227:19;12220:26;;12281:2;12273:6;12269:15;12255:29;;12302:1;12312:195;12326:6;12323:1;12320:13;12312:195;;;12391:13;;-1:-1:-1;;;;;12387:39:1;12375:52;;12482:15;;;;12447:12;;;;12423:1;12341:9;12312:195;;;-1:-1:-1;;;;;;;12563:32:1;;;;12558:2;12543:18;;12536:60;-1:-1:-1;;;12627:3:1;12612:19;12605:35;12524:3;11666:980;-1:-1:-1;;;11666:980:1:o;13263:306::-;13351:6;13359;13367;13420:2;13408:9;13399:7;13395:23;13391:32;13388:52;;;13436:1;13433;13426:12;13388:52;13465:9;13459:16;13449:26;;13515:2;13504:9;13500:18;13494:25;13484:35;;13559:2;13548:9;13544:18;13538:25;13528:35;;13263:306;;;;;:::o;13827:217::-;13866:4;13895:6;13951:10;;;;13921;;13973:12;;;13970:38;;;13988:18;;:::i;:::-;14025:13;;13827:217;-1:-1:-1;;;13827:217:1:o

Swarm Source

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