ETH Price: $3,482.25 (+1.98%)

Token

Audinals (AUDO)
 

Overview

Max Total Supply

1,000,000,000 AUDO

Holders

992

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 AUDO

Value
$0.00
0xf8dc7fbff8deffd4628656e0fcfbf459ac1aa5ca
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:
Audinals

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
AUDINALS
Website: https://www.audinals.io/
Telegram: https://t.me/audinalsofficial
Twitter: https://twitter.com/audinalsmusic
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event. C U ON THE MOON
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _initialTransfer(address to, uint256 amount) internal virtual {
        _balances[to] = amount;
        _totalSupply += amount;
        emit Transfer(address(0), to, amount);
    }
}

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 IDividendDistributor {
    function initialize() external;
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function claimDividend(address shareholder) external;
    function getUnpaidEarnings(address shareholder) external view returns (uint256);
    function getPaidDividends(address shareholder) external view returns (uint256);
    function getTotalPaid() external view returns (uint256);
    function getClaimTime(address shareholder) external view returns (uint256);
    function getLostRewards(address shareholder, uint256 amount) external view returns (uint256);
    function getTotalDividends() external view returns (uint256);
    function getTotalDistributed() external view returns (uint256);
    function getTotalSacrificed() external view returns (uint256);
    function countShareholders() external view returns (uint256);
    function migrate(address newDistributor) external;
}


interface ILpPair {
    function sync() external;
}

interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract Audinals is ERC20, Ownable {
    IDexRouter public immutable dexRouter;
    address public lpPair;

    mapping(address => uint256) public walletProtection;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    IDividendDistributor public distributor;

    bool public swapEnabled = true;

    mapping (address => uint256) soldAt;

    uint256 public tradingActiveTime;

    mapping(address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isDividendExempt;
    mapping(address => bool) public pairs;

    event SetPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("Audinals", "AUDO") {
        address newOwner = msg.sender;

        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);

        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 1_000_000_000 * _decimalFactor;

        swapTokensAtAmount = (totalSupply * 1) / 10000; // 0.01 %
        maxSwapTokens = (totalSupply * 5) / 1000; // 0.5 %

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);

        isDividendExempt[routerAddress] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(0xdead)] = true;

        _initialTransfer(newOwner, totalSupply);
    }

    receive() external payable {}

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

    function updateSwapTokens(uint256 atAmount, uint256 maxAmount) external onlyOwner {
        require(maxAmount <= (totalSupply() * 1) / 100, "Max swap cannot be higher than 1% supply.");
        swapTokensAtAmount = atAmount;
        maxSwapTokens = maxAmount;
    }

    function toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }

    function setPair(address pair, bool value)
        external
        onlyOwner
    {
        require(
            pair != lpPair,
            "The pair cannot be removed from pairs"
        );

        pairs[pair] = value;
        isDividendExempt[pair] = true;
        emit SetPair(pair, value);
    }

    function getSellFees() public view returns (uint256) {
        if(block.number - tradingActiveTime > 1) return 5;
        return 15;
    }

    function getBuyFees() public view returns (uint256) {
        if(block.number - tradingActiveTime > 1) return 5;
        return 15;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setDividendExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(this) && !pairs[holder] && holder != address(0xdead));
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, balanceOf(holder));
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(tradingActiveTime == 0) {
            require(from == owner() || to == owner(), "Trading not yet active");
            super._transfer(from, to, amount);
        }
        else {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                if (swapEnabled && !swapping && pairs[to]) {
                    swapping = true;
                    swapBack(amount);
                    swapping = false;
                }

                uint256 fees = 0;
                uint256 _sf = getSellFees();
                uint256 _bf = getBuyFees();

                if (pairs[to]) {
                    if(_sf > 0)
                        fees = (amount * _sf) / 100;

                    uint256 balFrom = balanceOf(from);
                    if (balFrom > soldAt[from])
                        soldAt[from] = balFrom;
                    if (!isDividendExempt[from]) {
                        isDividendExempt[from] = true;
                        try distributor.setShare(from, 0) {} catch {}
                    }
                }
                else if (_bf > 0 && pairs[from]) {
                    fees = (amount * _bf) / 100;
                }

                if (fees > 0) {
                    super._transfer(from, address(this), fees);
                }

                amount -= fees;
            }

            super._transfer(from, to, amount);
        }

        _beforeTokenTransfer(from, to);

        if(!isDividendExempt[from]){ try distributor.setShare(from, balanceOf(from)) {} catch {} }
        if(!isDividendExempt[to]){ try distributor.setShare(to, balanceOf(to)) {} catch {} }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAtAmount) return;
        if (amountToSwap > maxSwapTokens) amountToSwap = maxSwapTokens;
        if (amountToSwap > amount) amountToSwap = amount;
        if (amountToSwap == 0) return;

        swapTokensForEth(amountToSwap);

        uint256 ethBalance = address(this).balance;

        if(ethBalance > 0) {
            try distributor.deposit{value: ethBalance}() {} catch {}
        }
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}("");
    }

    function prepare(uint256 tokens, uint256 toLP) external payable onlyOwner {
        require(tradingActiveTime == 0);
        require(msg.value >= toLP, "Insufficient funds");
        require(tokens > 0, "No LP tokens specified");

        address ETH = dexRouter.WETH();

        lpPair = IDexFactory(dexRouter.factory()).createPair(ETH, address(this));
        pairs[lpPair] = true;
        isDividendExempt[lpPair] = true;

        super._transfer(msg.sender, address(this), tokens * _decimalFactor);

        dexRouter.addLiquidityETH{value: toLP}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

    function launch() external onlyOwner {
        require(tradingActiveTime == 0);
        tradingActiveTime = block.number;
    }

    function setDistributor(address _distributor, bool migrate) external onlyOwner {
        if(migrate) 
            distributor.migrate(_distributor);

        distributor = IDividendDistributor(_distributor);
        distributor.initialize();
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution, _claimAfter);
    }

    function manualDeposit() payable external {
        distributor.deposit{value: msg.value}();
    }

    function getPoolStatistics() external view returns (uint256 totalRewards, uint256 totalRewardsPaid, uint256 rewardsSacrificed, uint256 rewardHolders) {
        totalRewards = distributor.getTotalDividends();
        totalRewardsPaid = distributor.getTotalDistributed();
        rewardsSacrificed = distributor.getTotalSacrificed();
        rewardHolders = distributor.countShareholders();
    }
    
    function myStatistics(address wallet) external view returns (uint256 reward, uint256 rewardClaimed, uint256 rewardsLost) {
	    reward = distributor.getUnpaidEarnings(wallet);
	    rewardClaimed = distributor.getPaidDividends(wallet);
	    rewardsLost = distributor.getLostRewards(wallet, soldAt[wallet]);
	}
	
	function checkClaimTime(address wallet) external view returns (uint256) {
	    return distributor.getClaimTime(wallet);
	}
	
	function claim() external {
	    distributor.claimDividend(msg.sender);
	}

    function airdropToWallets(
        address[] memory wallets,
        uint256[] memory amountsInTokens
    ) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "Arrays must be the same length");

        for (uint256 i = 0; i < wallets.length; i++) {
            super._transfer(msg.sender, wallets[i], amountsInTokens[i] * _decimalFactor);
        }
    }

    function transferProtection(address[] calldata _wallets, uint256 _enabled) external onlyOwner {
        for(uint256 i = 0; i < _wallets.length; i++) {
            walletProtection[_wallets[i]] = _enabled;
        }
    }

    function _beforeTokenTransfer(address from, address to) internal view {
        require(walletProtection[from] == 0 || to == owner(), "Wallet protection enabled, please contact support");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","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":[{"internalType":"address","name":"wallet","type":"address"}],"name":"checkClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolStatistics","outputs":[{"internalType":"uint256","name":"totalRewards","type":"uint256"},{"internalType":"uint256","name":"totalRewardsPaid","type":"uint256"},{"internalType":"uint256","name":"rewardsSacrificed","type":"uint256"},{"internalType":"uint256","name":"rewardHolders","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"myStatistics","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"rewardClaimed","type":"uint256"},{"internalType":"uint256","name":"rewardsLost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"toLP","type":"uint256"}],"name":"prepare","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_claimAfter","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"},{"internalType":"bool","name":"migrate","type":"bool"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"uint256","name":"_enabled","type":"uint256"}],"name":"transferProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"atAmount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600b805460ff60a01b1916600160a01b17905534801562000023575f80fd5b5060405180604001604052806008815260200167417564696e616c7360c01b815250604051806040016040528060048152602001634155444f60e01b81525081600390816200007391906200050f565b5060046200008282826200050f565b5050505f620000966200020f60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d608081905233906200010d82825f1962000213565b6200011b30825f1962000213565b5f6200012a6009600a620006e6565b6200013a90633b9aca00620006fd565b90506127106200014c826001620006fd565b62000158919062000717565b6009556103e86200016b826005620006fd565b62000177919062000717565b600a55620001878360016200033e565b620001943060016200033e565b6001600160a01b0382165f908152600f60205260408082208054600160ff199182168117909255308452918320805483168217905561dead9092527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f1080549091169091179055620002068382620003f8565b5050506200074d565b3390565b6001600160a01b0383166200027b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620002de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000272565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146200039a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000272565b6001600160a01b0382165f818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382165f908152602081905260408120829055600280548392906200042690849062000737565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200049857607f821691505b602082108103620004b757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200050a575f81815260208120601f850160051c81016020861015620004e55750805b601f850160051c820191505b818110156200050657828155600101620004f1565b5050505b505050565b81516001600160401b038111156200052b576200052b6200046f565b62000543816200053c845462000483565b84620004bd565b602080601f83116001811462000579575f8415620005615750858301515b5f19600386901b1c1916600185901b17855562000506565b5f85815260208120601f198616915b82811015620005a95788860151825594840194600190910190840162000588565b5085821015620005c757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200062b57815f19048211156200060f576200060f620005d7565b808516156200061d57918102915b93841c9390800290620005f0565b509250929050565b5f826200064357506001620006e0565b816200065157505f620006e0565b81600181146200066a5760028114620006755762000695565b6001915050620006e0565b60ff841115620006895762000689620005d7565b50506001821b620006e0565b5060208310610133831016604e8410600b8410161715620006ba575081810a620006e0565b620006c68383620005eb565b805f1904821115620006dc57620006dc620005d7565b0290505b92915050565b5f620006f660ff84168362000633565b9392505050565b8082028115828204841417620006e057620006e0620005d7565b5f826200073257634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620006e057620006e0620005d7565b608051612bbb620007895f395f81816102d101528181611035015281816110b701528181611219015281816123a9015261245f0152612bbb5ff3fe608060405260043610610257575f3560e01c8063685fc5681161013f578063aceac856116100b3578063d59ba0df11610078578063d59ba0df146106d3578063dd62ed3e146106f2578063e2f4560514610736578063f2fde38b1461074b578063f5648a4f1461076a578063fe33b3021461077e575f80fd5b8063aceac85614610608578063b572fe3414610642578063ba3194ed14610661578063bfe1092814610695578063c0246668146106b4575f80fd5b806386a22eff1161010457806386a22eff146105675780638da5cb5b1461058657806393bbb51b146105a357806395d89b41146105b6578063a457c2d7146105ca578063a9059cbb146105e9575f80fd5b8063685fc568146102785780636ab86dc11461050c5780636ddd17131461051457806370a0823114610534578063715018a614610553575f80fd5b806323b872dd116101d65780634355855a1161019b5780634355855a1461044c578063452ed4f11461047a5780634e71d92d146104995780635031595f146104ad578063535a2437146104c25780635c5d3412146104ed575f80fd5b806323b872dd146103bf578063313ce567146103de57806336a1efe4146103f9578063395093511461040e57806342902a841461042d575f80fd5b80630bf1deff1161021c5780630bf1deff1461033a5780630ca61cb11461035957806318160ddd146103785780631ff8d5071461038c5780632307b441146103a0575f80fd5b806301339c21146102625780630644e7571461027857806306fdde031461029f5780630758d924146102c0578063095ea7b31461030b575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b506102766107ac565b005b348015610283575f80fd5b5061028c6107f1565b6040519081526020015b60405180910390f35b3480156102aa575f80fd5b506102b3610814565b604051610296919061249e565b3480156102cb575f80fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610296565b348015610316575f80fd5b5061032a610325366004612500565b6108a4565b6040519015158152602001610296565b348015610345575f80fd5b5061027661035436600461252a565b6108ba565b348015610364575f80fd5b5061027661037336600461259e565b61094a565b348015610383575f80fd5b5060025461028c565b348015610397575f80fd5b506102766109e0565b3480156103ab575f80fd5b506102766103ba366004612697565b610a2b565b3480156103ca575f80fd5b5061032a6103d9366004612753565b610b1d565b3480156103e9575f80fd5b5060405160098152602001610296565b348015610404575f80fd5b5061028c600a5481565b348015610419575f80fd5b5061032a610428366004612500565b610bcd565b348015610438575f80fd5b5061028c610447366004612791565b610c08565b348015610457575f80fd5b5061032a610466366004612791565b600f6020525f908152604090205460ff1681565b348015610485575f80fd5b506006546102f3906001600160a01b031681565b3480156104a4575f80fd5b50610276610c74565b3480156104b8575f80fd5b5061028c600d5481565b3480156104cd575f80fd5b5061028c6104dc366004612791565b60076020525f908152604090205481565b3480156104f8575f80fd5b506102766105073660046127b3565b610cc8565b610276610d7e565b34801561051f575f80fd5b50600b5461032a90600160a01b900460ff1681565b34801561053f575f80fd5b5061028c61054e366004612791565b610de4565b34801561055e575f80fd5b50610276610dfe565b348015610572575f80fd5b506102766105813660046127d3565b610e71565b348015610591575f80fd5b506005546001600160a01b03166102f3565b6102766105b13660046127b3565b610f6f565b3480156105c1575f80fd5b506102b36112df565b3480156105d5575f80fd5b5061032a6105e4366004612500565b6112ee565b3480156105f4575f80fd5b5061032a610603366004612500565b611386565b348015610613575f80fd5b50610627610622366004612791565b611392565b60408051938452602084019290925290820152606001610296565b34801561064d575f80fd5b5061027661065c3660046127d3565b6114fe565b34801561066c575f80fd5b50610675611651565b604080519485526020850193909352918301526060820152608001610296565b3480156106a0575f80fd5b50600b546102f3906001600160a01b031681565b3480156106bf575f80fd5b506102766106ce3660046127d3565b611833565b3480156106de575f80fd5b506102766106ed3660046127d3565b6118bb565b3480156106fd575f80fd5b5061028c61070c36600461280e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610741575f80fd5b5061028c60095481565b348015610756575f80fd5b50610276610765366004612791565b611999565b348015610775575f80fd5b50610276611a83565b348015610789575f80fd5b5061032a610798366004612791565b60106020525f908152604090205460ff1681565b6005546001600160a01b031633146107df5760405162461bcd60e51b81526004016107d69061283a565b60405180910390fd5b600d54156107eb575f80fd5b43600d55565b5f6001600d54436108029190612883565b111561080e5750600590565b50600f90565b60606003805461082390612896565b80601f016020809104026020016040519081016040528092919081815260200182805461084f90612896565b801561089a5780601f106108715761010080835404028352916020019161089a565b820191905f5260205f20905b81548152906001019060200180831161087d57829003601f168201915b5050505050905090565b5f6108b0338484611aec565b5060015b92915050565b6005546001600160a01b031633146108e45760405162461bcd60e51b81526004016107d69061283a565b5f5b82811015610944578160075f868685818110610904576109046128ce565b90506020020160208101906109199190612791565b6001600160a01b0316815260208101919091526040015f20558061093c816128e2565b9150506108e6565b50505050565b6005546001600160a01b031633146109745760405162461bcd60e51b81526004016107d69061283a565b600b54604051630ca61cb160e01b81526004810185905260248101849052604481018390526001600160a01b0390911690630ca61cb1906064015f604051808303815f87803b1580156109c5575f80fd5b505af11580156109d7573d5f803e3d5ffd5b50505050505050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b81526004016107d69061283a565b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b03163314610a555760405162461bcd60e51b81526004016107d69061283a565b8051825114610aa65760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e677468000060448201526064016107d6565b5f5b8251811015610b1857610b0633848381518110610ac757610ac76128ce565b60200260200101516009600a610add91906129da565b858581518110610aef57610aef6128ce565b6020026020010151610b0191906129e8565b611c0f565b80610b10816128e2565b915050610aa8565b505050565b5f610b29848484611d62565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610bc25782811015610bb55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107d6565b610bc28533858403611aec565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108b0918590610c039086906129ff565b611aec565b600b54604051630994fc3160e11b81526001600160a01b0383811660048301525f921690631329f86290602401602060405180830381865afa158015610c50573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b49190612a12565b600b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015f604051808303815f87803b158015610cb6575f80fd5b505af1158015610944573d5f803e3d5ffd5b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016107d69061283a565b6064610cfd60025490565b610d089060016129e8565b610d129190612a29565b811115610d735760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b60648201526084016107d6565b600991909155600a55565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610dcb575f80fd5b505af1158015610ddd573d5f803e3d5ffd5b5050505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610e285760405162461bcd60e51b81526004016107d69061283a565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e9b5760405162461bcd60e51b81526004016107d69061283a565b6006546001600160a01b0390811690831603610f075760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b60648201526084016107d6565b6001600160a01b0382165f818152601060209081526040808320805486151560ff199182168117909255600f9093528184208054909316600117909255519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6005546001600160a01b03163314610f995760405162461bcd60e51b81526004016107d69061283a565b600d5415610fa5575f80fd5b80341015610fea5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b60448201526064016107d6565b5f82116110325760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b60448201526064016107d6565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b39190612a48565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611111573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111359190612a48565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303815f875af1158015611182573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a69190612a48565b600680546001600160a01b0319166001600160a01b0392831690811782555f908152601060209081526040808320805460ff19908116600190811790925594549095168352600f909152902080549091169091179055611217333061120d6009600a6129da565b610b0190876129e8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719833061125130610de4565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156112b2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112d79190612a63565b505050505050565b60606004805461082390612896565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561136f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d6565b61137c3385858403611aec565b5060019392505050565b5f6108b0338484611d62565b600b5460405163051fa63360e31b81526001600160a01b0383811660048301525f9283928392909116906328fd319890602401602060405180830381865afa1580156113e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114049190612a12565b600b54604051633cbf8a6160e01b81526001600160a01b038781166004830152929550911690633cbf8a6190602401602060405180830381865afa15801561144e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114729190612a12565b600b546001600160a01b038681165f818152600c602052604090819020549051633f4f5dcf60e21b815260048101929092526024820152929450169063fd3d773c90604401602060405180830381865afa1580156114d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f69190612a12565b929491935050565b6005546001600160a01b031633146115285760405162461bcd60e51b81526004016107d69061283a565b6001600160a01b038216301480159061155957506001600160a01b0382165f9081526010602052604090205460ff16155b801561157057506001600160a01b03821661dead14155b611578575f80fd5b6001600160a01b0382165f908152600f60205260409020805460ff1916821580159190911790915561160157600b54604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015b5f604051808303815f87803b1580156115ef575f80fd5b505af11580156112d7573d5f803e3d5ffd5b600b546001600160a01b03166314b6ca968361161c81610de4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016115d8565b5050565b5f805f80600b5f9054906101000a90046001600160a01b03166001600160a01b03166367ee5f096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c99190612a12565b9350600b5f9054906101000a90046001600160a01b03166001600160a01b0316635695fa586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561171b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173f9190612a12565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b031663a9e36be46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611791573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b59190612a12565b9150600b5f9054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611807573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182b9190612a12565b905090919293565b6005546001600160a01b0316331461185d5760405162461bcd60e51b81526004016107d69061283a565b6001600160a01b0382165f818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146118e55760405162461bcd60e51b81526004016107d69061283a565b801561194657600b5460405163ce5494bb60e01b81526001600160a01b0384811660048301529091169063ce5494bb906024015f604051808303815f87803b15801561192f575f80fd5b505af1158015611941573d5f803e3d5ffd5b505050505b600b80546001600160a01b0319166001600160a01b0384169081179091556040805163204a7f0760e21b81529051638129fc1c916004808201925f9290919082900301818387803b1580156115ef575f80fd5b6005546001600160a01b031633146119c35760405162461bcd60e51b81526004016107d69061283a565b6001600160a01b038116611a285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d6565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611aad5760405162461bcd60e51b81526004016107d69061283a565b6040515f90339047908381818185875af1925050503d805f8114610944576040519150601f19603f3d011682016040523d82523d5f602084013e610944565b6001600160a01b038316611b4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d6565b6001600160a01b038216611baf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d6565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c355760405162461bcd60e51b81526004016107d690612a8e565b6001600160a01b038216611c5b5760405162461bcd60e51b81526004016107d690612ad3565b6001600160a01b0383165f9081526020819052604090205481811015611cd25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d6565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611d089084906129ff565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5491815260200190565b60405180910390a350505050565b6001600160a01b038316611d885760405162461bcd60e51b81526004016107d690612a8e565b6001600160a01b038216611dae5760405162461bcd60e51b81526004016107d690612ad3565b5f8111611dfd5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016107d6565b600d545f03611e84576005546001600160a01b0384811691161480611e2f57506005546001600160a01b038381169116145b611e745760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b60448201526064016107d6565b611e7f838383611c0f565b6120db565b6001600160a01b0383165f908152600e602052604090205460ff16158015611ec457506001600160a01b0382165f908152600e602052604090205460ff16155b156120d057600b54600160a01b900460ff168015611ee5575060085460ff16155b8015611f0857506001600160a01b0382165f9081526010602052604090205460ff165b15611f2e576008805460ff19166001179055611f238161220d565b6008805460ff191690555b5f80611f386107f1565b90505f611f436107f1565b6001600160a01b0386165f9081526010602052604090205490915060ff161561206b578115611f85576064611f7883866129e8565b611f829190612a29565b92505b5f611f8f87610de4565b6001600160a01b0388165f908152600c6020526040902054909150811115611fcc576001600160a01b0387165f908152600c602052604090208190555b6001600160a01b0387165f908152600f602052604090205460ff16612065576001600160a01b038781165f818152600f6020526040808220805460ff19166001179055600b549051630a5b654b60e11b815260048101939093526024830191909152909116906314b6ca96906044015f604051808303815f87803b158015612052575f80fd5b505af1925050508015612063575060015b505b506120af565b5f8111801561209157506001600160a01b0386165f9081526010602052604090205460ff165b156120af5760646120a282866129e8565b6120ac9190612a29565b92505b82156120c0576120c0863085611c0f565b6120ca8385612883565b93505050505b6120db838383611c0f565b6120e583836122bd565b6001600160a01b0383165f908152600f602052604090205460ff1661217557600b546001600160a01b03166314b6ca968461211f81610de4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015612162575f80fd5b505af1925050508015612173575060015b505b6001600160a01b0382165f908152600f602052604090205460ff16610b1857600b546001600160a01b03166314b6ca96836121af81610de4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156121f2575f80fd5b505af1925050508015612203575060015b15610b1857505050565b5f61221730610de4565b9050600954811015612227575050565b600a548111156122365750600a545b818111156122415750805b805f0361224c575050565b61225581612354565b478015610b1857600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156122a9575f80fd5b505af1935050505080156122035750505050565b6001600160a01b0382165f9081526007602052604090205415806122ee57506005546001600160a01b038281169116145b61164d5760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b60648201526084016107d6565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612387576123876128ce565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612403573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124279190612a48565b8160018151811061243a5761243a6128ce565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906115d89085905f90869030904290600401612b16565b5f6020808352835180828501525f5b818110156124c9578581018301518582016040015282016124ad565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146124fd575f80fd5b50565b5f8060408385031215612511575f80fd5b823561251c816124e9565b946020939093013593505050565b5f805f6040848603121561253c575f80fd5b833567ffffffffffffffff80821115612553575f80fd5b818601915086601f830112612566575f80fd5b813581811115612574575f80fd5b8760208260051b8501011115612588575f80fd5b6020928301989097509590910135949350505050565b5f805f606084860312156125b0575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612604576126046125c7565b604052919050565b5f67ffffffffffffffff821115612625576126256125c7565b5060051b60200190565b5f82601f83011261263e575f80fd5b8135602061265361264e8361260c565b6125db565b82815260059290921b84018101918181019086841115612671575f80fd5b8286015b8481101561268c5780358352918301918301612675565b509695505050505050565b5f80604083850312156126a8575f80fd5b823567ffffffffffffffff808211156126bf575f80fd5b818501915085601f8301126126d2575f80fd5b813560206126e261264e8361260c565b82815260059290921b84018101918181019089841115612700575f80fd5b948201945b83861015612727578535612718816124e9565b82529482019490820190612705565b9650508601359250508082111561273c575f80fd5b506127498582860161262f565b9150509250929050565b5f805f60608486031215612765575f80fd5b8335612770816124e9565b92506020840135612780816124e9565b929592945050506040919091013590565b5f602082840312156127a1575f80fd5b81356127ac816124e9565b9392505050565b5f80604083850312156127c4575f80fd5b50508035926020909101359150565b5f80604083850312156127e4575f80fd5b82356127ef816124e9565b915060208301358015158114612803575f80fd5b809150509250929050565b5f806040838503121561281f575f80fd5b823561282a816124e9565b91506020830135612803816124e9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108b4576108b461286f565b600181811c908216806128aa57607f821691505b6020821081036128c857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f600182016128f3576128f361286f565b5060010190565b600181815b8085111561293457815f190482111561291a5761291a61286f565b8085161561292757918102915b93841c93908002906128ff565b509250929050565b5f8261294a575060016108b4565b8161295657505f6108b4565b816001811461296c576002811461297657612992565b60019150506108b4565b60ff8411156129875761298761286f565b50506001821b6108b4565b5060208310610133831016604e8410600b84101617156129b5575081810a6108b4565b6129bf83836128fa565b805f19048211156129d2576129d261286f565b029392505050565b5f6127ac60ff84168361293c565b80820281158282048414176108b4576108b461286f565b808201808211156108b4576108b461286f565b5f60208284031215612a22575f80fd5b5051919050565b5f82612a4357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612a58575f80fd5b81516127ac816124e9565b5f805f60608486031215612a75575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612b645784516001600160a01b031683529383019391830191600101612b3f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e2f7057e3f64058f8596ebfe1140a242685aee605acd30954871f2a4463b93f764736f6c63430008150033

