ETH Price: $2,408.23 (-2.58%)
 

Overview

Max Total Supply

69,000,000 KJAK

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
forgivable.eth
Balance
219,047.62 KJAK

Value
$0.00
0xe88b1bc93f5711b628e81a50d5143c15b1473bd9
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:
KingsOfWojak

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-09-07
*/

// 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 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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint 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 KingsOfWojak is ERC20, Ownable {
    address constant routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IDexRouter constant dexRouter = IDexRouter(routerAddress);
    address immutable pair;
    mapping(address => uint256) public walletProtection;

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

    uint256 public presaleActive = 2;
    uint256 public constant min = 1 ether / 10;
    uint256 public constant max = 2 ether / 10;
    uint256 public constant presaleCap = 20 ether;
    uint256 public constant tokensForPresale = 21_904_762 * _decimalFactor;
    uint256 public constant minTokensInPresale = tokensForPresale / 200;
    uint256 public constant maxTokensInPresale = tokensForPresale / 100;
    uint256 public constant tokensForLP = 13_800_000 * _decimalFactor;

    constructor() ERC20("Kings Of Wojak", "KJAK") {
        _approve(address(this), routerAddress, type(uint256).max);
        pair = IDexFactory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        
        uint256 totalSupply = 69_000_000 * _decimalFactor;
        _initialTransfer(address(this), tokensForLP + tokensForPresale);
        _initialTransfer(msg.sender, totalSupply - (tokensForLP + tokensForPresale));
    }

    receive() external payable {
        _presale(msg.value);
    }

    function joinPresale() external payable {
        _presale(msg.value);
    }

    function _presale(uint256 amount) internal {
        require(presaleActive == 2, "Presale not active");
        uint256 bal = address(this).balance;
        require(bal <= presaleCap, "Presale full");
        super._transfer(address(this), msg.sender, (tokensForPresale * amount) / presaleCap);
        uint256 tokenBal = balanceOf(msg.sender);
        require(tokenBal >= minTokensInPresale && tokenBal <= maxTokensInPresale, "Outside presale limits");
        if(bal > presaleCap - min) launch();
    }

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

    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");

        if(presaleActive != 1) {
            require(from == owner() || to == owner() || from == address(this) || to == address(this), "Trading not yet active");
            super._transfer(from, to, amount);
            if(from == owner() && to == pair) presaleActive = 1; //manual LP launch
        }else {
            super._transfer(from, to, amount);
            _beforeTokenTransfer(from, to);
        }
    }

    function launch() public {
        if(msg.sender == owner()) {
            require(address(this).balance >= presaleCap / 2, "Soft cap not reached");
        } else {
            require(address(this).balance > presaleCap - min, "Hard cap not reached");
        }
        require(presaleActive == 2, "Presale ended");

        bool success;
        (success, ) = address(owner()).call{value: address(this).balance / 2}("");
        
        try dexRouter.addLiquidityETH{value: address(this).balance}(address(this),tokensForLP,0,0,owner(),block.timestamp) {
            presaleActive = 3;
        }
        catch {
            presaleActive = 4; //error adding LP
        }
    }

    function manualLaunch() external onlyOwner {
        require(presaleActive == 4, "No issue to fix");
        uint256 toLp = tokensForLP;
        uint256 bal = balanceOf(address(this));
        if(bal < toLp) toLp = bal;
        try dexRouter.addLiquidityETH{value: address(this).balance}(address(this),bal,0,0,owner(),block.timestamp) {
            presaleActive = 3;
        }
        catch {
            bool success;
            (success, ) = address(owner()).call{value: address(this).balance}("");
            super._transfer(address(this), owner(), balanceOf(address(this)));
        }
    }

    function openTrading() external onlyOwner {
        require(presaleActive == 3, "LP Not Ready");
        presaleActive = 1;
    }

    function extractExcessTokens() external onlyOwner {
        require(presaleActive == 1, "Not launched yet");
        super._transfer(address(this), owner(), balanceOf(address(this)));
    }

    function airdrop(address[] calldata wallets, uint256[] calldata tokens) external onlyOwner {
        require(wallets.length == tokens.length, "Arrays must be the same length");

        for (uint256 i = 0; i < wallets.length; i++) {
            super._transfer(msg.sender, wallets[i], tokens[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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"extractExcessTokens","outputs":[],"stateMutability":"nonpayable","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":[],"name":"joinPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokensInPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokensInPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleActive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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":"address","name":"","type":"address"}],"name":"walletProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600260075534801562000015575f80fd5b506040518060400160405280600e81526020016d4b696e6773204f6620576f6a616b60901b815250604051806040016040528060048152602001634b4a414b60e01b81525081600390816200006b91906200058d565b5060046200007a82826200058d565b5050505f6200008e6200034760201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000fd30737a250d5630b4cf539739df2c5dacb4c659f2488d5f196200034b565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000174919062000655565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f9919062000655565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af115801562000243573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000269919062000655565b6001600160a01b03166080525f620002846009600a62000793565b620002949063041cdb40620007a3565b9050620002e830620002a96009600a62000793565b620002b99063014e3d7a620007a3565b620002c76009600a62000793565b620002d69062d29240620007a3565b620002e29190620007bd565b62000476565b6200034033620002fb6009600a62000793565b6200030b9063014e3d7a620007a3565b620003196009600a62000793565b620003289062d29240620007a3565b620003349190620007bd565b620002e29084620007d3565b50620007e9565b3390565b6001600160a01b038316620003b35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004165760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003aa565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f90815260208190526040812082905560028054839290620004a4908490620007bd565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200051657607f821691505b6020821081036200053557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000588575f81815260208120601f850160051c81016020861015620005635750805b601f850160051c820191505b8181101562000584578281556001016200056f565b5050505b505050565b81516001600160401b03811115620005a957620005a9620004ed565b620005c181620005ba845462000501565b846200053b565b602080601f831160018114620005f7575f8415620005df5750858301515b5f19600386901b1c1916600185901b17855562000584565b5f85815260208120601f198616915b82811015620006275788860151825594840194600190910190840162000606565b50858210156200064557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000666575f80fd5b81516001600160a01b03811681146200067d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006d857815f1904821115620006bc57620006bc62000684565b80851615620006ca57918102915b93841c93908002906200069d565b509250929050565b5f82620006f0575060016200078d565b81620006fe57505f6200078d565b8160018114620007175760028114620007225762000742565b60019150506200078d565b60ff84111562000736576200073662000684565b50506001821b6200078d565b5060208310610133831016604e8410600b841016171562000767575081810a6200078d565b62000773838362000698565b805f190482111562000789576200078962000684565b0290505b92915050565b5f6200067d60ff841683620006e0565b80820281158282048414176200078d576200078d62000684565b808201808211156200078d576200078d62000684565b818103818111156200078d576200078d62000684565b608051611b38620008025f395f6115240152611b385ff3fe6080604052600436106101c8575f3560e01c8063715018a6116100f2578063b4a960b411610092578063dd62ed3e11610062578063dd62ed3e146104c2578063e091a98a14610506578063f2fde38b1461050e578063f88979451461052d575f80fd5b8063b4a960b414610472578063c9567bf914610486578063cceba87c1461049a578063d59801bb146104ae575f80fd5b8063a457c2d7116100cd578063a457c2d71461040c578063a9059cbb1461042b578063a95acb171461044a578063b1f233b71461045e575f80fd5b8063715018a6146103bd5780638da5cb5b146103d157806395d89b41146103f8575f80fd5b8063395093511161016857806363d5502f1161013857806363d5502f14610333578063672434821461034f5780636ac5db191461036e57806370a0823114610389575f80fd5b806339509351146102c057806348fc07c4146102df57806353135ca0146102f3578063535a243714610308575f80fd5b80630bf1deff116101a35780630bf1deff1461024957806318160ddd1461026857806323b872dd14610286578063313ce567146102a5575f80fd5b806301339c21146101dc57806306fdde03146101f0578063095ea7b31461021a575f80fd5b366101d8576101d634610548565b005b5f80fd5b3480156101e7575f80fd5b506101d66106fd565b3480156101fb575f80fd5b50610204610938565b604051610211919061160e565b60405180910390f35b348015610225575f80fd5b50610239610234366004611674565b6109c8565b6040519015158152602001610211565b348015610254575f80fd5b506101d66102633660046116e4565b6109de565b348015610273575f80fd5b506002545b604051908152602001610211565b348015610291575f80fd5b506102396102a036600461172c565b610a6e565b3480156102b0575f80fd5b5060405160098152602001610211565b3480156102cb575f80fd5b506102396102da366004611674565b610b1e565b3480156102ea575f80fd5b50610278610b59565b3480156102fe575f80fd5b5061027860075481565b348015610313575f80fd5b50610278610322366004611765565b60066020525f908152604090205481565b34801561033e575f80fd5b506102786801158e460913d0000081565b34801561035a575f80fd5b506101d6610369366004611785565b610b82565b348015610379575f80fd5b506102786702c68af0bb14000081565b348015610394575f80fd5b506102786103a3366004611765565b6001600160a01b03165f9081526020819052604090205490565b3480156103c8575f80fd5b506101d6610c78565b3480156103dc575f80fd5b506005546040516001600160a01b039091168152602001610211565b348015610403575f80fd5b50610204610ceb565b348015610417575f80fd5b50610239610426366004611674565b610cfa565b348015610436575f80fd5b50610239610445366004611674565b610d92565b348015610455575f80fd5b506101d6610d9e565b348015610469575f80fd5b50610278610f72565b34801561047d575f80fd5b506101d6610f80565b348015610491575f80fd5b506101d6611007565b3480156104a5575f80fd5b50610278611079565b3480156104b9575f80fd5b50610278611092565b3480156104cd575f80fd5b506102786104dc3660046117ec565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101d66110ac565b348015610519575f80fd5b506101d6610528366004611765565b6110b5565b348015610538575f80fd5b5061027867016345785d8a000081565b6007546002146105945760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b60448201526064015b60405180910390fd5b476801158e460913d000008111156105dd5760405162461bcd60e51b815260206004820152600c60248201526b141c995cd85b1948199d5b1b60a21b604482015260640161058b565b61062030336801158e460913d00000856105f96009600a611911565b6106079063014e3d7a61191f565b610611919061191f565b61061b9190611936565b61119f565b335f9081526020819052604090205460c861063d6009600a611911565b61064b9063014e3d7a61191f565b6106559190611936565b81101580156106895750606461066d6009600a611911565b61067b9063014e3d7a61191f565b6106859190611936565b8111155b6106ce5760405162461bcd60e51b81526020600482015260166024820152754f7574736964652070726573616c65206c696d69747360501b604482015260640161058b565b6106e967016345785d8a00006801158e460913d00000611955565b8211156106f8576106f86106fd565b505050565b6005546001600160a01b0316330361076e5761072360026801158e460913d00000611936565b4710156107695760405162461bcd60e51b815260206004820152601460248201527314dbd99d0818d85c081b9bdd081c995858da195960621b604482015260640161058b565b6107ce565b61078967016345785d8a00006801158e460913d00000611955565b47116107ce5760405162461bcd60e51b815260206004820152601460248201527312185c990818d85c081b9bdd081c995858da195960621b604482015260640161058b565b6007546002146108105760405162461bcd60e51b815260206004820152600d60248201526c141c995cd85b1948195b991959609a1b604482015260640161058b565b5f6108236005546001600160a01b031690565b6001600160a01b0316610837600247611936565b6040515f81818185875af1925050503d805f8114610870576040519150601f19603f3d011682016040523d82523d5f602084013e610875565b606091505b50909150737a250d5630b4cf539739df2c5dacb4c659f2488d905063f305d71947306108a36009600a611911565b6108b09062d2924061191f565b5f806108c46005546001600160a01b031690565b426040518863ffffffff1660e01b81526004016108e696959493929190611968565b60606040518083038185885af193505050508015610921575060408051601f3d908101601f1916820190925261091e918101906119a3565b60015b61092d57600460075550565b505060036007555050565b606060038054610947906119ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610973906119ce565b80156109be5780601f10610995576101008083540402835291602001916109be565b820191905f5260205f20905b8154815290600101906020018083116109a157829003601f168201915b5050505050905090565b5f6109d43384846112f2565b5060015b92915050565b6005546001600160a01b03163314610a085760405162461bcd60e51b815260040161058b90611a06565b5f5b82811015610a68578160065f868685818110610a2857610a28611a3b565b9050602002016020810190610a3d9190611765565b6001600160a01b0316815260208101919091526040015f205580610a6081611a4f565b915050610a0a565b50505050565b5f610a7a848484611415565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610b135782811015610b065760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161058b565b610b1385338584036112f2565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109d4918590610b54908690611a67565b6112f2565b6064610b676009600a611911565b610b759063014e3d7a61191f565b610b7f9190611936565b81565b6005546001600160a01b03163314610bac5760405162461bcd60e51b815260040161058b90611a06565b828114610bfb5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161058b565b5f5b83811015610c7157610c5f33868684818110610c1b57610c1b611a3b565b9050602002016020810190610c309190611765565b610c3c6009600a611911565b868686818110610c4e57610c4e611a3b565b9050602002013561061b919061191f565b80610c6981611a4f565b915050610bfd565b5050505050565b6005546001600160a01b03163314610ca25760405162461bcd60e51b815260040161058b90611a06565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610947906119ce565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d7b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161058b565b610d8833858584036112f2565b5060019392505050565b5f6109d4338484611415565b6005546001600160a01b03163314610dc85760405162461bcd60e51b815260040161058b90611a06565b600754600414610e0c5760405162461bcd60e51b815260206004820152600f60248201526e09cde40d2e6e6eaca40e8de40ccd2f608b1b604482015260640161058b565b5f610e196009600a611911565b610e269062d2924061191f565b305f9081526020819052604090205490915081811015610e44578091505b737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730845f80610e756005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610e9796959493929190611968565b60606040518083038185885af193505050508015610ed2575060408051601f3d908101601f19168201909252610ecf918101906119a3565b60015b610f65575f610ee96005546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610f30576040519150601f19603f3d011682016040523d82523d5f602084013e610f35565b606091505b5050809150506106f830610f516005546001600160a01b031690565b305f9081526020819052604090205461119f565b50506003600755505b5050565b60c8610b676009600a611911565b6005546001600160a01b03163314610faa5760405162461bcd60e51b815260040161058b90611a06565b600754600114610fef5760405162461bcd60e51b815260206004820152601060248201526f139bdd081b185d5b98da1959081e595d60821b604482015260640161058b565b61100530610f516005546001600160a01b031690565b565b6005546001600160a01b031633146110315760405162461bcd60e51b815260040161058b90611a06565b6007546003146110725760405162461bcd60e51b815260206004820152600c60248201526b4c50204e6f7420526561647960a01b604482015260640161058b565b6001600755565b6110856009600a611911565b610b7f9062d2924061191f565b61109e6009600a611911565b610b7f9063014e3d7a61191f565b61100534610548565b6005546001600160a01b031633146110df5760405162461bcd60e51b815260040161058b90611a06565b6001600160a01b0381166111445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111c55760405162461bcd60e51b815260040161058b90611a7a565b6001600160a01b0382166111eb5760405162461bcd60e51b815260040161058b90611abf565b6001600160a01b0383165f90815260208190526040902054818110156112625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161058b565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611298908490611a67565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112e491815260200190565b60405180910390a350505050565b6001600160a01b0383166113545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161058b565b6001600160a01b0382166113b55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161058b565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661143b5760405162461bcd60e51b815260040161058b90611a7a565b6001600160a01b0382166114615760405162461bcd60e51b815260040161058b90611abf565b600754600114611567576005546001600160a01b038481169116148061149457506005546001600160a01b038381169116145b806114a757506001600160a01b03831630145b806114ba57506001600160a01b03821630145b6114ff5760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b604482015260640161058b565b61150a83838361119f565b6005546001600160a01b03848116911614801561155857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156106f8576001600755505050565b61157283838361119f565b6106f883836001600160a01b0382165f9081526006602052604090205415806115a857506005546001600160a01b038281169116145b610f6e5760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b606482015260840161058b565b5f6020808352835180828501525f5b818110156116395785810183015185820160400152820161161d565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461166f575f80fd5b919050565b5f8060408385031215611685575f80fd5b61168e83611659565b946020939093013593505050565b5f8083601f8401126116ac575f80fd5b50813567ffffffffffffffff8111156116c3575f80fd5b6020830191508360208260051b85010111156116dd575f80fd5b9250929050565b5f805f604084860312156116f6575f80fd5b833567ffffffffffffffff81111561170c575f80fd5b6117188682870161169c565b909790965060209590950135949350505050565b5f805f6060848603121561173e575f80fd5b61174784611659565b925061175560208501611659565b9150604084013590509250925092565b5f60208284031215611775575f80fd5b61177e82611659565b9392505050565b5f805f8060408587031215611798575f80fd5b843567ffffffffffffffff808211156117af575f80fd5b6117bb8883890161169c565b909650945060208701359150808211156117d3575f80fd5b506117e08782880161169c565b95989497509550505050565b5f80604083850312156117fd575f80fd5b61180683611659565b915061181460208401611659565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561186b57815f19048211156118515761185161181d565b8085161561185e57918102915b93841c9390800290611836565b509250929050565b5f82611881575060016109d8565b8161188d57505f6109d8565b81600181146118a357600281146118ad576118c9565b60019150506109d8565b60ff8411156118be576118be61181d565b50506001821b6109d8565b5060208310610133831016604e8410600b84101617156118ec575081810a6109d8565b6118f68383611831565b805f19048211156119095761190961181d565b029392505050565b5f61177e60ff841683611873565b80820281158282048414176109d8576109d861181d565b5f8261195057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109d8576109d861181d565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f606084860312156119b5575f80fd5b8351925060208401519150604084015190509250925092565b600181811c908216806119e257607f821691505b602082108103611a0057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611a6057611a6061181d565b5060010190565b808201808211156109d8576109d861181d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b60608201526080019056fea26469706673582212203170c0fa1faf38fb61473efad9519588f2b98676ba92fcf2c2215882350fdf2564736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c8063715018a6116100f2578063b4a960b411610092578063dd62ed3e11610062578063dd62ed3e146104c2578063e091a98a14610506578063f2fde38b1461050e578063f88979451461052d575f80fd5b8063b4a960b414610472578063c9567bf914610486578063cceba87c1461049a578063d59801bb146104ae575f80fd5b8063a457c2d7116100cd578063a457c2d71461040c578063a9059cbb1461042b578063a95acb171461044a578063b1f233b71461045e575f80fd5b8063715018a6146103bd5780638da5cb5b146103d157806395d89b41146103f8575f80fd5b8063395093511161016857806363d5502f1161013857806363d5502f14610333578063672434821461034f5780636ac5db191461036e57806370a0823114610389575f80fd5b806339509351146102c057806348fc07c4146102df57806353135ca0146102f3578063535a243714610308575f80fd5b80630bf1deff116101a35780630bf1deff1461024957806318160ddd1461026857806323b872dd14610286578063313ce567146102a5575f80fd5b806301339c21146101dc57806306fdde03146101f0578063095ea7b31461021a575f80fd5b366101d8576101d634610548565b005b5f80fd5b3480156101e7575f80fd5b506101d66106fd565b3480156101fb575f80fd5b50610204610938565b604051610211919061160e565b60405180910390f35b348015610225575f80fd5b50610239610234366004611674565b6109c8565b6040519015158152602001610211565b348015610254575f80fd5b506101d66102633660046116e4565b6109de565b348015610273575f80fd5b506002545b604051908152602001610211565b348015610291575f80fd5b506102396102a036600461172c565b610a6e565b3480156102b0575f80fd5b5060405160098152602001610211565b3480156102cb575f80fd5b506102396102da366004611674565b610b1e565b3480156102ea575f80fd5b50610278610b59565b3480156102fe575f80fd5b5061027860075481565b348015610313575f80fd5b50610278610322366004611765565b60066020525f908152604090205481565b34801561033e575f80fd5b506102786801158e460913d0000081565b34801561035a575f80fd5b506101d6610369366004611785565b610b82565b348015610379575f80fd5b506102786702c68af0bb14000081565b348015610394575f80fd5b506102786103a3366004611765565b6001600160a01b03165f9081526020819052604090205490565b3480156103c8575f80fd5b506101d6610c78565b3480156103dc575f80fd5b506005546040516001600160a01b039091168152602001610211565b348015610403575f80fd5b50610204610ceb565b348015610417575f80fd5b50610239610426366004611674565b610cfa565b348015610436575f80fd5b50610239610445366004611674565b610d92565b348015610455575f80fd5b506101d6610d9e565b348015610469575f80fd5b50610278610f72565b34801561047d575f80fd5b506101d6610f80565b348015610491575f80fd5b506101d6611007565b3480156104a5575f80fd5b50610278611079565b3480156104b9575f80fd5b50610278611092565b3480156104cd575f80fd5b506102786104dc3660046117ec565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101d66110ac565b348015610519575f80fd5b506101d6610528366004611765565b6110b5565b348015610538575f80fd5b5061027867016345785d8a000081565b6007546002146105945760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b60448201526064015b60405180910390fd5b476801158e460913d000008111156105dd5760405162461bcd60e51b815260206004820152600c60248201526b141c995cd85b1948199d5b1b60a21b604482015260640161058b565b61062030336801158e460913d00000856105f96009600a611911565b6106079063014e3d7a61191f565b610611919061191f565b61061b9190611936565b61119f565b335f9081526020819052604090205460c861063d6009600a611911565b61064b9063014e3d7a61191f565b6106559190611936565b81101580156106895750606461066d6009600a611911565b61067b9063014e3d7a61191f565b6106859190611936565b8111155b6106ce5760405162461bcd60e51b81526020600482015260166024820152754f7574736964652070726573616c65206c696d69747360501b604482015260640161058b565b6106e967016345785d8a00006801158e460913d00000611955565b8211156106f8576106f86106fd565b505050565b6005546001600160a01b0316330361076e5761072360026801158e460913d00000611936565b4710156107695760405162461bcd60e51b815260206004820152601460248201527314dbd99d0818d85c081b9bdd081c995858da195960621b604482015260640161058b565b6107ce565b61078967016345785d8a00006801158e460913d00000611955565b47116107ce5760405162461bcd60e51b815260206004820152601460248201527312185c990818d85c081b9bdd081c995858da195960621b604482015260640161058b565b6007546002146108105760405162461bcd60e51b815260206004820152600d60248201526c141c995cd85b1948195b991959609a1b604482015260640161058b565b5f6108236005546001600160a01b031690565b6001600160a01b0316610837600247611936565b6040515f81818185875af1925050503d805f8114610870576040519150601f19603f3d011682016040523d82523d5f602084013e610875565b606091505b50909150737a250d5630b4cf539739df2c5dacb4c659f2488d905063f305d71947306108a36009600a611911565b6108b09062d2924061191f565b5f806108c46005546001600160a01b031690565b426040518863ffffffff1660e01b81526004016108e696959493929190611968565b60606040518083038185885af193505050508015610921575060408051601f3d908101601f1916820190925261091e918101906119a3565b60015b61092d57600460075550565b505060036007555050565b606060038054610947906119ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610973906119ce565b80156109be5780601f10610995576101008083540402835291602001916109be565b820191905f5260205f20905b8154815290600101906020018083116109a157829003601f168201915b5050505050905090565b5f6109d43384846112f2565b5060015b92915050565b6005546001600160a01b03163314610a085760405162461bcd60e51b815260040161058b90611a06565b5f5b82811015610a68578160065f868685818110610a2857610a28611a3b565b9050602002016020810190610a3d9190611765565b6001600160a01b0316815260208101919091526040015f205580610a6081611a4f565b915050610a0a565b50505050565b5f610a7a848484611415565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f198114610b135782811015610b065760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161058b565b610b1385338584036112f2565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109d4918590610b54908690611a67565b6112f2565b6064610b676009600a611911565b610b759063014e3d7a61191f565b610b7f9190611936565b81565b6005546001600160a01b03163314610bac5760405162461bcd60e51b815260040161058b90611a06565b828114610bfb5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161058b565b5f5b83811015610c7157610c5f33868684818110610c1b57610c1b611a3b565b9050602002016020810190610c309190611765565b610c3c6009600a611911565b868686818110610c4e57610c4e611a3b565b9050602002013561061b919061191f565b80610c6981611a4f565b915050610bfd565b5050505050565b6005546001600160a01b03163314610ca25760405162461bcd60e51b815260040161058b90611a06565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610947906119ce565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d7b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161058b565b610d8833858584036112f2565b5060019392505050565b5f6109d4338484611415565b6005546001600160a01b03163314610dc85760405162461bcd60e51b815260040161058b90611a06565b600754600414610e0c5760405162461bcd60e51b815260206004820152600f60248201526e09cde40d2e6e6eaca40e8de40ccd2f608b1b604482015260640161058b565b5f610e196009600a611911565b610e269062d2924061191f565b305f9081526020819052604090205490915081811015610e44578091505b737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730845f80610e756005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610e9796959493929190611968565b60606040518083038185885af193505050508015610ed2575060408051601f3d908101601f19168201909252610ecf918101906119a3565b60015b610f65575f610ee96005546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610f30576040519150601f19603f3d011682016040523d82523d5f602084013e610f35565b606091505b5050809150506106f830610f516005546001600160a01b031690565b305f9081526020819052604090205461119f565b50506003600755505b5050565b60c8610b676009600a611911565b6005546001600160a01b03163314610faa5760405162461bcd60e51b815260040161058b90611a06565b600754600114610fef5760405162461bcd60e51b815260206004820152601060248201526f139bdd081b185d5b98da1959081e595d60821b604482015260640161058b565b61100530610f516005546001600160a01b031690565b565b6005546001600160a01b031633146110315760405162461bcd60e51b815260040161058b90611a06565b6007546003146110725760405162461bcd60e51b815260206004820152600c60248201526b4c50204e6f7420526561647960a01b604482015260640161058b565b6001600755565b6110856009600a611911565b610b7f9062d2924061191f565b61109e6009600a611911565b610b7f9063014e3d7a61191f565b61100534610548565b6005546001600160a01b031633146110df5760405162461bcd60e51b815260040161058b90611a06565b6001600160a01b0381166111445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111c55760405162461bcd60e51b815260040161058b90611a7a565b6001600160a01b0382166111eb5760405162461bcd60e51b815260040161058b90611abf565b6001600160a01b0383165f90815260208190526040902054818110156112625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161058b565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611298908490611a67565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112e491815260200190565b60405180910390a350505050565b6001600160a01b0383166113545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161058b565b6001600160a01b0382166113b55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161058b565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661143b5760405162461bcd60e51b815260040161058b90611a7a565b6001600160a01b0382166114615760405162461bcd60e51b815260040161058b90611abf565b600754600114611567576005546001600160a01b038481169116148061149457506005546001600160a01b038381169116145b806114a757506001600160a01b03831630145b806114ba57506001600160a01b03821630145b6114ff5760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b604482015260640161058b565b61150a83838361119f565b6005546001600160a01b03848116911614801561155857507f0000000000000000000000008beb38c991633ec7376b9d8b265b195728c847586001600160a01b0316826001600160a01b0316145b156106f8576001600755505050565b61157283838361119f565b6106f883836001600160a01b0382165f9081526006602052604090205415806115a857506005546001600160a01b038281169116145b610f6e5760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b606482015260840161058b565b5f6020808352835180828501525f5b818110156116395785810183015185820160400152820161161d565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461166f575f80fd5b919050565b5f8060408385031215611685575f80fd5b61168e83611659565b946020939093013593505050565b5f8083601f8401126116ac575f80fd5b50813567ffffffffffffffff8111156116c3575f80fd5b6020830191508360208260051b85010111156116dd575f80fd5b9250929050565b5f805f604084860312156116f6575f80fd5b833567ffffffffffffffff81111561170c575f80fd5b6117188682870161169c565b909790965060209590950135949350505050565b5f805f6060848603121561173e575f80fd5b61174784611659565b925061175560208501611659565b9150604084013590509250925092565b5f60208284031215611775575f80fd5b61177e82611659565b9392505050565b5f805f8060408587031215611798575f80fd5b843567ffffffffffffffff808211156117af575f80fd5b6117bb8883890161169c565b909650945060208701359150808211156117d3575f80fd5b506117e08782880161169c565b95989497509550505050565b5f80604083850312156117fd575f80fd5b61180683611659565b915061181460208401611659565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561186b57815f19048211156118515761185161181d565b8085161561185e57918102915b93841c9390800290611836565b509250929050565b5f82611881575060016109d8565b8161188d57505f6109d8565b81600181146118a357600281146118ad576118c9565b60019150506109d8565b60ff8411156118be576118be61181d565b50506001821b6109d8565b5060208310610133831016604e8410600b84101617156118ec575081810a6109d8565b6118f68383611831565b805f19048211156119095761190961181d565b029392505050565b5f61177e60ff841683611873565b80820281158282048414176109d8576109d861181d565b5f8261195057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109d8576109d861181d565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f606084860312156119b5575f80fd5b8351925060208401519150604084015190509250925092565b600181811c908216806119e257607f821691505b602082108103611a0057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611a6057611a6061181d565b5060010190565b808201808211156109d8576109d861181d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b60608201526080019056fea26469706673582212203170c0fa1faf38fb61473efad9519588f2b98676ba92fcf2c2215882350fdf2564736f6c63430008150033

Deployed Bytecode Sourcemap

10807:5234:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12163:19;12172:9;12163:8;:19::i;:::-;10807:5234;;;;;13607:695;;;;;;;;;;;;;:::i;4041:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5096:210;;;;;;;;;;-1:-1:-1;5096:210:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;5096:210:0;1004:187:1;15611:224:0;;;;;;;;;;-1:-1:-1;15611:224:0;;;;;:::i;:::-;;:::i;4362:108::-;;;;;;;;;;-1:-1:-1;4450:12:0;;4362:108;;;2224:25:1;;;2212:2;2197:18;4362:108:0;2078:177:1;5314:620:0;;;;;;;;;;-1:-1:-1;5314:620:0;;;;;:::i;:::-;;:::i;12804:92::-;;;;;;;;;;-1:-1:-1;12804:92:0;;11116:1;2735:36:1;;2723:2;2708:18;12804:92:0;2593:184:1;5942:297:0;;;;;;;;;;-1:-1:-1;5942:297:0;;;;;:::i;:::-;;:::i;11522:67::-;;;;;;;;;;;;;:::i;11182:32::-;;;;;;;;;;;;;;;;11029:51;;;;;;;;;;-1:-1:-1;11029:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;11319:45;;;;;;;;;;;;11356:8;11319:45;;15268:335;;;;;;;;;;-1:-1:-1;15268:335:0;;;;;:::i;:::-;;:::i;11270:42::-;;;;;;;;;;;;11300:12;11270:42;;4478:177;;;;;;;;;;-1:-1:-1;4478:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4629:18:0;4597:7;4629:18;;;;;;;;;;;;4478:177;8542:148;;;;;;;;;;;;;:::i;8328:79::-;;;;;;;;;;-1:-1:-1;8393:6:0;;8328:79;;-1:-1:-1;;;;;8393:6:0;;;3897:51:1;;3885:2;3870:18;8328:79:0;3751:203:1;4149:104:0;;;;;;;;;;;;;:::i;6247:482::-;;;;;;;;;;-1:-1:-1;6247:482:0;;;;;:::i;:::-;;:::i;4663:216::-;;;;;;;;;;-1:-1:-1;4663:216:0;;;;;:::i;:::-;;:::i;14310:610::-;;;;;;;;;;;;;:::i;11448:67::-;;;;;;;;;;;;;:::i;15068:192::-;;;;;;;;;;;;;:::i;14928:132::-;;;;;;;;;;;;;:::i;11596:65::-;;;;;;;;;;;;;:::i;11371:70::-;;;;;;;;;;;;;:::i;4887:201::-;;;;;;;;;;-1:-1:-1;4887:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5053:18:0;;;5021:7;5053:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4887:201;12198:78;;;:::i;8698:281::-;;;;;;;;;;-1:-1:-1;8698:281:0;;;;;:::i;:::-;;:::i;11221:42::-;;;;;;;;;;;;11251:12;11221:42;;12284:512;12346:13;;12363:1;12346:18;12338:49;;;;-1:-1:-1;;;12338:49:0;;4426:2:1;12338:49:0;;;4408:21:1;4465:2;4445:18;;;4438:30;-1:-1:-1;;;4484:18:1;;;4477:48;4542:18;;12338:49:0;;;;;;;;;12412:21;11356:8;12452:17;;;12444:42;;;;-1:-1:-1;;;12444:42:0;;4773:2:1;12444:42:0;;;4755:21:1;4812:2;4792:18;;;4785:30;-1:-1:-1;;;4831:18:1;;;4824:42;4883:18;;12444:42:0;4571:336:1;12444:42:0;12497:84;12521:4;12528:10;11356:8;12560:6;11158:15;11116:1;11158:2;:15;:::i;:::-;11414:27;;:10;:27;:::i;:::-;12541:25;;;;:::i;:::-;12540:40;;;;:::i;:::-;12497:15;:84::i;:::-;12621:10;12592:16;4629:18;;;;;;;;;;;11512:3;11158:15;11116:1;11158:2;:15;:::i;:::-;11414:27;;:10;:27;:::i;:::-;11493:22;;;;:::i;:::-;12651:8;:30;;:64;;;;-1:-1:-1;11586:3:0;11158:15;11116:1;11158:2;:15;:::i;:::-;11414:27;;:10;:27;:::i;:::-;11567:22;;;;:::i;:::-;12685:8;:30;;12651:64;12643:99;;;;-1:-1:-1;;;12643:99:0;;7024:2:1;12643:99:0;;;7006:21:1;7063:2;7043:18;;;7036:30;-1:-1:-1;;;7082:18:1;;;7075:52;7144:18;;12643:99:0;6822:346:1;12643:99:0;12762:16;11251:12;11356:8;12762:16;:::i;:::-;12756:3;:22;12753:35;;;12780:8;:6;:8::i;:::-;12327:469;;12284:512;:::o;13607:695::-;8393:6;;-1:-1:-1;;;;;8393:6:0;13646:10;:21;13643:231;;13717:14;13730:1;11356:8;13717:14;:::i;:::-;13692:21;:39;;13684:72;;;;-1:-1:-1;;;13684:72:0;;7508:2:1;13684:72:0;;;7490:21:1;7547:2;7527:18;;;7520:30;-1:-1:-1;;;7566:18:1;;;7559:50;7626:18;;13684:72:0;7306:344:1;13684:72:0;13643:231;;;13821:16;11251:12;11356:8;13821:16;:::i;:::-;13797:21;:40;13789:73;;;;-1:-1:-1;;;13789:73:0;;7857:2:1;13789:73:0;;;7839:21:1;7896:2;7876:18;;;7869:30;-1:-1:-1;;;7915:18:1;;;7908:50;7975:18;;13789:73:0;7655:344:1;13789:73:0;13892:13;;13909:1;13892:18;13884:44;;;;-1:-1:-1;;;13884:44:0;;8206:2:1;13884:44:0;;;8188:21:1;8245:2;8225:18;;;8218:30;-1:-1:-1;;;8264:18:1;;;8257:43;8317:18;;13884:44:0;8004:337:1;13884:44:0;13941:12;13986:7;8393:6;;-1:-1:-1;;;;;8393:6:0;;8328:79;13986:7;-1:-1:-1;;;;;13978:21:0;14007:25;14031:1;14007:21;:25;:::i;:::-;13978:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13964:73:0;;-1:-1:-1;10887:42:0;;-1:-1:-1;14062:25:0;14095:21;14126:4;11158:15;11116:1;11158:2;:15;:::i;:::-;11634:27;;:10;:27;:::i;:::-;14144:1;14146;14148:7;8393:6;;-1:-1:-1;;;;;8393:6:0;;8328:79;14148:7;14156:15;14062:110;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14062:110:0;;;;;;;;-1:-1:-1;;14062:110:0;;;;;;;;;;;;:::i;:::-;;;14058:237;;14264:1;14248:13;:17;13632:670;13607:695::o;14058:237::-;-1:-1:-1;;14204:1:0;14188:13;:17;-1:-1:-1;13632:670:0;13607:695::o;4041:100::-;4095:13;4128:5;4121:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4041:100;:::o;5096:210::-;5215:4;5237:39;175:10;5260:7;5269:6;5237:8;:39::i;:::-;-1:-1:-1;5294:4:0;5096:210;;;;;:::o;15611:224::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;15720:9:::1;15716:112;15735:19:::0;;::::1;15716:112;;;15808:8;15776:16;:29;15793:8;;15802:1;15793:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15776:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15776:29:0;:40;15756:3;::::1;::::0;::::1;:::i;:::-;;;;15716:112;;;;15611:224:::0;;;:::o;5314:620::-;5454:4;5471:36;5481:6;5489:9;5500:6;5471:9;:36::i;:::-;-1:-1:-1;;;;;5547:19:0;;5520:24;5547:19;;;:11;:19;;;;;;;;175:10;5547:33;;;;;;;;-1:-1:-1;;5594:37:0;;5591:314;;5695:6;5675:16;:26;;5649:128;;;;-1:-1:-1;;;5649:128:0;;10699:2:1;5649:128:0;;;10681:21:1;10738:2;10718:18;;;10711:30;10777:34;10757:18;;;10750:62;-1:-1:-1;;;10828:18:1;;;10821:38;10876:19;;5649:128:0;10497:404:1;5649:128:0;5821:57;5830:6;175:10;5871:6;5852:16;:25;5821:8;:57::i;:::-;-1:-1:-1;5922:4:0;;5314:620;-1:-1:-1;;;;5314:620:0:o;5942:297::-;175:10;6057:4;6151:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6151:34:0;;;;;;;;;;6057:4;;6079:130;;6129:7;;6151:47;;6188:10;;6151:47;:::i;:::-;6079:8;:130::i;11522:67::-;11586:3;11158:15;11116:1;11158:2;:15;:::i;:::-;11414:27;;:10;:27;:::i;:::-;11567:22;;;;:::i;:::-;11522:67;:::o;15268:335::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;15378:31;;::::1;15370:74;;;::::0;-1:-1:-1;;;15370:74:0;;11238:2:1;15370:74:0::1;::::0;::::1;11220:21:1::0;11277:2;11257:18;;;11250:30;11316:32;11296:18;;;11289:60;11366:18;;15370:74:0::1;11036:354:1::0;15370:74:0::1;15462:9;15457:139;15477:18:::0;;::::1;15457:139;;;15517:67;15533:10;15545:7;;15553:1;15545:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11158:15;11116:1;11158:2;:15;:::i;:::-;15557:6;;15564:1;15557:9;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;15517:67::-;15497:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15457:139;;;;15268:335:::0;;;;:::o;8542:148::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;8633:6:::1;::::0;8612:40:::1;::::0;8649:1:::1;::::0;-1:-1:-1;;;;;8633:6:0::1;::::0;8612:40:::1;::::0;8649:1;;8612:40:::1;8663:6;:19:::0;;-1:-1:-1;;;;;;8663:19:0::1;::::0;;8542:148::o;4149:104::-;4205:13;4238:7;4231:14;;;;;:::i;6247:482::-;175:10;6367:4;6416:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6416:34:0;;;;;;;;;;6483:35;;;;6461:122;;;;-1:-1:-1;;;6461:122:0;;11597:2:1;6461:122:0;;;11579:21:1;11636:2;11616:18;;;11609:30;11675:34;11655:18;;;11648:62;-1:-1:-1;;;11726:18:1;;;11719:35;11771:19;;6461:122:0;11395:401:1;6461:122:0;6619:67;175:10;6642:7;6670:15;6651:16;:34;6619:8;:67::i;:::-;-1:-1:-1;6717:4:0;;6247:482;-1:-1:-1;;;6247:482:0:o;4663:216::-;4785:4;4807:42;175:10;4831:9;4842:6;4807:9;:42::i;14310:610::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;14372:13:::1;;14389:1;14372:18;14364:46;;;::::0;-1:-1:-1;;;14364:46:0;;12003:2:1;14364:46:0::1;::::0;::::1;11985:21:1::0;12042:2;12022:18;;;12015:30;-1:-1:-1;;;12061:18:1;;;12054:45;12116:18;;14364:46:0::1;11801:339:1::0;14364:46:0::1;14421:12;11158:15;11116:1;11158:2;:15;:::i;:::-;11634:27;::::0;:10:::1;:27;:::i;:::-;14490:4;14458:11;4629:18:::0;;;;;;;;;;;14421:26;;-1:-1:-1;14510:10:0;;::::1;14507:25;;;14529:3;14522:10;;14507:25;10887:42;14547:25;14580:21;14611:4;14617:3:::0;14621:1:::1;::::0;14625:7:::1;8393:6:::0;;-1:-1:-1;;;;;8393:6:0;;8328:79;14625:7:::1;14633:15;14547:102;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14547:102:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;14547:102:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;14543:370;;14725:12;14774:7;8393:6:::0;;-1:-1:-1;;;;;8393:6:0;;8328:79;14774:7:::1;-1:-1:-1::0;;;;;14766:21:0::1;14795;14766:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14752:69;;;;;14836:65;14860:4;14867:7;8393:6:::0;;-1:-1:-1;;;;;8393:6:0;;8328:79;14867:7:::1;14894:4;4597:7:::0;4629:18;;;;;;;;;;;12497:15;:84::i;14543:370::-:1;-1:-1:-1::0;;14681:1:0::1;14665:13;:17:::0;-1:-1:-1;14543:370:0::1;14353:567;;14310:610::o:0;11448:67::-;11512:3;11158:15;11116:1;11158:2;:15;:::i;15068:192::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;15137:13:::1;;15154:1;15137:18;15129:47;;;::::0;-1:-1:-1;;;15129:47:0;;12347:2:1;15129:47:0::1;::::0;::::1;12329:21:1::0;12386:2;12366:18;;;12359:30;-1:-1:-1;;;12405:18:1;;;12398:46;12461:18;;15129:47:0::1;12145:340:1::0;15129:47:0::1;15187:65;15211:4;15218:7;8393:6:::0;;-1:-1:-1;;;;;8393:6:0;;8328:79;15187:65:::1;15068:192::o:0;14928:132::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;14989:13:::1;;15006:1;14989:18;14981:43;;;::::0;-1:-1:-1;;;14981:43:0;;12692:2:1;14981:43:0::1;::::0;::::1;12674:21:1::0;12731:2;12711:18;;;12704:30;-1:-1:-1;;;12750:18:1;;;12743:42;12802:18;;14981:43:0::1;12490:336:1::0;14981:43:0::1;15051:1;15035:13;:17:::0;14928:132::o;11596:65::-;11158:15;11116:1;11158:2;:15;:::i;:::-;11634:27;;:10;:27;:::i;11371:70::-;11158:15;11116:1;11158:2;:15;:::i;:::-;11414:27;;:10;:27;:::i;12198:78::-;12249:19;12258:9;12249:8;:19::i;8698:281::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8801:22:0;::::1;8779:110;;;::::0;-1:-1:-1;;;8779:110:0;;13033:2:1;8779:110:0::1;::::0;::::1;13015:21:1::0;13072:2;13052:18;;;13045:30;13111:34;13091:18;;;13084:62;-1:-1:-1;;;13162:18:1;;;13155:36;13208:19;;8779:110:0::1;12831:402:1::0;8779:110:0::1;8926:6;::::0;8905:38:::1;::::0;-1:-1:-1;;;;;8905:38:0;;::::1;::::0;8926:6:::1;::::0;8905:38:::1;::::0;8926:6:::1;::::0;8905:38:::1;8954:6;:17:::0;;-1:-1:-1;;;;;;8954:17:0::1;-1:-1:-1::0;;;;;8954:17:0;;;::::1;::::0;;;::::1;::::0;;8698:281::o;6737:651::-;-1:-1:-1;;;;;6877:20:0;;6869:70;;;;-1:-1:-1;;;6869:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6958:23:0;;6950:71;;;;-1:-1:-1;;;6950:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7058:17:0;;7034:21;7058:17;;;;;;;;;;;7108:23;;;;7086:111;;;;-1:-1:-1;;;7086:111:0;;14250:2:1;7086:111:0;;;14232:21:1;14289:2;14269:18;;;14262:30;14328:34;14308:18;;;14301:62;-1:-1:-1;;;14379:18:1;;;14372:36;14425:19;;7086:111:0;14048:402:1;7086:111:0;-1:-1:-1;;;;;7233:17:0;;;:9;:17;;;;;;;;;;;7253:22;;;7233:42;;7297:20;;;;;;;;:30;;7269:6;;7233:9;7297:30;;7269:6;;7297:30;:::i;:::-;;;;;;;;7362:9;-1:-1:-1;;;;;7345:35:0;7354:6;-1:-1:-1;;;;;7345:35:0;;7373:6;7345:35;;;;2224:25:1;;2212:2;2197:18;;2078:177;7345:35:0;;;;;;;;6858:530;6737:651;;;:::o;7396:380::-;-1:-1:-1;;;;;7532:19:0;;7524:68;;;;-1:-1:-1;;;7524:68:0;;14657:2:1;7524:68:0;;;14639:21:1;14696:2;14676:18;;;14669:30;14735:34;14715:18;;;14708:62;-1:-1:-1;;;14786:18:1;;;14779:34;14830:19;;7524:68:0;14455:400:1;7524:68:0;-1:-1:-1;;;;;7611:21:0;;7603:68;;;;-1:-1:-1;;;7603:68:0;;15062:2:1;7603:68:0;;;15044:21:1;15101:2;15081:18;;;15074:30;15140:34;15120:18;;;15113:62;-1:-1:-1;;;15191:18:1;;;15184:32;15233:19;;7603:68:0;14860:398:1;7603:68:0;-1:-1:-1;;;;;7684:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7736:32;;2224:25:1;;;7736:32:0;;2197:18:1;7736:32:0;;;;;;;7396:380;;;:::o;12904:695::-;-1:-1:-1;;;;;13036:18:0;;13028:68;;;;-1:-1:-1;;;13028:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13115:16:0;;13107:64;;;;-1:-1:-1;;;13107:64:0;;;;;;;:::i;:::-;13187:13;;13204:1;13187:18;13184:408;;8393:6;;-1:-1:-1;;;;;13230:15:0;;;8393:6;;13230:15;;:32;;-1:-1:-1;8393:6:0;;-1:-1:-1;;;;;13249:13:0;;;8393:6;;13249:13;13230:32;:57;;;-1:-1:-1;;;;;;13266:21:0;;13282:4;13266:21;13230:57;:80;;;-1:-1:-1;;;;;;13291:19:0;;13305:4;13291:19;13230:80;13222:115;;;;-1:-1:-1;;;13222:115:0;;15465:2:1;13222:115:0;;;15447:21:1;15504:2;15484:18;;;15477:30;-1:-1:-1;;;15523:18:1;;;15516:52;15585:18;;13222:115:0;15263:346:1;13222:115:0;13352:33;13368:4;13374:2;13378:6;13352:15;:33::i;:::-;8393:6;;-1:-1:-1;;;;;13403:15:0;;;8393:6;;13403:15;:29;;;;;13428:4;-1:-1:-1;;;;;13422:10:0;:2;-1:-1:-1;;;;;13422:10:0;;13403:29;13400:51;;;13450:1;13434:13;:17;12327:469;;12284:512;:::o;13184:408::-;13502:33;13518:4;13524:2;13528:6;13502:15;:33::i;:::-;13550:30;13571:4;13577:2;-1:-1:-1;;;;;15932:22:0;;;;;;:16;:22;;;;;;:27;;:44;;-1:-1:-1;8393:6:0;;-1:-1:-1;;;;;15963:13:0;;;8393:6;;15963:13;15932:44;15924:106;;;;-1:-1:-1;;;15924:106:0;;15816:2:1;15924:106:0;;;15798:21:1;15855:2;15835:18;;;15828:30;15894:34;15874:18;;;15867:62;-1:-1:-1;;;15945:18:1;;;15938:47;16002:19;;15924:106:0;15614:413:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:367::-;1259:8;1269:6;1323:3;1316:4;1308:6;1304:17;1300:27;1290:55;;1341:1;1338;1331:12;1290:55;-1:-1:-1;1364:20:1;;1407:18;1396:30;;1393:50;;;1439:1;1436;1429:12;1393:50;1476:4;1468:6;1464:17;1452:29;;1536:3;1529:4;1519:6;1516:1;1512:14;1504:6;1500:27;1496:38;1493:47;1490:67;;;1553:1;1550;1543:12;1490:67;1196:367;;;;;:::o;1568:505::-;1663:6;1671;1679;1732:2;1720:9;1711:7;1707:23;1703:32;1700:52;;;1748:1;1745;1738:12;1700:52;1788:9;1775:23;1821:18;1813:6;1810:30;1807:50;;;1853:1;1850;1843:12;1807:50;1892:70;1954:7;1945:6;1934:9;1930:22;1892:70;:::i;:::-;1981:8;;1866:96;;-1:-1:-1;2063:2:1;2048:18;;;;2035:32;;1568:505;-1:-1:-1;;;;1568:505:1:o;2260:328::-;2337:6;2345;2353;2406:2;2394:9;2385:7;2381:23;2377:32;2374:52;;;2422:1;2419;2412:12;2374:52;2445:29;2464:9;2445:29;:::i;:::-;2435:39;;2493:38;2527:2;2516:9;2512:18;2493:38;:::i;:::-;2483:48;;2578:2;2567:9;2563:18;2550:32;2540:42;;2260:328;;;;;:::o;2782:186::-;2841:6;2894:2;2882:9;2873:7;2869:23;2865:32;2862:52;;;2910:1;2907;2900:12;2862:52;2933:29;2952:9;2933:29;:::i;:::-;2923:39;2782:186;-1:-1:-1;;;2782:186:1:o;2973:773::-;3095:6;3103;3111;3119;3172:2;3160:9;3151:7;3147:23;3143:32;3140:52;;;3188:1;3185;3178:12;3140:52;3228:9;3215:23;3257:18;3298:2;3290:6;3287:14;3284:34;;;3314:1;3311;3304:12;3284:34;3353:70;3415:7;3406:6;3395:9;3391:22;3353:70;:::i;:::-;3442:8;;-1:-1:-1;3327:96:1;-1:-1:-1;3530:2:1;3515:18;;3502:32;;-1:-1:-1;3546:16:1;;;3543:36;;;3575:1;3572;3565:12;3543:36;;3614:72;3678:7;3667:8;3656:9;3652:24;3614:72;:::i;:::-;2973:773;;;;-1:-1:-1;3705:8:1;-1:-1:-1;;;;2973:773:1:o;3959:260::-;4027:6;4035;4088:2;4076:9;4067:7;4063:23;4059:32;4056:52;;;4104:1;4101;4094:12;4056:52;4127:29;4146:9;4127:29;:::i;:::-;4117:39;;4175:38;4209:2;4198:9;4194:18;4175:38;:::i;:::-;4165:48;;3959:260;;;;;:::o;4912:127::-;4973:10;4968:3;4964:20;4961:1;4954:31;5004:4;5001:1;4994:15;5028:4;5025:1;5018:15;5044:422;5133:1;5176:5;5133:1;5190:270;5211:7;5201:8;5198:21;5190:270;;;5270:4;5266:1;5262:6;5258:17;5252:4;5249:27;5246:53;;;5279:18;;:::i;:::-;5329:7;5319:8;5315:22;5312:55;;;5349:16;;;;5312:55;5428:22;;;;5388:15;;;;5190:270;;;5194:3;5044:422;;;;;:::o;5471:806::-;5520:5;5550:8;5540:80;;-1:-1:-1;5591:1:1;5605:5;;5540:80;5639:4;5629:76;;-1:-1:-1;5676:1:1;5690:5;;5629:76;5721:4;5739:1;5734:59;;;;5807:1;5802:130;;;;5714:218;;5734:59;5764:1;5755:10;;5778:5;;;5802:130;5839:3;5829:8;5826:17;5823:43;;;5846:18;;:::i;:::-;-1:-1:-1;;5902:1:1;5888:16;;5917:5;;5714:218;;6016:2;6006:8;6003:16;5997:3;5991:4;5988:13;5984:36;5978:2;5968:8;5965:16;5960:2;5954:4;5951:12;5947:35;5944:77;5941:159;;;-1:-1:-1;6053:19:1;;;6085:5;;5941:159;6132:34;6157:8;6151:4;6132:34;:::i;:::-;6202:6;6198:1;6194:6;6190:19;6181:7;6178:32;6175:58;;;6213:18;;:::i;:::-;6251:20;;5471:806;-1:-1:-1;;;5471:806:1:o;6282:140::-;6340:5;6369:47;6410:4;6400:8;6396:19;6390:4;6369:47;:::i;6427:168::-;6500:9;;;6531;;6548:15;;;6542:22;;6528:37;6518:71;;6569:18;;:::i;6600:217::-;6640:1;6666;6656:132;;6710:10;6705:3;6701:20;6698:1;6691:31;6745:4;6742:1;6735:15;6773:4;6770:1;6763:15;6656:132;-1:-1:-1;6802:9:1;;6600:217::o;7173:128::-;7240:9;;;7261:11;;;7258:37;;;7275:18;;:::i;8556:607::-;-1:-1:-1;;;;;8915:15:1;;;8897:34;;8962:2;8947:18;;8940:34;;;;9005:2;8990:18;;8983:34;;;;9048:2;9033:18;;9026:34;;;;9097:15;;;9091:3;9076:19;;9069:44;8877:3;9129:19;;9122:35;;;;8846:3;8831:19;;8556:607::o;9168:306::-;9256:6;9264;9272;9325:2;9313:9;9304:7;9300:23;9296:32;9293:52;;;9341:1;9338;9331:12;9293:52;9370:9;9364:16;9354:26;;9420:2;9409:9;9405:18;9399:25;9389:35;;9464:2;9453:9;9449:18;9443:25;9433:35;;9168:306;;;;;:::o;9479:380::-;9558:1;9554:12;;;;9601;;;9622:61;;9676:4;9668:6;9664:17;9654:27;;9622:61;9729:2;9721:6;9718:14;9698:18;9695:38;9692:161;;9775:10;9770:3;9766:20;9763:1;9756:31;9810:4;9807:1;9800:15;9838:4;9835:1;9828:15;9692:161;;9479:380;;;:::o;9864:356::-;10066:2;10048:21;;;10085:18;;;10078:30;10144:34;10139:2;10124:18;;10117:62;10211:2;10196:18;;9864:356::o;10225:127::-;10286:10;10281:3;10277:20;10274:1;10267:31;10317:4;10314:1;10307:15;10341:4;10338:1;10331:15;10357:135;10396:3;10417:17;;;10414:43;;10437:18;;:::i;:::-;-1:-1:-1;10484:1:1;10473:13;;10357:135::o;10906:125::-;10971:9;;;10992:10;;;10989:36;;;11005:18;;:::i;13238:401::-;13440:2;13422:21;;;13479:2;13459:18;;;13452:30;13518:34;13513:2;13498:18;;13491:62;-1:-1:-1;;;13584:2:1;13569:18;;13562:35;13629:3;13614:19;;13238:401::o;13644:399::-;13846:2;13828:21;;;13885:2;13865:18;;;13858:30;13924:34;13919:2;13904:18;;13897:62;-1:-1:-1;;;13990:2:1;13975:18;;13968:33;14033:3;14018:19;;13644:399::o

Swarm Source

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