ETH Price: $2,303.30 (-0.61%)

Token

Pepemigos NFT (PMG)
 

Overview

Max Total Supply

1,000,000,000 PMG

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,322,680.613760261 PMG

Value
$0.00
0xcA59b241FF5338377f3F2ec55063d2901b60ac70
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:
PepemigosNFT

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-11
*/

/**   

        // SPDX-License-Identifier: MIT





        ██████╗░███████╗██████╗░███████╗███╗░░░███╗██╗░██████╗░░█████╗░░██████╗  ███╗░░██╗███████╗████████╗
        ██╔══██╗██╔════╝██╔══██╗██╔════╝████╗░████║██║██╔════╝░██╔══██╗██╔════╝  ████╗░██║██╔════╝╚══██╔══╝
        ██████╔╝█████╗░░██████╔╝█████╗░░██╔████╔██║██║██║░░██╗░██║░░██║╚█████╗░  ██╔██╗██║█████╗░░░░░██║░░░
        ██╔═══╝░██╔══╝░░██╔═══╝░██╔══╝░░██║╚██╔╝██║██║██║░░╚██╗██║░░██║░╚═══██╗  ██║╚████║██╔══╝░░░░░██║░░░
        ██║░░░░░███████╗██║░░░░░███████╗██║░╚═╝░██║██║╚██████╔╝╚█████╔╝██████╔╝  ██║░╚███║██║░░░░░░░░██║░░░
        ╚═╝░░░░░╚══════╝╚═╝░░░░░╚══════╝╚═╝░░░░░╚═╝╚═╝░╚═════╝░░╚════╝░╚═════╝░  ╚═╝░░╚══╝╚═╝░░░░░░░░╚═╝░░░


        * Website: https://www.pepemigos.wtf/
        * Twitter: https://twitter.com/Pepemigos_NFT
        * Telegram: https://t.me/+RGgtCIm5PtMxNmVi

*/

     


