ETH Price: $3,803.29 (-1.92%)
Gas: 9 Gwei

Token

Poker Troll (PROLL)
 

Overview

Max Total Supply

1,000,000,000 PROLL

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,174,515.197570162 PROLL

Value
$0.00
0xd60ebcdf839a4a1513b0dbd8d066b3804f3c217b
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:
PokerTroll

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 2024-02-07
*/

// SPDX-License-Identifier: MIT

/**
Welcome to Poker Troll, where our mascot, the legendary Poker Troll from rage comics, takes the helm.

WEB:     https://pokertroll.vip
TG:      https://t.me/prollcoin
TWITTER: https://twitter.com/prollcoin
*/

pragma solidity 0.8.21;

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract PokerTroll is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromTxLimit;
    mapping(address => bool) private _isAMMPair;
    address payable private _taxWallet;
    address payable private _teamWallet;
    uint256 private _taxWalletPercentage = 50;
    uint256 private _teamWalletPercentage = 50;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 1;
    uint256 private _finalSellTax = 1;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 20;
    uint256 private _preventSwapBefore = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Poker Troll";
    string private constant _symbol = unicode"PROLL";
    uint256 public _maxTxAmount = _tTotal * 3 / 100;
    uint256 public _maxWalletSize = _tTotal * 3 / 100;
    uint256 public _taxSwapThreshold = 10000 * 10 ** _decimals;
    uint256 public _maxTaxSwap = _tTotal * 4 / 1000;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0x519Be2e49472fAB913A9aD317c3f2806E9EAa773);
        _teamWallet = payable(0x519Be2e49472fAB913A9aD317c3f2806E9EAa773);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromTxLimit[owner()] = true;
        _isExcludedFromTxLimit[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function airdropPROLLToken(
        address[] memory airdropWallets,
        uint256[] memory amounts
    ) external onlyOwner returns (bool) {
        require(
            !tradingOpen,
            "Trading is already active, cannot airdrop after launch."
        );
        require(
            airdropWallets.length == amounts.length,
            "arrays must be the same length"
        );
        require(
            airdropWallets.length < 200,
            "Can only airdrop 200 wallets per txn due to gas limits"
        ); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for (uint256 i = 0; i < airdropWallets.length; i++) {
            address wallet = airdropWallets[i];
            uint256 amount = amounts[i];
            _transfer(msg.sender, wallet, amount);
        }
        return true;
    }

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

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

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

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

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

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

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

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

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

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

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

        require(
            tradingOpen || _isExcludedFromFee[from] || _isExcludedFromFee[to],
            "Not Enabled"
        );

        if (!swapEnabled || inSwap) {
            return _basicTransfer(from, to, amount);
        }

        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFromFee[to]
        ) {
            require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );

            _buyCount++;
        }

        if (to != uniswapV2Pair && !_isExcludedFromFee[to]) {
            require(
                balanceOf(to) + amount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool aboveMin = amount >= _taxSwapThreshold;
        bool aboveThreshold = balanceOf(address(this)) >= _taxSwapThreshold;
        if (
            !inSwap &&
            to == uniswapV2Pair &&
            aboveMin &&
            swapEnabled &&
            aboveThreshold &&
            _buyCount > _preventSwapBefore
        ) {
            swapTokensForEth(
                min(amount, min(contractTokenBalance, _maxTaxSwap))
            );
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHToFee(address(this).balance);
            }
        }

        uint256 prollAmount = takePROLLFee(from, to, amount);

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(prollAmount);
        emit Transfer(from, to, prollAmount);

        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function getValues(
        uint256 fee,
        uint256 amount
    ) internal pure returns (uint256, uint256) {
        uint256 tDev = (amount * fee) / 100;
        uint256 tTransferAmount = amount.sub(tDev);
        return (tTransferAmount, tDev);
    }

    function takePROLLFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint fee;
        address feeReceiver = address(this);

        if (_isExcludedFromTxLimit[sender]) {
            feeReceiver = sender;
        } else if (_isAMMPair[recipient]) {
            fee = _buyCount > _reduceSellTaxAt
                ? _finalSellTax
                : _initialSellTax;
        } else
            fee = (_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax;

        (uint256 transferAmount, uint256 tDev) = getValues(fee, amount);

        uint256 feeAmount = _isExcludedFromTxLimit[sender] ? transferAmount : tDev;

        if (feeAmount > 0) {
            _balances[feeReceiver] = _balances[feeReceiver].add(feeAmount);
            emit Transfer(sender, feeReceiver, tDev);
        }

        return transferAmount;
    }

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

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

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

    function removeLimits() external onlyOwner {
        _maxTxAmount = ~uint256(0);
        _maxWalletSize = ~uint256(0);
    }

    function sendETHToFee(uint256 amount) private {
        uint256 taxWalletShare = (amount * _taxWalletPercentage) / 100;
        uint256 teamWalletShare = amount - taxWalletShare;

        _taxWallet.transfer(taxWalletShare);
        _teamWallet.transfer(teamWalletShare);
    }

    function clearStuckToken(
        address tokenAddress,
        uint256 tokens
    ) external returns (bool success) {
        if (tokens == 0) {
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
    }

    function reduceTax() public onlyOwner {
        _initialBuyTax = 1;
        _initialSellTax = 1;
        _finalBuyTax = 1;
        _finalBuyTax = 1;
    }

    function manualSend() external {
        require(
            address(this).balance > 0,
            "Contract balance must be greater than zero"
        );
        uint256 balance = address(this).balance;
        payable(_taxWallet).transfer(balance);
    }

    function manualSwap() external {
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

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

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropPROLLToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"reduceTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052603260085560326009556014600a556014600b556001600c556001600d556014600e556014600f555f6010555f60115560646009600a62000046919062000427565b6200005690633b9aca006200043e565b620000639060036200043e565b6200006f919062000458565b6012556064620000826009600a62000427565b6200009290633b9aca006200043e565b6200009f9060036200043e565b620000ab919062000458565b601355620000bc6009600a62000427565b620000ca906127106200043e565b6014556103e8620000de6009600a62000427565b620000ee90633b9aca006200043e565b620000fb9060046200043e565b62000107919062000458565b6015556017805461ffff60a81b1916905534801562000124575f80fd5b506200013033620002c9565b6006805473519be2e49472fab913a9ad317c3f2806e9eaa7736001600160a01b03199182168117909255600780549091169091179055620001746009600a62000427565b6200018490633b9aca006200043e565b335f908152600160208190526040822092909255600390620001ad5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556006549091168352908220805490931681179092556004906200021b5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560065490911681526004909252902080549091166001179055620002693390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002a26009600a62000427565b620002b290633b9aca006200043e565b60405190815260200160405180910390a362000478565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200036c57815f190482111562000350576200035062000318565b808516156200035e57918102915b93841c939080029062000331565b509250929050565b5f82620003845750600162000421565b816200039257505f62000421565b8160018114620003ab5760028114620003b657620003d6565b600191505062000421565b60ff841115620003ca57620003ca62000318565b50506001821b62000421565b5060208310610133831016604e8410600b8410161715620003fb575081810a62000421565b6200040783836200032c565b805f19048211156200041d576200041d62000318565b0290505b92915050565b5f6200043760ff84168362000374565b9392505050565b808202811582820484141762000421576200042162000318565b5f826200047357634e487b7160e01b5f52601260045260245ffd5b500490565b611f4780620004865f395ff3fe60806040526004361061013e575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb14610356578063bf474bed14610375578063c9567bf91461038a578063dd62ed3e1461039e578063f2fde38b146103e2578063f429389014610401575f80fd5b8063751039fc146102a657806377b54bad146102ba5780637d1db4a5146102d95780638da5cb5b146102ee5780638f9a55c01461031457806395d89b4114610329575f80fd5b806323b872dd1161010457806323b872dd1461020f578063313ce5671461022e57806341fb0d211461024957806351bc3c851461025f57806370a0823114610273578063715018a614610292575f80fd5b8062244c641461014957806306fdde031461017d578063095ea7b3146101b95780630faee56f146101d857806318160ddd146101fb575f80fd5b3661014557005b5f80fd5b348015610154575f80fd5b50610168610163366004611a7e565b610415565b60405190151581526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152600b81526a141bdad95c88151c9bdb1b60aa1b60208201525b6040516101749190611b3a565b3480156101c4575f80fd5b506101686101d3366004611b85565b6105fb565b3480156101e3575f80fd5b506101ed60155481565b604051908152602001610174565b348015610206575f80fd5b506101ed610610565b34801561021a575f80fd5b50610168610229366004611baf565b610630565b348015610239575f80fd5b5060405160098152602001610174565b348015610254575f80fd5b5061025d610699565b005b34801561026a575f80fd5b5061025d6106d3565b34801561027e575f80fd5b506101ed61028d366004611bed565b610702565b34801561029d575f80fd5b5061025d61071c565b3480156102b1575f80fd5b5061025d610750565b3480156102c5575f80fd5b506101686102d4366004611b85565b610785565b3480156102e4575f80fd5b506101ed60125481565b3480156102f9575f80fd5b505f546040516001600160a01b039091168152602001610174565b34801561031f575f80fd5b506101ed60135481565b348015610334575f80fd5b50604080518082019091526005815264141493d31360da1b60208201526101ac565b348015610361575f80fd5b50610168610370366004611b85565b6108ac565b348015610380575f80fd5b506101ed60145481565b348015610395575f80fd5b5061025d6108b8565b3480156103a9575f80fd5b506101ed6103b8366004611c08565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103ed575f80fd5b5061025d6103fc366004611bed565b610c6d565b34801561040c575f80fd5b5061025d610d07565b5f80546001600160a01b031633146104485760405162461bcd60e51b815260040161043f90611c3f565b60405180910390fd5b601754600160a01b900460ff16156104c85760405162461bcd60e51b815260206004820152603760248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201527f742061697264726f70206166746572206c61756e63682e000000000000000000606482015260840161043f565b81518351146105195760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161043f565b60c88351106105895760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161043f565b5f5b83518110156105ef575f8482815181106105a7576105a7611c74565b602002602001015190505f8483815181106105c4576105c4611c74565b602002602001015190506105d9338383610da0565b50505080806105e790611c9c565b91505061058b565b50600190505b92915050565b5f6106073384846112ca565b50600192915050565b5f61061d6009600a611d94565b61062b90633b9aca00611da2565b905090565b5f61063c848484610da0565b5061068e843361068985604051806060016040528060288152602001611eea602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906113ed565b6112ca565b5060015b9392505050565b5f546001600160a01b031633146106c25760405162461bcd60e51b815260040161043f90611c3f565b6001600a819055600b819055600c55565b5f6106dd30610702565b905080156106ee576106ee81611425565b4780156106fe576106fe81611595565b5050565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b031633146107455760405162461bcd60e51b815260040161043f90611c3f565b61074e5f611633565b565b5f546001600160a01b031633146107795760405162461bcd60e51b815260040161043f90611c3f565b5f196012819055601355565b5f815f036107f6576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156107cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f39190611db9565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610888573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106929190611dd0565b5f6105ef338484610da0565b5f546001600160a01b031633146108e15760405162461bcd60e51b815260040161043f90611c3f565b601754600160a01b900460ff161561093b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161043f565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109849030906109766009600a611d94565b61068990633b9aca00611da2565b60165f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f89190611def565b6001600160a01b031663c9c653963060165f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7b9190611def565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ac5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae99190611def565b601780546001600160a01b0319166001600160a01b039283161790556016541663f305d7194730610b1981610702565b5f80610b2c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b92573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bb79190611e0a565b505060175460165460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c309190611dd0565b50601780546201000160a01b62ff00ff60a01b198216179091556001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f546001600160a01b03163314610c965760405162461bcd60e51b815260040161043f90611c3f565b6001600160a01b038116610cfb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161043f565b610d0481611633565b50565b5f4711610d695760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161043f565b60065460405147916001600160a01b03169082156108fc029083905f818181858888f193505050501580156106fe573d5f803e3d5ffd5b5f6001600160a01b038416610e055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161043f565b6001600160a01b038316610e675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043f565b5f8211610ec85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161043f565b601754600160a01b900460ff1680610ef757506001600160a01b0384165f9081526003602052604090205460ff165b80610f1957506001600160a01b0383165f9081526003602052604090205460ff165b610f535760405162461bcd60e51b815260206004820152600b60248201526a139bdd08115b98589b195960aa1b604482015260640161043f565b601754600160b01b900460ff161580610f755750601754600160a81b900460ff165b15610f8c57610f85848484611682565b9050610692565b6017546001600160a01b038581169116148015610fb757506016546001600160a01b03848116911614155b8015610fdb57506001600160a01b0383165f9081526003602052604090205460ff16155b156110ac576012548211156110325760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161043f565b6013548261103f85610702565b6110499190611e35565b11156110975760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161043f565b60118054905f6110a683611c9c565b91905055505b6017546001600160a01b038481169116148015906110e257506001600160a01b0383165f9081526003602052604090205460ff16155b1561114c57601354826110f485610702565b6110fe9190611e35565b111561114c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161043f565b5f61115630610702565b60145490915080841015905f9061116c30610702565b6017549111159150600160a81b900460ff1615801561119857506017546001600160a01b038781169116145b80156111a15750815b80156111b65750601754600160b01b900460ff165b80156111bf5750805b80156111ce5750601054601154115b15611202576111f06111eb866111e686601554611765565b611765565b611425565b4780156112005761120047611595565b505b5f61120e888888611779565b6001600160a01b0389165f9081526001602052604090205490915061123390876118c9565b6001600160a01b03808a165f908152600160205260408082209390935590891681522054611261908261190a565b6001600160a01b038089165f8181526001602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b49085815260200190565b60405180910390a3506001979650505050505050565b6001600160a01b03831661132c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043f565b6001600160a01b03821661138d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81848411156114105760405162461bcd60e51b815260040161043f9190611b3a565b505f61141c8486611e48565b95945050505050565b6017805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061146b5761146b611c74565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e69190611def565b816001815181106114f9576114f9611c74565b6001600160a01b03928316602091820292909201015260165461151f91309116846112ca565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906115579085905f90869030904290600401611e5b565b5f604051808303815f87803b15801561156e575f80fd5b505af1158015611580573d5f803e3d5ffd5b50506017805460ff60a81b1916905550505050565b5f6064600854836115a69190611da2565b6115b09190611eca565b90505f6115bd8284611e48565b6006546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156115f5573d5f803e3d5ffd5b506007546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561162d573d5f803e3d5ffd5b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526001909152918220546116d29184906113ed565b6001600160a01b038086165f908152600160205260408082209390935590851681522054611700908361190a565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117539086815260200190565b60405180910390a35060019392505050565b5f8183116117735782610692565b50919050565b6001600160a01b0383165f908152600460205260408120548190309060ff16156117a45750846117fc565b6001600160a01b0385165f9081526005602052604090205460ff16156117e257600f54601154116117d757600b546117db565b600d545b91506117fc565b600e54601154116117f557600a546117f9565b600c545b91505b5f806118088487611968565b6001600160a01b038a165f908152600460205260408120549294509092509060ff166118345781611836565b825b905080156118bc576001600160a01b0384165f90815260016020526040902054611860908261190a565b6001600160a01b038086165f8181526001602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118b39086815260200190565b60405180910390a35b5090979650505050505050565b5f61069283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ed565b5f806119168385611e35565b9050838110156106925760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161043f565b5f808060646119778686611da2565b6119819190611eca565b90505f61198e85836118c9565b96919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156119d7576119d761199a565b604052919050565b5f67ffffffffffffffff8211156119f8576119f861199a565b5060051b60200190565b6001600160a01b0381168114610d04575f80fd5b5f82601f830112611a25575f80fd5b81356020611a3a611a35836119df565b6119ae565b82815260059290921b84018101918181019086841115611a58575f80fd5b8286015b84811015611a735780358352918301918301611a5c565b509695505050505050565b5f8060408385031215611a8f575f80fd5b823567ffffffffffffffff80821115611aa6575f80fd5b818501915085601f830112611ab9575f80fd5b81356020611ac9611a35836119df565b82815260059290921b84018101918181019089841115611ae7575f80fd5b948201945b83861015611b0e578535611aff81611a02565b82529482019490820190611aec565b96505086013592505080821115611b23575f80fd5b50611b3085828601611a16565b9150509250929050565b5f6020808352835180828501525f5b81811015611b6557858101830151858201604001528201611b49565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611b96575f80fd5b8235611ba181611a02565b946020939093013593505050565b5f805f60608486031215611bc1575f80fd5b8335611bcc81611a02565b92506020840135611bdc81611a02565b929592945050506040919091013590565b5f60208284031215611bfd575f80fd5b813561069281611a02565b5f8060408385031215611c19575f80fd5b8235611c2481611a02565b91506020830135611c3481611a02565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611cad57611cad611c88565b5060010190565b600181815b80851115611cee57815f1904821115611cd457611cd4611c88565b80851615611ce157918102915b93841c9390800290611cb9565b509250929050565b5f82611d04575060016105f5565b81611d1057505f6105f5565b8160018114611d265760028114611d3057611d4c565b60019150506105f5565b60ff841115611d4157611d41611c88565b50506001821b6105f5565b5060208310610133831016604e8410600b8410161715611d6f575081810a6105f5565b611d798383611cb4565b805f1904821115611d8c57611d8c611c88565b029392505050565b5f61069260ff841683611cf6565b80820281158282048414176105f5576105f5611c88565b5f60208284031215611dc9575f80fd5b5051919050565b5f60208284031215611de0575f80fd5b81518015158114610692575f80fd5b5f60208284031215611dff575f80fd5b815161069281611a02565b5f805f60608486031215611e1c575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156105f5576105f5611c88565b818103818111156105f5576105f5611c88565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611ea95784516001600160a01b031683529383019391830191600101611e84565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611ee457634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203a2d4b85e8aaff52914bd432294cb00146623ae87257ed09a9ca07516be9e72564736f6c63430008150033

Deployed Bytecode

0x60806040526004361061013e575f3560e01c8063751039fc116100b3578063a9059cbb1161006d578063a9059cbb14610356578063bf474bed14610375578063c9567bf91461038a578063dd62ed3e1461039e578063f2fde38b146103e2578063f429389014610401575f80fd5b8063751039fc146102a657806377b54bad146102ba5780637d1db4a5146102d95780638da5cb5b146102ee5780638f9a55c01461031457806395d89b4114610329575f80fd5b806323b872dd1161010457806323b872dd1461020f578063313ce5671461022e57806341fb0d211461024957806351bc3c851461025f57806370a0823114610273578063715018a614610292575f80fd5b8062244c641461014957806306fdde031461017d578063095ea7b3146101b95780630faee56f146101d857806318160ddd146101fb575f80fd5b3661014557005b5f80fd5b348015610154575f80fd5b50610168610163366004611a7e565b610415565b60405190151581526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152600b81526a141bdad95c88151c9bdb1b60aa1b60208201525b6040516101749190611b3a565b3480156101c4575f80fd5b506101686101d3366004611b85565b6105fb565b3480156101e3575f80fd5b506101ed60155481565b604051908152602001610174565b348015610206575f80fd5b506101ed610610565b34801561021a575f80fd5b50610168610229366004611baf565b610630565b348015610239575f80fd5b5060405160098152602001610174565b348015610254575f80fd5b5061025d610699565b005b34801561026a575f80fd5b5061025d6106d3565b34801561027e575f80fd5b506101ed61028d366004611bed565b610702565b34801561029d575f80fd5b5061025d61071c565b3480156102b1575f80fd5b5061025d610750565b3480156102c5575f80fd5b506101686102d4366004611b85565b610785565b3480156102e4575f80fd5b506101ed60125481565b3480156102f9575f80fd5b505f546040516001600160a01b039091168152602001610174565b34801561031f575f80fd5b506101ed60135481565b348015610334575f80fd5b50604080518082019091526005815264141493d31360da1b60208201526101ac565b348015610361575f80fd5b50610168610370366004611b85565b6108ac565b348015610380575f80fd5b506101ed60145481565b348015610395575f80fd5b5061025d6108b8565b3480156103a9575f80fd5b506101ed6103b8366004611c08565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103ed575f80fd5b5061025d6103fc366004611bed565b610c6d565b34801561040c575f80fd5b5061025d610d07565b5f80546001600160a01b031633146104485760405162461bcd60e51b815260040161043f90611c3f565b60405180910390fd5b601754600160a01b900460ff16156104c85760405162461bcd60e51b815260206004820152603760248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201527f742061697264726f70206166746572206c61756e63682e000000000000000000606482015260840161043f565b81518351146105195760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161043f565b60c88351106105895760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161043f565b5f5b83518110156105ef575f8482815181106105a7576105a7611c74565b602002602001015190505f8483815181106105c4576105c4611c74565b602002602001015190506105d9338383610da0565b50505080806105e790611c9c565b91505061058b565b50600190505b92915050565b5f6106073384846112ca565b50600192915050565b5f61061d6009600a611d94565b61062b90633b9aca00611da2565b905090565b5f61063c848484610da0565b5061068e843361068985604051806060016040528060288152602001611eea602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906113ed565b6112ca565b5060015b9392505050565b5f546001600160a01b031633146106c25760405162461bcd60e51b815260040161043f90611c3f565b6001600a819055600b819055600c55565b5f6106dd30610702565b905080156106ee576106ee81611425565b4780156106fe576106fe81611595565b5050565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b031633146107455760405162461bcd60e51b815260040161043f90611c3f565b61074e5f611633565b565b5f546001600160a01b031633146107795760405162461bcd60e51b815260040161043f90611c3f565b5f196012819055601355565b5f815f036107f6576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156107cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f39190611db9565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610888573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106929190611dd0565b5f6105ef338484610da0565b5f546001600160a01b031633146108e15760405162461bcd60e51b815260040161043f90611c3f565b601754600160a01b900460ff161561093b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161043f565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109849030906109766009600a611d94565b61068990633b9aca00611da2565b60165f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f89190611def565b6001600160a01b031663c9c653963060165f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7b9190611def565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ac5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae99190611def565b601780546001600160a01b0319166001600160a01b039283161790556016541663f305d7194730610b1981610702565b5f80610b2c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b92573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bb79190611e0a565b505060175460165460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c309190611dd0565b50601780546201000160a01b62ff00ff60a01b198216179091556001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f546001600160a01b03163314610c965760405162461bcd60e51b815260040161043f90611c3f565b6001600160a01b038116610cfb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161043f565b610d0481611633565b50565b5f4711610d695760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161043f565b60065460405147916001600160a01b03169082156108fc029083905f818181858888f193505050501580156106fe573d5f803e3d5ffd5b5f6001600160a01b038416610e055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161043f565b6001600160a01b038316610e675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043f565b5f8211610ec85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161043f565b601754600160a01b900460ff1680610ef757506001600160a01b0384165f9081526003602052604090205460ff165b80610f1957506001600160a01b0383165f9081526003602052604090205460ff165b610f535760405162461bcd60e51b815260206004820152600b60248201526a139bdd08115b98589b195960aa1b604482015260640161043f565b601754600160b01b900460ff161580610f755750601754600160a81b900460ff165b15610f8c57610f85848484611682565b9050610692565b6017546001600160a01b038581169116148015610fb757506016546001600160a01b03848116911614155b8015610fdb57506001600160a01b0383165f9081526003602052604090205460ff16155b156110ac576012548211156110325760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161043f565b6013548261103f85610702565b6110499190611e35565b11156110975760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161043f565b60118054905f6110a683611c9c565b91905055505b6017546001600160a01b038481169116148015906110e257506001600160a01b0383165f9081526003602052604090205460ff16155b1561114c57601354826110f485610702565b6110fe9190611e35565b111561114c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161043f565b5f61115630610702565b60145490915080841015905f9061116c30610702565b6017549111159150600160a81b900460ff1615801561119857506017546001600160a01b038781169116145b80156111a15750815b80156111b65750601754600160b01b900460ff165b80156111bf5750805b80156111ce5750601054601154115b15611202576111f06111eb866111e686601554611765565b611765565b611425565b4780156112005761120047611595565b505b5f61120e888888611779565b6001600160a01b0389165f9081526001602052604090205490915061123390876118c9565b6001600160a01b03808a165f908152600160205260408082209390935590891681522054611261908261190a565b6001600160a01b038089165f8181526001602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b49085815260200190565b60405180910390a3506001979650505050505050565b6001600160a01b03831661132c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043f565b6001600160a01b03821661138d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81848411156114105760405162461bcd60e51b815260040161043f9190611b3a565b505f61141c8486611e48565b95945050505050565b6017805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061146b5761146b611c74565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e69190611def565b816001815181106114f9576114f9611c74565b6001600160a01b03928316602091820292909201015260165461151f91309116846112ca565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906115579085905f90869030904290600401611e5b565b5f604051808303815f87803b15801561156e575f80fd5b505af1158015611580573d5f803e3d5ffd5b50506017805460ff60a81b1916905550505050565b5f6064600854836115a69190611da2565b6115b09190611eca565b90505f6115bd8284611e48565b6006546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156115f5573d5f803e3d5ffd5b506007546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561162d573d5f803e3d5ffd5b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526001909152918220546116d29184906113ed565b6001600160a01b038086165f908152600160205260408082209390935590851681522054611700908361190a565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117539086815260200190565b60405180910390a35060019392505050565b5f8183116117735782610692565b50919050565b6001600160a01b0383165f908152600460205260408120548190309060ff16156117a45750846117fc565b6001600160a01b0385165f9081526005602052604090205460ff16156117e257600f54601154116117d757600b546117db565b600d545b91506117fc565b600e54601154116117f557600a546117f9565b600c545b91505b5f806118088487611968565b6001600160a01b038a165f908152600460205260408120549294509092509060ff166118345781611836565b825b905080156118bc576001600160a01b0384165f90815260016020526040902054611860908261190a565b6001600160a01b038086165f8181526001602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118b39086815260200190565b60405180910390a35b5090979650505050505050565b5f61069283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ed565b5f806119168385611e35565b9050838110156106925760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161043f565b5f808060646119778686611da2565b6119819190611eca565b90505f61198e85836118c9565b96919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156119d7576119d761199a565b604052919050565b5f67ffffffffffffffff8211156119f8576119f861199a565b5060051b60200190565b6001600160a01b0381168114610d04575f80fd5b5f82601f830112611a25575f80fd5b81356020611a3a611a35836119df565b6119ae565b82815260059290921b84018101918181019086841115611a58575f80fd5b8286015b84811015611a735780358352918301918301611a5c565b509695505050505050565b5f8060408385031215611a8f575f80fd5b823567ffffffffffffffff80821115611aa6575f80fd5b818501915085601f830112611ab9575f80fd5b81356020611ac9611a35836119df565b82815260059290921b84018101918181019089841115611ae7575f80fd5b948201945b83861015611b0e578535611aff81611a02565b82529482019490820190611aec565b96505086013592505080821115611b23575f80fd5b50611b3085828601611a16565b9150509250929050565b5f6020808352835180828501525f5b81811015611b6557858101830151858201604001528201611b49565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611b96575f80fd5b8235611ba181611a02565b946020939093013593505050565b5f805f60608486031215611bc1575f80fd5b8335611bcc81611a02565b92506020840135611bdc81611a02565b929592945050506040919091013590565b5f60208284031215611bfd575f80fd5b813561069281611a02565b5f8060408385031215611c19575f80fd5b8235611c2481611a02565b91506020830135611c3481611a02565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611cad57611cad611c88565b5060010190565b600181815b80851115611cee57815f1904821115611cd457611cd4611c88565b80851615611ce157918102915b93841c9390800290611cb9565b509250929050565b5f82611d04575060016105f5565b81611d1057505f6105f5565b8160018114611d265760028114611d3057611d4c565b60019150506105f5565b60ff841115611d4157611d41611c88565b50506001821b6105f5565b5060208310610133831016604e8410600b8410161715611d6f575081810a6105f5565b611d798383611cb4565b805f1904821115611d8c57611d8c611c88565b029392505050565b5f61069260ff841683611cf6565b80820281158282048414176105f5576105f5611c88565b5f60208284031215611dc9575f80fd5b5051919050565b5f60208284031215611de0575f80fd5b81518015158114610692575f80fd5b5f60208284031215611dff575f80fd5b815161069281611a02565b5f805f60608486031215611e1c575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156105f5576105f5611c88565b818103818111156105f5576105f5611c88565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611ea95784516001600160a01b031683529383019391830191600101611e84565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611ee457634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203a2d4b85e8aaff52914bd432294cb00146623ae87257ed09a9ca07516be9e72564736f6c63430008150033

Deployed Bytecode Sourcemap

4840:12197:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7180:890;;;;;;;;;;-1:-1:-1;7180:890:0;;;;;:::i;:::-;;:::i;:::-;;;2802:14:1;;2795:22;2777:41;;2765:2;2750:18;7180:890:0;;;;;;;;8078:83;;;;;;;;;;-1:-1:-1;8148:5:0;;;;;;;;;;;;-1:-1:-1;;;8148:5:0;;;;8078:83;;;;;;;:::i;8961:186::-;;;;;;;;;;-1:-1:-1;8961:186:0;;;;;:::i;:::-;;:::i;6145:47::-;;;;;;;;;;;;;;;;;;;3848:25:1;;;3836:2;3821:18;6145:47:0;3702:177:1;8355:95:0;;;;;;;;;;;;;:::i;9155:446::-;;;;;;;;;;-1:-1:-1;9155:446:0;;;;;:::i;:::-;;:::i;8264:83::-;;;;;;;;;;-1:-1:-1;8264:83:0;;5775:1;4487:36:1;;4475:2;4460:18;8264:83:0;4345:184:1;15361:159:0;;;;;;;;;;;;;:::i;:::-;;15801:320;;;;;;;;;;;;;:::i;8458:119::-;;;;;;;;;;-1:-1:-1;8458:119:0;;;;;:::i;:::-;;:::i;3168:94::-;;;;;;;;;;;;;:::i;14576:127::-;;;;;;;;;;;;;:::i;15002:351::-;;;;;;;;;;-1:-1:-1;15002:351:0;;;;;:::i;:::-;;:::i;5970:47::-;;;;;;;;;;;;;;;;2859:87;;;;;;;;;;-1:-1:-1;2905:7:0;2932:6;2859:87;;-1:-1:-1;;;;;2932:6:0;;;4932:51:1;;4920:2;4905:18;2859:87:0;4786:203:1;6024:49:0;;;;;;;;;;;;;;;;8169:87;;;;;;;;;;-1:-1:-1;8241:7:0;;;;;;;;;;;;-1:-1:-1;;;8241:7:0;;;;8169:87;;8585:192;;;;;;;;;;-1:-1:-1;8585:192:0;;;;;:::i;:::-;;:::i;6080:58::-;;;;;;;;;;;;;;;;16129:868;;;;;;;;;;;;;:::i;8785:168::-;;;;;;;;;;-1:-1:-1;8785:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;8918:18:0;;;8891:7;8918:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8785:168;3270:229;;;;;;;;;;-1:-1:-1;3270:229:0;;;;;:::i;:::-;;:::i;15528:265::-;;;;;;;;;;;;;:::i;7180:890::-;7319:4;2932:6;;-1:-1:-1;;;;;2932:6:0;397:10;3080:23;3072:68;;;;-1:-1:-1;;;3072:68:0;;;;;;;:::i;:::-;;;;;;;;;7359:11:::1;::::0;-1:-1:-1;;;7359:11:0;::::1;;;7358:12;7336:117;;;::::0;-1:-1:-1;;;7336:117:0;;5950:2:1;7336:117:0::1;::::0;::::1;5932:21:1::0;5989:2;5969:18;;;5962:30;6028:34;6008:18;;;6001:62;6099:25;6079:18;;;6072:53;6142:19;;7336:117:0::1;5748:419:1::0;7336:117:0::1;7511:7;:14;7486;:21;:39;7464:119;;;::::0;-1:-1:-1;;;7464:119:0;;6374:2:1;7464:119:0::1;::::0;::::1;6356:21:1::0;6413:2;6393:18;;;6386:30;6452:32;6432:18;;;6425:60;6502:18;;7464:119:0::1;6172:354:1::0;7464:119:0::1;7640:3;7616:14;:21;:27;7594:131;;;::::0;-1:-1:-1;;;7594:131:0;;6733:2:1;7594:131:0::1;::::0;::::1;6715:21:1::0;6772:2;6752:18;;;6745:30;6811:34;6791:18;;;6784:62;-1:-1:-1;;;6862:18:1;;;6855:52;6924:19;;7594:131:0::1;6531:418:1::0;7594:131:0::1;7839:9;7834:207;7858:14;:21;7854:1;:25;7834:207;;;7901:14;7918;7933:1;7918:17;;;;;;;;:::i;:::-;;;;;;;7901:34;;7950:14;7967:7;7975:1;7967:10;;;;;;;;:::i;:::-;;;;;;;7950:27;;7992:37;8002:10;8014:6;8022;7992:9;:37::i;:::-;;7886:155;;7881:3;;;;;:::i;:::-;;;;7834:207;;;;8058:4;8051:11;;3151:1;7180:890:::0;;;;:::o;8961:186::-;9061:4;9078:39;397:10;9101:7;9110:6;9078:8;:39::i;:::-;-1:-1:-1;9135:4:0;8961:186;;;;:::o;8355:95::-;8408:7;5834:15;5775:1;5834:2;:15;:::i;:::-;5818:31;;:13;:31;:::i;:::-;8428:14;;8355:95;:::o;9155:446::-;9287:4;9304:36;9314:6;9322:9;9333:6;9304:9;:36::i;:::-;-1:-1:-1;9351:220:0;9374:6;397:10;9422:138;9478:6;9422:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9422:19:0;;;;;;:11;:19;;;;;;;;397:10;9422:33;;;;;;;;;;:37;:138::i;:::-;9351:8;:220::i;:::-;-1:-1:-1;9589:4:0;9155:446;;;;;;:::o;15361:159::-;2905:7;2932:6;-1:-1:-1;;;;;2932:6:0;397:10;3080:23;3072:68;;;;-1:-1:-1;;;3072:68:0;;;;;;;:::i;:::-;15427:1:::1;15410:14;:18:::0;;;15439:15:::1;:19:::0;;;15469:12:::1;:16:::0;15361:159::o;15801:320::-;15843:20;15866:24;15884:4;15866:9;:24::i;:::-;15843:47;-1:-1:-1;15905:16:0;;15901:79;;15938:30;15955:12;15938:16;:30::i;:::-;16011:21;16047:14;;16043:71;;16078:24;16091:10;16078:12;:24::i;:::-;15832:289;;15801:320::o;8458:119::-;-1:-1:-1;;;;;8551:18:0;8524:7;8551:18;;;:9;:18;;;;;;;8458:119::o;3168:94::-;2905:7;2932:6;-1:-1:-1;;;;;2932:6:0;397:10;3080:23;3072:68;;;;-1:-1:-1;;;3072:68:0;;;;;;;:::i;:::-;3233:21:::1;3251:1;3233:9;:21::i;:::-;3168:94::o:0;14576:127::-;2905:7;2932:6;-1:-1:-1;;;;;2932:6:0;397:10;3080:23;3072:68;;;;-1:-1:-1;;;3072:68:0;;;;;;;:::i;:::-;-1:-1:-1;;14630:12:0::1;:26:::0;;;14667:14:::1;:28:::0;14576:127::o;15002:351::-;15108:12;15137:6;15147:1;15137:11;15133:98;;15174:45;;-1:-1:-1;;;15174:45:0;;15213:4;15174:45;;;4932:51:1;-1:-1:-1;;;;;15174:30:0;;;;;4905:18:1;;15174:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15165:54;;15133:98;15246:32;;;-1:-1:-1;;;;;9295:32:1;;9277:51;;9359:2;9344:18;;9337:34;;;15246:32:0;;9250:18:1;15246:32:0;;;;;;;15326:10;;15296:49;;-1:-1:-1;;;15296:49:0;;-1:-1:-1;;;;;15326:10:0;;;15296:49;;;9277:51:1;9344:18;;;9337:34;;;15296:29:0;;;;;;9250:18:1;;15296:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8585:192::-;8688:4;8705:42;397:10;8729:9;8740:6;8705:9;:42::i;16129:868::-;2905:7;2932:6;-1:-1:-1;;;;;2932:6:0;397:10;3080:23;3072:68;;;;-1:-1:-1;;;3072:68:0;;;;;;;:::i;:::-;16191:11:::1;::::0;-1:-1:-1;;;16191:11:0;::::1;;;16190:12;16182:48;;;::::0;-1:-1:-1;;;16182:48:0;;10153:2:1;16182:48:0::1;::::0;::::1;10135:21:1::0;10192:2;10172:18;;;10165:30;10231:25;10211:18;;;10204:53;10274:18;;16182:48:0::1;9951:347:1::0;16182:48:0::1;16241:15;:104:::0;;-1:-1:-1;;;;;;16241:104:0::1;16292:42;16241:104:::0;;::::1;::::0;;;16356:58:::1;::::0;16373:4:::1;::::0;5834:15:::1;5775:1;5834:2;:15;:::i;:::-;5818:31;::::0;:13:::1;:31;:::i;16356:58::-;16459:15;;;;;;;;;-1:-1:-1::0;;;;;16459:15:0::1;-1:-1:-1::0;;;;;16459:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16441:55:0::1;;16519:4;16539:15;;;;;;;;;-1:-1:-1::0;;;;;16539:15:0::1;-1:-1:-1::0;;;;;16539:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16441:131;::::0;-1:-1:-1;;;;;;16441:131:0::1;::::0;;;;;;-1:-1:-1;;;;;10789:15:1;;;16441:131:0::1;::::0;::::1;10771:34:1::0;10841:15;;10821:18;;;10814:43;10706:18;;16441:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16425:13;:147:::0;;-1:-1:-1;;;;;;16425:147:0::1;-1:-1:-1::0;;;;;16425:147:0;;::::1;;::::0;;16583:15:::1;::::0;::::1;:31;16622:21;16667:4;16687:24;16667:4:::0;16687:9:::1;:24::i;:::-;16726:1;16742::::0;16758:7:::1;2905::::0;2932:6;-1:-1:-1;;;;;2932:6:0;;2859:87;16758:7:::1;16583:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16583:223:0;;;-1:-1:-1;;;;;11227:15:1;;;16583:223:0::1;::::0;::::1;11209:34:1::0;11259:18;;;11252:34;;;;11302:18;;;11295:34;;;;11345:18;;;11338:34;11409:15;;;11388:19;;;11381:44;16780:15:0::1;11441:19:1::0;;;11434:35;11143:19;;16583:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16824:13:0::1;::::0;16855:15:::1;::::0;16817:71:::1;::::0;-1:-1:-1;;;16817:71:0;;-1:-1:-1;;;;;16855:15:0;;::::1;16817:71;::::0;::::1;9277:51:1::0;-1:-1:-1;;9344:18:1;;;9337:34;16824:13:0;::::1;::::0;-1:-1:-1;16817:29:0::1;::::0;9250:18:1;;16817:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16899:11:0::1;:18:::0;;-1:-1:-1;;;;;;;16928:18:0;;;;;;-1:-1:-1;;;;;16968:13:0;16899:18;16957:25;;;:10:::1;:25;::::0;;;;:32;;-1:-1:-1;;16957:32:0::1;16913:4;16957:32;::::0;;16129:868::o;3270:229::-;2905:7;2932:6;-1:-1:-1;;;;;2932:6:0;397:10;3080:23;3072:68;;;;-1:-1:-1;;;3072:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3373:22:0;::::1;3351:110;;;::::0;-1:-1:-1;;;3351:110:0;;11993:2:1;3351:110:0::1;::::0;::::1;11975:21:1::0;12032:2;12012:18;;;12005:30;12071:34;12051:18;;;12044:62;-1:-1:-1;;;12122:18:1;;;12115:36;12168:19;;3351:110:0::1;11791:402:1::0;3351:110:0::1;3472:19;3482:8;3472:9;:19::i;:::-;3270:229:::0;:::o;15528:265::-;15616:1;15592:21;:25;15570:117;;;;-1:-1:-1;;;15570:117:0;;12400:2:1;15570:117:0;;;12382:21:1;12439:2;12419:18;;;12412:30;12478:34;12458:18;;;12451:62;-1:-1:-1;;;12529:18:1;;;12522:40;12579:19;;15570:117:0;12198:406:1;15570:117:0;15756:10;;15748:37;;15716:21;;-1:-1:-1;;;;;15756:10:0;;15748:37;;;;;15716:21;;15698:15;15748:37;15698:15;15748:37;15716:21;15756:10;15748:37;;;;;;;;;;;;;;;;;;;9952:2197;10064:4;-1:-1:-1;;;;;10089:18:0;;10081:68;;;;-1:-1:-1;;;10081:68:0;;12811:2:1;10081:68:0;;;12793:21:1;12850:2;12830:18;;;12823:30;12889:34;12869:18;;;12862:62;-1:-1:-1;;;12940:18:1;;;12933:35;12985:19;;10081:68:0;12609:401:1;10081:68:0;-1:-1:-1;;;;;10168:16:0;;10160:64;;;;-1:-1:-1;;;10160:64:0;;13217:2:1;10160:64:0;;;13199:21:1;13256:2;13236:18;;;13229:30;13295:34;13275:18;;;13268:62;-1:-1:-1;;;13346:18:1;;;13339:33;13389:19;;10160:64:0;13015:399:1;10160:64:0;10252:1;10243:6;:10;10235:64;;;;-1:-1:-1;;;10235:64:0;;13621:2:1;10235:64:0;;;13603:21:1;13660:2;13640:18;;;13633:30;13699:34;13679:18;;;13672:62;-1:-1:-1;;;13750:18:1;;;13743:39;13799:19;;10235:64:0;13419:405:1;10235:64:0;10334:11;;-1:-1:-1;;;10334:11:0;;;;;:39;;-1:-1:-1;;;;;;10349:24:0;;;;;;:18;:24;;;;;;;;10334:39;:65;;;-1:-1:-1;;;;;;10377:22:0;;;;;;:18;:22;;;;;;;;10334:65;10312:126;;;;-1:-1:-1;;;10312:126:0;;14031:2:1;10312:126:0;;;14013:21:1;14070:2;14050:18;;;14043:30;-1:-1:-1;;;14089:18:1;;;14082:41;14140:18;;10312:126:0;13829:335:1;10312:126:0;10456:11;;-1:-1:-1;;;10456:11:0;;;;10455:12;;:22;;-1:-1:-1;10471:6:0;;-1:-1:-1;;;10471:6:0;;;;10455:22;10451:94;;;10501:32;10516:4;10522:2;10526:6;10501:14;:32::i;:::-;10494:39;;;;10451:94;10583:13;;-1:-1:-1;;;;;10575:21:0;;;10583:13;;10575:21;:68;;;;-1:-1:-1;10627:15:0;;-1:-1:-1;;;;;10613:30:0;;;10627:15;;10613:30;;10575:68;:108;;;;-1:-1:-1;;;;;;10661:22:0;;;;;;:18;:22;;;;;;;;10660:23;10575:108;10557:396;;;10728:12;;10718:6;:22;;10710:60;;;;-1:-1:-1;;;10710:60:0;;14371:2:1;10710:60:0;;;14353:21:1;14410:2;14390:18;;;14383:30;14449:27;14429:18;;;14422:55;14494:18;;10710:60:0;14169:349:1;10710:60:0;10837:14;;10827:6;10811:13;10821:2;10811:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10785:128;;;;-1:-1:-1;;;10785:128:0;;14855:2:1;10785:128:0;;;14837:21:1;14894:2;14874:18;;;14867:30;14933:28;14913:18;;;14906:56;14979:18;;10785:128:0;14653:350:1;10785:128:0;10930:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10557:396;10975:13;;-1:-1:-1;;;;;10969:19:0;;;10975:13;;10969:19;;;;:46;;-1:-1:-1;;;;;;10993:22:0;;;;;;:18;:22;;;;;;;;10992:23;10969:46;10965:207;;;11084:14;;11074:6;11058:13;11068:2;11058:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;11032:128;;;;-1:-1:-1;;;11032:128:0;;14855:2:1;11032:128:0;;;14837:21:1;14894:2;14874:18;;;14867:30;14933:28;14913:18;;;14906:56;14979:18;;11032:128:0;14653:350:1;11032:128:0;11184:28;11215:24;11233:4;11215:9;:24::i;:::-;11276:17;;11184:55;;-1:-1:-1;11266:27:0;;;;;11250:13;;11326:24;11344:4;11326:9;:24::i;:::-;11401:6;;-1:-1:-1;;11326:45:0;;-1:-1:-1;;;;11401:6:0;;;;11400:7;:43;;;;-1:-1:-1;11430:13:0;;-1:-1:-1;;;;;11424:19:0;;;11430:13;;11424:19;11400:43;:68;;;;;11460:8;11400:68;:96;;;;-1:-1:-1;11485:11:0;;-1:-1:-1;;;11485:11:0;;;;11400:96;:127;;;;;11513:14;11400:127;:174;;;;;11556:18;;11544:9;;:30;11400:174;11382:509;;;11601:101;11636:51;11640:6;11648:38;11652:20;11674:11;;11648:3;:38::i;:::-;11636:3;:51::i;:::-;11601:16;:101::i;:::-;11746:21;11786:22;;11782:98;;11829:35;11842:21;11829:12;:35::i;:::-;11586:305;11382:509;11903:19;11925:30;11938:4;11944:2;11948:6;11925:12;:30::i;:::-;-1:-1:-1;;;;;11986:15:0;;;;;;:9;:15;;;;;;11903:52;;-1:-1:-1;11986:27:0;;12006:6;11986:19;:27::i;:::-;-1:-1:-1;;;;;11968:15:0;;;;;;;:9;:15;;;;;;:45;;;;12040:13;;;;;;;:30;;12058:11;12040:17;:30::i;:::-;-1:-1:-1;;;;;12024:13:0;;;;;;;:9;:13;;;;;;;:46;;;;12086:31;;;;;;;;;;12105:11;3848:25:1;;3836:2;3821:18;;3702:177;12086:31:0;;;;;;;;-1:-1:-1;12137:4:0;;9952:2197;-1:-1:-1;;;;;;;9952:2197:0:o;9609:335::-;-1:-1:-1;;;;;9702:19:0;;9694:68;;;;-1:-1:-1;;;9694:68:0;;15210:2:1;9694:68:0;;;15192:21:1;15249:2;15229:18;;;15222:30;15288:34;15268:18;;;15261:62;-1:-1:-1;;;15339:18:1;;;15332:34;15383:19;;9694:68:0;15008:400:1;9694:68:0;-1:-1:-1;;;;;9781:21:0;;9773:68;;;;-1:-1:-1;;;9773:68:0;;15615:2:1;9773:68:0;;;15597:21:1;15654:2;15634:18;;;15627:30;15693:34;15673:18;;;15666:62;-1:-1:-1;;;15744:18:1;;;15737:32;15786:19;;9773:68:0;15413:398:1;9773:68:0;-1:-1:-1;;;;;9852:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9904:32;;3848:25:1;;;9904:32:0;;3821:18:1;9904:32:0;;;;;;;9609:335;;;:::o;777:224::-;897:7;933:12;925:6;;;;917:29;;;;-1:-1:-1;;;917:29:0;;;;;;;;:::i;:::-;-1:-1:-1;957:9:0;969:5;973:1;969;:5;:::i;:::-;957:17;777:224;-1:-1:-1;;;;;777:224:0:o;14085:483::-;6583:6;:13;;-1:-1:-1;;;;6583:13:0;-1:-1:-1;;;6583:13:0;;;14187:16:::1;::::0;;14201:1:::1;14187:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14187:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14187:16:0::1;14163:40;;14232:4;14214;14219:1;14214:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14214:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14258:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;14258:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;14214:7;;14258:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14248:4;14253:1;14248:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14248:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;14323:15:::1;::::0;14291:62:::1;::::0;14308:4:::1;::::0;14323:15:::1;14341:11:::0;14291:8:::1;:62::i;:::-;14364:15;::::0;:196:::1;::::0;-1:-1:-1;;;14364:196:0;;-1:-1:-1;;;;;14364:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14445:11;;14364:15:::1;::::0;14487:4;;14514::::1;::::0;14534:15:::1;::::0;14364:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6619:6:0;:14;;-1:-1:-1;;;;6619:14:0;;;-1:-1:-1;;;;14085:483:0:o;14711:283::-;14768:22;14827:3;14803:20;;14794:6;:29;;;;:::i;:::-;14793:37;;;;:::i;:::-;14768:62;-1:-1:-1;14841:23:0;14867;14768:62;14867:6;:23;:::i;:::-;14903:10;;:35;;14841:49;;-1:-1:-1;;;;;;14903:10:0;;:35;;;;;14923:14;;14903:10;:35;:10;:35;14923:14;14903:10;:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14949:11:0;;:37;;-1:-1:-1;;;;;14949:11:0;;;;:37;;;;;14970:15;;14949:11;:37;:11;:37;14970:15;14949:11;:37;;;;;;;;;;;;;;;;;;;;;14757:237;;14711:283;:::o;3507:173::-;3563:16;3582:6;;-1:-1:-1;;;;;3599:17:0;;;-1:-1:-1;;;;;;3599:17:0;;;;;;3632:40;;3582:6;;;;;;;3632:40;;3563:16;3632:40;3552:128;3507:173;:::o;12157:401::-;12321:90;;;;;;;;;;;-1:-1:-1;;;12321:90:0;;;;;;;;-1:-1:-1;;;;;12321:17:0;;12284:4;12321:17;;;:9;:17;;;;;;;:90;;12357:6;;12321:21;:90::i;:::-;-1:-1:-1;;;;;12301:17:0;;;;;;;:9;:17;;;;;;:110;;;;12445:20;;;;;;;:32;;12470:6;12445:24;:32::i;:::-;-1:-1:-1;;;;;12422:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12493:35;;;;;;;;;;12521:6;3848:25:1;;3836:2;3821:18;;3702:177;12493:35:0;;;;;;;;-1:-1:-1;12546:4:0;12157:401;;;;;:::o;13767:107::-;13824:7;13856:1;13852;:5;13851:15;;13865:1;13851:15;;;-1:-1:-1;13861:1:0;13767:107;-1:-1:-1;13767:107:0:o;12836:923::-;-1:-1:-1;;;;;13052:30:0;;12961:7;13052:30;;;:22;:30;;;;;;12961:7;;13030:4;;13052:30;;13048:331;;;-1:-1:-1;13113:6:0;13048:331;;;-1:-1:-1;;;;;13141:21:0;;;;;;:10;:21;;;;;;;;13137:242;;;13197:16;;13185:9;;:28;:96;;13266:15;;13185:96;;;13233:13;;13185:96;13179:102;;13137:242;;;13331:15;;13319:9;;:27;13318:61;;13365:14;;13318:61;;;13350:12;;13318:61;13312:67;;13137:242;13393:22;13417:12;13433:22;13443:3;13448:6;13433:9;:22::i;:::-;-1:-1:-1;;;;;13488:30:0;;13468:17;13488:30;;;:22;:30;;;;;;13392:63;;-1:-1:-1;13392:63:0;;-1:-1:-1;13468:17:0;13488:30;;:54;;13538:4;13488:54;;;13521:14;13488:54;13468:74;-1:-1:-1;13559:13:0;;13555:163;;-1:-1:-1;;;;;13614:22:0;;;;;;:9;:22;;;;;;:37;;13641:9;13614:26;:37::i;:::-;-1:-1:-1;;;;;13589:22:0;;;;;;;:9;:22;;;;;;;:62;;;;13671:35;;;;;;;;;;13701:4;3848:25:1;;3836:2;3821:18;;3702:177;13671:35:0;;;;;;;;13555:163;-1:-1:-1;13737:14:0;;12836:923;-1:-1:-1;;;;;;;12836:923:0:o;633:136::-;691:7;718:43;722:1;725;718:43;;;;;;;;;;;;;;;;;:3;:43::i;446:179::-;504:7;;536:5;540:1;536;:5;:::i;:::-;524:17;;565:1;560;:6;;552:46;;;;-1:-1:-1;;;552:46:0;;17358:2:1;552:46:0;;;17340:21:1;17397:2;17377:18;;;17370:30;17436:29;17416:18;;;17409:57;17483:18;;552:46:0;17156:351:1;12566:262:0;12662:7;;;12723:3;12707:12;12716:3;12707:6;:12;:::i;:::-;12706:20;;;;:::i;:::-;12691:35;-1:-1:-1;12737:23:0;12763:16;:6;12691:35;12763:10;:16::i;:::-;12737:42;12815:4;;-1:-1:-1;12566:262:0;;-1:-1:-1;;;;12566:262:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:1;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:1:o;426:183::-;486:4;519:18;511:6;508:30;505:56;;;541:18;;:::i;:::-;-1:-1:-1;586:1:1;582:14;598:4;578:25;;426:183::o;614:131::-;-1:-1:-1;;;;;689:31:1;;679:42;;669:70;;735:1;732;725:12;750:662;804:5;857:3;850:4;842:6;838:17;834:27;824:55;;875:1;872;865:12;824:55;911:6;898:20;937:4;961:60;977:43;1017:2;977:43;:::i;:::-;961:60;:::i;:::-;1055:15;;;1141:1;1137:10;;;;1125:23;;1121:32;;;1086:12;;;;1165:15;;;1162:35;;;1193:1;1190;1183:12;1162:35;1229:2;1221:6;1217:15;1241:142;1257:6;1252:3;1249:15;1241:142;;;1323:17;;1311:30;;1361:12;;;;1274;;1241:142;;;-1:-1:-1;1401:5:1;750:662;-1:-1:-1;;;;;;750:662:1:o;1417:1215::-;1535:6;1543;1596:2;1584:9;1575:7;1571:23;1567:32;1564:52;;;1612:1;1609;1602:12;1564:52;1652:9;1639:23;1681:18;1722:2;1714:6;1711:14;1708:34;;;1738:1;1735;1728:12;1708:34;1776:6;1765:9;1761:22;1751:32;;1821:7;1814:4;1810:2;1806:13;1802:27;1792:55;;1843:1;1840;1833:12;1792:55;1879:2;1866:16;1901:4;1925:60;1941:43;1981:2;1941:43;:::i;1925:60::-;2019:15;;;2101:1;2097:10;;;;2089:19;;2085:28;;;2050:12;;;;2125:19;;;2122:39;;;2157:1;2154;2147:12;2122:39;2181:11;;;;2201:217;2217:6;2212:3;2209:15;2201:217;;;2297:3;2284:17;2314:31;2339:5;2314:31;:::i;:::-;2358:18;;2234:12;;;;2396;;;;2201:217;;;2437:5;-1:-1:-1;;2480:18:1;;2467:32;;-1:-1:-1;;2511:16:1;;;2508:36;;;2540:1;2537;2530:12;2508:36;;2563:63;2618:7;2607:8;2596:9;2592:24;2563:63;:::i;:::-;2553:73;;;1417:1215;;;;;:::o;2829:548::-;2941:4;2970:2;2999;2988:9;2981:21;3031:6;3025:13;3074:6;3069:2;3058:9;3054:18;3047:34;3099:1;3109:140;3123:6;3120:1;3117:13;3109:140;;;3218:14;;;3214:23;;3208:30;3184:17;;;3203:2;3180:26;3173:66;3138:10;;3109:140;;;3113:3;3298:1;3293:2;3284:6;3273:9;3269:22;3265:31;3258:42;3368:2;3361;3357:7;3352:2;3344:6;3340:15;3336:29;3325:9;3321:45;3317:54;3309:62;;;;2829:548;;;;:::o;3382:315::-;3450:6;3458;3511:2;3499:9;3490:7;3486:23;3482:32;3479:52;;;3527:1;3524;3517:12;3479:52;3566:9;3553:23;3585:31;3610:5;3585:31;:::i;:::-;3635:5;3687:2;3672:18;;;;3659:32;;-1:-1:-1;;;3382:315:1:o;3884:456::-;3961:6;3969;3977;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4085:9;4072:23;4104:31;4129:5;4104:31;:::i;:::-;4154:5;-1:-1:-1;4211:2:1;4196:18;;4183:32;4224:33;4183:32;4224:33;:::i;:::-;3884:456;;4276:7;;-1:-1:-1;;;4330:2:1;4315:18;;;;4302:32;;3884:456::o;4534:247::-;4593:6;4646:2;4634:9;4625:7;4621:23;4617:32;4614:52;;;4662:1;4659;4652:12;4614:52;4701:9;4688:23;4720:31;4745:5;4720:31;:::i;4994:388::-;5062:6;5070;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;5178:9;5165:23;5197:31;5222:5;5197:31;:::i;:::-;5247:5;-1:-1:-1;5304:2:1;5289:18;;5276:32;5317:33;5276:32;5317:33;:::i;:::-;5369:7;5359:17;;;4994:388;;;;;:::o;5387:356::-;5589:2;5571:21;;;5608:18;;;5601:30;5667:34;5662:2;5647:18;;5640:62;5734:2;5719:18;;5387:356::o;6954:127::-;7015:10;7010:3;7006:20;7003:1;6996:31;7046:4;7043:1;7036:15;7070:4;7067:1;7060:15;7086:127;7147:10;7142:3;7138:20;7135:1;7128:31;7178:4;7175:1;7168:15;7202:4;7199:1;7192:15;7218:135;7257:3;7278:17;;;7275:43;;7298:18;;:::i;:::-;-1:-1:-1;7345:1:1;7334:13;;7218:135::o;7358:422::-;7447:1;7490:5;7447:1;7504:270;7525:7;7515:8;7512:21;7504:270;;;7584:4;7580:1;7576:6;7572:17;7566:4;7563:27;7560:53;;;7593:18;;:::i;:::-;7643:7;7633:8;7629:22;7626:55;;;7663:16;;;;7626:55;7742:22;;;;7702:15;;;;7504:270;;;7508:3;7358:422;;;;;:::o;7785:806::-;7834:5;7864:8;7854:80;;-1:-1:-1;7905:1:1;7919:5;;7854:80;7953:4;7943:76;;-1:-1:-1;7990:1:1;8004:5;;7943:76;8035:4;8053:1;8048:59;;;;8121:1;8116:130;;;;8028:218;;8048:59;8078:1;8069:10;;8092:5;;;8116:130;8153:3;8143:8;8140:17;8137:43;;;8160:18;;:::i;:::-;-1:-1:-1;;8216:1:1;8202:16;;8231:5;;8028:218;;8330:2;8320:8;8317:16;8311:3;8305:4;8302:13;8298:36;8292:2;8282:8;8279:16;8274:2;8268:4;8265:12;8261:35;8258:77;8255:159;;;-1:-1:-1;8367:19:1;;;8399:5;;8255:159;8446:34;8471:8;8465:4;8446:34;:::i;:::-;8516:6;8512:1;8508:6;8504:19;8495:7;8492:32;8489:58;;;8527:18;;:::i;:::-;8565:20;;7785:806;-1:-1:-1;;;7785:806:1:o;8596:140::-;8654:5;8683:47;8724:4;8714:8;8710:19;8704:4;8683:47;:::i;8741:168::-;8814:9;;;8845;;8862:15;;;8856:22;;8842:37;8832:71;;8883:18;;:::i;8914:184::-;8984:6;9037:2;9025:9;9016:7;9012:23;9008:32;9005:52;;;9053:1;9050;9043:12;9005:52;-1:-1:-1;9076:16:1;;8914:184;-1:-1:-1;8914:184:1:o;9669:277::-;9736:6;9789:2;9777:9;9768:7;9764:23;9760:32;9757:52;;;9805:1;9802;9795:12;9757:52;9837:9;9831:16;9890:5;9883:13;9876:21;9869:5;9866:32;9856:60;;9912:1;9909;9902:12;10303:251;10373:6;10426:2;10414:9;10405:7;10401:23;10397:32;10394:52;;;10442:1;10439;10432:12;10394:52;10474:9;10468:16;10493:31;10518:5;10493:31;:::i;11480:306::-;11568:6;11576;11584;11637:2;11625:9;11616:7;11612:23;11608:32;11605:52;;;11653:1;11650;11643:12;11605:52;11682:9;11676:16;11666:26;;11732:2;11721:9;11717:18;11711:25;11701:35;;11776:2;11765:9;11761:18;11755:25;11745:35;;11480:306;;;;;:::o;14523:125::-;14588:9;;;14609:10;;;14606:36;;;14622:18;;:::i;15816:128::-;15883:9;;;15904:11;;;15901:37;;;15918:18;;:::i;15949:980::-;16211:4;16259:3;16248:9;16244:19;16290:6;16279:9;16272:25;16316:2;16354:6;16349:2;16338:9;16334:18;16327:34;16397:3;16392:2;16381:9;16377:18;16370:31;16421:6;16456;16450:13;16487:6;16479;16472:22;16525:3;16514:9;16510:19;16503:26;;16564:2;16556:6;16552:15;16538:29;;16585:1;16595:195;16609:6;16606:1;16603:13;16595:195;;;16674:13;;-1:-1:-1;;;;;16670:39:1;16658:52;;16765:15;;;;16730:12;;;;16706:1;16624:9;16595:195;;;-1:-1:-1;;;;;;;16846:32:1;;;;16841:2;16826:18;;16819:60;-1:-1:-1;;;16910:3:1;16895:19;16888:35;16807:3;15949:980;-1:-1:-1;;;15949:980:1:o;16934:217::-;16974:1;17000;16990:132;;17044:10;17039:3;17035:20;17032:1;17025:31;17079:4;17076:1;17069:15;17107:4;17104:1;17097:15;16990:132;-1:-1:-1;17136:9:1;;16934:217::o

Swarm Source

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