Contract 0xfe7c30860d01e28371d40434806f4a8fcdd3a098 9

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x46107235d3aff10456754107e97cf7e85cff41858f3b86c7053453c1c6f84db20xb8f8bad4328050572022-09-07 12:50:1529 days 14 mins ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131948362436.083999896
0xf7703352b2fcdf2c005be5ec4b4ed80b55baa83b11f6a6dc76ea42f8b3c32142Set Pause328049442022-09-07 12:46:2129 days 18 mins ago0x9f403140bc0574d7d36ea472b82daa1bbd4ef327 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00158585842 46.917500088
0x8981649549e933a4eece87b703f124683f931f27adb6f74eb921f62ae352482d0xb8f8bad4328048922022-09-07 12:44:3329 days 20 mins ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131641200736.000000218
0xcb9dcfc4481182efbe4a7638fbd1fb7e83a4835e930886d36332ba3146274f8c0xac16d6ac328046162022-09-07 12:35:0529 days 29 mins ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00921610801836.000000072
0x1071fbbf415ef055282dc2d0326e5e9f51bc2606dcb01ab3aa1eedb0776ff5db0xb8f8bad4328043302022-09-07 12:25:1329 days 39 mins ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.0013164120436.000001112
0x633329de890369ad231cf55e2d150a409038ac4f7d70d4062b7154b3c40355aa0xb8f8bad4328041872022-09-07 12:20:1929 days 44 mins ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131991663736.084000054
0x41b4c5279ed4a0578ce6a4efb375641debbd515660e678578637732a69044ccc0xb8f8bad4328040382022-09-07 12:15:1329 days 49 mins ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131684400636.000000187
0xbb5718173b52011efb5f625b5baa2c977e20cacd5a9d901fcb5474ae0560b2a20xac16d6ac328039532022-09-07 12:12:1529 days 52 mins ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.01501017460437.05666964
0xb5a4a63ccca4973bfa9e7c91047bfbe747e74aa214e669ad77e32cb65fa1cbd30xb8f8bad4328038952022-09-07 12:10:1529 days 54 mins ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131684401836.000000506
0x12d302a6740b729ea3af1d34ae45c4f51eb06628085f89f3ac10eff36cdece7f0xac16d6ac328038762022-09-07 12:09:3729 days 55 mins ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.01360504825636.000000679
0xcdb459a15d667fd00d2e0a1de994965c27ebf9604b8790ee5d5563f274c1dc010xb8f8bad4328037492022-09-07 12:05:1529 days 59 mins ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131641236.000000019
0xf890eb618eb26e91a21ff01ccf7fc2c7f6d82e10423656021d1f0b4d655764550xb8f8bad4328036042022-09-07 12:00:1729 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131727636.000000015
0xc6360f9aca7a98f33ec44fa394fc699318d8dffe0fa87430e35fea217312941a0xb8f8bad4328036032022-09-07 12:00:1529 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131770836.000000015
0xc56cfd7013766efd20ef419e87588a7910225c86e7d02a8c78be854543f1c2770xb8f8bad4328036032022-09-07 12:00:1529 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131684436.000000015
0x76985ca331742a8d63e2757819364d7b3016bd99712e0468802585bf52aeb4500xb8f8bad4328035592022-09-07 11:58:4329 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131684436.000000015
0x570e55fa8a0d1317752935a0448e17f21962f428cb72df06ba609b96ca871c0b0xb8f8bad4328035192022-09-07 11:57:1929 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131727636.000000018
0xa14f2b28d48c8f634ff46c6bcb47a935b9206c4cee53ebedda57cdc14fcd81190xb8f8bad4328034352022-09-07 11:54:2729 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131684436.000000016
0x484238bacf0637e2a5e8f3d7353b3c280431984f47b88ab89b72bc35e9d6bc9a0xac16d6ac328034192022-09-07 11:53:5529 days 1 hr ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.01373713200736.00000002
0x73738b306df6aff0a3d5c25129999d60a98efbbe8fd702e570c3e319ddc3dacd0xb8f8bad4328033942022-09-07 11:53:0529 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131770836.000000018
0x724350ad849747b4a708d4d9da5d67983b0574ff447b3f75e92620cc0c4676230xac16d6ac328032762022-09-07 11:49:0129 days 1 hr ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.01506985201336.000000033
0x032f83549ce5d440ee2b5fba5a8520eccda16c8e94cce0dc2573672259fbc03d0xac16d6ac328032702022-09-07 11:48:4929 days 1 hr ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.01461304800836.000000022
0x04aa5629755c7a785bffbf1dd1c251e4900837cb9abeecd2b427f687e1c85f460xac16d6ac328032632022-09-07 11:48:3129 days 1 hr ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.01461304800636.000000016
0x045e187201a2dc9ffc6fa4505b97102eb2f39adabfbf6429daf871abf9ca06710xac16d6ac328032572022-09-07 11:48:1929 days 1 hr ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.01531879200736.000000018
0xd2f376562219c8e7b526dff11493e53e00aee7be69db7d7e3575aa98b546b3de0xac16d6ac328032542022-09-07 11:48:1329 days 1 hr ago0xe93685f3bba03016f02bd1828badd6195988d950 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00774817200336.000000018
0x236d537493c267b6911742383d62cf7a423d43c77a2025ab0261cf4979d1900e0xb8f8bad4328030222022-09-07 11:40:1529 days 1 hr ago0x339d413ccefd986b1b3647a9cfa9cbbe70a30749 IN  0xfe7c30860d01e28371d40434806f4a8fcdd3a0980 MATIC0.00131641236.000000021
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xf55034331fddc92441ce2f30cb82bf9b7a894aa5249d5175dd257deb838cd4e3327997542022-09-07 9:47:5329 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xe58aa11a1ad425b12b4a3155124245cd36da4f5e0.0044845069834656 MATIC
0x20eaee9146d8507794344bfc0212084e5376787d3527a4a8c15717e95323c332327996832022-09-07 9:45:2729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xd9cf99cf1e381703313f65df16b17e0c1942eae90.0043680001825824 MATIC
0xce6be4b4c84791474e594b9d80e38168f05ca47d42c7818f147654bcf9d0650c327996392022-09-07 9:43:5529 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x5f765b5f23b9a48ef7a807b1be623efdd07865e40.0043680001825824 MATIC
0xbe0e0f7d96a24a14815e0d7994ee174bb79ae8814e122fbfa7835f2c636551d1327993482022-09-07 9:33:5329 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x08542e3d6f79cc0c7c741d2af2ad81ed00c88c500.0044845069834656 MATIC
0xee955a7dacc993e5b21278a076be640c5e60f51614a200a1790b3d8b02b71f15327992842022-09-07 9:31:4129 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x7a5afa36154bda6492b856b334ea8a49f71bd3c50.0044845069834656 MATIC
0x127b53a7e69c3d2452ecbdfcbebf3efe1ad18c7db325da8713239d2e7a107592327992142022-09-07 9:29:1729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x58959e433ef708eb5c9924fcb2cdb5f620bd6da20.0043680001825824 MATIC
0xd5793a1c895833d30d0ce5784fdd9c7bd826ac46e84c7ff3ba70e061bbc5fc95327992122022-09-07 9:29:1329 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xa3aaaf38030114067ff4317433dcca1573a802e50.0044845069834656 MATIC
0x8adc71cf62cc03945212669619936acb6abaea5288a40df684c4475bf7e962f0327991972022-09-07 9:28:4329 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xa3aaaf38030114067ff4317433dcca1573a802e50.0044845069834656 MATIC
0x2286acde6a96318c0a2ff5b1b15325faeae7e0061658b459289471cf6b42f951327991932022-09-07 9:28:3529 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x58959e433ef708eb5c9924fcb2cdb5f620bd6da20.0043680001825824 MATIC
0x3f318eb99289dee445b798bb0a1547a2dd898142761e264f123d5f46f0e5c66c327991882022-09-07 9:28:2529 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xa3aaaf38030114067ff4317433dcca1573a802e50.0044845069834656 MATIC
0xad9d55f547c43b8bd494eb51bf3ee8ab1016208e2da2fe5ed43d88dd0ed1637d327991802022-09-07 9:28:0929 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xa3aaaf38030114067ff4317433dcca1573a802e50.0044845069834656 MATIC
0x0abe4b0fe37fb2f33bb56b62d053d984ceac9f4d37d8cd1731a931a7542d24e9327991712022-09-07 9:27:5129 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x58959e433ef708eb5c9924fcb2cdb5f620bd6da20.0043680001825824 MATIC
0x924b80f8389b79a39ef40861582cf94b5b7172ec013a7be8e2f83bf1b0360be9327991562022-09-07 9:27:1729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x58959e433ef708eb5c9924fcb2cdb5f620bd6da20.0043680001825824 MATIC
0xb330f4858d1f0d362851b5c4bddae676b85a627bfb4d88f46e2fc4885b2cc207327990942022-09-07 9:25:0929 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980x58959e433ef708eb5c9924fcb2cdb5f620bd6da20.0043680001825824 MATIC
0x4247813af32f8e8fab4c76b40e09d4f2f25d1d8b346ca7bf77fd3016c6026734327988812022-09-07 9:17:5129 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xdc58f33b376287bf2d71b36c3f67b9f47a3488920.0044845069834656 MATIC
0x475e4b29d5ea13ab13483652b00a7408fd7c2312348a8296f8c328e6612b9085327988662022-09-07 9:17:2129 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xdc58f33b376287bf2d71b36c3f67b9f47a3488920.0044845069834656 MATIC
0xf5f47fafe301a23ea39f0f3cd1ecebc0c0c5114d06a8863b5ad2413a3d815468327988492022-09-07 9:16:4729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xdc58f33b376287bf2d71b36c3f67b9f47a3488920.0044845069834656 MATIC
0x3e3668c2ed442cfaccc404e933723537002e0dd42f45d8a7d829f71be89a0b99327988412022-09-07 9:16:2729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xdc58f33b376287bf2d71b36c3f67b9f47a3488920.0044845069834656 MATIC
0x17e1dd11f11672b7d12463a770dca393ad323854a1b039986519886f12c75062327986842022-09-07 9:11:0529 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xf571ae543b6c59559dda2974b36446cfa915db3e0.0044845069834656 MATIC
0xc09ccf97244eca2efeb07929f5d5f0e591b0f47c32cf9dadb136166a7d2fef30327986752022-09-07 9:10:4729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xf571ae543b6c59559dda2974b36446cfa915db3e0.0044845069834656 MATIC
0xe169b823191332c19c7137bdf337f85a51d5cac881c40b5847539aee98a86ad4327986472022-09-07 9:09:4729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xf571ae543b6c59559dda2974b36446cfa915db3e0.0044845069834656 MATIC
0xa5254127870476399f4f21d338d72fd9a519c9d682e467e5c6c39349c9dcdc0f327986472022-09-07 9:09:4729 days 3 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xf571ae543b6c59559dda2974b36446cfa915db3e0.0044845069834656 MATIC
0x4463aca90df6d320cb3dee689cce33b74a9edae8e5b66b79120d0063b8da2586327981882022-09-07 8:53:1729 days 4 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xe4ab656a63fb1585b065f221705507f66a5c27ab0.004368000006552 MATIC
0x0ca6a83f642e8ac38ab4d60ed6b26ad6c498522f126cf81af043a87e72c33559327981852022-09-07 8:53:0529 days 4 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xe4ab656a63fb1585b065f221705507f66a5c27ab0.004368000006552 MATIC
0x4ca40330fad4ab00a5bba2e7df4738026cf22ffa207a2e0441efa04346c541a7327981852022-09-07 8:53:0529 days 4 hrs ago 0xfe7c30860d01e28371d40434806f4a8fcdd3a0980xe4ab656a63fb1585b065f221705507f66a5c27ab0.004368000006552 MATIC
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8