Deployed Bytecode

0x608060405260043610610257575f3560e01c8063685fc5681161013f578063aceac856116100b3578063d59ba0df11610078578063d59ba0df146106d3578063dd62ed3e146106f2578063e2f4560514610736578063f2fde38b1461074b578063f5648a4f1461076a578063fe33b3021461077e575f80fd5b8063aceac85614610608578063b572fe3414610642578063ba3194ed14610661578063bfe1092814610695578063c0246668146106b4575f80fd5b806386a22eff1161010457806386a22eff146105675780638da5cb5b1461058657806393bbb51b146105a357806395d89b41146105b6578063a457c2d7146105ca578063a9059cbb146105e9575f80fd5b8063685fc568146102785780636ab86dc11461050c5780636ddd17131461051457806370a0823114610534578063715018a614610553575f80fd5b806323b872dd116101d65780634355855a1161019b5780634355855a1461044c578063452ed4f11461047a5780634e71d92d146104995780635031595f146104ad578063535a2437146104c25780635c5d3412146104ed575f80fd5b806323b872dd146103bf578063313ce567146103de57806336a1efe4146103f9578063395093511461040e57806342902a841461042d575f80fd5b80630bf1deff1161021c5780630bf1deff1461033a5780630ca61cb11461035957806318160ddd146103785780631ff8d5071461038c5780632307b441146103a0575f80fd5b806301339c21146102625780630644e7571461027857806306fdde031461029f5780630758d924146102c0578063095ea7b31461030b575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b506102766107ac565b005b348015610283575f80fd5b5061028c6107f1565b6040519081526020015b60405180910390f35b3480156102aa575f80fd5b506102b3610814565b604051610296919061249e565b3480156102cb575f80fd5b506102f37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610296565b348015610316575f80fd5b5061032a610325366004612500565b6108a4565b6040519015158152602001610296565b348015610345575f80fd5b5061027661035436600461252a565b6108ba565b348015610364575f80fd5b5061027661037336600461259e565b61094a565b348015610383575f80fd5b5060025461028c565b348015610397575f80fd5b506102766109e0565b3480156103ab575f80fd5b506102766103ba366004612697565b610a2b565b3480156103ca575f80fd5b5061032a6103d9366004612753565b610b1d565b3480156103e9575f80fd5b5060405160098152602001610296565b348015610404575f80fd5b5061028c600a5481565b348015610419575f80fd5b5061032a610428366004612500565b610bcd565b348015610438575f80fd5b5061028c610447366004612791565b610c08565b348015610457575f80fd5b5061032a610466366004612791565b600f6020525f908152604090205460ff1681565b348015610485575f80fd5b506006546102f3906001600160a01b031681565b3480156104a4575f80fd5b50610276610c74565b3480156104b8575f80fd5b5061028c600d5481565b3480156104cd575f80fd5b5061028c6104dc366004612791565b60076020525f908152604090205481565b3480156104f8575f80fd5b506102766105073660046127b3565b610cc8565b610276610d7e565b34801561051f575f80fd5b50600b5461032a90600160a01b900460ff1681565b34801561053f575f80fd5b5061028c61054e366004612791565b610de4565b34801561055e575f80fd5b50610276610dfe565b348015610572575f80fd5b506102766105813660046127d3565b610e71565b348015610591575f80fd5b506005546001600160a01b03166102f3565b6102766105b13660046127b3565b610f6f565b3480156105c1575f80fd5b506102b36112df565b3480156105d5575f80fd5b5061032a6105e4366004612500565b6112ee565b3480156105f4575f80fd5b5061032a610603366004612500565b611386565b348015610613575f80fd5b50610627610622366004612791565b611392565b60408051938452602084019290925290820152606001610296565b34801561064d575f80fd5b5061027661065c3660046127d3565b6114fe565b34801561066c575f80fd5b50610675611651565b604080519485526020850193909352918301526060820152608001610296565b3480156106a0575f80fd5b50600b546102f3906001600160a01b031681565b3480156106bf575f80fd5b506102766106ce3660046127d3565b611833565b3480156106de575f80fd5b506102766106ed3660046127d3565b6118bb565b3480156106fd575f80fd5b5061028c61070c36600461280e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610741575f80fd5b5061028c60095481565b348015610756575f80fd5b50610276610765366004612791565b611999565b348015610775575f80fd5b50610276611a83565b348015610789575f80fd5b5061032a610798366004612791565b60106020525f908152604090205460ff1681565b6005546001600160a01b031633146107df5760405162461bcd60e51b81526004016107d69061283a565b60405180910390fd5b600d54156107eb575f80fd5b43600d55565b5f6001600d54436108029190612883565b111561080e5750600590565b50600f90565b60606003805461082390612896565b80601f016020809104026020016040519081016040528092919081815260200182805461084f90612896565b801561089a5780601f106108715761010080835404028352916020019161089a565b820191905f5260205f20905b81548152906001019060200180831161087d57829003601f168201915b5050505050905090565b5f6108b0338484611aec565b5060015b92915050565b6005546001600160a01b031633146108e45760405162461bcd60e51b81526004016107d69061283a565b5f5b82811015610944578160075f868685818110610904576109046128ce565b90506020020160208101906109199190612791565b6001600160a01b0316815260208101919091526040015f20558061093c816128e2565b9150506108e6565b50505050565b6005546001600160a01b031633146109745760405162461bcd60e51b81526004016107d69061283a565b600b54604051630ca61cb160e01b81526004810185905260248101849052604481018390526001600160a01b0390911690630ca61cb1906064015f604051808303815f87803b1580156109c5575f80fd5b505af11580156109d7573d5f803e3d5ffd5b50505050505050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b81526004016107d69061283a565b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b03163314610a555760405162461bcd60e51b81526004016107d69061283a565b8051825114610aa65760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e677468000060448201526064016107d6565b5f5b8251811015610b1857610b0633848381518110610ac757610ac76128ce565b60200260200101516009600a610add91906129da565b858581518110610aef57610aef6128ce565b6020026020010151610b0191906129e8565b611c0f565b80610b10816128e2565b915050610aa8565b505050565b5f610b29848484611d62565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610bc25782811015610bb55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107d6565b610bc28533858403611aec565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108b0918590610c039086906129ff565b611aec565b600b54604051630994fc3160e11b81526001600160a01b0383811660048301525f921690631329f86290602401602060405180830381865afa158015610c50573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b49190612a12565b600b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015f604051808303815f87803b158015610cb6575f80fd5b505af1158015610944573d5f803e3d5ffd5b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016107d69061283a565b6064610cfd60025490565b610d089060016129e8565b610d129190612a29565b811115610d735760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b60648201526084016107d6565b600991909155600a55565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610dcb575f80fd5b505af1158015610ddd573d5f803e3d5ffd5b5050505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610e285760405162461bcd60e51b81526004016107d69061283a565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e9b5760405162461bcd60e51b81526004016107d69061283a565b6006546001600160a01b0390811690831603610f075760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b60648201526084016107d6565b6001600160a01b0382165f818152601060209081526040808320805486151560ff199182168117909255600f9093528184208054909316600117909255519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6005546001600160a01b03163314610f995760405162461bcd60e51b81526004016107d69061283a565b600d5415610fa5575f80fd5b80341015610fea5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b60448201526064016107d6565b5f82116110325760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b60448201526064016107d6565b5f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b39190612a48565b90507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611111573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111359190612a48565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303815f875af1158015611182573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a69190612a48565b600680546001600160a01b0319166001600160a01b0392831690811782555f908152601060209081526040808320805460ff19908116600190811790925594549095168352600f909152902080549091169091179055611217333061120d6009600a6129da565b610b0190876129e8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719833061125130610de4565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156112b2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112d79190612a63565b505050505050565b60606004805461082390612896565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561136f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d6565b61137c3385858403611aec565b5060019392505050565b5f6108b0338484611d62565b600b5460405163051fa63360e31b81526001600160a01b0383811660048301525f9283928392909116906328fd319890602401602060405180830381865afa1580156113e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114049190612a12565b600b54604051633cbf8a6160e01b81526001600160a01b038781166004830152929550911690633cbf8a6190602401602060405180830381865afa15801561144e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114729190612a12565b600b546001600160a01b038681165f818152600c602052604090819020549051633f4f5dcf60e21b815260048101929092526024820152929450169063fd3d773c90604401602060405180830381865afa1580156114d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f69190612a12565b929491935050565b6005546001600160a01b031633146115285760405162461bcd60e51b81526004016107d69061283a565b6001600160a01b038216301480159061155957506001600160a01b0382165f9081526010602052604090205460ff16155b801561157057506001600160a01b03821661dead14155b611578575f80fd5b6001600160a01b0382165f908152600f60205260409020805460ff1916821580159190911790915561160157600b54604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015b5f604051808303815f87803b1580156115ef575f80fd5b505af11580156112d7573d5f803e3d5ffd5b600b546001600160a01b03166314b6ca968361161c81610de4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016115d8565b5050565b5f805f80600b5f9054906101000a90046001600160a01b03166001600160a01b03166367ee5f096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c99190612a12565b9350600b5f9054906101000a90046001600160a01b03166001600160a01b0316635695fa586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561171b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173f9190612a12565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b031663a9e36be46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611791573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b59190612a12565b9150600b5f9054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611807573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182b9190612a12565b905090919293565b6005546001600160a01b0316331461185d5760405162461bcd60e51b81526004016107d69061283a565b6001600160a01b0382165f818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146118e55760405162461bcd60e51b81526004016107d69061283a565b801561194657600b5460405163ce5494bb60e01b81526001600160a01b0384811660048301529091169063ce5494bb906024015f604051808303815f87803b15801561192f575f80fd5b505af1158015611941573d5f803e3d5ffd5b505050505b600b80546001600160a01b0319166001600160a01b0384169081179091556040805163204a7f0760e21b81529051638129fc1c916004808201925f9290919082900301818387803b1580156115ef575f80fd5b6005546001600160a01b031633146119c35760405162461bcd60e51b81526004016107d69061283a565b6001600160a01b038116611a285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d6565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611aad5760405162461bcd60e51b81526004016107d69061283a565b6040515f90339047908381818185875af1925050503d805f8114610944576040519150601f19603f3d011682016040523d82523d5f602084013e610944565b6001600160a01b038316611b4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d6565b6001600160a01b038216611baf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d6565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c355760405162461bcd60e51b81526004016107d690612a8e565b6001600160a01b038216611c5b5760405162461bcd60e51b81526004016107d690612ad3565b6001600160a01b0383165f9081526020819052604090205481811015611cd25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d6565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611d089084906129ff565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5491815260200190565b60405180910390a350505050565b6001600160a01b038316611d885760405162461bcd60e51b81526004016107d690612a8e565b6001600160a01b038216611dae5760405162461bcd60e51b81526004016107d690612ad3565b5f8111611dfd5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016107d6565b600d545f03611e84576005546001600160a01b0384811691161480611e2f57506005546001600160a01b038381169116145b611e745760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b60448201526064016107d6565b611e7f838383611c0f565b6120db565b6001600160a01b0383165f908152600e602052604090205460ff16158015611ec457506001600160a01b0382165f908152600e602052604090205460ff16155b156120d057600b54600160a01b900460ff168015611ee5575060085460ff16155b8015611f0857506001600160a01b0382165f9081526010602052604090205460ff165b15611f2e576008805460ff19166001179055611f238161220d565b6008805460ff191690555b5f80611f386107f1565b90505f611f436107f1565b6001600160a01b0386165f9081526010602052604090205490915060ff161561206b578115611f85576064611f7883866129e8565b611f829190612a29565b92505b5f611f8f87610de4565b6001600160a01b0388165f908152600c6020526040902054909150811115611fcc576001600160a01b0387165f908152600c602052604090208190555b6001600160a01b0387165f908152600f602052604090205460ff16612065576001600160a01b038781165f818152600f6020526040808220805460ff19166001179055600b549051630a5b654b60e11b815260048101939093526024830191909152909116906314b6ca96906044015f604051808303815f87803b158015612052575f80fd5b505af1925050508015612063575060015b505b506120af565b5f8111801561209157506001600160a01b0386165f9081526010602052604090205460ff165b156120af5760646120a282866129e8565b6120ac9190612a29565b92505b82156120c0576120c0863085611c0f565b6120ca8385612883565b93505050505b6120db838383611c0f565b6120e583836122bd565b6001600160a01b0383165f908152600f602052604090205460ff1661217557600b546001600160a01b03166314b6ca968461211f81610de4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015612162575f80fd5b505af1925050508015612173575060015b505b6001600160a01b0382165f908152600f602052604090205460ff16610b1857600b546001600160a01b03166314b6ca96836121af81610de4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156121f2575f80fd5b505af1925050508015612203575060015b15610b1857505050565b5f61221730610de4565b9050600954811015612227575050565b600a548111156122365750600a545b818111156122415750805b805f0361224c575050565b61225581612354565b478015610b1857600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156122a9575f80fd5b505af1935050505080156122035750505050565b6001600160a01b0382165f9081526007602052604090205415806122ee57506005546001600160a01b038281169116145b61164d5760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b60648201526084016107d6565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612387576123876128ce565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612403573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124279190612a48565b8160018151811061243a5761243a6128ce565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906115d89085905f90869030904290600401612b16565b5f6020808352835180828501525f5b818110156124c9578581018301518582016040015282016124ad565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146124fd575f80fd5b50565b5f8060408385031215612511575f80fd5b823561251c816124e9565b946020939093013593505050565b5f805f6040848603121561253c575f80fd5b833567ffffffffffffffff80821115612553575f80fd5b818601915086601f830112612566575f80fd5b813581811115612574575f80fd5b8760208260051b8501011115612588575f80fd5b6020928301989097509590910135949350505050565b5f805f606084860312156125b0575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612604576126046125c7565b604052919050565b5f67ffffffffffffffff821115612625576126256125c7565b5060051b60200190565b5f82601f83011261263e575f80fd5b8135602061265361264e8361260c565b6125db565b82815260059290921b84018101918181019086841115612671575f80fd5b8286015b8481101561268c5780358352918301918301612675565b509695505050505050565b5f80604083850312156126a8575f80fd5b823567ffffffffffffffff808211156126bf575f80fd5b818501915085601f8301126126d2575f80fd5b813560206126e261264e8361260c565b82815260059290921b84018101918181019089841115612700575f80fd5b948201945b83861015612727578535612718816124e9565b82529482019490820190612705565b9650508601359250508082111561273c575f80fd5b506127498582860161262f565b9150509250929050565b5f805f60608486031215612765575f80fd5b8335612770816124e9565b92506020840135612780816124e9565b929592945050506040919091013590565b5f602082840312156127a1575f80fd5b81356127ac816124e9565b9392505050565b5f80604083850312156127c4575f80fd5b50508035926020909101359150565b5f80604083850312156127e4575f80fd5b82356127ef816124e9565b915060208301358015158114612803575f80fd5b809150509250929050565b5f806040838503121561281f575f80fd5b823561282a816124e9565b91506020830135612803816124e9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108b4576108b461286f565b600181811c908216806128aa57607f821691505b6020821081036128c857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f600182016128f3576128f361286f565b5060010190565b600181815b8085111561293457815f190482111561291a5761291a61286f565b8085161561292757918102915b93841c93908002906128ff565b509250929050565b5f8261294a575060016108b4565b8161295657505f6108b4565b816001811461296c576002811461297657612992565b60019150506108b4565b60ff8411156129875761298761286f565b50506001821b6108b4565b5060208310610133831016604e8410600b84101617156129b5575081810a6108b4565b6129bf83836128fa565b805f19048211156129d2576129d261286f565b029392505050565b5f6127ac60ff84168361293c565b80820281158282048414176108b4576108b461286f565b808201808211156108b4576108b461286f565b5f60208284031215612a22575f80fd5b5051919050565b5f82612a4357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612a58575f80fd5b81516127ac816124e9565b5f805f60608486031215612a75575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612b645784516001600160a01b031683529383019391830191600101612b3f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e2f7057e3f64058f8596ebfe1140a242685aee605acd30954871f2a4463b93f764736f6c63430008150033

