ETH Price: $3,458.89 (-0.70%)
Gas: 3 Gwei

Token

Simplify 314 (SIMP)
 

Overview

Max Total Supply

999,690.40201459240346006 SIMP

Holders

4,490

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
72.282848296418458844 SIMP

Value
$0.00
0x9f432a2964351a7830bd9ea10f65107677d73e04
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:
Simplify_314

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-03-20
*/

// SPDX-License-Identifier: MIT

//https://linktr.ee/simplifyerc

pragma solidity ^0.8.20;


/**
 * @title ERC314
 * @dev Implementation of the ERC314 interface.
 * ERC314 is a derivative of ERC20 which aims to integrate a liquidity pool on the token in order to enable native swaps, notably to reduce gas consumption. 
 */

// Events interface for ERC314
interface IEERC314 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event AddLiquidity(uint32 _blockToUnlockLiquidity, uint256 value);
    event RemoveLiquidity(uint256 value);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out
    );
}


abstract contract ERC314 is IEERC314{
    mapping(address account => uint256) private _balances;

    uint256 private _totalSupply;
    uint256 public _maxWallet;
    uint32 public blockToUnlockLiquidity;

    string private _name;
    string private _symbol;

    address public owner;
    address public liquidityProvider;

    bool public tradingEnable;
    bool public liquidityAdded;
    bool public maxWalletEnable;

    uint256 presaleAmount;

    bool public presaleEnable = false;

    mapping(address account => uint32) private lastTransaction;
    

    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: caller is not the owner");
        _;
    }

    modifier onlyLiquidityProvider() {
        require(msg.sender == liquidityProvider, "You are not the liquidity provider");
        _;
    }

    /**
     * @dev Sets the values for {name}, {symbol} and {totalSupply}. 
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_, uint256 totalSupply_) {
        _name = name_;
        _symbol = symbol_;
        _totalSupply = totalSupply_;
        _maxWallet = totalSupply_ / 200;
        owner = msg.sender;
        tradingEnable = false;
        maxWalletEnable = true;
        _balances[msg.sender] = totalSupply_/10;
        presaleAmount = (totalSupply_ - _balances[msg.sender]) / 2;
        uint256 liquidityAmount = totalSupply_ - presaleAmount - _balances[msg.sender];
        _balances[address(this)] = liquidityAmount;
        liquidityAdded = false;

    }

    /**
     * @dev Sends the presale amount to the investors
     */
    function presale(address[] memory _investors) public onlyOwner {
        require(presaleEnable == false, "Presale already enabled");
        uint256 _amount = presaleAmount / _investors.length;
        for (uint256 i = 0; i < _investors.length; i++) {
            _balances[_investors[i]] += _amount;
        }
        presaleEnable = true;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }


    /**
     * @dev Returns the number of decimals used to get its user representation.
     */

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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - the caller must have a balance of at least `value`.
     * - if the receiver is the contract, the caller must send the amount of tokens to sell
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        // sell or transfer
        if (to == address(this)) {
            sell(value);
        }
        else{
            _transfer(msg.sender, to, value);
        }
        return true;
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively burns if `to` is the zero address.
     * All customizations to transfers and burns should be done by overriding this function.
     * This function includes MEV protection, which prevents the same address from making two transactions in the same block.(lastTransaction)
     * Emits a {Transfer} event.
     */
    function _transfer(address from, address to, uint256 value) internal virtual {
        
        require(lastTransaction[msg.sender] != block.number, "You can't make two transactions in the same block");

        lastTransaction[msg.sender] = uint32(block.number);

        require (_balances[from] >= value, "ERC20: transfer amount exceeds balance");

        unchecked {
            _balances[from] = _balances[from] - value;
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
    * @dev Returns the amount of ETH and tokens in the contract, used for trading.
    */
    function getReserves() public view returns (uint256, uint256) {
        return (address(this).balance, _balances[address(this)]);
    }

    /**
    * @dev Enables or disables trading.
    * @param _tradingEnable: true to enable trading, false to disable trading.
    * onlyOwner modifier
    */
    function enableTrading(bool _tradingEnable) external onlyOwner {
        tradingEnable = _tradingEnable;
    }

    /**
    * @dev Enables or disables the max wallet.
    * @param _maxWalletEnable: true to enable max wallet, false to disable max wallet.
    * onlyOwner modifier
    */
    function enableMaxWallet(bool _maxWalletEnable) external onlyOwner {
        maxWalletEnable = _maxWalletEnable;
    }

    /**
    * @dev Sets the max wallet.
    * @param _maxWallet_: the new max wallet.
    * onlyOwner modifier
    */
    function setMaxWallet(uint256 _maxWallet_) external onlyOwner {
        _maxWallet = _maxWallet_;
    }

    /**
    * @dev Transfers the ownership of the contract to zero address
    * onlyOwner modifier
    */
    function renounceOwnership() external onlyOwner {
        owner = address(0);
    }

    /**
    * @dev Adds liquidity to the contract.
    * @param _blockToUnlockLiquidity: the block number to unlock the liquidity.
    * value: the amount of ETH to add to the liquidity.
    * onlyOwner modifier
    */
    function addLiquidity(uint32 _blockToUnlockLiquidity) public onlyOwner payable {

        require(liquidityAdded == false, "Liquidity already added");

        liquidityAdded = true;

        require(msg.value > 0, "No ETH sent");
        require(block.number < _blockToUnlockLiquidity, "Block number too low");
        
        blockToUnlockLiquidity = _blockToUnlockLiquidity;
        tradingEnable = true;
        liquidityProvider = msg.sender;
        
        emit AddLiquidity(_blockToUnlockLiquidity, msg.value);
    }

    /**
    * @dev Removes liquidity from the contract.
    * onlyLiquidityProvider modifier
    */
    function removeLiquidity() public onlyLiquidityProvider {

        require(block.number > blockToUnlockLiquidity, "Liquidity locked");

        tradingEnable = false;

        payable(msg.sender).transfer(address(this).balance);

        emit RemoveLiquidity(address(this).balance);

    }

    /**
    * @dev Extends the liquidity lock, only if the new block number is higher than the current one.
    * @param _blockToUnlockLiquidity: the new block number to unlock the liquidity.
    * onlyLiquidityProvider modifier
    */
    function extendLiquidityLock(uint32 _blockToUnlockLiquidity) public onlyLiquidityProvider {

        require(blockToUnlockLiquidity < _blockToUnlockLiquidity, "You can't shorten duration");

        blockToUnlockLiquidity = _blockToUnlockLiquidity;
    }

    /**
    * @dev Estimates the amount of tokens or ETH to receive when buying or selling.
    * @param value: the amount of ETH or tokens to swap.
    * @param _buy: true if buying, false if selling.
    */
    function getAmountOut(uint256 value, bool _buy) public view returns(uint256) {

        (uint256 reserveETH, uint256 reserveToken) = getReserves();

        if (_buy) {
            return (value * reserveToken) / (reserveETH + value);
        } else {
            return (value * reserveETH) / (reserveToken + value);
        }
    }

    /**
    * @dev Buys tokens with ETH.
    * internal function
    */
    function buy() internal {
        
        require(tradingEnable, "Trading not enable");

        uint256 token_amount = (msg.value * _balances[address(this)]) / (address(this).balance);

        if (maxWalletEnable) {
            require(token_amount + _balances[msg.sender] <= _maxWallet, "Max wallet exceeded");
        }

        _transfer(address(this), msg.sender, token_amount);

        emit Swap(msg.sender, msg.value,0,0,token_amount);
    }

    /**
    * @dev Sells tokens for ETH.
    * internal function
    */
    function sell(uint256 sell_amount) internal {

        require(tradingEnable, "Trading not enable");

        uint256 ethAmount = (sell_amount * address(this).balance) / (_balances[address(this)] + sell_amount);

        require(ethAmount > 0, "Sell amount too low");
        require(address(this).balance >= ethAmount, "Insufficient ETH in reserves");

        _transfer(msg.sender, address(this), sell_amount);
        payable(msg.sender).transfer(ethAmount);

        emit Swap(msg.sender, 0,sell_amount,ethAmount,0);
    }

    /**
    * @dev Fallback function to buy tokens with ETH.
    */
    receive() external payable {
        buy();
    }
}


contract Simplify_314 is ERC314 {
    uint256 private _totalSupply = 1_000_000 * 10 ** 18;

    constructor() ERC314("Simplify 314", "SIMP", _totalSupply) {
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"_blockToUnlockLiquidity","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"}],"name":"Swap","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":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_blockToUnlockLiquidity","type":"uint32"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockToUnlockLiquidity","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_maxWalletEnable","type":"bool"}],"name":"enableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingEnable","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_blockToUnlockLiquidity","type":"uint32"}],"name":"extendLiquidityLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_investors","type":"address[]"}],"name":"presale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"presaleEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet_","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805460ff1916905569d3c21bcecceda1000000600b5534801562000028575f80fd5b506040518060400160405280600c81526020016b14da5b5c1b1a599e480ccc4d60a21b81525060405180604001604052806004815260200163053494d560e41b815250600b5482600490816200007f9190620001f7565b5060056200008e8382620001f7565b506001819055620000a160c882620002c3565b600255600680546001600160a01b031916331790556007805462ff00ff60a01b1916600160b01b179055620000d8600a82620002c3565b335f908152602081905260409020819055600290620000f89083620002e3565b620001049190620002c3565b6008819055335f908152602081905260408120549091620001269084620002e3565b620001329190620002e3565b305f9081526020819052604090205550506007805460ff60a81b1916905550620003099050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200018257607f821691505b602082108103620001a157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001f257805f5260205f20601f840160051c81016020851015620001ce5750805b601f840160051c820191505b81811015620001ef575f8155600101620001da565b50505b505050565b81516001600160401b0381111562000213576200021362000159565b6200022b816200022484546200016d565b84620001a7565b602080601f83116001811462000261575f8415620002495750858301515b5f19600386901b1c1916600185901b178555620002bb565b5f85815260208120601f198616915b82811015620002915788860151825594840194600190910190840162000270565b5085821015620002af57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f82620002de57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156200030357634e487b7160e01b5f52601160045260245ffd5b92915050565b6112ac80620003175f395ff3fe60806040526004361061014a575f3560e01c806367b9a286116100b357806395d89b411161006d57806395d89b41146103d45780639a540abf146103e8578063a9059cbb146103fb578063ae19139e1461041a578063d944392314610439578063f275f64b14610459575f80fd5b806367b9a2861461032b57806370a082311461033f578063715018a6146103735780637ec18cf61461038757806382247ec0146103a05780638da5cb5b146103b5575f80fd5b806318160ddd1161010457806318160ddd1461026857806327de2e851461027c578063313ce5671461029b5780635b8bec55146102b65780635d0044ca146102ed57806365029d821461030c575f80fd5b806304c0c4761461015d57806306fdde03146101935780630902f1ac146101b457806311106ee2146101eb57806312a54b62146102185780631693e8d414610248575f80fd5b3661015957610157610478565b005b5f80fd5b348015610168575f80fd5b506003546101799063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561019e575f80fd5b506101a76105bc565b60405161018a9190610f47565b3480156101bf575f80fd5b506101d6305f908152602081905260409020544791565b6040805192835260208301919091520161018a565b3480156101f6575f80fd5b5061020a610205366004610fa7565b61064c565b60405190815260200161018a565b348015610223575f80fd5b5060075461023890600160b01b900460ff1681565b604051901515815260200161018a565b348015610253575f80fd5b5060075461023890600160a01b900460ff1681565b348015610273575f80fd5b5060015461020a565b348015610287575f80fd5b50610157610296366004610fd1565b6106b0565b3480156102a6575f80fd5b506040516012815260200161018a565b3480156102c1575f80fd5b506007546102d5906001600160a01b031681565b6040516001600160a01b03909116815260200161018a565b3480156102f8575f80fd5b50610157610307366004610ffb565b610750565b348015610317575f80fd5b5061015761032636600461103c565b61077f565b348015610336575f80fd5b50610157610882565b34801561034a575f80fd5b5061020a6103593660046110fc565b6001600160a01b03165f9081526020819052604090205490565b34801561037e575f80fd5b50610157610962565b348015610392575f80fd5b506009546102389060ff1681565b3480156103ab575f80fd5b5061020a60025481565b3480156103c0575f80fd5b506006546102d5906001600160a01b031681565b3480156103df575f80fd5b506101a761099e565b6101576103f6366004610fd1565b6109ad565b348015610406575f80fd5b50610238610415366004611115565b610b37565b348015610425575f80fd5b5061015761043436600461113d565b610b6a565b348015610444575f80fd5b5060075461023890600160a81b900460ff1681565b348015610464575f80fd5b5061015761047336600461113d565b610bb2565b600754600160a01b900460ff166104cb5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064015b60405180910390fd5b305f9081526020819052604081205447906104e6903461116a565b6104f09190611181565b600754909150600160b01b900460ff161561056557600254335f9081526020819052604090205461052190836111a0565b11156105655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016104c2565b610570303383610bfa565b604080513481525f602082018190528183015260608101839052905133917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a250565b6060600480546105cb906111b3565b80601f01602080910402602001604051908101604052809291908181526020018280546105f7906111b3565b80156106425780601f1061061957610100808354040283529160200191610642565b820191905f5260205f20905b81548152906001019060200180831161062557829003601f168201915b5050505050905090565b5f805f610665305f908152602081905260409020544791565b9150915083156106965761067985836111a0565b610683828761116a565b61068d9190611181565b925050506106aa565b6106a085826111a0565b610683838761116a565b92915050565b6007546001600160a01b031633146106da5760405162461bcd60e51b81526004016104c2906111eb565b60035463ffffffff8083169116106107345760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e27742073686f7274656e206475726174696f6e00000000000060448201526064016104c2565b6003805463ffffffff191663ffffffff92909216919091179055565b6006546001600160a01b0316331461077a5760405162461bcd60e51b81526004016104c29061122d565b600255565b6006546001600160a01b031633146107a95760405162461bcd60e51b81526004016104c29061122d565b60095460ff16156107fc5760405162461bcd60e51b815260206004820152601760248201527f50726573616c6520616c726561647920656e61626c656400000000000000000060448201526064016104c2565b5f815160085461080c9190611181565b90505f5b825181101561087057815f8085848151811061082e5761082e611262565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461086391906111a0565b9091555050600101610810565b50506009805460ff1916600117905550565b6007546001600160a01b031633146108ac5760405162461bcd60e51b81526004016104c2906111eb565b60035463ffffffff1643116108f65760405162461bcd60e51b815260206004820152601060248201526f131a5c5d5a591a5d1e481b1bd8dad95960821b60448201526064016104c2565b6007805460ff60a01b1916905560405133904780156108fc02915f818181858888f1935050505015801561092c573d5f803e3d5ffd5b506040514781527f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa9060200160405180910390a1565b6006546001600160a01b0316331461098c5760405162461bcd60e51b81526004016104c29061122d565b600680546001600160a01b0319169055565b6060600580546105cb906111b3565b6006546001600160a01b031633146109d75760405162461bcd60e51b81526004016104c29061122d565b600754600160a81b900460ff1615610a315760405162461bcd60e51b815260206004820152601760248201527f4c697175696469747920616c726561647920616464656400000000000000000060448201526064016104c2565b6007805460ff60a81b1916600160a81b17905534610a7f5760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b60448201526064016104c2565b8063ffffffff164310610acb5760405162461bcd60e51b8152602060048201526014602482015273426c6f636b206e756d62657220746f6f206c6f7760601b60448201526064016104c2565b6003805463ffffffff831663ffffffff199091168117909155600780546001600160a81b0319163317600160a01b179055604080519182523460208301527f0c6c8102f3ac634c5fb327ba1a5d5c18030294d9f5cc309afa9e8a9020a77175910160405180910390a150565b5f306001600160a01b03841603610b5657610b5182610db1565b610b61565b610b61338484610bfa565b50600192915050565b6006546001600160a01b03163314610b945760405162461bcd60e51b81526004016104c29061122d565b60078054911515600160b01b0260ff60b01b19909216919091179055565b6006546001600160a01b03163314610bdc5760405162461bcd60e51b81526004016104c29061122d565b60078054911515600160a01b0260ff60a01b19909216919091179055565b335f908152600a60205260409020544363ffffffff90911603610c795760405162461bcd60e51b815260206004820152603160248201527f596f752063616e2774206d616b652074776f207472616e73616374696f6e7320604482015270696e207468652073616d6520626c6f636b60781b60648201526084016104c2565b335f908152600a60209081526040808320805463ffffffff19164363ffffffff161790556001600160a01b038616835290829052902054811115610d0e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104c2565b6001600160a01b038084165f908152602081905260409020805483900390558216610d4157600180548290039055610d5f565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610da491815260200190565b60405180910390a3505050565b600754600160a01b900460ff16610dff5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064016104c2565b305f90815260208190526040812054610e199083906111a0565b610e23478461116a565b610e2d9190611181565b90505f8111610e745760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b60448201526064016104c2565b80471015610ec45760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e2072657365727665730000000060448201526064016104c2565b610ecf333084610bfa565b604051339082156108fc029083905f818181858888f19350505050158015610ef9573d5f803e3d5ffd5b50604080515f808252602082018590528183018490526060820152905133917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a25050565b5f602080835283518060208501525f5b81811015610f7357858101830151858201604001528201610f57565b505f604082860101526040601f19601f8301168501019250505092915050565b80358015158114610fa2575f80fd5b919050565b5f8060408385031215610fb8575f80fd5b82359150610fc860208401610f93565b90509250929050565b5f60208284031215610fe1575f80fd5b813563ffffffff81168114610ff4575f80fd5b9392505050565b5f6020828403121561100b575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114610fa2575f80fd5b5f602080838503121561104d575f80fd5b823567ffffffffffffffff80821115611064575f80fd5b818501915085601f830112611077575f80fd5b81358181111561108957611089611012565b8060051b604051601f19603f830116810181811085821117156110ae576110ae611012565b6040529182528482019250838101850191888311156110cb575f80fd5b938501935b828510156110f0576110e185611026565b845293850193928501926110d0565b98975050505050505050565b5f6020828403121561110c575f80fd5b610ff482611026565b5f8060408385031215611126575f80fd5b61112f83611026565b946020939093013593505050565b5f6020828403121561114d575f80fd5b610ff482610f93565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106aa576106aa611156565b5f8261119b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106aa576106aa611156565b600181811c908216806111c757607f821691505b6020821081036111e557634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f596f7520617265206e6f7420746865206c69717569646974792070726f76696460408201526132b960f11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffdfea26469706673582212203ddf57b15eb5ca635035b6b44f183993ce78f5910a0af40f04c3012d80c61acb64736f6c63430008180033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806367b9a286116100b357806395d89b411161006d57806395d89b41146103d45780639a540abf146103e8578063a9059cbb146103fb578063ae19139e1461041a578063d944392314610439578063f275f64b14610459575f80fd5b806367b9a2861461032b57806370a082311461033f578063715018a6146103735780637ec18cf61461038757806382247ec0146103a05780638da5cb5b146103b5575f80fd5b806318160ddd1161010457806318160ddd1461026857806327de2e851461027c578063313ce5671461029b5780635b8bec55146102b65780635d0044ca146102ed57806365029d821461030c575f80fd5b806304c0c4761461015d57806306fdde03146101935780630902f1ac146101b457806311106ee2146101eb57806312a54b62146102185780631693e8d414610248575f80fd5b3661015957610157610478565b005b5f80fd5b348015610168575f80fd5b506003546101799063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561019e575f80fd5b506101a76105bc565b60405161018a9190610f47565b3480156101bf575f80fd5b506101d6305f908152602081905260409020544791565b6040805192835260208301919091520161018a565b3480156101f6575f80fd5b5061020a610205366004610fa7565b61064c565b60405190815260200161018a565b348015610223575f80fd5b5060075461023890600160b01b900460ff1681565b604051901515815260200161018a565b348015610253575f80fd5b5060075461023890600160a01b900460ff1681565b348015610273575f80fd5b5060015461020a565b348015610287575f80fd5b50610157610296366004610fd1565b6106b0565b3480156102a6575f80fd5b506040516012815260200161018a565b3480156102c1575f80fd5b506007546102d5906001600160a01b031681565b6040516001600160a01b03909116815260200161018a565b3480156102f8575f80fd5b50610157610307366004610ffb565b610750565b348015610317575f80fd5b5061015761032636600461103c565b61077f565b348015610336575f80fd5b50610157610882565b34801561034a575f80fd5b5061020a6103593660046110fc565b6001600160a01b03165f9081526020819052604090205490565b34801561037e575f80fd5b50610157610962565b348015610392575f80fd5b506009546102389060ff1681565b3480156103ab575f80fd5b5061020a60025481565b3480156103c0575f80fd5b506006546102d5906001600160a01b031681565b3480156103df575f80fd5b506101a761099e565b6101576103f6366004610fd1565b6109ad565b348015610406575f80fd5b50610238610415366004611115565b610b37565b348015610425575f80fd5b5061015761043436600461113d565b610b6a565b348015610444575f80fd5b5060075461023890600160a81b900460ff1681565b348015610464575f80fd5b5061015761047336600461113d565b610bb2565b600754600160a01b900460ff166104cb5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064015b60405180910390fd5b305f9081526020819052604081205447906104e6903461116a565b6104f09190611181565b600754909150600160b01b900460ff161561056557600254335f9081526020819052604090205461052190836111a0565b11156105655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016104c2565b610570303383610bfa565b604080513481525f602082018190528183015260608101839052905133917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a250565b6060600480546105cb906111b3565b80601f01602080910402602001604051908101604052809291908181526020018280546105f7906111b3565b80156106425780601f1061061957610100808354040283529160200191610642565b820191905f5260205f20905b81548152906001019060200180831161062557829003601f168201915b5050505050905090565b5f805f610665305f908152602081905260409020544791565b9150915083156106965761067985836111a0565b610683828761116a565b61068d9190611181565b925050506106aa565b6106a085826111a0565b610683838761116a565b92915050565b6007546001600160a01b031633146106da5760405162461bcd60e51b81526004016104c2906111eb565b60035463ffffffff8083169116106107345760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e27742073686f7274656e206475726174696f6e00000000000060448201526064016104c2565b6003805463ffffffff191663ffffffff92909216919091179055565b6006546001600160a01b0316331461077a5760405162461bcd60e51b81526004016104c29061122d565b600255565b6006546001600160a01b031633146107a95760405162461bcd60e51b81526004016104c29061122d565b60095460ff16156107fc5760405162461bcd60e51b815260206004820152601760248201527f50726573616c6520616c726561647920656e61626c656400000000000000000060448201526064016104c2565b5f815160085461080c9190611181565b90505f5b825181101561087057815f8085848151811061082e5761082e611262565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461086391906111a0565b9091555050600101610810565b50506009805460ff1916600117905550565b6007546001600160a01b031633146108ac5760405162461bcd60e51b81526004016104c2906111eb565b60035463ffffffff1643116108f65760405162461bcd60e51b815260206004820152601060248201526f131a5c5d5a591a5d1e481b1bd8dad95960821b60448201526064016104c2565b6007805460ff60a01b1916905560405133904780156108fc02915f818181858888f1935050505015801561092c573d5f803e3d5ffd5b506040514781527f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa9060200160405180910390a1565b6006546001600160a01b0316331461098c5760405162461bcd60e51b81526004016104c29061122d565b600680546001600160a01b0319169055565b6060600580546105cb906111b3565b6006546001600160a01b031633146109d75760405162461bcd60e51b81526004016104c29061122d565b600754600160a81b900460ff1615610a315760405162461bcd60e51b815260206004820152601760248201527f4c697175696469747920616c726561647920616464656400000000000000000060448201526064016104c2565b6007805460ff60a81b1916600160a81b17905534610a7f5760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b60448201526064016104c2565b8063ffffffff164310610acb5760405162461bcd60e51b8152602060048201526014602482015273426c6f636b206e756d62657220746f6f206c6f7760601b60448201526064016104c2565b6003805463ffffffff831663ffffffff199091168117909155600780546001600160a81b0319163317600160a01b179055604080519182523460208301527f0c6c8102f3ac634c5fb327ba1a5d5c18030294d9f5cc309afa9e8a9020a77175910160405180910390a150565b5f306001600160a01b03841603610b5657610b5182610db1565b610b61565b610b61338484610bfa565b50600192915050565b6006546001600160a01b03163314610b945760405162461bcd60e51b81526004016104c29061122d565b60078054911515600160b01b0260ff60b01b19909216919091179055565b6006546001600160a01b03163314610bdc5760405162461bcd60e51b81526004016104c29061122d565b60078054911515600160a01b0260ff60a01b19909216919091179055565b335f908152600a60205260409020544363ffffffff90911603610c795760405162461bcd60e51b815260206004820152603160248201527f596f752063616e2774206d616b652074776f207472616e73616374696f6e7320604482015270696e207468652073616d6520626c6f636b60781b60648201526084016104c2565b335f908152600a60209081526040808320805463ffffffff19164363ffffffff161790556001600160a01b038616835290829052902054811115610d0e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104c2565b6001600160a01b038084165f908152602081905260409020805483900390558216610d4157600180548290039055610d5f565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610da491815260200190565b60405180910390a3505050565b600754600160a01b900460ff16610dff5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064016104c2565b305f90815260208190526040812054610e199083906111a0565b610e23478461116a565b610e2d9190611181565b90505f8111610e745760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b60448201526064016104c2565b80471015610ec45760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e2072657365727665730000000060448201526064016104c2565b610ecf333084610bfa565b604051339082156108fc029083905f818181858888f19350505050158015610ef9573d5f803e3d5ffd5b50604080515f808252602082018590528183018490526060820152905133917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a25050565b5f602080835283518060208501525f5b81811015610f7357858101830151858201604001528201610f57565b505f604082860101526040601f19601f8301168501019250505092915050565b80358015158114610fa2575f80fd5b919050565b5f8060408385031215610fb8575f80fd5b82359150610fc860208401610f93565b90509250929050565b5f60208284031215610fe1575f80fd5b813563ffffffff81168114610ff4575f80fd5b9392505050565b5f6020828403121561100b575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114610fa2575f80fd5b5f602080838503121561104d575f80fd5b823567ffffffffffffffff80821115611064575f80fd5b818501915085601f830112611077575f80fd5b81358181111561108957611089611012565b8060051b604051601f19603f830116810181811085821117156110ae576110ae611012565b6040529182528482019250838101850191888311156110cb575f80fd5b938501935b828510156110f0576110e185611026565b845293850193928501926110d0565b98975050505050505050565b5f6020828403121561110c575f80fd5b610ff482611026565b5f8060408385031215611126575f80fd5b61112f83611026565b946020939093013593505050565b5f6020828403121561114d575f80fd5b610ff482610f93565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106aa576106aa611156565b5f8261119b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106aa576106aa611156565b600181811c908216806111c757607f821691505b6020821081036111e557634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f596f7520617265206e6f7420746865206c69717569646974792070726f76696460408201526132b960f11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffdfea26469706673582212203ddf57b15eb5ca635035b6b44f183993ce78f5910a0af40f04c3012d80c61acb64736f6c63430008180033