Contract Name:
OptimizedTransparentUpgradeableProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, GNU GPLv3 license
File 1 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import "../GSN/Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address initialOwner) {
        _owner = initialOwner;
        emit OwnershipTransferred(address(0), initialOwner);
    }

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

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

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

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

File 2 of 8 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

/*
 * @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 3 of 8 : ProxyAdmin.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import "../access/Ownable.sol";
import "./TransparentUpgradeableProxy.sol";

/**
 * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an
 * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.
 */
contract ProxyAdmin is Ownable {

    constructor(address owner) Ownable(owner) {}

    /**
     * @dev Returns the current implementation of `proxy`.
     *
     * Requirements:
     *
     * - This contract must be the admin of `proxy`.
     */
    function getProxyImplementation(TransparentUpgradeableProxy proxy) public view returns (address) {
        // We need to manually run the static call since the getter cannot be flagged as view
        // bytes4(keccak256("implementation()")) == 0x5c60da1b
        (bool success, bytes memory returndata) = address(proxy).staticcall(hex"5c60da1b");
        require(success);
        return abi.decode(returndata, (address));
    }

    /**
     * @dev Returns the current admin of `proxy`.
     *
     * Requirements:
     *
     * - This contract must be the admin of `proxy`.
     */
    function getProxyAdmin(TransparentUpgradeableProxy proxy) public view returns (address) {
        // We need to manually run the static call since the getter cannot be flagged as view
        // bytes4(keccak256("admin()")) == 0xf851a440
        (bool success, bytes memory returndata) = address(proxy).staticcall(hex"f851a440");
        require(success);
        return abi.decode(returndata, (address));
    }

    /**
     * @dev Changes the admin of `proxy` to `newAdmin`.
     *
     * Requirements:
     *
     * - This contract must be the current admin of `proxy`.
     */
    function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public onlyOwner {
        proxy.changeAdmin(newAdmin);
    }

    /**
     * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.
     *
     * Requirements:
     *
     * - This contract must be the admin of `proxy`.
     */
    function upgrade(TransparentUpgradeableProxy proxy, address implementation) public onlyOwner {
        proxy.upgradeTo(implementation);
    }

    /**
     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See
     * {TransparentUpgradeableProxy-upgradeToAndCall}.
     *
     * Requirements:
     *
     * - This contract must be the admin of `proxy`.
     */
    function upgradeAndCall(TransparentUpgradeableProxy proxy, address implementation, bytes memory data) public payable onlyOwner {
        proxy.upgradeToAndCall{value: msg.value}(implementation, data);
    }
}