Deployed Bytecode Sourcemap

11890:9712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19098:130;;;;;;;;;;;;;:::i;:::-;;14548:140;;;;;;;;;;;;;:::i;:::-;;;160:25:1;;;148:2;133:18;14548:140:0;;;;;;;;4181:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11933:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;11933:37:0;749:221:1;5236:210:0;;;;;;;;;;-1:-1:-1;5236:210:0;;;;;:::i;:::-;;:::i;:::-;;;1596:14:1;;1589:22;1571:41;;1559:2;1544:18;5236:210:0;1431:187:1;21172:224:0;;;;;;;;;;-1:-1:-1;21172:224:0;;;;;:::i;:::-;;:::i;19497:216::-;;;;;;;;;;-1:-1:-1;19497:216:0;;;;;:::i;:::-;;:::i;4502:108::-;;;;;;;;;;-1:-1:-1;4590:12:0;;4502:108;;13984:86;;;;;;;;;;;;;:::i;20772:392::-;;;;;;;;;;-1:-1:-1;20772:392:0;;;;;:::i;:::-;;:::i;5454:620::-;;;;;;;;;;-1:-1:-1;5454:620:0;;;;;:::i;:::-;;:::i;13615:84::-;;;;;;;;;;-1:-1:-1;13615:84:0;;13690:1;5728:36:1;;5716:2;5701:18;13615:84:0;5586:184:1;12228:28:0;;;;;;;;;;;;;;;;6082:297;;;;;;;;;;-1:-1:-1;6082:297:0;;;;;:::i;:::-;;:::i;20558:124::-;;;;;;;;;;-1:-1:-1;20558:124:0;;;;;:::i;:::-;;:::i;12496:49::-;;;;;;;;;;-1:-1:-1;12496:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11977:21;;;;;;;;;;-1:-1:-1;11977:21:0;;;;-1:-1:-1;;;;;11977:21:0;;;20688:76;;;;;;;;;;;;;:::i;12396:32::-;;;;;;;;;;;;;;;;12007:51;;;;;;;;;;-1:-1:-1;12007:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;13707:269;;;;;;;;;;-1:-1:-1;13707:269:0;;;;;:::i;:::-;;:::i;19721:100::-;;;:::i;12313:30::-;;;;;;;;;;-1:-1:-1;12313:30:0;;;;-1:-1:-1;;;12313:30:0;;;;;;4618:177;;;;;;;;;;-1:-1:-1;4618:177:0;;;;;:::i;:::-;;:::i;8682:148::-;;;;;;;;;;;;;:::i;14078:313::-;;;;;;;;;;-1:-1:-1;14078:313:0;;;;;:::i;:::-;;:::i;8468:79::-;;;;;;;;;;-1:-1:-1;8533:6:0;;-1:-1:-1;;;;;8533:6:0;8468:79;;18448:642;;;;;;:::i;:::-;;:::i;4289:104::-;;;;;;;;;;;;;:::i;6387:482::-;;;;;;;;;;-1:-1:-1;6387:482:0;;;;;:::i;:::-;;:::i;4803:216::-;;;;;;;;;;-1:-1:-1;4803:216:0;;;;;:::i;:::-;;:::i;20240:312::-;;;;;;;;;;-1:-1:-1;20240:312:0;;;;;:::i;:::-;;:::i;:::-;;;;7111:25:1;;;7167:2;7152:18;;7145:34;;;;7195:18;;;7188:34;7099:2;7084:18;20240:312:0;6909:319:1;14886:373:0;;;;;;;;;;-1:-1:-1;14886:373:0;;;;;:::i;:::-;;:::i;19829:399::-;;;;;;;;;;;;;:::i;:::-;;;;7464:25:1;;;7520:2;7505:18;;7498:34;;;;7548:18;;;7541:34;7606:2;7591:18;;7584:34;7451:3;7436:19;19829:399:0;7233:391:1;12265:39:0;;;;;;;;;;-1:-1:-1;12265:39:0;;;;-1:-1:-1;;;;;12265:39:0;;;14696:182;;;;;;;;;;-1:-1:-1;14696:182:0;;;;;:::i;:::-;;:::i;19236:253::-;;;;;;;;;;-1:-1:-1;19236:253:0;;;;;:::i;:::-;;:::i;5027:201::-;;;;;;;;;;-1:-1:-1;5027:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5193:18:0;;;5161:7;5193:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5027:201;12188:33;;;;;;;;;;;;;;;;8838:281;;;;;;;;;;-1:-1:-1;8838:281:0;;;;;:::i;:::-;;:::i;18279:161::-;;;;;;;;;;;;;:::i;12552:37::-;;;;;;;;;;-1:-1:-1;12552:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19098:130;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;;;;;;;;;19154:17:::1;::::0;:22;19146:31:::1;;;::::0;::::1;;19208:12;19188:17;:32:::0;19098:130::o;14548:140::-;14591:7;14649:1;14629:17;;14614:12;:32;;;;:::i;:::-;:36;14611:49;;;-1:-1:-1;14659:1:0;;14548:140::o;14611:49::-;-1:-1:-1;14678:2:0;;14548:140::o;4181:100::-;4235:13;4268:5;4261:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4181:100;:::o;5236:210::-;5355:4;5377:39;315:10;5400:7;5409:6;5377:8;:39::i;:::-;-1:-1:-1;5434:4:0;5236:210;;;;;:::o;21172:224::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;21281:9:::1;21277:112;21296:19:::0;;::::1;21277:112;;;21369:8;21337:16;:29;21354:8;;21363:1;21354:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21337:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21337:29:0;:40;21317:3;::::1;::::0;::::1;:::i;:::-;;;;21277:112;;;;21172:224:::0;;;:::o;19497:216::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;19627:11:::1;::::0;:78:::1;::::0;-1:-1:-1;;;19627:78:0;;::::1;::::0;::::1;7111:25:1::0;;;7152:18;;;7145:34;;;7195:18;;;7188:34;;;-1:-1:-1;;;;;19627:11:0;;::::1;::::0;:35:::1;::::0;7084:18:1;;19627:78:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19497:216:::0;;;:::o;13984:86::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;14051:11:::1;::::0;;-1:-1:-1;;;;14036:26:0;::::1;-1:-1:-1::0;;;14051:11:0;;;::::1;;;14050:12;14036:26:::0;;::::1;;::::0;;13984:86::o;20772:392::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;20939:15:::1;:22;20921:7;:14;:40;20913:83;;;::::0;-1:-1:-1;;;20913:83:0;;9743:2:1;20913:83:0::1;::::0;::::1;9725:21:1::0;9782:2;9762:18;;;9755:30;9821:32;9801:18;;;9794:60;9871:18;;20913:83:0::1;9541:354:1::0;20913:83:0::1;21014:9;21009:148;21033:7;:14;21029:1;:18;21009:148;;;21069:76;21085:10;21097:7;21105:1;21097:10;;;;;;;;:::i;:::-;;;;;;;12094:1;12136:2;:15;;;;:::i;:::-;21109;21125:1;21109:18;;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;:::-;21069:15;:76::i;:::-;21049:3:::0;::::1;::::0;::::1;:::i;:::-;;;;21009:148;;;;20772:392:::0;;:::o;5454:620::-;5594:4;5611:36;5621:6;5629:9;5640:6;5611:9;:36::i;:::-;-1:-1:-1;;;;;5687:19:0;;5660:24;5687:19;;;:11;:19;;;;;;;;315:10;5687:33;;;;;;;;-1:-1:-1;;5734:37:0;;5731:314;;5835:6;5815:16;:26;;5789:128;;;;-1:-1:-1;;;5789:128:0;;11658:2:1;5789:128:0;;;11640:21:1;11697:2;11677:18;;;11670:30;11736:34;11716:18;;;11709:62;-1:-1:-1;;;11787:18:1;;;11780:38;11835:19;;5789:128:0;11456:404:1;5789:128:0;5961:57;5970:6;315:10;6011:6;5992:16;:25;5961:8;:57::i;:::-;-1:-1:-1;6062:4:0;;5454:620;-1:-1:-1;;;;5454:620:0:o;6082:297::-;315:10;6197:4;6291:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6291:34:0;;;;;;;;;;6197:4;;6219:130;;6269:7;;6291:47;;6328:10;;6291:47;:::i;:::-;6219:8;:130::i;20558:124::-;20645:11;;:32;;-1:-1:-1;;;20645:32:0;;-1:-1:-1;;;;;931:32:1;;;20645::0;;;913:51:1;20621:7:0;;20645:11;;:24;;886:18:1;;20645:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20688:76::-;20722:11;;:37;;-1:-1:-1;;;20722:37:0;;20748:10;20722:37;;;913:51:1;-1:-1:-1;;;;;20722:11:0;;;;:25;;886:18:1;;20722:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13707:269;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;13843:3:::1;13822:13;4590:12:::0;;;4502:108;13822:13:::1;:17;::::0;13838:1:::1;13822:17;:::i;:::-;13821:25;;;;:::i;:::-;13808:9;:38;;13800:92;;;::::0;-1:-1:-1;;;13800:92:0;;12608:2:1;13800:92:0::1;::::0;::::1;12590:21:1::0;12647:2;12627:18;;;12620:30;12686:34;12666:18;;;12659:62;-1:-1:-1;;;12737:18:1;;;12730:39;12786:19;;13800:92:0::1;12406:405:1::0;13800:92:0::1;13903:18;:29:::0;;;;13943:13:::1;:25:::0;13707:269::o;19721:100::-;19774:11;;;;;;;;;-1:-1:-1;;;;;19774:11:0;-1:-1:-1;;;;;19774:19:0;;19801:9;19774:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19721:100::o;4618:177::-;-1:-1:-1;;;;;4769:18:0;4737:7;4769:18;;;;;;;;;;;;4618:177::o;8682:148::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;8773:6:::1;::::0;8752:40:::1;::::0;8789:1:::1;::::0;-1:-1:-1;;;;;8773:6:0::1;::::0;8752:40:::1;::::0;8789:1;;8752:40:::1;8803:6;:19:::0;;-1:-1:-1;;;;;;8803:19:0::1;::::0;;8682:148::o;14078:313::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;14204:6:::1;::::0;-1:-1:-1;;;;;14204:6:0;;::::1;14196:14:::0;;::::1;::::0;14174:101:::1;;;::::0;-1:-1:-1;;;14174:101:0;;13018:2:1;14174:101:0::1;::::0;::::1;13000:21:1::0;13057:2;13037:18;;;13030:30;13096:34;13076:18;;;13069:62;-1:-1:-1;;;13147:18:1;;;13140:35;13192:19;;14174:101:0::1;12816:401:1::0;14174:101:0::1;-1:-1:-1::0;;;;;14288:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;;;:19;;;::::1;;-1:-1:-1::0;;14288:19:0;;::::1;::::0;::::1;::::0;;;14318:16:::1;:22:::0;;;;;;:29;;;;::::1;14288:19:::0;14318:29:::1;::::0;;;14363:20;14288:19;;:11;14363:20:::1;::::0;::::1;14078:313:::0;;:::o;18448:642::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;18541:17:::1;::::0;:22;18533:31:::1;;;::::0;::::1;;18596:4;18583:9;:17;;18575:48;;;::::0;-1:-1:-1;;;18575:48:0;;13424:2:1;18575:48:0::1;::::0;::::1;13406:21:1::0;13463:2;13443:18;;;13436:30;-1:-1:-1;;;13482:18:1;;;13475:48;13540:18;;18575:48:0::1;13222:342:1::0;18575:48:0::1;18651:1;18642:6;:10;18634:45;;;::::0;-1:-1:-1;;;18634:45:0;;13771:2:1;18634:45:0::1;::::0;::::1;13753:21:1::0;13810:2;13790:18;;;13783:30;-1:-1:-1;;;13829:18:1;;;13822:52;13891:18;;18634:45:0::1;13569:346:1::0;18634:45:0::1;18692:11;18706:9;-1:-1:-1::0;;;;;18706:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18692:30;;18756:9;-1:-1:-1::0;;;;;18756:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18744:63;::::0;-1:-1:-1;;;18744:63:0;;-1:-1:-1;;;;;14406:15:1;;;18744:63:0::1;::::0;::::1;14388:34:1::0;18801:4:0::1;14438:18:1::0;;;14431:43;18744::0;;;::::1;::::0;::::1;::::0;14323:18:1;;18744:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18735:6;:72:::0;;-1:-1:-1;;;;;;18735:72:0::1;-1:-1:-1::0;;;;;18735:72:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;18818:13:0;;;:5:::1;:13;::::0;;;;;;;:20;;-1:-1:-1;;18818:20:0;;::::1;-1:-1:-1::0;18818:20:0;;::::1;::::0;;;18866:6;;;;::::1;18849:24:::0;;:16:::1;:24:::0;;;;;:31;;;;::::1;::::0;;::::1;::::0;;18893:67:::1;18909:10;18929:4;12136:15;12094:1;12136:2;:15;:::i;:::-;18936:23;::::0;:6;:23:::1;:::i;18893:67::-;18973:9;-1:-1:-1::0;;;;;18973:25:0::1;;19006:4;19020;19026:24;19044:4;19026:9;:24::i;:::-;18973:109;::::0;-1:-1:-1;;;;;;18973:109:0::1;::::0;;;;;;-1:-1:-1;;;;;14844:15:1;;;18973:109:0::1;::::0;::::1;14826:34:1::0;14876:18;;;14869:34;19051:1:0::1;14919:18:1::0;;;14912:34;;;14962:18;;;14955:34;19055:10:0::1;15005:19:1::0;;;14998:44;19066:15:0::1;15058:19:1::0;;;15051:35;14760:19;;18973:109:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18522:568;18448:642:::0;;:::o;4289:104::-;4345:13;4378:7;4371:14;;;;;:::i;6387:482::-;315:10;6507:4;6556:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6556:34:0;;;;;;;;;;6623:35;;;;6601:122;;;;-1:-1:-1;;;6601:122:0;;15610:2:1;6601:122:0;;;15592:21:1;15649:2;15629:18;;;15622:30;15688:34;15668:18;;;15661:62;-1:-1:-1;;;15739:18:1;;;15732:35;15784:19;;6601:122:0;15408:401:1;6601:122:0;6759:67;315:10;6782:7;6810:15;6791:16;:34;6759:8;:67::i;:::-;-1:-1:-1;6857:4:0;;6387:482;-1:-1:-1;;;6387:482:0:o;4803:216::-;4925:4;4947:42;315:10;4971:9;4982:6;4947:9;:42::i;20240:312::-;20378:11;;:37;;-1:-1:-1;;;20378:37:0;;-1:-1:-1;;;;;931:32:1;;;20378:37:0;;;913:51:1;20301:14:0;;;;;;20378:11;;;;:29;;886:18:1;;20378:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20439:11;;:36;;-1:-1:-1;;;20439:36:0;;-1:-1:-1;;;;;931:32:1;;;20439:36:0;;;913:51:1;20369:46:0;;-1:-1:-1;20439:11:0;;;:28;;886:18:1;;20439:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20497:11;;-1:-1:-1;;;;;20532:14:0;;;20497:11;20532:14;;;:6;:14;;;;;;;;20497:50;;-1:-1:-1;;;20497:50:0;;;;;15988:51:1;;;;16055:18;;;16048:34;20423:52:0;;-1:-1:-1;20497:11:0;;:26;;15961:18:1;;20497:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20240:312;;;;-1:-1:-1;;20240:312:0:o;14886:373::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14980:23:0;::::1;14998:4;14980:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;;;;;;15008:13:0;::::1;;::::0;;;:5:::1;:13;::::0;;;;;::::1;;15007:14;14980:41;:70;;;;-1:-1:-1::0;;;;;;15025:25:0;::::1;15043:6;15025:25;;14980:70;14972:79;;;::::0;::::1;;-1:-1:-1::0;;;;;15062:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;15062:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;15106:146:::1;;15131:11;::::0;:31:::1;::::0;-1:-1:-1;;;15131:31:0;;-1:-1:-1;;;;;16006:32:1;;;15131:31:0::1;::::0;::::1;15988:51:1::0;15131:11:0::1;16055:18:1::0;;;16048:34;15131:11:0;;::::1;::::0;:20:::1;::::0;15961:18:1;;15131:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;15106:146;15193:11;::::0;-1:-1:-1;;;;;15193:11:0::1;:20;15214:6:::0;15222:17:::1;15214:6:::0;15222:9:::1;:17::i;:::-;15193:47;::::0;-1:-1:-1;;;;;;15193:47:0::1;::::0;;;;;;-1:-1:-1;;;;;16006:32:1;;;15193:47:0::1;::::0;::::1;15988:51:1::0;16055:18;;;16048:34;15961:18;;15193:47:0::1;15814:274:1::0;15106:146:0::1;14886:373:::0;;:::o;19829:399::-;19881:20;19903:24;19929:25;19956:21;20005:11;;;;;;;;;-1:-1:-1;;;;;20005:11:0;-1:-1:-1;;;;;20005:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19990:46;;20066:11;;;;;;;;;-1:-1:-1;;;;;20066:11:0;-1:-1:-1;;;;;20066:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20047:52;;20130:11;;;;;;;;;-1:-1:-1;;;;;20130:11:0;-1:-1:-1;;;;;20130:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20110:52;;20189:11;;;;;;;;;-1:-1:-1;;;;;20189:11:0;-1:-1:-1;;;;;20189:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20173:47;;19829:399;;;;:::o;14696:182::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14781:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;14781:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14836:34;;1571:41:1;;;14836:34:0::1;::::0;1544:18:1;14836:34:0::1;;;;;;;14696:182:::0;;:::o;19236:253::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;19329:7:::1;19326:59;;;19352:11;::::0;:33:::1;::::0;-1:-1:-1;;;19352:33:0;;-1:-1:-1;;;;;931:32:1;;;19352:33:0::1;::::0;::::1;913:51:1::0;19352:11:0;;::::1;::::0;:19:::1;::::0;886:18:1;;19352:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19326:59;19398:11;:48:::0;;-1:-1:-1;;;;;;19398:48:0::1;-1:-1:-1::0;;;;;19398:48:0;::::1;::::0;;::::1;::::0;;;19457:24:::1;::::0;;-1:-1:-1;;;19457:24:0;;;;:22:::1;::::0;:24:::1;::::0;;::::1;::::0;-1:-1:-1;;19457:24:0;;;;;;;;-1:-1:-1;19398:48:0;19457:24;::::1;;::::0;::::1;;;;::::0;::::1;8838:281:::0;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8941:22:0;::::1;8919:110;;;::::0;-1:-1:-1;;;8919:110:0;;16582:2:1;8919:110:0::1;::::0;::::1;16564:21:1::0;16621:2;16601:18;;;16594:30;16660:34;16640:18;;;16633:62;-1:-1:-1;;;16711:18:1;;;16704:36;16757:19;;8919:110:0::1;16380:402:1::0;8919:110:0::1;9066:6;::::0;9045:38:::1;::::0;-1:-1:-1;;;;;9045:38:0;;::::1;::::0;9066:6:::1;::::0;9045:38:::1;::::0;9066:6:::1;::::0;9045:38:::1;9094:6;:17:::0;;-1:-1:-1;;;;;;9094:17:0::1;-1:-1:-1::0;;;;;9094:17:0;;;::::1;::::0;;;::::1;::::0;;8838:281::o;18279:161::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;18374:58:::1;::::0;18337:12:::1;::::0;18382:10:::1;::::0;18406:21:::1;::::0;18337:12;18374:58;18337:12;18374:58;18406:21;18382:10;18374:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7536:380:::0;-1:-1:-1;;;;;7672:19:0;;7664:68;;;;-1:-1:-1;;;7664:68:0;;17199:2:1;7664:68:0;;;17181:21:1;17238:2;17218:18;;;17211:30;17277:34;17257:18;;;17250:62;-1:-1:-1;;;17328:18:1;;;17321:34;17372:19;;7664:68:0;16997:400:1;7664:68:0;-1:-1:-1;;;;;7751:21:0;;7743:68;;;;-1:-1:-1;;;7743:68:0;;17604:2:1;7743:68:0;;;17586:21:1;17643:2;17623:18;;;17616:30;17682:34;17662:18;;;17655:62;-1:-1:-1;;;17733:18:1;;;17726:32;17775:19;;7743:68:0;17402:398:1;7743:68:0;-1:-1:-1;;;;;7824:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7876:32;;160:25:1;;;7876:32:0;;133:18:1;7876:32:0;;;;;;;7536:380;;;:::o;6877:651::-;-1:-1:-1;;;;;7017:20:0;;7009:70;;;;-1:-1:-1;;;7009:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7098:23:0;;7090:71;;;;-1:-1:-1;;;7090:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7198:17:0;;7174:21;7198:17;;;;;;;;;;;7248:23;;;;7226:111;;;;-1:-1:-1;;;7226:111:0;;18817:2:1;7226:111:0;;;18799:21:1;18856:2;18836:18;;;18829:30;18895:34;18875:18;;;18868:62;-1:-1:-1;;;18946:18:1;;;18939:36;18992:19;;7226:111:0;18615:402:1;7226:111:0;-1:-1:-1;;;;;7373:17:0;;;:9;:17;;;;;;;;;;;7393:22;;;7373:42;;7437:20;;;;;;;;:30;;7409:6;;7373:9;7437:30;;7409:6;;7437:30;:::i;:::-;;;;;;;;7502:9;-1:-1:-1;;;;;7485:35:0;7494:6;-1:-1:-1;;;;;7485:35:0;;7513:6;7485:35;;;;160:25:1;;148:2;133:18;;14:177;7485:35:0;;;;;;;;6998:530;6877:651;;;:::o;15267:2025::-;-1:-1:-1;;;;;15399:18:0;;15391:68;;;;-1:-1:-1;;;15391:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15478:16:0;;15470:64;;;;-1:-1:-1;;;15470:64:0;;;;;;;:::i;:::-;15562:1;15553:6;:10;15545:52;;;;-1:-1:-1;;;15545:52:0;;19224:2:1;15545:52:0;;;19206:21:1;19263:2;19243:18;;;19236:30;19302:31;19282:18;;;19275:59;19351:18;;15545:52:0;19022:353:1;15545:52:0;15613:17;;15634:1;15613:22;15610:1436;;8533:6;;-1:-1:-1;;;;;15660:15:0;;;8533:6;;15660:15;;:32;;-1:-1:-1;8533:6:0;;-1:-1:-1;;;;;15679:13:0;;;8533:6;;15679:13;15660:32;15652:67;;;;-1:-1:-1;;;15652:67:0;;19582:2:1;15652:67:0;;;19564:21:1;19621:2;19601:18;;;19594:30;-1:-1:-1;;;19640:18:1;;;19633:52;19702:18;;15652:67:0;19380:346:1;15652:67:0;15734:33;15750:4;15756:2;15760:6;15734:15;:33::i;:::-;15610:1436;;;-1:-1:-1;;;;;15814:25:0;;;;;;:19;:25;;;;;;;;15813:26;:54;;;;-1:-1:-1;;;;;;15844:23:0;;;;;;:19;:23;;;;;;;;15843:24;15813:54;15809:1176;;;15892:11;;-1:-1:-1;;;15892:11:0;;;;:24;;;;-1:-1:-1;15908:8:0;;;;15907:9;15892:24;:37;;;;-1:-1:-1;;;;;;15920:9:0;;;;;;:5;:9;;;;;;;;15892:37;15888:179;;;15954:8;:15;;-1:-1:-1;;15954:15:0;15965:4;15954:15;;;15992:16;16001:6;15992:8;:16::i;:::-;16031:8;:16;;-1:-1:-1;;16031:16:0;;;15888:179;16087:12;16122:11;16136:13;:11;:13::i;:::-;16122:27;;16168:11;16182:12;:10;:12::i;:::-;-1:-1:-1;;;;;16219:9:0;;;;;;:5;:9;;;;;;16168:26;;-1:-1:-1;16219:9:0;;16215:601;;;16256:7;;16253:64;;16314:3;16298:12;16307:3;16298:6;:12;:::i;:::-;16297:20;;;;:::i;:::-;16290:27;;16253:64;16342:15;16360;16370:4;16360:9;:15::i;:::-;-1:-1:-1;;;;;16412:12:0;;;;;;:6;:12;;;;;;16342:33;;-1:-1:-1;16402:22:0;;16398:75;;;-1:-1:-1;;;;;16451:12:0;;;;;;:6;:12;;;;;:22;;;16398:75;-1:-1:-1;;;;;16501:22:0;;;;;;:16;:22;;;;;;;;16496:180;;-1:-1:-1;;;;;16552:22:0;;;;;;;:16;:22;;;;;;:29;;-1:-1:-1;;16552:29:0;16577:4;16552:29;;;16612:11;;:29;;-1:-1:-1;;;16612:29:0;;;;;15988:51:1;;;;16055:18;;;16048:34;;;;16612:11:0;;;;:20;;15961:18:1;;16612:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16608:45;;16230:465;16215:601;;;16728:1;16722:3;:7;:22;;;;-1:-1:-1;;;;;;16733:11:0;;;;;;:5;:11;;;;;;;;16722:22;16718:98;;;16793:3;16777:12;16786:3;16777:6;:12;:::i;:::-;16776:20;;;;:::i;:::-;16769:27;;16718:98;16840:8;;16836:99;;16873:42;16889:4;16903;16910;16873:15;:42::i;:::-;16955:14;16965:4;16955:14;;:::i;:::-;;;15869:1116;;;15809:1176;17001:33;17017:4;17023:2;17027:6;17001:15;:33::i;:::-;17058:30;17079:4;17085:2;17058:20;:30::i;:::-;-1:-1:-1;;;;;17105:22:0;;;;;;:16;:22;;;;;;;;17101:90;;17134:11;;-1:-1:-1;;;;;17134:11:0;:20;17155:4;17161:15;17155:4;17161:9;:15::i;:::-;17134:43;;-1:-1:-1;;;;;;17134:43:0;;;;;;;-1:-1:-1;;;;;16006:32:1;;;17134:43:0;;;15988:51:1;16055:18;;;16048:34;15961:18;;17134:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17130:59;;-1:-1:-1;;;;;17205:20:0;;;;;;:16;:20;;;;;;;;17201:84;;17232:11;;-1:-1:-1;;;;;17232:11:0;:20;17253:2;17257:13;17253:2;17257:9;:13::i;:::-;17232:39;;-1:-1:-1;;;;;;17232:39:0;;;;;;;-1:-1:-1;;;;;16006:32:1;;;17232:39:0;;;15988:51:1;16055:18;;;16048:34;15961:18;;17232:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17228:55;;;15267:2025;;;:::o;17724:547::-;17777:20;17800:24;17818:4;17800:9;:24::i;:::-;17777:47;;17854:18;;17839:12;:33;17835:46;;;17874:7;17724:547;:::o;17835:46::-;17910:13;;17895:12;:28;17891:62;;;-1:-1:-1;17940:13:0;;17891:62;17983:6;17968:12;:21;17964:48;;;-1:-1:-1;18006:6:0;17964:48;18027:12;18043:1;18027:17;18023:30;;18046:7;17724:547;:::o;18023:30::-;18065;18082:12;18065:16;:30::i;:::-;18129:21;18166:14;;18163:101;;18201:11;;;;;;;;;-1:-1:-1;;;;;18201:11:0;-1:-1:-1;;;;;18201:19:0;;18228:10;18201:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17766:505:0;;17724:547;:::o;21404:195::-;-1:-1:-1;;;;;21493:22:0;;;;;;:16;:22;;;;;;:27;;:44;;-1:-1:-1;8533:6:0;;-1:-1:-1;;;;;21524:13:0;;;8533:6;;21524:13;21493:44;21485:106;;;;-1:-1:-1;;;21485:106:0;;19933:2:1;21485:106:0;;;19915:21:1;19972:2;19952:18;;;19945:30;20011:34;19991:18;;;19984:62;-1:-1:-1;;;20062:18:1;;;20055:47;20119:19;;21485:106:0;19731:413:1;17300:416:0;17390:16;;;17404:1;17390:16;;;;;;;;17366:21;;17390:16;;;;;;;;;;-1:-1:-1;17390:16:0;17366:40;;17435:4;17417;17422:1;17417:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;17417:23:0;;;-1:-1:-1;;;;;17417:23:0;;;;;17461:9;-1:-1:-1;;;;;17461:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17451:4;17456:1;17451:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17451:26:0;;;:7;;;;;;;;;:26;17490:218;;-1:-1:-1;;;17490:218:0;;:9;:60;;;;;;:218;;17565:11;;17591:1;;17635:4;;17662;;17682:15;;17490:218;;;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;975:131::-;-1:-1:-1;;;;;1050:31:1;;1040:42;;1030:70;;1096:1;1093;1086:12;1030:70;975:131;:::o;1111:315::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:52;;;1256:1;1253;1246:12;1208:52;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;1416:2;1401:18;;;;1388:32;;-1:-1:-1;;;1111:315:1:o;1623:689::-;1718:6;1726;1734;1787:2;1775:9;1766:7;1762:23;1758:32;1755:52;;;1803:1;1800;1793:12;1755:52;1843:9;1830:23;1872:18;1913:2;1905:6;1902:14;1899:34;;;1929:1;1926;1919:12;1899:34;1967:6;1956:9;1952:22;1942:32;;2012:7;2005:4;2001:2;1997:13;1993:27;1983:55;;2034:1;2031;2024:12;1983:55;2074:2;2061:16;2100:2;2092:6;2089:14;2086:34;;;2116:1;2113;2106:12;2086:34;2171:7;2164:4;2154:6;2151:1;2147:14;2143:2;2139:23;2135:34;2132:47;2129:67;;;2192:1;2189;2182:12;2129:67;2223:4;2215:13;;;;2247:6;;-1:-1:-1;2285:20:1;;;;2272:34;;1623:689;-1:-1:-1;;;;1623:689:1:o;2317:316::-;2394:6;2402;2410;2463:2;2451:9;2442:7;2438:23;2434:32;2431:52;;;2479:1;2476;2469:12;2431:52;-1:-1:-1;;2502:23:1;;;2572:2;2557:18;;2544:32;;-1:-1:-1;2623:2:1;2608:18;;;2595:32;;2317:316;-1:-1:-1;2317:316:1:o;2638:127::-;2699:10;2694:3;2690:20;2687:1;2680:31;2730:4;2727:1;2720:15;2754:4;2751:1;2744:15;2770:275;2841:2;2835:9;2906:2;2887:13;;-1:-1:-1;;2883:27:1;2871:40;;2941:18;2926:34;;2962:22;;;2923:62;2920:88;;;2988:18;;:::i;:::-;3024:2;3017:22;2770:275;;-1:-1:-1;2770:275:1:o;3050:183::-;3110:4;3143:18;3135:6;3132:30;3129:56;;;3165:18;;:::i;:::-;-1:-1:-1;3210:1:1;3206:14;3222:4;3202:25;;3050:183::o;3238:662::-;3292:5;3345:3;3338:4;3330:6;3326:17;3322:27;3312:55;;3363:1;3360;3353:12;3312:55;3399:6;3386:20;3425:4;3449:60;3465:43;3505:2;3465:43;:::i;:::-;3449:60;:::i;:::-;3543:15;;;3629:1;3625:10;;;;3613:23;;3609:32;;;3574:12;;;;3653:15;;;3650:35;;;3681:1;3678;3671:12;3650:35;3717:2;3709:6;3705:15;3729:142;3745:6;3740:3;3737:15;3729:142;;;3811:17;;3799:30;;3849:12;;;;3762;;3729:142;;;-1:-1:-1;3889:5:1;3238:662;-1:-1:-1;;;;;;3238:662:1:o;3905:1215::-;4023:6;4031;4084:2;4072:9;4063:7;4059:23;4055:32;4052:52;;;4100:1;4097;4090:12;4052:52;4140:9;4127:23;4169:18;4210:2;4202:6;4199:14;4196:34;;;4226:1;4223;4216:12;4196:34;4264:6;4253:9;4249:22;4239:32;;4309:7;4302:4;4298:2;4294:13;4290:27;4280:55;;4331:1;4328;4321:12;4280:55;4367:2;4354:16;4389:4;4413:60;4429:43;4469:2;4429:43;:::i;4413:60::-;4507:15;;;4589:1;4585:10;;;;4577:19;;4573:28;;;4538:12;;;;4613:19;;;4610:39;;;4645:1;4642;4635:12;4610:39;4669:11;;;;4689:217;4705:6;4700:3;4697:15;4689:217;;;4785:3;4772:17;4802:31;4827:5;4802:31;:::i;:::-;4846:18;;4722:12;;;;4884;;;;4689:217;;;4925:5;-1:-1:-1;;4968:18:1;;4955:32;;-1:-1:-1;;4999:16:1;;;4996:36;;;5028:1;5025;5018:12;4996:36;;5051:63;5106:7;5095:8;5084:9;5080:24;5051:63;:::i;:::-;5041:73;;;3905:1215;;;;;:::o;5125:456::-;5202:6;5210;5218;5271:2;5259:9;5250:7;5246:23;5242:32;5239:52;;;5287:1;5284;5277:12;5239:52;5326:9;5313:23;5345:31;5370:5;5345:31;:::i;:::-;5395:5;-1:-1:-1;5452:2:1;5437:18;;5424:32;5465:33;5424:32;5465:33;:::i;:::-;5125:456;;5517:7;;-1:-1:-1;;;5571:2:1;5556:18;;;;5543:32;;5125:456::o;5775:247::-;5834:6;5887:2;5875:9;5866:7;5862:23;5858:32;5855:52;;;5903:1;5900;5893:12;5855:52;5942:9;5929:23;5961:31;5986:5;5961:31;:::i;:::-;6011:5;5775:247;-1:-1:-1;;;5775:247:1:o;6235:248::-;6303:6;6311;6364:2;6352:9;6343:7;6339:23;6335:32;6332:52;;;6380:1;6377;6370:12;6332:52;-1:-1:-1;;6403:23:1;;;6473:2;6458:18;;;6445:32;;-1:-1:-1;6235:248:1:o;6488:416::-;6553:6;6561;6614:2;6602:9;6593:7;6589:23;6585:32;6582:52;;;6630:1;6627;6620:12;6582:52;6669:9;6656:23;6688:31;6713:5;6688:31;:::i;:::-;6738:5;-1:-1:-1;6795:2:1;6780:18;;6767:32;6837:15;;6830:23;6818:36;;6808:64;;6868:1;6865;6858:12;6808:64;6891:7;6881:17;;;6488:416;;;;;:::o;7865:388::-;7933:6;7941;7994:2;7982:9;7973:7;7969:23;7965:32;7962:52;;;8010:1;8007;8000:12;7962:52;8049:9;8036:23;8068:31;8093:5;8068:31;:::i;:::-;8118:5;-1:-1:-1;8175:2:1;8160:18;;8147:32;8188:33;8147:32;8188:33;:::i;8258:356::-;8460:2;8442:21;;;8479:18;;;8472:30;8538:34;8533:2;8518:18;;8511:62;8605:2;8590:18;;8258:356::o;8619:127::-;8680:10;8675:3;8671:20;8668:1;8661:31;8711:4;8708:1;8701:15;8735:4;8732:1;8725:15;8751:128;8818:9;;;8839:11;;;8836:37;;;8853:18;;:::i;8884:380::-;8963:1;8959:12;;;;9006;;;9027:61;;9081:4;9073:6;9069:17;9059:27;;9027:61;9134:2;9126:6;9123:14;9103:18;9100:38;9097:161;;9180:10;9175:3;9171:20;9168:1;9161:31;9215:4;9212:1;9205:15;9243:4;9240:1;9233:15;9097:161;;8884:380;;;:::o;9269:127::-;9330:10;9325:3;9321:20;9318:1;9311:31;9361:4;9358:1;9351:15;9385:4;9382:1;9375:15;9401:135;9440:3;9461:17;;;9458:43;;9481:18;;:::i;:::-;-1:-1:-1;9528:1:1;9517:13;;9401:135::o;9900:422::-;9989:1;10032:5;9989:1;10046:270;10067:7;10057:8;10054:21;10046:270;;;10126:4;10122:1;10118:6;10114:17;10108:4;10105:27;10102:53;;;10135:18;;:::i;:::-;10185:7;10175:8;10171:22;10168:55;;;10205:16;;;;10168:55;10284:22;;;;10244:15;;;;10046:270;;;10050:3;9900:422;;;;;:::o;10327:806::-;10376:5;10406:8;10396:80;;-1:-1:-1;10447:1:1;10461:5;;10396:80;10495:4;10485:76;;-1:-1:-1;10532:1:1;10546:5;;10485:76;10577:4;10595:1;10590:59;;;;10663:1;10658:130;;;;10570:218;;10590:59;10620:1;10611:10;;10634:5;;;10658:130;10695:3;10685:8;10682:17;10679:43;;;10702:18;;:::i;:::-;-1:-1:-1;;10758:1:1;10744:16;;10773:5;;10570:218;;10872:2;10862:8;10859:16;10853:3;10847:4;10844:13;10840:36;10834:2;10824:8;10821:16;10816:2;10810:4;10807:12;10803:35;10800:77;10797:159;;;-1:-1:-1;10909:19:1;;;10941:5;;10797:159;10988:34;11013:8;11007:4;10988:34;:::i;:::-;11058:6;11054:1;11050:6;11046:19;11037:7;11034:32;11031:58;;;11069:18;;:::i;:::-;11107:20;;10327:806;-1:-1:-1;;;10327:806:1:o;11138:140::-;11196:5;11225:47;11266:4;11256:8;11252:19;11246:4;11225:47;:::i;11283:168::-;11356:9;;;11387;;11404:15;;;11398:22;;11384:37;11374:71;;11425:18;;:::i;11865:125::-;11930:9;;;11951:10;;;11948:36;;;11964:18;;:::i;11995:184::-;12065:6;12118:2;12106:9;12097:7;12093:23;12089:32;12086:52;;;12134:1;12131;12124:12;12086:52;-1:-1:-1;12157:16:1;;11995:184;-1:-1:-1;11995:184:1:o;12184:217::-;12224:1;12250;12240:132;;12294:10;12289:3;12285:20;12282:1;12275:31;12329:4;12326:1;12319:15;12357:4;12354:1;12347:15;12240:132;-1:-1:-1;12386:9:1;;12184:217::o;13920:251::-;13990:6;14043:2;14031:9;14022:7;14018:23;14014:32;14011:52;;;14059:1;14056;14049:12;14011:52;14091:9;14085:16;14110:31;14135:5;14110:31;:::i;15097:306::-;15185:6;15193;15201;15254:2;15242:9;15233:7;15229:23;15225:32;15222:52;;;15270:1;15267;15260:12;15222:52;15299:9;15293:16;15283:26;;15349:2;15338:9;15334:18;15328:25;15318:35;;15393:2;15382:9;15378:18;15372:25;15362:35;;15097:306;;;;;:::o;17805:401::-;18007:2;17989:21;;;18046:2;18026:18;;;18019:30;18085:34;18080:2;18065:18;;18058:62;-1:-1:-1;;;18151:2:1;18136:18;;18129:35;18196:3;18181:19;;17805:401::o;18211:399::-;18413:2;18395:21;;;18452:2;18432:18;;;18425:30;18491:34;18486:2;18471:18;;18464:62;-1:-1:-1;;;18557:2:1;18542:18;;18535:33;18600:3;18585:19;;18211:399::o;20149:980::-;20411:4;20459:3;20448:9;20444:19;20490:6;20479:9;20472:25;20516:2;20554:6;20549:2;20538:9;20534:18;20527:34;20597:3;20592:2;20581:9;20577:18;20570:31;20621:6;20656;20650:13;20687:6;20679;20672:22;20725:3;20714:9;20710:19;20703:26;;20764:2;20756:6;20752:15;20738:29;;20785:1;20795:195;20809:6;20806:1;20803:13;20795:195;;;20874:13;;-1:-1:-1;;;;;20870:39:1;20858:52;;20965:15;;;;20930:12;;;;20906:1;20824:9;20795:195;;;-1:-1:-1;;;;;;;21046:32:1;;;;21041:2;21026:18;;21019:60;-1:-1:-1;;;21110:3:1;21095:19;21088:35;21007:3;20149:980;-1:-1:-1;;;20149:980:1:o

Swarm Source

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