Contract 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8056e5f9ebe251862b968a212b673fe894fccee2dabefca96bb46c0ffa5205daActivate By Sign532647032023-01-15 14:38:4718 days 1 hr ago0xfb5aea6e43f3850f809b29e9657ac613373337b2 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00005039
0x659f965e0dc5c47aed974bc751c62d4cf16b79c732bae1003120497fb57d1940Activate By Sign532192042023-01-15 10:55:1018 days 4 hrs ago0x88b69abccc7b7454523c1967b52b52949804f70d IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00004908
0x59bc247a9bea1f94e52d1802b8bb039b3fe422bff3c756b8f5440e05390e4f77Activate By Sign532151762023-01-15 10:33:1418 days 5 hrs ago0xddcc6a7c9f53a437f4d6515bdf058b029e8e1169 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00004612
0x63278a2f49107d3ce871693a3ebf61e87556a4728a4fc1f9521ce77cf100d529Activate By Sign531663472023-01-15 5:42:2318 days 10 hrs ago0xfeb4c836d6a48914db59db557a9f55d0a8909811 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.0000467
0x6ac273b02625891f8132103f540755f46380f7f78c15ad513466816d5de826aeActivate By Sign530902022023-01-14 19:51:1618 days 19 hrs ago0x3267cb555f960fda9df275109c689846dada41c0 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.01218603
0x788e235faf03bf817f97027c7195347edc103e85415dc6836e6d94a00ad5c2ccActivate By Sign530336842023-01-14 14:04:5119 days 1 hr ago0xae3ae6b70e66b04305d35211d93fa4d56ee8ac47 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00004759
0xf1b5922829d83b8705259aa6e67e73db48458f7897e8f0cec1408d9941c96e14Activate By Sign529991612023-01-14 11:00:4319 days 4 hrs ago0x57fdca138116b86f12ad8431739718950c2ba8ad IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00007051
0x2f391eefa2498d5072861728d307c94ceb5389e8928f8d78ea24008b7c374ca5Activate By Sign529606942023-01-14 7:39:5019 days 8 hrs ago0xcec08941dcfcc6df840727f37febaa40017982c0 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00005659
0xc701d1e9bb423310073105cbc1dcefe6def72541364683d947e62fb5a9e4aeffActivate By Sign529289582023-01-14 4:27:0819 days 11 hrs ago0x076a6faed850c0c2b270e7271a526cb26755f14d IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00007601
0x80c9b8d5aad59aae74de3fe2c2b26534ff5130258405b9b74040f386a62e62a0Activate By Sign529265522023-01-14 4:10:4519 days 11 hrs ago0x2b133847465ce196015044afbe675afdda482e1b IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00007558
0x7483453f49a08cda9ffb1f988d6c2593c7890d8bc9d2c62e9036710b1d0574c9Activate By Sign528814452023-01-13 23:50:0119 days 15 hrs ago0x848fdc63b72ca50164f7975c0f3789c8165a08d1 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00009157
0x22bb3e09f6d9162d57c651ebe1e74109d828ca3a02a7bbb7253ebce2ad9c006fActivate By Sign528660232023-01-13 22:09:4219 days 17 hrs ago0x7cda80d1deea1546afe39d60d3b9124093e4dd38 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00008376
0x77f927167ea5600b5ada63dcc18fbd15661efe665a3a1d2a0ddc43b4105dd63bActivate By Sign528430882023-01-13 19:47:2419 days 19 hrs ago0x23c17b2fe71220daa0a248b51dc0e66a3952193c IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00007972
0x8d81572a6d89c9e2a4a2e00ea1c2a236c7f3367f1aac3e2217fa7ceae2b51a7fActivate By Sign528228142023-01-13 17:37:0519 days 22 hrs ago0x4af7c12c7e210f4cb8f2d8e340aaadae05a9f655 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00012348
0xe24891e5d4e20d16dceca6c8efc547980d9380f95fd14ab25036d435183ee931Activate By Sign528088112023-01-13 16:04:5019 days 23 hrs ago0x04385bac7a2b202ca8069900005f3c0ba215a32a IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00012347
0x3eba9983514c2d0186cb9e895df4a82b00b1fdb9a060b9e27c42abf8006ca642Activate By Sign528020672023-01-13 15:24:3220 days 21 mins ago0x92aace6e6cc704fbee9a81f671fc9795288f1df5 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00009406
0x6113e41ca45e446b2c207c9f3a6d1394786b2ec0fa6ed02d742af826acfd1541Activate By Sign528000342023-01-13 15:13:0620 days 32 mins ago0x42a63047a1cd8449e3e70adeb7363c4ca01db528 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00008038
0xf36db020173b66a07b282109a3bfe3ad47069fe112175a63889cb6a544173a8bActivate By Sign527977052023-01-13 14:59:3520 days 46 mins ago0x727222c3de6227757356728ff1806b8d7355a03f IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00007233
0x692b99d1dd4aaa1b2477f7c2b45790bb3abd7015be2dc5037b65a2e9b1cefcd6Activate By Sign527783712023-01-13 13:08:4220 days 2 hrs ago0x2fcd4d1154ef31f2b81cd133626d850c70e6d819 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.0000444
0x2cc8b33cd2607198fb02f676003f9598ff356376ff5c44ef532d88c3fb14913bActivate By Sign527754312023-01-13 12:52:3120 days 2 hrs ago0xb44d57a251da397bcbe33cfbbef567e9fed151fc IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00004434
0xf90f64c9f58193ba6b33acd3477137bf7c79cf0fcd64afd619d7c4fcad1d3420Activate By Sign526810492023-01-13 2:57:0020 days 12 hrs ago0x688a85c4a51513c8ef7e42743ea5dbc7ec19f69d IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00005625
0x8c77086f37b7e65420326720e0a5f5ff024da031025bd3801c95986ead1190d3Activate By Sign526808882023-01-13 2:55:4720 days 12 hrs ago0x6a4f702fdf49a348ed98a45e0298be8952fdf866 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00005524
0x3e479c98ca279d6f5936bf59307af1ca65d5bbfd4e8dfe240e4552be1b48b44aActivate By Sign525244902023-01-12 10:39:1221 days 5 hrs ago0x9af591b1582b85eb8112d70dedfe57c294e6c228 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00004614
0xf0db28c70852c68377cfcdc352d3173b3375112481234ebaf85d31d551397845Activate By Sign523869592023-01-11 20:15:5321 days 19 hrs ago0x5fdd97c6b27050b30390113927f8119649e09d57 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00007845
0x0d0b7b618cf264b1fdc04055e76ee472893ed764285e9975c41fc3a541381e32Activate By Sign523506462023-01-11 16:58:5921 days 22 hrs ago0xd9e644dfb5bba8dcbce6f43f94eef1f578839e63 IN  0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH0.00008438
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xe382021d67ea9cf659ea4409cd728dfcb3ba9066eb1fc3d1297b64413f3ba026548293122023-01-23 1:47:5410 days 13 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x6615225b99c3d27b827590f63380884eb4ca3f2ecd459df2f0a8badea0853a9a547576332023-01-22 17:16:0810 days 22 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x8931acc9fb1d483a1a8e32d0dd72b2241388765c53189efe1e9294f21062cff9547530102023-01-22 16:47:4110 days 22 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x2f86a35b14c4d2ea1c7fc16e76a45d2c51e8f783174b8eca75d98547468fb47d547528272023-01-22 16:46:3210 days 22 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x2cd3258929fcd72fd0ea86b3c7b6c9602be8748c9c1aaf78293726225dcbebe2545371422023-01-21 16:22:3511 days 23 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x8ee35c8c9181a0796f3040a1c839692d9a783738f344f33533d3c04a3c8cba1c544918762023-01-21 11:31:0612 days 4 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x160c63ac404dec09b58cb2f5766c3fc1f120ef91ce3a46a5703c7cfe303a2507542841952023-01-20 12:48:1713 days 2 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x0a0da2cd6a3ddca49b822743275c60d072429bc8b7e2933137c8f73bbe62340f537113652023-01-17 15:02:3416 days 43 mins ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x41f10d2e9f59f5f1ff7a9496b56bf970a97f85814eae1ad9da38474d92569bee537112342023-01-17 15:01:5616 days 43 mins ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x7b5603a7a01e3c2cfcd4864ecb82635701ae12119495bf36b65285063e0c823b535459112023-01-16 20:17:4816 days 19 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x6596554c9caac99e0e0a565b1a995ca2011abfd7c417639eeba332f305430383535155962023-01-16 17:25:4916 days 22 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x7f2eb542c32a5a1f6ba8f7477e00d7f6fe5064b9f3a86f8ff132fecc13c4cebc534513282023-01-16 11:08:3717 days 4 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x73c93a866d8c33eee13e357e0d84e818959e2ee260f4fab11a44d4fdbfd57255534482342023-01-16 10:49:2817 days 4 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0xedbabfdd20f68fca57f31241405601134433f80b9e45a636f062f83520dee920534380062023-01-16 9:46:5317 days 5 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0xbd7bcf2e1afefd14d10c84144ef4689a97bd9ebb0835fd4fc68696d176d52999534324582023-01-16 9:14:3117 days 6 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0xb16b5b55c3ff6a5f00849820b12de7a7bb7ae9535b103575d178f948a41783f4534320222023-01-16 9:12:1117 days 6 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x4a27147fcbab45e48c0a6528b3ded517a8de9544b7304ffcf771714a97a0a576534279432023-01-16 8:48:3717 days 6 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x23c76dc7a6479d42bf142a728c1ae98293642a31fef44f92dada9e5119901bed534264382023-01-16 8:39:4717 days 7 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x2bb004902445558e0dd4a79727d1b1a8fd0d8d8013bde1c2c7ca386e5fe16aa4534211432023-01-16 8:11:3317 days 7 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x9bd1e6c5fc5a228fa69b1dfd27795ef8be915aa3ff459a9d99f0f9110300f184534203742023-01-16 8:08:1717 days 7 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x173784221931e1e5f17da170c2a23608927c4314768245f2ca2607c9a913bd3f534198702023-01-16 8:04:3917 days 7 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x3036e86ba2fe13c3f7db95b922052a7ddbbd70ad595f766524eb96f51d1c4904534195892023-01-16 8:02:5317 days 7 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x2e519d198b16d1d3bf812daf77ba3afbfbfab7e72b72f9ea5bfb26896a7c1719534176322023-01-16 7:50:2217 days 7 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0xc3f94820e1522f840d80ab2fcfdef15317d04b59d748d8c7482eaa2635164a33534173462023-01-16 7:48:3817 days 7 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
0x44ff9fba70c529727a4a946a41ab7da4093ad93450b085f753f8d9428ed302cd534107562023-01-16 7:04:4417 days 8 hrs ago 0x45eecdada0b58b0e78f94549f65fdaf447b35c17 0x13319b5cab59084189f20bd66b2e9e12b52c2a6a0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Referral

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2023-01-05
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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;
    }
}
pragma solidity >=0.6.0 <0.8.0;