File 4 of 8 : TransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import "./UpgradeableProxy.sol";

/**
 * @dev This contract implements a proxy that is upgradeable by an admin.
 * 
 * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
 * clashing], which can potentially be used in an attack, this contract uses the
 * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
 * things that go hand in hand:
 * 
 * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
 * that call matches one of the admin functions exposed by the proxy itself.
 * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
 * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
 * "admin cannot fallback to proxy target".
 * 
 * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
 * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
 * to sudden errors when trying to call a function from the proxy implementation.
 * 
 * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
 * you should think of the `ProxyAdmin` instance as the real administrative inerface of your proxy.
 */
contract TransparentUpgradeableProxy is UpgradeableProxy {
    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {UpgradeableProxy-constructor}.
     */
    constructor(address initialLogic, address initialAdmin, bytes memory _data) payable UpgradeableProxy(initialLogic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(initialAdmin);
    }

    /**
     * @dev Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     * 
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
     */
    function admin() external ifAdmin returns (address) {
        return _admin();
    }

    /**
     * @dev Returns the current implementation.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     * 
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
     */
    function implementation() external ifAdmin returns (address) {
        return _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     * 
     * Emits an {AdminChanged} event.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.
     */
    function changeAdmin(address newAdmin) external ifAdmin {
        require(newAdmin != address(0), "TransparentUpgradeableProxy: new admin is the zero address");
        emit AdminChanged(_admin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeTo(newImplementation);
    }

    /**
     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
     * proxied contract.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
        _upgradeTo(newImplementation);
        // solhint-disable-next-line avoid-low-level-calls
        (bool success,) = newImplementation.delegatecall(data);
        require(success);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view returns (address adm) {
        bytes32 slot = _ADMIN_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            adm := sload(slot)
        }
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        bytes32 slot = _ADMIN_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newAdmin)
        }
    }

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal override virtual {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

File 5 of 8 : UpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import "./Proxy.sol";
import "../utils/Address.sol";

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 * 
 * Upgradeability is only provided internally through {_upgradeTo}. For an externally upgradeable proxy see
 * {TransparentUpgradeableProxy}.
 */
contract UpgradeableProxy is Proxy {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     * 
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializating the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            // solhint-disable-next-line avoid-low-level-calls
            (bool success,) = _logic.delegatecall(_data);
            require(success);
        }
    }

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal override view returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @dev Upgrades the proxy to a new implementation.
     * 
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract");

        bytes32 slot = _IMPLEMENTATION_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newImplementation)
        }
    }
}

