ETH Price: $3,278.79 (-2.24%)

Token

Black Neiro (NEIGA)
 

Overview

Max Total Supply

420,690,000,000 NEIGA

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
614,402,560.266867891 NEIGA

Value
$0.00
0x3fde2d64e500cc61a4927a41098bc71dde0bd1b1
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:
NEIGA

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-07
*/

// SPDX-License-Identifier: MIT

/*
Website: https://neigacoins.com
Telegram: https://t.me/BlackneiroETH
Twitter: https://twitter.com/BlackneiroETH
*/

pragma solidity 0.8.25;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract NEIGA is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isInExile;
    mapping (address => bool) public _mktPair;
    mapping (uint256 => uint256) private perBuyCounter;
    mapping(address => uint256) private prevTxHolderTimestamp;
    address payable private _taxVault;
    uint256 private _startingBlock = 0;
 
    uint256 private _initialBuyTaxRate=20;
    uint256 private _initialSellTaxRate=20;
    uint256 private _finalBuyTaxRate=0;
    uint256 private _finalSellTaxRate=0;

    uint256 private _buyTaxReduceAt=38;

    uint256 private _sellTaxReduceAt=38;
    uint256 private _preventSwapAction=38;
    uint256 private _purchaseCount=0;
    uint256 private _sellCounter = 0;
    uint256 private _previousSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Black Neiro";
    string private constant _symbol = unicode"NEIGA";
    uint256 public _maxTransactionCap =   4206900000 * 10**_decimals;
    uint256 public _maxWalletCap = 4206900000 * 10**_decimals;
    uint256 public _taxSwapCap= 4200000000 * 10**_decimals;
    uint256 public _maxTaxSwapCap= 4206900000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool public txInterval = true;
    uint256 public caUnitCount = 3;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caToggle = true;

    event MaxTxAmountUpdated(uint _maxTransactionCap);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

        _taxVault = payable(0x09a3c315062A4da923017A6DE9eb2033727C3866);
        _balances[_msgSender()] = _tTotal;
        _isInExile[owner()] = true;
        _isInExile[address(this)] = true;
        _isInExile[address(uniswapV2Pair)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    mapping (address => bool) public isInBlacklist;

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function removeFromBlockList(address account) external onlyOwner {
    isInBlacklist[account] = false;
    }

    function setMktPair(address addr) public onlyOwner {
        _mktPair[addr] = true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require (!isInBlacklist[from] && !isInBlacklist[to], "To/from address is blacklisted");
        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");
        uint256 taxAmount=0;

        if(block.number == _startingBlock) {
            if (!_mktPair[from] && from != address(this) && 
            from != address(uniswapV2Router) && 
            to != address(uniswapV2Router)) {
            
            if (!isInBlacklist[from]) {
                isInBlacklist[from] = true;
                }
            }
        }

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_purchaseCount> _buyTaxReduceAt)? _finalBuyTaxRate: _initialBuyTaxRate).div(100);

            if(block.number == _startingBlock){
               require(perBuyCounter[block.number] < 52, "Exceeds buys on the first block.");
               perBuyCounter[block.number]++;
            }

            if(block.number > _startingBlock) {
                if (txInterval) {
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                    require(prevTxHolderTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                    prevTxHolderTimestamp[tx.origin] = block.number;
                    }
                }
            }

            if (_mktPair[from] && to != address(uniswapV2Router) && ! _isInExile[to] ) {
                require(amount <= _maxTransactionCap, "Exceeds the _maxTransactionCap.");
                require(balanceOf(to) + amount <= _maxWalletCap, "Exceeds the maxWalletSize.");
                _purchaseCount++;
            }

            if (!_mktPair[to] && ! _isInExile[to]) {
                require(balanceOf(to) + amount <= _maxWalletCap, "Exceeds the maxWalletSize.");
            }

            if(_mktPair[to] && from!= address(this) ){
                taxAmount = amount.mul((_purchaseCount> _sellTaxReduceAt)? _finalSellTaxRate: _initialSellTaxRate).div(100);
            }

	    if (!_mktPair[from] && !_mktPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caToggle && !inSwap && _mktPair[to] && swapEnabled && contractTokenBalance>_taxSwapCap && _purchaseCount>_preventSwapAction) {
                if (block.number > _previousSellBlock) {
                    _sellCounter = 0;
                }
                require(_sellCounter < caUnitCount, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwapCap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                _sellCounter++;
                _previousSellBlock = block.number;
            }

            else if(!inSwap && _mktPair[to] && swapEnabled && contractTokenBalance>_taxSwapCap && _purchaseCount>_preventSwapAction) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwapCap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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


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

    function removeFromBlockListwallets(address[] calldata addresses) public onlyOwner(){
        for (uint256 i; i < addresses.length; ++i) {
            isInBlacklist[addresses[i]] = false;
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addToBlockList(address[] calldata addresses) external onlyOwner {
       for (uint256 i; i < addresses.length; ++i) {
       isInBlacklist[addresses[i]] = true;
      }
    }

    function setMaxTaxSwapCap(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        _maxTaxSwapCap = amount;
    }

    function setcaUnitCount(uint256 amount) external onlyOwner {
        caUnitCount = amount;
    }
    
    function clearToggle(bool _status) external onlyOwner {
        caToggle = _status;
    }

    function txIntervalMode(bool _status) external onlyOwner {
        txInterval = _status;
    }

    function releaseStuckEth() external onlyOwner {
        payable(_taxVault).transfer(address(this).balance);
    }

    function retrieveAnyERC20Tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxVault, _amount);
    }

    function configureFeeWallet(address newTaxWallet) external onlyOwner {
        _taxVault = payable(newTaxWallet);
    }

    function exileAcc_Restriction() external onlyOwner{
        _maxTransactionCap = _tTotal;
        _maxWalletCap=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _mktPair[address(uniswapV2Pair)] = true;
        _isInExile[address(uniswapV2Pair)] = true;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        _startingBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTransactionCap","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwapCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransactionCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_mktPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlockList","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":"caToggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caUnitCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"clearToggle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"configureFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exileAcc_Restriction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isInBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlockList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromBlockListwallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"retrieveAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwapCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMktPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcaUnitCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txInterval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"txIntervalMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60085560146009556014600a555f600b555f600c556026600d556026600e556026600f555f6010555f6011555f6012556009600a6100439190610338565b6100519063fac0332061034d565b6013556100606009600a610338565b61006e9063fac0332061034d565b60145561007d6009600a610338565b61008b9063fa56ea0061034d565b60155561009a6009600a610338565b6100a89063fac0332061034d565b6016556018805460ff60a81b1916600160a81b1790556003601955601a805462ffffff1916620100001790553480156100df575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600780546001600160a01b0319167309a3c315062a4da923017a6de9eb2033727c38661790556101526009600a610338565b610161906461f313f88061034d565b335f9081526001602081905260408220929092556003906101895f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556018549091168352912080549092161790556101e63390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61021d6009600a610338565b61022c906461f313f88061034d565b60405190815260200160405180910390a3610364565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561029057815f190482111561027657610276610242565b8085161561028357918102915b93841c939080029061025b565b509250929050565b5f826102a657506001610332565b816102b257505f610332565b81600181146102c857600281146102d2576102ee565b6001915050610332565b60ff8411156102e3576102e3610242565b50506001821b610332565b5060208310610133831016604e8410600b8410161715610311575081810a610332565b61031b8383610256565b805f190482111561032e5761032e610242565b0290505b92915050565b5f61034660ff841683610298565b9392505050565b808202811582820484141761033257610332610242565b612458806103715f395ff3fe6080604052600436106101ff575f3560e01c8063883b5be211610113578063bd7271d71161009d578063dd62ed3e1161006d578063dd62ed3e146105f1578063deec38dd14610635578063e9ebf2e61461064a578063eb07fd5514610669578063f2fde38b1461067d575f80fd5b8063bd7271d714610594578063cc41f914146105a8578063d5ca2c58146105bd578063d7ca867e146105dc575f80fd5b806395d89b41116100e357806395d89b41146104cd5780639a5cf420146104fa5780639caf9b0014610528578063a9059cbb14610556578063aa108f3914610575575f80fd5b8063883b5be21461045f5780638a8c523c1461047e5780638da5cb5b1461049257806392a320e1146104ae575f80fd5b8063313ce567116101945780635b37374a116101645780635b37374a146103c35780635ef0eecc146103d857806370a08231146103f7578063715018a61461042b578063868d1db11461043f575f80fd5b8063313ce567146103335780633f67731e1461034e57806349bd5a5e1461036d5780634b1ecc14146103a4575f80fd5b806314edeec6116101cf57806314edeec6146102c257806318160ddd146102e157806318488967146102f557806323b872dd14610314575f80fd5b806306fdde031461020a578063095ea7b31461024f57806311f5d3d21461027e578063139a7db11461029f575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5060408051808201909152600b81526a426c61636b204e6569726f60a81b60208201525b6040516102469190611f9c565b60405180910390f35b34801561025a575f80fd5b5061026e610269366004611fe5565b61069c565b6040519015158152602001610246565b348015610289575f80fd5b5061029d61029836600461201c565b6106b2565b005b3480156102aa575f80fd5b506102b460195481565b604051908152602001610246565b3480156102cd575f80fd5b5061029d6102dc366004612037565b610702565b3480156102ec575f80fd5b506102b4610795565b348015610300575f80fd5b5061029d61030f3660046120a6565b6107b6565b34801561031f575f80fd5b5061026e61032e3660046120c1565b610801565b34801561033e575f80fd5b5060405160098152602001610246565b348015610359575f80fd5b5061029d610368366004612037565b610868565b348015610378575f80fd5b5060185461038c906001600160a01b031681565b6040516001600160a01b039091168152602001610246565b3480156103af575f80fd5b5061029d6103be3660046120ff565b6108f5565b3480156103ce575f80fd5b506102b460155481565b3480156103e3575f80fd5b5061029d6103f23660046120a6565b61093c565b348015610402575f80fd5b506102b46104113660046120a6565b6001600160a01b03165f9081526001602052604090205490565b348015610436575f80fd5b5061029d610988565b34801561044a575f80fd5b5060185461026e90600160a81b900460ff1681565b34801561046a575f80fd5b50601a5461026e9062010000900460ff1681565b348015610489575f80fd5b5061029d6109f9565b34801561049d575f80fd5b505f546001600160a01b031661038c565b3480156104b9575f80fd5b5061029d6104c836600461201c565b610de9565b3480156104d8575f80fd5b506040805180820190915260058152644e4549474160d81b6020820152610239565b348015610505575f80fd5b5061026e6105143660046120a6565b60046020525f908152604090205460ff1681565b348015610533575f80fd5b5061026e6105423660046120a6565b601b6020525f908152604090205460ff1681565b348015610561575f80fd5b5061026e610570366004611fe5565b610e2e565b348015610580575f80fd5b5061029d61058f36600461211b565b610e3a565b34801561059f575f80fd5b5061029d610e68565b3480156105b3575f80fd5b506102b460145481565b3480156105c8575f80fd5b5061029d6105d73660046120a6565b610f1c565b3480156105e7575f80fd5b506102b460135481565b3480156105fc575f80fd5b506102b461060b366004612132565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610640575f80fd5b506102b460165481565b348015610655575f80fd5b5061029d610664366004611fe5565b610f65565b348015610674575f80fd5b5061029d611002565b348015610688575f80fd5b5061029d6106973660046120a6565b611064565b5f6106a833848461114b565b5060015b92915050565b5f546001600160a01b031633146106e45760405162461bcd60e51b81526004016106db90612169565b60405180910390fd5b60188054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b0316331461072b5760405162461bcd60e51b81526004016106db90612169565b5f5b81811015610790576001601b5f85858581811061074c5761074c61219e565b905060200201602081019061076191906120a6565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161072d565b505050565b5f6107a26009600a6122a6565b6107b1906461f313f8806122b4565b905090565b5f546001600160a01b031633146107df5760405162461bcd60e51b81526004016106db90612169565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f61080d84848461126e565b61085e8433610859856040518060600160405280602881526020016123fb602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611c1d565b61114b565b5060019392505050565b5f546001600160a01b031633146108915760405162461bcd60e51b81526004016106db90612169565b5f5b81811015610790575f601b5f8585858181106108b1576108b161219e565b90506020020160208101906108c691906120a6565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610893565b5f546001600160a01b0316331461091e5760405162461bcd60e51b81526004016106db90612169565b601a80549215156101000261ff001990931692909217909155601655565b5f546001600160a01b031633146109655760405162461bcd60e51b81526004016106db90612169565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b031633146109b15760405162461bcd60e51b81526004016106db90612169565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a225760405162461bcd60e51b81526004016106db90612169565b601854600160a01b900460ff1615610a7c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106db565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610ac6903090610ab76009600a6122a6565b610859906461f313f8806122b4565b60175f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3a91906122cb565b6001600160a01b031663c9c653963060175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbd91906122cb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2b91906122cb565b601880546001600160a01b039283166001600160a01b0319909116811782555f908152600460209081526040808320805460ff199081166001908117909255945486168452600390925290912080549092161790556017541663f305d7194730610ca9816001600160a01b03165f9081526001602052604090205490565b5f80610cbc5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d22573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d4791906122e6565b505060185460175460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610d9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc09190612311565b50601a805461ff0019166101001790556018805460ff60a01b1916600160a01b17905543600855565b5f546001600160a01b03163314610e125760405162461bcd60e51b81526004016106db90612169565b601a8054911515620100000262ff000019909216919091179055565b5f6106a833848461126e565b5f546001600160a01b03163314610e635760405162461bcd60e51b81526004016106db90612169565b601955565b5f546001600160a01b03163314610e915760405162461bcd60e51b81526004016106db90612169565b610e9d6009600a6122a6565b610eac906461f313f8806122b4565b601355610ebb6009600a6122a6565b610eca906461f313f8806122b4565b6014557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610efa6009600a6122a6565b610f09906461f313f8806122b4565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610f455760405162461bcd60e51b81526004016106db90612169565b6001600160a01b03165f908152601b60205260409020805460ff19169055565b5f546001600160a01b03163314610f8e5760405162461bcd60e51b81526004016106db90612169565b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610fde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107909190612311565b5f546001600160a01b0316331461102b5760405162461bcd60e51b81526004016106db90612169565b6007546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611061573d5f803e3d5ffd5b50565b5f546001600160a01b0316331461108d5760405162461bcd60e51b81526004016106db90612169565b6001600160a01b0381166110f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106db565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106db565b6001600160a01b03821661120e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106db565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152601b602052604090205460ff161580156112ae57506001600160a01b0382165f908152601b602052604090205460ff16155b6112fa5760405162461bcd60e51b815260206004820152601e60248201527f546f2f66726f6d206164647265737320697320626c61636b6c6973746564000060448201526064016106db565b6001600160a01b03831661135e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106db565b6001600160a01b0382166113c05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106db565b5f81116114215760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106db565b5f60085443036114d7576001600160a01b0384165f9081526004602052604090205460ff1615801561145c57506001600160a01b0384163014155b801561147657506017546001600160a01b03858116911614155b801561149057506017546001600160a01b03848116911614155b156114d7576001600160a01b0384165f908152601b602052604090205460ff166114d7576001600160a01b0384165f908152601b60205260409020805460ff191660011790555b5f546001600160a01b0385811691161480159061150157505f546001600160a01b03848116911614155b15611ae057611532606461152c600d546010541161152157600954611525565b600b545b8590611c55565b90611cda565b905060085443036115bb57435f9081526005602052604090205460341161159b5760405162461bcd60e51b815260206004820181905260248201527f457863656564732062757973206f6e2074686520666972737420626c6f636b2e60448201526064016106db565b435f9081526005602052604081208054916115b58361232c565b91905055505b60085443111561168357601854600160a81b900460ff1615611683576017546001600160a01b0384811691161480159061160357506018546001600160a01b03848116911614155b1561168357325f9081526006602052604090205443116116715760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b60648201526084016106db565b325f9081526006602052604090204390555b6001600160a01b0384165f9081526004602052604090205460ff1680156116b857506017546001600160a01b03848116911614155b80156116dc57506001600160a01b0383165f9081526003602052604090205460ff16155b156117c2576013548211156117335760405162461bcd60e51b815260206004820152601f60248201527f4578636565647320746865205f6d61785472616e73616374696f6e4361702e0060448201526064016106db565b60145482611755856001600160a01b03165f9081526001602052604090205490565b61175f9190612344565b11156117ad5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106db565b60108054905f6117bc8361232c565b91905055505b6001600160a01b0383165f9081526004602052604090205460ff1615801561180257506001600160a01b0383165f9081526003602052604090205460ff16155b156118815760145482611829856001600160a01b03165f9081526001602052604090205490565b6118339190612344565b11156118815760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106db565b6001600160a01b0383165f9081526004602052604090205460ff1680156118b157506001600160a01b0384163014155b156118de576118db606461152c600e54601054116118d157600a54611525565b600c548590611c55565b90505b6001600160a01b0384165f9081526004602052604090205460ff1615801561191e57506001600160a01b0383165f9081526004602052604090205460ff16155b801561193357506001600160a01b0384163014155b1561193b57505f5b305f90815260016020526040902054601a5462010000900460ff1680156119655750601a5460ff16155b801561198857506001600160a01b0384165f9081526004602052604090205460ff165b801561199b5750601a54610100900460ff165b80156119a8575060155481115b80156119b75750600f54601054115b15611a5b576012544311156119cb575f6011555b60195460115410611a105760405162461bcd60e51b815260206004820152600f60248201526e10d04818985b185b98d9481cd95b1b608a1b60448201526064016106db565b611a2d611a2884611a2384601654611d1b565b611d1b565b611d2f565b478015611a3d57611a3d47611e96565b60118054905f611a4c8361232c565b90915550504360125550611ade565b601a5460ff16158015611a8557506001600160a01b0384165f9081526004602052604090205460ff165b8015611a985750601a54610100900460ff165b8015611aa5575060155481115b8015611ab45750600f54601054115b15611ade57611acc611a2884611a2384601654611d1b565b478015611adc57611adc47611e96565b505b505b8015611b5857305f90815260016020526040902054611aff9082611ed1565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b4f9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054611b7a9083611f2f565b6001600160a01b0385165f90815260016020526040902055611bbd611b9f8383611f2f565b6001600160a01b0385165f9081526001602052604090205490611ed1565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c068585611f2f565b60405190815260200160405180910390a350505050565b5f8184841115611c405760405162461bcd60e51b81526004016106db9190611f9c565b505f611c4c8486612357565b95945050505050565b5f825f03611c6457505f6106ac565b5f611c6f83856122b4565b905082611c7c858361236a565b14611cd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106db565b9392505050565b5f611cd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f70565b5f818311611d295782611cd3565b50919050565b601a805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d6f57611d6f61219e565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611dc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dea91906122cb565b81600181518110611dfd57611dfd61219e565b6001600160a01b039283166020918202929092010152601754611e23913091168461114b565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e5b9085905f90869030904290600401612389565b5f604051808303815f87803b158015611e72575f80fd5b505af1158015611e84573d5f803e3d5ffd5b5050601a805460ff1916905550505050565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611ecd573d5f803e3d5ffd5b5050565b5f80611edd8385612344565b905083811015611cd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106db565b5f611cd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c1d565b5f8183611f905760405162461bcd60e51b81526004016106db9190611f9c565b505f611c4c848661236a565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611061575f80fd5b5f8060408385031215611ff6575f80fd5b823561200181611fd1565b946020939093013593505050565b8015158114611061575f80fd5b5f6020828403121561202c575f80fd5b8135611cd38161200f565b5f8060208385031215612048575f80fd5b823567ffffffffffffffff8082111561205f575f80fd5b818501915085601f830112612072575f80fd5b813581811115612080575f80fd5b8660208260051b8501011115612094575f80fd5b60209290920196919550909350505050565b5f602082840312156120b6575f80fd5b8135611cd381611fd1565b5f805f606084860312156120d3575f80fd5b83356120de81611fd1565b925060208401356120ee81611fd1565b929592945050506040919091013590565b5f8060408385031215612110575f80fd5b82356120018161200f565b5f6020828403121561212b575f80fd5b5035919050565b5f8060408385031215612143575f80fd5b823561214e81611fd1565b9150602083013561215e81611fd1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561220057815f19048211156121e6576121e66121b2565b808516156121f357918102915b93841c93908002906121cb565b509250929050565b5f82612216575060016106ac565b8161222257505f6106ac565b816001811461223857600281146122425761225e565b60019150506106ac565b60ff841115612253576122536121b2565b50506001821b6106ac565b5060208310610133831016604e8410600b8410161715612281575081810a6106ac565b61228b83836121c6565b805f190482111561229e5761229e6121b2565b029392505050565b5f611cd360ff841683612208565b80820281158282048414176106ac576106ac6121b2565b5f602082840312156122db575f80fd5b8151611cd381611fd1565b5f805f606084860312156122f8575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612321575f80fd5b8151611cd38161200f565b5f6001820161233d5761233d6121b2565b5060010190565b808201808211156106ac576106ac6121b2565b818103818111156106ac576106ac6121b2565b5f8261238457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156123d95784516001600160a01b0316835293830193918301916001016123b4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206ac4bb891cd3b437637710ce86399663ee96457d670a0c97b66fbb7343ef506364736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101ff575f3560e01c8063883b5be211610113578063bd7271d71161009d578063dd62ed3e1161006d578063dd62ed3e146105f1578063deec38dd14610635578063e9ebf2e61461064a578063eb07fd5514610669578063f2fde38b1461067d575f80fd5b8063bd7271d714610594578063cc41f914146105a8578063d5ca2c58146105bd578063d7ca867e146105dc575f80fd5b806395d89b41116100e357806395d89b41146104cd5780639a5cf420146104fa5780639caf9b0014610528578063a9059cbb14610556578063aa108f3914610575575f80fd5b8063883b5be21461045f5780638a8c523c1461047e5780638da5cb5b1461049257806392a320e1146104ae575f80fd5b8063313ce567116101945780635b37374a116101645780635b37374a146103c35780635ef0eecc146103d857806370a08231146103f7578063715018a61461042b578063868d1db11461043f575f80fd5b8063313ce567146103335780633f67731e1461034e57806349bd5a5e1461036d5780634b1ecc14146103a4575f80fd5b806314edeec6116101cf57806314edeec6146102c257806318160ddd146102e157806318488967146102f557806323b872dd14610314575f80fd5b806306fdde031461020a578063095ea7b31461024f57806311f5d3d21461027e578063139a7db11461029f575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5060408051808201909152600b81526a426c61636b204e6569726f60a81b60208201525b6040516102469190611f9c565b60405180910390f35b34801561025a575f80fd5b5061026e610269366004611fe5565b61069c565b6040519015158152602001610246565b348015610289575f80fd5b5061029d61029836600461201c565b6106b2565b005b3480156102aa575f80fd5b506102b460195481565b604051908152602001610246565b3480156102cd575f80fd5b5061029d6102dc366004612037565b610702565b3480156102ec575f80fd5b506102b4610795565b348015610300575f80fd5b5061029d61030f3660046120a6565b6107b6565b34801561031f575f80fd5b5061026e61032e3660046120c1565b610801565b34801561033e575f80fd5b5060405160098152602001610246565b348015610359575f80fd5b5061029d610368366004612037565b610868565b348015610378575f80fd5b5060185461038c906001600160a01b031681565b6040516001600160a01b039091168152602001610246565b3480156103af575f80fd5b5061029d6103be3660046120ff565b6108f5565b3480156103ce575f80fd5b506102b460155481565b3480156103e3575f80fd5b5061029d6103f23660046120a6565b61093c565b348015610402575f80fd5b506102b46104113660046120a6565b6001600160a01b03165f9081526001602052604090205490565b348015610436575f80fd5b5061029d610988565b34801561044a575f80fd5b5060185461026e90600160a81b900460ff1681565b34801561046a575f80fd5b50601a5461026e9062010000900460ff1681565b348015610489575f80fd5b5061029d6109f9565b34801561049d575f80fd5b505f546001600160a01b031661038c565b3480156104b9575f80fd5b5061029d6104c836600461201c565b610de9565b3480156104d8575f80fd5b506040805180820190915260058152644e4549474160d81b6020820152610239565b348015610505575f80fd5b5061026e6105143660046120a6565b60046020525f908152604090205460ff1681565b348015610533575f80fd5b5061026e6105423660046120a6565b601b6020525f908152604090205460ff1681565b348015610561575f80fd5b5061026e610570366004611fe5565b610e2e565b348015610580575f80fd5b5061029d61058f36600461211b565b610e3a565b34801561059f575f80fd5b5061029d610e68565b3480156105b3575f80fd5b506102b460145481565b3480156105c8575f80fd5b5061029d6105d73660046120a6565b610f1c565b3480156105e7575f80fd5b506102b460135481565b3480156105fc575f80fd5b506102b461060b366004612132565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610640575f80fd5b506102b460165481565b348015610655575f80fd5b5061029d610664366004611fe5565b610f65565b348015610674575f80fd5b5061029d611002565b348015610688575f80fd5b5061029d6106973660046120a6565b611064565b5f6106a833848461114b565b5060015b92915050565b5f546001600160a01b031633146106e45760405162461bcd60e51b81526004016106db90612169565b60405180910390fd5b60188054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b0316331461072b5760405162461bcd60e51b81526004016106db90612169565b5f5b81811015610790576001601b5f85858581811061074c5761074c61219e565b905060200201602081019061076191906120a6565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161072d565b505050565b5f6107a26009600a6122a6565b6107b1906461f313f8806122b4565b905090565b5f546001600160a01b031633146107df5760405162461bcd60e51b81526004016106db90612169565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f61080d84848461126e565b61085e8433610859856040518060600160405280602881526020016123fb602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611c1d565b61114b565b5060019392505050565b5f546001600160a01b031633146108915760405162461bcd60e51b81526004016106db90612169565b5f5b81811015610790575f601b5f8585858181106108b1576108b161219e565b90506020020160208101906108c691906120a6565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610893565b5f546001600160a01b0316331461091e5760405162461bcd60e51b81526004016106db90612169565b601a80549215156101000261ff001990931692909217909155601655565b5f546001600160a01b031633146109655760405162461bcd60e51b81526004016106db90612169565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b031633146109b15760405162461bcd60e51b81526004016106db90612169565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a225760405162461bcd60e51b81526004016106db90612169565b601854600160a01b900460ff1615610a7c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106db565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610ac6903090610ab76009600a6122a6565b610859906461f313f8806122b4565b60175f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3a91906122cb565b6001600160a01b031663c9c653963060175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbd91906122cb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2b91906122cb565b601880546001600160a01b039283166001600160a01b0319909116811782555f908152600460209081526040808320805460ff199081166001908117909255945486168452600390925290912080549092161790556017541663f305d7194730610ca9816001600160a01b03165f9081526001602052604090205490565b5f80610cbc5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d22573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d4791906122e6565b505060185460175460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610d9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc09190612311565b50601a805461ff0019166101001790556018805460ff60a01b1916600160a01b17905543600855565b5f546001600160a01b03163314610e125760405162461bcd60e51b81526004016106db90612169565b601a8054911515620100000262ff000019909216919091179055565b5f6106a833848461126e565b5f546001600160a01b03163314610e635760405162461bcd60e51b81526004016106db90612169565b601955565b5f546001600160a01b03163314610e915760405162461bcd60e51b81526004016106db90612169565b610e9d6009600a6122a6565b610eac906461f313f8806122b4565b601355610ebb6009600a6122a6565b610eca906461f313f8806122b4565b6014557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610efa6009600a6122a6565b610f09906461f313f8806122b4565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610f455760405162461bcd60e51b81526004016106db90612169565b6001600160a01b03165f908152601b60205260409020805460ff19169055565b5f546001600160a01b03163314610f8e5760405162461bcd60e51b81526004016106db90612169565b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610fde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107909190612311565b5f546001600160a01b0316331461102b5760405162461bcd60e51b81526004016106db90612169565b6007546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611061573d5f803e3d5ffd5b50565b5f546001600160a01b0316331461108d5760405162461bcd60e51b81526004016106db90612169565b6001600160a01b0381166110f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106db565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106db565b6001600160a01b03821661120e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106db565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152601b602052604090205460ff161580156112ae57506001600160a01b0382165f908152601b602052604090205460ff16155b6112fa5760405162461bcd60e51b815260206004820152601e60248201527f546f2f66726f6d206164647265737320697320626c61636b6c6973746564000060448201526064016106db565b6001600160a01b03831661135e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106db565b6001600160a01b0382166113c05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106db565b5f81116114215760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106db565b5f60085443036114d7576001600160a01b0384165f9081526004602052604090205460ff1615801561145c57506001600160a01b0384163014155b801561147657506017546001600160a01b03858116911614155b801561149057506017546001600160a01b03848116911614155b156114d7576001600160a01b0384165f908152601b602052604090205460ff166114d7576001600160a01b0384165f908152601b60205260409020805460ff191660011790555b5f546001600160a01b0385811691161480159061150157505f546001600160a01b03848116911614155b15611ae057611532606461152c600d546010541161152157600954611525565b600b545b8590611c55565b90611cda565b905060085443036115bb57435f9081526005602052604090205460341161159b5760405162461bcd60e51b815260206004820181905260248201527f457863656564732062757973206f6e2074686520666972737420626c6f636b2e60448201526064016106db565b435f9081526005602052604081208054916115b58361232c565b91905055505b60085443111561168357601854600160a81b900460ff1615611683576017546001600160a01b0384811691161480159061160357506018546001600160a01b03848116911614155b1561168357325f9081526006602052604090205443116116715760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b60648201526084016106db565b325f9081526006602052604090204390555b6001600160a01b0384165f9081526004602052604090205460ff1680156116b857506017546001600160a01b03848116911614155b80156116dc57506001600160a01b0383165f9081526003602052604090205460ff16155b156117c2576013548211156117335760405162461bcd60e51b815260206004820152601f60248201527f4578636565647320746865205f6d61785472616e73616374696f6e4361702e0060448201526064016106db565b60145482611755856001600160a01b03165f9081526001602052604090205490565b61175f9190612344565b11156117ad5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106db565b60108054905f6117bc8361232c565b91905055505b6001600160a01b0383165f9081526004602052604090205460ff1615801561180257506001600160a01b0383165f9081526003602052604090205460ff16155b156118815760145482611829856001600160a01b03165f9081526001602052604090205490565b6118339190612344565b11156118815760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106db565b6001600160a01b0383165f9081526004602052604090205460ff1680156118b157506001600160a01b0384163014155b156118de576118db606461152c600e54601054116118d157600a54611525565b600c548590611c55565b90505b6001600160a01b0384165f9081526004602052604090205460ff1615801561191e57506001600160a01b0383165f9081526004602052604090205460ff16155b801561193357506001600160a01b0384163014155b1561193b57505f5b305f90815260016020526040902054601a5462010000900460ff1680156119655750601a5460ff16155b801561198857506001600160a01b0384165f9081526004602052604090205460ff165b801561199b5750601a54610100900460ff165b80156119a8575060155481115b80156119b75750600f54601054115b15611a5b576012544311156119cb575f6011555b60195460115410611a105760405162461bcd60e51b815260206004820152600f60248201526e10d04818985b185b98d9481cd95b1b608a1b60448201526064016106db565b611a2d611a2884611a2384601654611d1b565b611d1b565b611d2f565b478015611a3d57611a3d47611e96565b60118054905f611a4c8361232c565b90915550504360125550611ade565b601a5460ff16158015611a8557506001600160a01b0384165f9081526004602052604090205460ff165b8015611a985750601a54610100900460ff165b8015611aa5575060155481115b8015611ab45750600f54601054115b15611ade57611acc611a2884611a2384601654611d1b565b478015611adc57611adc47611e96565b505b505b8015611b5857305f90815260016020526040902054611aff9082611ed1565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b4f9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054611b7a9083611f2f565b6001600160a01b0385165f90815260016020526040902055611bbd611b9f8383611f2f565b6001600160a01b0385165f9081526001602052604090205490611ed1565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c068585611f2f565b60405190815260200160405180910390a350505050565b5f8184841115611c405760405162461bcd60e51b81526004016106db9190611f9c565b505f611c4c8486612357565b95945050505050565b5f825f03611c6457505f6106ac565b5f611c6f83856122b4565b905082611c7c858361236a565b14611cd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106db565b9392505050565b5f611cd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f70565b5f818311611d295782611cd3565b50919050565b601a805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d6f57611d6f61219e565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611dc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dea91906122cb565b81600181518110611dfd57611dfd61219e565b6001600160a01b039283166020918202929092010152601754611e23913091168461114b565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e5b9085905f90869030904290600401612389565b5f604051808303815f87803b158015611e72575f80fd5b505af1158015611e84573d5f803e3d5ffd5b5050601a805460ff1916905550505050565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611ecd573d5f803e3d5ffd5b5050565b5f80611edd8385612344565b905083811015611cd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106db565b5f611cd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c1d565b5f8183611f905760405162461bcd60e51b81526004016106db9190611f9c565b505f611c4c848661236a565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611061575f80fd5b5f8060408385031215611ff6575f80fd5b823561200181611fd1565b946020939093013593505050565b8015158114611061575f80fd5b5f6020828403121561202c575f80fd5b8135611cd38161200f565b5f8060208385031215612048575f80fd5b823567ffffffffffffffff8082111561205f575f80fd5b818501915085601f830112612072575f80fd5b813581811115612080575f80fd5b8660208260051b8501011115612094575f80fd5b60209290920196919550909350505050565b5f602082840312156120b6575f80fd5b8135611cd381611fd1565b5f805f606084860312156120d3575f80fd5b83356120de81611fd1565b925060208401356120ee81611fd1565b929592945050506040919091013590565b5f8060408385031215612110575f80fd5b82356120018161200f565b5f6020828403121561212b575f80fd5b5035919050565b5f8060408385031215612143575f80fd5b823561214e81611fd1565b9150602083013561215e81611fd1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561220057815f19048211156121e6576121e66121b2565b808516156121f357918102915b93841c93908002906121cb565b509250929050565b5f82612216575060016106ac565b8161222257505f6106ac565b816001811461223857600281146122425761225e565b60019150506106ac565b60ff841115612253576122536121b2565b50506001821b6106ac565b5060208310610133831016604e8410600b8410161715612281575081810a6106ac565b61228b83836121c6565b805f190482111561229e5761229e6121b2565b029392505050565b5f611cd360ff841683612208565b80820281158282048414176106ac576106ac6121b2565b5f602082840312156122db575f80fd5b8151611cd381611fd1565b5f805f606084860312156122f8575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612321575f80fd5b8151611cd38161200f565b5f6001820161233d5761233d6121b2565b5060010190565b808201808211156106ac576106ac6121b2565b818103818111156106ac576106ac6121b2565b5f8261238457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156123d95784516001600160a01b0316835293830193918301916001016123b4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206ac4bb891cd3b437637710ce86399663ee96457d670a0c97b66fbb7343ef506364736f6c63430008190033

Deployed Bytecode Sourcemap

3848:11188:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6084:83;;;;;;;;;;-1:-1:-1;6154:5:0;;;;;;;;;;;;-1:-1:-1;;;6154:5:0;;;;6084:83;;;;;;;:::i;:::-;;;;;;;;6917:161;;;;;;;;;;-1:-1:-1;6917:161:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;6917:161:0;893:187:1;13387:96:0;;;;;;;;;;-1:-1:-1;13387:96:0;;;;;:::i;:::-;;:::i;:::-;;5432:30;;;;;;;;;;;;;;;;;;;1600:25:1;;;1588:2;1573:18;5432:30:0;1454:177:1;12826:187:0;;;;;;;;;;-1:-1:-1;12826:187:0;;;;;:::i;:::-;;:::i;6361:95::-;;;;;;;;;;;;;:::i;13773:121::-;;;;;;;;;;-1:-1:-1;13773:121:0;;;;;:::i;:::-;;:::i;7141:313::-;;;;;;;;;;-1:-1:-1;7141:313:0;;;;;:::i;:::-;;:::i;6270:83::-;;;;;;;;;;-1:-1:-1;6270:83:0;;4827:1;3111:36:1;;3099:2;3084:18;6270:83:0;2969:184:1;12120:207:0;;;;;;;;;;-1:-1:-1;12120:207:0;;;;;:::i;:::-;;:::i;5330:28::-;;;;;;;;;;-1:-1:-1;5330:28:0;;;;-1:-1:-1;;;;;5330:28:0;;;;;;-1:-1:-1;;;;;3322:32:1;;;3304:51;;3292:2;3277:18;5330:28:0;3158:203:1;13021:149:0;;;;;;;;;;-1:-1:-1;13021:149:0;;;;;:::i;:::-;;:::i;5154:54::-;;;;;;;;;;;;;;;;7923:91;;;;;;;;;;-1:-1:-1;7923:91:0;;;;;:::i;:::-;;:::i;6464:119::-;;;;;;;;;;-1:-1:-1;6464:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6557:18:0;6530:7;6557:18;;;:9;:18;;;;;;;6464:119;2679:148;;;;;;;;;;;;;:::i;5396:29::-;;;;;;;;;;-1:-1:-1;5396:29:0;;;;-1:-1:-1;;;5396:29:0;;;;;;5542:27;;;;;;;;;;-1:-1:-1;5542:27:0;;;;;;;;;;;14181:815;;;;;;;;;;;;;:::i;2465:79::-;;;;;;;;;;-1:-1:-1;2503:7:0;2530:6;-1:-1:-1;;;;;2530:6:0;2465:79;;13288:91;;;;;;;;;;-1:-1:-1;13288:91:0;;;;;:::i;:::-;;:::i;6175:87::-;;;;;;;;;;-1:-1:-1;6247:7:0;;;;;;;;;;;;-1:-1:-1;;;6247:7:0;;;;6175:87;;4111:41;;;;;;;;;;-1:-1:-1;4111:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7086:46;;;;;;;;;;-1:-1:-1;7086:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6591:167;;;;;;;;;;-1:-1:-1;6591:167:0;;;;;:::i;:::-;;:::i;13178:98::-;;;;;;;;;;-1:-1:-1;13178:98:0;;;;;:::i;:::-;;:::i;13902:172::-;;;;;;;;;;;;;:::i;5090:57::-;;;;;;;;;;;;;;;;7805:110;;;;;;;;;;-1:-1:-1;7805:110:0;;;;;:::i;:::-;;:::i;5019:64::-;;;;;;;;;;;;;;;;6766:143;;;;;;;;;;-1:-1:-1;6766:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6874:18:0;;;6847:7;6874:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6766:143;5215:57;;;;;;;;;;;;;;;;13614:151;;;;;;;;;;-1:-1:-1;13614:151:0;;;;;:::i;:::-;;:::i;13491:115::-;;;;;;;;;;;;;:::i;2835:244::-;;;;;;;;;;-1:-1:-1;2835:244:0;;;;;:::i;:::-;;:::i;6917:161::-;6992:4;7009:39;300:10;7032:7;7041:6;7009:8;:39::i;:::-;-1:-1:-1;7066:4:0;6917:161;;;;;:::o;13387:96::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;;;;;;;;;13455:10:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;13455:20:0::1;-1:-1:-1::0;;;;13455:20:0;;::::1;::::0;;;::::1;::::0;;13387:96::o;12826:187::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;12914:9:::1;12909:97;12925:20:::0;;::::1;12909:97;;;12992:4;12962:13;:27;12976:9;;12986:1;12976:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12962:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12962:27:0;:34;;-1:-1:-1;;12962:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12947:3:0::1;12909:97;;;;12826:187:::0;;:::o;6361:95::-;6414:7;4885:13;4827:1;4885:2;:13;:::i;:::-;4870:28;;:12;:28;:::i;:::-;6434:14;;6361:95;:::o;13773:121::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;13853:9:::1;:33:::0;;-1:-1:-1;;;;;;13853:33:0::1;-1:-1:-1::0;;;;;13853:33:0;;;::::1;::::0;;;::::1;::::0;;13773:121::o;7141:313::-;7239:4;7256:36;7266:6;7274:9;7285:6;7256:9;:36::i;:::-;7303:121;7312:6;300:10;7334:89;7372:6;7334:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7334:19:0;;;;;;:11;:19;;;;;;;;300:10;7334:33;;;;;;;;;;:37;:89::i;:::-;7303:8;:121::i;:::-;-1:-1:-1;7442:4:0;7141:313;;;;;:::o;12120:207::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;12220:9:::1;12215:105;12231:20:::0;;::::1;12215:105;;;12303:5;12273:13;:27;12287:9;;12297:1;12287:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12273:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12273:27:0;:35;;-1:-1:-1;;12273:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12253:3:0::1;12215:105;;13021:149:::0;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;13107:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;13107:21:0;;::::1;::::0;;;::::1;::::0;;;13139:14:::1;:23:::0;13021:149::o;7923:91::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7985:14:0::1;;::::0;;;:8:::1;:14;::::0;;;;:21;;-1:-1:-1;;7985:21:0::1;8002:4;7985:21;::::0;;7923:91::o;2679:148::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;2786:1:::1;2770:6:::0;;2749:40:::1;::::0;-1:-1:-1;;;;;2770:6:0;;::::1;::::0;2749:40:::1;::::0;2786:1;;2749:40:::1;2817:1;2800:19:::0;;-1:-1:-1;;;;;;2800:19:0::1;::::0;;2679:148::o;14181:815::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;14247:11:::1;::::0;-1:-1:-1;;;14247:11:0;::::1;;;14246:12;14238:47;;;::::0;-1:-1:-1;;;14238:47:0;;6635:2:1;14238:47:0::1;::::0;::::1;6617:21:1::0;6674:2;6654:18;;;6647:30;6713:25;6693:18;;;6686:53;6756:18;;14238:47:0::1;6433:347:1::0;14238:47:0::1;14296:15;:80:::0;;-1:-1:-1;;;;;;14296:80:0::1;14333:42;14296:80:::0;;::::1;::::0;;;14387:58:::1;::::0;14404:4:::1;::::0;4885:13:::1;4827:1;4885:2;:13;:::i;:::-;4870:28;::::0;:12:::1;:28;:::i;14387:58::-;14490:15;;;;;;;;;-1:-1:-1::0;;;;;14490:15:0::1;-1:-1:-1::0;;;;;14490:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14472:55:0::1;;14536:4;14543:15;;;;;;;;;-1:-1:-1::0;;;;;14543:15:0::1;-1:-1:-1::0;;;;;14543:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14472:94;::::0;-1:-1:-1;;;;;;14472:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7271:15:1;;;14472:94:0::1;::::0;::::1;7253:34:1::0;7323:15;;7303:18;;;7296:43;7188:18;;14472:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14456:13;:110:::0;;-1:-1:-1;;;;;14456:110:0;;::::1;-1:-1:-1::0;;;;;;14456:110:0;;::::1;::::0;::::1;::::0;;:13:::1;14577:32:::0;;;:8:::1;:32;::::0;;;;;;;:39;;-1:-1:-1;;14577:39:0;;::::1;14456:110:::0;14577:39;;::::1;::::0;;;14646:13;;;::::1;14627:34:::0;;:10:::1;:34:::0;;;;;;:41;;;;::::1;;::::0;;14679:15:::1;::::0;::::1;:31;14718:21;14749:4;14755:24;14749:4:::0;-1:-1:-1;;;;;6557:18:0;6530:7;6557:18;;;:9;:18;;;;;;;6464:119;14755:24:::1;14780:1;14782::::0;14784:7:::1;2503::::0;2530:6;-1:-1:-1;;;;;2530:6:0;;2465:79;14784:7:::1;14679:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;14679:129:0;;;-1:-1:-1;;;;;7709:15:1;;;14679:129:0::1;::::0;::::1;7691:34:1::0;7741:18;;;7734:34;;;;7784:18;;;7777:34;;;;7827:18;;;7820:34;7891:15;;;7870:19;;;7863:44;14792:15:0::1;7923:19:1::0;;;7916:35;7625:19;;14679:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14826:13:0::1;::::0;14857:15:::1;::::0;14819:71:::1;::::0;-1:-1:-1;;;14819:71:0;;-1:-1:-1;;;;;14857:15:0;;::::1;14819:71;::::0;::::1;8447:51:1::0;-1:-1:-1;;8514:18:1;;;8507:34;14826:13:0;::::1;::::0;-1:-1:-1;14819:29:0::1;::::0;8420:18:1;;14819:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14901:11:0::1;:18:::0;;-1:-1:-1;;14901:18:0::1;;;::::0;;14930:11:::1;:18:::0;;-1:-1:-1;;;;14930:18:0::1;-1:-1:-1::0;;;14930:18:0::1;::::0;;14976:12:::1;14959:14;:29:::0;14181:815::o;13288:91::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;13353:8:::1;:18:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;13353:18:0;;::::1;::::0;;;::::1;::::0;;13288:91::o;6591:167::-;6669:4;6686:42;300:10;6710:9;6721:6;6686:9;:42::i;13178:98::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;13248:11:::1;:20:::0;13178:98::o;13902:172::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;4885:13:::1;4827:1;4885:2;:13;:::i;:::-;4870:28;::::0;:12:::1;:28;:::i;:::-;13963:18;:28:::0;4885:13:::1;4827:1;4885:2;:13;:::i;:::-;4870:28;::::0;:12:::1;:28;:::i;:::-;14002:13;:21:::0;14039:27:::1;4885:13;4827:1;4885:2;:13;:::i;:::-;4870:28;::::0;:12:::1;:28;:::i;:::-;14039:27;::::0;1600:25:1;;;1588:2;1573:18;14039:27:0::1;;;;;;;13902:172::o:0;7805:110::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7877:22:0::1;7902:5;7877:22:::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;7877:30:0::1;::::0;;7805:110::o;13614:151::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;13738:9:::1;::::0;13710:47:::1;::::0;-1:-1:-1;;;13710:47:0;;-1:-1:-1;;;;;13738:9:0;;::::1;13710:47;::::0;::::1;8447:51:1::0;8514:18;;;8507:34;;;13710:27:0;;::::1;::::0;::::1;::::0;8420:18:1;;13710:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13491:115::-:0;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;13556:9:::1;::::0;13548:50:::1;::::0;-1:-1:-1;;;;;13556:9:0;;::::1;::::0;13576:21:::1;13548:50:::0;::::1;;;::::0;13556:9:::1;13548:50:::0;13556:9;13548:50;13576:21;13556:9;13548:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13491:115::o:0;2835:244::-;2592:6;;-1:-1:-1;;;;;2592:6:0;300:10;2592:22;2584:67;;;;-1:-1:-1;;;2584:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2924:22:0;::::1;2916:73;;;::::0;-1:-1:-1;;;2916:73:0;;9291:2:1;2916:73:0::1;::::0;::::1;9273:21:1::0;9330:2;9310:18;;;9303:30;9369:34;9349:18;;;9342:62;-1:-1:-1;;;9420:18:1;;;9413:36;9466:19;;2916:73:0::1;9089:402:1::0;2916:73:0::1;3026:6;::::0;;3005:38:::1;::::0;-1:-1:-1;;;;;3005:38:0;;::::1;::::0;3026:6;::::1;::::0;3005:38:::1;::::0;::::1;3054:6;:17:::0;;-1:-1:-1;;;;;;3054:17:0::1;-1:-1:-1::0;;;;;3054:17:0;;;::::1;::::0;;;::::1;::::0;;2835:244::o;7462:335::-;-1:-1:-1;;;;;7555:19:0;;7547:68;;;;-1:-1:-1;;;7547:68:0;;9698:2:1;7547:68:0;;;9680:21:1;9737:2;9717:18;;;9710:30;9776:34;9756:18;;;9749:62;-1:-1:-1;;;9827:18:1;;;9820:34;9871:19;;7547:68:0;9496:400:1;7547:68:0;-1:-1:-1;;;;;7634:21:0;;7626:68;;;;-1:-1:-1;;;7626:68:0;;10103:2:1;7626:68:0;;;10085:21:1;10142:2;10122:18;;;10115:30;10181:34;10161:18;;;10154:62;-1:-1:-1;;;10232:18:1;;;10225:32;10274:19;;7626:68:0;9901:398:1;7626:68:0;-1:-1:-1;;;;;7705:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7757:32;;1600:25:1;;;7757:32:0;;1573:18:1;7757:32:0;;;;;;;7462:335;;;:::o;8022:3982::-;-1:-1:-1;;;;;8112:19:0;;;;;;:13;:19;;;;;;;;8111:20;:42;;;;-1:-1:-1;;;;;;8136:17:0;;;;;;:13;:17;;;;;;;;8135:18;8111:42;8102:86;;;;-1:-1:-1;;;8102:86:0;;10506:2:1;8102:86:0;;;10488:21:1;10545:2;10525:18;;;10518:30;10584:32;10564:18;;;10557:60;10634:18;;8102:86:0;10304:354:1;8102:86:0;-1:-1:-1;;;;;8207:18:0;;8199:68;;;;-1:-1:-1;;;8199:68:0;;10865:2:1;8199:68:0;;;10847:21:1;10904:2;10884:18;;;10877:30;10943:34;10923:18;;;10916:62;-1:-1:-1;;;10994:18:1;;;10987:35;11039:19;;8199:68:0;10663:401:1;8199:68:0;-1:-1:-1;;;;;8286:16:0;;8278:64;;;;-1:-1:-1;;;8278:64:0;;11271:2:1;8278:64:0;;;11253:21:1;11310:2;11290:18;;;11283:30;11349:34;11329:18;;;11322:62;-1:-1:-1;;;11400:18:1;;;11393:33;11443:19;;8278:64:0;11069:399:1;8278:64:0;8370:1;8361:6;:10;8353:64;;;;-1:-1:-1;;;8353:64:0;;11675:2:1;8353:64:0;;;11657:21:1;11714:2;11694:18;;;11687:30;11753:34;11733:18;;;11726:62;-1:-1:-1;;;11804:18:1;;;11797:39;11853:19;;8353:64:0;11473:405:1;8353:64:0;8428:17;8479:14;;8463:12;:30;8460:340;;-1:-1:-1;;;;;8515:14:0;;;;;;:8;:14;;;;;;;;8514:15;:40;;;;-1:-1:-1;;;;;;8533:21:0;;8549:4;8533:21;;8514:40;:90;;;;-1:-1:-1;8588:15:0;;-1:-1:-1;;;;;8572:32:0;;;8588:15;;8572:32;;8514:90;:138;;;;-1:-1:-1;8636:15:0;;-1:-1:-1;;;;;8622:30:0;;;8636:15;;8622:30;;8514:138;8510:279;;;-1:-1:-1;;;;;8688:19:0;;;;;;:13;:19;;;;;;;;8683:91;;-1:-1:-1;;;;;8728:19:0;;;;;;:13;:19;;;;;:26;;-1:-1:-1;;8728:26:0;8750:4;8728:26;;;8683:91;2503:7;2530:6;-1:-1:-1;;;;;8816:15:0;;;2530:6;;8816:15;;;;:32;;-1:-1:-1;2503:7:0;2530:6;-1:-1:-1;;;;;8835:13:0;;;2530:6;;8835:13;;8816:32;8812:2836;;;8877:92;8965:3;8877:83;8905:15;;8889:14;;:31;8888:71;;8941:18;;8888:71;;;8923:16;;8888:71;8877:6;;:10;:83::i;:::-;:87;;:92::i;:::-;8865:104;;9005:14;;8989:12;:30;8986:192;;9060:12;9046:27;;;;:13;:27;;;;;;9076:2;-1:-1:-1;9038:77:0;;;;-1:-1:-1;;;9038:77:0;;12085:2:1;9038:77:0;;;12067:21:1;;;12104:18;;;12097:30;12163:34;12143:18;;;12136:62;12215:18;;9038:77:0;11883:356:1;9038:77:0;9147:12;9133:27;;;;:13;:27;;;;;:29;;;;;;:::i;:::-;;;;;;8986:192;9212:14;;9197:12;:29;9194:406;;;9251:10;;-1:-1:-1;;;9251:10:0;;;;9247:338;;;9304:15;;-1:-1:-1;;;;;9290:30:0;;;9304:15;;9290:30;;;;:62;;-1:-1:-1;9338:13:0;;-1:-1:-1;;;;;9324:28:0;;;9338:13;;9324:28;;9290:62;9286:280;;;9407:9;9385:32;;;;:21;:32;;;;;;9420:12;-1:-1:-1;9377:95:0;;;;-1:-1:-1;;;9377:95:0;;12586:2:1;9377:95:0;;;12568:21:1;12625:2;12605:18;;;12598:30;12664:34;12644:18;;;12637:62;-1:-1:-1;;;12715:18:1;;;12708:34;12759:19;;9377:95:0;12384:400:1;9377:95:0;9517:9;9495:32;;;;:21;:32;;;;;9530:12;9495:47;;9286:280;-1:-1:-1;;;;;9620:14:0;;;;;;:8;:14;;;;;;;;:48;;;;-1:-1:-1;9652:15:0;;-1:-1:-1;;;;;9638:30:0;;;9652:15;;9638:30;;9620:48;:68;;;;-1:-1:-1;;;;;;9674:14:0;;;;;;:10;:14;;;;;;;;9672:16;9620:68;9616:314;;;9728:18;;9718:6;:28;;9710:72;;;;-1:-1:-1;;;9710:72:0;;12991:2:1;9710:72:0;;;12973:21:1;13030:2;13010:18;;;13003:30;13069:33;13049:18;;;13042:61;13120:18;;9710:72:0;12789:355:1;9710:72:0;9835:13;;9825:6;9809:13;9819:2;-1:-1:-1;;;;;6557:18:0;6530:7;6557:18;;;:9;:18;;;;;;;6464:119;9809:13;:22;;;;:::i;:::-;:39;;9801:78;;;;-1:-1:-1;;;9801:78:0;;13481:2:1;9801:78:0;;;13463:21:1;13520:2;13500:18;;;13493:30;13559:28;13539:18;;;13532:56;13605:18;;9801:78:0;13279:350:1;9801:78:0;9898:14;:16;;;:14;:16;;;:::i;:::-;;;;;;9616:314;-1:-1:-1;;;;;9951:12:0;;;;;;:8;:12;;;;;;;;9950:13;:33;;;;-1:-1:-1;;;;;;9969:14:0;;;;;;:10;:14;;;;;;;;9967:16;9950:33;9946:152;;;10038:13;;10028:6;10012:13;10022:2;-1:-1:-1;;;;;6557:18:0;6530:7;6557:18;;;:9;:18;;;;;;;6464:119;10012:13;:22;;;;:::i;:::-;:39;;10004:78;;;;-1:-1:-1;;;10004:78:0;;13481:2:1;10004:78:0;;;13463:21:1;13520:2;13500:18;;;13493:30;13559:28;13539:18;;;13532:56;13605:18;;10004:78:0;13279:350:1;10004:78:0;-1:-1:-1;;;;;10117:12:0;;;;;;:8;:12;;;;;;;;:36;;;;-1:-1:-1;;;;;;10133:20:0;;10148:4;10133:20;;10117:36;10114:183;;;10186:95;10277:3;10186:86;10214:16;;10198:14;;:32;10197:74;;10252:19;;10197:74;;;10233:17;;10186:6;;:10;:86::i;:95::-;10174:107;;10114:183;-1:-1:-1;;;;;10311:14:0;;;;;;:8;:14;;;;;;;;10310:15;:32;;;;-1:-1:-1;;;;;;10330:12:0;;;;;;:8;:12;;;;;;;;10329:13;10310:32;:56;;;;-1:-1:-1;;;;;;10346:20:0;;10361:4;10346:20;;10310:56;10306:111;;;-1:-1:-1;10400:1:0;10306:111;10482:4;10433:28;6557:18;;;:9;:18;;;;;;10507:8;;;;;;;:19;;;;-1:-1:-1;10520:6:0;;;;10519:7;10507:19;:35;;;;-1:-1:-1;;;;;;10530:12:0;;;;;;:8;:12;;;;;;;;10507:35;:50;;;;-1:-1:-1;10546:11:0;;;;;;;10507:50;:86;;;;;10582:11;;10561:20;:32;10507:86;:123;;;;;10612:18;;10597:14;;:33;10507:123;10503:1134;;;10670:18;;10655:12;:33;10651:98;;;10728:1;10713:12;:16;10651:98;10790:11;;10775:12;;:26;10767:54;;;;-1:-1:-1;;;10767:54:0;;13836:2:1;10767:54:0;;;13818:21:1;13875:2;13855:18;;;13848:30;-1:-1:-1;;;13894:18:1;;;13887:45;13949:18;;10767:54:0;13634:339:1;10767:54:0;10840:70;10857:52;10861:6;10868:40;10872:20;10893:14;;10868:3;:40::i;:::-;10857:3;:52::i;:::-;10840:16;:70::i;:::-;10958:21;11001:22;;10998:105;;11048:35;11061:21;11048:12;:35::i;:::-;11121:12;:14;;;:12;:14;;;:::i;:::-;;;;-1:-1:-1;;11175:12:0;11154:18;:33;-1:-1:-1;10503:1134:0;;;11228:6;;;;11227:7;:23;;;;-1:-1:-1;;;;;;11238:12:0;;;;;;:8;:12;;;;;;;;11227:23;:38;;;;-1:-1:-1;11254:11:0;;;;;;;11227:38;:74;;;;;11290:11;;11269:20;:32;11227:74;:111;;;;;11320:18;;11305:14;;:33;11227:111;11224:413;;;11359:70;11376:52;11380:6;11387:40;11391:20;11412:14;;11387:3;:40::i;11359:70::-;11477:21;11520:22;;11517:105;;11567:35;11580:21;11567:12;:35::i;:::-;11340:297;11224:413;8850:2798;8812:2836;11663:11;;11660:161;;11731:4;11713:24;;;;:9;:24;;;;;;:39;;11742:9;11713:28;:39::i;:::-;11706:4;11688:24;;;;:9;:24;;;;;;;:64;;;;11770:39;;-1:-1:-1;;;;;11770:39:0;;;;;;;11799:9;1600:25:1;;1588:2;1573:18;;1454:177;11770:39:0;;;;;;;;11660:161;-1:-1:-1;;;;;11847:15:0;;;;;;:9;:15;;;;;;:27;;11867:6;11847:19;:27::i;:::-;-1:-1:-1;;;;;11831:15:0;;;;;;:9;:15;;;;;:43;11899:40;11917:21;:6;11928:9;11917:10;:21::i;:::-;-1:-1:-1;;;;;11899:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11885:13:0;;;;;;;:9;:13;;;;;:54;;;;11955:41;;;11974:21;:6;11985:9;11974:10;:21::i;:::-;11955:41;;1600:25:1;;;1588:2;1573:18;11955:41:0;;;;;;;8091:3913;8022:3982;;;:::o;1357:190::-;1443:7;1479:12;1471:6;;;;1463:29;;;;-1:-1:-1;;;1463:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1503:9:0;1515:5;1519:1;1515;:5;:::i;:::-;1503:17;1357:190;-1:-1:-1;;;;;1357:190:0:o;1555:246::-;1613:7;1637:1;1642;1637:6;1633:47;;-1:-1:-1;1667:1:0;1660:8;;1633:47;1690:9;1702:5;1706:1;1702;:5;:::i;:::-;1690:17;-1:-1:-1;1735:1:0;1726:5;1730:1;1690:17;1726:5;:::i;:::-;:10;1718:56;;;;-1:-1:-1;;;1718:56:0;;14535:2:1;1718:56:0;;;14517:21:1;14574:2;14554:18;;;14547:30;14613:34;14593:18;;;14586:62;-1:-1:-1;;;14664:18:1;;;14657:31;14705:19;;1718:56:0;14333:397:1;1718:56:0;1792:1;1555:246;-1:-1:-1;;;1555:246:0:o;1809:132::-;1867:7;1894:39;1898:1;1901;1894:39;;;;;;;;;;;;;;;;;:3;:39::i;12014:98::-;12071:7;12098:1;12096;:3;12095:9;;12103:1;12095:9;;;-1:-1:-1;12101:1:0;12014:98;-1:-1:-1;12014:98:0:o;12335:483::-;5666:6;:13;;-1:-1:-1;;5666:13:0;5675:4;5666:13;;;12437:16:::1;::::0;;12451:1:::1;12437:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12437:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12437:16:0::1;12413:40;;12482:4;12464;12469:1;12464:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12464:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12508:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12508:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12464:7;;12508:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12498:4;12503:1;12498:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12498:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12573:15:::1;::::0;12541:62:::1;::::0;12558:4:::1;::::0;12573:15:::1;12591:11:::0;12541:8:::1;:62::i;:::-;12614:15;::::0;:196:::1;::::0;-1:-1:-1;;;12614:196:0;;-1:-1:-1;;;;;12614:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12695:11;;12614:15:::1;::::0;12737:4;;12764::::1;::::0;12784:15:::1;::::0;12614:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5702:6:0;:14;;-1:-1:-1;;5702:14:0;;;-1:-1:-1;;;;12335:483:0:o;14082:91::-;14139:9;;:26;;-1:-1:-1;;;;;14139:9:0;;;;:26;;;;;14158:6;;14139:9;:26;:9;:26;14158:6;14139:9;:26;;;;;;;;;;;;;;;;;;;;;14082:91;:::o;1026:179::-;1084:7;;1116:5;1120:1;1116;:5;:::i;:::-;1104:17;;1145:1;1140;:6;;1132:46;;;;-1:-1:-1;;;1132:46:0;;16054:2:1;1132:46:0;;;16036:21:1;16093:2;16073:18;;;16066:30;16132:29;16112:18;;;16105:57;16179:18;;1132:46:0;15852:351:1;1213:136:0;1271:7;1298:43;1302:1;1305;1298:43;;;;;;;;;;;;;;;;;:3;:43::i;1949:189::-;2035:7;2070:12;2063:5;2055:28;;;;-1:-1:-1;;;2055:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2094:9:0;2106:5;2110:1;2106;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1085:118::-;1171:5;1164:13;1157:21;1150:5;1147:32;1137:60;;1193:1;1190;1183:12;1208:241;1264:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:52;;;1333:1;1330;1323:12;1285:52;1372:9;1359:23;1391:28;1413:5;1391:28;:::i;1636:615::-;1722:6;1730;1783:2;1771:9;1762:7;1758:23;1754:32;1751:52;;;1799:1;1796;1789:12;1751:52;1839:9;1826:23;1868:18;1909:2;1901:6;1898:14;1895:34;;;1925:1;1922;1915:12;1895:34;1963:6;1952:9;1948:22;1938:32;;2008:7;2001:4;1997:2;1993:13;1989:27;1979:55;;2030:1;2027;2020:12;1979:55;2070:2;2057:16;2096:2;2088:6;2085:14;2082:34;;;2112:1;2109;2102:12;2082:34;2165:7;2160:2;2150:6;2147:1;2143:14;2139:2;2135:23;2131:32;2128:45;2125:65;;;2186:1;2183;2176:12;2125:65;2217:2;2209:11;;;;;2239:6;;-1:-1:-1;1636:615:1;;-1:-1:-1;;;;1636:615:1:o;2256:247::-;2315:6;2368:2;2356:9;2347:7;2343:23;2339:32;2336:52;;;2384:1;2381;2374:12;2336:52;2423:9;2410:23;2442:31;2467:5;2442:31;:::i;2508:456::-;2585:6;2593;2601;2654:2;2642:9;2633:7;2629:23;2625:32;2622:52;;;2670:1;2667;2660:12;2622:52;2709:9;2696:23;2728:31;2753:5;2728:31;:::i;:::-;2778:5;-1:-1:-1;2835:2:1;2820:18;;2807:32;2848:33;2807:32;2848:33;:::i;:::-;2508:456;;2900:7;;-1:-1:-1;;;2954:2:1;2939:18;;;;2926:32;;2508:456::o;3366:309::-;3431:6;3439;3492:2;3480:9;3471:7;3467:23;3463:32;3460:52;;;3508:1;3505;3498:12;3460:52;3547:9;3534:23;3566:28;3588:5;3566:28;:::i;3680:180::-;3739:6;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;-1:-1:-1;3831:23:1;;3680:180;-1:-1:-1;3680:180:1:o;3865:388::-;3933:6;3941;3994:2;3982:9;3973:7;3969:23;3965:32;3962:52;;;4010:1;4007;4000:12;3962:52;4049:9;4036:23;4068:31;4093:5;4068:31;:::i;:::-;4118:5;-1:-1:-1;4175:2:1;4160:18;;4147:32;4188:33;4147:32;4188:33;:::i;:::-;4240:7;4230:17;;;3865:388;;;;;:::o;4258:356::-;4460:2;4442:21;;;4479:18;;;4472:30;4538:34;4533:2;4518:18;;4511:62;4605:2;4590:18;;4258:356::o;4619:127::-;4680:10;4675:3;4671:20;4668:1;4661:31;4711:4;4708:1;4701:15;4735:4;4732:1;4725:15;4751:127;4812:10;4807:3;4803:20;4800:1;4793:31;4843:4;4840:1;4833:15;4867:4;4864:1;4857:15;4883:416;4972:1;5009:5;4972:1;5023:270;5044:7;5034:8;5031:21;5023:270;;;5103:4;5099:1;5095:6;5091:17;5085:4;5082:27;5079:53;;;5112:18;;:::i;:::-;5162:7;5152:8;5148:22;5145:55;;;5182:16;;;;5145:55;5261:22;;;;5221:15;;;;5023:270;;;5027:3;4883:416;;;;;:::o;5304:806::-;5353:5;5383:8;5373:80;;-1:-1:-1;5424:1:1;5438:5;;5373:80;5472:4;5462:76;;-1:-1:-1;5509:1:1;5523:5;;5462:76;5554:4;5572:1;5567:59;;;;5640:1;5635:130;;;;5547:218;;5567:59;5597:1;5588:10;;5611:5;;;5635:130;5672:3;5662:8;5659:17;5656:43;;;5679:18;;:::i;:::-;-1:-1:-1;;5735:1:1;5721:16;;5750:5;;5547:218;;5849:2;5839:8;5836:16;5830:3;5824:4;5821:13;5817:36;5811:2;5801:8;5798:16;5793:2;5787:4;5784:12;5780:35;5777:77;5774:159;;;-1:-1:-1;5886:19:1;;;5918:5;;5774:159;5965:34;5990:8;5984:4;5965:34;:::i;:::-;6035:6;6031:1;6027:6;6023:19;6014:7;6011:32;6008:58;;;6046:18;;:::i;:::-;6084:20;;5304:806;-1:-1:-1;;;5304:806:1:o;6115:140::-;6173:5;6202:47;6243:4;6233:8;6229:19;6223:4;6202:47;:::i;6260:168::-;6333:9;;;6364;;6381:15;;;6375:22;;6361:37;6351:71;;6402:18;;:::i;6785:251::-;6855:6;6908:2;6896:9;6887:7;6883:23;6879:32;6876:52;;;6924:1;6921;6914:12;6876:52;6956:9;6950:16;6975:31;7000:5;6975:31;:::i;7962:306::-;8050:6;8058;8066;8119:2;8107:9;8098:7;8094:23;8090:32;8087:52;;;8135:1;8132;8125:12;8087:52;8164:9;8158:16;8148:26;;8214:2;8203:9;8199:18;8193:25;8183:35;;8258:2;8247:9;8243:18;8237:25;8227:35;;7962:306;;;;;:::o;8552:245::-;8619:6;8672:2;8660:9;8651:7;8647:23;8643:32;8640:52;;;8688:1;8685;8678:12;8640:52;8720:9;8714:16;8739:28;8761:5;8739:28;:::i;12244:135::-;12283:3;12304:17;;;12301:43;;12324:18;;:::i;:::-;-1:-1:-1;12371:1:1;12360:13;;12244:135::o;13149:125::-;13214:9;;;13235:10;;;13232:36;;;13248:18;;:::i;13978:128::-;14045:9;;;14066:11;;;14063:37;;;14080:18;;:::i;14111:217::-;14151:1;14177;14167:132;;14221:10;14216:3;14212:20;14209:1;14202:31;14256:4;14253:1;14246:15;14284:4;14281:1;14274:15;14167:132;-1:-1:-1;14313:9:1;;14111:217::o;14867:980::-;15129:4;15177:3;15166:9;15162:19;15208:6;15197:9;15190:25;15234:2;15272:6;15267:2;15256:9;15252:18;15245:34;15315:3;15310:2;15299:9;15295:18;15288:31;15339:6;15374;15368:13;15405:6;15397;15390:22;15443:3;15432:9;15428:19;15421:26;;15482:2;15474:6;15470:15;15456:29;;15503:1;15513:195;15527:6;15524:1;15521:13;15513:195;;;15592:13;;-1:-1:-1;;;;;15588:39:1;15576:52;;15683:15;;;;15648:12;;;;15624:1;15542:9;15513:195;;;-1:-1:-1;;;;;;;15764:32:1;;;;15759:2;15744:18;;15737:60;-1:-1:-1;;;15828:3:1;15813:19;15806:35;15725:3;14867:980;-1:-1:-1;;;14867:980:1:o

Swarm Source

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