Contract 0x82a0e6c02b91ec9f6ff943c0a933c03dbaa19689 3

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3ad1d99cae2e56ec325d60e5f521c1ac95adc3fdba42fd2ae3b8a95485b7e47cTransfer302544872022-07-02 14:30:072 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.01466244191271.029814047
0x6f796861c17b6b6bea7181d801769c5d40b7b7ea8c98d1a51c0ea430dee4ad4cTransfer302544172022-07-02 14:25:237 mins ago0xc7caec4d528f79862dfdc0076c61ed5d5d79a9e4 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.003442154202 69.821988329
0xc95a7bb23674d1001b3b92b8f191e29bf8ae9f3302cc99e13d84fe3d247dca90Approve302544062022-07-02 14:24:398 mins ago0xe0b4572b9d00bf7e51a7c812dde8bdb36255625c IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.001308174386 53.907544674
0xd72d9473866f11888c40f745fe8bf72116413a729a261d173b69de0337ed5ce4Approve302543532022-07-02 14:22:3510 mins ago0xceefd2778f571c8d4efbb4946b9c1d721df78dbf IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.00126864279 48.144009347
0xcff24281ac01e08b92b0ca704979fda43d27002ee0ac0ceb6c0e7cb55fcdf06dTransfer302543382022-07-02 14:22:0510 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.007968468338147.294189151
0x78a7c01abdc5d08d2d279f58c02a8dbbb79b8c9a038d222e142f6aadf0cf22e4Approve302543042022-07-02 14:20:5311 mins ago0x9cc7c31dcd6658b6651cb2bcbdeaf87ec3530780 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.002307924949.9
0x16d48cfd1618667d5bf97b91d2e9a3fcce5811caac453b70ccd9695e1e6315b2Transfer302542802022-07-02 14:20:0512 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.007968468338147.294189151
0x1e32f9b6b428c818289119a28842f53bf222de3339748721fd05a8bf692a8a8eApprove302542312022-07-02 14:18:2314 mins ago0xceefd2778f571c8d4efbb4946b9c1d721df78dbf IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.003828214168 82.7704086
0xdae4ac6946d4fb3f4e7c2e8819383e1e58c4007520dbc71327fb78c2413931f6Approve302541192022-07-02 14:14:3118 mins ago0x674e3f6865b8c44683b267668e31ff4c4ef68b2d IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.004135952044 89.42405665
0xa13b3b7a44bedd4102fcd4f0c2b1cc75f3a2413c370fb524c6bb7b69ccf350c4Transfer302540682022-07-02 14:12:2320 mins ago0xb85d0ab27b84c6f850bea8aa35aa07930d86ae97 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.00237392842 73.726774762
0x8cbfb57cf47b3666f0d2acd640246d8c91378a9f60ed56d0d2b3ab16a4eeba8fTransfer302540492022-07-02 14:11:0721 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.007251460828134.0405706
0x21f837d1997489a89f035724ec42e56aae464955300ae0b798e6e089c041185bApprove302540172022-07-02 14:08:5923 mins ago0xe0b4572b9d00bf7e51a7c812dde8bdb36255625c IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.003220659203 69.598253984
0x36f1243cc1d5ef0870fb0835bb6d7513938569e4884bd8bb9cdf442cc9b86f0bTransfer302539942022-07-02 14:08:0524 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.007249852342134.0405706
0x53010e0aeaa65a67cd57a0857723cad2e32869f7958c80d508477b6928df032bApprove302539592022-07-02 14:06:5525 mins ago0xd4e2d478f50984538ece24e975452ebcb8d6d2f9 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.004901334 106
0x105a965bdfaaa7d74b552435a5c43dc11ee1648d3b09b833d55ac053cf380874Approve302538542022-07-02 14:03:1729 mins ago0x49b843b7bd759bf6decf0be5595bcdf27301106f IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.003192975 69
0x05b81fa0e9f53fa0dbe5deba294b438b3676d80119a72c210d590cdb0b14c980Approve302538442022-07-02 14:02:5729 mins ago0xd7f27d58861f58edb80209d944c55d9ec6aa0805 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.001703526714 64.588690607
0x9c4a61d755d4587dd8171bc516b9343cd257b241c69e7d45d50396594ffa5351Approve302538132022-07-02 14:01:3131 mins ago0xabc1e1a73360b4fa4f110c1f3180690c08223345 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.004044432997 87.399956735
0x27ec0824c79db15c9b0b04415118170655fc722c420ed7da87a8a82b24cf2643Transfer302538062022-07-02 14:01:0331 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.006571938653121.506806694
0x27fd54cb7313f4611c8566dcbc350dd305d075d074af89871c51a1b1858f6ff9Approve302537712022-07-02 13:58:4334 mins ago0xd7f27d58861f58edb80209d944c55d9ec6aa0805 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.003284248962 70.972424913
0x94ee7a7ee891510f1f8d6b02b9bdea426f6a7dc6ad34fb9c38479a0feb3e2f63Transfer302537612022-07-02 13:58:0334 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.005487492366101.434266183
0x8fe2a244f49b7926e552c19a49c3fabefb3ad0f26b5137dcc9fed6d12613c18cApprove302537562022-07-02 13:57:3935 mins ago0xc690051f53700752eb21365d569c30ba0f3b063d IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.003748275 81
0x190e17f8dd863bec195fcf62349800744c1dee18745adf710819edc5304599dcTransfer302536822022-07-02 13:53:0539 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.00293450062954.243158452
0x2c1ca0a32957ee751b74b8d1a94d7094d2ba76b8723ca621afe90ae5648b4d71Approve302533732022-07-02 13:42:2750 mins ago0xc8feb7c7930d35fdde0571cf1db92f0a63b9eec3 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.001230868082 46.710488487
0xd35cb8f4153414012da13bb7a23721f9d50027777d5ff5908c0ce76e853c1cafApprove302533332022-07-02 13:41:0751 mins ago0xc8feb7c7930d35fdde0571cf1db92f0a63b9eec3 IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.001396175619 52.983781254
0x8da3d7e4d4480a05cdf0f8b4798b805732bf78d6d7bc7c9322cd4814826aa5abTransfer302533062022-07-02 13:40:0952 mins agoMEXC.com IN  0x82a0e6c02b91ec9f6ff943c0a933c03dbaa196890 MATIC0.00567471104104.894934108
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WicryptNetworkToken