File 6 of 8 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 * 
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 * 
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     * 
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal virtual view returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     * 
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback () payable external {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive () payable external {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     * 
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {
    }
}

File 7 of 8 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

/**
 * @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");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 8 of 8 : OptimizedTransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

import "../openzeppelin/proxy/UpgradeableProxy.sol";

/**
 * @dev This contract implements a proxy that is upgradeable by an admin.
 *
 * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
 * clashing], which can potentially be used in an attack, this contract uses the
 * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
 * things that go hand in hand:
 *
 * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
 * that call matches one of the admin functions exposed by the proxy itself.
 * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
 * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
 * "admin cannot fallback to proxy target".
 *
 * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
 * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
 * to sudden errors when trying to call a function from the proxy implementation.
 *
 * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
 * you should think of the `ProxyAdmin` instance as the real administrative inerface of your proxy.
 */
contract OptimizedTransparentUpgradeableProxy is UpgradeableProxy {
    address internal immutable _ADMIN;

    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {UpgradeableProxy-constructor}.
     */
    constructor(
        address initialLogic,
        address initialAdmin,
        bytes memory _data
    ) payable UpgradeableProxy(initialLogic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        bytes32 slot = _ADMIN_SLOT;

        _ADMIN = initialAdmin;

        // still store it to work with EIP-1967
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, initialAdmin)
        }
    }

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
     */
    function admin() external ifAdmin returns (address) {
        return _admin();
    }

    /**
     * @dev Returns the current implementation.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
     */
    function implementation() external ifAdmin returns (address) {
        return _implementation();
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeTo(newImplementation);
    }

    /**
     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
     * proxied contract.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
        _upgradeTo(newImplementation);
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, ) = newImplementation.delegatecall(data);
        require(success);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view returns (address adm) {
        return _ADMIN;
    }

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialLogic","type":"address"},{"internalType":"address","name":"initialAdmin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040516108fc3803806108fc8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101e9565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b506001600160601b0319606082901b166080527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035550610297565b6101fc8161025b60201b6103581760201c565b6102375760405162461bcd60e51b81526004018080602001828103825260368152602001806108c66036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028f57508115155b949350505050565b60805160601c6106126102b46000398061047352506106126000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461009a5780635c60da1b14610127578063f851a4401461016557610052565b366100525761005061017a565b005b61005061017a565b34801561006657600080fd5b506100506004803603602081101561007d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610194565b610050600480360360408110156100b057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100e857600080fd5b8201836020820111156100fa57600080fd5b8035906020019184600183028401116401000000008311171561011c57600080fd5b5090925090506101e8565b34801561013357600080fd5b5061013c6102bc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561017157600080fd5b5061013c610313565b610182610394565b61019261018d610428565b61044d565b565b61019c610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101dd576101d881610495565b6101e5565b6101e561017a565b50565b6101f0610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102af5761022c83610495565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610296576040519150601f19603f3d011682016040523d82523d6000602084013e61029b565b606091505b50509050806102a957600080fd5b506102b7565b6102b761017a565b505050565b60006102c6610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030857610301610428565b9050610310565b61031061017a565b90565b600061031d610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030857610301610471565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061038c57508115155b949350505050565b61039c610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061059b6042913960600191505060405180910390fd5b610192610192565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561046c573d6000f35b3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000090565b61049e816104e2565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104eb81610358565b610540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806105656036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a26469706673582212200f42fc9d1f991236ae26e240c8505def958528031655d7dd335d3988cc0c88f564736f6c634300070600335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163740000000000000000000000005471ea8f739dd37e9b81be9c5c77754d8aa953e40000000000000000000000007d43aabc515c356145049227cee54b608342c0ad000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4359ef75b000000000000000000000000f5c6825015280cdfd0b56903f9f8b5a2233476f5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

1562:3896:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2807:11:2;:9;:11::i;:::-;1562:3896:7;;2591:11:2;:9;:11::i;4206:109:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4206:109:7;;;;:::i;4691:295::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4691:295:7;;-1:-1:-1;4691:295:7;-1:-1:-1;4691:295:7;:::i;3944:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3400:84;;;;;;;;;;;;;:::i;2253:102:2:-;2293:17;:15;:17::i;:::-;2320:28;2330:17;:15;:17::i;:::-;2320:9;:28::i;:::-;2253:102::o;4206:109:7:-;2874:8;:6;:8::i;:::-;2860:22;;:10;:22;;;2856:96;;;4279:29:::1;4290:17;4279:10;:29::i;:::-;2856:96:::0;;;2930:11;:9;:11::i;:::-;4206:109;:::o;4691:295::-;2874:8;:6;:8::i;:::-;2860:22;;:10;:22;;;2856:96;;;4800:29:::1;4811:17;4800:10;:29::i;:::-;4899:12;4917:17;:30;;4948:4;;4917:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;4917:36:7::1;::::0;-1:-1:-1;4917:36:7;;-1:-1:-1;;4917:36:7;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4898:55;;;4971:7;4963:16;;;::::0;::::1;;2898:1;2856:96:::0;;;2930:11;:9;:11::i;:::-;4691:295;;;:::o;3944:102::-;3996:7;2874:8;:6;:8::i;:::-;2860:22;;:10;:22;;;2856:96;;;4022:17:::1;:15;:17::i;:::-;4015:24;;2856:96:::0;;;2930:11;:9;:11::i;:::-;3944:102;:::o;3400:84::-;3443:7;2874:8;:6;:8::i;:::-;2860:22;;:10;:22;;;2856:96;;;3469:8:::1;:6;:8::i;718:610:6:-:0;778:4;1239:20;;1084:66;1278:23;;;;;;:42;;-1:-1:-1;1305:15:6;;;1278:42;1270:51;718:610;-1:-1:-1;;;;718:610:6:o;5252:204:7:-;5337:8;:6;:8::i;:::-;5323:22;;:10;:22;;;;5315:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:23;:21;:23::i;1953:242:5:-;1808:66;2168:11;;2146:43::o;886:887:2:-;1272:14;1269:1;1266;1253:34;1486:1;1483;1467:14;1464:1;1448:14;1441:5;1428:60;1562:16;1559:1;1556;1541:38;1600:6;1667:38;;;;1738:16;1735:1;1728:27;1667:38;1686:16;1683:1;1676:27;5047:84:7;5118:6;5047:84;:::o;2315:152:5:-;2381:37;2400:17;2381:18;:37::i;:::-;2433:27;;;;;;;;;;;2315:152;:::o;2558:360::-;2639:37;2658:17;2639:18;:37::i;:::-;2631:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1808:66;2871:31;2857:55::o

Swarm Source

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