ETH Price: $3,294.53 (-0.54%)
Gas: 9 Gwei

Token

Dynamite Headdy (HEADDY)
 

Overview

Max Total Supply

9,000,000,000 HEADDY

Holders

191

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,807,718.412265009 HEADDY

Value
$0.00
0xfa2f7319a9430f66ff0c6f733613f445a982a5c7
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:
DynamiteHeaddy

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSE

/**
 * website: https://headdy.io/
 * telegram: https://t.me/DynamiteHeaddyETH
 * twitter: https://twitter.com/HeaddyETH
 */

pragma solidity ^0.8.20;

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

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

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

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

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

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

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

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

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

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

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

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

    function WETH() external pure returns (address);

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

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

contract DynamiteHeaddy is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    string private constant _name = "Dynamite Headdy";
    string private constant _symbol = "HEADDY";
    uint256 private constant _supply = 9000000000;
    uint8 private constant _decimals = 9;

    bool private tradingEnabled = false;
    bool private swapEnabled = false;
    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 private maxTaxSwap;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; //Keep last transfer timestamp temporarily during launch
    bool private transferDelayEnabled = true; //Protect launch from bots

    address public maketingWallet;
    address public rewardWallet;
    uint256 public buyFee;
    uint256 public sellFee;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

    mapping(address => bool) private isExcludedFromFees;
    mapping(address => bool) private isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    constructor() ERC20(_name, _symbol, _decimals) {
        uint256 totalSupply = _supply.mul(10**decimals());
        maxTransactionAmount = totalSupply.mul(15).div(1000);
        maxWallet = totalSupply.mul(2).div(100);
        swapTokensAtAmount = totalSupply.mul(1).div(10000);
        maxTaxSwap = totalSupply.mul(12).div(100);

        maketingWallet = _msgSender();
        rewardWallet = address(0xA9d2D9cff588318326649E48F560Fc5B43E5d77C);
        buyFee = 18;
        sellFee = 35;

        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[maketingWallet] = true;
        isExcludedFromFees[rewardWallet] = true;

        isExcludedMaxTransactionAmount[owner()] = true;
        isExcludedMaxTransactionAmount[address(this)] = true;
        isExcludedMaxTransactionAmount[address(0xdead)] = true;
        isExcludedMaxTransactionAmount[maketingWallet] = true;
        isExcludedMaxTransactionAmount[rewardWallet] = true;

        // REWARD POOL
        _mint(rewardWallet, totalSupply.mul(9).div(100));
        _mint(address(0xaA6ed543C87243E840b7e1B43c6CE00da5927471), totalSupply.mul(1).div(100));
        _mint(_msgSender(), totalSupply.mul(90).div(100));
    }

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

    function openTrading() external onlyOwner() {
        require(!tradingEnabled, "Trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        automatedMarketMakerPairs[address(uniswapV2Pair)] = true;
        isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value : address(this).balance}(
            address(this),
            balanceOf(address(this)).mul(100 - buyFee).div(100),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingEnabled = swapEnabled = true;
    }

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

    function toggleTransferDelayEnabled() external onlyOwner {
        transferDelayEnabled = !transferDelayEnabled;
    }

    function setMaxWalletAndTxnAmount(uint256 _maxTransactionAmount, uint256 _maxWallet) external onlyOwner {
        _maxTransactionAmount = _maxTransactionAmount.mul(10**decimals());
        _maxWallet = _maxWallet.mul(10**decimals());
        uint256 limit = totalSupply().mul(5).div(1000);
        require(_maxTransactionAmount >= limit && _maxWallet >= limit, "Cannot set maxWallet or maxTxn lower than 0.5%");
        maxTransactionAmount = _maxTransactionAmount;
        maxWallet = _maxWallet;
    }

    function removeLimits() external onlyOwner {
        maxTransactionAmount = maxWallet = totalSupply();
        transferDelayEnabled = false;
    }

    function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 5, "Must keep buy fee at 5% or less");
        require(_sellFee <= 5, "Must keep sell fee at 5% or less");
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function removeFees() external onlyOwner {
        buyFee = sellFee = 3;
    }

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

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            if (!tradingEnabled) {
                require(isExcludedFromFees[from] || isExcludedFromFees[to], "Trading is not active.");
            }

            //if the transfer delay is enabled at launch
            if (transferDelayEnabled) {
                if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                    require(_holderLastTransferTimestamp[tx.origin] < block.number, "Only one purchase per block allowed.");
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (automatedMarketMakerPairs[from] && !isExcludedMaxTransactionAmount[to]) {
                require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the max transaction amount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded.");
            } else if (automatedMarketMakerPairs[to] && !isExcludedMaxTransactionAmount[from]) {
                require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the max transaction amount.");
            } else if (!isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded.");
            }
        }

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fees = amount.mul(sellFee).div(100);
            } else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fees = amount.mul(buyFee).div(100);
            }
            amount -= fees;
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapTokensAtAmount;
        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]
        ) {
            swapping = true;
            bool success;
            swapTokensForEth(min(amount, min(contractBalance, maxTaxSwap)));
            (success, ) = address(maketingWallet).call{value: address(this).balance}("");
            swapping = false;
        }

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

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

    function swapTokensForEth(uint256 tokenAmount) private {
        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
        );
    }

    //Use this in case ETH are sent to the contract by mistake
    function rescueETH(uint256 mount) external onlyOwner {
        require(address(this).balance >= mount, "Insufficient balance");
        payable(_msgSender()).transfer(mount);
    }

    //Use this in case ERC20 Tokens are sent to the contract by mistake
    function rescueAnyERC20Tokens(address _tokenAddress, address _to, uint256 _amount) public onlyOwner {
        require(_tokenAddress != address(this), "Owner can't claim contract's balance of its own tokens");
        ERC20(_tokenAddress).transfer(_to, _amount);
    }

    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":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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleTransferDelayEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040526007805461ffff60a01b19169055600b805460ff191660011790553480156200002b575f80fd5b506040518060400160405280600f81526020016e44796e616d6974652048656164647960881b8152506040518060400160405280600681526020016548454144445960d01b81525060098260039081620000869190620004d0565b506004620000958382620004d0565b506005805460ff191660ff9290921691909117905550620000bf9050620000b93390565b620002ec565b5f620000eb620000d160055460ff1690565b620000de90600a620006a5565b640218711a009062000345565b9050620001086103e86200010183600f62000345565b906200035b565b600f556200011e60646200010183600262000345565b601055620001356127106200010183600162000345565b6008556200014b60646200010183600c62000345565b6009908155600b8054610100600160a81b031916610100338102919091178255600c805473a9d2d9cff588318326649e48f560fc5b43e5d77c6001600160a01b03199091161781556012600d8190556023600e55600580548490046001600160a01b039081165f908152601160209081526040808320805460ff1990811660019081179092553080865283862080548316841790558b548b9004871686528386208054831684179055895487168652838620805483168417905596548a90048616855296909252808320805487168317905593825283822080548616821790557f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f78054861682179055965495909504811685528185208054841687179055835481168552932080549091169093179092559054620002a1929116906200029b906064906200010190869062000345565b62000368565b620002cd73aa6ed543c87243e840b7e1b43c6ce00da59274716200029b60646200010185600162000345565b620002e5336200029b60646200010185605a62000345565b5062000705565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f620003528284620006b5565b90505b92915050565b5f620003528284620006cf565b6001600160a01b038216620003c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620003d69190620006ef565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200045a57607f821691505b6020821081036200047957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200042c575f81815260208120601f850160051c81016020861015620004a75750805b601f850160051c820191505b81811015620004c857828155600101620004b3565b505050505050565b81516001600160401b03811115620004ec57620004ec62000431565b6200050481620004fd845462000445565b846200047f565b602080601f8311600181146200053a575f8415620005225750858301515b5f19600386901b1c1916600185901b178555620004c8565b5f85815260208120601f198616915b828110156200056a5788860151825594840194600190910190840162000549565b50858210156200058857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005ec57815f1904821115620005d057620005d062000598565b80851615620005de57918102915b93841c9390800290620005b1565b509250929050565b5f82620006045750600162000355565b816200061257505f62000355565b81600181146200062b5760028114620006365762000656565b600191505062000355565b60ff8411156200064a576200064a62000598565b50506001821b62000355565b5060208310610133831016604e8410600b84101617156200067b575081810a62000355565b620006878383620005ac565b805f19048211156200069d576200069d62000598565b029392505050565b5f6200035260ff841683620005f4565b808202811582820484141762000355576200035562000598565b5f82620006ea57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000355576200035562000598565b611f4680620007135f395ff3fe6080604052600436106101bd575f3560e01c8063715018a6116100f2578063a9059cbb11610092578063e2f4560511610062578063e2f45605146104e7578063f6b20c3b146104fc578063f8b45b0514610510578063fb75b2c714610525575f80fd5b8063a9059cbb1461045b578063c8c8ebe41461047a578063c9567bf91461048f578063dd62ed3e146104a3575f80fd5b80638da5cb5b116100cd5780638da5cb5b146103e257806395d89b41146104045780639e252f00146104185780639ea97db414610437575f80fd5b8063715018a6146103a6578063751039fc146103ba5780638583763a146103ce575f80fd5b806323b872dd1161015d5780634706240211610138578063470624021461032a57806349bd5a5e1461033f5780635ef460221461035e57806370a0823114610372575f80fd5b806323b872dd146102d55780632b14ca56146102f4578063313ce56714610309575f80fd5b80630b78f9c0116101985780630b78f9c0146102425780630d65df9b146102615780631694505e1461028057806318160ddd146102b7575f80fd5b8063022d02e5146101c857806306fdde03146101e9578063095ea7b314610213575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101e76101e2366004611b45565b610544565b005b3480156101f4575f80fd5b506101fd610639565b60405161020a9190611b65565b60405180910390f35b34801561021e575f80fd5b5061023261022d366004611bc7565b6106c9565b604051901515815260200161020a565b34801561024d575f80fd5b506101e761025c366004611b45565b6106e2565b34801561026c575f80fd5b506101e761027b366004611bf1565b610797565b34801561028b575f80fd5b5060065461029f906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102c2575f80fd5b506002545b60405190815260200161020a565b3480156102e0575f80fd5b506102326102ef366004611bf1565b61088c565b3480156102ff575f80fd5b506102c7600e5481565b348015610314575f80fd5b5060055460405160ff909116815260200161020a565b348015610335575f80fd5b506102c7600d5481565b34801561034a575f80fd5b5060075461029f906001600160a01b031681565b348015610369575f80fd5b506101e76108af565b34801561037d575f80fd5b506102c761038c366004611c2f565b6001600160a01b03165f9081526020819052604090205490565b3480156103b1575f80fd5b506101e76108d8565b3480156103c5575f80fd5b506101e76108eb565b3480156103d9575f80fd5b506101e761090a565b3480156103ed575f80fd5b5060055461010090046001600160a01b031661029f565b34801561040f575f80fd5b506101fd610926565b348015610423575f80fd5b506101e7610432366004611c4a565b610935565b348015610442575f80fd5b50600b5461029f9061010090046001600160a01b031681565b348015610466575f80fd5b50610232610475366004611bc7565b6109b2565b348015610485575f80fd5b506102c7600f5481565b34801561049a575f80fd5b506101e76109bf565b3480156104ae575f80fd5b506102c76104bd366004611c61565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156104f2575f80fd5b506102c760085481565b348015610507575f80fd5b506101e7610daf565b34801561051b575f80fd5b506102c760105481565b348015610530575f80fd5b50600c5461029f906001600160a01b031681565b61054c610dc3565b61056d61055b60055460ff1690565b61056690600a611d8c565b8390610e23565b915061059061057e60055460ff1690565b61058990600a611d8c565b8290610e23565b90505f6105b36103e86105ad60056105a760025490565b90610e23565b90610e35565b90508083101580156105c55750808210155b61062d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f7420736574206d617857616c6c6574206f72206d617854786e206c60448201526d6f776572207468616e20302e352560901b60648201526084015b60405180910390fd5b50600f91909155601055565b60606003805461064890611d9a565b80601f016020809104026020016040519081016040528092919081815260200182805461067490611d9a565b80156106bf5780601f10610696576101008083540402835291602001916106bf565b820191905f5260205f20905b8154815290600101906020018083116106a257829003601f168201915b5050505050905090565b5f336106d6818585610e40565b60019150505b92915050565b6106ea610dc3565b600582111561073b5760405162461bcd60e51b815260206004820152601f60248201527f4d757374206b6565702062757920666565206174203525206f72206c657373006044820152606401610624565b600581111561078c5760405162461bcd60e51b815260206004820181905260248201527f4d757374206b6565702073656c6c20666565206174203525206f72206c6573736044820152606401610624565b600d91909155600e55565b61079f610dc3565b306001600160a01b038416036108165760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610624565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015610862573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108869190611dcc565b50505050565b5f33610899858285610f63565b6108a4858585610fed565b506001949350505050565b6108b7610dc3565b6007805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6108e0610dc3565b6108e95f6117e6565b565b6108f3610dc3565b6002546010819055600f55600b805460ff19169055565b610912610dc3565b600b805460ff19811660ff90911615179055565b60606004805461064890611d9a565b61093d610dc3565b804710156109845760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610624565b604051339082156108fc029083905f818181858888f193505050501580156109ae573d5f803e3d5ffd5b5050565b5f336106d6818585610fed565b6109c7610dc3565b600754600160a01b900460ff1615610a215760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610624565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091555f819052601260209081527f3c6737805ae477fd0cfdda13dc5f99b32fcbfecb81e47f9e11e1b03813c08ec2805460ff191660011790556040805163c45a015560e01b81529051839263c45a015592600480820193918290030181865afa158015610ab7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adb9190611deb565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5e9190611deb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ba8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcc9190611deb565b600780546001600160a01b0319166001600160a01b0392831690811782555f908152601360209081526040808320805460ff19908116600190811790925594548616845260129092529091208054909216179055600654600254610c339230921690610e40565b600654600d546001600160a01b039091169063f305d7199047903090610c78906064906105ad90610c649083611e06565b305f908152602081905260409020546105a7565b5f80610c926005546001600160a01b036101009091041690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cf8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d1d9190611e19565b505060075460065460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610d72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d969190611dcc565b50506007805461ffff60a01b191661010160a01b179055565b610db7610dc3565b6003600e819055600d55565b6005546001600160a01b036101009091041633146108e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b5f610e2e8284611e44565b9392505050565b5f610e2e8284611e5b565b6001600160a01b038316610ea25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610624565b6001600160a01b038216610f035760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610624565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146108865781811015610fe05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610624565b6108868484848403610e40565b6001600160a01b0383166110525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015265323932b9b99760d11b6064820152608401610624565b6001600160a01b0382166110b45760405162461bcd60e51b8152602060048201526024808201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526332b9b99760e11b6064820152608401610624565b5f811161111d5760405162461bcd60e51b815260206004820152603160248201527f45524332303a207472616e7366657220616d6f756e74206d75737420626520676044820152703932b0ba32b9103a3430b7103d32b9379760791b6064820152608401610624565b6005546001600160a01b03848116610100909204161480159061115357506005546001600160a01b038381166101009092041614155b801561116757506001600160a01b03821615155b801561117e57506001600160a01b03821661dead14155b80156111945750600754600160b01b900460ff16155b1561157257600754600160a01b900460ff1661122c576001600160a01b0383165f9081526011602052604090205460ff16806111e757506001600160a01b0382165f9081526011602052604090205460ff165b61122c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610624565b600b5460ff1615611302576005546001600160a01b03838116610100909204161480159061126857506006546001600160a01b03838116911614155b801561128257506007546001600160a01b03838116911614155b1561130257325f908152600a602052604090205443116112f05760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b6064820152608401610624565b325f908152600a602052604090204390555b6001600160a01b0383165f9081526013602052604090205460ff16801561134157506001600160a01b0382165f9081526012602052604090205460ff16155b1561142d57600f548111156113be5760405162461bcd60e51b815260206004820152603760248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178207472616e73616374696f6e20616d6f756e742e0000000000000000006064820152608401610624565b6010546001600160a01b0383165f908152602081905260409020546113e39083611e7a565b11156114285760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b6044820152606401610624565b611572565b6001600160a01b0382165f9081526013602052604090205460ff16801561146c57506001600160a01b0383165f9081526012602052604090205460ff16155b156114e957600f548111156114285760405162461bcd60e51b815260206004820152603860248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d6178207472616e73616374696f6e20616d6f756e742e00000000000000006064820152608401610624565b6001600160a01b0382165f9081526012602052604090205460ff16611572576010546001600160a01b0383165f9081526020819052604090205461152d9083611e7a565b11156115725760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b6044820152606401610624565b6007546001600160a01b0384165f9081526011602052604090205460ff600160b01b9092048216159116806115be57506001600160a01b0383165f9081526011602052604090205460ff165b156115c657505f5b5f8115611672576001600160a01b0384165f9081526013602052604090205460ff1680156115f557505f600e54115b1561161b5761161460646105ad600e5486610e2390919063ffffffff16565b9050611665565b6001600160a01b0385165f9081526013602052604090205460ff16801561164357505f600d54115b156116655761166260646105ad600d5486610e2390919063ffffffff16565b90505b61166f8184611e06565b92505b305f908152602081905260409020546008548110801590819061169e5750600754600160a81b900460ff165b80156116b45750600754600160b01b900460ff16155b80156116d857506001600160a01b0387165f9081526013602052604090205460ff16155b80156116fc57506001600160a01b0387165f9081526011602052604090205460ff16155b801561172057506001600160a01b0386165f9081526011602052604090205460ff16155b156117c1576007805460ff60b01b1916600160b01b1790556009545f9061175c9061175790889061175290879061183f565b61183f565b611853565b600b546040516101009091046001600160a01b03169047905f81818185875af1925050503d805f81146117aa576040519150601f19603f3d011682016040523d82523d5f602084013e6117af565b606091505b50506007805460ff60b01b1916905550505b82156117d2576117d28730856119a3565b6117dd8787876119a3565b50505050505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81831161184d5782610e2e565b50919050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061188657611886611e8d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119019190611deb565b8160018151811061191457611914611e8d565b6001600160a01b03928316602091820292909201015260065461193a9130911684610e40565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119729085905f90869030904290600401611ea1565b5f604051808303815f87803b158015611989575f80fd5b505af115801561199b573d5f803e3d5ffd5b505050505050565b6001600160a01b038316611a075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610624565b6001600160a01b038216611a695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610624565b6001600160a01b0383165f9081526020819052604090205481811015611ae05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610624565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610886565b5f8060408385031215611b56575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b81811015611b9057858101830151858201604001528201611b74565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bc4575f80fd5b50565b5f8060408385031215611bd8575f80fd5b8235611be381611bb0565b946020939093013593505050565b5f805f60608486031215611c03575f80fd5b8335611c0e81611bb0565b92506020840135611c1e81611bb0565b929592945050506040919091013590565b5f60208284031215611c3f575f80fd5b8135610e2e81611bb0565b5f60208284031215611c5a575f80fd5b5035919050565b5f8060408385031215611c72575f80fd5b8235611c7d81611bb0565b91506020830135611c8d81611bb0565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ce657815f1904821115611ccc57611ccc611c98565b80851615611cd957918102915b93841c9390800290611cb1565b509250929050565b5f82611cfc575060016106dc565b81611d0857505f6106dc565b8160018114611d1e5760028114611d2857611d44565b60019150506106dc565b60ff841115611d3957611d39611c98565b50506001821b6106dc565b5060208310610133831016604e8410600b8410161715611d67575081810a6106dc565b611d718383611cac565b805f1904821115611d8457611d84611c98565b029392505050565b5f610e2e60ff841683611cee565b600181811c90821680611dae57607f821691505b60208210810361184d57634e487b7160e01b5f52602260045260245ffd5b5f60208284031215611ddc575f80fd5b81518015158114610e2e575f80fd5b5f60208284031215611dfb575f80fd5b8151610e2e81611bb0565b818103818111156106dc576106dc611c98565b5f805f60608486031215611e2b575f80fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176106dc576106dc611c98565b5f82611e7557634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106dc576106dc611c98565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611eef5784516001600160a01b031683529383019391830191600101611eca565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220cd787cabe5a6795c7db643c525997a224d0a34e3379696c41f7568bb8a282d5a64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c8063715018a6116100f2578063a9059cbb11610092578063e2f4560511610062578063e2f45605146104e7578063f6b20c3b146104fc578063f8b45b0514610510578063fb75b2c714610525575f80fd5b8063a9059cbb1461045b578063c8c8ebe41461047a578063c9567bf91461048f578063dd62ed3e146104a3575f80fd5b80638da5cb5b116100cd5780638da5cb5b146103e257806395d89b41146104045780639e252f00146104185780639ea97db414610437575f80fd5b8063715018a6146103a6578063751039fc146103ba5780638583763a146103ce575f80fd5b806323b872dd1161015d5780634706240211610138578063470624021461032a57806349bd5a5e1461033f5780635ef460221461035e57806370a0823114610372575f80fd5b806323b872dd146102d55780632b14ca56146102f4578063313ce56714610309575f80fd5b80630b78f9c0116101985780630b78f9c0146102425780630d65df9b146102615780631694505e1461028057806318160ddd146102b7575f80fd5b8063022d02e5146101c857806306fdde03146101e9578063095ea7b314610213575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101e76101e2366004611b45565b610544565b005b3480156101f4575f80fd5b506101fd610639565b60405161020a9190611b65565b60405180910390f35b34801561021e575f80fd5b5061023261022d366004611bc7565b6106c9565b604051901515815260200161020a565b34801561024d575f80fd5b506101e761025c366004611b45565b6106e2565b34801561026c575f80fd5b506101e761027b366004611bf1565b610797565b34801561028b575f80fd5b5060065461029f906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102c2575f80fd5b506002545b60405190815260200161020a565b3480156102e0575f80fd5b506102326102ef366004611bf1565b61088c565b3480156102ff575f80fd5b506102c7600e5481565b348015610314575f80fd5b5060055460405160ff909116815260200161020a565b348015610335575f80fd5b506102c7600d5481565b34801561034a575f80fd5b5060075461029f906001600160a01b031681565b348015610369575f80fd5b506101e76108af565b34801561037d575f80fd5b506102c761038c366004611c2f565b6001600160a01b03165f9081526020819052604090205490565b3480156103b1575f80fd5b506101e76108d8565b3480156103c5575f80fd5b506101e76108eb565b3480156103d9575f80fd5b506101e761090a565b3480156103ed575f80fd5b5060055461010090046001600160a01b031661029f565b34801561040f575f80fd5b506101fd610926565b348015610423575f80fd5b506101e7610432366004611c4a565b610935565b348015610442575f80fd5b50600b5461029f9061010090046001600160a01b031681565b348015610466575f80fd5b50610232610475366004611bc7565b6109b2565b348015610485575f80fd5b506102c7600f5481565b34801561049a575f80fd5b506101e76109bf565b3480156104ae575f80fd5b506102c76104bd366004611c61565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156104f2575f80fd5b506102c760085481565b348015610507575f80fd5b506101e7610daf565b34801561051b575f80fd5b506102c760105481565b348015610530575f80fd5b50600c5461029f906001600160a01b031681565b61054c610dc3565b61056d61055b60055460ff1690565b61056690600a611d8c565b8390610e23565b915061059061057e60055460ff1690565b61058990600a611d8c565b8290610e23565b90505f6105b36103e86105ad60056105a760025490565b90610e23565b90610e35565b90508083101580156105c55750808210155b61062d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f7420736574206d617857616c6c6574206f72206d617854786e206c60448201526d6f776572207468616e20302e352560901b60648201526084015b60405180910390fd5b50600f91909155601055565b60606003805461064890611d9a565b80601f016020809104026020016040519081016040528092919081815260200182805461067490611d9a565b80156106bf5780601f10610696576101008083540402835291602001916106bf565b820191905f5260205f20905b8154815290600101906020018083116106a257829003601f168201915b5050505050905090565b5f336106d6818585610e40565b60019150505b92915050565b6106ea610dc3565b600582111561073b5760405162461bcd60e51b815260206004820152601f60248201527f4d757374206b6565702062757920666565206174203525206f72206c657373006044820152606401610624565b600581111561078c5760405162461bcd60e51b815260206004820181905260248201527f4d757374206b6565702073656c6c20666565206174203525206f72206c6573736044820152606401610624565b600d91909155600e55565b61079f610dc3565b306001600160a01b038416036108165760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610624565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015610862573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108869190611dcc565b50505050565b5f33610899858285610f63565b6108a4858585610fed565b506001949350505050565b6108b7610dc3565b6007805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6108e0610dc3565b6108e95f6117e6565b565b6108f3610dc3565b6002546010819055600f55600b805460ff19169055565b610912610dc3565b600b805460ff19811660ff90911615179055565b60606004805461064890611d9a565b61093d610dc3565b804710156109845760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610624565b604051339082156108fc029083905f818181858888f193505050501580156109ae573d5f803e3d5ffd5b5050565b5f336106d6818585610fed565b6109c7610dc3565b600754600160a01b900460ff1615610a215760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610624565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091555f819052601260209081527f3c6737805ae477fd0cfdda13dc5f99b32fcbfecb81e47f9e11e1b03813c08ec2805460ff191660011790556040805163c45a015560e01b81529051839263c45a015592600480820193918290030181865afa158015610ab7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adb9190611deb565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5e9190611deb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ba8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcc9190611deb565b600780546001600160a01b0319166001600160a01b0392831690811782555f908152601360209081526040808320805460ff19908116600190811790925594548616845260129092529091208054909216179055600654600254610c339230921690610e40565b600654600d546001600160a01b039091169063f305d7199047903090610c78906064906105ad90610c649083611e06565b305f908152602081905260409020546105a7565b5f80610c926005546001600160a01b036101009091041690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cf8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d1d9190611e19565b505060075460065460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610d72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d969190611dcc565b50506007805461ffff60a01b191661010160a01b179055565b610db7610dc3565b6003600e819055600d55565b6005546001600160a01b036101009091041633146108e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b5f610e2e8284611e44565b9392505050565b5f610e2e8284611e5b565b6001600160a01b038316610ea25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610624565b6001600160a01b038216610f035760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610624565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146108865781811015610fe05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610624565b6108868484848403610e40565b6001600160a01b0383166110525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015265323932b9b99760d11b6064820152608401610624565b6001600160a01b0382166110b45760405162461bcd60e51b8152602060048201526024808201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526332b9b99760e11b6064820152608401610624565b5f811161111d5760405162461bcd60e51b815260206004820152603160248201527f45524332303a207472616e7366657220616d6f756e74206d75737420626520676044820152703932b0ba32b9103a3430b7103d32b9379760791b6064820152608401610624565b6005546001600160a01b03848116610100909204161480159061115357506005546001600160a01b038381166101009092041614155b801561116757506001600160a01b03821615155b801561117e57506001600160a01b03821661dead14155b80156111945750600754600160b01b900460ff16155b1561157257600754600160a01b900460ff1661122c576001600160a01b0383165f9081526011602052604090205460ff16806111e757506001600160a01b0382165f9081526011602052604090205460ff165b61122c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610624565b600b5460ff1615611302576005546001600160a01b03838116610100909204161480159061126857506006546001600160a01b03838116911614155b801561128257506007546001600160a01b03838116911614155b1561130257325f908152600a602052604090205443116112f05760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b6064820152608401610624565b325f908152600a602052604090204390555b6001600160a01b0383165f9081526013602052604090205460ff16801561134157506001600160a01b0382165f9081526012602052604090205460ff16155b1561142d57600f548111156113be5760405162461bcd60e51b815260206004820152603760248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178207472616e73616374696f6e20616d6f756e742e0000000000000000006064820152608401610624565b6010546001600160a01b0383165f908152602081905260409020546113e39083611e7a565b11156114285760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b6044820152606401610624565b611572565b6001600160a01b0382165f9081526013602052604090205460ff16801561146c57506001600160a01b0383165f9081526012602052604090205460ff16155b156114e957600f548111156114285760405162461bcd60e51b815260206004820152603860248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d6178207472616e73616374696f6e20616d6f756e742e00000000000000006064820152608401610624565b6001600160a01b0382165f9081526012602052604090205460ff16611572576010546001600160a01b0383165f9081526020819052604090205461152d9083611e7a565b11156115725760405162461bcd60e51b815260206004820152601460248201527326b0bc103bb0b63632ba1032bc31b2b2b232b21760611b6044820152606401610624565b6007546001600160a01b0384165f9081526011602052604090205460ff600160b01b9092048216159116806115be57506001600160a01b0383165f9081526011602052604090205460ff165b156115c657505f5b5f8115611672576001600160a01b0384165f9081526013602052604090205460ff1680156115f557505f600e54115b1561161b5761161460646105ad600e5486610e2390919063ffffffff16565b9050611665565b6001600160a01b0385165f9081526013602052604090205460ff16801561164357505f600d54115b156116655761166260646105ad600d5486610e2390919063ffffffff16565b90505b61166f8184611e06565b92505b305f908152602081905260409020546008548110801590819061169e5750600754600160a81b900460ff165b80156116b45750600754600160b01b900460ff16155b80156116d857506001600160a01b0387165f9081526013602052604090205460ff16155b80156116fc57506001600160a01b0387165f9081526011602052604090205460ff16155b801561172057506001600160a01b0386165f9081526011602052604090205460ff16155b156117c1576007805460ff60b01b1916600160b01b1790556009545f9061175c9061175790889061175290879061183f565b61183f565b611853565b600b546040516101009091046001600160a01b03169047905f81818185875af1925050503d805f81146117aa576040519150601f19603f3d011682016040523d82523d5f602084013e6117af565b606091505b50506007805460ff60b01b1916905550505b82156117d2576117d28730856119a3565b6117dd8787876119a3565b50505050505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81831161184d5782610e2e565b50919050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061188657611886611e8d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119019190611deb565b8160018151811061191457611914611e8d565b6001600160a01b03928316602091820292909201015260065461193a9130911684610e40565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119729085905f90869030904290600401611ea1565b5f604051808303815f87803b158015611989575f80fd5b505af115801561199b573d5f803e3d5ffd5b505050505050565b6001600160a01b038316611a075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610624565b6001600160a01b038216611a695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610624565b6001600160a01b0383165f9081526020819052604090205481811015611ae05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610624565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610886565b5f8060408385031215611b56575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b81811015611b9057858101830151858201604001528201611b74565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bc4575f80fd5b50565b5f8060408385031215611bd8575f80fd5b8235611be381611bb0565b946020939093013593505050565b5f805f60608486031215611c03575f80fd5b8335611c0e81611bb0565b92506020840135611c1e81611bb0565b929592945050506040919091013590565b5f60208284031215611c3f575f80fd5b8135610e2e81611bb0565b5f60208284031215611c5a575f80fd5b5035919050565b5f8060408385031215611c72575f80fd5b8235611c7d81611bb0565b91506020830135611c8d81611bb0565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ce657815f1904821115611ccc57611ccc611c98565b80851615611cd957918102915b93841c9390800290611cb1565b509250929050565b5f82611cfc575060016106dc565b81611d0857505f6106dc565b8160018114611d1e5760028114611d2857611d44565b60019150506106dc565b60ff841115611d3957611d39611c98565b50506001821b6106dc565b5060208310610133831016604e8410600b8410161715611d67575081810a6106dc565b611d718383611cac565b805f1904821115611d8457611d84611c98565b029392505050565b5f610e2e60ff841683611cee565b600181811c90821680611dae57607f821691505b60208210810361184d57634e487b7160e01b5f52602260045260245ffd5b5f60208284031215611ddc575f80fd5b81518015158114610e2e575f80fd5b5f60208284031215611dfb575f80fd5b8151610e2e81611bb0565b818103818111156106dc576106dc611c98565b5f805f60608486031215611e2b575f80fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176106dc576106dc611c98565b5f82611e7557634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106dc576106dc611c98565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611eef5784516001600160a01b031683529383019391830191600101611eca565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220cd787cabe5a6795c7db643c525997a224d0a34e3379696c41f7568bb8a282d5a64736f6c63430008140033

