ETH Price: $2,471.55 (+0.48%)

Token

Jesus Fork (JORK)
 

Overview

Max Total Supply

1,000,000,000 JORK

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,449,019.512211633 JORK

Value
$0.00
0x694114618f072e8032C6904Ee53bb05B234aD2d2
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:
JesusFork

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-05
*/

// SPDX-License-Identifier: MIT

/**
$JORK, The only name that saves your soul and your bags.

WEB: https://www.jesusfork.com
X:   https://x.com/jorkcoin
TG:  https://t.me/jorkcoin
*/

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

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;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Jesus Fork";
    string private constant _symbol = unicode"JORK";
    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _taxSwapThreshold = 10000 * 10 ** _decimals;
    uint256 public _maxTaxSwap = _tTotal * 4 / 1000;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            _buyCount++;
        }

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

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

        (uint256 finalAmount, uint256 feeAmount) = takeFee(from, to, amount);

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

        return true;
    }

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

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

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

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

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

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

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

        return (transferAmount, feeAmount);
    }

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

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

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

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

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

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

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

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

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

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

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

    receive() external payable {}
}

Contract Security Audit

Contract ABI

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

6080604052603260085560326009556014600a556014600b556001600c556001600d556014600e556014600f556000601055600060115560646009600a62000048919062000437565b6200005890633b9aca006200044f565b620000659060026200044f565b62000071919062000469565b6012556064620000846009600a62000437565b6200009490633b9aca006200044f565b620000a19060026200044f565b620000ad919062000469565b601355620000be6009600a62000437565b620000cc906127106200044f565b6014556103e8620000e06009600a62000437565b620000f090633b9aca006200044f565b620000fd9060046200044f565b62000109919062000469565b6015556017805461ffff60a81b191690553480156200012757600080fd5b506200013333620002d2565b60068054732ce781364ca3dc6f78a3e63fbd1a5fd8290321126001600160a01b03199182168117909255600780549091169091179055620001776009600a62000437565b6200018790633b9aca006200044f565b336000908152600160208190526040822092909255600390620001b26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526003909352818320805485166001908117909155600654909116835290822080549093168117909255600490620002226000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560065490911681526004909252902080549091166001179055620002713390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002ab6009600a62000437565b620002bb90633b9aca006200044f565b60405190815260200160405180910390a36200048c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003795781600019048211156200035d576200035d62000322565b808516156200036b57918102915b93841c93908002906200033d565b509250929050565b600082620003925750600162000431565b81620003a15750600062000431565b8160018114620003ba5760028114620003c557620003e5565b600191505062000431565b60ff841115620003d957620003d962000322565b50506001821b62000431565b5060208310610133831016604e8410600b84101617156200040a575081810a62000431565b62000416838362000338565b80600019048211156200042d576200042d62000322565b0290505b92915050565b60006200044860ff84168362000381565b9392505050565b808202811582820484141762000431576200043162000322565b6000826200048757634e487b7160e01b600052601260045260246000fd5b500490565b611ffe806200049c6000396000f3fe6080604052600436106101445760003560e01c8063751039fc116100b6578063a9059cbb1161006f578063a9059cbb14610371578063bf474bed14610391578063c9567bf9146103a7578063dd62ed3e146103bc578063f2fde38b14610402578063f42938901461042257600080fd5b8063751039fc146102bb57806377b54bad146102d05780637d1db4a5146102f05780638da5cb5b146103065780638f9a55c01461032e57806395d89b411461034457600080fd5b806323b872dd1161010857806323b872dd1461021e578063313ce5671461023e57806341fb0d211461025a57806351bc3c851461027157806370a0823114610286578063715018a6146102a657600080fd5b806306fdde0314610150578063095ea7b3146101955780630faee56f146101c557806318160ddd146101e95780632307b441146101fe57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600a8152694a6573757320466f726b60b01b60208201525b60405161018c9190611a1f565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004611a82565b610437565b604051901515815260200161018c565b3480156101d157600080fd5b506101db60155481565b60405190815260200161018c565b3480156101f557600080fd5b506101db61044e565b34801561020a57600080fd5b506101b5610219366004611b84565b61046f565b34801561022a57600080fd5b506101b5610239366004611c46565b610657565b34801561024a57600080fd5b506040516009815260200161018c565b34801561026657600080fd5b5061026f6106be565b005b34801561027d57600080fd5b5061026f6106f9565b34801561029257600080fd5b506101db6102a1366004611c87565b610729565b3480156102b257600080fd5b5061026f610744565b3480156102c757600080fd5b5061026f61077a565b3480156102dc57600080fd5b506101b56102eb366004611a82565b6107b1565b3480156102fc57600080fd5b506101db60125481565b34801561031257600080fd5b506000546040516001600160a01b03909116815260200161018c565b34801561033a57600080fd5b506101db60135481565b34801561035057600080fd5b506040805180820190915260048152634a4f524b60e01b602082015261017f565b34801561037d57600080fd5b506101b561038c366004611a82565b6108df565b34801561039d57600080fd5b506101db60145481565b3480156103b357600080fd5b5061026f6108ec565b3480156103c857600080fd5b506101db6103d7366004611ca4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561040e57600080fd5b5061026f61041d366004611c87565b610cb4565b34801561042e57600080fd5b5061026f610d4f565b6000610444338484610dec565b5060015b92915050565b600061045c6009600a611dd7565b61046a90633b9aca00611de6565b905090565b600080546001600160a01b031633146104a35760405162461bcd60e51b815260040161049a90611dfd565b60405180910390fd5b601754600160a01b900460ff16156105235760405162461bcd60e51b815260206004820152603760248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201527f742061697264726f70206166746572206c61756e63682e000000000000000000606482015260840161049a565b81518351146105745760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161049a565b60c88351106105e45760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161049a565b60005b835181101561064d57600084828151811061060457610604611e32565b60200260200101519050600084838151811061062257610622611e32565b60200260200101519050610637338383610f10565b505050808061064590611e48565b9150506105e7565b5060019392505050565b6000610664848484610f10565b5061064d84336106b285604051806060016040528060288152602001611fa1602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061144a565b610dec565b9392505050565b6000546001600160a01b031633146106e85760405162461bcd60e51b815260040161049a90611dfd565b6001600a819055600b819055600c55565b600061070430610729565b905080156107155761071581611484565b47801561072557610725816115fe565b5050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b0316331461076e5760405162461bcd60e51b815260040161049a90611dfd565b61077860006116a4565b565b6000546001600160a01b031633146107a45760405162461bcd60e51b815260040161049a90611dfd565b6000196012819055601355565b600081600003610826576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611e61565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af11580156108bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b79190611e7a565b600061064d338484610f10565b6000546001600160a01b031633146109165760405162461bcd60e51b815260040161049a90611dfd565b601754600160a01b900460ff16156109705760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161049a565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109b99030906109ab6009600a611dd7565b6106b290633b9aca00611de6565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611e9c565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190611e9c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190611e9c565b601780546001600160a01b0319166001600160a01b039283161790556016541663f305d7194730610b5781610729565b600080610b6c6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610bd4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bf99190611eb9565b505060175460165460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c769190611e7a565b50601780546201000160a01b62ff00ff60a01b198216179091556001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b03163314610cde5760405162461bcd60e51b815260040161049a90611dfd565b6001600160a01b038116610d435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161049a565b610d4c816116a4565b50565b60004711610db25760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161049a565b60065460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610725573d6000803e3d6000fd5b6001600160a01b038316610e4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049a565b6001600160a01b038216610eaf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610f765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049a565b6001600160a01b038316610fd85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049a565b6000821161103a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049a565b601754600160a01b900460ff168061106a57506001600160a01b03841660009081526003602052604090205460ff165b8061108d57506001600160a01b03831660009081526003602052604090205460ff165b6110c75760405162461bcd60e51b815260206004820152600b60248201526a139bdd08115b98589b195960aa1b604482015260640161049a565b601754600160b01b900460ff1615806110e95750601754600160a81b900460ff165b15611100576110f98484846116f4565b90506106b7565b6017546001600160a01b03858116911614801561112b57506016546001600160a01b03848116911614155b801561115057506001600160a01b03831660009081526003602052604090205460ff16155b15611222576012548211156111a75760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161049a565b601354826111b485610729565b6111be9190611ee7565b111561120c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b6011805490600061121c83611e48565b91905055505b6017546001600160a01b0384811691161480159061125957506001600160a01b03831660009081526003602052604090205460ff16155b156112c3576013548261126b85610729565b6112759190611ee7565b11156112c35760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b60006112ce30610729565b60145490915080841015906000906112e530610729565b6017549111159150600160a81b900460ff1615801561131157506017546001600160a01b038781169116145b801561131a5750815b801561132f5750601754600160b01b900460ff165b80156113385750805b80156113475750601054601154115b1561137b576113696113648661135f866015546117da565b6117da565b611484565b47801561137957611379476115fe565b505b6000806113898989896117ef565b6001600160a01b038b1660009081526001602052604090205491935091506113b1908861194a565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546113e0908361198c565b6001600160a01b03808a166000818152600160205260409020929092558a167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61142a848b611efa565b60405190815260200160405180910390a350600198975050505050505050565b6000818484111561146e5760405162461bcd60e51b815260040161049a9190611a1f565b50600061147b8486611efa565b95945050505050565b6017805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114cc576114cc611e32565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190611e9c565b8160018151811061155c5761155c611e32565b6001600160a01b0392831660209182029290920101526016546115829130911684610dec565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906115bb908590600090869030904290600401611f0d565b600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b50506017805460ff60a81b1916905550505050565b60006064600854836116109190611de6565b61161a9190611f7e565b905060006116288284611efa565b6006546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015611663573d6000803e3d6000fd5b506007546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561169e573d6000803e3d6000fd5b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260019091529182205461174591849061144a565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611774908361198c565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117c89086815260200190565b60405180910390a35060019392505050565b60008183116117e957826106b7565b50919050565b6001600160a01b03831660009081526004602052604081205481908190309060ff161561181d575085611876565b6001600160a01b03861660009081526005602052604090205460ff161561185c57600f546011541161185157600b54611855565b600d545b9150611876565b600e546011541161186f57600a54611873565b600c545b91505b60008061188384886119eb565b6001600160a01b038b166000908152600460205260408120549294509092509060ff166118b057816118b2565b825b9050801561193a576001600160a01b0384166000908152600160205260409020546118dd908261198c565b6001600160a01b0380861660008181526001602052604090819020939093559151908c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119319086815260200190565b60405180910390a35b9199919850909650505050505050565b60006106b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061144a565b6000806119998385611ee7565b9050838110156106b75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049a565b6000808060646119fb8686611de6565b611a059190611f7e565b90506000611a13858361194a565b96919550909350505050565b600060208083528351808285015260005b81811015611a4c57858101830151858201604001528201611a30565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d4c57600080fd5b60008060408385031215611a9557600080fd5b8235611aa081611a6d565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611aed57611aed611aae565b604052919050565b600067ffffffffffffffff821115611b0f57611b0f611aae565b5060051b60200190565b600082601f830112611b2a57600080fd5b81356020611b3f611b3a83611af5565b611ac4565b82815260059290921b84018101918181019086841115611b5e57600080fd5b8286015b84811015611b795780358352918301918301611b62565b509695505050505050565b60008060408385031215611b9757600080fd5b823567ffffffffffffffff80821115611baf57600080fd5b818501915085601f830112611bc357600080fd5b81356020611bd3611b3a83611af5565b82815260059290921b84018101918181019089841115611bf257600080fd5b948201945b83861015611c19578535611c0a81611a6d565b82529482019490820190611bf7565b96505086013592505080821115611c2f57600080fd5b50611c3c85828601611b19565b9150509250929050565b600080600060608486031215611c5b57600080fd5b8335611c6681611a6d565b92506020840135611c7681611a6d565b929592945050506040919091013590565b600060208284031215611c9957600080fd5b81356106b781611a6d565b60008060408385031215611cb757600080fd5b8235611cc281611a6d565b91506020830135611cd281611a6d565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611d2e578160001904821115611d1457611d14611cdd565b80851615611d2157918102915b93841c9390800290611cf8565b509250929050565b600082611d4557506001610448565b81611d5257506000610448565b8160018114611d685760028114611d7257611d8e565b6001915050610448565b60ff841115611d8357611d83611cdd565b50506001821b610448565b5060208310610133831016604e8410600b8410161715611db1575081810a610448565b611dbb8383611cf3565b8060001904821115611dcf57611dcf611cdd565b029392505050565b60006106b760ff841683611d36565b808202811582820484141761044857610448611cdd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201611e5a57611e5a611cdd565b5060010190565b600060208284031215611e7357600080fd5b5051919050565b600060208284031215611e8c57600080fd5b815180151581146106b757600080fd5b600060208284031215611eae57600080fd5b81516106b781611a6d565b600080600060608486031215611ece57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561044857610448611cdd565b8181038181111561044857610448611cdd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f5d5784516001600160a01b031683529383019391830191600101611f38565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611f9b57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208adc36031d8b1d3b3abe3256322f37893bd8b51001dc02dd1800332f1c48ea0864736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063751039fc116100b6578063a9059cbb1161006f578063a9059cbb14610371578063bf474bed14610391578063c9567bf9146103a7578063dd62ed3e146103bc578063f2fde38b14610402578063f42938901461042257600080fd5b8063751039fc146102bb57806377b54bad146102d05780637d1db4a5146102f05780638da5cb5b146103065780638f9a55c01461032e57806395d89b411461034457600080fd5b806323b872dd1161010857806323b872dd1461021e578063313ce5671461023e57806341fb0d211461025a57806351bc3c851461027157806370a0823114610286578063715018a6146102a657600080fd5b806306fdde0314610150578063095ea7b3146101955780630faee56f146101c557806318160ddd146101e95780632307b441146101fe57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600a8152694a6573757320466f726b60b01b60208201525b60405161018c9190611a1f565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004611a82565b610437565b604051901515815260200161018c565b3480156101d157600080fd5b506101db60155481565b60405190815260200161018c565b3480156101f557600080fd5b506101db61044e565b34801561020a57600080fd5b506101b5610219366004611b84565b61046f565b34801561022a57600080fd5b506101b5610239366004611c46565b610657565b34801561024a57600080fd5b506040516009815260200161018c565b34801561026657600080fd5b5061026f6106be565b005b34801561027d57600080fd5b5061026f6106f9565b34801561029257600080fd5b506101db6102a1366004611c87565b610729565b3480156102b257600080fd5b5061026f610744565b3480156102c757600080fd5b5061026f61077a565b3480156102dc57600080fd5b506101b56102eb366004611a82565b6107b1565b3480156102fc57600080fd5b506101db60125481565b34801561031257600080fd5b506000546040516001600160a01b03909116815260200161018c565b34801561033a57600080fd5b506101db60135481565b34801561035057600080fd5b506040805180820190915260048152634a4f524b60e01b602082015261017f565b34801561037d57600080fd5b506101b561038c366004611a82565b6108df565b34801561039d57600080fd5b506101db60145481565b3480156103b357600080fd5b5061026f6108ec565b3480156103c857600080fd5b506101db6103d7366004611ca4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561040e57600080fd5b5061026f61041d366004611c87565b610cb4565b34801561042e57600080fd5b5061026f610d4f565b6000610444338484610dec565b5060015b92915050565b600061045c6009600a611dd7565b61046a90633b9aca00611de6565b905090565b600080546001600160a01b031633146104a35760405162461bcd60e51b815260040161049a90611dfd565b60405180910390fd5b601754600160a01b900460ff16156105235760405162461bcd60e51b815260206004820152603760248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201527f742061697264726f70206166746572206c61756e63682e000000000000000000606482015260840161049a565b81518351146105745760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161049a565b60c88351106105e45760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161049a565b60005b835181101561064d57600084828151811061060457610604611e32565b60200260200101519050600084838151811061062257610622611e32565b60200260200101519050610637338383610f10565b505050808061064590611e48565b9150506105e7565b5060019392505050565b6000610664848484610f10565b5061064d84336106b285604051806060016040528060288152602001611fa1602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061144a565b610dec565b9392505050565b6000546001600160a01b031633146106e85760405162461bcd60e51b815260040161049a90611dfd565b6001600a819055600b819055600c55565b600061070430610729565b905080156107155761071581611484565b47801561072557610725816115fe565b5050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b0316331461076e5760405162461bcd60e51b815260040161049a90611dfd565b61077860006116a4565b565b6000546001600160a01b031633146107a45760405162461bcd60e51b815260040161049a90611dfd565b6000196012819055601355565b600081600003610826576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611e61565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af11580156108bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b79190611e7a565b600061064d338484610f10565b6000546001600160a01b031633146109165760405162461bcd60e51b815260040161049a90611dfd565b601754600160a01b900460ff16156109705760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161049a565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109b99030906109ab6009600a611dd7565b6106b290633b9aca00611de6565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611e9c565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190611e9c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190611e9c565b601780546001600160a01b0319166001600160a01b039283161790556016541663f305d7194730610b5781610729565b600080610b6c6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610bd4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bf99190611eb9565b505060175460165460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c769190611e7a565b50601780546201000160a01b62ff00ff60a01b198216179091556001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b03163314610cde5760405162461bcd60e51b815260040161049a90611dfd565b6001600160a01b038116610d435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161049a565b610d4c816116a4565b50565b60004711610db25760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161049a565b60065460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610725573d6000803e3d6000fd5b6001600160a01b038316610e4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049a565b6001600160a01b038216610eaf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610f765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049a565b6001600160a01b038316610fd85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049a565b6000821161103a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049a565b601754600160a01b900460ff168061106a57506001600160a01b03841660009081526003602052604090205460ff165b8061108d57506001600160a01b03831660009081526003602052604090205460ff165b6110c75760405162461bcd60e51b815260206004820152600b60248201526a139bdd08115b98589b195960aa1b604482015260640161049a565b601754600160b01b900460ff1615806110e95750601754600160a81b900460ff165b15611100576110f98484846116f4565b90506106b7565b6017546001600160a01b03858116911614801561112b57506016546001600160a01b03848116911614155b801561115057506001600160a01b03831660009081526003602052604090205460ff16155b15611222576012548211156111a75760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161049a565b601354826111b485610729565b6111be9190611ee7565b111561120c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b6011805490600061121c83611e48565b91905055505b6017546001600160a01b0384811691161480159061125957506001600160a01b03831660009081526003602052604090205460ff16155b156112c3576013548261126b85610729565b6112759190611ee7565b11156112c35760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b60006112ce30610729565b60145490915080841015906000906112e530610729565b6017549111159150600160a81b900460ff1615801561131157506017546001600160a01b038781169116145b801561131a5750815b801561132f5750601754600160b01b900460ff165b80156113385750805b80156113475750601054601154115b1561137b576113696113648661135f866015546117da565b6117da565b611484565b47801561137957611379476115fe565b505b6000806113898989896117ef565b6001600160a01b038b1660009081526001602052604090205491935091506113b1908861194a565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546113e0908361198c565b6001600160a01b03808a166000818152600160205260409020929092558a167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61142a848b611efa565b60405190815260200160405180910390a350600198975050505050505050565b6000818484111561146e5760405162461bcd60e51b815260040161049a9190611a1f565b50600061147b8486611efa565b95945050505050565b6017805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114cc576114cc611e32565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190611e9c565b8160018151811061155c5761155c611e32565b6001600160a01b0392831660209182029290920101526016546115829130911684610dec565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906115bb908590600090869030904290600401611f0d565b600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b50506017805460ff60a81b1916905550505050565b60006064600854836116109190611de6565b61161a9190611f7e565b905060006116288284611efa565b6006546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015611663573d6000803e3d6000fd5b506007546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561169e573d6000803e3d6000fd5b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260019091529182205461174591849061144a565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611774908361198c565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117c89086815260200190565b60405180910390a35060019392505050565b60008183116117e957826106b7565b50919050565b6001600160a01b03831660009081526004602052604081205481908190309060ff161561181d575085611876565b6001600160a01b03861660009081526005602052604090205460ff161561185c57600f546011541161185157600b54611855565b600d545b9150611876565b600e546011541161186f57600a54611873565b600c545b91505b60008061188384886119eb565b6001600160a01b038b166000908152600460205260408120549294509092509060ff166118b057816118b2565b825b9050801561193a576001600160a01b0384166000908152600160205260409020546118dd908261198c565b6001600160a01b0380861660008181526001602052604090819020939093559151908c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119319086815260200190565b60405180910390a35b9199919850909650505050505050565b60006106b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061144a565b6000806119998385611ee7565b9050838110156106b75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049a565b6000808060646119fb8686611de6565b611a059190611f7e565b90506000611a13858361194a565b96919550909350505050565b600060208083528351808285015260005b81811015611a4c57858101830151858201604001528201611a30565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d4c57600080fd5b60008060408385031215611a9557600080fd5b8235611aa081611a6d565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611aed57611aed611aae565b604052919050565b600067ffffffffffffffff821115611b0f57611b0f611aae565b5060051b60200190565b600082601f830112611b2a57600080fd5b81356020611b3f611b3a83611af5565b611ac4565b82815260059290921b84018101918181019086841115611b5e57600080fd5b8286015b84811015611b795780358352918301918301611b62565b509695505050505050565b60008060408385031215611b9757600080fd5b823567ffffffffffffffff80821115611baf57600080fd5b818501915085601f830112611bc357600080fd5b81356020611bd3611b3a83611af5565b82815260059290921b84018101918181019089841115611bf257600080fd5b948201945b83861015611c19578535611c0a81611a6d565b82529482019490820190611bf7565b96505086013592505080821115611c2f57600080fd5b50611c3c85828601611b19565b9150509250929050565b600080600060608486031215611c5b57600080fd5b8335611c6681611a6d565b92506020840135611c7681611a6d565b929592945050506040919091013590565b600060208284031215611c9957600080fd5b81356106b781611a6d565b60008060408385031215611cb757600080fd5b8235611cc281611a6d565b91506020830135611cd281611a6d565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611d2e578160001904821115611d1457611d14611cdd565b80851615611d2157918102915b93841c9390800290611cf8565b509250929050565b600082611d4557506001610448565b81611d5257506000610448565b8160018114611d685760028114611d7257611d8e565b6001915050610448565b60ff841115611d8357611d83611cdd565b50506001821b610448565b5060208310610133831016604e8410600b8410161715611db1575081810a610448565b611dbb8383611cf3565b8060001904821115611dcf57611dcf611cdd565b029392505050565b60006106b760ff841683611d36565b808202811582820484141761044857610448611cdd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201611e5a57611e5a611cdd565b5060010190565b600060208284031215611e7357600080fd5b5051919050565b600060208284031215611e8c57600080fd5b815180151581146106b757600080fd5b600060208284031215611eae57600080fd5b81516106b781611a6d565b600080600060608486031215611ece57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561044857610448611cdd565b8181038181111561044857610448611cdd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f5d5784516001600160a01b031683529383019391830191600101611f38565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611f9b57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208adc36031d8b1d3b3abe3256322f37893bd8b51001dc02dd1800332f1c48ea0864736f6c63430008110033