Compiler Version
v0.7.0+commit.9e61f92b

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-12-02
*/

//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.0;

/**
 *Submitted for verification at polygonscan.com on 2021-11-08
 */

// File: Ownable.sol

/*
 * Ownable
 *
 * Base contract with an owner.
 * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.
 */
abstract contract Ownable {
    address payable public owner;

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Unauthorized access to contract");
        _;
    }

    function transferOwnership(address payable newOwner) public onlyOwner {
        if (newOwner != address(0)) {
            owner = newOwner;
        }
    }
}

// File: Address.sol

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

// File: SafeMath.sol

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: interfaces/IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

// File: SafeERC20.sol

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(
            value
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(
            value,
            "SafeERC20: decreased allowance below zero"
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            require(
                abi.decode(returndata, (bool)),
                "SafeERC20: ERC20 operation did not succeed"
            );
        }
    }
}

// File: Context.sol

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: Pausable.sol

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context, Ownable {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual onlyOwner whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual onlyOwner whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: ERC20.sol

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
abstract contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(
        string memory name,
        string memory symbol,
        uint8 decimals,
        uint256 totalSupply
    ) {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
        _totalSupply = totalSupply;

        _totalSupply = totalSupply;
        _balances[msg.sender] = totalSupply;

        emit Transfer(address(0), msg.sender, totalSupply);
    }

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:   
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File: ERC20Pausable.sol

/**
 * @dev ERC20 token with pausable token transfers, minting and burning.
 *
 * Useful for scenarios such as preventing trades until the end of an evaluation
 * period, or having an emergency switch for freezing all token transfers in the
 * event of a large bug.
 */
abstract contract ERC20Pausable is ERC20, Pausable {
    /**
     * @dev See {ERC20-_beforeTokenTransfer}.
     *
     * Requirements:
     *
     * - the contract must not be paused.
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);

        require(!paused(), "ERC20Pausable: token transfer while paused");
    }
}

// File: WicrptNetworkToken.sol

interface ILiquidityRestrictor {
    function assureByAgent(
        address token,
        address from,
        address to
    ) external returns (bool allow, string memory message);

    function assureLiquidityRestrictions(address from, address to)
        external
        returns (bool allow, string memory message);
}

interface IAntisnipe {
    function assureCanTransfer(
        address sender,
        address from,
        address to,
        uint256 amount
    ) external returns (bool response);
}

contract WicryptNetworkToken is ERC20Pausable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    uint256 private _price;

    constructor()
        ERC20("Wicrypt Network Token", "WNT", 18, 200000000000000000000000000)
    {}

    function mint(uint256 amount) public virtual onlyOwner {
        address account = msg.sender;
        _mint(account, amount);
    }

    function withdrawTokens() public virtual onlyOwner {
        address contractAddress = address(this);
        uint256 tokenBalance = balanceOf(contractAddress);
        _transfer(contractAddress, owner, tokenBalance);
    }

    function price() public view returns (uint256) {
        return _price;
    }

    function SetPrice(uint256 priceInWei) public onlyOwner {
        _price = priceInWei;
    }

    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(
            amount,
            "ERC20: burn amount exceeds allowance"
        );

        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
    }

    function withdraw() external onlyOwner {
        uint256 balance = address(this).balance;
        msg.sender.transfer(balance);
    }

    function withdraw(address tokenAddress) external onlyOwner {
        IERC20 token = IERC20(tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        token.safeTransfer(_msgSender(), balance);
    }

    IAntisnipe public antisnipe =
        IAntisnipe(0x2306b42Baca1b34770EA489F4eC2023f5340B0Ca);
    ILiquidityRestrictor public liquidityRestrictor =
        ILiquidityRestrictor(0x9841BBb35BDeeDDD737103E02eD97a525b3FA85C);

    bool public antisnipeEnabled = true;
    bool public liquidityRestrictionEnabled = true;

    event AntisnipeDisabled(uint256 timestamp, address user);
    event LiquidityRestrictionDisabled(uint256 timestamp, address user);
    event AntisnipeAddressChanged(address addr);
    event LiquidityRestrictionAddressChanged(address addr);

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (from == address(0) || to == address(0)) return;
        if (
            liquidityRestrictionEnabled &&
            address(liquidityRestrictor) != address(0)
        ) {
            (bool allow, string memory message) = liquidityRestrictor
                .assureLiquidityRestrictions(from, to);
            require(allow, message);
        }

        if (antisnipeEnabled && address(antisnipe) != address(0)) {
            require(antisnipe.assureCanTransfer(msg.sender, from, to, amount));
        }
    }

    function setAntisnipeDisable() external onlyOwner {
        require(antisnipeEnabled);
        antisnipeEnabled = false;
        emit AntisnipeDisabled(block.timestamp, msg.sender);
    }

    function setLiquidityRestrictorDisable() external onlyOwner {
        require(liquidityRestrictionEnabled);
        liquidityRestrictionEnabled = false;
        emit LiquidityRestrictionDisabled(block.timestamp, msg.sender);
    }

    function setAntisnipeAddress(address addr) external onlyOwner {
        antisnipe = IAntisnipe(addr);
        emit AntisnipeAddressChanged(addr);
    }

    function setLiquidityRestrictionAddress(address addr) external onlyOwner {
        liquidityRestrictor = ILiquidityRestrictor(addr);
        emit LiquidityRestrictionAddressChanged(addr);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"AntisnipeAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"AntisnipeDisabled","type":"event"},{"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":"addr","type":"address"}],"name":"LiquidityRestrictionAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"LiquidityRestrictionDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"priceInWei","type":"uint256"}],"name":"SetPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antisnipe","outputs":[{"internalType":"contract IAntisnipe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antisnipeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityRestrictionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityRestrictor","outputs":[{"internalType":"contract ILiquidityRestrictor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setAntisnipeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAntisnipeDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setLiquidityRestrictionAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLiquidityRestrictorDisable","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600780546001600160a01b0319908116732306b42baca1b34770ea489f4ec2023f5340b0ca179091556008805460ff60a81b1960ff60a01b1991909316739841bbb35bdeeddd737103e02ed97a525b3fa85c1716600160a01b1791909116600160a81b1790553480156200007757600080fd5b506040518060400160405280601581526020017f57696372797074204e6574776f726b20546f6b656e00000000000000000000008152506040518060400160405280600381526020016215d39560ea1b81525060126aa56fa5b99019a5c80000008360039080519060200190620000f092919062000189565b5082516200010690600490602086019062000189565b506005805460ff191660ff8416179055600281905533600081815260208181526040808320859055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505060058054610100600160a81b03191633610100021760ff60a81b1916905550620002259050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001cc57805160ff1916838001178555620001fc565b82800160010185558215620001fc579182015b82811115620001fc578251825591602001919060010190620001df565b506200020a9291506200020e565b5090565b5b808211156200020a57600081556001016200020f565b611b3680620002356000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063611bf629116101045780638da5cb5b116100a2578063a457c2d711610071578063a457c2d7146104cf578063a9059cbb146104fb578063dd62ed3e14610527578063f2fde38b14610555576101da565b80638da5cb5b1461049a57806395d89b41146104a2578063a035b1fe146104aa578063a0712d68146104b2576101da565b806379cc6790116100de57806379cc67901461043a578063882cfb3f1461046657806389adfcbe1461048a5780638d8f2adb14610492576101da565b8063611bf629146103e657806370a082311461040c57806374fb20e114610432576101da565b8063313ce5671161017c57806342966c681161014b57806342966c681461037e5780634f5539c01461039b57806351cff8d9146103b85780635c975abb146103de576101da565b8063313ce5671461032457806339509351146103425780633a7bf1161461036e5780633ccfd60b14610376576101da565b80630b8a053f116101b85780630b8a053f146102a657806318160ddd146102cc5780631c8aeb0c146102e657806323b872dd146102ee576101da565b806306fdde03146101df578063081e1b581461025c578063095ea7b314610266575b600080fd5b6101e761057b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610264610611565b005b6102926004803603604081101561027c57600080fd5b506001600160a01b0381351690602001356106c2565b604080519115158252519081900360200190f35b610264600480360360208110156102bc57600080fd5b50356001600160a01b03166106df565b6102d4610785565b60408051918252519081900360200190f35b61029261078b565b6102926004803603606081101561030457600080fd5b506001600160a01b0381358116916020810135909116906040013561079b565b61032c610822565b6040805160ff9092168252519081900360200190f35b6102926004803603604081101561035857600080fd5b506001600160a01b03813516906020013561082b565b610292610879565b610264610889565b6102646004803603602081101561039457600080fd5b503561090e565b610264600480360360208110156103b157600080fd5b5035610922565b610264600480360360208110156103ce57600080fd5b50356001600160a01b0316610979565b610292610a65565b610264600480360360208110156103fc57600080fd5b50356001600160a01b0316610a75565b6102d46004803603602081101561042257600080fd5b50356001600160a01b0316610b1b565b610264610b36565b6102646004803603604081101561045057600080fd5b506001600160a01b038135169060200135610be7565b61046e610c3c565b604080516001600160a01b039092168252519081900360200190f35b61046e610c4b565b610264610c5a565b61046e610cda565b6101e7610cee565b6102d4610d4f565b610264600480360360208110156104c857600080fd5b5035610d55565b610292600480360360408110156104e557600080fd5b506001600160a01b038135169060200135610db2565b6102926004803603604081101561051157600080fd5b506001600160a01b038135169060200135610e1a565b6102d46004803603604081101561053d57600080fd5b506001600160a01b0381358116916020013516610e2e565b6102646004803603602081101561056b57600080fd5b50356001600160a01b0316610e59565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b5050505050905090565b60055461010090046001600160a01b03163314610663576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600854600160a81b900460ff1661067957600080fd5b6008805460ff60a81b191690556040805142815233602082015281517fa7b7c47467a4845f1e5674a850f933e344db4e09cc8211d9942ca31169bb5379929181900390910190a1565b60006106d66106cf610edf565b8484610ee3565b50600192915050565b60055461010090046001600160a01b03163314610731576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9e3246f6884b272cd75c9ed84b4f68fdf7b3baf148c910868612774b92cbd6b79181900360200190a150565b60025490565b600854600160a01b900460ff1681565b60006107a8848484610fcf565b610818846107b4610edf565b610813856040518060600160405280602881526020016119fc602891396001600160a01b038a166000908152600160205260408120906107f2610edf565b6001600160a01b03168152602081019190915260400160002054919061112a565b610ee3565b5060019392505050565b60055460ff1690565b60006106d6610838610edf565b846108138560016000610849610edf565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906111c1565b600854600160a81b900460ff1681565b60055461010090046001600160a01b031633146108db576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b6040514790339082156108fc029083906000818181858888f1935050505015801561090a573d6000803e3d6000fd5b5050565b61091f610919610edf565b82611222565b50565b60055461010090046001600160a01b03163314610974576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600655565b60055461010090046001600160a01b031633146109cb576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610a1657600080fd5b505afa158015610a2a573d6000803e3d6000fd5b505050506040513d6020811015610a4057600080fd5b50519050610a60610a4f610edf565b6001600160a01b038416908361131e565b505050565b600554600160a81b900460ff1690565b60055461010090046001600160a01b03163314610ac7576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f34863999b0d3bab27b00576286a28d673d24705d352ad2e9ed37684e086cc60a9181900360200190a150565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b03163314610b88576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b600854600160a01b900460ff16610b9e57600080fd5b6008805460ff60a01b191690556040805142815233602082015281517f0179e84ca303c5e1e271e1d05ddf82be1d8edba86bccf0ac217ec2b285acf2d1929181900390910190a1565b6000610c1e82604051806060016040528060248152602001611a2460249139610c1786610c12610edf565b610e2e565b919061112a565b9050610c3283610c2c610edf565b83610ee3565b610a608383611222565b6007546001600160a01b031681565b6008546001600160a01b031681565b60055461010090046001600160a01b03163314610cac576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b306000610cb882610b1b565b905061090a82600560019054906101000a90046001600160a01b031683610fcf565b60055461010090046001600160a01b031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106075780601f106105dc57610100808354040283529160200191610607565b60065490565b60055461010090046001600160a01b03163314610da7576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b3361090a8183611370565b60006106d6610dbf610edf565b8461081385604051806060016040528060258152602001611adc6025913960016000610de9610edf565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061112a565b60006106d6610e27610edf565b8484610fcf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055461010090046001600160a01b03163314610eab576040805162461bcd60e51b815260206004820152601f60248201526000805160206119dc833981519152604482015290519081900360640190fd5b6001600160a01b0381161561091f57600580546001600160a01b03831661010002610100600160a81b031990911617905550565b3390565b6001600160a01b038316610f285760405162461bcd60e51b8152600401808060200182810382526024815260200180611a8e6024913960400191505060405180910390fd5b6001600160a01b038216610f6d5760405162461bcd60e51b81526004018080602001828103825260228152602001806119946022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166110145760405162461bcd60e51b8152600401808060200182810382526025815260200180611a696025913960400191505060405180910390fd5b6001600160a01b0382166110595760405162461bcd60e51b815260040180806020018281038252602381526020018061194f6023913960400191505060405180910390fd5b611064838383611460565b6110a1816040518060600160405280602681526020016119b6602691396001600160a01b038616600090815260208190526040902054919061112a565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546110d090826111c1565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156111b95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561117e578181015183820152602001611166565b50505050905090810190601f1680156111ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561121b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166112675760405162461bcd60e51b8152600401808060200182810382526021815260200180611a486021913960400191505060405180910390fd5b61127382600083611460565b6112b081604051806060016040528060228152602001611972602291396001600160a01b038516600090815260208190526040902054919061112a565b6001600160a01b0383166000908152602081905260409020556002546112d69082611712565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610a60908490611754565b6001600160a01b0382166113cb576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113d760008383611460565b6002546113e490826111c1565b6002556001600160a01b03821660009081526020819052604090205461140a90826111c1565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038316158061147d57506001600160a01b038216155b1561148757610a60565b600854600160a81b900460ff1680156114aa57506008546001600160a01b031615155b156116515760085460408051635f5a31a760e01b81526001600160a01b038681166004830152858116602483015291516000936060931691635f5a31a7916044808301928792919082900301818387803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561154457600080fd5b81516020830180516040519294929383019291908464010000000082111561156b57600080fd5b90830190602082018581111561158057600080fd5b825164010000000081118282018810171561159a57600080fd5b82525081516020918201929091019080838360005b838110156115c75781810151838201526020016115af565b50505050905090810190601f1680156115f45780820380516001836020036101000a031916815260200191505b506040525050509150915081819061164d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561117e578181015183820152602001611166565b5050505b600854600160a01b900460ff16801561167457506007546001600160a01b031615155b15610a605760075460408051635d37a8dd60e01b81523360048201526001600160a01b03868116602483015285811660448301526064820185905291519190921691635d37a8dd9160848083019260209291908290030181600087803b1580156116dd57600080fd5b505af11580156116f1573d6000803e3d6000fd5b505050506040513d602081101561170757600080fd5b5051610a6057600080fd5b600061121b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061112a565b611766826001600160a01b0316611912565b6117b7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106117f55780518252601f1990920191602091820191016117d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611857576040519150601f19603f3d011682016040523d82523d6000602084013e61185c565b606091505b5091509150816118b3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561190c578080602001905160208110156118cf57600080fd5b505161190c5760405162461bcd60e51b815260040180806020018281038252602a815260200180611ab2602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061194657508115155b94935050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e617574686f72697a65642061636365737320746f20636f6e74726163740045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bef2f4e7a9bff42b5ccfdd530e21a9f5d1f4bff0cb78f54010361bdcb17ea1bc64736f6c63430007000033

Deployed ByteCode Sourcemap

30245:4110:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19835:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33752:234;;;:::i;:::-;;22035:210;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22035:210:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;34156:196;;;;;;;;;;;;;;;;-1:-1:-1;34156:196:0;-1:-1:-1;;;;;34156:196:0;;:::i;20910:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;32538:35;;;:::i;22719:454::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22719:454:0;;;;;;;;;;;;;;;;;:::i;20762:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23582:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23582:300:0;;;;;;;;:::i;32580:46::-;;;:::i;31930:136::-;;;:::i;31180:91::-;;;;;;;;;;;;;;;;-1:-1:-1;31180:91:0;;:::i;30971:93::-;;;;;;;;;;;;;;;;-1:-1:-1;30971:93:0;;:::i;32074:224::-;;;;;;;;;;;;;;;;-1:-1:-1;32074:224:0;-1:-1:-1;;;;;32074:224:0;;:::i;16255:78::-;;;:::i;33994:154::-;;;;;;;;;;;;;;;;-1:-1:-1;33994:154:0;-1:-1:-1;;;;;33994:154:0;;:::i;21073:119::-;;;;;;;;;;;;;;;;-1:-1:-1;21073:119:0;-1:-1:-1;;;;;21073:119:0;;:::i;33553:191::-;;;:::i;31590:332::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31590:332:0;;;;;;;;:::i;32306:93::-;;;:::i;:::-;;;;-1:-1:-1;;;;;32306:93:0;;;;;;;;;;;;;;32406:123;;;:::i;30649:227::-;;;:::i;372:28::-;;;:::i;20037:87::-;;;:::i;30884:79::-;;;:::i;30506:135::-;;;;;;;;;;;;;;;;-1:-1:-1;30506:135:0;;:::i;24385:400::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24385:400:0;;;;;;;;:::i;21405:216::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21405:216:0;;;;;;;;:::i;21684:201::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21684:201:0;;;;;;;;;;:::i;591:159::-;;;;;;;;;;;;;;;;-1:-1:-1;591:159:0;-1:-1:-1;;;;;591:159:0;;:::i;19835:83::-;19905:5;19898:12;;;;;;;;-1:-1:-1;;19898:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19872:13;;19898:12;;19905:5;;19898:12;;19905:5;19898:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19835:83;:::o;33752:234::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;33831:27:::1;::::0;-1:-1:-1;;;33831:27:0;::::1;;;33823:36;;;::::0;::::1;;33870:27;:35:::0;;-1:-1:-1;;;;33870:35:0::1;::::0;;33921:57:::1;::::0;;33950:15:::1;33921:57:::0;;33967:10:::1;33921:57;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;33752:234::o:0;22035:210::-;22154:4;22176:39;22185:12;:10;:12::i;:::-;22199:7;22208:6;22176:8;:39::i;:::-;-1:-1:-1;22233:4:0;22035:210;;;;:::o;34156:196::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;34240:19:::1;:48:::0;;-1:-1:-1;;;;;34240:48:0;::::1;-1:-1:-1::0;;;;;;34240:48:0;;::::1;::::0;::::1;::::0;;;34304:40:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;34156:196:::0;:::o;20910:100::-;20990:12;;20910:100;:::o;32538:35::-;;;-1:-1:-1;;;32538:35:0;;;;;:::o;22719:454::-;22859:4;22876:36;22886:6;22894:9;22905:6;22876:9;:36::i;:::-;22923:220;22946:6;22967:12;:10;:12::i;:::-;22994:138;23050:6;22994:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22994:19:0;;;;;;:11;:19;;;;;;23014:12;:10;:12::i;:::-;-1:-1:-1;;;;;22994:33:0;;;;;;;;;;;;-1:-1:-1;22994:33:0;;;:138;:37;:138::i;:::-;22923:8;:220::i;:::-;-1:-1:-1;23161:4:0;22719:454;;;;;:::o;20762:83::-;20828:9;;;;20762:83;:::o;23582:300::-;23697:4;23719:133;23742:12;:10;:12::i;:::-;23769:7;23791:50;23830:10;23791:11;:25;23803:12;:10;:12::i;:::-;-1:-1:-1;;;;;23791:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;23791:25:0;;;:34;;;;;;;;;;;:38;:50::i;32580:46::-;;;-1:-1:-1;;;32580:46:0;;;;;:::o;31930:136::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;32030:28:::1;::::0;31998:21:::1;::::0;32030:10:::1;::::0;:28;::::1;;;::::0;31998:21;;31980:15:::1;32030:28:::0;31980:15;32030:28;31998:21;32030:10;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;574:1;31930:136::o:0;31180:91::-;31236:27;31242:12;:10;:12::i;:::-;31256:6;31236:5;:27::i;:::-;31180:91;:::o;30971:93::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;31037:6:::1;:19:::0;30971:93::o;32074:224::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;32208:30:::1;::::0;;-1:-1:-1;;;32208:30:0;;32232:4:::1;32208:30;::::0;::::1;::::0;;;32166:12;;32144::::1;::::0;-1:-1:-1;;;;;32208:15:0;::::1;::::0;::::1;::::0;:30;;;;;::::1;::::0;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32208:30:0;;-1:-1:-1;32249:41:0::1;32268:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;32249:18:0;::::1;::::0;32282:7;32249:18:::1;:41::i;:::-;574:1;;32074:224:::0;:::o;16255:78::-;16318:7;;-1:-1:-1;;;16318:7:0;;;;;16255:78::o;33994:154::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;34067:9:::1;:28:::0;;-1:-1:-1;;;;;34067:28:0;::::1;-1:-1:-1::0;;;;;;34067:28:0;;::::1;::::0;::::1;::::0;;;34111:29:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;33994:154:::0;:::o;21073:119::-;-1:-1:-1;;;;;21166:18:0;21139:7;21166:18;;;;;;;;;;;;21073:119::o;33553:191::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;33622:16:::1;::::0;-1:-1:-1;;;33622:16:0;::::1;;;33614:25;;;::::0;::::1;;33650:16;:24:::0;;-1:-1:-1;;;;33650:24:0::1;::::0;;33690:46:::1;::::0;;33708:15:::1;33690:46:::0;;33725:10:::1;33690:46;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;33553:191::o:0;31590:332::-;31667:26;31696:121;31747:6;31696:121;;;;;;;;;;;;;;;;;:32;31706:7;31715:12;:10;:12::i;:::-;31696:9;:32::i;:::-;:36;:121;:36;:121::i;:::-;31667:150;;31830:51;31839:7;31848:12;:10;:12::i;:::-;31862:18;31830:8;:51::i;:::-;31892:22;31898:7;31907:6;31892:5;:22::i;32306:93::-;;;-1:-1:-1;;;;;32306:93:0;;:::o;32406:123::-;;;-1:-1:-1;;;;;32406:123:0;;:::o;30649:227::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;30745:4:::1;30711:23;30784:26;30745:4:::0;30784:9:::1;:26::i;:::-;30761:49;;30821:47;30831:15;30848:5;;;;;;;;;-1:-1:-1::0;;;;;30848:5:0::1;30855:12;30821:9;:47::i;372:28::-:0;;;;;;-1:-1:-1;;;;;372:28:0;;:::o;20037:87::-;20109:7;20102:14;;;;;;;;-1:-1:-1;;20102:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20076:13;;20102:14;;20109:7;;20102:14;;20109:7;20102:14;;;;;;;;;;;;;;;;;;;;;;;;30884:79;30949:6;;30884:79;:::o;30506:135::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;30590:10:::1;30611:22;30590:10:::0;30626:6;30611:5:::1;:22::i;24385:400::-:0;24505:4;24527:228;24550:12;:10;:12::i;:::-;24577:7;24599:145;24656:15;24599:145;;;;;;;;;;;;;;;;;:11;:25;24611:12;:10;:12::i;:::-;-1:-1:-1;;;;;24599:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;24599:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;21405:216::-;21527:4;21549:42;21559:12;:10;:12::i;:::-;21573:9;21584:6;21549:9;:42::i;21684:201::-;-1:-1:-1;;;;;21850:18:0;;;21818:7;21850:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21684:201::o;591:159::-;522:5;;;;;-1:-1:-1;;;;;522:5:0;508:10;:19;500:63;;;;;-1:-1:-1;;;500:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;500:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;676:22:0;::::1;::::0;672:71:::1;;715:5;:16:::0;;-1:-1:-1;;;;;715:16:0;::::1;;;-1:-1:-1::0;;;;;;715:16:0;;::::1;;::::0;;591:159;:::o;14884:106::-;14972:10;14884:106;:::o;27771:380::-;-1:-1:-1;;;;;27907:19:0;;27899:68;;;;-1:-1:-1;;;27899:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27986:21:0;;27978:68;;;;-1:-1:-1;;;27978:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28059:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;28111:32;;;;;;;;;;;;;;;;;27771:380;;;:::o;25275:610::-;-1:-1:-1;;;;;25415:20:0;;25407:70;;;;-1:-1:-1;;;25407:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25496:23:0;;25488:71;;;;-1:-1:-1;;;25488:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25572:47;25593:6;25601:9;25612:6;25572:20;:47::i;:::-;25652:108;25688:6;25652:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25652:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;25632:17:0;;;:9;:17;;;;;;;;;;;:128;;;;25794:20;;;;;;;:32;;25819:6;25794:24;:32::i;:::-;-1:-1:-1;;;;;25771:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;25842:35;;;;;;;25771:20;;25842:35;;;;;;;;;;;;;25275:610;;;:::o;5258:226::-;5378:7;5414:12;5406:6;;;;5398:29;;;;-1:-1:-1;;;5398:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5450:5:0;;;5258:226::o;4371:181::-;4429:7;4461:5;;;4485:6;;;;4477:46;;;;;-1:-1:-1;;;4477:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4543:1;4371:181;-1:-1:-1;;;4371:181:0:o;26876:455::-;-1:-1:-1;;;;;26960:21:0;;26952:67;;;;-1:-1:-1;;;26952:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27032:49;27053:7;27070:1;27074:6;27032:20;:49::i;:::-;27115:105;27152:6;27115:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27115:18:0;;:9;:18;;;;;;;;;;;;:105;:22;:105::i;:::-;-1:-1:-1;;;;;27094:18:0;;:9;:18;;;;;;;;;;:126;27246:12;;:24;;27263:6;27246:16;:24::i;:::-;27231:12;:39;27286:37;;;;;;;;27312:1;;-1:-1:-1;;;;;27286:37:0;;;;;;;;;;;;26876:455;;:::o;11855:247::-;12025:58;;;-1:-1:-1;;;;;12025:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12025:58:0;-1:-1:-1;;;12025:58:0;;;11972:122;;12005:5;;11972:18;:122::i;26166:378::-;-1:-1:-1;;;;;26250:21:0;;26242:65;;;;;-1:-1:-1;;;26242:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26320:49;26349:1;26353:7;26362:6;26320:20;:49::i;:::-;26397:12;;:24;;26414:6;26397:16;:24::i;:::-;26382:12;:39;-1:-1:-1;;;;;26453:18:0;;:9;:18;;;;;;;;;;;:30;;26476:6;26453:22;:30::i;:::-;-1:-1:-1;;;;;26432:18:0;;:9;:18;;;;;;;;;;;:51;;;;26499:37;;;;;;;26432:18;;:9;;26499:37;;;;;;;;;;26166:378;;:::o;32885:660::-;-1:-1:-1;;;;;33024:18:0;;;;:38;;-1:-1:-1;;;;;;33046:16:0;;;33024:38;33020:51;;;33064:7;;33020:51;33099:27;;-1:-1:-1;;;33099:27:0;;;;:86;;;;-1:-1:-1;33151:19:0;;-1:-1:-1;;;;;33151:19:0;33143:42;;33099:86;33081:294;;;33250:19;;:75;;;-1:-1:-1;;;33250:75:0;;-1:-1:-1;;;;;33250:75:0;;;;;;;;;;;;;;;;33213:10;;33225:21;;33250:19;;:65;;:75;;;;;33213:10;;33250:75;;;;;;;33213:10;33250:19;:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33250:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33250:75:0;;;;;;;;;;-1:-1:-1;33250:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33212:113;;;;33348:5;33355:7;33340:23;;;;;-1:-1:-1;;;33340:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33081:294;;;33391:16;;-1:-1:-1;;;33391:16:0;;;;:52;;;;-1:-1:-1;33419:9:0;;-1:-1:-1;;;;;33419:9:0;33411:32;;33391:52;33387:151;;;33468:9;;:57;;;-1:-1:-1;;;33468:57:0;;33496:10;33468:57;;;;-1:-1:-1;;;;;33468:57:0;;;;;;;;;;;;;;;;;;;;;;:9;;;;;:27;;:57;;;;;;;;;;;;;;:9;;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33468:57:0;33460:66;;;;;4827:136;4885:7;4912:43;4916:1;4919;4912:43;;;;;;;;;;;;;;;;;:3;:43::i;13808:502::-;13896:27;13904:5;-1:-1:-1;;;;;13896:25:0;;:27::i;:::-;13888:71;;;;;-1:-1:-1;;;13888:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13973:12;13987:23;14022:5;-1:-1:-1;;;;;14014:19:0;14034:4;14014:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14014:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13972:67;;;;14058:7;14050:52;;;;;-1:-1:-1;;;14050:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14119:17;;:21;14115:188;;14194:10;14183:30;;;;;;;;;;;;;;;-1:-1:-1;14183:30:0;14157:134;;;;-1:-1:-1;;;14157:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13808:502;;;;:::o;1462:641::-;1522:4;2003:20;;1833:66;2052:23;;;;;;:42;;-1:-1:-1;2079:15:0;;;2052:42;2044:51;1462:641;-1:-1:-1;;;;1462:641:0:o

Swarm Source

ipfs://bef2f4e7a9bff42b5ccfdd530e21a9f5d1f4bff0cb78f54010361bdcb17ea1bc
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.