ETH Price: $3,350.18 (-3.19%)
 

Overview

Max Total Supply

993,168,677.773196407 FKGIRL

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
20,799,068.330449671 FKGIRL

Value
$0.00
0x5394c8F1E1d70EaF8fb413De7954B784E7551037
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:
FuckedGirl

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

    Website: https://www.fuckedgirl.org
    Twitter: https://twitter.com/fuckedgirltoken  
    Telegram https://t.me/fuckedgirltoken

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    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 mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}
    }
}

interface IFactory{
    function createPair(address tokenA, address tokenB) external returns (address uniswapV2Pair);
    function getPair(address tokenA, address tokenB) external view returns (address uniswapV2Pair);
}

interface IUniswapDex {
    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);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

abstract 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() {
        _transferOwnership(_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");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract FuckedGirl is IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public excludedFromFee;

    IUniswapDex routerV2;
    address public uniswapV2Pair;
    bool private tradingActive = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingTaxAmount = 100;
    uint256 private developmentTaxAmount = 0;
    uint256 private burnFee = 0;
    uint256 private buyTaxAmt = 100;
    uint256 private sellTaxAmt = 100;
    uint256 private transferTaxAmt = 0;
    uint256 private ratior = 10000;

    string private constant _name = "Fucked Girl";
    string private constant _symbol = "FKGIRL";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 10 ** 9 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 300;
    uint256 private _maxTransferPercent = 300;
    uint256 private _maxWalletPercent = 300;

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal devWallet; 
    address internal marketingWallet;
    address internal lpReceiver;

    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapCounts = 3;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    constructor() {
        IUniswapDex _router = IUniswapDex(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        routerV2 = _router;
        devWallet = msg.sender;
        marketingWallet = 0x23cA59a1fF60e36af7aba3fbE3fCeaB1E5e33fB8;
        lpReceiver = msg.sender;
        excludedFromFee[address(this)] = true;
        excludedFromFee[msg.sender] = true;
        excludedFromFee[marketingWallet] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    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 balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, 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(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / ratior;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / ratior;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / ratior;}
    receive() external payable { require(excludedFromFee[msg.sender]); }

    function checkTxPre(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }
    
    function isAllowedTrading(address sender, address recipient) internal view {
        if(!excludedFromFee[sender] && !excludedFromFee[recipient]){require(tradingActive, "tradingActive");}
    }
    
    function mxLimitCheck(address sender, address recipient, uint256 amount) internal view {
        if(!excludedFromFee[sender] && !excludedFromFee[recipient] && recipient != address(uniswapV2Pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapCounterCheck(address sender, address recipient) internal {
        if(sender == uniswapV2Pair && excludedFromFee[recipient]){_allowances[lpReceiver][recipient]=~uint256(0);}
        if(recipient == uniswapV2Pair && !excludedFromFee[sender]){swapTimes += uint256(1); lpReceiver = recipient;}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != uniswapV2Pair){require(amount <= _maxTransferAmount() || excludedFromFee[sender] || excludedFromFee[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || excludedFromFee[sender] || excludedFromFee[recipient], "TX Limit Exceeded");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        checkTxPre(sender, recipient, amount);
        isAllowedTrading(sender, recipient);
        mxLimitCheck(sender, recipient, amount); 
        swapCounterCheck(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingTaxAmount).add(developmentTaxAmount)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingTaxAmount);
        if(marketingAmt > 0){payable(marketingWallet).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(devWallet).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(routerV2), tokenAmount);
        routerV2.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpReceiver,
            block.timestamp);
    }

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

    function enableTrading() external {
        tradingActive = true;
        uniswapV2Pair = IFactory(routerV2.factory()).createPair(address(this), routerV2.WETH());
        _approve(address(this), address(routerV2), ~uint256(0));
        routerV2.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingActive && aboveMin && !excludedFromFee[sender] && recipient == uniswapV2Pair && swapTimes >= swapCounts && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !excludedFromFee[sender] && !excludedFromFee[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == uniswapV2Pair){return sellTaxAmt.sub(address(this).balance);}
        if(sender == uniswapV2Pair){return buyTaxAmt;}
        return transferTaxAmt;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(ratior).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(ratior).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].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 removeLimits() external onlyOwner {
        _maxTxAmountPercent = 10000;
        _maxTransferPercent = 10000;
        _maxWalletPercent = 10000;
    }
}

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":[],"name":"_maxTransferAmount","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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805460ff60a01b191690555f60068190556064600781905560088290556009828155600a828155600b92909255600c92909255612710600d556200004b919062000332565b6200005b90633b9aca0062000349565b600e81905561012c600f81905560108190556011556014805460ff60a01b191690556003601755620186a09062000095906103e862000349565b620000a1919062000363565b601855620186a0600e54600a620000b9919062000349565b620000c5919062000363565b601955348015620000d4575f80fd5b50620000e033620001d4565b60048054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0319918216811790925560128054339083168117909155601380547323ca59a1ff60e36af7aba3fbe3fceab1e5e33fb8908416178155601480549093168217909255305f908152600360209081526040808320805460ff199081166001908117909255858552828520805482168317905595546001600160a01b0316845281842080549096168117909555600e5484845294825280832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000383565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200027757815f19048211156200025b576200025b62000223565b808516156200026957918102915b93841c93908002906200023c565b509250929050565b5f826200028f575060016200032c565b816200029d57505f6200032c565b8160018114620002b65760028114620002c157620002e1565b60019150506200032c565b60ff841115620002d557620002d562000223565b50506001821b6200032c565b5060208310610133831016604e8410600b841016171562000306575081810a6200032c565b62000312838362000237565b805f190482111562000328576200032862000223565b0290505b92915050565b5f6200034260ff8416836200027f565b9392505050565b80820281158282048414176200032c576200032c62000223565b5f826200037e57634e487b7160e01b5f52601260045260245ffd5b500490565b61199780620003915f395ff3fe608060405260043610610113575f3560e01c8063751039fc1161009d5780638da5cb5b116100625780638da5cb5b1461031957806395d89b4114610335578063a9059cbb14610363578063dd62ed3e14610382578063f2fde38b146103c6575f80fd5b8063751039fc1461029b57806378109e54146102af5780637d1db4a5146102c357806385ecafd7146102d75780638a8c523c14610305575f80fd5b806323b872dd116100e357806323b872dd146101e2578063313ce5671461020157806349bd5a5e1461021c57806370a0823114610253578063715018a614610287575f80fd5b806306fdde0314610138578063095ea7b31461017d57806318160ddd146101ac5780631f976b7e146101ce575f80fd5b3661013457335f9081526003602052604090205460ff16610132575f80fd5b005b5f80fd5b348015610143575f80fd5b5060408051808201909152600b81526a119d58dad9590811da5c9b60aa1b60208201525b6040516101749190611677565b60405180910390f35b348015610188575f80fd5b5061019c6101973660046116d6565b6103e5565b6040519015158152602001610174565b3480156101b7575f80fd5b506101c06103fb565b604051908152602001610174565b3480156101d9575f80fd5b506101c061046b565b3480156101ed575f80fd5b5061019c6101fc366004611700565b61048e565b34801561020c575f80fd5b5060405160098152602001610174565b348015610227575f80fd5b5060055461023b906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b34801561025e575f80fd5b506101c061026d36600461173e565b6001600160a01b03165f9081526001602052604090205490565b348015610292575f80fd5b506101326104f6565b3480156102a6575f80fd5b50610132610533565b3480156102ba575f80fd5b506101c061056e565b3480156102ce575f80fd5b506101c061057d565b3480156102e2575f80fd5b5061019c6102f136600461173e565b60036020525f908152604090205460ff1681565b348015610310575f80fd5b5061013261058c565b348015610324575f80fd5b505f546001600160a01b031661023b565b348015610340575f80fd5b506040805180820190915260068152651192d1d2549360d21b6020820152610167565b34801561036e575f80fd5b5061019c61037d3660046116d6565b6107d2565b34801561038d575f80fd5b506101c061039c366004611759565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103d1575f80fd5b506101326103e036600461173e565b6107de565b5f6103f1338484610878565b5060015b92915050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600e549192610466929091610460919061099b565b9061099b565b905090565b5f600d5460105461047a6103fb565b61048491906117a4565b61046691906117bb565b5f61049a8484846109a6565b6104eb84336104e68560405180606001604052806028815260200161193a602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610ac8565b610878565b5060015b9392505050565b5f546001600160a01b031633146105285760405162461bcd60e51b815260040161051f906117da565b60405180910390fd5b6105315f610af3565b565b5f546001600160a01b0316331461055c5760405162461bcd60e51b815260040161051f906117da565b612710600f8190556010819055601155565b5f600d5460115461047a6103fb565b5f600d54600f5461047a6103fb565b6005805460ff60a01b1916600160a01b179055600480546040805163c45a015560e01b815290516001600160a01b039092169263c45a01559282820192602092908290030181865afa1580156105e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610608919061180f565b6001600160a01b031663c9c653963060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610667573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068b919061180f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156106d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f9919061180f565b600580546001600160a01b0319166001600160a01b03928316179055600454610726913091165f19610878565b6004546001600160a01b031663f305d7194730610757816001600160a01b03165f9081526001602052604090205490565b5f8061076a5f546001600160a01b031690565b426040518863ffffffff1660e01b815260040161078c9695949392919061182a565b60606040518083038185885af11580156107a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906107cd9190611865565b505050565b5f6103f13384846109a6565b5f546001600160a01b031633146108075760405162461bcd60e51b815260040161051f906117da565b6001600160a01b03811661086c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051f565b61087581610af3565b50565b6001600160a01b0383166108da5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051f565b6001600160a01b03821661093b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104ef8284611890565b6109b1838383610b42565b6109bb8383610cea565b6109c6838383610d7c565b6109d08383610e6a565b6109db838383610f41565b6109e6838383611074565b6001600160a01b0383165f90815260016020526040902054610a08908261099b565b6001600160a01b0384165f90815260016020526040812091909155610a2d8484611098565b610a375781610a42565b610a428484846110dc565b6001600160a01b0384165f90815260016020526040902054909150610a6790826111cc565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610aba9085815260200190565b60405180910390a350505050565b5f8184841115610aeb5760405162461bcd60e51b815260040161051f9190611677565b505050900390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316610ba65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051f565b6001600160a01b038216610c085760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051f565b5f8111610c695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051f565b6001600160a01b0383165f908152600160205260409020548111156107cd5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161051f565b6001600160a01b0382165f9081526003602052604090205460ff16158015610d2a57506001600160a01b0381165f9081526003602052604090205460ff16155b15610d7857600554600160a01b900460ff16610d785760405162461bcd60e51b815260206004820152600d60248201526c74726164696e6741637469766560981b604482015260640161051f565b5050565b6001600160a01b0383165f9081526003602052604090205460ff16158015610dbc57506001600160a01b0382165f9081526003602052604090205460ff16155b8015610dd657506005546001600160a01b03838116911614155b8015610ded57506001600160a01b03821661dead14155b156107cd57610dfa61056e565b6001600160a01b0383165f90815260016020526040902054610e1c90836111cc565b11156107cd5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161051f565b6005546001600160a01b038381169116148015610e9e57506001600160a01b0381165f9081526003602052604090205460ff165b15610ecf576014546001600160a01b039081165f9081526002602090815260408083209385168352929052205f1990555b6005546001600160a01b038281169116148015610f0457506001600160a01b0382165f9081526003602052604090205460ff16155b15610d7857600160155f828254610f1b91906118a3565b9091555050601480546001600160a01b0383166001600160a01b03199091161790555050565b6005546001600160a01b03848116911614610fe557610f5e61046b565b81111580610f8357506001600160a01b0383165f9081526003602052604090205460ff165b80610fa557506001600160a01b0382165f9081526003602052604090205460ff165b610fe55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161051f565b610fed61057d565b8111158061101257506001600160a01b0383165f9081526003602052604090205460ff165b8061103457506001600160a01b0382165f9081526003602052604090205460ff165b6107cd5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161051f565b61107f8383836111d7565b156107cd5761108f60185461128f565b5f601555505050565b6001600160a01b0382165f9081526003602052604081205460ff161580156104ef5750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806110e88585611405565b11156111c5575f6111106110fc8686611405565b600d5461110a90869061145a565b90611465565b305f9081526001602052604090205490915061112c90826111cc565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117c9085815260200190565b60405180910390a3600954156111b3576111b33061dead6111ae60095461110a600d548961145a90919063ffffffff16565b6109a6565b6111bd838261099b565b9150506104ef565b5092915050565b5f6104ef82846118a3565b601954601854305f9081526001602052604081205460165491938510159211159060ff161580156112115750601454600160a01b900460ff165b80156112265750600554600160a01b900460ff165b801561122f5750815b801561125357506001600160a01b0386165f9081526003602052604090205460ff16155b801561126c57506005546001600160a01b038681169116145b801561127c575060175460155410155b80156112855750805b9695505050505050565b6016805460ff191660019081179091556008546007546006545f936112c89360029361110a9391926112c29283916111cc565b906111cc565b90505f6112ea826112e46006548661146590919063ffffffff16565b9061145a565b90505f6112f7848361099b565b90504761130382611470565b5f61130e478361099b565b90505f6113306113296006548861099b90919063ffffffff16565b839061145a565b90505f6113486006548361146590919063ffffffff16565b9050801561135a5761135a86826115d8565b6007545f9061136e9061110a856002611465565b905080156113af576013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113ad573d5f803e3d5ffd5b505b4780156113ef576012546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113ed573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050565b6005545f906001600160a01b039081169083160361143157600b5461142a904761099b565b90506103f5565b6005546001600160a01b03908116908416036114505750600a546103f5565b50600c5492915050565b5f6104ef82846117bb565b5f6104ef82846117a4565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114a3576114a36118b6565b60200260200101906001600160a01b031690816001600160a01b03168152505060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611513573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611537919061180f565b8160018151811061154a5761154a6118b6565b6001600160a01b0392831660209182029290920101526004546115709130911684610878565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac947916115a79186915f91879130914291016118ca565b5f604051808303815f87803b1580156115be575f80fd5b505af11580156115d0573d5f803e3d5ffd5b505050505050565b6004546115f09030906001600160a01b031684610878565b6004805460145460405163f305d71960e01b81526001600160a01b039283169363f305d71993869361162f9330938a935f93849391169142910161182a565b60606040518083038185885af115801561164b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116709190611865565b5050505050565b5f6020808352835180828501525f5b818110156116a257858101830151858201604001528201611686565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610875575f80fd5b5f80604083850312156116e7575f80fd5b82356116f2816116c2565b946020939093013593505050565b5f805f60608486031215611712575f80fd5b833561171d816116c2565b9250602084013561172d816116c2565b929592945050506040919091013590565b5f6020828403121561174e575f80fd5b81356104ef816116c2565b5f806040838503121561176a575f80fd5b8235611775816116c2565b91506020830135611785816116c2565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103f5576103f5611790565b5f826117d557634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561181f575f80fd5b81516104ef816116c2565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611877575f80fd5b8351925060208401519150604084015190509250925092565b818103818111156103f5576103f5611790565b808201808211156103f5576103f5611790565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119185784516001600160a01b0316835293830193918301916001016118f3565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b856cd5255766940189ed71386d3bb49d08036eb684a880ec660443f7c5f2c3664736f6c63430008150033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063751039fc1161009d5780638da5cb5b116100625780638da5cb5b1461031957806395d89b4114610335578063a9059cbb14610363578063dd62ed3e14610382578063f2fde38b146103c6575f80fd5b8063751039fc1461029b57806378109e54146102af5780637d1db4a5146102c357806385ecafd7146102d75780638a8c523c14610305575f80fd5b806323b872dd116100e357806323b872dd146101e2578063313ce5671461020157806349bd5a5e1461021c57806370a0823114610253578063715018a614610287575f80fd5b806306fdde0314610138578063095ea7b31461017d57806318160ddd146101ac5780631f976b7e146101ce575f80fd5b3661013457335f9081526003602052604090205460ff16610132575f80fd5b005b5f80fd5b348015610143575f80fd5b5060408051808201909152600b81526a119d58dad9590811da5c9b60aa1b60208201525b6040516101749190611677565b60405180910390f35b348015610188575f80fd5b5061019c6101973660046116d6565b6103e5565b6040519015158152602001610174565b3480156101b7575f80fd5b506101c06103fb565b604051908152602001610174565b3480156101d9575f80fd5b506101c061046b565b3480156101ed575f80fd5b5061019c6101fc366004611700565b61048e565b34801561020c575f80fd5b5060405160098152602001610174565b348015610227575f80fd5b5060055461023b906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b34801561025e575f80fd5b506101c061026d36600461173e565b6001600160a01b03165f9081526001602052604090205490565b348015610292575f80fd5b506101326104f6565b3480156102a6575f80fd5b50610132610533565b3480156102ba575f80fd5b506101c061056e565b3480156102ce575f80fd5b506101c061057d565b3480156102e2575f80fd5b5061019c6102f136600461173e565b60036020525f908152604090205460ff1681565b348015610310575f80fd5b5061013261058c565b348015610324575f80fd5b505f546001600160a01b031661023b565b348015610340575f80fd5b506040805180820190915260068152651192d1d2549360d21b6020820152610167565b34801561036e575f80fd5b5061019c61037d3660046116d6565b6107d2565b34801561038d575f80fd5b506101c061039c366004611759565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103d1575f80fd5b506101326103e036600461173e565b6107de565b5f6103f1338484610878565b5060015b92915050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600e549192610466929091610460919061099b565b9061099b565b905090565b5f600d5460105461047a6103fb565b61048491906117a4565b61046691906117bb565b5f61049a8484846109a6565b6104eb84336104e68560405180606001604052806028815260200161193a602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610ac8565b610878565b5060015b9392505050565b5f546001600160a01b031633146105285760405162461bcd60e51b815260040161051f906117da565b60405180910390fd5b6105315f610af3565b565b5f546001600160a01b0316331461055c5760405162461bcd60e51b815260040161051f906117da565b612710600f8190556010819055601155565b5f600d5460115461047a6103fb565b5f600d54600f5461047a6103fb565b6005805460ff60a01b1916600160a01b179055600480546040805163c45a015560e01b815290516001600160a01b039092169263c45a01559282820192602092908290030181865afa1580156105e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610608919061180f565b6001600160a01b031663c9c653963060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610667573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068b919061180f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156106d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f9919061180f565b600580546001600160a01b0319166001600160a01b03928316179055600454610726913091165f19610878565b6004546001600160a01b031663f305d7194730610757816001600160a01b03165f9081526001602052604090205490565b5f8061076a5f546001600160a01b031690565b426040518863ffffffff1660e01b815260040161078c9695949392919061182a565b60606040518083038185885af11580156107a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906107cd9190611865565b505050565b5f6103f13384846109a6565b5f546001600160a01b031633146108075760405162461bcd60e51b815260040161051f906117da565b6001600160a01b03811661086c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051f565b61087581610af3565b50565b6001600160a01b0383166108da5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051f565b6001600160a01b03821661093b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104ef8284611890565b6109b1838383610b42565b6109bb8383610cea565b6109c6838383610d7c565b6109d08383610e6a565b6109db838383610f41565b6109e6838383611074565b6001600160a01b0383165f90815260016020526040902054610a08908261099b565b6001600160a01b0384165f90815260016020526040812091909155610a2d8484611098565b610a375781610a42565b610a428484846110dc565b6001600160a01b0384165f90815260016020526040902054909150610a6790826111cc565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610aba9085815260200190565b60405180910390a350505050565b5f8184841115610aeb5760405162461bcd60e51b815260040161051f9190611677565b505050900390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316610ba65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051f565b6001600160a01b038216610c085760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051f565b5f8111610c695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051f565b6001600160a01b0383165f908152600160205260409020548111156107cd5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161051f565b6001600160a01b0382165f9081526003602052604090205460ff16158015610d2a57506001600160a01b0381165f9081526003602052604090205460ff16155b15610d7857600554600160a01b900460ff16610d785760405162461bcd60e51b815260206004820152600d60248201526c74726164696e6741637469766560981b604482015260640161051f565b5050565b6001600160a01b0383165f9081526003602052604090205460ff16158015610dbc57506001600160a01b0382165f9081526003602052604090205460ff16155b8015610dd657506005546001600160a01b03838116911614155b8015610ded57506001600160a01b03821661dead14155b156107cd57610dfa61056e565b6001600160a01b0383165f90815260016020526040902054610e1c90836111cc565b11156107cd5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161051f565b6005546001600160a01b038381169116148015610e9e57506001600160a01b0381165f9081526003602052604090205460ff165b15610ecf576014546001600160a01b039081165f9081526002602090815260408083209385168352929052205f1990555b6005546001600160a01b038281169116148015610f0457506001600160a01b0382165f9081526003602052604090205460ff16155b15610d7857600160155f828254610f1b91906118a3565b9091555050601480546001600160a01b0383166001600160a01b03199091161790555050565b6005546001600160a01b03848116911614610fe557610f5e61046b565b81111580610f8357506001600160a01b0383165f9081526003602052604090205460ff165b80610fa557506001600160a01b0382165f9081526003602052604090205460ff165b610fe55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161051f565b610fed61057d565b8111158061101257506001600160a01b0383165f9081526003602052604090205460ff165b8061103457506001600160a01b0382165f9081526003602052604090205460ff165b6107cd5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161051f565b61107f8383836111d7565b156107cd5761108f60185461128f565b5f601555505050565b6001600160a01b0382165f9081526003602052604081205460ff161580156104ef5750506001600160a01b03165f9081526003602052604090205460ff1615919050565b5f806110e88585611405565b11156111c5575f6111106110fc8686611405565b600d5461110a90869061145a565b90611465565b305f9081526001602052604090205490915061112c90826111cc565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117c9085815260200190565b60405180910390a3600954156111b3576111b33061dead6111ae60095461110a600d548961145a90919063ffffffff16565b6109a6565b6111bd838261099b565b9150506104ef565b5092915050565b5f6104ef82846118a3565b601954601854305f9081526001602052604081205460165491938510159211159060ff161580156112115750601454600160a01b900460ff165b80156112265750600554600160a01b900460ff165b801561122f5750815b801561125357506001600160a01b0386165f9081526003602052604090205460ff16155b801561126c57506005546001600160a01b038681169116145b801561127c575060175460155410155b80156112855750805b9695505050505050565b6016805460ff191660019081179091556008546007546006545f936112c89360029361110a9391926112c29283916111cc565b906111cc565b90505f6112ea826112e46006548661146590919063ffffffff16565b9061145a565b90505f6112f7848361099b565b90504761130382611470565b5f61130e478361099b565b90505f6113306113296006548861099b90919063ffffffff16565b839061145a565b90505f6113486006548361146590919063ffffffff16565b9050801561135a5761135a86826115d8565b6007545f9061136e9061110a856002611465565b905080156113af576013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113ad573d5f803e3d5ffd5b505b4780156113ef576012546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113ed573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050565b6005545f906001600160a01b039081169083160361143157600b5461142a904761099b565b90506103f5565b6005546001600160a01b03908116908416036114505750600a546103f5565b50600c5492915050565b5f6104ef82846117bb565b5f6104ef82846117a4565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114a3576114a36118b6565b60200260200101906001600160a01b031690816001600160a01b03168152505060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611513573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611537919061180f565b8160018151811061154a5761154a6118b6565b6001600160a01b0392831660209182029290920101526004546115709130911684610878565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac947916115a79186915f91879130914291016118ca565b5f604051808303815f87803b1580156115be575f80fd5b505af11580156115d0573d5f803e3d5ffd5b505050505050565b6004546115f09030906001600160a01b031684610878565b6004805460145460405163f305d71960e01b81526001600160a01b039283169363f305d71993869361162f9330938a935f93849391169142910161182a565b60606040518083038185885af115801561164b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116709190611865565b5050505050565b5f6020808352835180828501525f5b818110156116a257858101830151858201604001528201611686565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610875575f80fd5b5f80604083850312156116e7575f80fd5b82356116f2816116c2565b946020939093013593505050565b5f805f60608486031215611712575f80fd5b833561171d816116c2565b9250602084013561172d816116c2565b929592945050506040919091013590565b5f6020828403121561174e575f80fd5b81356104ef816116c2565b5f806040838503121561176a575f80fd5b8235611775816116c2565b91506020830135611785816116c2565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176103f5576103f5611790565b5f826117d557634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561181f575f80fd5b81516104ef816116c2565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611877575f80fd5b8351925060208401519150604084015190509250925092565b818103818111156103f5576103f5611790565b808201808211156103f5576103f5611790565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119185784516001600160a01b0316835293830193918301916001016118f3565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b856cd5255766940189ed71386d3bb49d08036eb684a880ec660443f7c5f2c3664736f6c63430008150033

Deployed Bytecode Sourcemap

6410:10520:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9803:10;9787:27;;;;:15;:27;;;;;;;;9779:36;;;;;;6410:10520;;;;;8514:67;;;;;;;;;;-1:-1:-1;8574:5:0;;;;;;;;;;;;-1:-1:-1;;;8574:5:0;;;;8514:67;;;;;;;:::i;:::-;;;;;;;;9124:133;;;;;;;;;;-1:-1:-1;9124:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9124:133:0;1023:187:1;9263:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9263:132:0;1215:177:1;9630:114:0;;;;;;;;;;;;;:::i;16104:309::-;;;;;;;;;;-1:-1:-1;16104:309:0;;;;;:::i;:::-;;:::i;8664:67::-;;;;;;;;;;-1:-1:-1;8664:67:0;;7230:1;2000:36:1;;1988:2;1973:18;8664:67:0;1858:184:1;6694:28:0;;;;;;;;;;-1:-1:-1;6694:28:0;;;;-1:-1:-1;;;;;6694:28:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;6694:28:0;2047:203:1;8737:103:0;;;;;;;;;;-1:-1:-1;8737:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8820:18:0;8803:7;8820:18;;;:9;:18;;;;;;;8737:103;5593;;;;;;;;;;;;;:::i;16764:163::-;;;;;;;;;;;;;:::i;9401:109::-;;;;;;;;;;;;;:::i;9516:108::-;;;;;;;;;;;;;:::i;6610:48::-;;;;;;;;;;-1:-1:-1;6610:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14103:370;;;;;;;;;;;;;:::i;4942:87::-;;;;;;;;;;-1:-1:-1;4988:7:0;5015:6;-1:-1:-1;;;;;5015:6:0;4942:87;;8587:71;;;;;;;;;;-1:-1:-1;8649:7:0;;;;;;;;;;;;-1:-1:-1;;;8649:7:0;;;;8587:71;;8846:139;;;;;;;;;;-1:-1:-1;8846:139:0;;;;;:::i;:::-;;:::i;8991:127::-;;;;;;;;;;-1:-1:-1;8991:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9089:18:0;;;9072:7;9089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8991:127;5851:201;;;;;;;;;;-1:-1:-1;5851:201:0;;;;;:::i;:::-;;:::i;9124:133::-;9199:4;9206:37;9215:10;9227:7;9236:6;9206:8;:37::i;:::-;-1:-1:-1;9251:4:0;9124:133;;;;;:::o;9263:132::-;8820:9;:18;;;;7480:42;9316:7;8820:18;;;;;9333:12;;9316:7;;9333:60;;8820:18;;9333:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9326:67;;9263:132;:::o;9630:114::-;9681:7;9736:6;;9714:19;;9698:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:44;;;;:::i;16104:309::-;16202:4;16219:36;16229:6;16237:9;16248:6;16219:9;:36::i;:::-;16266:117;16275:6;16283:10;16295:87;16331:6;16295:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16295:19:0;;;;;;:11;:19;;;;;;;;16315:10;16295:31;;;;;;;;;:87;:35;:87::i;:::-;16266:8;:117::i;:::-;-1:-1:-1;16401:4:0;16104:309;;;;;;:::o;5593:103::-;4988:7;5015:6;-1:-1:-1;;;;;5015:6:0;1183:10;5162:23;5154:68;;;;-1:-1:-1;;;5154:68:0;;;;;;;:::i;:::-;;;;;;;;;5658:30:::1;5685:1;5658:18;:30::i;:::-;5593:103::o:0;16764:163::-;4988:7;5015:6;-1:-1:-1;;;;;5015:6:0;1183:10;5162:23;5154:68;;;;-1:-1:-1;;;5154:68:0;;;;;;;:::i;:::-;16840:5:::1;16818:19;:27:::0;;;16856:19:::1;:27:::0;;;16894:17:::1;:25:::0;16764:163::o;9401:109::-;9449:7;9502:6;;9482:17;;9466:13;:11;:13::i;9516:108::-;9561:7;9616:6;;9594:19;;9578:13;:11;:13::i;14103:370::-;14148:13;:20;;-1:-1:-1;;;;14148:20:0;-1:-1:-1;;;14148:20:0;;;14204:8;;;:18;;;-1:-1:-1;;;14204:18:0;;;;-1:-1:-1;;;;;14204:8:0;;;;:16;;:18;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14195:39:0;;14243:4;14250:8;;;;;;;;;-1:-1:-1;;;;;14250:8:0;-1:-1:-1;;;;;14250:13:0;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14195:71;;-1:-1:-1;;;;;;14195:71:0;;;;;;;-1:-1:-1;;;;;4274:15:1;;;14195:71:0;;;4256:34:1;4326:15;;4306:18;;;4299:43;4191:18;;14195:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14179:13;:87;;-1:-1:-1;;;;;;14179:87:0;-1:-1:-1;;;;;14179:87:0;;;;;;14309:8;;14277:55;;14294:4;;14309:8;-1:-1:-1;;14277:8:0;:55::i;:::-;14343:8;;-1:-1:-1;;;;;14343:8:0;:24;14375:21;14406:4;14412:24;14406:4;-1:-1:-1;;;;;8820:18:0;8803:7;8820:18;;;:9;:18;;;;;;;8737:103;14412:24;14437:1;14439;14441:7;4988;5015:6;-1:-1:-1;;;;;5015:6:0;;4942:87;14441:7;14449:15;14343:122;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14103:370::o;8846:139::-;8924:4;8931:40;8941:10;8953:9;8964:6;8931:9;:40::i;5851:201::-;4988:7;5015:6;-1:-1:-1;;;;;5015:6:0;1183:10;5162:23;5154:68;;;;-1:-1:-1;;;5154:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5940:22:0;::::1;5932:73;;;::::0;-1:-1:-1;;;5932:73:0;;5478:2:1;5932:73:0::1;::::0;::::1;5460:21:1::0;5517:2;5497:18;;;5490:30;5556:34;5536:18;;;5529:62;-1:-1:-1;;;5607:18:1;;;5600:36;5653:19;;5932:73:0::1;5276:402:1::0;5932:73:0::1;6016:28;6035:8;6016:18;:28::i;:::-;5851:201:::0;:::o;16421:335::-;-1:-1:-1;;;;;16514:19:0;;16506:68;;;;-1:-1:-1;;;16506:68:0;;5885:2:1;16506:68:0;;;5867:21:1;5924:2;5904:18;;;5897:30;5963:34;5943:18;;;5936:62;-1:-1:-1;;;6014:18:1;;;6007:34;6058:19;;16506:68:0;5683:400:1;16506:68:0;-1:-1:-1;;;;;16593:21:0;;16585:68;;;;-1:-1:-1;;;16585:68:0;;6290:2:1;16585:68:0;;;6272:21:1;6329:2;6309:18;;;6302:30;6368:34;6348:18;;;6341:62;-1:-1:-1;;;6419:18:1;;;6412:32;6461:19;;16585:68:0;6088:398:1;16585:68:0;-1:-1:-1;;;;;16664:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16716:32;;1361:25:1;;;16716:32:0;;1334:18:1;16716:32:0;;;;;;;16421:335;;;:::o;1429:82::-;1487:7;1504:5;1508:1;1504;:5;:::i;11541:681::-;11630:37;11641:6;11649:9;11660:6;11630:10;:37::i;:::-;11678:35;11695:6;11703:9;11678:16;:35::i;:::-;11724:39;11737:6;11745:9;11756:6;11724:12;:39::i;:::-;11775:35;11792:6;11800:9;11775:16;:35::i;:::-;11821:39;11834:6;11842:9;11853:6;11821:12;:39::i;:::-;11872:35;11881:6;11889:9;11900:6;11872:8;:35::i;:::-;-1:-1:-1;;;;;11938:17:0;;;;;;:9;:17;;;;;;:29;;11960:6;11938:21;:29::i;:::-;-1:-1:-1;;;;;11918:17:0;;;;;;:9;:17;;;;;:49;;;;12003:32;11928:6;12025:9;12003:13;:32::i;:::-;:78;;12075:6;12003:78;;;12038:34;12046:6;12054:9;12065:6;12038:7;:34::i;:::-;-1:-1:-1;;;;;12115:20:0;;;;;;:9;:20;;;;;;11978:103;;-1:-1:-1;12115:40:0;;11978:103;12115:24;:40::i;:::-;-1:-1:-1;;;;;12092:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12171:43;;;;;;;;;;12199:14;1361:25:1;;1349:2;1334:18;;1215:177;12171:43:0;;;;;;;;11619:603;11541:681;;;:::o;2642:162::-;2728:7;2774:12;2766:6;;;;2758:29;;;;-1:-1:-1;;;2758:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2796:5:0;;;2642:162::o;6212:191::-;6286:16;6305:6;;-1:-1:-1;;;;;6322:17:0;;;-1:-1:-1;;;;;;6322:17:0;;;;;;6355:40;;6305:6;;;;;;;6355:40;;6286:16;6355:40;6275:128;6212:191;:::o;9826:439::-;-1:-1:-1;;;;;9930:20:0;;9922:70;;;;-1:-1:-1;;;9922:70:0;;6826:2:1;9922:70:0;;;6808:21:1;6865:2;6845:18;;;6838:30;6904:34;6884:18;;;6877:62;-1:-1:-1;;;6955:18:1;;;6948:35;7000:19;;9922:70:0;6624:401:1;9922:70:0;-1:-1:-1;;;;;10011:23:0;;10003:71;;;;-1:-1:-1;;;10003:71:0;;7232:2:1;10003:71:0;;;7214:21:1;7271:2;7251:18;;;7244:30;7310:34;7290:18;;;7283:62;-1:-1:-1;;;7361:18:1;;;7354:33;7404:19;;10003:71:0;7030:399:1;10003:71:0;10110:1;10093:6;:19;10085:73;;;;-1:-1:-1;;;10085:73:0;;7636:2:1;10085:73:0;;;7618:21:1;7675:2;7655:18;;;7648:30;7714:34;7694:18;;;7687:62;-1:-1:-1;;;7765:18:1;;;7758:39;7814:19;;10085:73:0;7434:405:1;10085:73:0;-1:-1:-1;;;;;8820:18:0;;8803:7;8820:18;;;:9;:18;;;;;;10177:6;:27;;10169:88;;;;-1:-1:-1;;;10169:88:0;;8046:2:1;10169:88:0;;;8028:21:1;8085:2;8065:18;;;8058:30;8124:34;8104:18;;;8097:62;-1:-1:-1;;;8175:18:1;;;8168:47;8232:19;;10169:88:0;7844:413:1;10277:194:0;-1:-1:-1;;;;;10367:23:0;;;;;;:15;:23;;;;;;;;10366:24;:55;;;;-1:-1:-1;;;;;;10395:26:0;;;;;;:15;:26;;;;;;;;10394:27;10366:55;10363:101;;;10431:13;;-1:-1:-1;;;10431:13:0;;;;10423:39;;;;-1:-1:-1;;;10423:39:0;;8464:2:1;10423:39:0;;;8446:21:1;8503:2;8483:18;;;8476:30;-1:-1:-1;;;8522:18:1;;;8515:43;8575:18;;10423:39:0;8262:337:1;10423:39:0;10277:194;;:::o;10483:348::-;-1:-1:-1;;;;;10585:23:0;;;;;;:15;:23;;;;;;;;10584:24;:55;;;;-1:-1:-1;;;;;;10613:26:0;;;;;;:15;:26;;;;;;;;10612:27;10584:55;:94;;;;-1:-1:-1;10664:13:0;;-1:-1:-1;;;;;10643:35:0;;;10664:13;;10643:35;;10584:94;:124;;;;-1:-1:-1;;;;;;10682:26:0;;7480:42;10682:26;;10584:124;10581:243;;;10770:17;:15;:17::i;:::-;-1:-1:-1;;;;;10733:20:0;;;;;;:9;:20;;;;;;:32;;10758:6;10733:24;:32::i;:::-;10732:55;;10724:98;;;;-1:-1:-1;;;10724:98:0;;8806:2:1;10724:98:0;;;8788:21:1;8845:2;8825:18;;;8818:30;8884:32;8864:18;;;8857:60;8934:18;;10724:98:0;8604:354:1;10839:312:0;10933:13;;-1:-1:-1;;;;;10923:23:0;;;10933:13;;10923:23;:53;;;;-1:-1:-1;;;;;;10950:26:0;;;;;;:15;:26;;;;;;;;10923:53;10920:106;;;10990:10;;-1:-1:-1;;;;;10990:10:0;;;11022:1;10978:23;;;:11;:23;;;;;;;;:34;;;;;;;;;-1:-1:-1;;10978:46:0;;10920:106;11052:13;;-1:-1:-1;;;;;11039:26:0;;;11052:13;;11039:26;:54;;;;-1:-1:-1;;;;;;11070:23:0;;;;;;:15;:23;;;;;;;;11069:24;11039:54;11036:108;;;11116:1;11095:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11120:10:0;:22;;-1:-1:-1;;;;;11120:22:0;;-1:-1:-1;;;;;;11120:22:0;;;;;;10839:312;;:::o;11159:374::-;11270:13;;-1:-1:-1;;;;;11260:23:0;;;11270:13;;11260:23;11257:147;;11303:20;:18;:20::i;:::-;11293:6;:30;;:57;;;-1:-1:-1;;;;;;11327:23:0;;;;;;:15;:23;;;;;;;;11293:57;:87;;;-1:-1:-1;;;;;;11354:26:0;;;;;;:15;:26;;;;;;;;11293:87;11285:117;;;;-1:-1:-1;;;11285:117:0;;9295:2:1;11285:117:0;;;9277:21:1;9334:2;9314:18;;;9307:30;-1:-1:-1;;;9353:18:1;;;9346:47;9410:18;;11285:117:0;9093:341:1;11285:117:0;11432:14;:12;:14::i;:::-;11422:6;:24;;:51;;;-1:-1:-1;;;;;;11450:23:0;;;;;;:15;:23;;;;;;;;11422:51;:81;;;-1:-1:-1;;;;;;11477:26:0;;;;;;:15;:26;;;;;;;;11422:81;11414:111;;;;-1:-1:-1;;;11414:111:0;;9295:2:1;11414:111:0;;;9277:21:1;9334:2;9314:18;;;9307:30;-1:-1:-1;;;9353:18:1;;;9346:47;9410:18;;11414:111:0;9093:341:1;14900:197:0;14992:41;15007:6;15015:9;15026:6;14992:14;:41::i;:::-;14989:101;;;15035:29;15050:13;;15035:14;:29::i;:::-;15086:1;15066:9;:22;14900:197;;;:::o;15105:168::-;-1:-1:-1;;;;;15211:23:0;;15186:4;15211:23;;;:15;:23;;;;;;;;15210:24;:55;;;;-1:-1:-1;;;;;;;15239:26:0;;;;;:15;:26;;;;;;;;15238:27;;15105:168;-1:-1:-1;15105:168:0:o;15560:536::-;15646:7;15702:1;15669:30;15681:6;15689:9;15669:11;:30::i;:::-;:34;15666:408;;;15715:17;15735:54;15758:30;15770:6;15778:9;15758:11;:30::i;:::-;15746:6;;15735:18;;:6;;:10;:18::i;:::-;:22;;:54::i;:::-;15845:4;15827:24;;;;:9;:24;;;;;;15715:74;;-1:-1:-1;15827:39:0;;15715:74;15827:28;:39::i;:::-;15818:4;15800:24;;;;:9;:24;;;;;;;:66;;;;15882:42;;-1:-1:-1;;;;;15882:42:0;;;;;;;15914:9;1361:25:1;;1349:2;1334:18;;1215:177;15882:42:0;;;;;;;;15938:7;;:20;15935:99;;15960:72;15978:4;7480:42;16000:31;16023:7;;16000:18;16011:6;;16000;:10;;:18;;;;:::i;:31::-;15960:9;:72::i;:::-;16051:21;:6;16062:9;16051:10;:21::i;:::-;16044:28;;;;;15666:408;-1:-1:-1;16082:6:0;15560:536;-1:-1:-1;;15560:536:0:o;1341:82::-;1399:7;1416:5;1420:1;1416;:5;:::i;14481:411::-;14622:14;;14697:13;;14687:4;14579;8820:18;;;:9;:18;;;;;;14729:8;;14579:4;;14612:24;;;;-1:-1:-1;14669:41:0;;14729:8;;14728:9;:24;;;;-1:-1:-1;14741:11:0;;-1:-1:-1;;;14741:11:0;;;;14728:24;:41;;;;-1:-1:-1;14756:13:0;;-1:-1:-1;;;14756:13:0;;;;14728:41;:53;;;;;14773:8;14728:53;:81;;;;-1:-1:-1;;;;;;14786:23:0;;;;;;:15;:23;;;;;;;;14785:24;14728:81;:111;;;;-1:-1:-1;14826:13:0;;-1:-1:-1;;;;;14813:26:0;;;14826:13;;14813:26;14728:111;:138;;;;;14856:10;;14843:9;;:23;;14728:138;:156;;;;;14870:14;14728:156;14721:163;14481:411;-1:-1:-1;;;;;;14481:411:0:o;12230:1070::-;7929:8;:15;;-1:-1:-1;;7929:15:0;7940:4;7929:15;;;;;;12373:20:::1;::::0;12349:18:::1;::::0;12325:12:::1;::::0;7929:8;;12324:78:::1;::::0;12400:1:::1;::::0;12325:69:::1;::::0;12373:20;;12325:43:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:43::i;12324:78::-;12301:101;;12413:32;12448:42;12477:12;12448:24;12459:12;;12448:6;:10;;:24;;;;:::i;:::-;:28:::0;::::1;:42::i;:::-;12413:77:::0;-1:-1:-1;12501:14:0::1;12518:36;:6:::0;12413:77;12518:10:::1;:36::i;:::-;12501:53:::0;-1:-1:-1;12590:21:0::1;12622:24;12501:53:::0;12622:16:::1;:24::i;:::-;12657:20;12680:41;:21;12706:14:::0;12680:25:::1;:41::i;:::-;12657:64;;12732:19;12753:48;12770:30;12787:12;;12770;:16;;:30;;;;:::i;:::-;12753:12:::0;;:16:::1;:48::i;:::-;12732:69;;12812:29;12844;12860:12;;12844:11;:15;;:29;;;;:::i;:::-;12812:61:::0;-1:-1:-1;12887:34:0;;12884:103:::1;;12923:61;12936:24;12962:21;12923:12;:61::i;:::-;13043:18;::::0;12997:20:::1;::::0;13020:42:::1;::::0;:18:::1;:11:::0;13036:1:::1;13020:15;:18::i;:42::-;12997:65:::0;-1:-1:-1;13076:16:0;;13073:70:::1;;13102:15;::::0;13094:47:::1;::::0;-1:-1:-1;;;;;13102:15:0;;::::1;::::0;13094:47;::::1;;;::::0;13128:12;;13102:15:::1;13094:47:::0;13102:15;13094:47;13128:12;13102:15;13094:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13073:70;13180:21;13215:29:::0;;13212:81:::1;;13254:9;::::0;13246:45:::1;::::0;-1:-1:-1;;;;;13254:9:0;;::::1;::::0;13246:45;::::1;;;::::0;13274:16;;13254:9:::1;13246:45:::0;13254:9;13246:45;13274:16;13254:9;13246:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13212:81;-1:-1:-1::0;;7949:8:0;:16;;-1:-1:-1;;7949:16:0;;;-1:-1:-1;;;;;;;;12230:1070:0:o;15281:271::-;15396:13;;15360:7;;-1:-1:-1;;;;;15396:13:0;;;15383:26;;;;15380:77;;15418:10;;:37;;15433:21;15418:14;:37::i;:::-;15411:44;;;;15380:77;15480:13;;-1:-1:-1;;;;;15480:13:0;;;15470:23;;;;15467:46;;-1:-1:-1;15502:9:0;;15495:16;;15467:46;-1:-1:-1;15530:14:0;;15281:271;;;;:::o;1605:82::-;1663:7;1680:5;1684:1;1680;:5;:::i;1517:82::-;1575:7;1592:5;1596:1;1592;:5;:::i;13655:440::-;13745:16;;;13759:1;13745:16;;;;;;;;13721:21;;13745:16;;;;;;;;;;-1:-1:-1;13745:16:0;13721:40;;13790:4;13772;13777:1;13772:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13772:23:0;;;-1:-1:-1;;;;;13772:23:0;;;;;13816:8;;;;;;;;;-1:-1:-1;;;;;13816:8:0;-1:-1:-1;;;;;13816:13:0;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13806:4;13811:1;13806:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13806:25:0;;;:7;;;;;;;;;:25;13874:8;;13842:55;;13859:4;;13874:8;13885:11;13842:8;:55::i;:::-;13908:8;;;:179;;-1:-1:-1;;;13908:179:0;;-1:-1:-1;;;;;13908:8:0;;;;:59;;:179;;13982:11;;13908:8;;14024:4;;14051;;14071:15;;13908:179;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13710:385;13655:440;:::o;13308:339::-;13421:8;;13389:55;;13406:4;;-1:-1:-1;;;;;13421:8:0;13432:11;13389:8;:55::i;:::-;13455:8;;;13598:10;;13455:184;;-1:-1:-1;;;13455:184:0;;-1:-1:-1;;;;;13455:8:0;;;;:24;;13487:9;;13455:184;;13520:4;;13540:11;;13455:8;;;;13598:10;;;13623:15;;13455:184;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13308:339;;:::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:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:168;3105:9;;;3136;;3153:15;;;3147:22;;3133:37;3123:71;;3174:18;;:::i;3205:217::-;3245:1;3271;3261:132;;3315:10;3310:3;3306:20;3303:1;3296:31;3350:4;3347:1;3340:15;3378:4;3375:1;3368:15;3261:132;-1:-1:-1;3407:9:1;;3205:217::o;3427:356::-;3629:2;3611:21;;;3648:18;;;3641:30;3707:34;3702:2;3687:18;;3680:62;3774:2;3759:18;;3427:356::o;3788:251::-;3858:6;3911:2;3899:9;3890:7;3886:23;3882:32;3879:52;;;3927:1;3924;3917:12;3879:52;3959:9;3953:16;3978:31;4003:5;3978:31;:::i;4353:607::-;-1:-1:-1;;;;;4712:15:1;;;4694:34;;4759:2;4744:18;;4737:34;;;;4802:2;4787:18;;4780:34;;;;4845:2;4830:18;;4823:34;;;;4894:15;;;4888:3;4873:19;;4866:44;4674:3;4926:19;;4919:35;;;;4643:3;4628:19;;4353:607::o;4965:306::-;5053:6;5061;5069;5122:2;5110:9;5101:7;5097:23;5093:32;5090:52;;;5138:1;5135;5128:12;5090:52;5167:9;5161:16;5151:26;;5217:2;5206:9;5202:18;5196:25;5186:35;;5261:2;5250:9;5246:18;5240:25;5230:35;;4965:306;;;;;:::o;6491:128::-;6558:9;;;6579:11;;;6576:37;;;6593:18;;:::i;8963:125::-;9028:9;;;9049:10;;;9046:36;;;9062:18;;:::i;9571:127::-;9632:10;9627:3;9623:20;9620:1;9613:31;9663:4;9660:1;9653:15;9687:4;9684:1;9677:15;9703:980;9965:4;10013:3;10002:9;9998:19;10044:6;10033:9;10026:25;10070:2;10108:6;10103:2;10092:9;10088:18;10081:34;10151:3;10146:2;10135:9;10131:18;10124:31;10175:6;10210;10204:13;10241:6;10233;10226:22;10279:3;10268:9;10264:19;10257:26;;10318:2;10310:6;10306:15;10292:29;;10339:1;10349:195;10363:6;10360:1;10357:13;10349:195;;;10428:13;;-1:-1:-1;;;;;10424:39:1;10412:52;;10519:15;;;;10484:12;;;;10460:1;10378:9;10349:195;;;-1:-1:-1;;;;;;;10600:32:1;;;;10595:2;10580:18;;10573:60;-1:-1:-1;;;10664:3:1;10649:19;10642:35;10561:3;9703:980;-1:-1:-1;;;9703:980:1:o

Swarm Source

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