Deployed Bytecode Sourcemap

10289:169:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10267:5;:3;:5::i;:::-;10289:169;;;;;923:36;;;;;;;;;;-1:-1:-1;923:36:0;;;;;;;;;;;188:10:1;176:23;;;158:42;;146:2;131:18;923:36:0;;;;;;;;2924:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5555:137::-;;;;;;;;;;;;5677:4;5599:7;5659:24;;;;;;;;;;;5636:21;;5555:137;;;;;938:25:1;;;994:2;979:18;;972:34;;;;911:18;5555:137:0;764:248:1;8637:342:0;;;;;;;;;;-1:-1:-1;8637:342:0;;;;;:::i;:::-;;:::i;:::-;;;1581:25:1;;;1569:2;1554:18;8637:342:0;1435:177:1;1159:27:0;;;;;;;;;;-1:-1:-1;1159:27:0;;;;-1:-1:-1;;;1159:27:0;;;;;;;;;1782:14:1;;1775:22;1757:41;;1745:2;1730:18;1159:27:0;1617:187:1;1094:25:0;;;;;;;;;;-1:-1:-1;1094:25:0;;;;-1:-1:-1;;;1094:25:0;;;;;;3489:99;;;;;;;;;;-1:-1:-1;3568:12:0;;3489:99;;8156:259;;;;;;;;;;-1:-1:-1;8156:259:0;;;;;:::i;:::-;;:::i;3340:84::-;;;;;;;;;;-1:-1:-1;3340:84:0;;3414:2;2232:36:1;;2220:2;2205:18;3340:84:0;2090:184:1;1053:32:0;;;;;;;;;;-1:-1:-1;1053:32:0;;;;-1:-1:-1;;;;;1053:32:0;;;;;;-1:-1:-1;;;;;2443:32:1;;;2425:51;;2413:2;2398:18;1053:32:0;2279:203:1;6414:105:0;;;;;;;;;;-1:-1:-1;6414:105:0;;;;;:::i;:::-;;:::i;2501:353::-;;;;;;;;;;-1:-1:-1;2501:353:0;;;;;:::i;:::-;;:::i;7608:299::-;;;;;;;;;;;;;:::i;3651:118::-;;;;;;;;;;-1:-1:-1;3651:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;3743:18:0;3716:7;3743:18;;;;;;;;;;;;3651:118;6638:85;;;;;;;;;;;;;:::i;1225:33::-;;;;;;;;;;-1:-1:-1;1225:33:0;;;;;;;;891:25;;;;;;;;;;;;;;;;1026:20;;;;;;;;;;-1:-1:-1;1026:20:0;;;;-1:-1:-1;;;;;1026:20:0;;;3134:95;;;;;;;;;;;;;:::i;6956:540::-;;;;;;:::i;:::-;;:::i;4024:280::-;;;;;;;;;;-1:-1:-1;4024:280:0;;;;;:::i;:::-;;:::i;6163:120::-;;;;;;;;;;-1:-1:-1;6163:120:0;;;;;:::i;:::-;;:::i;1126:26::-;;;;;;;;;;-1:-1:-1;1126:26:0;;;;-1:-1:-1;;;1126:26:0;;;;;;5864:112;;;;;;;;;;-1:-1:-1;5864:112:0;;;;;:::i;:::-;;:::i;9063:464::-;9116:13;;-1:-1:-1;;;9116:13:0;;;;9108:44;;;;-1:-1:-1;;;9108:44:0;;4945:2:1;9108:44:0;;;4927:21:1;4984:2;4964:18;;;4957:30;-1:-1:-1;;;5003:18:1;;;4996:48;5061:18;;9108:44:0;;;;;;;;;9219:4;9165:20;9201:24;;;;;;;;;;;9230:21;;9189:36;;:9;:36;:::i;:::-;9188:64;;;;:::i;:::-;9269:15;;9165:87;;-1:-1:-1;;;;9269:15:0;;;;9265:130;;;9349:10;;9334;9324:9;:21;;;;;;;;;;;9309:36;;:12;:36;:::i;:::-;:50;;9301:82;;;;-1:-1:-1;;;9301:82:0;;5949:2:1;9301:82:0;;;5931:21:1;5988:2;5968:18;;;5961:30;-1:-1:-1;;;6007:18:1;;;6000:49;6066:18;;9301:82:0;5747:343:1;9301:82:0;9407:50;9425:4;9432:10;9444:12;9407:9;:50::i;:::-;9475:44;;;9492:9;6342:25:1;;9502:1:0;6398:2:1;6383:18;;6376:34;;;6426:18;;;6419:34;6484:2;6469:18;;6462:34;;;9475:44:0;;9480:10;;9475:44;;;;;;6329:3:1;9475:44:0;;;9087:440;9063:464::o;2924:91::-;2969:13;3002:5;2995:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2924:91;:::o;8637:342::-;8705:7;8728:18;8748:20;8772:13;5677:4;5599:7;5659:24;;;;;;;;;;;5636:21;;5555:137;8772:13;8727:58;;;;8802:4;8798:174;;;8856:18;8869:5;8856:10;:18;:::i;:::-;8831:20;8839:12;8831:5;:20;:::i;:::-;8830:45;;;;:::i;:::-;8823:52;;;;;;8798:174;8939:20;8954:5;8939:12;:20;:::i;:::-;8916:18;8924:10;8916:5;:18;:::i;8637:342::-;;;;;:::o;8156:259::-;1530:17;;-1:-1:-1;;;;;1530:17:0;1516:10;:31;1508:78;;;;-1:-1:-1;;;1508:78:0;;;;;;;:::i;:::-;8267:22:::1;::::0;:48:::1;::::0;;::::1;:22:::0;::::1;:48;8259:87;;;::::0;-1:-1:-1;;;8259:87:0;;7497:2:1;8259:87:0::1;::::0;::::1;7479:21:1::0;7536:2;7516:18;;;7509:30;7575:28;7555:18;;;7548:56;7621:18;;8259:87:0::1;7295:350:1::0;8259:87:0::1;8359:22;:48:::0;;-1:-1:-1;;8359:48:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;8156:259::o;6414:105::-;1394:5;;-1:-1:-1;;;;;1394:5:0;1380:10;:19;1372:64;;;;-1:-1:-1;;;1372:64:0;;;;;;;:::i;:::-;6487:10:::1;:24:::0;6414:105::o;2501:353::-;1394:5;;-1:-1:-1;;;;;1394:5:0;1380:10;:19;1372:64;;;;-1:-1:-1;;;1372:64:0;;;;;;;:::i;:::-;2583:13:::1;::::0;::::1;;:22;2575:58;;;::::0;-1:-1:-1;;;2575:58:0;;8213:2:1;2575:58:0::1;::::0;::::1;8195:21:1::0;8252:2;8232:18;;;8225:30;8291:25;8271:18;;;8264:53;8334:18;;2575:58:0::1;8011:347:1::0;2575:58:0::1;2644:15;2678:10;:17;2662:13;;:33;;;;:::i;:::-;2644:51;;2711:9;2706:110;2730:10;:17;2726:1;:21;2706:110;;;2797:7;2769:9;:24:::0;2779:10:::1;2790:1;2779:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2769:24:0::1;-1:-1:-1::0;;;;;2769:24:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;2749:3:0::1;;2706:110;;;-1:-1:-1::0;;2826:13:0::1;:20:::0;;-1:-1:-1;;2826:20:0::1;2842:4;2826:20;::::0;;-1:-1:-1;2501:353:0:o;7608:299::-;1530:17;;-1:-1:-1;;;;;1530:17:0;1516:10;:31;1508:78;;;;-1:-1:-1;;;1508:78:0;;;;;;;:::i;:::-;7700:22:::1;::::0;::::1;;7685:12;:37;7677:66;;;::::0;-1:-1:-1;;;7677:66:0;;8697:2:1;7677:66:0::1;::::0;::::1;8679:21:1::0;8736:2;8716:18;;;8709:30;-1:-1:-1;;;8755:18:1;;;8748:46;8811:18;;7677:66:0::1;8495:340:1::0;7677:66:0::1;7756:13;:21:::0;;-1:-1:-1;;;;7756:21:0::1;::::0;;7790:51:::1;::::0;7798:10:::1;::::0;7819:21:::1;7790:51:::0;::::1;;;::::0;7772:5:::1;7790:51:::0;7772:5;7790:51;7819:21;7798:10;7790:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7859:38:0::1;::::0;7875:21:::1;1581:25:1::0;;7859:38:0::1;::::0;1569:2:1;1554:18;7859:38:0::1;;;;;;;7608:299::o:0;6638:85::-;1394:5;;-1:-1:-1;;;;;1394:5:0;1380:10;:19;1372:64;;;;-1:-1:-1;;;1372:64:0;;;;;;;:::i;:::-;6697:5:::1;:18:::0;;-1:-1:-1;;;;;;6697:18:0::1;::::0;;6638:85::o;3134:95::-;3181:13;3214:7;3207:14;;;;;:::i;6956:540::-;1394:5;;-1:-1:-1;;;;;1394:5:0;1380:10;:19;1372:64;;;;-1:-1:-1;;;1372:64:0;;;;;;;:::i;:::-;7056:14:::1;::::0;-1:-1:-1;;;7056:14:0;::::1;;;:23;7048:59;;;::::0;-1:-1:-1;;;7048:59:0;;9042:2:1;7048:59:0::1;::::0;::::1;9024:21:1::0;9081:2;9061:18;;;9054:30;9120:25;9100:18;;;9093:53;9163:18;;7048:59:0::1;8840:347:1::0;7048:59:0::1;7120:14;:21:::0;;-1:-1:-1;;;;7120:21:0::1;-1:-1:-1::0;;;7120:21:0::1;::::0;;7162:9:::1;7154:37;;;::::0;-1:-1:-1;;;7154:37:0;;9394:2:1;7154:37:0::1;::::0;::::1;9376:21:1::0;9433:2;9413:18;;;9406:30;-1:-1:-1;;;9452:18:1;;;9445:41;9503:18;;7154:37:0::1;9192:335:1::0;7154:37:0::1;7225:23;7210:38;;:12;:38;7202:71;;;::::0;-1:-1:-1;;;7202:71:0;;9734:2:1;7202:71:0::1;::::0;::::1;9716:21:1::0;9773:2;9753:18;;;9746:30;-1:-1:-1;;;9792:18:1;;;9785:50;9852:18;;7202:71:0::1;9532:344:1::0;7202:71:0::1;7294:22;:48:::0;;::::1;::::0;::::1;-1:-1:-1::0;;7294:48:0;;::::1;::::0;::::1;::::0;;;7353:13:::1;:20:::0;;-1:-1:-1;;;;;;7384:30:0;7404:10:::1;7384:30:::0;-1:-1:-1;;;7384:30:0;;;7440:48:::1;::::0;;10053:42:1;;;7478:9:0::1;10126:2:1::0;10111:18;;10104:34;7440:48:0::1;::::0;10026:18:1;7440:48:0::1;;;;;;;6956:540:::0;:::o;4024:280::-;4093:4;4157;-1:-1:-1;;;;;4143:19:0;;;4139:136;;4179:11;4184:5;4179:4;:11::i;:::-;4139:136;;;4231:32;4241:10;4253:2;4257:5;4231:9;:32::i;:::-;-1:-1:-1;4292:4:0;4024:280;;;;:::o;6163:120::-;1394:5;;-1:-1:-1;;;;;1394:5:0;1380:10;:19;1372:64;;;;-1:-1:-1;;;1372:64:0;;;;;;;:::i;:::-;6241:15:::1;:34:::0;;;::::1;;-1:-1:-1::0;;;6241:34:0::1;-1:-1:-1::0;;;;6241:34:0;;::::1;::::0;;;::::1;::::0;;6163:120::o;5864:112::-;1394:5;;-1:-1:-1;;;;;1394:5:0;1380:10;:19;1372:64;;;;-1:-1:-1;;;1372:64:0;;;;;;;:::i;:::-;5938:13:::1;:30:::0;;;::::1;;-1:-1:-1::0;;;5938:30:0::1;-1:-1:-1::0;;;;5938:30:0;;::::1;::::0;;;::::1;::::0;;5864:112::o;4725:721::-;4847:10;4831:27;;;;:15;:27;;;;;;4862:12;4831:27;;;;:43;4823:105;;;;-1:-1:-1;;;4823:105:0;;10351:2:1;4823:105:0;;;10333:21:1;10390:2;10370:18;;;10363:30;10429:34;10409:18;;;10402:62;-1:-1:-1;;;10480:18:1;;;10473:47;10537:19;;4823:105:0;10149:413:1;4823:105:0;4957:10;4941:27;;;;:15;:27;;;;;;;;:50;;-1:-1:-1;;4941:50:0;4978:12;4941:50;;;;;-1:-1:-1;;;;;5013:15:0;;;;;;;;;;;-1:-1:-1;;5013:24:0;5004:76;;;;-1:-1:-1;;;5004:76:0;;10769:2:1;5004:76:0;;;10751:21:1;10808:2;10788:18;;;10781:30;10847:34;10827:18;;;10820:62;-1:-1:-1;;;10898:18:1;;;10891:36;10944:19;;5004:76:0;10567:402:1;5004:76:0;-1:-1:-1;;;;;5136:15:0;;;:9;:15;;;;;;;;;;;;:23;;;5118:41;;5187:16;;5183:213;;5249:12;:21;;;;;;;5183:213;;;-1:-1:-1;;;;;5347:13:0;;:9;:13;;;;;;;;;;:22;;;;;;5183:213;5428:2;-1:-1:-1;;;;;5413:25:0;5422:4;-1:-1:-1;;;;;5413:25:0;;5432:5;5413:25;;;;1581::1;;1569:2;1554:18;;1435:177;5413:25:0;;;;;;;;4725:721;;;:::o;9611:539::-;9676:13;;-1:-1:-1;;;9676:13:0;;;;9668:44;;;;-1:-1:-1;;;9668:44:0;;4945:2:1;9668:44:0;;;4927:21:1;4984:2;4964:18;;;4957:30;-1:-1:-1;;;5003:18:1;;;4996:48;5061:18;;9668:44:0;4743:342:1;9668:44:0;9804:4;9725:17;9786:24;;;;;;;;;;;:38;;9813:11;;9786:38;:::i;:::-;9746:35;9760:21;9746:11;:35;:::i;:::-;9745:80;;;;:::i;:::-;9725:100;;9858:1;9846:9;:13;9838:45;;;;-1:-1:-1;;;9838:45:0;;11176:2:1;9838:45:0;;;11158:21:1;11215:2;11195:18;;;11188:30;-1:-1:-1;;;11234:18:1;;;11227:49;11293:18;;9838:45:0;10974:343:1;9838:45:0;9927:9;9902:21;:34;;9894:75;;;;-1:-1:-1;;;9894:75:0;;11524:2:1;9894:75:0;;;11506:21:1;11563:2;11543:18;;;11536:30;11602;11582:18;;;11575:58;11650:18;;9894:75:0;11322:352:1;9894:75:0;9982:49;9992:10;10012:4;10019:11;9982:9;:49::i;:::-;10042:39;;10050:10;;10042:39;;;;;10071:9;;10042:39;;;;10071:9;10050:10;10042:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10099:43:0;;;10116:1;6342:25:1;;;6398:2;6383:18;;6376:34;;;6426:18;;;6419:34;;;6484:2;6469:18;;6462:34;10099:43:0;;10104:10;;10099:43;;;;;;6329:3:1;10099:43:0;;;9655:495;9611:539;:::o;211:548:1:-;323:4;352:2;381;370:9;363:21;413:6;407:13;456:6;451:2;440:9;436:18;429:34;481:1;491:140;505:6;502:1;499:13;491:140;;;600:14;;;596:23;;590:30;566:17;;;585:2;562:26;555:66;520:10;;491:140;;;495:3;680:1;675:2;666:6;655:9;651:22;647:31;640:42;750:2;743;739:7;734:2;726:6;722:15;718:29;707:9;703:45;699:54;691:62;;;;211:548;;;;:::o;1017:160::-;1082:20;;1138:13;;1131:21;1121:32;;1111:60;;1167:1;1164;1157:12;1111:60;1017:160;;;:::o;1182:248::-;1247:6;1255;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;1360:9;1347:23;1337:33;;1389:35;1420:2;1409:9;1405:18;1389:35;:::i;:::-;1379:45;;1182:248;;;;;:::o;1809:276::-;1867:6;1920:2;1908:9;1899:7;1895:23;1891:32;1888:52;;;1936:1;1933;1926:12;1888:52;1975:9;1962:23;2025:10;2018:5;2014:22;2007:5;2004:33;1994:61;;2051:1;2048;2041:12;1994:61;2074:5;1809:276;-1:-1:-1;;;1809:276:1:o;2487:180::-;2546:6;2599:2;2587:9;2578:7;2574:23;2570:32;2567:52;;;2615:1;2612;2605:12;2567:52;-1:-1:-1;2638:23:1;;2487:180;-1:-1:-1;2487:180:1:o;2672:127::-;2733:10;2728:3;2724:20;2721:1;2714:31;2764:4;2761:1;2754:15;2788:4;2785:1;2778:15;2804:173;2872:20;;-1:-1:-1;;;;;2921:31:1;;2911:42;;2901:70;;2967:1;2964;2957:12;2982:1121;3066:6;3097:2;3140;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;3196:9;3183:23;3225:18;3266:2;3258:6;3255:14;3252:34;;;3282:1;3279;3272:12;3252:34;3320:6;3309:9;3305:22;3295:32;;3365:7;3358:4;3354:2;3350:13;3346:27;3336:55;;3387:1;3384;3377:12;3336:55;3423:2;3410:16;3445:2;3441;3438:10;3435:36;;;3451:18;;:::i;:::-;3497:2;3494:1;3490:10;3529:2;3523:9;3592:2;3588:7;3583:2;3579;3575:11;3571:25;3563:6;3559:38;3647:6;3635:10;3632:22;3627:2;3615:10;3612:18;3609:46;3606:72;;;3658:18;;:::i;:::-;3694:2;3687:22;3744:18;;;3778:15;;;;-1:-1:-1;3820:11:1;;;3816:20;;;3848:19;;;3845:39;;;3880:1;3877;3870:12;3845:39;3904:11;;;;3924:148;3940:6;3935:3;3932:15;3924:148;;;4006:23;4025:3;4006:23;:::i;:::-;3994:36;;3957:12;;;;4050;;;;3924:148;;;4091:6;2982:1121;-1:-1:-1;;;;;;;;2982:1121:1:o;4108:186::-;4167:6;4220:2;4208:9;4199:7;4195:23;4191:32;4188:52;;;4236:1;4233;4226:12;4188:52;4259:29;4278:9;4259:29;:::i;4299:254::-;4367:6;4375;4428:2;4416:9;4407:7;4403:23;4399:32;4396:52;;;4444:1;4441;4434:12;4396:52;4467:29;4486:9;4467:29;:::i;:::-;4457:39;4543:2;4528:18;;;;4515:32;;-1:-1:-1;;;4299:254:1:o;4558:180::-;4614:6;4667:2;4655:9;4646:7;4642:23;4638:32;4635:52;;;4683:1;4680;4673:12;4635:52;4706:26;4722:9;4706:26;:::i;5090:127::-;5151:10;5146:3;5142:20;5139:1;5132:31;5182:4;5179:1;5172:15;5206:4;5203:1;5196:15;5222:168;5295:9;;;5326;;5343:15;;;5337:22;;5323:37;5313:71;;5364:18;;:::i;5395:217::-;5435:1;5461;5451:132;;5505:10;5500:3;5496:20;5493:1;5486:31;5540:4;5537:1;5530:15;5568:4;5565:1;5558:15;5451:132;-1:-1:-1;5597:9:1;;5395:217::o;5617:125::-;5682:9;;;5703:10;;;5700:36;;;5716:18;;:::i;6507:380::-;6586:1;6582:12;;;;6629;;;6650:61;;6704:4;6696:6;6692:17;6682:27;;6650:61;6757:2;6749:6;6746:14;6726:18;6723:38;6720:161;;6803:10;6798:3;6794:20;6791:1;6784:31;6838:4;6835:1;6828:15;6866:4;6863:1;6856:15;6720:161;;6507:380;;;:::o;6892:398::-;7094:2;7076:21;;;7133:2;7113:18;;;7106:30;7172:34;7167:2;7152:18;;7145:62;-1:-1:-1;;;7238:2:1;7223:18;;7216:32;7280:3;7265:19;;6892:398::o;7650:356::-;7852:2;7834:21;;;7871:18;;;7864:30;7930:34;7925:2;7910:18;;7903:62;7997:2;7982:18;;7650:356::o;8363:127::-;8424:10;8419:3;8415:20;8412:1;8405:31;8455:4;8452:1;8445:15;8479:4;8476:1;8469:15

Swarm Source

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