Deployed Bytecode Sourcemap

7445:9062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11351:510;;;;;;;;;;-1:-1:-1;11351:510:0;;;;;:::i;:::-;;:::i;:::-;;2904:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3843:201;;;;;;;;;;-1:-1:-1;3843:201:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;3843:201:0;1276:187:1;12026:271:0;;;;;;;;;;-1:-1:-1;12026:271:0;;;;;:::i;:::-;;:::i;16197:270::-;;;;;;;;;;-1:-1:-1;16197:270:0;;;;;:::i;:::-;;:::i;7529:41::-;;;;;;;;;;-1:-1:-1;7529:41:0;;;;-1:-1:-1;;;;;7529:41:0;;;;;;-1:-1:-1;;;;;2119:32:1;;;2101:51;;2089:2;2074:18;7529:41:0;1929:229:1;3232:108:0;;;;;;;;;;-1:-1:-1;3320:12:0;;3232:108;;;2309:25:1;;;2297:2;2282:18;3232:108:0;2163:177:1;4052:261:0;;;;;;;;;;-1:-1:-1;4052:261:0;;;;;:::i;:::-;;:::i;8357:22::-;;;;;;;;;;;;;;;;3124:100;;;;;;;;;;-1:-1:-1;3207:9:0;;3124:100;;3207:9;;;;2487:36:1;;2475:2;2460:18;3124:100:0;2345:184:1;8329:21:0;;;;;;;;;;;;;;;;7577:28;;;;;;;;;;-1:-1:-1;7577:28:0;;;;-1:-1:-1;;;;;7577:28:0;;;11122:93;;;;;;;;;;;;;:::i;3348:127::-;;;;;;;;;;-1:-1:-1;3348:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3449:18:0;3422:7;3449:18;;;;;;;;;;;;3348:127;1228:103;;;;;;;;;;;;;:::i;11869:149::-;;;;;;;;;;;;;:::i;11223:120::-;;;;;;;;;;;;;:::i;993:87::-;;;;;;;;;;-1:-1:-1;1066:6:0;;;;;-1:-1:-1;;;;;1066:6:0;993:87;;3012:104;;;;;;;;;;;;;:::i;15933:183::-;;;;;;;;;;-1:-1:-1;15933:183:0;;;;;:::i;:::-;;:::i;8259:29::-;;;;;;;;;;-1:-1:-1;8259:29:0;;;;;;;-1:-1:-1;;;;;8259:29:0;;;3483:193;;;;;;;;;;-1:-1:-1;3483:193:0;;;;;:::i;:::-;;:::i;8388:35::-;;;;;;;;;;;;;;;;10040:1074;;;;;;;;;;;;;:::i;3684:151::-;;;;;;;;;;-1:-1:-1;3684:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3800:18:0;;;3773:7;3800:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3684:151;7925:33;;;;;;;;;;;;;;;;12305:80;;;;;;;;;;;;;:::i;8430:24::-;;;;;;;;;;;;;;;;8295:27;;;;;;;;;;-1:-1:-1;8295:27:0;;;;-1:-1:-1;;;;;8295:27:0;;;11351:510;952:13;:11;:13::i;:::-;11490:41:::1;11520:10;3207:9:::0;;;;;3124:100;11520:10:::1;11516:14;::::0;:2:::1;:14;:::i;:::-;11490:21:::0;;:25:::1;:41::i;:::-;11466:65;;11555:30;11574:10;3207:9:::0;;;;;3124:100;11574:10:::1;11570:14;::::0;:2:::1;:14;:::i;:::-;11555:10:::0;;:14:::1;:30::i;:::-;11542:43;;11596:13;11612:30;11637:4;11612:20;11630:1;11612:13;3320:12:::0;;;3232:108;11612:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;11596:46;;11686:5;11661:21;:30;;:53;;;;;11709:5;11695:10;:19;;11661:53;11653:112;;;::::0;-1:-1:-1;;;11653:112:0;;5289:2:1;11653:112:0::1;::::0;::::1;5271:21:1::0;5328:2;5308:18;;;5301:30;5367:34;5347:18;;;5340:62;-1:-1:-1;;;5418:18:1;;;5411:44;5472:19;;11653:112:0::1;;;;;;;;;-1:-1:-1::0;11776:20:0::1;:44:::0;;;;11831:9:::1;:22:::0;11351:510::o;2904:100::-;2958:13;2991:5;2984:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2904:100;:::o;3843:201::-;3926:4;314:10;3982:32;314:10;3998:7;4007:6;3982:8;:32::i;:::-;4032:4;4025:11;;;3843:201;;;;;:::o;12026:271::-;952:13;:11;:13::i;:::-;12127:1:::1;12116:7;:12;;12108:56;;;::::0;-1:-1:-1;;;12108:56:0;;6089:2:1;12108:56:0::1;::::0;::::1;6071:21:1::0;6128:2;6108:18;;;6101:30;6167:33;6147:18;;;6140:61;6218:18;;12108:56:0::1;5887:355:1::0;12108:56:0::1;12195:1;12183:8;:13;;12175:58;;;::::0;-1:-1:-1;;;12175:58:0;;6449:2:1;12175:58:0::1;::::0;::::1;6431:21:1::0;;;6468:18;;;6461:30;6527:34;6507:18;;;6500:62;6579:18;;12175:58:0::1;6247:356:1::0;12175:58:0::1;12244:6;:16:::0;;;;12271:7:::1;:18:::0;12026:271::o;16197:270::-;952:13;:11;:13::i;:::-;16341:4:::1;-1:-1:-1::0;;;;;16316:30:0;::::1;::::0;16308:97:::1;;;::::0;-1:-1:-1;;;16308:97:0;;6810:2:1;16308:97:0::1;::::0;::::1;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:34;6868:18;;;6861:62;-1:-1:-1;;;6939:18:1;;;6932:52;7001:19;;16308:97:0::1;6608:418:1::0;16308:97:0::1;16416:43;::::0;-1:-1:-1;;;16416:43:0;;-1:-1:-1;;;;;7223:32:1;;;16416:43:0::1;::::0;::::1;7205:51:1::0;7272:18;;;7265:34;;;16416:29:0;::::1;::::0;::::1;::::0;7178:18:1;;16416:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16197:270:::0;;;:::o;4052:261::-;4149:4;314:10;4207:38;4223:4;314:10;4238:6;4207:15;:38::i;:::-;4256:27;4266:4;4272:2;4276:6;4256:9;:27::i;:::-;-1:-1:-1;4301:4:0;;4052:261;-1:-1:-1;;;;4052:261:0:o;11122:93::-;952:13;:11;:13::i;:::-;11196:11:::1;::::0;;-1:-1:-1;;;;11181:26:0;::::1;-1:-1:-1::0;;;11196:11:0;;;::::1;;;11195:12;11181:26:::0;;::::1;;::::0;;11122:93::o;1228:103::-;952:13;:11;:13::i;:::-;1293:30:::1;1320:1;1293:18;:30::i;:::-;1228:103::o:0;11869:149::-;952:13;:11;:13::i;:::-;3320:12;;11946:9:::1;:25:::0;;;11923:20:::1;:48:::0;11982:20:::1;:28:::0;;-1:-1:-1;;11982:28:0::1;::::0;;11869:149::o;11223:120::-;952:13;:11;:13::i;:::-;11315:20:::1;::::0;;-1:-1:-1;;11291:44:0;::::1;11315:20;::::0;;::::1;11314:21;11291:44;::::0;;11223:120::o;3012:104::-;3068:13;3101:7;3094:14;;;;;:::i;15933:183::-;952:13;:11;:13::i;:::-;16030:5:::1;16005:21;:30;;15997:63;;;::::0;-1:-1:-1;;;15997:63:0;;7794:2:1;15997:63:0::1;::::0;::::1;7776:21:1::0;7833:2;7813:18;;;7806:30;-1:-1:-1;;;7852:18:1;;;7845:50;7912:18;;15997:63:0::1;7592:344:1::0;15997:63:0::1;16071:37;::::0;314:10;;16071:37;::::1;;;::::0;16102:5;;16071:37:::1;::::0;;;16102:5;314:10;16071:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15933:183:::0;:::o;3483:193::-;3562:4;314:10;3618:28;314:10;3635:2;3639:6;3618:9;:28::i;10040:1074::-;952:13;:11;:13::i;:::-;10104:14:::1;::::0;-1:-1:-1;;;10104:14:0;::::1;;;10103:15;10095:51;;;::::0;-1:-1:-1;;;10095:51:0;;8143:2:1;10095:51:0::1;::::0;::::1;8125:21:1::0;8182:2;8162:18;;;8155:30;8221:25;8201:18;;;8194:53;8264:18;;10095:51:0::1;7941:347:1::0;10095:51:0::1;10268:15;:34:::0;;-1:-1:-1;;;;;;10268:34:0::1;10214:42;10268:34:::0;;::::1;::::0;;;10157:35:::1;10313:57:::0;;;:30:::1;:57;::::0;;;;:64;;-1:-1:-1;;10313:64:0::1;10268:34:::0;10313:64:::1;::::0;;:57;10424:25;;-1:-1:-1;;;10424:25:0;;;;10214:42;;10424:23:::1;::::0;:25:::1;::::0;;::::1;::::0;;;;;;;10214:42;10424:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10406:55:0::1;;10470:4;10477:15;;;;;;;;;-1:-1:-1::0;;;;;10477:15:0::1;-1:-1:-1::0;;;;;10477:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10406:94;::::0;-1:-1:-1;;;;;;10406:94:0::1;::::0;;;;;;-1:-1:-1;;;;;8779:15:1;;;10406:94:0::1;::::0;::::1;8761:34:1::0;8831:15;;8811:18;;;8804:43;8696:18;;10406:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10390:13;:110:::0;;-1:-1:-1;;;;;;10390:110:0::1;-1:-1:-1::0;;;;;10390:110:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;10511:49:0;;;:25:::1;:49;::::0;;;;;;;:56;;-1:-1:-1;;10511:56:0;;::::1;-1:-1:-1::0;10511:56:0;;::::1;::::0;;;10617:13;;;::::1;10578:54:::0;;:30:::1;:54:::0;;;;;;:61;;;;::::1;;::::0;;10684:15:::1;::::0;3320:12;;10652:64:::1;::::0;10669:4:::1;::::0;10684:15:::1;::::0;10652:8:::1;:64::i;:::-;10727:15;::::0;10867:6:::1;::::0;-1:-1:-1;;;;;10727:15:0;;::::1;::::0;:31:::1;::::0;10767:21:::1;::::0;10812:4:::1;::::0;10832:51:::1;::::0;10879:3:::1;::::0;10832:42:::1;::::0;10861:12:::1;::::0;10879:3;10861:12:::1;:::i;:::-;10850:4;3422:7:::0;3449:18;;;;;;;;;;;10832:24:::1;3348:127:::0;10832:51:::1;10898:1;10914::::0;10930:7:::1;1066:6:::0;;-1:-1:-1;;;;;1066:6:0;;;;;;993:87;10930:7:::1;10727:251;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10727:251:0;;;-1:-1:-1;;;;;9350:15:1;;;10727:251:0::1;::::0;::::1;9332:34:1::0;9382:18;;;9375:34;;;;9425:18;;;9418:34;;;;9468:18;;;9461:34;9532:15;;;9511:19;;;9504:44;10952:15:0::1;9564:19:1::0;;;9557:35;9266:19;;10727:251:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10996:13:0::1;::::0;11027:15:::1;::::0;10989:71:::1;::::0;-1:-1:-1;;;10989:71:0;;-1:-1:-1;;;;;11027:15:0;;::::1;10989:71;::::0;::::1;7205:51:1::0;-1:-1:-1;;7272:18:1;;;7265:34;10996:13:0;::::1;::::0;-1:-1:-1;10989:29:0::1;::::0;7178:18:1;;10989:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11088:11:0::1;:18:::0;;-1:-1:-1;;;;11071:35:0;-1:-1:-1;;;11071:35:0;;;10040:1074::o;12305:80::-;952:13;:11;:13::i;:::-;12376:1:::1;12366:7;:11:::0;;;12357:6:::1;:20:::0;12305:80::o;1088:132::-;1066:6;;-1:-1:-1;;;;;1066:6:0;;;;;314:10;1152:23;1144:68;;;;-1:-1:-1;;;1144:68:0;;10116:2:1;1144:68:0;;;10098:21:1;;;10135:18;;;10128:30;10194:34;10174:18;;;10167:62;10246:18;;1144:68:0;9914:356:1;363:98:0;421:7;448:5;452:1;448;:5;:::i;:::-;441:12;363:98;-1:-1:-1;;;363:98:0:o;469:::-;527:7;554:5;558:1;554;:5;:::i;5691:346::-;-1:-1:-1;;;;;5793:19:0;;5785:68;;;;-1:-1:-1;;;5785:68:0;;10872:2:1;5785:68:0;;;10854:21:1;10911:2;10891:18;;;10884:30;10950:34;10930:18;;;10923:62;-1:-1:-1;;;11001:18:1;;;10994:34;11045:19;;5785:68:0;10670:400:1;5785:68:0;-1:-1:-1;;;;;5872:21:0;;5864:68;;;;-1:-1:-1;;;5864:68:0;;11277:2:1;5864:68:0;;;11259:21:1;11316:2;11296:18;;;11289:30;11355:34;11335:18;;;11328:62;-1:-1:-1;;;11406:18:1;;;11399:32;11448:19;;5864:68:0;11075:398:1;5864:68:0;-1:-1:-1;;;;;5945:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5997:32;;2309:25:1;;;5997:32:0;;2282:18:1;5997:32:0;;;;;;;5691:346;;;:::o;6045:419::-;-1:-1:-1;;;;;3800:18:0;;;6146:24;3800:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6213:37:0;;6209:248;;6295:6;6275:16;:26;;6267:68;;;;-1:-1:-1;;;6267:68:0;;11680:2:1;6267:68:0;;;11662:21:1;11719:2;11699:18;;;11692:30;11758:31;11738:18;;;11731:59;11807:18;;6267:68:0;11478:353:1;6267:68:0;6379:51;6388:5;6395:7;6423:6;6404:16;:25;6379:8;:51::i;12393:2987::-;-1:-1:-1;;;;;12491:18:0;;12483:69;;;;-1:-1:-1;;;12483:69:0;;12038:2:1;12483:69:0;;;12020:21:1;12077:2;12057:18;;;12050:30;12116:34;12096:18;;;12089:62;-1:-1:-1;;;12167:18:1;;;12160:36;12213:19;;12483:69:0;11836:402:1;12483:69:0;-1:-1:-1;;;;;12571:16:0;;12563:65;;;;-1:-1:-1;;;12563:65:0;;12445:2:1;12563:65:0;;;12427:21:1;12484:2;12464:18;;;12457:30;12523:34;12503:18;;;12496:62;-1:-1:-1;;;12574:18:1;;;12567:34;12618:19;;12563:65:0;12243:400:1;12563:65:0;12656:1;12647:6;:10;12639:72;;;;-1:-1:-1;;;12639:72:0;;12850:2:1;12639:72:0;;;12832:21:1;12889:2;12869:18;;;12862:30;12928:34;12908:18;;;12901:62;-1:-1:-1;;;12979:18:1;;;12972:47;13036:19;;12639:72:0;12648:413:1;12639:72:0;1066:6;;-1:-1:-1;;;;;12728:15:0;;;1066:6;;;;;12728:15;;;;:32;;-1:-1:-1;1066:6:0;;-1:-1:-1;;;;;12747:13:0;;;1066:6;;;;;12747:13;;12728:32;:52;;;;-1:-1:-1;;;;;;12764:16:0;;;;12728:52;:77;;;;-1:-1:-1;;;;;;12784:21:0;;12798:6;12784:21;;12728:77;:90;;;;-1:-1:-1;12810:8:0;;-1:-1:-1;;;12810:8:0;;;;12809:9;12728:90;12724:1383;;;12840:14;;-1:-1:-1;;;12840:14:0;;;;12835:141;;-1:-1:-1;;;;;12883:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;12911:22:0;;;;;;:18;:22;;;;;;;;12883:50;12875:85;;;;-1:-1:-1;;;12875:85:0;;13268:2:1;12875:85:0;;;13250:21:1;13307:2;13287:18;;;13280:30;-1:-1:-1;;;13326:18:1;;;13319:52;13388:18;;12875:85:0;13066:346:1;12875:85:0;13054:20;;;;13050:368;;;1066:6;;-1:-1:-1;;;;;13099:13:0;;;1066:6;;;;;13099:13;;;;:47;;-1:-1:-1;13130:15:0;;-1:-1:-1;;;;;13116:30:0;;;13130:15;;13116:30;;13099:47;:79;;;;-1:-1:-1;13164:13:0;;-1:-1:-1;;;;;13150:28:0;;;13164:13;;13150:28;;13099:79;13095:308;;;13240:9;13211:39;;;;:28;:39;;;;;;13253:12;-1:-1:-1;13203:103:0;;;;-1:-1:-1;;;13203:103:0;;13619:2:1;13203:103:0;;;13601:21:1;13658:2;13638:18;;;13631:30;13697:34;13677:18;;;13670:62;-1:-1:-1;;;13748:18:1;;;13741:34;13792:19;;13203:103:0;13417:400:1;13203:103:0;13358:9;13329:39;;;;:28;:39;;;;;13371:12;13329:54;;13095:308;-1:-1:-1;;;;;13438:31:0;;;;;;:25;:31;;;;;;;;:70;;;;-1:-1:-1;;;;;;13474:34:0;;;;;;:30;:34;;;;;;;;13473:35;13438:70;13434:662;;;13547:20;;13537:6;:30;;13529:98;;;;-1:-1:-1;;;13529:98:0;;14024:2:1;13529:98:0;;;14006:21:1;14063:2;14043:18;;;14036:30;14102:34;14082:18;;;14075:62;14173:25;14153:18;;;14146:53;14216:19;;13529:98:0;13822:419:1;13529:98:0;13680:9;;-1:-1:-1;;;;;3449:18:0;;3422:7;3449:18;;;;;;;;;;;13654:22;;:6;:22;:::i;:::-;:35;;13646:68;;;;-1:-1:-1;;;13646:68:0;;14578:2:1;13646:68:0;;;14560:21:1;14617:2;14597:18;;;14590:30;-1:-1:-1;;;14636:18:1;;;14629:50;14696:18;;13646:68:0;14376:344:1;13646:68:0;13434:662;;;-1:-1:-1;;;;;13740:29:0;;;;;;:25;:29;;;;;;;;:70;;;;-1:-1:-1;;;;;;13774:36:0;;;;;;:30;:36;;;;;;;;13773:37;13740:70;13736:360;;;13849:20;;13839:6;:30;;13831:99;;;;-1:-1:-1;;;13831:99:0;;14927:2:1;13831:99:0;;;14909:21:1;14966:2;14946:18;;;14939:30;15005:34;14985:18;;;14978:62;15076:26;15056:18;;;15049:54;15120:19;;13831:99:0;14725:420:1;13736:360:0;-1:-1:-1;;;;;13957:34:0;;;;;;:30;:34;;;;;;;;13952:144;;14046:9;;-1:-1:-1;;;;;3449:18:0;;3422:7;3449:18;;;;;;;;;;;14020:22;;:6;:22;:::i;:::-;:35;;14012:68;;;;-1:-1:-1;;;14012:68:0;;14578:2:1;14012:68:0;;;14560:21:1;14617:2;14597:18;;;14590:30;-1:-1:-1;;;14636:18:1;;;14629:50;14696:18;;14012:68:0;14376:344:1;14012:68:0;14135:8;;-1:-1:-1;;;;;14158:24:0;;14119:12;14158:24;;;:18;:24;;;;;;14135:8;-1:-1:-1;;;14135:8:0;;;;;14134:9;;14158:24;;:50;;-1:-1:-1;;;;;;14186:22:0;;;;;;:18;:22;;;;;;;;14158:50;14154:98;;;-1:-1:-1;14235:5:0;14154:98;14264:12;14295:7;14291:314;;;-1:-1:-1;;;;;14323:29:0;;;;;;:25;:29;;;;;;;;:44;;;;;14366:1;14356:7;;:11;14323:44;14319:246;;;14395:28;14419:3;14395:19;14406:7;;14395:6;:10;;:19;;;;:::i;:28::-;14388:35;;14319:246;;;-1:-1:-1;;;;;14449:31:0;;;;;;:25;:31;;;;;;;;:45;;;;;14493:1;14484:6;;:10;14449:45;14445:120;;;14522:27;14545:3;14522:18;14533:6;;14522;:10;;:18;;;;:::i;:27::-;14515:34;;14445:120;14579:14;14589:4;14579:14;;:::i;:::-;;;14291:314;14661:4;14617:23;3449:18;;;;;;;;;;;14712;;14693:37;;;;;;;14759:35;;-1:-1:-1;14783:11:0;;-1:-1:-1;;;14783:11:0;;;;14759:35;:61;;;;-1:-1:-1;14812:8:0;;-1:-1:-1;;;14812:8:0;;;;14811:9;14759:61;:110;;;;-1:-1:-1;;;;;;14838:31:0;;;;;;:25;:31;;;;;;;;14837:32;14759:110;:152;;;;-1:-1:-1;;;;;;14887:24:0;;;;;;:18;:24;;;;;;;;14886:25;14759:152;:192;;;;-1:-1:-1;;;;;;14929:22:0;;;;;;:18;:22;;;;;;;;14928:23;14759:192;14741:491;;;14978:8;:15;;-1:-1:-1;;;;14978:15:0;-1:-1:-1;;;14978:15:0;;;15085:10;;14978:15;;15035:63;;15052:45;;15056:6;;15064:32;;15068:15;;15064:3;:32::i;:::-;15052:3;:45::i;:::-;15035:16;:63::i;:::-;15135:14;;15127:62;;15135:14;;;;-1:-1:-1;;;;;15135:14:0;;15163:21;;15127:62;;;;15163:21;15135:14;15127:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15204:8:0;:16;;-1:-1:-1;;;;15204:16:0;;;-1:-1:-1;;14741:491:0;15248:8;;15244:83;;15273:42;15289:4;15303;15310;15273:15;:42::i;:::-;15339:33;15355:4;15361:2;15365:6;15339:15;:33::i;:::-;12472:2908;;;;12393:2987;;;:::o;1339:191::-;1432:6;;;-1:-1:-1;;;;;1449:17:0;;;1432:6;1449:17;;;-1:-1:-1;;;;;;1449:17:0;;;;;;1482:40;;1432:6;;;;;;;;1482:40;;1413:16;;1482:40;1402:128;1339:191;:::o;9927:105::-;9984:7;10014:1;10010;:5;10009:15;;10023:1;10009:15;;;-1:-1:-1;10019:1:0;9927:105;-1:-1:-1;9927:105:0:o;15388:473::-;15478:16;;;15492:1;15478:16;;;;;;;;15454:21;;15478:16;;;;;;;;;;-1:-1:-1;15478:16:0;15454:40;;15523:4;15505;15510:1;15505:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15505:23:0;;;:7;;;;;;;;;;:23;;;;15549:15;;:22;;;-1:-1:-1;;;15549:22:0;;;;:15;;;;;:20;;:22;;;;;15505:7;;15549:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15539:4;15544:1;15539:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15539:32:0;;;:7;;;;;;;;;:32;15616:15;;15584:62;;15601:4;;15616:15;15634:11;15584:8;:62::i;:::-;15657:15;;:196;;-1:-1:-1;;;15657:196:0;;-1:-1:-1;;;;;15657:15:0;;;;:66;;:196;;15738:11;;15657:15;;15780:4;;15807;;15827:15;;15657:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15443:418;15388:473;:::o;4321:806::-;-1:-1:-1;;;;;4418:18:0;;4410:68;;;;-1:-1:-1;;;4410:68:0;;16811:2:1;4410:68:0;;;16793:21:1;16850:2;16830:18;;;16823:30;16889:34;16869:18;;;16862:62;-1:-1:-1;;;16940:18:1;;;16933:35;16985:19;;4410:68:0;16609:401:1;4410:68:0;-1:-1:-1;;;;;4497:16:0;;4489:64;;;;-1:-1:-1;;;4489:64:0;;17217:2:1;4489:64:0;;;17199:21:1;17256:2;17236:18;;;17229:30;17295:34;17275:18;;;17268:62;-1:-1:-1;;;17346:18:1;;;17339:33;17389:19;;4489:64:0;17015:399:1;4489:64:0;-1:-1:-1;;;;;4639:15:0;;4617:19;4639:15;;;;;;;;;;;4673:21;;;;4665:72;;;;-1:-1:-1;;;4665:72:0;;17621:2:1;4665:72:0;;;17603:21:1;17660:2;17640:18;;;17633:30;17699:34;17679:18;;;17672:62;-1:-1:-1;;;17750:18:1;;;17743:36;17796:19;;4665:72:0;17419:402:1;4665:72:0;-1:-1:-1;;;;;4773:15:0;;;:9;:15;;;;;;;;;;;4791:20;;;4773:38;;4991:13;;;;;;;;;;:23;;;;;;5043:26;;2309:25:1;;;4991:13:0;;5043:26;;2282:18:1;5043:26:0;;;;;;;5082:37;6472:91;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;875:70;820:131;:::o;956:315::-;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1468:456::-;1545:6;1553;1561;1614:2;1602:9;1593:7;1589:23;1585:32;1582:52;;;1630:1;1627;1620:12;1582:52;1669:9;1656:23;1688:31;1713:5;1688:31;:::i;:::-;1738:5;-1:-1:-1;1795:2:1;1780:18;;1767:32;1808:33;1767:32;1808:33;:::i;:::-;1468:456;;1860:7;;-1:-1:-1;;;1914:2:1;1899:18;;;;1886:32;;1468:456::o;2742:247::-;2801:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:52;;;2870:1;2867;2860:12;2822:52;2909:9;2896:23;2928:31;2953:5;2928:31;:::i;2994:180::-;3053:6;3106:2;3094:9;3085:7;3081:23;3077:32;3074:52;;;3122:1;3119;3112:12;3074:52;-1:-1:-1;3145:23:1;;2994:180;-1:-1:-1;2994:180:1:o;3179:388::-;3247:6;3255;3308:2;3296:9;3287:7;3283:23;3279:32;3276:52;;;3324:1;3321;3314:12;3276:52;3363:9;3350:23;3382:31;3407:5;3382:31;:::i;:::-;3432:5;-1:-1:-1;3489:2:1;3474:18;;3461:32;3502:33;3461:32;3502:33;:::i;:::-;3554:7;3544:17;;;3179:388;;;;;:::o;3572:127::-;3633:10;3628:3;3624:20;3621:1;3614:31;3664:4;3661:1;3654:15;3688:4;3685:1;3678:15;3704:422;3793:1;3836:5;3793:1;3850:270;3871:7;3861:8;3858:21;3850:270;;;3930:4;3926:1;3922:6;3918:17;3912:4;3909:27;3906:53;;;3939:18;;:::i;:::-;3989:7;3979:8;3975:22;3972:55;;;4009:16;;;;3972:55;4088:22;;;;4048:15;;;;3850:270;;;3854:3;3704:422;;;;;:::o;4131:806::-;4180:5;4210:8;4200:80;;-1:-1:-1;4251:1:1;4265:5;;4200:80;4299:4;4289:76;;-1:-1:-1;4336:1:1;4350:5;;4289:76;4381:4;4399:1;4394:59;;;;4467:1;4462:130;;;;4374:218;;4394:59;4424:1;4415:10;;4438:5;;;4462:130;4499:3;4489:8;4486:17;4483:43;;;4506:18;;:::i;:::-;-1:-1:-1;;4562:1:1;4548:16;;4577:5;;4374:218;;4676:2;4666:8;4663:16;4657:3;4651:4;4648:13;4644:36;4638:2;4628:8;4625:16;4620:2;4614:4;4611:12;4607:35;4604:77;4601:159;;;-1:-1:-1;4713:19:1;;;4745:5;;4601:159;4792:34;4817:8;4811:4;4792:34;:::i;:::-;4862:6;4858:1;4854:6;4850:19;4841:7;4838:32;4835:58;;;4873:18;;:::i;:::-;4911:20;;4131:806;-1:-1:-1;;;4131:806:1:o;4942:140::-;5000:5;5029:47;5070:4;5060:8;5056:19;5050:4;5029:47;:::i;5502:380::-;5581:1;5577:12;;;;5624;;;5645:61;;5699:4;5691:6;5687:17;5677:27;;5645:61;5752:2;5744:6;5741:14;5721:18;5718:38;5715:161;;5798:10;5793:3;5789:20;5786:1;5779:31;5833:4;5830:1;5823:15;5861:4;5858:1;5851:15;7310:277;7377:6;7430:2;7418:9;7409:7;7405:23;7401:32;7398:52;;;7446:1;7443;7436:12;7398:52;7478:9;7472:16;7531:5;7524:13;7517:21;7510:5;7507:32;7497:60;;7553:1;7550;7543:12;8293:251;8363:6;8416:2;8404:9;8395:7;8391:23;8387:32;8384:52;;;8432:1;8429;8422:12;8384:52;8464:9;8458:16;8483:31;8508:5;8483:31;:::i;8858:128::-;8925:9;;;8946:11;;;8943:37;;;8960:18;;:::i;9603:306::-;9691:6;9699;9707;9760:2;9748:9;9739:7;9735:23;9731:32;9728:52;;;9776:1;9773;9766:12;9728:52;9805:9;9799:16;9789:26;;9855:2;9844:9;9840:18;9834:25;9824:35;;9899:2;9888:9;9884:18;9878:25;9868:35;;9603:306;;;;;:::o;10275:168::-;10348:9;;;10379;;10396:15;;;10390:22;;10376:37;10366:71;;10417:18;;:::i;10448:217::-;10488:1;10514;10504:132;;10558:10;10553:3;10549:20;10546:1;10539:31;10593:4;10590:1;10583:15;10621:4;10618:1;10611:15;10504:132;-1:-1:-1;10650:9:1;;10448:217::o;14246:125::-;14311:9;;;14332:10;;;14329:36;;;14345:18;;:::i;15492:127::-;15553:10;15548:3;15544:20;15541:1;15534:31;15584:4;15581:1;15574:15;15608:4;15605:1;15598:15;15624:980;15886:4;15934:3;15923:9;15919:19;15965:6;15954:9;15947:25;15991:2;16029:6;16024:2;16013:9;16009:18;16002:34;16072:3;16067:2;16056:9;16052:18;16045:31;16096:6;16131;16125:13;16162:6;16154;16147:22;16200:3;16189:9;16185:19;16178:26;;16239:2;16231:6;16227:15;16213:29;;16260:1;16270:195;16284:6;16281:1;16278:13;16270:195;;;16349:13;;-1:-1:-1;;;;;16345:39:1;16333:52;;16440:15;;;;16405:12;;;;16381:1;16299:9;16270:195;;;-1:-1:-1;;;;;;;16521:32:1;;;;16516:2;16501:18;;16494:60;-1:-1:-1;;;16585:3:1;16570:19;16563:35;16482:3;15624:980;-1:-1:-1;;;15624:980:1:o

Swarm Source

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