/**
 * @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, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @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) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * 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);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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;
    }
}

pragma solidity >=0.6.0 <0.8.0;


/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
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));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        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));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

pragma solidity 0.6.12;

interface IReferral {
  function setMasterChef(address _masterChef) external;

  function activate(address referrer) external;

  function activateBySign(
    address referee,
    address referrer,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) external;

  function isActivated(address _address) external view returns (bool);

  function updateReferralReward(address accountAddress, uint256 reward) external;

  function claimReward() external;
}

pragma solidity >=0.6.0 <0.8.0;

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

pragma solidity >=0.6.0 <0.8.0;

/**
 * @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.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

pragma solidity >=0.6.2 <0.8.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) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        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);
            }
        }
    }
}

pragma solidity =0.6.12;



contract Referral is IReferral, Ownable, ReentrancyGuard {
  using SafeMath for uint256;
  using SafeERC20 for IERC20;

  /**
   * @dev The struct of account information.
   * @param referrer The referrer addresss.
   * @param reward Total pending reward of an address.
   * @param accumReward Total claimed reward of an address.
   * @param referredCount The total referral amount of an address.
   * @param activeTime The active timestamp of an address.
   */
  struct Account {
    address referrer;
    uint256 reward;
    uint256 accumReward;
    uint256 referredCount;
    uint256 activeTime;
  }

  event Activate(address referee, address referrer);
  event ClaimReward(address accountAddress, uint256 reward);
  event UpdateReferralReward(address referee, address referrer, uint256 reward);
  event UpdateMasterChef(address masterChef);

  // MasterChef address.
  address public masterChef;
  // SUGAR token.
  IERC20 public token;
  // Info of each account
  mapping(address => Account) public accounts;
  // Total rewards distributed
  uint256 public totalReward;
  // Total rewards transferred to this contract
  uint256 public totalRewardTransferred;

  bytes32 public DOMAIN_SEPARATOR;
  // keccak256("Activate(address referee,address referrer)")
  bytes32 public constant ACTIVATE_TYPEHASH = 0x4b1fc20d2fd2102f86b90df2c22a6641f5ef4f7fd96d33e36ab9bd6fbad1cf30;

  constructor(address _tokenAddress) public {
    require(
      _tokenAddress != address(0) && _tokenAddress != address(1),
      "Referral::constructor::_tokenAddress must not be address(0) or address(1)"
    );

    token = IERC20(_tokenAddress);

    uint256 chainId;
    assembly {
      chainId := chainid()
    }
    DOMAIN_SEPARATOR = keccak256(
      abi.encode(
        keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
        keccak256("Referral"),
        keccak256("1"),
        chainId,
        address(this)
      )
    );
  }

  // Only MasterChef can continue the execution
  modifier onlyMasterChef() {
    require(msg.sender == masterChef, "only masterChef");
    _;
  }

  // Update MasterChef address
  function setMasterChef(address _masterChef) public override onlyOwner {
    require(_masterChef != address(0), "invalid _masterChef");

    masterChef = _masterChef;
    emit UpdateMasterChef(_masterChef);
  }

  // Activates sender
  function activate(address referrer) external override {
    _activate(msg.sender, referrer);
  }

  // Delegates activates from signatory to `referee`
  function activateBySign(
    address referee,
    address referrer,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) external override {
    bytes32 digest = keccak256(
      abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, keccak256(abi.encode(ACTIVATE_TYPEHASH, referee, referrer)))
    );
    address signer = ecrecover(digest, v, r, s);
    require(signer == referee, "invalid signature");

    _activate(referee, referrer);
  }

  // Internal function to activate `referee`
  function _activate(address referee, address referrer) internal {
    require(referee != address(0), "invalid referee");
    require(referee != referrer, "referee = referrer");
    require(accounts[referee].activeTime == 0, "referee account have been activated");
    if (referrer != address(0)) {
      require(accounts[referrer].activeTime > 0, "referrer account is not activated");
    }

    accounts[referee].referrer = referrer;
    accounts[referee].activeTime = block.timestamp;
    if (referrer != address(0)) {
      accounts[referrer].referredCount = accounts[referrer].referredCount.add(1);
    }

    emit Activate(referee, referrer);
  }

  // Function for check whether an address has activated
  function isActivated(address _address) public view override returns (bool) {
    return accounts[_address].activeTime > 0;
  }

  // Function for letting some observer call when some conditions met
  // Currently, the caller will MasterChef after transferring the SUGAR reward
  function updateReferralReward(address accountAddress, uint256 reward) external override onlyMasterChef {
    totalRewardTransferred = totalRewardTransferred.add(reward);
    if (accounts[accountAddress].referrer != address(0)) {
      Account storage referrerAccount = accounts[accounts[accountAddress].referrer];
      referrerAccount.reward = referrerAccount.reward.add(reward);
      totalReward = totalReward.add(reward);

      emit UpdateReferralReward(accountAddress, accounts[accountAddress].referrer, reward);
    }
  }

  // Claim SUGAR earned
  function claimReward() external override nonReentrant {
    require(accounts[msg.sender].activeTime > 0, "account is not activated");
    require(accounts[msg.sender].reward > 0, "reward amount = 0");

    Account storage account = accounts[msg.sender];
    uint256 pendingReward = account.reward;
    account.reward = account.reward.sub(pendingReward);
    account.accumReward = account.accumReward.add(pendingReward);
    token.safeTransfer(address(msg.sender), pendingReward);

    emit ClaimReward(msg.sender, pendingReward);
  }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"referee","type":"address"},{"indexed":false,"internalType":"address","name":"referrer","type":"address"}],"name":"Activate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"accountAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"masterChef","type":"address"}],"name":"UpdateMasterChef","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"referee","type":"address"},{"indexed":false,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"UpdateReferralReward","type":"event"},{"inputs":[],"name":"ACTIVATE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accounts","outputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"accumReward","type":"uint256"},{"internalType":"uint256","name":"referredCount","type":"uint256"},{"internalType":"uint256","name":"activeTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrer","type":"address"}],"name":"activate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referee","type":"address"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateBySign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterChef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_masterChef","type":"address"}],"name":"setMasterChef","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardTransferred","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accountAddress","type":"address"},{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"updateReferralReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516114013803806114018339818101604052602081101561003357600080fd5b5051600061003f6101b2565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556001600160a01b038116158015906100af57506001600160a01b038116600114155b6100ea5760405162461bcd60e51b81526004018080602001828103825260498152602001806113b86049913960600191505060405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527fe0e014595d25934312f781a2f6c17595fb4a02c46a7e480de1ede5b709831991828401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528351808403909101815260c090920190925280519101206007556101b6565b3390565b6111f3806101c56000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c9faa7c511610066578063c9faa7c514610285578063ccaf70c0146102bf578063f2fde38b146102c7578063fc0c546a146102ed57610100565b80638da5cb5b14610247578063a2d9f4dc1461024f578063b88a802f14610275578063c296527a1461027d57610100565b8063575a86b2116100d3578063575a86b2146101b85780635e5c06e2146101dc578063715018a614610237578063750142e61461023f57610100565b80631c5a9d9c14610105578063207501c81461012d5780633644e515146101595780633a20b2b414610173575b600080fd5b61012b6004803603602081101561011b57600080fd5b50356001600160a01b03166102f5565b005b61012b6004803603604081101561014357600080fd5b506001600160a01b038135169060200135610302565b61016161042d565b60408051918252519081900360200190f35b61012b600480360360a081101561018957600080fd5b506001600160a01b03813581169160208101359091169060ff6040820135169060608101359060800135610433565b6101c061059f565b604080516001600160a01b039092168252519081900360200190f35b610202600480360360208110156101f257600080fd5b50356001600160a01b03166105ae565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b61012b6105e8565b6101616106a6565b6101c06106ac565b61012b6004803603602081101561026557600080fd5b50356001600160a01b03166106bb565b61012b6107d4565b61016161097f565b6102ab6004803603602081101561029b57600080fd5b50356001600160a01b0316610985565b604080519115158252519081900360200190f35b6101616109a6565b61012b600480360360208110156102dd57600080fd5b50356001600160a01b03166109ca565b6101c0610ade565b6102ff3382610aed565b50565b6002546001600160a01b03163314610353576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c9036b0b9ba32b921b432b360891b604482015290519081900360640190fd5b6006546103609082610d1c565b6006556001600160a01b038281166000908152600460205260409020541615610429576001600160a01b038083166000908152600460205260408082205490921681522060018101546103b39083610d1c565b60018201556005546103c59083610d1c565b6005556001600160a01b038084166000818152600460209081526040918290205482519384529093169282019290925280820184905290517fe0846a39221e7b3314c84790d61e0a9a2d29b1dc38a63a2d5ac4500a09f7db999181900360600190a1505b5050565b60075481565b600754604080517f4b1fc20d2fd2102f86b90df2c22a6641f5ef4f7fd96d33e36ab9bd6fbad1cf306020808301919091526001600160a01b03808a168385015288166060808401919091528351808403909101815260808301845280519082012061190160f01b60a084015260a283019490945260c2808301949094528251808303909401845260e28201808452845194820194909420600094859052610102830180855281905260ff88166101228401526101428301879052610162830186905292519293926001926101828082019392601f1981019281900390910190855afa158015610526573d6000803e3d6000fd5b505050602060405103519050866001600160a01b0316816001600160a01b03161461058c576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6105968787610aed565b50505050505050565b6002546001600160a01b031681565b6004602081905260009182526040909120805460018201546002830154600384015493909401546001600160a01b03909216939092909185565b6105f0610d7d565b6001600160a01b03166106016106ac565b6001600160a01b03161461065c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60055481565b6000546001600160a01b031690565b6106c3610d7d565b6001600160a01b03166106d46106ac565b6001600160a01b03161461072f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610780576040805162461bcd60e51b815260206004820152601360248201527234b73b30b634b2102fb6b0b9ba32b921b432b360691b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f6f322dbd39e457046ae29978ebab00f11e6e59d6c1ad690c6d773b6de2b93e479181900360200190a150565b6002600154141561082c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001553360009081526004602081905260409091200154610896576040805162461bcd60e51b815260206004820152601860248201527f6163636f756e74206973206e6f74206163746976617465640000000000000000604482015290519081900360640190fd5b336000908152600460205260409020600101546108ee576040805162461bcd60e51b8152602060048201526011602482015270072657761726420616d6f756e74203d203607c1b604482015290519081900360640190fd5b336000908152600460205260409020600181015461090c8180610d81565b600183015560028201546109209082610d1c565b600283015560035461093c906001600160a01b03163383610dde565b604080513381526020810183905281517fba8de60c3403ec381d1d484652ea1980e3c3e56359195c92525bff4ce47ad98e929181900390910190a1505060018055565b60065481565b6001600160a01b031660009081526004602081905260409091200154151590565b7f4b1fc20d2fd2102f86b90df2c22a6641f5ef4f7fd96d33e36ab9bd6fbad1cf3081565b6109d2610d7d565b6001600160a01b03166109e36106ac565b6001600160a01b031614610a3e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610a835760405162461bcd60e51b81526004018080602001828103825260268152602001806111046026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b6001600160a01b038216610b3a576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964207265666572656560881b604482015290519081900360640190fd5b806001600160a01b0316826001600160a01b03161415610b96576040805162461bcd60e51b81526020600482015260126024820152713932b332b932b2901e903932b332b93932b960711b604482015290519081900360640190fd5b6001600160a01b0382166000908152600460208190526040909120015415610bef5760405162461bcd60e51b81526004018080602001828103825260238152602001806111716023913960400191505060405180910390fd5b6001600160a01b03811615610c56576001600160a01b03811660009081526004602081905260409091200154610c565760405162461bcd60e51b815260040180806020018281038252602181526020018061112a6021913960400191505060405180910390fd5b6001600160a01b03828116600090815260046020819052604090912080546001600160a01b03191692841692831781554291015515610cd3576001600160a01b038116600090815260046020526040902060030154610cb6906001610d1c565b6001600160a01b0382166000908152600460205260409020600301555b604080516001600160a01b0380851682528316602082015281517f34ba9e1524c1b87cf36ca6fe2aca87ca0cdea432ea9f9ec554d8c3b495ed1f7b929181900390910190a15050565b600082820183811015610d76576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b600082821115610dd8576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e30908490610e35565b505050565b6060610e8a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610ee69092919063ffffffff16565b805190915015610e3057808060200190516020811015610ea957600080fd5b5051610e305760405162461bcd60e51b815260040180806020018281038252602a815260200180611194602a913960400191505060405180910390fd5b6060610ef58484600085610efd565b949350505050565b606082471015610f3e5760405162461bcd60e51b815260040180806020018281038252602681526020018061114b6026913960400191505060405180910390fd5b610f4785611059565b610f98576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310610fd75780518252601f199092019160209182019101610fb8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611039576040519150601f19603f3d011682016040523d82523d6000602084013e61103e565b606091505b509150915061104e82828661105f565b979650505050505050565b3b151590565b6060831561106e575081610d76565b82511561107e5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110c85781810151838201526020016110b0565b50505050905090810190601f1680156110f55780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573737265666572726572206163636f756e74206973206e6f7420616374697661746564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c72656665726565206163636f756e742068617665206265656e206163746976617465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220468f7b808e6fe9759572cff8f6302e9be088309612a0ecb6f77e4225a48d93f864736f6c634300060c0033526566657272616c3a3a636f6e7374727563746f723a3a5f746f6b656e41646472657373206d757374206e6f742062652061646472657373283029206f722061646472657373283129000000000000000000000000d3ccbf3867ff0204730173eb4cad3c4b5fd07c69

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d3ccbf3867ff0204730173eb4cad3c4b5fd07c69