Deployed Bytecode Sourcemap

4445:12212:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:83;;;;;;;;;;-1:-1:-1;7734:5:0;;;;;;;;;;;;-1:-1:-1;;;7734:5:0;;;;7664:83;;;;;;;:::i;:::-;;;;;;;;8547:186;;;;;;;;;;-1:-1:-1;8547:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8547:186:0;1023:187:1;5744:47:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;5744:47:0;1215:177:1;7941:95:0;;;;;;;;;;;;;:::i;6767:889::-;;;;;;;;;;-1:-1:-1;6767:889:0;;;;;:::i;:::-;;:::i;8741:446::-;;;;;;;;;;-1:-1:-1;8741:446:0;;;;;:::i;:::-;;:::i;7850:83::-;;;;;;;;;;-1:-1:-1;7850:83:0;;5376:1;4487:36:1;;4475:2;4460:18;7850:83:0;4345:184:1;14978:159:0;;;;;;;;;;;;;:::i;:::-;;15418:320;;;;;;;;;;;;;:::i;8044:119::-;;;;;;;;;;-1:-1:-1;8044:119:0;;;;;:::i;:::-;;:::i;3106:94::-;;;;;;;;;;;;;:::i;14193:127::-;;;;;;;;;;;;;:::i;14619:351::-;;;;;;;;;;-1:-1:-1;14619:351:0;;;;;:::i;:::-;;:::i;5569:47::-;;;;;;;;;;;;;;;;2797:87;;;;;;;;;;-1:-1:-1;2843:7:0;2870:6;2797:87;;-1:-1:-1;;;;;2870:6:0;;;4932:51:1;;4920:2;4905:18;2797:87:0;4786:203:1;5623:49:0;;;;;;;;;;;;;;;;7755:87;;;;;;;;;;-1:-1:-1;7827:7:0;;;;;;;;;;;;-1:-1:-1;;;7827:7:0;;;;7755:87;;8171:192;;;;;;;;;;-1:-1:-1;8171:192:0;;;;;:::i;:::-;;:::i;5679:58::-;;;;;;;;;;;;;;;;15746:871;;;;;;;;;;;;;:::i;8371:168::-;;;;;;;;;;-1:-1:-1;8371:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;8504:18:0;;;8477:7;8504:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8371:168;3208:229;;;;;;;;;;-1:-1:-1;3208:229:0;;;;;:::i;:::-;;:::i;15145:265::-;;;;;;;;;;;;;:::i;8547:186::-;8647:4;8664:39;335:10;8687:7;8696:6;8664:8;:39::i;:::-;-1:-1:-1;8721:4:0;8547:186;;;;;:::o;7941:95::-;7994:7;5435:15;5376:1;5435:2;:15;:::i;:::-;5419:31;;:13;:31;:::i;:::-;8014:14;;7941:95;:::o;6767:889::-;6905:4;2870:6;;-1:-1:-1;;;;;2870:6:0;335:10;3018:23;3010:68;;;;-1:-1:-1;;;3010:68:0;;;;;;;:::i;:::-;;;;;;;;;6945:11:::1;::::0;-1:-1:-1;;;6945:11:0;::::1;;;6944:12;6922:117;;;::::0;-1:-1:-1;;;6922:117:0;;7638:2:1;6922:117:0::1;::::0;::::1;7620:21:1::0;7677:2;7657:18;;;7650:30;7716:34;7696:18;;;7689:62;7787:25;7767:18;;;7760:53;7830:19;;6922:117:0::1;7436:419:1::0;6922:117:0::1;7097:7;:14;7072;:21;:39;7050:119;;;::::0;-1:-1:-1;;;7050:119:0;;8062:2:1;7050:119:0::1;::::0;::::1;8044:21:1::0;8101:2;8081:18;;;8074:30;8140:32;8120:18;;;8113:60;8190:18;;7050:119:0::1;7860:354:1::0;7050:119:0::1;7226:3;7202:14;:21;:27;7180:131;;;::::0;-1:-1:-1;;;7180:131:0;;8421:2:1;7180:131:0::1;::::0;::::1;8403:21:1::0;8460:2;8440:18;;;8433:30;8499:34;8479:18;;;8472:62;-1:-1:-1;;;8550:18:1;;;8543:52;8612:19;;7180:131:0::1;8219:418:1::0;7180:131:0::1;7425:9;7420:207;7444:14;:21;7440:1;:25;7420:207;;;7487:14;7504;7519:1;7504:17;;;;;;;;:::i;:::-;;;;;;;7487:34;;7536:14;7553:7;7561:1;7553:10;;;;;;;;:::i;:::-;;;;;;;7536:27;;7578:37;7588:10;7600:6;7608;7578:9;:37::i;:::-;;7472:155;;7467:3;;;;;:::i;:::-;;;;7420:207;;;-1:-1:-1::0;7644:4:0::1;::::0;6767:889;-1:-1:-1;;;6767:889:0:o;8741:446::-;8873:4;8890:36;8900:6;8908:9;8919:6;8890:9;:36::i;:::-;-1:-1:-1;8937:220:0;8960:6;335:10;9008:138;9064:6;9008:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9008:19:0;;;;;;:11;:19;;;;;;;;335:10;9008:33;;;;;;;;;;:37;:138::i;:::-;8937:8;:220::i;8741:446::-;;;;;;:::o;14978:159::-;2843:7;2870:6;-1:-1:-1;;;;;2870:6:0;335:10;3018:23;3010:68;;;;-1:-1:-1;;;3010:68:0;;;;;;;:::i;:::-;15044:1:::1;15027:14;:18:::0;;;15056:15:::1;:19:::0;;;15086:12:::1;:16:::0;14978:159::o;15418:320::-;15460:20;15483:24;15501:4;15483:9;:24::i;:::-;15460:47;-1:-1:-1;15522:16:0;;15518:79;;15555:30;15572:12;15555:16;:30::i;:::-;15628:21;15664:14;;15660:71;;15695:24;15708:10;15695:12;:24::i;:::-;15449:289;;15418:320::o;8044:119::-;-1:-1:-1;;;;;8137:18:0;8110:7;8137:18;;;:9;:18;;;;;;;8044:119::o;3106:94::-;2843:7;2870:6;-1:-1:-1;;;;;2870:6:0;335:10;3018:23;3010:68;;;;-1:-1:-1;;;3010:68:0;;;;;;;:::i;:::-;3171:21:::1;3189:1;3171:9;:21::i;:::-;3106:94::o:0;14193:127::-;2843:7;2870:6;-1:-1:-1;;;;;2870:6:0;335:10;3018:23;3010:68;;;;-1:-1:-1;;;3010:68:0;;;;;;;:::i;:::-;-1:-1:-1;;14247:12:0::1;:26:::0;;;14284:14:::1;:28:::0;14193:127::o;14619:351::-;14725:12;14754:6;14764:1;14754:11;14750:98;;14791:45;;-1:-1:-1;;;14791:45:0;;14830:4;14791:45;;;4932:51:1;-1:-1:-1;;;;;14791:30:0;;;;;4905:18:1;;14791:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14782:54;;14750:98;14863:32;;;-1:-1:-1;;;;;9295:32:1;;9277:51;;9359:2;9344:18;;9337:34;;;14863:32:0;;9250:18:1;14863:32:0;;;;;;;14943:10;;14913:49;;-1:-1:-1;;;14913:49:0;;-1:-1:-1;;;;;14943:10:0;;;14913:49;;;9277:51:1;9344:18;;;9337:34;;;14913:29:0;;;;;;9250:18:1;;14913:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8171:192::-;8274:4;8291:42;335:10;8315:9;8326:6;8291:9;:42::i;15746:871::-;2843:7;2870:6;-1:-1:-1;;;;;2870:6:0;335:10;3018:23;3010:68;;;;-1:-1:-1;;;3010:68:0;;;;;;;:::i;:::-;15808:11:::1;::::0;-1:-1:-1;;;15808:11:0;::::1;;;15807:12;15799:48;;;::::0;-1:-1:-1;;;15799:48:0;;10153:2:1;15799:48:0::1;::::0;::::1;10135:21:1::0;10192:2;10172:18;;;10165:30;10231:25;10211:18;;;10204:53;10274:18;;15799:48:0::1;9951:347:1::0;15799:48:0::1;15858:15;:104:::0;;-1:-1:-1;;;;;;15858:104:0::1;15909:42;15858:104:::0;;::::1;::::0;;;15973:58:::1;::::0;15990:4:::1;::::0;5435:15:::1;5376:1;5435:2;:15;:::i;:::-;5419:31;::::0;:13:::1;:31;:::i;15973:58::-;16076:15;;;;;;;;;-1:-1:-1::0;;;;;16076:15:0::1;-1:-1:-1::0;;;;;16076:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16058:55:0::1;;16136:4;16156:15;;;;;;;;;-1:-1:-1::0;;;;;16156:15:0::1;-1:-1:-1::0;;;;;16156:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16058:131;::::0;-1:-1:-1;;;;;;16058:131:0::1;::::0;;;;;;-1:-1:-1;;;;;10789:15:1;;;16058:131:0::1;::::0;::::1;10771:34:1::0;10841:15;;10821:18;;;10814:43;10706:18;;16058:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16042:13;:147:::0;;-1:-1:-1;;;;;;16042:147:0::1;-1:-1:-1::0;;;;;16042:147:0;;::::1;;::::0;;16200:15:::1;::::0;::::1;:31;16239:21;16284:4;16304:24;16284:4:::0;16304:9:::1;:24::i;:::-;16343:1;16359::::0;16375:7:::1;2843::::0;2870:6;-1:-1:-1;;;;;2870:6:0;;2797:87;16375:7:::1;16200:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16200:223:0;;;-1:-1:-1;;;;;11227:15:1;;;16200:223:0::1;::::0;::::1;11209:34:1::0;11259:18;;;11252:34;;;;11302:18;;;11295:34;;;;11345:18;;;11338:34;11409:15;;;11388:19;;;11381:44;16397:15:0::1;11441:19:1::0;;;11434:35;11143:19;;16200:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16441:13:0::1;::::0;16472:15:::1;::::0;16434:71:::1;::::0;-1:-1:-1;;;16434:71:0;;-1:-1:-1;;;;;16472:15:0;;::::1;16434:71;::::0;::::1;9277:51:1::0;-1:-1:-1;;9344:18:1;;;9337:34;16441:13:0;::::1;::::0;-1:-1:-1;16434:29:0::1;::::0;9250:18:1;;16434:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16516:11:0::1;:18:::0;;-1:-1:-1;;;;;;;16545:18:0;;;;;;-1:-1:-1;;;;;16588:13:0;16516:18;16574:28;;;:13:::1;:28;::::0;;;;:35;;-1:-1:-1;;16574:35:0::1;16530:4;16574:35;::::0;;15746:871::o;3208:229::-;2843:7;2870:6;-1:-1:-1;;;;;2870:6:0;335:10;3018:23;3010:68;;;;-1:-1:-1;;;3010:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3311:22:0;::::1;3289:110;;;::::0;-1:-1:-1;;;3289:110:0;;11993:2:1;3289:110:0::1;::::0;::::1;11975:21:1::0;12032:2;12012:18;;;12005:30;12071:34;12051:18;;;12044:62;-1:-1:-1;;;12122:18:1;;;12115:36;12168:19;;3289:110:0::1;11791:402:1::0;3289:110:0::1;3410:19;3420:8;3410:9;:19::i;:::-;3208:229:::0;:::o;15145:265::-;15233:1;15209:21;:25;15187:117;;;;-1:-1:-1;;;15187:117:0;;12400:2:1;15187:117:0;;;12382:21:1;12439:2;12419:18;;;12412:30;12478:34;12458:18;;;12451:62;-1:-1:-1;;;12529:18:1;;;12522:40;12579:19;;15187:117:0;12198:406:1;15187:117:0;15373:10;;15365:37;;15333:21;;-1:-1:-1;;;;;15373:10:0;;15365:37;;;;;15333:21;;15315:15;15365:37;15315:15;15365:37;15333:21;15373:10;15365:37;;;;;;;;;;;;;;;;;;;9195:335;-1:-1:-1;;;;;9288:19:0;;9280:68;;;;-1:-1:-1;;;9280:68:0;;12811:2:1;9280:68:0;;;12793:21:1;12850:2;12830:18;;;12823:30;12889:34;12869:18;;;12862:62;-1:-1:-1;;;12940:18:1;;;12933:34;12984:19;;9280:68:0;12609:400:1;9280:68:0;-1:-1:-1;;;;;9367:21:0;;9359:68;;;;-1:-1:-1;;;9359:68:0;;13216:2:1;9359:68:0;;;13198:21:1;13255:2;13235:18;;;13228:30;13294:34;13274:18;;;13267:62;-1:-1:-1;;;13345:18:1;;;13338:32;13387:19;;9359:68:0;13014:398:1;9359:68:0;-1:-1:-1;;;;;9438:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9490:32;;1361:25:1;;;9490:32:0;;1334:18:1;9490:32:0;;;;;;;9195:335;;;:::o;9538:2220::-;9650:4;-1:-1:-1;;;;;9675:18:0;;9667:68;;;;-1:-1:-1;;;9667:68:0;;13619:2:1;9667:68:0;;;13601:21:1;13658:2;13638:18;;;13631:30;13697:34;13677:18;;;13670:62;-1:-1:-1;;;13748:18:1;;;13741:35;13793:19;;9667:68:0;13417:401:1;9667:68:0;-1:-1:-1;;;;;9754:16:0;;9746:64;;;;-1:-1:-1;;;9746:64:0;;14025:2:1;9746:64:0;;;14007:21:1;14064:2;14044:18;;;14037:30;14103:34;14083:18;;;14076:62;-1:-1:-1;;;14154:18:1;;;14147:33;14197:19;;9746:64:0;13823:399:1;9746:64:0;9838:1;9829:6;:10;9821:64;;;;-1:-1:-1;;;9821:64:0;;14429:2:1;9821:64:0;;;14411:21:1;14468:2;14448:18;;;14441:30;14507:34;14487:18;;;14480:62;-1:-1:-1;;;14558:18:1;;;14551:39;14607:19;;9821:64:0;14227:405:1;9821:64:0;9920:11;;-1:-1:-1;;;9920:11:0;;;;;:39;;-1:-1:-1;;;;;;9935:24:0;;;;;;:18;:24;;;;;;;;9920:39;:65;;;-1:-1:-1;;;;;;9963:22:0;;;;;;:18;:22;;;;;;;;9920:65;9898:126;;;;-1:-1:-1;;;9898:126:0;;14839:2:1;9898:126:0;;;14821:21:1;14878:2;14858:18;;;14851:30;-1:-1:-1;;;14897:18:1;;;14890:41;14948:18;;9898:126:0;14637:335:1;9898:126:0;10042:11;;-1:-1:-1;;;10042:11:0;;;;10041:12;;:22;;-1:-1:-1;10057:6:0;;-1:-1:-1;;;10057:6:0;;;;10041:22;10037:94;;;10087:32;10102:4;10108:2;10112:6;10087:14;:32::i;:::-;10080:39;;;;10037:94;10169:13;;-1:-1:-1;;;;;10161:21:0;;;10169:13;;10161:21;:68;;;;-1:-1:-1;10213:15:0;;-1:-1:-1;;;;;10199:30:0;;;10213:15;;10199:30;;10161:68;:108;;;;-1:-1:-1;;;;;;10247:22:0;;;;;;:18;:22;;;;;;;;10246:23;10161:108;10143:396;;;10314:12;;10304:6;:22;;10296:60;;;;-1:-1:-1;;;10296:60:0;;15179:2:1;10296:60:0;;;15161:21:1;15218:2;15198:18;;;15191:30;15257:27;15237:18;;;15230:55;15302:18;;10296:60:0;14977:349:1;10296:60:0;10423:14;;10413:6;10397:13;10407:2;10397:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10371:128;;;;-1:-1:-1;;;10371:128:0;;15663:2:1;10371:128:0;;;15645:21:1;15702:2;15682:18;;;15675:30;15741:28;15721:18;;;15714:56;15787:18;;10371:128:0;15461:350:1;10371:128:0;10516:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10143:396;10561:13;;-1:-1:-1;;;;;10555:19:0;;;10561:13;;10555:19;;;;:46;;-1:-1:-1;;;;;;10579:22:0;;;;;;:18;:22;;;;;;;;10578:23;10555:46;10551:207;;;10670:14;;10660:6;10644:13;10654:2;10644:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10618:128;;;;-1:-1:-1;;;10618:128:0;;15663:2:1;10618:128:0;;;15645:21:1;15702:2;15682:18;;;15675:30;15741:28;15721:18;;;15714:56;15787:18;;10618:128:0;15461:350:1;10618:128:0;10770:28;10801:24;10819:4;10801:9;:24::i;:::-;10862:17;;10770:55;;-1:-1:-1;10852:27:0;;;;;10836:13;;10912:24;10930:4;10912:9;:24::i;:::-;10987:6;;-1:-1:-1;;10912:45:0;;-1:-1:-1;;;;10987:6:0;;;;10986:7;:43;;;;-1:-1:-1;11016:13:0;;-1:-1:-1;;;;;11010:19:0;;;11016:13;;11010:19;10986:43;:68;;;;;11046:8;10986:68;:96;;;;-1:-1:-1;11071:11:0;;-1:-1:-1;;;11071:11:0;;;;10986:96;:127;;;;;11099:14;10986:127;:174;;;;;11142:18;;11130:9;;:30;10986:174;10968:509;;;11187:101;11222:51;11226:6;11234:38;11238:20;11260:11;;11234:3;:38::i;:::-;11222:3;:51::i;:::-;11187:16;:101::i;:::-;11332:21;11372:22;;11368:98;;11415:35;11428:21;11415:12;:35::i;:::-;11172:305;10968:509;11490:19;11511:17;11532:25;11540:4;11546:2;11550:6;11532:7;:25::i;:::-;-1:-1:-1;;;;;11588:15:0;;;;;;:9;:15;;;;;;11489:68;;-1:-1:-1;11489:68:0;-1:-1:-1;11588:27:0;;11608:6;11588:19;:27::i;:::-;-1:-1:-1;;;;;11570:15:0;;;;;;;:9;:15;;;;;;:45;;;;11642:13;;;;;;;:30;;11660:11;11642:17;:30::i;:::-;-1:-1:-1;;;;;11626:13:0;;;;;;;:9;:13;;;;;:46;;;;11688:38;;;11707:18;11716:9;11707:6;:18;:::i;:::-;11688:38;;1361:25:1;;;1349:2;1334:18;11688:38:0;;;;;;;-1:-1:-1;11746:4:0;;9538:2220;-1:-1:-1;;;;;;;;9538:2220:0:o;1522:224::-;1642:7;1678:12;1670:6;;;;1662:29;;;;-1:-1:-1;;;1662:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1702:9:0;1714:5;1718:1;1714;:5;:::i;:::-;1702:17;1522:224;-1:-1:-1;;;;;1522:224:0:o;13702:483::-;6182:6;:13;;-1:-1:-1;;;;6182:13:0;-1:-1:-1;;;6182:13:0;;;13804:16:::1;::::0;;13818:1:::1;13804:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13804:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13804:16:0::1;13780:40;;13849:4;13831;13836:1;13831:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13831:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13875:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13875:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13831:7;;13875:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13865:4;13870:1;13865:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13865:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13940:15:::1;::::0;13908:62:::1;::::0;13925:4:::1;::::0;13940:15:::1;13958:11:::0;13908:8:::1;:62::i;:::-;13981:15;::::0;:196:::1;::::0;-1:-1:-1;;;13981:196:0;;-1:-1:-1;;;;;13981:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14062:11;;13981:15:::1;::::0;14104:4;;14131::::1;::::0;14151:15:::1;::::0;13981:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6218:6:0;:14;;-1:-1:-1;;;;6218:14:0;;;-1:-1:-1;;;;13702:483:0:o;14328:283::-;14385:22;14444:3;14420:20;;14411:6;:29;;;;:::i;:::-;14410:37;;;;:::i;:::-;14385:62;-1:-1:-1;14458:23:0;14484;14385:62;14484:6;:23;:::i;:::-;14520:10;;:35;;14458:49;;-1:-1:-1;;;;;;14520:10:0;;:35;;;;;14540:14;;14520:10;:35;:10;:35;14540:14;14520:10;:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14566:11:0;;:37;;-1:-1:-1;;;;;14566:11:0;;;;:37;;;;;14587:15;;14566:11;:37;:11;:37;14587:15;14566:11;:37;;;;;;;;;;;;;;;;;;;;;14374:237;;14328:283;:::o;3445:173::-;3501:16;3520:6;;-1:-1:-1;;;;;3537:17:0;;;-1:-1:-1;;;;;;3537:17:0;;;;;;3570:40;;3520:6;;;;;;;3570:40;;3501:16;3570:40;3490:128;3445:173;:::o;11766:401::-;11930:90;;;;;;;;;;;-1:-1:-1;;;11930:90:0;;;;;;;;-1:-1:-1;;;;;11930:17:0;;11893:4;11930:17;;;:9;:17;;;;;;;:90;;11966:6;;11930:21;:90::i;:::-;-1:-1:-1;;;;;11910:17:0;;;;;;;:9;:17;;;;;;:110;;;;12054:20;;;;;;;:32;;12079:6;12054:24;:32::i;:::-;-1:-1:-1;;;;;12031:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12102:35;;;;;;;;;;12130:6;1361:25:1;;1349:2;1334:18;;1215:177;12102:35:0;;;;;;;;-1:-1:-1;12155:4:0;11766:401;;;;;:::o;13384:107::-;13441:7;13473:1;13469;:5;13468:15;;13482:1;13468:15;;;-1:-1:-1;13478:1:0;13384:107;-1:-1:-1;13384:107:0:o;12445:931::-;-1:-1:-1;;;;;12665:24:0;;12565:7;12665:24;;;:16;:24;;;;;;12565:7;;;;12643:4;;12665:24;;12661:328;;;-1:-1:-1;12720:6:0;12661:328;;;-1:-1:-1;;;;;12748:24:0;;;;;;:13;:24;;;;;;;;12744:245;;;12807:16;;12795:9;;:28;:96;;12876:15;;12795:96;;;12843:13;;12795:96;12789:102;;12744:245;;;12941:15;;12929:9;;:27;12928:61;;12975:14;;12928:61;;;12960:12;;12928:61;12922:67;;12744:245;13003:22;13027:12;13043:22;13053:3;13058:6;13043:9;:22::i;:::-;-1:-1:-1;;;;;13098:24:0;;13078:17;13098:24;;;:16;:24;;;;;;13002:63;;-1:-1:-1;13002:63:0;;-1:-1:-1;13078:17:0;13098:24;;:48;;13142:4;13098:48;;;13125:14;13098:48;13078:68;-1:-1:-1;13163:13:0;;13159:163;;-1:-1:-1;;;;;13218:22:0;;;;;;:9;:22;;;;;;:37;;13245:9;13218:26;:37::i;:::-;-1:-1:-1;;;;;13193:22:0;;;;;;;:9;:22;;;;;;;:62;;;;13275:35;;;;;;;;;;13305:4;1361:25:1;;1349:2;1334:18;;1215:177;13275:35:0;;;;;;;;13159:163;13342:14;;;;-1:-1:-1;12445:931:0;;-1:-1:-1;;;;;;;12445:931:0:o;1378:136::-;1436:7;1463:43;1467:1;1470;1463:43;;;;;;;;;;;;;;;;;:3;:43::i;1191:179::-;1249:7;;1281:5;1285:1;1281;:5;:::i;:::-;1269:17;;1310:1;1305;:6;;1297:46;;;;-1:-1:-1;;;1297:46:0;;17358:2:1;1297:46:0;;;17340:21:1;17397:2;17377:18;;;17370:30;17436:29;17416:18;;;17409:57;17483:18;;1297:46:0;17156:351:1;12175:262:0;12271:7;;;12332:3;12316:12;12325:3;12316:6;:12;:::i;:::-;12315:20;;;;:::i;:::-;12300:35;-1:-1:-1;12346:23:0;12372:16;:6;12300:35;12372:10;:16::i;:::-;12346:42;12424:4;;-1:-1:-1;12175:262:0;;-1:-1:-1;;;;12175:262:0:o;14:548:1:-;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:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:127::-;1458:10;1453:3;1449:20;1446:1;1439:31;1489:4;1486:1;1479:15;1513:4;1510:1;1503:15;1529:275;1600:2;1594:9;1665:2;1646:13;;-1:-1:-1;;1642:27:1;1630:40;;1700:18;1685:34;;1721:22;;;1682:62;1679:88;;;1747:18;;:::i;:::-;1783:2;1776:22;1529:275;;-1:-1:-1;1529:275:1:o;1809:183::-;1869:4;1902:18;1894:6;1891:30;1888:56;;;1924:18;;:::i;:::-;-1:-1:-1;1969:1:1;1965:14;1981:4;1961:25;;1809:183::o;1997:662::-;2051:5;2104:3;2097:4;2089:6;2085:17;2081:27;2071:55;;2122:1;2119;2112:12;2071:55;2158:6;2145:20;2184:4;2208:60;2224:43;2264:2;2224:43;:::i;:::-;2208:60;:::i;:::-;2302:15;;;2388:1;2384:10;;;;2372:23;;2368:32;;;2333:12;;;;2412:15;;;2409:35;;;2440:1;2437;2430:12;2409:35;2476:2;2468:6;2464:15;2488:142;2504:6;2499:3;2496:15;2488:142;;;2570:17;;2558:30;;2608:12;;;;2521;;2488:142;;;-1:-1:-1;2648:5:1;1997:662;-1:-1:-1;;;;;;1997:662:1:o;2664:1215::-;2782:6;2790;2843:2;2831:9;2822:7;2818:23;2814:32;2811:52;;;2859:1;2856;2849:12;2811:52;2899:9;2886:23;2928:18;2969:2;2961:6;2958:14;2955:34;;;2985:1;2982;2975:12;2955:34;3023:6;3012:9;3008:22;2998:32;;3068:7;3061:4;3057:2;3053:13;3049:27;3039:55;;3090:1;3087;3080:12;3039:55;3126:2;3113:16;3148:4;3172:60;3188:43;3228:2;3188:43;:::i;3172:60::-;3266:15;;;3348:1;3344:10;;;;3336:19;;3332:28;;;3297:12;;;;3372:19;;;3369:39;;;3404:1;3401;3394:12;3369:39;3428:11;;;;3448:217;3464:6;3459:3;3456:15;3448:217;;;3544:3;3531:17;3561:31;3586:5;3561:31;:::i;:::-;3605:18;;3481:12;;;;3643;;;;3448:217;;;3684:5;-1:-1:-1;;3727:18:1;;3714:32;;-1:-1:-1;;3758:16:1;;;3755:36;;;3787:1;3784;3777:12;3755:36;;3810:63;3865:7;3854:8;3843:9;3839:24;3810:63;:::i;:::-;3800:73;;;2664:1215;;;;;:::o;3884:456::-;3961:6;3969;3977;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4085:9;4072:23;4104:31;4129:5;4104:31;:::i;:::-;4154:5;-1:-1:-1;4211:2:1;4196:18;;4183:32;4224:33;4183:32;4224:33;:::i;:::-;3884:456;;4276:7;;-1:-1:-1;;;4330:2:1;4315:18;;;;4302:32;;3884:456::o;4534:247::-;4593:6;4646:2;4634:9;4625:7;4621:23;4617:32;4614:52;;;4662:1;4659;4652:12;4614:52;4701:9;4688:23;4720:31;4745:5;4720:31;:::i;4994:388::-;5062:6;5070;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;5178:9;5165:23;5197:31;5222:5;5197:31;:::i;:::-;5247:5;-1:-1:-1;5304:2:1;5289:18;;5276:32;5317:33;5276:32;5317:33;:::i;:::-;5369:7;5359:17;;;4994:388;;;;;:::o;5387:127::-;5448:10;5443:3;5439:20;5436:1;5429:31;5479:4;5476:1;5469:15;5503:4;5500:1;5493:15;5519:422;5608:1;5651:5;5608:1;5665:270;5686:7;5676:8;5673:21;5665:270;;;5745:4;5741:1;5737:6;5733:17;5727:4;5724:27;5721:53;;;5754:18;;:::i;:::-;5804:7;5794:8;5790:22;5787:55;;;5824:16;;;;5787:55;5903:22;;;;5863:15;;;;5665:270;;;5669:3;5519:422;;;;;:::o;5946:806::-;5995:5;6025:8;6015:80;;-1:-1:-1;6066:1:1;6080:5;;6015:80;6114:4;6104:76;;-1:-1:-1;6151:1:1;6165:5;;6104:76;6196:4;6214:1;6209:59;;;;6282:1;6277:130;;;;6189:218;;6209:59;6239:1;6230:10;;6253:5;;;6277:130;6314:3;6304:8;6301:17;6298:43;;;6321:18;;:::i;:::-;-1:-1:-1;;6377:1:1;6363:16;;6392:5;;6189:218;;6491:2;6481:8;6478:16;6472:3;6466:4;6463:13;6459:36;6453:2;6443:8;6440:16;6435:2;6429:4;6426:12;6422:35;6419:77;6416:159;;;-1:-1:-1;6528:19:1;;;6560:5;;6416:159;6607:34;6632:8;6626:4;6607:34;:::i;:::-;6677:6;6673:1;6669:6;6665:19;6656:7;6653:32;6650:58;;;6688:18;;:::i;:::-;6726:20;;5946:806;-1:-1:-1;;;5946:806:1:o;6757:140::-;6815:5;6844:47;6885:4;6875:8;6871:19;6865:4;6844:47;:::i;6902:168::-;6975:9;;;7006;;7023:15;;;7017:22;;7003:37;6993:71;;7044:18;;:::i;7075:356::-;7277:2;7259:21;;;7296:18;;;7289:30;7355:34;7350:2;7335:18;;7328:62;7422:2;7407:18;;7075:356::o;8642:127::-;8703:10;8698:3;8694:20;8691:1;8684:31;8734:4;8731:1;8724:15;8758:4;8755:1;8748:15;8774:135;8813:3;8834:17;;;8831:43;;8854:18;;:::i;:::-;-1:-1:-1;8901:1:1;8890:13;;8774:135::o;8914:184::-;8984:6;9037:2;9025:9;9016:7;9012:23;9008:32;9005:52;;;9053:1;9050;9043:12;9005:52;-1:-1:-1;9076:16:1;;8914:184;-1:-1:-1;8914:184:1:o;9669:277::-;9736:6;9789:2;9777:9;9768:7;9764:23;9760:32;9757:52;;;9805:1;9802;9795:12;9757:52;9837:9;9831:16;9890:5;9883:13;9876:21;9869:5;9866:32;9856:60;;9912:1;9909;9902:12;10303:251;10373:6;10426:2;10414:9;10405:7;10401:23;10397:32;10394:52;;;10442:1;10439;10432:12;10394:52;10474:9;10468:16;10493:31;10518:5;10493:31;:::i;11480:306::-;11568:6;11576;11584;11637:2;11625:9;11616:7;11612:23;11608:32;11605:52;;;11653:1;11650;11643:12;11605:52;11682:9;11676:16;11666:26;;11732:2;11721:9;11717:18;11711:25;11701:35;;11776:2;11765:9;11761:18;11755:25;11745:35;;11480:306;;;;;:::o;15331:125::-;15396:9;;;15417:10;;;15414:36;;;15430:18;;:::i;15816:128::-;15883:9;;;15904:11;;;15901:37;;;15918:18;;:::i;15949:980::-;16211:4;16259:3;16248:9;16244:19;16290:6;16279:9;16272:25;16316:2;16354:6;16349:2;16338:9;16334:18;16327:34;16397:3;16392:2;16381:9;16377:18;16370:31;16421:6;16456;16450:13;16487:6;16479;16472:22;16525:3;16514:9;16510:19;16503:26;;16564:2;16556:6;16552:15;16538:29;;16585:1;16595:195;16609:6;16606:1;16603:13;16595:195;;;16674:13;;-1:-1:-1;;;;;16670:39:1;16658:52;;16765:15;;;;16730:12;;;;16706:1;16624:9;16595:195;;;-1:-1:-1;;;;;;;16846:32:1;;;;16841:2;16826:18;;16819:60;-1:-1:-1;;;16910:3:1;16895:19;16888:35;16807:3;15949:980;-1:-1:-1;;;15949:980:1:o;16934:217::-;16974:1;17000;16990:132;;17044:10;17039:3;17035:20;17032:1;17025:31;17079:4;17076:1;17069:15;17107:4;17104:1;17097:15;16990:132;-1:-1:-1;17136:9:1;;16934:217::o

Swarm Source

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