pragma solidity ^0.8.17;

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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");
        _;
    }


}

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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract PepemigosNFT is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Pepemigos NFT";
    string private constant _symbol = "PMG";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _marketingFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _marketingFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    uint256 private _marketingFee = _marketingFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousmarketingFee = _marketingFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x14a6FCB4c898F6638DC9d428f440Bb3407d070E7);
    address payable private _marketingAddress = payable(0x14a6FCB4c898F6638DC9d428f440Bb3407d070E7);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 100000000 * 10**9;
    uint256 public _maxWalletSize = 1000000000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_marketingFee == 0 && _taxFee == 0) return;

        _previousmarketingFee = _marketingFee;
        _previoustaxFee = _taxFee;

        _marketingFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _marketingFee = _previousmarketingFee;
        _taxFee = _previoustaxFee;
    }

    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 {
        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(!bots[from] && !bots[to]);

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: ");
            }

            require(amount <= _maxTxAmount, "TOKEN: Very much.");
            require(!bots[from] && !bots[to], "TOKEN: Cannot do that!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _marketingFee = _marketingFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _marketingFee = _marketingFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }


    function doLaunch() external onlyOwner() {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;


    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketingFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 marketingFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(marketingFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function renounceOwnership(uint256 marketingFeeOnBuy, uint256 marketingFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _marketingFeeOnBuy = marketingFeeOnBuy;
        _marketingFeeOnSell = marketingFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function minSwap(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function manualSwap(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function maxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function taxWallet(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

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":"_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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"doLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"minSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"taxWallet","outputs":[],"stateMutability":"nonpayable","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a670de0b6b3a76400006000196200016b565b62000028906000196200018e565b600655600060088190556009819055600a819055600b819055600c819055600d819055600e819055600f55601280547314a6fcb4c898f6638dc9d428f440bb3407d070e76001600160a01b031991821681179092556013805490911690911790556015805462ffffff60a01b19166201000160a01b17905567016345785d8a0000601655670de0b6b3a764000060175564e8d4a51000601855348015620000ce57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654336000818152600260209081526040808320949094559251670de0b6b3a76400008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620001b6565b6000826200018957634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620001b057634e487b7160e01b600052601160045260246000fd5b92915050565b611cba80620001c66000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063bfd7928411610064578063bfd7928414610487578063c3c8cd80146104b7578063dd62ed3e146104cc578063ea1644d51461051257600080fd5b806395d89b411461041b5780639cdbdbb414610447578063a9059cbb1461046757600080fd5b806370a08231146103645780637d1db4a5146103845780637f2feddc1461039a5780638d435bf6146103c75780638da5cb5b146103e75780638f9a55c01461040557600080fd5b80632fd689e31161013e57806349bd5a5e1161011857806349bd5a5e146102fa5780634ffa00a31461031a5780635009b8e41461032f5780636fc3eaec1461034f57600080fd5b80632fd689e3146102a8578063313ce567146102be57806340eed21d146102da57600080fd5b806306fdde0314610191578063095ea7b3146101d95780631694505e1461020957806318160ddd1461024157806323b872dd14610266578063276d3fe61461028657600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600d81526c14195c195b5a59dbdcc8139195609a1b60208201525b6040516101d0919061180e565b60405180910390f35b3480156101e557600080fd5b506101f96101f4366004611881565b610532565b60405190151581526020016101d0565b34801561021557600080fd5b50601454610229906001600160a01b031681565b6040516001600160a01b0390911681526020016101d0565b34801561024d57600080fd5b50670de0b6b3a76400005b6040519081526020016101d0565b34801561027257600080fd5b506101f96102813660046118ad565b610549565b34801561029257600080fd5b506102a66102a1366004611904565b6105b2565b005b3480156102b457600080fd5b5061025860185481565b3480156102ca57600080fd5b50604051600981526020016101d0565b3480156102e657600080fd5b506102a66102f53660046119c9565b610651565b34801561030657600080fd5b50601554610229906001600160a01b031681565b34801561032657600080fd5b506102a661068f565b34801561033b57600080fd5b506102a661034a3660046119fb565b610897565b34801561035b57600080fd5b506102a66108c6565b34801561037057600080fd5b5061025861037f366004611a14565b610911565b34801561039057600080fd5b5061025860165481565b3480156103a657600080fd5b506102586103b5366004611a14565b60116020526000908152604090205481565b3480156103d357600080fd5b506102a66103e23660046119fb565b610933565b3480156103f357600080fd5b506000546001600160a01b0316610229565b34801561041157600080fd5b5061025860175481565b34801561042757600080fd5b50604080518082019091526003815262504d4760e81b60208201526101c3565b34801561045357600080fd5b506102a6610462366004611a31565b610962565b34801561047357600080fd5b506101f9610482366004611881565b610a03565b34801561049357600080fd5b506101f96104a2366004611a14565b60106020526000908152604090205460ff1681565b3480156104c357600080fd5b506102a6610a10565b3480156104d857600080fd5b506102586104e7366004611abc565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561051e57600080fd5b506102a661052d3660046119fb565b610a64565b600061053f338484610a93565b5060015b92915050565b6000610556848484610bb7565b6105a884336105a385604051806060016040528060288152602001611c5d602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906110e3565b610a93565b5060019392505050565b6000546001600160a01b031633146105e55760405162461bcd60e51b81526004016105dc90611af5565b60405180910390fd5b60005b815181101561064d5760016010600084848151811061060957610609611b2a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061064581611b56565b9150506105e8565b5050565b6000546001600160a01b0316331461067b5760405162461bcd60e51b81526004016105dc90611af5565b600893909355600a91909155600955600b55565b6000546001600160a01b031633146106b95760405162461bcd60e51b81526004016105dc90611af5565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801561071e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107429190611b6f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b39190611b6f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108249190611b6f565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff199081166001908117909255308452828420805482168317905560125485168452828420805482168317905560135490941683529120805490921617905550565b6000546001600160a01b031633146108c15760405162461bcd60e51b81526004016105dc90611af5565b601655565b6012546001600160a01b0316336001600160a01b031614806108fb57506013546001600160a01b0316336001600160a01b0316145b61090457600080fd5b4761090e8161111d565b50565b6001600160a01b03811660009081526002602052604081205461054390611157565b6000546001600160a01b0316331461095d5760405162461bcd60e51b81526004016105dc90611af5565b601855565b6000546001600160a01b0316331461098c5760405162461bcd60e51b81526004016105dc90611af5565b60005b828110156109fd5781600560008686858181106109ae576109ae611b2a565b90506020020160208101906109c39190611a14565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109f581611b56565b91505061098f565b50505050565b600061053f338484610bb7565b6012546001600160a01b0316336001600160a01b03161480610a4557506013546001600160a01b0316336001600160a01b0316145b610a4e57600080fd5b6000610a5930610911565b905061090e816111db565b6000546001600160a01b03163314610a8e5760405162461bcd60e51b81526004016105dc90611af5565b601755565b6001600160a01b038316610af55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105dc565b6001600160a01b038216610b565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105dc565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105dc565b6001600160a01b038216610c7d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105dc565b60008111610cdf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105dc565b6001600160a01b03831660009081526010602052604090205460ff16158015610d2157506001600160a01b03821660009081526010602052604090205460ff16155b610d2a57600080fd5b6000546001600160a01b03848116911614801590610d5657506000546001600160a01b03838116911614155b15610fdc57601554600160a01b900460ff16610db3576000546001600160a01b03848116911614610db35760405162461bcd60e51b815260206004820152600760248201526602a27a5a2a71d160cd1b60448201526064016105dc565b601654811115610df95760405162461bcd60e51b81526020600482015260116024820152702a27a5a2a71d102b32b93c9036bab1b41760791b60448201526064016105dc565b6001600160a01b03831660009081526010602052604090205460ff16158015610e3b57506001600160a01b03821660009081526010602052604090205460ff16155b610e805760405162461bcd60e51b8152602060048201526016602482015275544f4b454e3a2043616e6e6f7420646f20746861742160501b60448201526064016105dc565b6015546001600160a01b03838116911614610f055760175481610ea284610911565b610eac9190611b8c565b10610f055760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105dc565b6000610f1030610911565b601854601654919250821015908210610f295760165491505b808015610f405750601554600160a81b900460ff16155b8015610f5a57506015546001600160a01b03868116911614155b8015610f6f5750601554600160b01b900460ff165b8015610f9457506001600160a01b03851660009081526005602052604090205460ff16155b8015610fb957506001600160a01b03841660009081526005602052604090205460ff16155b15610fd957610fc7826111db565b478015610fd757610fd74761111d565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061101e57506001600160a01b03831660009081526005602052604090205460ff165b8061105057506015546001600160a01b0385811691161480159061105057506015546001600160a01b03848116911614155b1561105d575060006110d7565b6015546001600160a01b03858116911614801561108857506014546001600160a01b03848116911614155b1561109a57600854600c55600954600d555b6015546001600160a01b0384811691161480156110c557506014546001600160a01b03858116911614155b156110d757600a54600c55600b54600d555b6109fd84848484611355565b600081848411156111075760405162461bcd60e51b81526004016105dc919061180e565b5060006111148486611b9f565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561064d573d6000803e3d6000fd5b60006006548211156111be5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105dc565b60006111c8611383565b90506111d483826113a6565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061122357611223611b2a565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611b6f565b816001815181106112b3576112b3611b2a565b6001600160a01b0392831660209182029290920101526014546112d99130911684610a93565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611312908590600090869030904290600401611bb2565b600060405180830381600087803b15801561132c57600080fd5b505af1158015611340573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611362576113626113e8565b61136d848484611416565b806109fd576109fd600e54600c55600f54600d55565b600080600061139061150d565b909250905061139f82826113a6565b9250505090565b60006111d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061154d565b600c541580156113f85750600d54155b156113ff57565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806114288761157b565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061145a90876115d8565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611489908661161a565b6001600160a01b0389166000908152600260205260409020556114ab81611679565b6114b584836116c3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114fa91815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a764000061152882826113a6565b82101561154457505060065492670de0b6b3a764000092509050565b90939092509050565b6000818361156e5760405162461bcd60e51b81526004016105dc919061180e565b5060006111148486611c23565b60008060008060008060008060006115988a600c54600d546116e7565b92509250925060006115a8611383565b905060008060006115bb8e87878761173c565b919e509c509a509598509396509194505050505091939550919395565b60006111d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110e3565b6000806116278385611b8c565b9050838110156111d45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105dc565b6000611683611383565b90506000611691838361178c565b306000908152600260205260409020549091506116ae908261161a565b30600090815260026020526040902055505050565b6006546116d090836115d8565b6006556007546116e0908261161a565b6007555050565b600080808061170160646116fb898961178c565b906113a6565b9050600061171460646116fb8a8961178c565b9050600061172c826117268b866115d8565b906115d8565b9992985090965090945050505050565b600080808061174b888661178c565b90506000611759888761178c565b90506000611767888861178c565b905060006117798261172686866115d8565b939b939a50919850919650505050505050565b60008260000361179e57506000610543565b60006117aa8385611c45565b9050826117b78583611c23565b146111d45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105dc565b600060208083528351808285015260005b8181101561183b5785810183015185820160400152820161181f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461090e57600080fd5b803561187c8161185c565b919050565b6000806040838503121561189457600080fd5b823561189f8161185c565b946020939093013593505050565b6000806000606084860312156118c257600080fd5b83356118cd8161185c565b925060208401356118dd8161185c565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561191757600080fd5b823567ffffffffffffffff8082111561192f57600080fd5b818501915085601f83011261194357600080fd5b813581811115611955576119556118ee565b8060051b604051601f19603f8301168101818110858211171561197a5761197a6118ee565b60405291825284820192508381018501918883111561199857600080fd5b938501935b828510156119bd576119ae85611871565b8452938501939285019261199d565b98975050505050505050565b600080600080608085870312156119df57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611a0d57600080fd5b5035919050565b600060208284031215611a2657600080fd5b81356111d48161185c565b600080600060408486031215611a4657600080fd5b833567ffffffffffffffff80821115611a5e57600080fd5b818601915086601f830112611a7257600080fd5b813581811115611a8157600080fd5b8760208260051b8501011115611a9657600080fd5b602092830195509350508401358015158114611ab157600080fd5b809150509250925092565b60008060408385031215611acf57600080fd5b8235611ada8161185c565b91506020830135611aea8161185c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611b6857611b68611b40565b5060010190565b600060208284031215611b8157600080fd5b81516111d48161185c565b8082018082111561054357610543611b40565b8181038181111561054357610543611b40565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c025784516001600160a01b031683529383019391830191600101611bdd565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c4057634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761054357610543611b4056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202eec4137c71f396aaff621ad7a8c9094173fcb30a7e0742114f1c95dbdc6e51d64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063bfd7928411610064578063bfd7928414610487578063c3c8cd80146104b7578063dd62ed3e146104cc578063ea1644d51461051257600080fd5b806395d89b411461041b5780639cdbdbb414610447578063a9059cbb1461046757600080fd5b806370a08231146103645780637d1db4a5146103845780637f2feddc1461039a5780638d435bf6146103c75780638da5cb5b146103e75780638f9a55c01461040557600080fd5b80632fd689e31161013e57806349bd5a5e1161011857806349bd5a5e146102fa5780634ffa00a31461031a5780635009b8e41461032f5780636fc3eaec1461034f57600080fd5b80632fd689e3146102a8578063313ce567146102be57806340eed21d146102da57600080fd5b806306fdde0314610191578063095ea7b3146101d95780631694505e1461020957806318160ddd1461024157806323b872dd14610266578063276d3fe61461028657600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600d81526c14195c195b5a59dbdcc8139195609a1b60208201525b6040516101d0919061180e565b60405180910390f35b3480156101e557600080fd5b506101f96101f4366004611881565b610532565b60405190151581526020016101d0565b34801561021557600080fd5b50601454610229906001600160a01b031681565b6040516001600160a01b0390911681526020016101d0565b34801561024d57600080fd5b50670de0b6b3a76400005b6040519081526020016101d0565b34801561027257600080fd5b506101f96102813660046118ad565b610549565b34801561029257600080fd5b506102a66102a1366004611904565b6105b2565b005b3480156102b457600080fd5b5061025860185481565b3480156102ca57600080fd5b50604051600981526020016101d0565b3480156102e657600080fd5b506102a66102f53660046119c9565b610651565b34801561030657600080fd5b50601554610229906001600160a01b031681565b34801561032657600080fd5b506102a661068f565b34801561033b57600080fd5b506102a661034a3660046119fb565b610897565b34801561035b57600080fd5b506102a66108c6565b34801561037057600080fd5b5061025861037f366004611a14565b610911565b34801561039057600080fd5b5061025860165481565b3480156103a657600080fd5b506102586103b5366004611a14565b60116020526000908152604090205481565b3480156103d357600080fd5b506102a66103e23660046119fb565b610933565b3480156103f357600080fd5b506000546001600160a01b0316610229565b34801561041157600080fd5b5061025860175481565b34801561042757600080fd5b50604080518082019091526003815262504d4760e81b60208201526101c3565b34801561045357600080fd5b506102a6610462366004611a31565b610962565b34801561047357600080fd5b506101f9610482366004611881565b610a03565b34801561049357600080fd5b506101f96104a2366004611a14565b60106020526000908152604090205460ff1681565b3480156104c357600080fd5b506102a6610a10565b3480156104d857600080fd5b506102586104e7366004611abc565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561051e57600080fd5b506102a661052d3660046119fb565b610a64565b600061053f338484610a93565b5060015b92915050565b6000610556848484610bb7565b6105a884336105a385604051806060016040528060288152602001611c5d602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906110e3565b610a93565b5060019392505050565b6000546001600160a01b031633146105e55760405162461bcd60e51b81526004016105dc90611af5565b60405180910390fd5b60005b815181101561064d5760016010600084848151811061060957610609611b2a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061064581611b56565b9150506105e8565b5050565b6000546001600160a01b0316331461067b5760405162461bcd60e51b81526004016105dc90611af5565b600893909355600a91909155600955600b55565b6000546001600160a01b031633146106b95760405162461bcd60e51b81526004016105dc90611af5565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801561071e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107429190611b6f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b39190611b6f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108249190611b6f565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff199081166001908117909255308452828420805482168317905560125485168452828420805482168317905560135490941683529120805490921617905550565b6000546001600160a01b031633146108c15760405162461bcd60e51b81526004016105dc90611af5565b601655565b6012546001600160a01b0316336001600160a01b031614806108fb57506013546001600160a01b0316336001600160a01b0316145b61090457600080fd5b4761090e8161111d565b50565b6001600160a01b03811660009081526002602052604081205461054390611157565b6000546001600160a01b0316331461095d5760405162461bcd60e51b81526004016105dc90611af5565b601855565b6000546001600160a01b0316331461098c5760405162461bcd60e51b81526004016105dc90611af5565b60005b828110156109fd5781600560008686858181106109ae576109ae611b2a565b90506020020160208101906109c39190611a14565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109f581611b56565b91505061098f565b50505050565b600061053f338484610bb7565b6012546001600160a01b0316336001600160a01b03161480610a4557506013546001600160a01b0316336001600160a01b0316145b610a4e57600080fd5b6000610a5930610911565b905061090e816111db565b6000546001600160a01b03163314610a8e5760405162461bcd60e51b81526004016105dc90611af5565b601755565b6001600160a01b038316610af55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105dc565b6001600160a01b038216610b565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105dc565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c1b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105dc565b6001600160a01b038216610c7d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105dc565b60008111610cdf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105dc565b6001600160a01b03831660009081526010602052604090205460ff16158015610d2157506001600160a01b03821660009081526010602052604090205460ff16155b610d2a57600080fd5b6000546001600160a01b03848116911614801590610d5657506000546001600160a01b03838116911614155b15610fdc57601554600160a01b900460ff16610db3576000546001600160a01b03848116911614610db35760405162461bcd60e51b815260206004820152600760248201526602a27a5a2a71d160cd1b60448201526064016105dc565b601654811115610df95760405162461bcd60e51b81526020600482015260116024820152702a27a5a2a71d102b32b93c9036bab1b41760791b60448201526064016105dc565b6001600160a01b03831660009081526010602052604090205460ff16158015610e3b57506001600160a01b03821660009081526010602052604090205460ff16155b610e805760405162461bcd60e51b8152602060048201526016602482015275544f4b454e3a2043616e6e6f7420646f20746861742160501b60448201526064016105dc565b6015546001600160a01b03838116911614610f055760175481610ea284610911565b610eac9190611b8c565b10610f055760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105dc565b6000610f1030610911565b601854601654919250821015908210610f295760165491505b808015610f405750601554600160a81b900460ff16155b8015610f5a57506015546001600160a01b03868116911614155b8015610f6f5750601554600160b01b900460ff165b8015610f9457506001600160a01b03851660009081526005602052604090205460ff16155b8015610fb957506001600160a01b03841660009081526005602052604090205460ff16155b15610fd957610fc7826111db565b478015610fd757610fd74761111d565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061101e57506001600160a01b03831660009081526005602052604090205460ff165b8061105057506015546001600160a01b0385811691161480159061105057506015546001600160a01b03848116911614155b1561105d575060006110d7565b6015546001600160a01b03858116911614801561108857506014546001600160a01b03848116911614155b1561109a57600854600c55600954600d555b6015546001600160a01b0384811691161480156110c557506014546001600160a01b03858116911614155b156110d757600a54600c55600b54600d555b6109fd84848484611355565b600081848411156111075760405162461bcd60e51b81526004016105dc919061180e565b5060006111148486611b9f565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561064d573d6000803e3d6000fd5b60006006548211156111be5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105dc565b60006111c8611383565b90506111d483826113a6565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061122357611223611b2a565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611b6f565b816001815181106112b3576112b3611b2a565b6001600160a01b0392831660209182029290920101526014546112d99130911684610a93565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611312908590600090869030904290600401611bb2565b600060405180830381600087803b15801561132c57600080fd5b505af1158015611340573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611362576113626113e8565b61136d848484611416565b806109fd576109fd600e54600c55600f54600d55565b600080600061139061150d565b909250905061139f82826113a6565b9250505090565b60006111d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061154d565b600c541580156113f85750600d54155b156113ff57565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806114288761157b565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061145a90876115d8565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611489908661161a565b6001600160a01b0389166000908152600260205260409020556114ab81611679565b6114b584836116c3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114fa91815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a764000061152882826113a6565b82101561154457505060065492670de0b6b3a764000092509050565b90939092509050565b6000818361156e5760405162461bcd60e51b81526004016105dc919061180e565b5060006111148486611c23565b60008060008060008060008060006115988a600c54600d546116e7565b92509250925060006115a8611383565b905060008060006115bb8e87878761173c565b919e509c509a509598509396509194505050505091939550919395565b60006111d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110e3565b6000806116278385611b8c565b9050838110156111d45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105dc565b6000611683611383565b90506000611691838361178c565b306000908152600260205260409020549091506116ae908261161a565b30600090815260026020526040902055505050565b6006546116d090836115d8565b6006556007546116e0908261161a565b6007555050565b600080808061170160646116fb898961178c565b906113a6565b9050600061171460646116fb8a8961178c565b9050600061172c826117268b866115d8565b906115d8565b9992985090965090945050505050565b600080808061174b888661178c565b90506000611759888761178c565b90506000611767888861178c565b905060006117798261172686866115d8565b939b939a50919850919650505050505050565b60008260000361179e57506000610543565b60006117aa8385611c45565b9050826117b78583611c23565b146111d45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105dc565b600060208083528351808285015260005b8181101561183b5785810183015185820160400152820161181f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461090e57600080fd5b803561187c8161185c565b919050565b6000806040838503121561189457600080fd5b823561189f8161185c565b946020939093013593505050565b6000806000606084860312156118c257600080fd5b83356118cd8161185c565b925060208401356118dd8161185c565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561191757600080fd5b823567ffffffffffffffff8082111561192f57600080fd5b818501915085601f83011261194357600080fd5b813581811115611955576119556118ee565b8060051b604051601f19603f8301168101818110858211171561197a5761197a6118ee565b60405291825284820192508381018501918883111561199857600080fd5b938501935b828510156119bd576119ae85611871565b8452938501939285019261199d565b98975050505050505050565b600080600080608085870312156119df57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611a0d57600080fd5b5035919050565b600060208284031215611a2657600080fd5b81356111d48161185c565b600080600060408486031215611a4657600080fd5b833567ffffffffffffffff80821115611a5e57600080fd5b818601915086601f830112611a7257600080fd5b813581811115611a8157600080fd5b8760208260051b8501011115611a9657600080fd5b602092830195509350508401358015158114611ab157600080fd5b809150509250925092565b60008060408385031215611acf57600080fd5b8235611ada8161185c565b91506020830135611aea8161185c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611b6857611b68611b40565b5060010190565b600060208284031215611b8157600080fd5b81516111d48161185c565b8082018082111561054357610543611b40565b8181038181111561054357610543611b40565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c025784516001600160a01b031683529383019391830191600101611bdd565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c4057634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761054357610543611b4056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202eec4137c71f396aaff621ad7a8c9094173fcb30a7e0742114f1c95dbdc6e51d64736f6c63430008110033

Deployed Bytecode Sourcemap

5702:13086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7705:83;;;;;;;;;;-1:-1:-1;7775:5:0;;;;;;;;;;;;-1:-1:-1;;;7775:5:0;;;;7705:83;;;;;;;:::i;:::-;;;;;;;;8630:193;;;;;;;;;;-1:-1:-1;8630:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;8630:193:0;1162:187:1;7055:41:0;;;;;;;;;;-1:-1:-1;7055:41:0;;;;-1:-1:-1;;;;;7055:41:0;;;;;;-1:-1:-1;;;;;1544:32:1;;;1526:51;;1514:2;1499:18;7055:41:0;1354:229:1;7982:95:0;;;;;;;;;;-1:-1:-1;6257:18:0;7982:95;;;1734:25:1;;;1722:2;1707:18;7982:95:0;1588:177:1;8831:446:0;;;;;;;;;;-1:-1:-1;8831:446:0;;;;;:::i;:::-;;:::i;18157:170::-;;;;;;;;;;-1:-1:-1;18157:170:0;;;;;:::i;:::-;;:::i;:::-;;7363:49;;;;;;;;;;;;;;;;7891:83;;;;;;;;;;-1:-1:-1;7891:83:0;;5931:1;3631:36:1;;3619:2;3604:18;7891:83:0;3489:184:1;17694:326:0;;;;;;;;;;-1:-1:-1;17694:326:0;;;;;:::i;:::-;;:::i;7103:28::-;;;;;;;;;;-1:-1:-1;7103:28:0;;;;-1:-1:-1;;;;;7103:28:0;;;13233:554;;;;;;;;;;;;;:::i;18335:105::-;;;;;;;;;;-1:-1:-1;18335:105:0;;;;;:::i;:::-;;:::i;14039:235::-;;;;;;;;;;;;;:::i;8085:138::-;;;;;;;;;;-1:-1:-1;8085:138:0;;;;;:::i;:::-;;:::i;7252:47::-;;;;;;;;;;;;;;;;6797:43;;;;;;;;;;-1:-1:-1;6797:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;18028:121;;;;;;;;;;-1:-1:-1;18028:121:0;;;;;:::i;:::-;;:::i;3381:79::-;;;;;;;;;;-1:-1:-1;3419:7:0;3446:6;-1:-1:-1;;;;;3446:6:0;3381:79;;7306:50;;;;;;;;;;;;;;;;7796:87;;;;;;;;;;-1:-1:-1;7868:7:0;;;;;;;;;;;;-1:-1:-1;;;7868:7:0;;;;7796:87;;18571:212;;;;;;;;;;-1:-1:-1;18571:212:0;;;;;:::i;:::-;;:::i;8231:199::-;;;;;;;;;;-1:-1:-1;8231:199:0;;;;;:::i;:::-;;:::i;6759:36::-;;;;;;;;;;-1:-1:-1;6759:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13795:236;;;;;;;;;;;;;:::i;8438:184::-;;;;;;;;;;-1:-1:-1;8438:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8587:18:0;;;8555:7;8587:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8438:184;18448:115;;;;;;;;;;-1:-1:-1;18448:115:0;;;;;:::i;:::-;;:::i;8630:193::-;8732:4;8754:39;2220:10;8777:7;8786:6;8754:8;:39::i;:::-;-1:-1:-1;8811:4:0;8630:193;;;;;:::o;8831:446::-;8963:4;8980:36;8990:6;8998:9;9009:6;8980:9;:36::i;:::-;9027:220;9050:6;2220:10;9098:138;9154:6;9098:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9098:19:0;;;;;;:11;:19;;;;;;;;2220:10;9098:33;;;;;;;;;;:37;:138::i;:::-;9027:8;:220::i;:::-;-1:-1:-1;9265:4:0;8831:446;;;;;:::o;18157:170::-;3508:6;;-1:-1:-1;;;;;3508:6:0;2220:10;3508:22;3500:67;;;;-1:-1:-1;;;3500:67:0;;;;;;;:::i;:::-;;;;;;;;;18234:9:::1;18229:91;18253:5;:12;18249:1;:16;18229:91;;;18304:4;18287;:14;18292:5;18298:1;18292:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18287:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18287:14:0;:21;;-1:-1:-1;;18287:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18267:3;::::1;::::0;::::1;:::i;:::-;;;;18229:91;;;;18157:170:::0;:::o;17694:326::-;3508:6;;-1:-1:-1;;;;;3508:6:0;2220:10;3508:22;3500:67;;;;-1:-1:-1;;;3500:67:0;;;;;;;:::i;:::-;17847:18:::1;:38:::0;;;;17896:19:::1;:40:::0;;;;17947:12:::1;:26:::0;17984:13:::1;:28:::0;17694:326::o;13233:554::-;3508:6;;-1:-1:-1;;;;;3508:6:0;2220:10;3508:22;3500:67;;;;-1:-1:-1;;;3500:67:0;;;;;;;:::i;:::-;13398:15:::1;:34:::0;;-1:-1:-1;;;;;;13398:34:0::1;13344:42;13398:34:::0;;::::1;::::0;;;13477:26:::1;::::0;;-1:-1:-1;;;13477:26:0;;;;13344:42;;13477:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;13344:42;13477:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13459:66:0::1;;13534:4;13541:16;-1:-1:-1::0;;;;;13541:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13459:106;::::0;-1:-1:-1;;;;;;13459:106:0::1;::::0;;;;;;-1:-1:-1;;;;;7144:15:1;;;13459:106:0::1;::::0;::::1;7126:34:1::0;7196:15;;7176:18;;;7169:43;7061:18;;13459:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13443:13;:122:::0;;-1:-1:-1;;;;;;13443:122:0::1;-1:-1:-1::0;;;;;13443:122:0;;::::1;;::::0;;-1:-1:-1;3446:6:0;;;;13578:27;;:18:::1;:27;::::0;;;;;:34;;-1:-1:-1;;13578:34:0;;::::1;-1:-1:-1::0;13578:34:0;;::::1;::::0;;;13650:4:::1;13623:33:::0;;;;;:40;;;::::1;::::0;::::1;::::0;;13693:19:::1;::::0;;::::1;13674:39:::0;;;;;:46;;;::::1;::::0;::::1;::::0;;13750:17:::1;::::0;;;::::1;13731:37:::0;;;;:44;;;;::::1;;::::0;;-1:-1:-1;13233:554:0:o;18335:105::-;3508:6;;-1:-1:-1;;;;;3508:6:0;2220:10;3508:22;3500:67;;;;-1:-1:-1;;;3500:67:0;;;;;;;:::i;:::-;18406:12:::1;:26:::0;18335:105::o;14039:235::-;14105:19;;-1:-1:-1;;;;;14105:19:0;2220:10;-1:-1:-1;;;;;14089:35:0;;:72;;;-1:-1:-1;14144:17:0;;-1:-1:-1;;;;;14144:17:0;2220:10;-1:-1:-1;;;;;14128:33:0;;14089:72;14081:81;;;;;;14202:21;14234:32;14202:21;14234:12;:32::i;:::-;14070:204;14039:235::o;8085:138::-;-1:-1:-1;;;;;8198:16:0;;8151:7;8198:16;;;:7;:16;;;;;;8178:37;;:19;:37::i;18028:121::-;3508:6;;-1:-1:-1;;;;;3508:6:0;2220:10;3508:22;3500:67;;;;-1:-1:-1;;;3500:67:0;;;;;;;:::i;:::-;18101:19:::1;:40:::0;18028:121::o;18571:212::-;3508:6;;-1:-1:-1;;;;;3508:6:0;2220:10;3508:22;3500:67;;;;-1:-1:-1;;;3500:67:0;;;;;;;:::i;:::-;18666:9:::1;18662:114;18681:19:::0;;::::1;18662:114;;;18756:8;18722:18;:31;18741:8;;18750:1;18741:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18722:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18722:31:0;:42;;-1:-1:-1;;18722:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18702:3;::::1;::::0;::::1;:::i;:::-;;;;18662:114;;;;18571:212:::0;;;:::o;8231:199::-;8336:4;8358:42;2220:10;8382:9;8393:6;8358:9;:42::i;13795:236::-;13861:19;;-1:-1:-1;;;;;13861:19:0;2220:10;-1:-1:-1;;;;;13845:35:0;;:72;;;-1:-1:-1;13900:17:0;;-1:-1:-1;;;;;13900:17:0;2220:10;-1:-1:-1;;;;;13884:33:0;;13845:72;13837:81;;;;;;13929:23;13955:24;13973:4;13955:9;:24::i;:::-;13929:50;;13990:33;14007:15;13990:16;:33::i;18448:115::-;3508:6;;-1:-1:-1;;;;;3508:6:0;2220:10;3508:22;3500:67;;;;-1:-1:-1;;;3500:67:0;;;;;;;:::i;:::-;18525:14:::1;:30:::0;18448:115::o;9992:369::-;-1:-1:-1;;;;;10119:19:0;;10111:68;;;;-1:-1:-1;;;10111:68:0;;7425:2:1;10111:68:0;;;7407:21:1;7464:2;7444:18;;;7437:30;7503:34;7483:18;;;7476:62;-1:-1:-1;;;7554:18:1;;;7547:34;7598:19;;10111:68:0;7223:400:1;10111:68:0;-1:-1:-1;;;;;10198:21:0;;10190:68;;;;-1:-1:-1;;;10190:68:0;;7830:2:1;10190:68:0;;;7812:21:1;7869:2;7849:18;;;7842:30;7908:34;7888:18;;;7881:62;-1:-1:-1;;;7959:18:1;;;7952:32;8001:19;;10190:68:0;7628:398:1;10190:68:0;-1:-1:-1;;;;;10269:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10321:32;;1734:25:1;;;10321:32:0;;1707:18:1;10321:32:0;;;;;;;9992:369;;;:::o;10369:2256::-;-1:-1:-1;;;;;10491:18:0;;10483:68;;;;-1:-1:-1;;;10483:68:0;;8233:2:1;10483:68:0;;;8215:21:1;8272:2;8252:18;;;8245:30;8311:34;8291:18;;;8284:62;-1:-1:-1;;;8362:18:1;;;8355:35;8407:19;;10483:68:0;8031:401:1;10483:68:0;-1:-1:-1;;;;;10570:16:0;;10562:64;;;;-1:-1:-1;;;10562:64:0;;8639:2:1;10562:64:0;;;8621:21:1;8678:2;8658:18;;;8651:30;8717:34;8697:18;;;8690:62;-1:-1:-1;;;8768:18:1;;;8761:33;8811:19;;10562:64:0;8437:399:1;10562:64:0;10654:1;10645:6;:10;10637:64;;;;-1:-1:-1;;;10637:64:0;;9043:2:1;10637:64:0;;;9025:21:1;9082:2;9062:18;;;9055:30;9121:34;9101:18;;;9094:62;-1:-1:-1;;;9172:18:1;;;9165:39;9221:19;;10637:64:0;8841:405:1;10637:64:0;-1:-1:-1;;;;;10721:10:0;;;;;;:4;:10;;;;;;;;10720:11;:24;;;;-1:-1:-1;;;;;;10736:8:0;;;;;;:4;:8;;;;;;;;10735:9;10720:24;10712:33;;;;;;3419:7;3446:6;-1:-1:-1;;;;;10762:15:0;;;3446:6;;10762:15;;;;:32;;-1:-1:-1;3419:7:0;3446:6;-1:-1:-1;;;;;10781:13:0;;;3446:6;;10781:13;;10762:32;10758:1179;;;10851:11;;-1:-1:-1;;;10851:11:0;;;;10846:88;;3419:7;3446:6;-1:-1:-1;;;;;10891:15:0;;;3446:6;;10891:15;10883:35;;;;-1:-1:-1;;;10883:35:0;;9453:2:1;10883:35:0;;;9435:21:1;9492:1;9472:18;;;9465:29;-1:-1:-1;;;9510:18:1;;;9503:37;9557:18;;10883:35:0;9251:330:1;10883:35:0;10968:12;;10958:6;:22;;10950:52;;;;-1:-1:-1;;;10950:52:0;;9788:2:1;10950:52:0;;;9770:21:1;9827:2;9807:18;;;9800:30;-1:-1:-1;;;9846:18:1;;;9839:47;9903:18;;10950:52:0;9586:341:1;10950:52:0;-1:-1:-1;;;;;11026:10:0;;;;;;:4;:10;;;;;;;;11025:11;:24;;;;-1:-1:-1;;;;;;11041:8:0;;;;;;:4;:8;;;;;;;;11040:9;11025:24;11017:59;;;;-1:-1:-1;;;11017:59:0;;10134:2:1;11017:59:0;;;10116:21:1;10173:2;10153:18;;;10146:30;-1:-1:-1;;;10192:18:1;;;10185:52;10254:18;;11017:59:0;9932:346:1;11017:59:0;11102:13;;-1:-1:-1;;;;;11096:19:0;;;11102:13;;11096:19;11093:146;;11169:14;;11160:6;11144:13;11154:2;11144:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11136:87;;;;-1:-1:-1;;;11136:87:0;;10615:2:1;11136:87:0;;;10597:21:1;10654:2;10634:18;;;10627:30;10693:34;10673:18;;;10666:62;-1:-1:-1;;;10744:18:1;;;10737:33;10787:19;;11136:87:0;10413:399:1;11136:87:0;11255:28;11286:24;11304:4;11286:9;:24::i;:::-;11364:19;;11427:12;;11255:55;;-1:-1:-1;11340:43:0;;;;11403:36;;11400:124;;11496:12;;11473:35;;11400:124;11544:7;:18;;;;-1:-1:-1;11556:6:0;;-1:-1:-1;;;11556:6:0;;;;11555:7;11544:18;:43;;;;-1:-1:-1;11574:13:0;;-1:-1:-1;;;;;11566:21:0;;;11574:13;;11566:21;;11544:43;:58;;;;-1:-1:-1;11591:11:0;;-1:-1:-1;;;11591:11:0;;;;11544:58;:87;;;;-1:-1:-1;;;;;;11607:24:0;;;;;;:18;:24;;;;;;;;11606:25;11544:87;:114;;;;-1:-1:-1;;;;;;11636:22:0;;;;;;:18;:22;;;;;;;;11635:23;11544:114;11540:386;;;11679:38;11696:20;11679:16;:38::i;:::-;11765:21;11809:22;;11805:106;;11856:35;11869:21;11856:12;:35::i;:::-;11660:266;11540:386;10796:1141;;10758:1179;-1:-1:-1;;;;;11996:24:0;;11949:12;11996:24;;;:18;:24;;;;;;11964:4;;11996:24;;;:50;;-1:-1:-1;;;;;;12024:22:0;;;;;;:18;:22;;;;;;;;11996:50;11995:102;;;-1:-1:-1;12060:13:0;;-1:-1:-1;;;;;12052:21:0;;;12060:13;;12052:21;;;;:44;;-1:-1:-1;12083:13:0;;-1:-1:-1;;;;;12077:19:0;;;12083:13;;12077:19;;12052:44;11991:573;;;-1:-1:-1;12124:5:0;11991:573;;;12189:13;;-1:-1:-1;;;;;12181:21:0;;;12189:13;;12181:21;:55;;;;-1:-1:-1;12220:15:0;;-1:-1:-1;;;;;12206:30:0;;;12220:15;;12206:30;;12181:55;12178:170;;;12273:18;;12257:13;:34;12320:12;;12310:7;:22;12178:170;12388:13;;-1:-1:-1;;;;;12382:19:0;;;12388:13;;12382:19;:55;;;;-1:-1:-1;12421:15:0;;-1:-1:-1;;;;;12405:32:0;;;12421:15;;12405:32;;12382:55;12378:173;;;12474:19;;12458:13;:35;12522:13;;12512:7;:23;12378:173;12576:41;12591:4;12597:2;12601:6;12609:7;12576:14;:41::i;3953:224::-;4073:7;4109:12;4101:6;;;;4093:29;;;;-1:-1:-1;;;4093:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4133:9:0;4145:5;4149:1;4145;:5;:::i;:::-;4133:17;3953:224;-1:-1:-1;;;;;3953:224:0:o;13124:99::-;13181:17;;:34;;-1:-1:-1;;;;;13181:17:0;;;;:34;;;;;13208:6;;13181:17;:34;:17;:34;13208:6;13181:17;:34;;;;;;;;;;;;;;;;;;;9285:323;9380:7;9438;;9427;:18;;9405:110;;;;-1:-1:-1;;;9405:110:0;;11152:2:1;9405:110:0;;;11134:21:1;11191:2;11171:18;;;11164:30;11230:34;11210:18;;;11203:62;-1:-1:-1;;;11281:18:1;;;11274:40;11331:19;;9405:110:0;10950:406:1;9405:110:0;9526:19;9548:10;:8;:10::i;:::-;9526:32;-1:-1:-1;9576:24:0;:7;9526:32;9576:11;:24::i;:::-;9569:31;9285:323;-1:-1:-1;;;9285:323:0:o;12633:483::-;7506:6;:13;;-1:-1:-1;;;;7506:13:0;-1:-1:-1;;;7506:13:0;;;12735:16:::1;::::0;;12749:1:::1;12735:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12735:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12735:16:0::1;12711:40;;12780:4;12762;12767:1;12762:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12762:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12806:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12806:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12762:7;;12806:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12796:4;12801:1;12796:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12796:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12871:15:::1;::::0;12839:62:::1;::::0;12856:4:::1;::::0;12871:15:::1;12889:11:::0;12839:8:::1;:62::i;:::-;12912:15;::::0;:196:::1;::::0;-1:-1:-1;;;12912:196:0;;-1:-1:-1;;;;;12912:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12993:11;;12912:15:::1;::::0;13035:4;;13062::::1;::::0;13082:15:::1;::::0;12912:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7542:6:0;:14;;-1:-1:-1;;;;7542:14:0;;;-1:-1:-1;;;;12633:483:0:o;14284:282::-;14440:7;14435:28;;14449:14;:12;:14::i;:::-;14474:44;14492:6;14500:9;14511:6;14474:17;:44::i;:::-;14534:7;14529:29;;14543:15;9919:21;;9903:13;:37;9961:15;;9951:7;:25;9859:125;17257:164;17299:7;17320:15;17337;17356:19;:17;:19::i;:::-;17319:56;;-1:-1:-1;17319:56:0;-1:-1:-1;17393:20:0;17319:56;;17393:11;:20::i;:::-;17386:27;;;;17257:164;:::o;4439:132::-;4497:7;4524:39;4528:1;4531;4524:39;;;;;;;;;;;;;;;;;:3;:39::i;9616:235::-;9663:13;;:18;:34;;;;-1:-1:-1;9685:7:0;;:12;9663:34;9659:47;;;9616:235::o;9659:47::-;9742:13;;;9718:21;:37;9784:7;;;9766:15;:25;-1:-1:-1;9804:17:0;;;;9832:11;9616:235::o;14574:610::-;14721:15;14751:23;14789:12;14816:23;14854:12;14881:13;14908:19;14919:7;14908:10;:19::i;:::-;-1:-1:-1;;;;;14956:15:0;;;;;;:7;:15;;;;;;14706:221;;-1:-1:-1;14706:221:0;;-1:-1:-1;14706:221:0;;-1:-1:-1;14706:221:0;-1:-1:-1;14706:221:0;-1:-1:-1;14706:221:0;-1:-1:-1;14956:28:0;;14706:221;14956:19;:28::i;:::-;-1:-1:-1;;;;;14938:15:0;;;;;;;:7;:15;;;;;;:46;;;;15016:18;;;;;;;:39;;15039:15;15016:22;:39::i;:::-;-1:-1:-1;;;;;14995:18:0;;;;;;:7;:18;;;;;:60;15066:16;15076:5;15066:9;:16::i;:::-;15093:23;15105:4;15111;15093:11;:23::i;:::-;15149:9;-1:-1:-1;;;;;15132:44:0;15141:6;-1:-1:-1;;;;;15132:44:0;;15160:15;15132:44;;;;1734:25:1;;1722:2;1707:18;;1588:177;15132:44:0;;;;;;;;14695:489;;;;;;14574:610;;;:::o;17429:257::-;17527:7;;17480;;;;6257:18;17595:20;17527:7;6257:18;17595:11;:20::i;:::-;17585:7;:30;17581:61;;;-1:-1:-1;;17625:7:0;;;6257:18;;-1:-1:-1;17429:257:0;-1:-1:-1;17429:257:0:o;17581:61::-;17661:7;;17670;;-1:-1:-1;17429:257:0;-1:-1:-1;17429:257:0:o;4579:223::-;4699:7;4734:12;4727:5;4719:28;;;;-1:-1:-1;;;4719:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4758:9:0;4770:5;4774:1;4770;:5;:::i;15603:619::-;15703:7;15725;15747;15769;15791;15813;15849:23;15874:12;15888:13;15918:44;15930:7;15939:13;;15954:7;;15918:11;:44::i;:::-;15848:114;;;;;;15973:19;15995:10;:8;:10::i;:::-;15973:32;;16017:15;16034:23;16059:12;16088:46;16100:7;16109:4;16115:5;16122:11;16088;:46::i;:::-;16016:118;;-1:-1:-1;16016:118:0;-1:-1:-1;16016:118:0;-1:-1:-1;16185:15:0;;-1:-1:-1;16202:4:0;;-1:-1:-1;16208:5:0;;-1:-1:-1;;;;;15603:619:0;;;;;;;:::o;3809:136::-;3867:7;3894:43;3898:1;3901;3894:43;;;;;;;;;;;;;;;;;:3;:43::i;3622:179::-;3680:7;;3712:5;3716:1;3712;:5;:::i;:::-;3700:17;;3741:1;3736;:6;;3728:46;;;;-1:-1:-1;;;3728:46:0;;12770:2:1;3728:46:0;;;12752:21:1;12809:2;12789:18;;;12782:30;12848:29;12828:18;;;12821:57;12895:18;;3728:46:0;12568:351:1;15192:211:0;15245:19;15267:10;:8;:10::i;:::-;15245:32;-1:-1:-1;15288:13:0;15304:22;:5;15245:32;15304:9;:22::i;:::-;15378:4;15362:22;;;;:7;:22;;;;;;15288:38;;-1:-1:-1;15362:33:0;;15288:38;15362:26;:33::i;:::-;15353:4;15337:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;15192:211:0:o;15411:147::-;15489:7;;:17;;15501:4;15489:11;:17::i;:::-;15479:7;:27;15530:10;;:20;;15545:4;15530:14;:20::i;:::-;15517:10;:33;-1:-1:-1;;15411:147:0:o;16230:477::-;16403:7;;;;16497:34;16527:3;16497:25;:7;16509:12;16497:11;:25::i;:::-;:29;;:34::i;:::-;16482:49;-1:-1:-1;16542:13:0;16558:28;16582:3;16558:19;:7;16570:6;16558:11;:19::i;:28::-;16542:44;-1:-1:-1;16597:23:0;16623:28;16542:44;16623:17;:7;16635:4;16623:11;:17::i;:::-;:21;;:28::i;:::-;16597:54;16687:4;;-1:-1:-1;16693:5:0;;-1:-1:-1;16230:477:0;;-1:-1:-1;;;;;16230:477:0:o;16715:534::-;16909:7;;;;17006:24;:7;17018:11;17006;:24::i;:::-;16988:42;-1:-1:-1;17041:12:0;17056:21;:4;17065:11;17056:8;:21::i;:::-;17041:36;-1:-1:-1;17088:13:0;17104:22;:5;17114:11;17104:9;:22::i;:::-;17088:38;-1:-1:-1;17137:23:0;17163:28;17088:38;17163:17;:7;17175:4;17163:11;:17::i;:28::-;17210:7;;;;-1:-1:-1;17236:4:0;;-1:-1:-1;16715:534:0;;-1:-1:-1;;;;;;;16715:534:0:o;4185:246::-;4243:7;4267:1;4272;4267:6;4263:47;;-1:-1:-1;4297:1:0;4290:8;;4263:47;4320:9;4332:5;4336:1;4332;:5;:::i;:::-;4320:17;-1:-1:-1;4365:1:0;4356:5;4360:1;4320:17;4356:5;:::i;:::-;:10;4348:56;;;;-1:-1:-1;;;4348:56:0;;13299:2:1;4348:56:0;;;13281:21:1;13338:2;13318:18;;;13311:30;13377:34;13357:18;;;13350:62;-1:-1:-1;;;13428:18:1;;;13421:31;13469:19;;4348:56:0;13097:397: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:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1770:456::-;1847:6;1855;1863;1916:2;1904:9;1895:7;1891:23;1887:32;1884:52;;;1932:1;1929;1922:12;1884:52;1971:9;1958:23;1990:31;2015:5;1990:31;:::i;:::-;2040:5;-1:-1:-1;2097:2:1;2082:18;;2069:32;2110:33;2069:32;2110:33;:::i;:::-;1770:456;;2162:7;;-1:-1:-1;;;2216:2:1;2201:18;;;;2188:32;;1770:456::o;2231:127::-;2292:10;2287:3;2283:20;2280:1;2273:31;2323:4;2320:1;2313:15;2347:4;2344:1;2337:15;2363:1121;2447:6;2478:2;2521;2509:9;2500:7;2496:23;2492:32;2489:52;;;2537:1;2534;2527:12;2489:52;2577:9;2564:23;2606:18;2647:2;2639:6;2636:14;2633:34;;;2663:1;2660;2653:12;2633:34;2701:6;2690:9;2686:22;2676:32;;2746:7;2739:4;2735:2;2731:13;2727:27;2717:55;;2768:1;2765;2758:12;2717:55;2804:2;2791:16;2826:2;2822;2819:10;2816:36;;;2832:18;;:::i;:::-;2878:2;2875:1;2871:10;2910:2;2904:9;2973:2;2969:7;2964:2;2960;2956:11;2952:25;2944:6;2940:38;3028:6;3016:10;3013:22;3008:2;2996:10;2993:18;2990:46;2987:72;;;3039:18;;:::i;:::-;3075:2;3068:22;3125:18;;;3159:15;;;;-1:-1:-1;3201:11:1;;;3197:20;;;3229:19;;;3226:39;;;3261:1;3258;3251:12;3226:39;3285:11;;;;3305:148;3321:6;3316:3;3313:15;3305:148;;;3387:23;3406:3;3387:23;:::i;:::-;3375:36;;3338:12;;;;3431;;;;3305:148;;;3472:6;2363:1121;-1:-1:-1;;;;;;;;2363:1121:1:o;3678:385::-;3764:6;3772;3780;3788;3841:3;3829:9;3820:7;3816:23;3812:33;3809:53;;;3858:1;3855;3848:12;3809:53;-1:-1:-1;;3881:23:1;;;3951:2;3936:18;;3923:32;;-1:-1:-1;4002:2:1;3987:18;;3974:32;;4053:2;4038:18;4025:32;;-1:-1:-1;3678:385:1;-1:-1:-1;3678:385:1:o;4276:180::-;4335:6;4388:2;4376:9;4367:7;4363:23;4359:32;4356:52;;;4404:1;4401;4394:12;4356:52;-1:-1:-1;4427:23:1;;4276:180;-1:-1:-1;4276:180:1:o;4461:247::-;4520:6;4573:2;4561:9;4552:7;4548:23;4544:32;4541:52;;;4589:1;4586;4579:12;4541:52;4628:9;4615:23;4647:31;4672:5;4647:31;:::i;4713:782::-;4805:6;4813;4821;4874:2;4862:9;4853:7;4849:23;4845:32;4842:52;;;4890:1;4887;4880:12;4842:52;4930:9;4917:23;4959:18;5000:2;4992:6;4989:14;4986:34;;;5016:1;5013;5006:12;4986:34;5054:6;5043:9;5039:22;5029:32;;5099:7;5092:4;5088:2;5084:13;5080:27;5070:55;;5121:1;5118;5111:12;5070:55;5161:2;5148:16;5187:2;5179:6;5176:14;5173:34;;;5203:1;5200;5193:12;5173:34;5258:7;5251:4;5241:6;5238:1;5234:14;5230:2;5226:23;5222:34;5219:47;5216:67;;;5279:1;5276;5269:12;5216:67;5310:4;5302:13;;;;-1:-1:-1;5334:6:1;-1:-1:-1;;5375:20:1;;5362:34;5432:13;;5425:21;5415:32;;5405:60;;5461:1;5458;5451:12;5405:60;5484:5;5474:15;;;4713:782;;;;;:::o;5500:388::-;5568:6;5576;5629:2;5617:9;5608:7;5604:23;5600:32;5597:52;;;5645:1;5642;5635:12;5597:52;5684:9;5671:23;5703:31;5728:5;5703:31;:::i;:::-;5753:5;-1:-1:-1;5810:2:1;5795:18;;5782:32;5823:33;5782:32;5823:33;:::i;:::-;5875:7;5865:17;;;5500:388;;;;;:::o;5893:356::-;6095:2;6077:21;;;6114:18;;;6107:30;6173:34;6168:2;6153:18;;6146:62;6240:2;6225:18;;5893:356::o;6254:127::-;6315:10;6310:3;6306:20;6303:1;6296:31;6346:4;6343:1;6336:15;6370:4;6367:1;6360:15;6386:127;6447:10;6442:3;6438:20;6435:1;6428:31;6478:4;6475:1;6468:15;6502:4;6499:1;6492:15;6518:135;6557:3;6578:17;;;6575:43;;6598:18;;:::i;:::-;-1:-1:-1;6645:1:1;6634:13;;6518:135::o;6658:251::-;6728:6;6781:2;6769:9;6760:7;6756:23;6752:32;6749:52;;;6797:1;6794;6787:12;6749:52;6829:9;6823:16;6848:31;6873:5;6848:31;:::i;10283:125::-;10348:9;;;10369:10;;;10366:36;;;10382:18;;:::i;10817:128::-;10884:9;;;10905:11;;;10902:37;;;10919:18;;:::i;11361:980::-;11623:4;11671:3;11660:9;11656:19;11702:6;11691:9;11684:25;11728:2;11766:6;11761:2;11750:9;11746:18;11739:34;11809:3;11804:2;11793:9;11789:18;11782:31;11833:6;11868;11862:13;11899:6;11891;11884:22;11937:3;11926:9;11922:19;11915:26;;11976:2;11968:6;11964:15;11950:29;;11997:1;12007:195;12021:6;12018:1;12015:13;12007:195;;;12086:13;;-1:-1:-1;;;;;12082:39:1;12070:52;;12177:15;;;;12142:12;;;;12118:1;12036:9;12007:195;;;-1:-1:-1;;;;;;;12258:32:1;;;;12253:2;12238:18;;12231:60;-1:-1:-1;;;12322:3:1;12307:19;12300:35;12219:3;11361:980;-1:-1:-1;;;11361:980:1:o;12346:217::-;12386:1;12412;12402:132;;12456:10;12451:3;12447:20;12444:1;12437:31;12491:4;12488:1;12481:15;12519:4;12516:1;12509:15;12402:132;-1:-1:-1;12548:9:1;;12346:217::o;12924:168::-;12997:9;;;13028;;13045:15;;;13039:22;;13025:37;13015:71;;13066:18;;:::i

Swarm Source

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