-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0xd3ccbf3867ff0204730173eb4cad3c4b5fd07c69

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d3ccbf3867ff0204730173eb4cad3c4b5fd07c69


Deployed ByteCode Sourcemap

28188:5241:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30649:98;;;;;;;;;;;;;;;;-1:-1:-1;30649:98:0;-1:-1:-1;;;;;30649:98:0;;:::i;:::-;;32314:537;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32314:537:0;;;;;;;;:::i;29391:31::-;;;:::i;:::-;;;;;;;;;;;;;;;;30807:441;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30807:441:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29087:25::-;;;:::i;:::-;;;;-1:-1:-1;;;;;29087:25:0;;;;;;;;;;;;;;29187:43;;;;;;;;;;;;;;;;-1:-1:-1;29187:43:0;-1:-1:-1;;;;;29187:43:0;;:::i;:::-;;;;-1:-1:-1;;;;;29187:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19627:148;;;:::i;29267:26::-;;;:::i;18976:87::-;;;:::i;30406:214::-;;;;;;;;;;;;;;;;-1:-1:-1;30406:214:0;-1:-1:-1;;;;;30406:214:0;;:::i;32882:544::-;;;:::i;29347:37::-;;;:::i;32029:128::-;;;;;;;;;;;;;;;;-1:-1:-1;32029:128:0;-1:-1:-1;;;;;32029:128:0;;:::i;:::-;;;;;;;;;;;;;;;;;;29489:110;;;:::i;19930:244::-;;;;;;;;;;;;;;;;-1:-1:-1;19930:244:0;-1:-1:-1;;;;;19930:244:0;;:::i;29136:19::-;;;:::i;30649:98::-;30710:31;30720:10;30732:8;30710:9;:31::i;:::-;30649:98;:::o;32314:537::-;30324:10;;-1:-1:-1;;;;;30324:10:0;30310;:24;30302:52;;;;;-1:-1:-1;;;30302:52:0;;;;;;;;;;;;-1:-1:-1;;;30302:52:0;;;;;;;;;;;;;;;32449:22:::1;::::0;:34:::1;::::0;32476:6;32449:26:::1;:34::i;:::-;32424:22;:59:::0;-1:-1:-1;;;;;32494:24:0;;::::1;32539:1;32494:24:::0;;;:8:::1;:24;::::0;;;;:33;::::1;:47:::0;32490:356:::1;;-1:-1:-1::0;;;;;32595:24:0;;::::1;32552:31;32595:24:::0;;;32586:8:::1;32595:24;::::0;;;;;:33;;;::::1;32586:43:::0;;;32595:33;32663:22;::::1;::::0;:34:::1;::::0;32690:6;32663:26:::1;:34::i;:::-;32638:22;::::0;::::1;:59:::0;32720:11:::1;::::0;:23:::1;::::0;32736:6;32720:15:::1;:23::i;:::-;32706:11;:37:::0;-1:-1:-1;;;;;32796:24:0;;::::1;;::::0;;;:8:::1;:24;::::0;;;;;;;;:33;32759:79;;;;;32796:33;;::::1;32759:79:::0;;::::1;::::0;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;32490:356;;32314:537:::0;;:::o;29391:31::-;;;;:::o;30807:441::-;31016:16;;31044:48;;;29533:66;31044:48;;;;;;;;-1:-1:-1;;;;;31044:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31034:59;;;;;;-1:-1:-1;;;30987:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30969:132;;;;;;;;;30952:14;31125:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30969:132;;30952:14;31125:26;;;;;;;31044:48;-1:-1:-1;;31125:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31108:43;;31176:7;-1:-1:-1;;;;;31166:17:0;:6;-1:-1:-1;;;;;31166:17:0;;31158:47;;;;;-1:-1:-1;;;31158:47:0;;;;;;;;;;;;-1:-1:-1;;;31158:47:0;;;;;;;;;;;;;;;31214:28;31224:7;31233:8;31214:9;:28::i;:::-;30807:441;;;;;;;:::o;29087:25::-;;;-1:-1:-1;;;;;29087:25:0;;:::o;29187:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29187:43:0;;;;;;;;;:::o;19627:148::-;19207:12;:10;:12::i;:::-;-1:-1:-1;;;;;19196:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;19196:23:0;;19188:68;;;;;-1:-1:-1;;;19188:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19734:1:::1;19718:6:::0;;19697:40:::1;::::0;-1:-1:-1;;;;;19718:6:0;;::::1;::::0;19697:40:::1;::::0;19734:1;;19697:40:::1;19765:1;19748:19:::0;;-1:-1:-1;;;;;;19748:19:0::1;::::0;;19627:148::o;29267:26::-;;;;:::o;18976:87::-;19022:7;19049:6;-1:-1:-1;;;;;19049:6:0;18976:87;:::o;30406:214::-;19207:12;:10;:12::i;:::-;-1:-1:-1;;;;;19196:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;19196:23:0;;19188:68;;;;;-1:-1:-1;;;19188:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30491:25:0;::::1;30483:57;;;::::0;;-1:-1:-1;;;30483:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;30483:57:0;;;;;;;;;;;;;::::1;;30549:10;:24:::0;;-1:-1:-1;;;;;30549:24:0;::::1;-1:-1:-1::0;;;;;;30549:24:0;;::::1;::::0;::::1;::::0;;;30585:29:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;30406:214:::0;:::o;32882:544::-;13726:1;14332:7;;:19;;14324:63;;;;;-1:-1:-1;;;14324:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13726:1;14465:7;:18;32960:10:::1;32985:1;32951:20:::0;;;:8:::1;:20;::::0;;;;;;;:31:::1;::::0;32943:72:::1;;;::::0;;-1:-1:-1;;;32943:72:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33039:10;33060:1;33030:20:::0;;;:8:::1;:20;::::0;;;;:27:::1;;::::0;33022:61:::1;;;::::0;;-1:-1:-1;;;33022:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33022:61:0;;;;;;;;;;;;;::::1;;33127:10;33092:23;33118:20:::0;;;:8:::1;:20;::::0;;;;33169:14:::1;::::0;::::1;::::0;33207:33:::1;33169:14:::0;;33207:18:::1;:33::i;:::-;33190:14;::::0;::::1;:50:::0;33269:19:::1;::::0;::::1;::::0;:38:::1;::::0;33293:13;33269:23:::1;:38::i;:::-;33247:19;::::0;::::1;:60:::0;33314:5:::1;::::0;:54:::1;::::0;-1:-1:-1;;;;;33314:5:0::1;33341:10;33354:13:::0;33314:18:::1;:54::i;:::-;33382:38;::::0;;33394:10:::1;33382:38:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;;13682:1:0;14644:22;;32882:544::o;29347:37::-;;;;:::o;32029:128::-;-1:-1:-1;;;;;32118:18:0;32098:4;32118:18;;;:8;:18;;;;;;;;:29;;:33;;;32029:128::o;29489:110::-;29533:66;29489:110;:::o;19930:244::-;19207:12;:10;:12::i;:::-;-1:-1:-1;;;;;19196:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;19196:23:0;;19188:68;;;;;-1:-1:-1;;;19188:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20019:22:0;::::1;20011:73;;;;-1:-1:-1::0;;;20011:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20121:6;::::0;;20100:38:::1;::::0;-1:-1:-1;;;;;20100:38:0;;::::1;::::0;20121:6;::::1;::::0;20100:38:::1;::::0;::::1;20149:6;:17:::0;;-1:-1:-1;;;;;;20149:17:0::1;-1:-1:-1::0;;;;;20149:17:0;;;::::1;::::0;;;::::1;::::0;;19930:244::o;29136:19::-;;;-1:-1:-1;;;;;29136:19:0;;:::o;31300:665::-;-1:-1:-1;;;;;31378:21:0;;31370:49;;;;;-1:-1:-1;;;31370:49:0;;;;;;;;;;;;-1:-1:-1;;;31370:49:0;;;;;;;;;;;;;;;31445:8;-1:-1:-1;;;;;31434:19:0;:7;-1:-1:-1;;;;;31434:19:0;;;31426:50;;;;;-1:-1:-1;;;31426:50:0;;;;;;;;;;;;-1:-1:-1;;;31426:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31491:17:0;;;;;;:8;:17;;;;;;;;:28;;:33;31483:81;;;;-1:-1:-1;;;31483:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31575:22:0;;;31571:124;;-1:-1:-1;;;;;31616:18:0;;31648:1;31616:18;;;:8;:18;;;;;;;;:29;;31608:79;;;;-1:-1:-1;;;31608:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31703:17:0;;;;;;;:8;:17;;;;;;;;:37;;-1:-1:-1;;;;;;31703:37:0;;;;;;;;;31778:15;31747:28;;:46;31804:22;31800:119;;-1:-1:-1;;;;;31872:18:0;;;;;;:8;:18;;;;;:32;;;:39;;31909:1;31872:36;:39::i;:::-;-1:-1:-1;;;;;31837:18:0;;;;;;:8;:18;;;;;:32;;:74;31800:119;31932:27;;;-1:-1:-1;;;;;31932:27:0;;;;;;;;;;;;;;;;;;;;;;;;31300:665;;:::o;3704:179::-;3762:7;3794:5;;;3818:6;;;;3810:46;;;;;-1:-1:-1;;;3810:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3874:1;3704:179;-1:-1:-1;;;3704:179:0:o;613:106::-;701:10;613:106;:::o;4166:158::-;4224:7;4257:1;4252;:6;;4244:49;;;;;-1:-1:-1;;;4244:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4311:5:0;;;4166:158::o;8967:177::-;9077:58;;;-1:-1:-1;;;;;9077:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9077:58:0;-1:-1:-1;;;9077:58:0;;;9050:86;;9070:5;;9050:19;:86::i;:::-;8967:177;;;:::o;11272:761::-;11696:23;11722:69;11750:4;11722:69;;;;;;;;;;;;;;;;;11730:5;-1:-1:-1;;;;;11722:27:0;;;:69;;;;;:::i;:::-;11806:17;;11696:95;;-1:-1:-1;11806:21:0;11802:224;;11948:10;11937:30;;;;;;;;;;;;;;;-1:-1:-1;11937:30:0;11929:85;;;;-1:-1:-1;;;11929:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23815:195;23918:12;23950:52;23972:6;23980:4;23986:1;23989:12;23950:21;:52::i;:::-;23943:59;23815:195;-1:-1:-1;;;;23815:195:0:o;24867:530::-;24994:12;25052:5;25027:21;:30;;25019:81;;;;-1:-1:-1;;;25019:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25119:18;25130:6;25119:10;:18::i;:::-;25111:60;;;;;-1:-1:-1;;;25111:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25245:12;25259:23;25286:6;-1:-1:-1;;;;;25286:11:0;25306:5;25314:4;25286:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25286:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25244:75;;;;25337:52;25355:7;25364:10;25376:12;25337:17;:52::i;:::-;25330:59;24867:530;-1:-1:-1;;;;;;;24867:530:0:o;20897:422::-;21264:20;21303:8;;;20897:422::o;27407:742::-;27522:12;27551:7;27547:595;;;-1:-1:-1;27582:10:0;27575:17;;27547:595;27696:17;;:21;27692:439;;27959:10;27953:17;28020:15;28007:10;28003:2;27999:19;27992:44;27907:148;28102:12;28095:20;;-1:-1:-1;;;28095:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Metadata Hash

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