ETH Price: $3,645.28 (+8.39%)

Token

NODEAI (GPU)
 

Overview

Max Total Supply

1,000,000,000 GPU

Holders

109

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
pisspunkpower.eth
Balance
16,881,975.457755789 GPU

Value
$0.00
0x57EDDA1348df972608618001AA1d2c7c6722227F
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:
GPU

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
POWERING THE DEMAND FOR NEXT GEN AI

Harness the power of decentralized AI with Node AI

Website: https://nodeai.pro
Telegram: https://t.me/ainode_erc
Twitter: https://twitter.com/ainode_erc
 */

pragma solidity 0.8.21;

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 getOwner() external view returns (address);
    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 LibSafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "LibSafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "LibSafeMath: 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, "LibSafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "LibSafeMath: 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;
    }
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IUniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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;
}

contract GPU is IERC20, Ownable {
    using LibSafeMath for uint256;

    string constant _name = "NODEAI";
    string constant _symbol = "GPU";
    uint8 constant _decimals = 9;

    uint256 _tSupply = 10 ** 9 * (10 ** _decimals);

    uint256 liquidityFee = 0; 
    uint256 marketingFee = 29;
    uint256 totalFee = liquidityFee + marketingFee;
    uint256 denominator = 100;
    uint256 public maxHold = (_tSupply * 20) / 1000;
    address public feeAddress;
    IUniswapRouter public uniswapRouter;
    address public pair;

    bool public feeSwapActive = false;
    uint256 public feeSwapTriggerAt = _tSupply / 10000; // 0.5%
    bool swapping;

    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

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

    mapping (address => bool) _isExcludedFromFee;
    mapping (address => bool) _isExcludedFromMaxTx;

    modifier lockSwap() { swapping = true; _; swapping = false; }

    constructor () Ownable(msg.sender) {
        uniswapRouter = IUniswapRouter(routerAdress);
        pair = IUniswapFactory(uniswapRouter.factory()).createPair(uniswapRouter.WETH(), address(this));
        _allowances[address(this)][address(uniswapRouter)] = type(uint256).max;

        address _owner = owner;
        feeAddress = 0x761cf51a24DEFb58eda3256d367FE5cc2Dc24188;
        _isExcludedFromFee[feeAddress] = true;
        _isExcludedFromMaxTx[_owner] = true;
        _isExcludedFromMaxTx[feeAddress] = true;
        _isExcludedFromMaxTx[DEAD] = true;

        _balances[_owner] = _tSupply;
        emit Transfer(address(0), _owner, _tSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _tSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
    
    function _transferStandard(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 transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(swapping){ return _transferStandard(sender, recipient, amount); }
        
        if (recipient != pair && recipient != DEAD) {
            require(_isExcludedFromMaxTx[recipient] || _balances[recipient] + amount <= maxHold, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack() && shouldTakeFees(sender) && recipient == pair && amount > feeSwapTriggerAt){ swapBack(); } 


        uint256 amountReceived = shouldTakeFees(sender) || !feeSwapActive ? getAmountWithoutFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function swapBack() internal lockSwap {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

        uint256 balanceBefore = address(this).balance;

        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(feeAddress).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            uniswapRouter.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                feeAddress,
                block.timestamp
            );
        }
    }
    
    function getAmountWithoutFee(address sender, uint256 amount) internal returns (uint256) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 feeAmount = amount.mul(totalFee).div(denominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }
    
    function shouldTakeFees(address sender) internal view returns (bool) {
        return !_isExcludedFromFee[sender];
    }

    function setWalletLimit(uint256 amountPercent) external onlyOwner {
        maxHold = (_tSupply * amountPercent ) / 1000;
    }

    function setFee(uint256 _liquidityFee, uint256 _marketingFee) external onlyOwner {
         liquidityFee = _liquidityFee; 
         marketingFee = _marketingFee;
         totalFee = liquidityFee + marketingFee;
    }    

    function setSwapEnabled(bool value) external onlyOwner {
        feeSwapActive = value;
    }

    function shouldSwapBack() internal view returns (bool) {
        return !swapping
        && feeSwapActive
        && _balances[address(this)] >= feeSwapTriggerAt;
    }
}

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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","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":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSwapActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSwapTriggerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setWalletLimit","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":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000482565b6200002290633b9aca0062000499565b6001555f6002819055601d60038190556200003d91620004b3565b60045560646005556103e8600154601462000059919062000499565b620000659190620004c9565b6006556009805460ff60a01b19169055600154620000879061271090620004c9565b600a55600b8054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b0319909116179055600c80546001600160a01b03191661dead179055348015620000d4575f80fd5b505f80546001600160a01b03199081163317909155600b54600880549092166101009091046001600160a01b03169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000142573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001689190620004e9565b6001600160a01b031663c9c6539660085f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ed9190620004e9565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af115801562000237573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025d9190620004e9565b600980546001600160a01b039283166001600160a01b031991821617909155305f908152600e602090815260408083206008548616845282528083205f19905582546007805490951673761cf51a24defb58eda3256d367fe5cc2dc241881785557f369acdf62495e55e3b8d34999e559945804db1c235fbabdff932a86733764417805460ff1990811660019081179092559187168086526010855283862080548416831790559554871685528285208054831682179055600c5490961684528184208054909116861790559354838352600d82528483208190559351938452919283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000511565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003c757815f1904821115620003ab57620003ab62000373565b80851615620003b957918102915b93841c93908002906200038c565b509250929050565b5f82620003df575060016200047c565b81620003ed57505f6200047c565b8160018114620004065760028114620004115762000431565b60019150506200047c565b60ff84111562000425576200042562000373565b50506001821b6200047c565b5060208310610133831016604e8410600b841016171562000456575081810a6200047c565b62000462838362000387565b805f190482111562000478576200047862000373565b0290505b92915050565b5f6200049260ff841683620003cf565b9392505050565b80820281158282048414176200047c576200047c62000373565b808201808211156200047c576200047c62000373565b5f82620004e457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004fa575f80fd5b81516001600160a01b038116811462000492575f80fd5b61132d806200051f5f395ff3fe608060405260043610610129575f3560e01c806372eaa9ba116100a8578063a8aa1b311161006d578063a8aa1b3114610363578063a9059cbb14610382578063c8031953146103a1578063dd62ed3e146103b6578063e01af92c146103fa578063f1d5f51714610419575f80fd5b806372eaa9ba146102c8578063735de9f7146102e8578063893d20e81461030757806395d89b41146103235780639a6c614e1461034e575f80fd5b8063313ce567116100ee578063313ce5671461020d578063412753581461022857806352f7c9881461025f57806370a0823114610280578063715018a6146102b4575f80fd5b806306fdde0314610134578063095ea7b31461017457806318160ddd146101a357806323b872dd146101c15780632f54bf6e146101e0575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b506040805180820190915260068152654e4f4445414960d01b60208201525b60405161016b919061100b565b60405180910390f35b34801561017f575f80fd5b5061019361018e36600461106d565b610438565b604051901515815260200161016b565b3480156101ae575f80fd5b506001545b60405190815260200161016b565b3480156101cc575f80fd5b506101936101db366004611097565b6104a4565b3480156101eb575f80fd5b506101936101fa3660046110d5565b5f546001600160a01b0391821691161490565b348015610218575f80fd5b506040516009815260200161016b565b348015610233575f80fd5b50600754610247906001600160a01b031681565b6040516001600160a01b03909116815260200161016b565b34801561026a575f80fd5b5061027e6102793660046110f0565b610562565b005b34801561028b575f80fd5b506101b361029a3660046110d5565b6001600160a01b03165f908152600d602052604090205490565b3480156102bf575f80fd5b5061027e6105af565b3480156102d3575f80fd5b5060095461019390600160a01b900460ff1681565b3480156102f3575f80fd5b50600854610247906001600160a01b031681565b348015610312575f80fd5b505f546001600160a01b0316610247565b34801561032e575f80fd5b5060408051808201909152600381526247505560e81b602082015261015e565b348015610359575f80fd5b506101b360065481565b34801561036e575f80fd5b50600954610247906001600160a01b031681565b34801561038d575f80fd5b5061019361039c36600461106d565b61061c565b3480156103ac575f80fd5b506101b3600a5481565b3480156103c1575f80fd5b506101b36103d0366004611110565b6001600160a01b039182165f908152600e6020908152604080832093909416825291909152205490565b348015610405575f80fd5b5061027e610414366004611147565b610628565b348015610424575f80fd5b5061027e610433366004611166565b61066f565b335f818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104929086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f908152600e602090815260408083203384529091528120545f191461054d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600e825283812033825290915291909120546105299184906106b9565b6001600160a01b0385165f908152600e602090815260408083203384529091529020555b6105588484846106f1565b90505b9392505050565b5f546001600160a01b031633146105945760405162461bcd60e51b815260040161058b9061117d565b60405180910390fd5b600282905560038190556105a881836111b1565b6004555050565b5f546001600160a01b031633146105d85760405162461bcd60e51b815260040161058b9061117d565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f61055b3384846106f1565b5f546001600160a01b031633146106515760405162461bcd60e51b815260040161058b9061117d565b60098054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146106985760405162461bcd60e51b815260040161058b9061117d565b6103e8816001546106a991906111c4565b6106b391906111db565b60065550565b5f81848411156106dc5760405162461bcd60e51b815260040161058b919061100b565b505f6106e884866111fa565b95945050505050565b600b545f9060ff161561071057610709848484610914565b905061055b565b6009546001600160a01b0384811691161480159061073c5750600c546001600160a01b03848116911614155b156107e5576001600160a01b0383165f9081526010602052604090205460ff168061078b57506006546001600160a01b0384165f908152600d60205260409020546107889084906111b1565b11155b6107e55760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b606482015260840161058b565b6107ed6109f7565b801561081157506001600160a01b0384165f908152600f602052604090205460ff16155b801561082a57506009546001600160a01b038481169116145b80156108375750600a5482115b1561084457610844610a36565b6001600160a01b0384165f908152600f602052604081205460ff1615806108755750600954600160a01b900460ff16155b61087f5782610889565b6108898584610d95565b6001600160a01b0385165f908152600d60205260409020549091506108ae9082610e9c565b6001600160a01b038086165f818152600d602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109019085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600d909152918220546109649184906106b9565b6001600160a01b038086165f908152600d602052604080822093909355908516815220546109929083610e9c565b6001600160a01b038085165f818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109e59086815260200190565b60405180910390a35060019392505050565b600b545f9060ff16158015610a155750600954600160a01b900460ff165b8015610a315750600a54305f908152600d602052604090205410155b905090565b600b805460ff19166001179055305f908152600d602052604081205490505f610a7b6002610a75600454610a7560025487610efa90919063ffffffff16565b90610f7a565b90505f610a888383610fbb565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110610ac057610ac061120d565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610b17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3b9190611221565b81600181518110610b4e57610b4e61120d565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81524792919091169063791ac94790610b979086905f9087903090429060040161123c565b5f604051808303815f87803b158015610bae575f80fd5b505af1158015610bc0573d5f803e3d5ffd5b505050505f610bd88247610fbb90919063ffffffff16565b90505f610bfc610bf360028054610f7a90919063ffffffff16565b60045490610fbb565b90505f610c1d6002610a7584610a7560025488610efa90919063ffffffff16565b90505f610c3983610a7560035487610efa90919063ffffffff16565b6007546040519192505f916001600160a01b039091169061753090849084818181858888f193505050503d805f8114610c8d576040519150601f19603f3d011682016040523d82523d5f602084013e610c92565b606091505b5050905080610ce35760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161058b565b8815610d7f5760085460075460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015610d56573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d7b91906112ab565b5050505b5050600b805460ff191690555050505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0385165f908152600d90915291822054610de59184906106b9565b6001600160a01b0384165f908152600d6020526040812091909155600554600454610e169190610a75908690610efa565b305f908152600d6020526040902054909150610e329082610e9c565b305f818152600d6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e829085815260200190565b60405180910390a3610e948382610fbb565b949350505050565b5f80610ea883856111b1565b90508381101561055b5760405162461bcd60e51b815260206004820152601e60248201527f4c6962536166654d6174683a206164646974696f6e206f766572666c6f770000604482015260640161058b565b5f825f03610f0957505f61049e565b5f610f1483856111c4565b905082610f2185836111db565b1461055b5760405162461bcd60e51b8152602060048201526024808201527f4c6962536166654d6174683a206d756c7469706c69636174696f6e206f766572604482015263666c6f7760e01b606482015260840161058b565b5f61055b83836040518060400160405280601d81526020017f4c6962536166654d6174683a206469766973696f6e206279207a65726f000000815250610fdf565b5f61055b83836040518060600160405280602181526020016112d7602191396106b9565b5f8183610fff5760405162461bcd60e51b815260040161058b919061100b565b505f6106e884866111db565b5f6020808352835180828501525f5b818110156110365785810183015185820160400152820161101a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461106a575f80fd5b50565b5f806040838503121561107e575f80fd5b823561108981611056565b946020939093013593505050565b5f805f606084860312156110a9575f80fd5b83356110b481611056565b925060208401356110c481611056565b929592945050506040919091013590565b5f602082840312156110e5575f80fd5b813561055b81611056565b5f8060408385031215611101575f80fd5b50508035926020909101359150565b5f8060408385031215611121575f80fd5b823561112c81611056565b9150602083013561113c81611056565b809150509250929050565b5f60208284031215611157575f80fd5b8135801515811461055b575f80fd5b5f60208284031215611176575f80fd5b5035919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561049e5761049e61119d565b808202811582820484141761049e5761049e61119d565b5f826111f557634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561049e5761049e61119d565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611231575f80fd5b815161055b81611056565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561128a5784516001600160a01b031683529383019391830191600101611265565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156112bd575f80fd5b835192506020840151915060408401519050925092509256fe4c6962536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220939264846d8812290a7666f4a3cac7eb17f209cf28a079587cafeca1ac33b37064736f6c63430008150033

Deployed Bytecode

0x608060405260043610610129575f3560e01c806372eaa9ba116100a8578063a8aa1b311161006d578063a8aa1b3114610363578063a9059cbb14610382578063c8031953146103a1578063dd62ed3e146103b6578063e01af92c146103fa578063f1d5f51714610419575f80fd5b806372eaa9ba146102c8578063735de9f7146102e8578063893d20e81461030757806395d89b41146103235780639a6c614e1461034e575f80fd5b8063313ce567116100ee578063313ce5671461020d578063412753581461022857806352f7c9881461025f57806370a0823114610280578063715018a6146102b4575f80fd5b806306fdde0314610134578063095ea7b31461017457806318160ddd146101a357806323b872dd146101c15780632f54bf6e146101e0575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b506040805180820190915260068152654e4f4445414960d01b60208201525b60405161016b919061100b565b60405180910390f35b34801561017f575f80fd5b5061019361018e36600461106d565b610438565b604051901515815260200161016b565b3480156101ae575f80fd5b506001545b60405190815260200161016b565b3480156101cc575f80fd5b506101936101db366004611097565b6104a4565b3480156101eb575f80fd5b506101936101fa3660046110d5565b5f546001600160a01b0391821691161490565b348015610218575f80fd5b506040516009815260200161016b565b348015610233575f80fd5b50600754610247906001600160a01b031681565b6040516001600160a01b03909116815260200161016b565b34801561026a575f80fd5b5061027e6102793660046110f0565b610562565b005b34801561028b575f80fd5b506101b361029a3660046110d5565b6001600160a01b03165f908152600d602052604090205490565b3480156102bf575f80fd5b5061027e6105af565b3480156102d3575f80fd5b5060095461019390600160a01b900460ff1681565b3480156102f3575f80fd5b50600854610247906001600160a01b031681565b348015610312575f80fd5b505f546001600160a01b0316610247565b34801561032e575f80fd5b5060408051808201909152600381526247505560e81b602082015261015e565b348015610359575f80fd5b506101b360065481565b34801561036e575f80fd5b50600954610247906001600160a01b031681565b34801561038d575f80fd5b5061019361039c36600461106d565b61061c565b3480156103ac575f80fd5b506101b3600a5481565b3480156103c1575f80fd5b506101b36103d0366004611110565b6001600160a01b039182165f908152600e6020908152604080832093909416825291909152205490565b348015610405575f80fd5b5061027e610414366004611147565b610628565b348015610424575f80fd5b5061027e610433366004611166565b61066f565b335f818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104929086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f908152600e602090815260408083203384529091528120545f191461054d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600e825283812033825290915291909120546105299184906106b9565b6001600160a01b0385165f908152600e602090815260408083203384529091529020555b6105588484846106f1565b90505b9392505050565b5f546001600160a01b031633146105945760405162461bcd60e51b815260040161058b9061117d565b60405180910390fd5b600282905560038190556105a881836111b1565b6004555050565b5f546001600160a01b031633146105d85760405162461bcd60e51b815260040161058b9061117d565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f61055b3384846106f1565b5f546001600160a01b031633146106515760405162461bcd60e51b815260040161058b9061117d565b60098054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146106985760405162461bcd60e51b815260040161058b9061117d565b6103e8816001546106a991906111c4565b6106b391906111db565b60065550565b5f81848411156106dc5760405162461bcd60e51b815260040161058b919061100b565b505f6106e884866111fa565b95945050505050565b600b545f9060ff161561071057610709848484610914565b905061055b565b6009546001600160a01b0384811691161480159061073c5750600c546001600160a01b03848116911614155b156107e5576001600160a01b0383165f9081526010602052604090205460ff168061078b57506006546001600160a01b0384165f908152600d60205260409020546107889084906111b1565b11155b6107e55760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b606482015260840161058b565b6107ed6109f7565b801561081157506001600160a01b0384165f908152600f602052604090205460ff16155b801561082a57506009546001600160a01b038481169116145b80156108375750600a5482115b1561084457610844610a36565b6001600160a01b0384165f908152600f602052604081205460ff1615806108755750600954600160a01b900460ff16155b61087f5782610889565b6108898584610d95565b6001600160a01b0385165f908152600d60205260409020549091506108ae9082610e9c565b6001600160a01b038086165f818152600d602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109019085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600d909152918220546109649184906106b9565b6001600160a01b038086165f908152600d602052604080822093909355908516815220546109929083610e9c565b6001600160a01b038085165f818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109e59086815260200190565b60405180910390a35060019392505050565b600b545f9060ff16158015610a155750600954600160a01b900460ff165b8015610a315750600a54305f908152600d602052604090205410155b905090565b600b805460ff19166001179055305f908152600d602052604081205490505f610a7b6002610a75600454610a7560025487610efa90919063ffffffff16565b90610f7a565b90505f610a888383610fbb565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110610ac057610ac061120d565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610b17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3b9190611221565b81600181518110610b4e57610b4e61120d565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81524792919091169063791ac94790610b979086905f9087903090429060040161123c565b5f604051808303815f87803b158015610bae575f80fd5b505af1158015610bc0573d5f803e3d5ffd5b505050505f610bd88247610fbb90919063ffffffff16565b90505f610bfc610bf360028054610f7a90919063ffffffff16565b60045490610fbb565b90505f610c1d6002610a7584610a7560025488610efa90919063ffffffff16565b90505f610c3983610a7560035487610efa90919063ffffffff16565b6007546040519192505f916001600160a01b039091169061753090849084818181858888f193505050503d805f8114610c8d576040519150601f19603f3d011682016040523d82523d5f602084013e610c92565b606091505b5050905080610ce35760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161058b565b8815610d7f5760085460075460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015610d56573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d7b91906112ab565b5050505b5050600b805460ff191690555050505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0385165f908152600d90915291822054610de59184906106b9565b6001600160a01b0384165f908152600d6020526040812091909155600554600454610e169190610a75908690610efa565b305f908152600d6020526040902054909150610e329082610e9c565b305f818152600d6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e829085815260200190565b60405180910390a3610e948382610fbb565b949350505050565b5f80610ea883856111b1565b90508381101561055b5760405162461bcd60e51b815260206004820152601e60248201527f4c6962536166654d6174683a206164646974696f6e206f766572666c6f770000604482015260640161058b565b5f825f03610f0957505f61049e565b5f610f1483856111c4565b905082610f2185836111db565b1461055b5760405162461bcd60e51b8152602060048201526024808201527f4c6962536166654d6174683a206d756c7469706c69636174696f6e206f766572604482015263666c6f7760e01b606482015260840161058b565b5f61055b83836040518060400160405280601d81526020017f4c6962536166654d6174683a206469766973696f6e206279207a65726f000000815250610fdf565b5f61055b83836040518060600160405280602181526020016112d7602191396106b9565b5f8183610fff5760405162461bcd60e51b815260040161058b919061100b565b505f6106e884866111db565b5f6020808352835180828501525f5b818110156110365785810183015185820160400152820161101a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461106a575f80fd5b50565b5f806040838503121561107e575f80fd5b823561108981611056565b946020939093013593505050565b5f805f606084860312156110a9575f80fd5b83356110b481611056565b925060208401356110c481611056565b929592945050506040919091013590565b5f602082840312156110e5575f80fd5b813561055b81611056565b5f8060408385031215611101575f80fd5b50508035926020909101359150565b5f8060408385031215611121575f80fd5b823561112c81611056565b9150602083013561113c81611056565b809150509250929050565b5f60208284031215611157575f80fd5b8135801515811461055b575f80fd5b5f60208284031215611176575f80fd5b5035919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561049e5761049e61119d565b808202811582820484141761049e5761049e61119d565b5f826111f557634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561049e5761049e61119d565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611231575f80fd5b815161055b81611056565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561128a5784516001600160a01b031683529383019391830191600101611265565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156112bd575f80fd5b835192506020840151915060408401519050925092509256fe4c6962536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220939264846d8812290a7666f4a3cac7eb17f209cf28a079587cafeca1ac33b37064736f6c63430008150033

Deployed Bytecode Sourcemap

4320:7166:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6407:80;;;;;;;;;;-1:-1:-1;6479:5:0;;;;;;;;;;;;-1:-1:-1;;;6479:5:0;;;;6407:80;;;;;;;:::i;:::-;;;;;;;;6829:216;;;;;;;;;;-1:-1:-1;6829:216:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6829:216:0;1023:187:1;6141:84:0;;;;;;;;;;-1:-1:-1;6214:8:0;;6141:84;;;1361:25:1;;;1349:2;1334:18;6141:84:0;1215:177:1;7562:370:0;;;;;;;;;;-1:-1:-1;7562:370:0;;;;;:::i;:::-;;:::i;2550:103::-;;;;;;;;;;-1:-1:-1;2550:103:0;;;;;:::i;:::-;2605:4;2640:5;-1:-1:-1;;;;;2629:16:0;;;2640:5;;2629:16;;2550:103;6231:80;;;;;;;;;;-1:-1:-1;6231:80:0;;4501:1;2252:36:1;;2240:2;2225:18;6231:80:0;2110:184:1;4769:25:0;;;;;;;;;;-1:-1:-1;4769:25:0;;;;-1:-1:-1;;;;;4769:25:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;4769:25:0;2299:203:1;10975:220:0;;;;;;;;;;-1:-1:-1;10975:220:0;;;;;:::i;:::-;;:::i;:::-;;6577:105;;;;;;;;;;-1:-1:-1;6577:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;6661:18:0;6643:7;6661:18;;;:9;:18;;;;;;;6577:105;2659:131;;;;;;;;;;;;;:::i;4871:33::-;;;;;;;;;;-1:-1:-1;4871:33:0;;;;-1:-1:-1;;;4871:33:0;;;;;;4801:35;;;;;;;;;;-1:-1:-1;4801:35:0;;;;-1:-1:-1;;;;;4801:35:0;;;6493:78;;;;;;;;;;-1:-1:-1;6545:7:0;6563:5;-1:-1:-1;;;;;6563:5:0;6493:78;;6317:84;;;;;;;;;;-1:-1:-1;6391:7:0;;;;;;;;;;;;-1:-1:-1;;;6391:7:0;;;;6317:84;;4715:47;;;;;;;;;;;;;;;;4843:19;;;;;;;;;;-1:-1:-1;4843:19:0;;;;-1:-1:-1;;;;;4843:19:0;;;7053:156;;;;;;;;;;-1:-1:-1;7053:156:0;;;;;:::i;:::-;;:::i;4911:50::-;;;;;;;;;;;;;;;;6688:133;;;;;;;;;;-1:-1:-1;6688:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6790:19:0;;;6772:7;6790:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6688:133;11207:95;;;;;;;;;;-1:-1:-1;11207:95:0;;;;;:::i;:::-;;:::i;10838:129::-;;;;;;;;;;-1:-1:-1;10838:129:0;;;;;:::i;:::-;;:::i;6829:216::-;6933:10;6904:4;6921:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6921:32:0;;;;;;;;;;:41;;;6978:37;6904:4;;6921:32;;6978:37;;;;6956:6;1361:25:1;;1349:2;1334:18;;1215:177;6978:37:0;;;;;;;;-1:-1:-1;7033:4:0;6829:216;;;;;:::o;7562:370::-;-1:-1:-1;;;;;7682:19:0;;7662:4;7682:19;;;:11;:19;;;;;;;;7702:10;7682:31;;;;;;;;-1:-1:-1;;7682:52:0;7679:186;;7784:69;;;;;;;;;;;-1:-1:-1;;;7784:69:0;;;;;;;;-1:-1:-1;;;;;7784:19:0;;-1:-1:-1;7784:19:0;;;:11;:19;;;;;7804:10;7784:31;;;;;;;;;;:69;;7820:6;;7784:35;:69::i;:::-;-1:-1:-1;;;;;7750:19:0;;;;;;:11;:19;;;;;;;;7770:10;7750:31;;;;;;;:103;7679:186;7884:40;7898:6;7906:9;7917:6;7884:13;:40::i;:::-;7877:47;;7562:370;;;;;;:::o;10975:220::-;2605:4;2640:5;-1:-1:-1;;;;;2640:5:0;2511:10;2629:16;2495:38;;;;-1:-1:-1;;;2495:38:0;;;;;;;:::i;:::-;;;;;;;;;11068:12:::1;:28:::0;;;11109:12:::1;:28:::0;;;11160:27:::1;11124:13:::0;11083;11160:27:::1;:::i;:::-;11149:8;:38:::0;-1:-1:-1;;10975:220:0:o;2659:131::-;2605:4;2640:5;-1:-1:-1;;;;;2640:5:0;2511:10;2629:16;2495:38;;;;-1:-1:-1;;;2495:38:0;;;;;;;:::i;:::-;2732:1:::1;2716:18:::0;;-1:-1:-1;;;;;;2716:18:0::1;::::0;;2750:32:::1;::::0;2445:51:1;;;2750:32:0::1;::::0;2433:2:1;2418:18;2750:32:0::1;;;;;;;2659:131::o:0;7053:156::-;7133:4;7157:44;7171:10;7183:9;7194:6;7157:13;:44::i;11207:95::-;2605:4;2640:5;-1:-1:-1;;;;;2640:5:0;2511:10;2629:16;2495:38;;;;-1:-1:-1;;;2495:38:0;;;;;;;:::i;:::-;11273:13:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;11273:21:0::1;-1:-1:-1::0;;;;11273:21:0;;::::1;::::0;;;::::1;::::0;;11207:95::o;10838:129::-;2605:4;2640:5;-1:-1:-1;;;;;2640:5:0;2511:10;2629:16;2495:38;;;;-1:-1:-1;;;2495:38:0;;;;;;;:::i;:::-;10955:4:::1;10937:13;10926:8;;:24;;;;:::i;:::-;10925:34;;;;:::i;:::-;10915:7;:44:::0;-1:-1:-1;10838:129:0:o;1546:190::-;1632:7;1668:12;1660:6;;;;1652:29;;;;-1:-1:-1;;;1652:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1692:9:0;1704:5;1708:1;1704;:5;:::i;:::-;1692:17;1546:190;-1:-1:-1;;;;;1546:190:0:o;7940:816::-;8052:8;;8032:4;;8052:8;;8049:68;;;8070:44;8088:6;8096:9;8107:6;8070:17;:44::i;:::-;8063:51;;;;8049:68;8154:4;;-1:-1:-1;;;;;8141:17:0;;;8154:4;;8141:17;;;;:38;;-1:-1:-1;8175:4:0;;-1:-1:-1;;;;;8162:17:0;;;8175:4;;8162:17;;8141:38;8137:196;;;-1:-1:-1;;;;;8204:31:0;;;;;;:20;:31;;;;;;;;;:75;;-1:-1:-1;8272:7:0;;-1:-1:-1;;;;;8239:20:0;;;;;;:9;:20;;;;;;:29;;8262:6;;8239:29;:::i;:::-;:40;;8204:75;8196:125;;;;-1:-1:-1;;;8196:125:0;;5172:2:1;8196:125:0;;;5154:21:1;5211:2;5191:18;;;5184:30;5250:34;5230:18;;;5223:62;-1:-1:-1;;;5301:18:1;;;5294:35;5346:19;;8196:125:0;4970:401:1;8196:125:0;8356:16;:14;:16::i;:::-;:42;;;;-1:-1:-1;;;;;;10796:26:0;;10771:4;10796:26;;;:18;:26;;;;;;;;10795:27;8376:22;8356:63;;;;-1:-1:-1;8415:4:0;;-1:-1:-1;;;;;8402:17:0;;;8415:4;;8402:17;8356:63;:92;;;;;8432:16;;8423:6;:25;8356:92;8353:111;;;8451:10;:8;:10::i;:::-;-1:-1:-1;;;;;10796:26:0;;8479:22;10796:26;;;:18;:26;;;;;;;;10795:27;8504:40;;;-1:-1:-1;8531:13:0;;-1:-1:-1;;;8531:13:0;;;;8530:14;8504:40;:87;;8585:6;8504:87;;;8547:35;8567:6;8575;8547:19;:35::i;:::-;-1:-1:-1;;;;;8625:20:0;;;;;;:9;:20;;;;;;8479:112;;-1:-1:-1;8625:40:0;;8479:112;8625:24;:40::i;:::-;-1:-1:-1;;;;;8602:20:0;;;;;;;:9;:20;;;;;;;:63;;;;8683:43;;;;;;;;;;8711:14;1361:25:1;;1349:2;1334:18;;1215:177;8683:43:0;;;;;;;;-1:-1:-1;8744:4:0;;7940:816;-1:-1:-1;;;;7940:816:0:o;7221:333::-;7354:53;;;;;;;;;;;-1:-1:-1;;;7354:53:0;;;;;;;;-1:-1:-1;;;;;7354:17:0;;7317:4;7354:17;;;:9;:17;;;;;;;:53;;7376:6;;7354:21;:53::i;:::-;-1:-1:-1;;;;;7334:17:0;;;;;;;:9;:17;;;;;;:73;;;;7441:20;;;;;;;:32;;7466:6;7441:24;:32::i;:::-;-1:-1:-1;;;;;7418:20:0;;;;;;;:9;:20;;;;;;;:55;;;;7489:35;;;;;;;;;;7517:6;1361:25:1;;1349:2;1334:18;;1215:177;7489:35:0;;;;;;;;-1:-1:-1;7542:4:0;7221:333;;;;;:::o;11310:173::-;11384:8;;11359:4;;11384:8;;11383:9;:35;;;;-1:-1:-1;11405:13:0;;-1:-1:-1;;;11405:13:0;;;;11383:35;:92;;;;-1:-1:-1;11459:16:0;;11449:4;11431:24;;;;:9;:24;;;;;;:44;;11383:92;11376:99;;11310:173;:::o;8768:1494::-;5379:8;:15;;-1:-1:-1;;5379:15:0;5390:4;5379:15;;;8866:4:::1;-1:-1:-1::0;6661:18:0;;;:9;:18;;;;;;8817:55:::1;;8883:23;8909:59;8966:1;8909:52;8952:8;;8909:38;8934:12;;8909:20;:24;;:38;;;;:::i;:::-;:42:::0;::::1;:52::i;:59::-;8883:85:::0;-1:-1:-1;8979:20:0::1;9002:41;:20:::0;8883:85;9002:24:::1;:41::i;:::-;9080:16;::::0;;9094:1:::1;9080:16:::0;;;;;::::1;::::0;;8979:64;;-1:-1:-1;9056:21:0::1;::::0;9080:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9080:16:0::1;9056:40;;9125:4;9107;9112:1;9107:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9107:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9151:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;9151:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;9107:7;;9151:20;;;;;:13;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9141:4;9146:1;9141:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9141:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;9242:13:::1;::::0;:195:::1;::::0;-1:-1:-1;;;9242:195:0;;9208:21:::1;::::0;9242:13;;;::::1;::::0;:64:::1;::::0;:195:::1;::::0;9321:12;;9184:21:::1;::::0;9364:4;;9391::::1;::::0;9411:15:::1;::::0;9242:195:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9448:17;9468:40;9494:13;9468:21;:25;;:40;;;;:::i;:::-;9448:60;;9519:19;9541:33;9554:19;9571:1;9554:12:::0;::::1;:16;;:19;;;;:::i;:::-;9541:8;::::0;;:12:::1;:33::i;:::-;9519:55;;9585:26;9614:51;9663:1;9614:44;9646:11;9614:27;9628:12;;9614:9;:13;;:27;;;;:::i;:51::-;9585:80;;9676:26;9705:44;9737:11;9705:27;9719:12;;9705:9;:13;;:27;;;;:::i;:44::-;9823:10;::::0;9815:67:::1;::::0;9676:73;;-1:-1:-1;9765:21:0::1;::::0;-1:-1:-1;;;;;9823:10:0;;::::1;::::0;9872:5:::1;::::0;9676:73;;9765:21;9815:67;9765:21;9815:67;9676:73;9823:10;9872:5;9815:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9764:118;;;9901:16;9893:59;;;::::0;-1:-1:-1;;;9893:59:0;;7293:2:1;9893:59:0::1;::::0;::::1;7275:21:1::0;7332:2;7312:18;;;7305:30;7371:32;7351:18;;;7344:60;7421:18;;9893:59:0::1;7091:354:1::0;9893:59:0::1;9968:19:::0;;9965:290:::1;;10003:13;::::0;10184:10:::1;::::0;10003:240:::1;::::0;-1:-1:-1;;;10003:240:0;;10086:4:::1;10003:240;::::0;::::1;7791:34:1::0;7841:18;;;7834:34;;;10003:13:0::1;7884:18:1::0;;;7877:34;;;7927:18;;;7920:34;-1:-1:-1;;;;;10184:10:0;;::::1;7970:19:1::0;;;7963:44;10213:15:0::1;8023:19:1::0;;;8016:35;10003:13:0;::::1;::::0;:29:::1;::::0;10040:18;;7725:19:1;;10003:240:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9965:290;-1:-1:-1::0;;5399:8:0;:16;;-1:-1:-1;;5399:16:0;;;-1:-1:-1;;;;;;;;8768:1494:0:o;10274:422::-;10393:53;;;;;;;;;;;-1:-1:-1;;;10393:53:0;;;;;;;;-1:-1:-1;;;;;10393:17:0;;10353:7;10393:17;;;:9;:17;;;;;;;:53;;10415:6;;10393:21;:53::i;:::-;-1:-1:-1;;;;;10373:17:0;;;;;;:9;:17;;;;;:73;;;;10502:11;;10488:8;;10477:37;;10502:11;10477:20;;:6;;:10;:20::i;:37::-;10570:4;10552:24;;;;:9;:24;;;;;;10457:57;;-1:-1:-1;10552:39:0;;10457:57;10552:28;:39::i;:::-;10543:4;10525:24;;;;:9;:24;;;;;;;:66;;;;10607:42;;-1:-1:-1;;;;;10607:42:0;;;;;;;10639:9;1361:25:1;;1349:2;1334:18;;1215:177;10607:42:0;;;;;;;;10667:21;:6;10678:9;10667:10;:21::i;:::-;10660:28;10274:422;-1:-1:-1;;;;10274:422:0:o;1213:182::-;1271:7;;1303:5;1307:1;1303;:5;:::i;:::-;1291:17;;1332:1;1327;:6;;1319:49;;;;-1:-1:-1;;;1319:49:0;;8575:2:1;1319:49:0;;;8557:21:1;8614:2;8594:18;;;8587:30;8653:32;8633:18;;;8626:60;8703:18;;1319:49:0;8373:354:1;1742:249:0;1800:7;1824:1;1829;1824:6;1820:47;;-1:-1:-1;1854:1:0;1847:8;;1820:47;1877:9;1889:5;1893:1;1889;:5;:::i;:::-;1877:17;-1:-1:-1;1922:1:0;1913:5;1917:1;1877:17;1913:5;:::i;:::-;:10;1905:59;;;;-1:-1:-1;;;1905:59:0;;8934:2:1;1905:59:0;;;8916:21:1;8973:2;8953:18;;;8946:30;9012:34;8992:18;;;8985:62;-1:-1:-1;;;9063:18:1;;;9056:34;9107:19;;1905:59:0;8732:400:1;1997:135:0;2055:7;2082:42;2086:1;2089;2082:42;;;;;;;;;;;;;;;;;:3;:42::i;1401:139::-;1459:7;1486:46;1490:1;1493;1486:46;;;;;;;;;;;;;;;;;:3;:46::i;2138:189::-;2224:7;2259:12;2252:5;2244:28;;;;-1:-1:-1;;;2244:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2283:9:0;2295:5;2299:1;2295;:5;:::i;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;622:70;567:131;:::o;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;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:248::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;-1:-1:-1;;2675:23:1;;;2745:2;2730:18;;;2717:32;;-1:-1:-1;2507:248:1:o;2990:388::-;3058:6;3066;3119:2;3107:9;3098:7;3094:23;3090:32;3087:52;;;3135:1;3132;3125:12;3087:52;3174:9;3161:23;3193:31;3218:5;3193:31;:::i;:::-;3243:5;-1:-1:-1;3300:2:1;3285:18;;3272:32;3313:33;3272:32;3313:33;:::i;:::-;3365:7;3355:17;;;2990:388;;;;;:::o;3383:273::-;3439:6;3492:2;3480:9;3471:7;3467:23;3463:32;3460:52;;;3508:1;3505;3498:12;3460:52;3547:9;3534:23;3600:5;3593:13;3586:21;3579:5;3576:32;3566:60;;3622:1;3619;3612:12;3661:180;3720:6;3773:2;3761:9;3752:7;3748:23;3744:32;3741:52;;;3789:1;3786;3779:12;3741:52;-1:-1:-1;3812:23:1;;3661:180;-1:-1:-1;3661:180:1:o;3846:329::-;4048:2;4030:21;;;4087:1;4067:18;;;4060:29;-1:-1:-1;;;4120:2:1;4105:18;;4098:36;4166:2;4151:18;;3846:329::o;4180:127::-;4241:10;4236:3;4232:20;4229:1;4222:31;4272:4;4269:1;4262:15;4296:4;4293:1;4286:15;4312:125;4377:9;;;4398:10;;;4395:36;;;4411:18;;:::i;4442:168::-;4515:9;;;4546;;4563:15;;;4557:22;;4543:37;4533:71;;4584:18;;:::i;4615:217::-;4655:1;4681;4671:132;;4725:10;4720:3;4716:20;4713:1;4706:31;4760:4;4757:1;4750:15;4788:4;4785:1;4778:15;4671:132;-1:-1:-1;4817:9:1;;4615:217::o;4837:128::-;4904:9;;;4925:11;;;4922:37;;;4939:18;;:::i;5508:127::-;5569:10;5564:3;5560:20;5557:1;5550:31;5600:4;5597:1;5590:15;5624:4;5621:1;5614:15;5640:251;5710:6;5763:2;5751:9;5742:7;5738:23;5734:32;5731:52;;;5779:1;5776;5769:12;5731:52;5811:9;5805:16;5830:31;5855:5;5830:31;:::i;5896:980::-;6158:4;6206:3;6195:9;6191:19;6237:6;6226:9;6219:25;6263:2;6301:6;6296:2;6285:9;6281:18;6274:34;6344:3;6339:2;6328:9;6324:18;6317:31;6368:6;6403;6397:13;6434:6;6426;6419:22;6472:3;6461:9;6457:19;6450:26;;6511:2;6503:6;6499:15;6485:29;;6532:1;6542:195;6556:6;6553:1;6550:13;6542:195;;;6621:13;;-1:-1:-1;;;;;6617:39:1;6605:52;;6712:15;;;;6677:12;;;;6653:1;6571:9;6542:195;;;-1:-1:-1;;;;;;;6793:32:1;;;;6788:2;6773:18;;6766:60;-1:-1:-1;;;6857:3:1;6842:19;6835:35;6754:3;5896:980;-1:-1:-1;;;5896:980:1:o;8062:306::-;8150:6;8158;8166;8219:2;8207:9;8198:7;8194:23;8190:32;8187:52;;;8235:1;8232;8225:12;8187:52;8264:9;8258:16;8248:26;;8314:2;8303:9;8299:18;8293:25;8283:35;;8358:2;8347:9;8343:18;8337:25;8327:35;;8062:306;;;;;:::o

Swarm Source

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