Contract 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c

 

Contract Overview

Balance:
0 FTM

FTM Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x27440ccd310d48a1ba3dce5f16d7959fa6b168448dbbdad4c6151a85280cf01eSwap And Send451029922022-08-17 14:11:31224 days 5 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000916243403
0x708b5edbbec0e1cc8e7f56a7cd4f8f2a4bd283d3855141385eb978475f1f5ae2Swap And Send451029232022-08-17 14:10:06224 days 5 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000995090591
0x0b9aac4aacc2058e13e5325956f6d38f47b9597d36ec876ead5fd5efd70a8889Swap And Send451028002022-08-17 14:07:44224 days 5 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.001013381213
0x504ade891545820869020e611c05e58d9b9e640ec77e33989a2d627f43ec02a1Swap And Send451027662022-08-17 14:07:01224 days 5 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.001016661625
0x985065b2b05f395dc1c859e73997a8dae6a51b9e23a78801e826d175f7a55828Swap And Send451027202022-08-17 14:06:09224 days 5 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.001010244522
0x7f0a54e20a8a1c7f7e28d247e6fe6583809f9e9b90f38cbb03b63493ff00639cSwap And Send451026092022-08-17 14:03:41224 days 5 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.00102888361
0xeb849dbd6d33878004e672114689cce89ba814bf27028266af00fe53a709fca9Swap And Send422758292022-07-08 4:19:44264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000814215875
0x021f1ceaedb2f05cc24a3fd2703ffd7975ba8dbf6f3b1103c8d1f6e75bf1bd9aSwap And Send422757922022-07-08 4:18:54264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000816691087
0x28251b6add81ff85fc5a91fa6ff2f940b5b2dc830b6726f402895f42a72a07fcSwap And Send422757412022-07-08 4:18:04264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000817020087
0x5dba74d12b576277d0374d064ddeb84b79ff34f3c700cb0253b9993afb1ae08eSwap And Send422756932022-07-08 4:17:15264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.00081607275
0xbfb2a632fc576a288006f9a6b4dcdaf3aa8b5031955cb450b2bb4626779d233fSwap And Send422756342022-07-08 4:16:08264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000818116227
0xd841121e4afeb9048ad7b809cec6b24e31fe528263f9448177252134212270deSwap And Send422756022022-07-08 4:15:36264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000819864335
0xd7fd143b1f3d466500a72bb2d34dd56ca1c87ec3a1e7d2fbf5b50c3661847592Swap And Send422755372022-07-08 4:14:25264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000831190706
0x87c28483467e592f7a9c8b0d326a013f79aed51492795294eaf6ea6eb923ccf3Swap And Send422754322022-07-08 4:12:40264 days 15 hrs ago0x4b2f59151d4bb1692439226f872ae7d8b93a9b11 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.000833744284
0xaf583d8858110f4d7860840d2344bb868e0f216fed33a699f2e63c0c9e737c3bSwap And Send403144132022-06-11 23:09:31290 days 20 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.40689
0xe30686f60e31aa0361d9bd5e3ddbf32e0680169d5b62920606f8fa9f3ac8b2e6Swap And Send403144082022-06-11 23:09:25290 days 20 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.39191
0x8b16818c311cc0618a3e19c046876133102f4f52913203c1da3f694112e7b75bSwap And Send403144082022-06-11 23:09:25290 days 20 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.39191
0xb7cfa8741c829ff90c55c31ae9bb2f683755990a159bd6f265dd7ab84366d0a4Swap And Send403144082022-06-11 23:09:25290 days 20 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.40689
0x80c0be7ff1ff1fc420800ee79212652338e274594e22454da4fe27377fedfe51Swap And Send380869062022-05-12 8:19:35321 days 11 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.50947
0x81fe57df29d25d27ebc2207e29e432b35288ef848c84061e490d431ab671ddb8Swap And Send380869022022-05-12 8:19:30321 days 11 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.484782
0x7651496ab3b3c043e8cce7c4b5cb2dc76bf4bf47a6199beafd1ddba373f7159bSwap And Send380868862022-05-12 8:18:56321 days 11 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.40689
0xc5f48e5d85db21532f52d0e695200e16508cef3b9d8a3c8fa773331836efb977Swap And Send380837522022-05-12 6:57:51321 days 12 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.40689
0xc1e04aa944249fe84ddbe4256abf60c72ef43a815982b9c6c2ff8a477ddd0114Swap And Send380836892022-05-12 6:56:14321 days 12 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.40689
0xefecc31dd4b7c16320065009182a5d523d40220a67c477c9e2d7e337b1e066ccSwap And Send380832442022-05-12 6:44:33321 days 12 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.40689
0xb668b2bbfd83f6f2594e5897182bfd50e216c5f3ec92eb6fc4a5bd432499646dSwap And Send380831412022-05-12 6:41:43321 days 12 hrs ago0x131ee8f328f67254276b78d682893b792f889a00 IN  0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0 FTM0.593068
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x27440ccd310d48a1ba3dce5f16d7959fa6b168448dbbdad4c6151a85280cf01e451029922022-08-17 14:11:31224 days 5 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17635.155896394386204278 FTM
0x27440ccd310d48a1ba3dce5f16d7959fa6b168448dbbdad4c6151a85280cf01e451029922022-08-17 14:11:31224 days 5 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c35.155896394386204278 FTM
0x708b5edbbec0e1cc8e7f56a7cd4f8f2a4bd283d3855141385eb978475f1f5ae2451029232022-08-17 14:10:06224 days 5 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17635.230621068471735085 FTM
0x708b5edbbec0e1cc8e7f56a7cd4f8f2a4bd283d3855141385eb978475f1f5ae2451029232022-08-17 14:10:06224 days 5 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c35.230621068471735085 FTM
0x0b9aac4aacc2058e13e5325956f6d38f47b9597d36ec876ead5fd5efd70a8889451028002022-08-17 14:07:44224 days 5 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17635.305584319400136247 FTM
0x0b9aac4aacc2058e13e5325956f6d38f47b9597d36ec876ead5fd5efd70a8889451028002022-08-17 14:07:44224 days 5 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c35.305584319400136247 FTM
0x504ade891545820869020e611c05e58d9b9e640ec77e33989a2d627f43ec02a1451027662022-08-17 14:07:01224 days 5 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17646.65845398338255614 FTM
0x504ade891545820869020e611c05e58d9b9e640ec77e33989a2d627f43ec02a1451027662022-08-17 14:07:01224 days 5 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c46.65845398338255614 FTM
0x985065b2b05f395dc1c859e73997a8dae6a51b9e23a78801e826d175f7a55828451027202022-08-17 14:06:09224 days 5 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17662.415561719704742973 FTM
0x985065b2b05f395dc1c859e73997a8dae6a51b9e23a78801e826d175f7a55828451027202022-08-17 14:06:09224 days 5 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c62.415561719704742973 FTM
0x7f0a54e20a8a1c7f7e28d247e6fe6583809f9e9b90f38cbb03b63493ff00639c451026092022-08-17 14:03:41224 days 5 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17683.586038059344651685 FTM
0x7f0a54e20a8a1c7f7e28d247e6fe6583809f9e9b90f38cbb03b63493ff00639c451026092022-08-17 14:03:41224 days 5 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c83.586038059344651685 FTM
0xeb849dbd6d33878004e672114689cce89ba814bf27028266af00fe53a709fca9422758292022-07-08 4:19:44264 days 15 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17639.05543777523191275 FTM
0xeb849dbd6d33878004e672114689cce89ba814bf27028266af00fe53a709fca9422758292022-07-08 4:19:44264 days 15 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c39.05543777523191275 FTM
0x021f1ceaedb2f05cc24a3fd2703ffd7975ba8dbf6f3b1103c8d1f6e75bf1bd9a422757922022-07-08 4:18:54264 days 15 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17639.142960652577779054 FTM
0x021f1ceaedb2f05cc24a3fd2703ffd7975ba8dbf6f3b1103c8d1f6e75bf1bd9a422757922022-07-08 4:18:54264 days 15 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c39.142960652577779054 FTM
0x28251b6add81ff85fc5a91fa6ff2f940b5b2dc830b6726f402895f42a72a07fc422757412022-07-08 4:18:04264 days 15 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17639.230778165505484012 FTM
0x28251b6add81ff85fc5a91fa6ff2f940b5b2dc830b6726f402895f42a72a07fc422757412022-07-08 4:18:04264 days 15 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c39.230778165505484012 FTM
0x5dba74d12b576277d0374d064ddeb84b79ff34f3c700cb0253b9993afb1ae08e422756932022-07-08 4:17:15264 days 15 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17643.754595861055000833 FTM
0x5dba74d12b576277d0374d064ddeb84b79ff34f3c700cb0253b9993afb1ae08e422756932022-07-08 4:17:15264 days 15 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c43.754595861055000833 FTM
0xbfb2a632fc576a288006f9a6b4dcdaf3aa8b5031955cb450b2bb4626779d233f422756342022-07-08 4:16:08264 days 15 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17658.509886457358617051 FTM
0xbfb2a632fc576a288006f9a6b4dcdaf3aa8b5031955cb450b2bb4626779d233f422756342022-07-08 4:16:08264 days 15 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c58.509886457358617051 FTM
0xd841121e4afeb9048ad7b809cec6b24e31fe528263f9448177252134212270de422756022022-07-08 4:15:36264 days 15 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a17678.31772376137446754 FTM
0xd841121e4afeb9048ad7b809cec6b24e31fe528263f9448177252134212270de422756022022-07-08 4:15:36264 days 15 hrs ago SpookySwap: Router 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c78.31772376137446754 FTM
0xd7fd143b1f3d466500a72bb2d34dd56ca1c87ec3a1e7d2fbf5b50c3661847592422755372022-07-08 4:14:25264 days 15 hrs ago 0x6a3083f47d56db7bdb2783698407cc95a0dc7a1c0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a176104.968775657507023231 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TreasuryV1

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2022-03-09
*/

pragma solidity 0.8.5;


// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
/**
 * @dev External interface of AccessControl declared to support ERC165 detection.
 */
interface IAccessControl {
    /**
     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
     *
     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
     * {RoleAdminChanged} not being emitted signaling this.
     *
     * _Available since v3.1._
     */
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    /**
     * @dev Emitted when `account` is granted `role`.
     *
     * `sender` is the account that originated the contract call, an admin role
     * bearer except when using {AccessControl-_setupRole}.
     */
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Emitted when `account` is revoked `role`.
     *
     * `sender` is the account that originated the contract call:
     *   - if using `revokeRole`, it is the admin role bearer
     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
     */
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) external view returns (bool);

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {AccessControl-_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) external;
}


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with 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) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


// OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol)
/**
 * @dev Contract module that allows children to implement role-based access
 * control mechanisms. This is a lightweight version that doesn't allow enumerating role
 * members except through off-chain means by accessing the contract event logs. Some
 * applications may benefit from on-chain enumerability, for those cases see
 * {AccessControlEnumerable}.
 *
 * Roles are referred to by their `bytes32` identifier. These should be exposed
 * in the external API and be unique. The best way to achieve this is by
 * using `public constant` hash digests:
 *
 * ```
 * bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
 * ```
 *
 * Roles can be used to represent a set of permissions. To restrict access to a
 * function call, use {hasRole}:
 *
 * ```
 * function foo() public {
 *     require(hasRole(MY_ROLE, msg.sender));
 *     ...
 * }
 * ```
 *
 * Roles can be granted and revoked dynamically via the {grantRole} and
 * {revokeRole} functions. Each role has an associated admin role, and only
 * accounts that have a role's admin role can call {grantRole} and {revokeRole}.
 *
 * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
 * that only accounts with this role will be able to grant or revoke other
 * roles. More complex role relationships can be created by using
 * {_setRoleAdmin}.
 *
 * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
 * grant and revoke this role. Extra precautions should be taken to secure
 * accounts that have been granted it.
 */
abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    /**
     * @dev Modifier that checks that an account has a specific role. Reverts
     * with a standardized message including the required role.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     *
     * _Available since v4.1._
     */
    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    /**
     * @dev Revert with a standard message if `account` is missing `role`.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     */
    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been revoked `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event. Note that unlike {grantRole}, this function doesn't perform any
     * checks on the calling account.
     *
     * [WARNING]
     * ====
     * This function should only be called from the constructor when setting
     * up the initial roles for the system.
     *
     * Using this function in any other way is effectively circumventing the admin
     * system imposed by {AccessControl}.
     * ====
     *
     * NOTE: This function is deprecated in favor of {_grantRole}.
     */
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    /**
     * @dev Sets `adminRole` as ``role``'s admin role.
     *
     * Emits a {RoleAdminChanged} event.
     */
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * Internal function without access restriction.
     */
    function _grantRole(bytes32 role, address account) internal virtual {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * Internal function without access restriction.
     */
    function _revokeRole(bytes32 role, address account) internal virtual {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}


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

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

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

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

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

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

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

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


interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}


contract TreasuryV1 is              
    AccessControl {
    bool private inSwap;
    uint256 minimumTokenToSwap; // maximum token that able to swap at one time
    uint256 fixedLimitTokenToSwap; // fixed limit token to swap
    uint256 percentageToSwap; // 2 digits _00
    address mainToken; // Frock Token Address
    address treasuryDestination; // FTM will be sent to this address after swap
    bytes32 public constant CALLER_ROLE = keccak256("CALLER");
    IUniswapV2Router02 public uniswapV2Router;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    event SwapAndSend(uint256 amountToSwap, uint256 ftmBalanceAmount, address treasuryDestination);
    event Withdraw(uint256 ftmBalanceAmount, address treasuryDestination);
    event WithdrawToken(uint256 amount, address destination);
    event UpdateMainToken(address newMainTokenAddress);
    event UpdateTreasuryDestination(address newTreasuryDestination);
    event UpdateMinimumTokenToSwap(uint256 newMinimumTokenToSwap);
    event UpdateFixedTokenToSwap(uint256 newFixedTokenToSwap);
    event UpdatePercentageTokenToSwap(uint256 newPercentageTokenToSwap);    
    
    // Initialize
    constructor(
        uint256 _minimumTokenToSwap,
        uint256 _fixedLimitTokenToSwap,
        uint256 _percentageToSwap,
        address _mainToken,
        address _treasuryDestination
    ) {       

        // Setup deployer as Admin when construction
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());        
        
        uniswapV2Router = IUniswapV2Router02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);        
        inSwap = false;
        
        minimumTokenToSwap = _minimumTokenToSwap;
        fixedLimitTokenToSwap = _fixedLimitTokenToSwap;
        percentageToSwap = _percentageToSwap;
        mainToken = _mainToken;
        treasuryDestination = _treasuryDestination;
    }  

    /**
     * @dev Swap Frock token on DEX and send the FTM to treasuryDestination
     * @dev Maximum amount of swap based on maximumTokenToSwap
     */
    function swapAndSend() external onlyRole(CALLER_ROLE) {  
        require(mainToken != address(0), "Treasury: Main Token not setted yet");
        require(treasuryDestination != address(0), "Treasury : Destination not setted yet");        
        require(minimumTokenToSwap > 0, "Treasury: Minimum Token to Swap not setted yet");         
        require(getTokenBalance() > minimumTokenToSwap, "Treasury: Not passing minimum token");
        require(getTokenBalance() >= fixedLimitTokenToSwap, "Treasury: Not passing fixed limit token to swap");

        uint256 percentageAmountToSwap = getTokenBalance() * percentageToSwap / 10000;
        uint256 amountToSwap = percentageAmountToSwap >= fixedLimitTokenToSwap ? percentageAmountToSwap : fixedLimitTokenToSwap;

        // Swap        
        _swapTokensForEth(amountToSwap);

        uint256 ftmBalanceAmount = getBalance();     

        // Send FTM
        _safeTransferETH(treasuryDestination, ftmBalanceAmount);

        emit SwapAndSend(amountToSwap, ftmBalanceAmount, treasuryDestination);
    }    

    /**
     * @dev Withdraw FTM to treasuryDestination address
     */
    function withdraw() external onlyRole(DEFAULT_ADMIN_ROLE) {
        uint256 ftmBalanceAmount = getBalance();  
        // Send FTM
        _safeTransferETH(treasuryDestination, ftmBalanceAmount);

        emit Withdraw(ftmBalanceAmount, treasuryDestination);
    }

     /**
     * @dev Withdraw Main Token
     */
    function withdrawToken(address destination, uint256 amount) external onlyRole(DEFAULT_ADMIN_ROLE) {        
        // Send Token
        require(
            IERC20(mainToken).transfer(destination, amount), "Treasury: Fail Transfer Token"
        );        
        emit WithdrawToken(amount, destination);
    }
      
    /**
     * @dev Swap FROCK to DEX to FTM
     */        
    function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(mainToken);
        path[1] = uniswapV2Router.WETH();
        IERC20(mainToken).approve(address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    

    /**
     * @dev Get total amount of FROCK that owned by this contract
     */
    function getTokenBalance() public view returns(uint256 tokenAmount) {
        return IERC20(mainToken).balanceOf(address(this));
    }

    /**
     * @dev Get total amount of FTM that owned by this contract
     */
    function getBalance() public view returns(uint256 balance) {
        return address(this).balance;
    }

    /**
     * @dev Set main token (FROCK token) address
     */
    function setMainToken(address tokenAddress) external onlyRole(DEFAULT_ADMIN_ROLE) {
        mainToken = tokenAddress;
        emit UpdateMainToken(tokenAddress);
    }

    /** 
     * @dev Set treasuryDestination Address
     */
    function setTreasuryDestination(address newTreasuryDestination) external onlyRole(DEFAULT_ADMIN_ROLE) {
        treasuryDestination = newTreasuryDestination;
        emit UpdateTreasuryDestination(newTreasuryDestination);
    }

    /**
     * @dev Set Minimum Token of mainToken that should owned to swap
     */
    function setMinimumTokenToSwap(uint256 newMinimumTokenToSwap) external onlyRole(DEFAULT_ADMIN_ROLE) {
        minimumTokenToSwap = newMinimumTokenToSwap;
        emit UpdateMinimumTokenToSwap(newMinimumTokenToSwap);
    }

     /**
     * @dev Set Fixed Token of mainToken that able to swap at once
     */
    function setFixedTokenToSwap(uint256 newFixedTokenToSwap) external onlyRole(DEFAULT_ADMIN_ROLE) {
        fixedLimitTokenToSwap = newFixedTokenToSwap;
        emit UpdateFixedTokenToSwap(newFixedTokenToSwap);
    }


     /**
     * @dev Set Percentage of Token to Swap
     */
    function setPercentageTokenToSwap(uint256 newPercentageTokenToSwap) external onlyRole(DEFAULT_ADMIN_ROLE) {
        percentageToSwap = newPercentageTokenToSwap;
        emit UpdatePercentageTokenToSwap(newPercentageTokenToSwap);
    }

    /**
     * @dev Function to Transfer FTM
     */
    function _safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'Treasury: ETH_TRANSFER_FAILED');
    }        
    
    // Function to receive Ether. msg.data must be empty
    receive() external payable {}

    // Fallback function is called when msg.data is not empty
    fallback() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_minimumTokenToSwap","type":"uint256"},{"internalType":"uint256","name":"_fixedLimitTokenToSwap","type":"uint256"},{"internalType":"uint256","name":"_percentageToSwap","type":"uint256"},{"internalType":"address","name":"_mainToken","type":"address"},{"internalType":"address","name":"_treasuryDestination","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountToSwap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ftmBalanceAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"treasuryDestination","type":"address"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFixedTokenToSwap","type":"uint256"}],"name":"UpdateFixedTokenToSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newMainTokenAddress","type":"address"}],"name":"UpdateMainToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMinimumTokenToSwap","type":"uint256"}],"name":"UpdateMinimumTokenToSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newPercentageTokenToSwap","type":"uint256"}],"name":"UpdatePercentageTokenToSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTreasuryDestination","type":"address"}],"name":"UpdateTreasuryDestination","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ftmBalanceAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"treasuryDestination","type":"address"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"destination","type":"address"}],"name":"WithdrawToken","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"CALLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenBalance","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFixedTokenToSwap","type":"uint256"}],"name":"setFixedTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"setMainToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinimumTokenToSwap","type":"uint256"}],"name":"setMinimumTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentageTokenToSwap","type":"uint256"}],"name":"setPercentageTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryDestination","type":"address"}],"name":"setTreasuryDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040516200163838038062001638833981016040819052620000349162000179565b62000041600033620000ac565b6007805473f491e7b69e4244ad4002bc14e878a34207e38c296001600160a01b0319918216179091556001805460ff191690556002959095556003939093556004919091556005805484166001600160a01b03928316179055600680549093169116179055620001ce565b620000b88282620000bc565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000b8576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001183390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200017457600080fd5b919050565b600080600080600060a086880312156200019257600080fd5b855194506020860151935060408601519250620001b2606087016200015c565b9150620001c2608087016200015c565b90509295509295909350565b61145a80620001de6000396000f3fe60806040526004361061010c5760003560e01c80634e3bb8141161009a5780639cd9f1fd116100615780639cd9f1fd1461030d5780639e281a9814610322578063a217fddf14610342578063a66570d714610357578063d547741f1461037757005b80634e3bb81414610264578063774237fc1461028457806382b2e257146102b85780638eb60def146102cd57806391d14854146102ed57005b8063248a9ca3116100de578063248a9ca3146101bf57806327ce464e146101ef5780632f2ff15d1461020f57806336568abe1461022f5780633ccfd60b1461024f57005b806301ffc9a71461011557806312065fe01461014a578063124454dc146101675780631694505e1461018757005b3661011357005b005b34801561012157600080fd5b506101356101303660046111b2565b610397565b60405190151581526020015b60405180910390f35b34801561015657600080fd5b50475b604051908152602001610141565b34801561017357600080fd5b50610113610182366004611169565b6103ce565b34801561019357600080fd5b506007546101a7906001600160a01b031681565b6040516001600160a01b039091168152602001610141565b3480156101cb57600080fd5b506101596101da366004611169565b60009081526020819052604090206001015490565b3480156101fb57600080fd5b5061011361020a3660046110e1565b610417565b34801561021b57600080fd5b5061011361022a366004611182565b610471565b34801561023b57600080fd5b5061011361024a366004611182565b61049c565b34801561025b57600080fd5b5061011361051f565b34801561027057600080fd5b5061011361027f366004611169565b610585565b34801561029057600080fd5b506101597f69fb73f918fab3af495c0a457de635771a39f3d6cfedc797ae0b5bb56c83c6f781565b3480156102c457600080fd5b506101596105c6565b3480156102d957600080fd5b506101136102e83660046110e1565b610647565b3480156102f957600080fd5b50610135610308366004611182565b6106a1565b34801561031957600080fd5b506101136106ca565b34801561032e57600080fd5b5061011361033d36600461111b565b6109ad565b34801561034e57600080fd5b50610159600081565b34801561036357600080fd5b50610113610372366004611169565b610ad1565b34801561038357600080fd5b50610113610392366004611182565b610b12565b60006001600160e01b03198216637965db0b60e01b14806103c857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006103da8133610b38565b60038290556040518281527f89757786f1322a609aa51fd0977025898edc00f1c069876c92a4c9784e990bc5906020015b60405180910390a15050565b60006104238133610b38565b600580546001600160a01b0319166001600160a01b0384169081179091556040519081527fd68271512da4c3278e5f7e25443d78b7221df5389d259a6fbdc569f5b020e54d9060200161040b565b60008281526020819052604090206001015461048d8133610b38565b6104978383610b9c565b505050565b6001600160a01b03811633146105115760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61051b8282610c20565b5050565b600061052b8133610b38565b6006544790610543906001600160a01b031682610c85565b600654604080518381526001600160a01b0390921660208301527f8353ffcac0876ad14e226d9783c04540bfebf13871e868157d2a391cad98e918910161040b565b60006105918133610b38565b60028290556040518281527f1e1a24d6d9d6d3f5673fc89b9d255bc943c56195db61f63ca23fb2a1630fdd6f9060200161040b565b6005546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561060a57600080fd5b505afa15801561061e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064291906111dc565b905090565b60006106538133610b38565b600680546001600160a01b0319166001600160a01b0384169081179091556040519081527f62e47dc4d048e82c3c2e05e7ecb7b94b07614b52d2e16c446f114e4b32b9bddc9060200161040b565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7f69fb73f918fab3af495c0a457de635771a39f3d6cfedc797ae0b5bb56c83c6f76106f58133610b38565b6005546001600160a01b03166107595760405162461bcd60e51b815260206004820152602360248201527f54726561737572793a204d61696e20546f6b656e206e6f7420736574746564206044820152621e595d60ea1b6064820152608401610508565b6006546001600160a01b03166107bf5760405162461bcd60e51b815260206004820152602560248201527f5472656173757279203a2044657374696e6174696f6e206e6f7420736574746560448201526419081e595d60da1b6064820152608401610508565b6000600254116108285760405162461bcd60e51b815260206004820152602e60248201527f54726561737572793a204d696e696d756d20546f6b656e20746f20537761702060448201526d1b9bdd081cd95d1d1959081e595d60921b6064820152608401610508565b6002546108336105c6565b1161088c5760405162461bcd60e51b815260206004820152602360248201527f54726561737572793a204e6f742070617373696e67206d696e696d756d20746f60448201526235b2b760e91b6064820152608401610508565b6003546108976105c6565b10156108fd5760405162461bcd60e51b815260206004820152602f60248201527f54726561737572793a204e6f742070617373696e67206669786564206c696d6960448201526e07420746f6b656e20746f207377617608c1b6064820152608401610508565b600061271060045461090d6105c6565b6109179190611364565b6109219190611342565b9050600060035482101561093757600354610939565b815b905061094481610d42565b600654479061095c906001600160a01b031682610c85565b60065460408051848152602081018490526001600160a01b0390921682820152517f0c7f67a24924aaae43ae29a1ec56abf4fef0e72069639b16a359496faad748339181900360600190a150505050565b60006109b98133610b38565b60055460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401602060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611147565b610a8b5760405162461bcd60e51b815260206004820152601d60248201527f54726561737572793a204661696c205472616e7366657220546f6b656e0000006044820152606401610508565b604080518381526001600160a01b03851660208201527f52abf0ee1c51330cd0473cae6ac72ce4bf9b29dce23e5c4e776145df1fec8283910160405180910390a1505050565b6000610add8133610b38565b60048290556040518281527ffa7aee545b73f89fa39b3a52babfa12e7623e76d371f14b950e16be367059b929060200161040b565b600082815260208190526040902060010154610b2e8133610b38565b6104978383610c20565b610b4282826106a1565b61051b57610b5a816001600160a01b03166014610f3e565b610b65836020610f3e565b604051602001610b76929190611211565b60408051601f198184030181529082905262461bcd60e51b825261050891600401611286565b610ba682826106a1565b61051b576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610bdc3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610c2a82826106a1565b1561051b576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b604080516000808252602082019092526001600160a01b038416908390604051610caf91906111f5565b60006040518083038185875af1925050503d8060008114610cec576040519150601f19603f3d011682016040523d82523d6000602084013e610cf1565b606091505b50509050806104975760405162461bcd60e51b815260206004820152601d60248201527f54726561737572793a204554485f5452414e534645525f4641494c45440000006044820152606401610508565b6001805460ff191681179055604080516002808252606082018352600092602083019080368337505060055482519293506001600160a01b031691839150600090610d8f57610d8f6113e0565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610de357600080fd5b505afa158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b91906110fe565b81600181518110610e2e57610e2e6113e0565b6001600160a01b03928316602091820292909201015260055460075460405163095ea7b360e01b815290831660048201526024810185905291169063095ea7b390604401602060405180830381600087803b158015610e8c57600080fd5b505af1158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611147565b5060075460405163791ac94760e01b81526001600160a01b039091169063791ac94790610efe9085906000908690309042906004016112b9565b600060405180830381600087803b158015610f1857600080fd5b505af1158015610f2c573d6000803e3d6000fd5b50506001805460ff1916905550505050565b60606000610f4d836002611364565b610f5890600261132a565b67ffffffffffffffff811115610f7057610f706113f6565b6040519080825280601f01601f191660200182016040528015610f9a576020820181803683370190505b509050600360fc1b81600081518110610fb557610fb56113e0565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610fe457610fe46113e0565b60200101906001600160f81b031916908160001a9053506000611008846002611364565b61101390600161132a565b90505b600181111561108b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611047576110476113e0565b1a60f81b82828151811061105d5761105d6113e0565b60200101906001600160f81b031916908160001a90535060049490941c93611084816113b3565b9050611016565b5083156110da5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610508565b9392505050565b6000602082840312156110f357600080fd5b81356110da8161140c565b60006020828403121561111057600080fd5b81516110da8161140c565b6000806040838503121561112e57600080fd5b82356111398161140c565b946020939093013593505050565b60006020828403121561115957600080fd5b815180151581146110da57600080fd5b60006020828403121561117b57600080fd5b5035919050565b6000806040838503121561119557600080fd5b8235915060208301356111a78161140c565b809150509250929050565b6000602082840312156111c457600080fd5b81356001600160e01b0319811681146110da57600080fd5b6000602082840312156111ee57600080fd5b5051919050565b60008251611207818460208701611383565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611249816017850160208801611383565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161127a816028840160208801611383565b01602801949350505050565b60208152600082518060208401526112a5816040850160208701611383565b601f01601f19169190910160400192915050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156113095784516001600160a01b0316835293830193918301916001016112e4565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561133d5761133d6113ca565b500190565b60008261135f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561137e5761137e6113ca565b500290565b60005b8381101561139e578181015183820152602001611386565b838111156113ad576000848401525b50505050565b6000816113c2576113c26113ca565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461142157600080fd5b5056fea26469706673582212204097e0a4637893e91f9bfde914a5df9f4f5512277ce4ae925d1b84caed5ac76a64736f6c63430008050033000000000000000000000000000000000000000000000000000000174876e800000000000000000000000000000000000000000000000000000000746a52880000000000000000000000000000000000000000000000000000000000000009c4000000000000000000000000e679ae2b7e97d759ec758fafe50cb011ebfb7d770000000000000000000000008eaedb026f0c6a0174ca5eb9c4ecfed28237a176

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

000000000000000000000000000000000000000000000000000000174876e800000000000000000000000000000000000000000000000000000000746a52880000000000000000000000000000000000000000000000000000000000000009c4000000000000000000000000e679ae2b7e97d759ec758fafe50cb011ebfb7d770000000000000000000000008eaedb026f0c6a0174ca5eb9c4ecfed28237a176

-----Decoded View---------------
Arg [0] : _minimumTokenToSwap (uint256): 100000000000
Arg [1] : _fixedLimitTokenToSwap (uint256): 500000000000
Arg [2] : _percentageToSwap (uint256): 2500
Arg [3] : _mainToken (address): 0xe679ae2b7e97d759ec758fafe50cb011ebfb7d77
Arg [4] : _treasuryDestination (address): 0x8eaedb026f0c6a0174ca5eb9c4ecfed28237a176

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000174876e800
Arg [1] : 000000000000000000000000000000000000000000000000000000746a528800
Arg [2] : 00000000000000000000000000000000000000000000000000000000000009c4
Arg [3] : 000000000000000000000000e679ae2b7e97d759ec758fafe50cb011ebfb7d77
Arg [4] : 0000000000000000000000008eaedb026f0c6a0174ca5eb9c4ecfed28237a176


Deployed ByteCode Sourcemap

18498:6882:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10089:204;;;;;;;;;;-1:-1:-1;10089:204:0;;;;;:::i;:::-;;:::i;:::-;;;4016:14:1;;4009:22;3991:41;;3979:2;3964:18;10089:204:0;;;;;;;;23318:106;;;;;;;;;;-1:-1:-1;23395:21:0;23318:106;;;4189:25:1;;;4177:2;4162:18;23318:106:0;4144:76:1;24387:217:0;;;;;;;;;;-1:-1:-1;24387:217:0;;;;;:::i;:::-;;:::i;18971:41::-;;;;;;;;;;-1:-1:-1;18971:41:0;;;;-1:-1:-1;;;;;18971:41:0;;;;;;-1:-1:-1;;;;;3528:32:1;;;3510:51;;3498:2;3483:18;18971:41:0;3465:102:1;11500:123:0;;;;;;;;;;-1:-1:-1;11500:123:0;;;;;:::i;:::-;11566:7;11593:12;;;;;;;;;;:22;;;;11500:123;23500:170;;;;;;;;;;-1:-1:-1;23500:170:0;;;;;:::i;:::-;;:::i;11885:147::-;;;;;;;;;;-1:-1:-1;11885:147:0;;;;;:::i;:::-;;:::i;12933:218::-;;;;;;;;;;-1:-1:-1;12933:218:0;;;;;:::i;:::-;;:::i;21774:270::-;;;;;;;;;;;;;:::i;24068:224::-;;;;;;;;;;-1:-1:-1;24068:224:0;;;;;:::i;:::-;;:::i;18907:57::-;;;;;;;;;;;;18945:19;18907:57;;23091:136;;;;;;;;;;;;;:::i;23742:230::-;;;;;;;;;;-1:-1:-1;23742:230:0;;;;;:::i;:::-;;:::i;10385:139::-;;;;;;;;;;-1:-1:-1;10385:139:0;;;;;:::i;:::-;;:::i;20611:1076::-;;;;;;;;;;;;;:::i;22104:319::-;;;;;;;;;;-1:-1:-1;22104:319:0;;;;;:::i;:::-;;:::i;9476:49::-;;;;;;;;;;-1:-1:-1;9476:49:0;9521:4;9476:49;;24678:237;;;;;;;;;;-1:-1:-1;24678:237:0;;;;;:::i;:::-;;:::i;12277:149::-;;;;;;;;;;-1:-1:-1;12277:149:0;;;;;:::i;:::-;;:::i;10089:204::-;10174:4;-1:-1:-1;;;;;;10198:47:0;;-1:-1:-1;;;10198:47:0;;:87;;-1:-1:-1;;;;;;;;;;7556:40:0;;;10249:36;10191:94;10089:204;-1:-1:-1;;10089:204:0:o;24387:217::-;9521:4;9967:30;9521:4;3685:10;9967;:30::i;:::-;24494:21:::1;:43:::0;;;24553::::1;::::0;4189:25:1;;;24553:43:0::1;::::0;4177:2:1;4162:18;24553:43:0::1;;;;;;;;24387:217:::0;;:::o;23500:170::-;9521:4;9967:30;9521:4;3685:10;9967;:30::i;:::-;23593:9:::1;:24:::0;;-1:-1:-1;;;;;;23593:24:0::1;-1:-1:-1::0;;;;;23593:24:0;::::1;::::0;;::::1;::::0;;;23633:29:::1;::::0;3510:51:1;;;23633:29:0::1;::::0;3498:2:1;3483:18;23633:29:0::1;3465:102:1::0;11885:147:0;11566:7;11593:12;;;;;;;;;;:22;;;9967:30;9978:4;3685:10;9967;:30::i;:::-;11999:25:::1;12010:4;12016:7;11999:10;:25::i;:::-;11885:147:::0;;;:::o;12933:218::-;-1:-1:-1;;;;;13029:23:0;;3685:10;13029:23;13021:83;;;;-1:-1:-1;;;13021:83:0;;8171:2:1;13021:83:0;;;8153:21:1;8210:2;8190:18;;;8183:30;8249:34;8229:18;;;8222:62;-1:-1:-1;;;8300:18:1;;;8293:45;8355:19;;13021:83:0;;;;;;;;;13117:26;13129:4;13135:7;13117:11;:26::i;:::-;12933:218;;:::o;21774:270::-;9521:4;9967:30;9521:4;3685:10;9967;:30::i;:::-;21933:19:::1;::::0;23395:21;;21916:55:::1;::::0;-1:-1:-1;;;;;21933:19:0::1;23395:21:::0;21916:16:::1;:55::i;:::-;22016:19;::::0;21989:47:::1;::::0;;8741:25:1;;;-1:-1:-1;;;;;22016:19:0;;::::1;8797:2:1::0;8782:18;;8775:60;21989:47:0::1;::::0;8714:18:1;21989:47:0::1;8696:145:1::0;24068:224:0;9521:4;9967:30;9521:4;3685:10;9967;:30::i;:::-;24179:18:::1;:42:::0;;;24237:47:::1;::::0;4189:25:1;;;24237:47:0::1;::::0;4177:2:1;4162:18;24237:47:0::1;4144:76:1::0;23091:136:0;23184:9;;23177:42;;-1:-1:-1;;;23177:42:0;;23213:4;23177:42;;;3510:51:1;23138:19:0;;-1:-1:-1;;;;;23184:9:0;;23177:27;;3483:18:1;;23177:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23170:49;;23091:136;:::o;23742:230::-;9521:4;9967:30;9521:4;3685:10;9967;:30::i;:::-;23855:19:::1;:44:::0;;-1:-1:-1;;;;;;23855:44:0::1;-1:-1:-1::0;;;;;23855:44:0;::::1;::::0;;::::1;::::0;;;23915:49:::1;::::0;3510:51:1;;;23915:49:0::1;::::0;3498:2:1;3483:18;23915:49:0::1;3465:102:1::0;10385:139:0;10463:4;10487:12;;;;;;;;;;;-1:-1:-1;;;;;10487:29:0;;;;;;;;;;;;;;;10385:139::o;20611:1076::-;18945:19;9967:30;18945:19;3685:10;9967;:30::i;:::-;20686:9:::1;::::0;-1:-1:-1;;;;;20686:9:0::1;20678:71;;;::::0;-1:-1:-1;;;20678:71:0;;5410:2:1;20678:71:0::1;::::0;::::1;5392:21:1::0;5449:2;5429:18;;;5422:30;5488:34;5468:18;;;5461:62;-1:-1:-1;;;5539:18:1;;;5532:33;5582:19;;20678:71:0::1;5382:225:1::0;20678:71:0::1;20768:19;::::0;-1:-1:-1;;;;;20768:19:0::1;20760:83;;;::::0;-1:-1:-1;;;20760:83:0;;6576:2:1;20760:83:0::1;::::0;::::1;6558:21:1::0;6615:2;6595:18;;;6588:30;6654:34;6634:18;;;6627:62;-1:-1:-1;;;6705:18:1;;;6698:35;6750:19;;20760:83:0::1;6548:227:1::0;20760:83:0::1;20891:1;20870:18;;:22;20862:81;;;::::0;-1:-1:-1;;;20862:81:0;;7340:2:1;20862:81:0::1;::::0;::::1;7322:21:1::0;7379:2;7359:18;;;7352:30;7418:34;7398:18;;;7391:62;-1:-1:-1;;;7469:18:1;;;7462:44;7523:19;;20862:81:0::1;7312:236:1::0;20862:81:0::1;20991:18;;20971:17;:15;:17::i;:::-;:38;20963:86;;;::::0;-1:-1:-1;;;20963:86:0;;5814:2:1;20963:86:0::1;::::0;::::1;5796:21:1::0;5853:2;5833:18;;;5826:30;5892:34;5872:18;;;5865:62;-1:-1:-1;;;5943:18:1;;;5936:33;5986:19;;20963:86:0::1;5786:225:1::0;20963:86:0::1;21089:21;;21068:17;:15;:17::i;:::-;:42;;21060:102;;;::::0;-1:-1:-1;;;21060:102:0;;7755:2:1;21060:102:0::1;::::0;::::1;7737:21:1::0;7794:2;7774:18;;;7767:30;7833:34;7813:18;;;7806:62;-1:-1:-1;;;7884:18:1;;;7877:45;7939:19;;21060:102:0::1;7727:237:1::0;21060:102:0::1;21175:30;21247:5;21228:16;;21208:17;:15;:17::i;:::-;:36;;;;:::i;:::-;:44;;;;:::i;:::-;21175:77;;21263:20;21312:21;;21286:22;:47;;:96;;21361:21;;21286:96;;;21336:22;21286:96;21263:119;;21420:31;21438:12;21420:17;:31::i;:::-;21559:19;::::0;23395:21;;21542:55:::1;::::0;-1:-1:-1;;;;;21559:19:0::1;23395:21:::0;21542:16:::1;:55::i;:::-;21659:19;::::0;21615:64:::1;::::0;;10033:25:1;;;10089:2;10074:18;;10067:34;;;-1:-1:-1;;;;;21659:19:0;;::::1;10117:18:1::0;;;10110:60;21615:64:0;::::1;::::0;;;;10021:2:1;21615:64:0;;::::1;20665:1022;;;20611:1076:::0;:::o;22104:319::-;9521:4;9967:30;9521:4;3685:10;9967;:30::i;:::-;22273:9:::1;::::0;22266:47:::1;::::0;-1:-1:-1;;;22266:47:0;;-1:-1:-1;;;;;3764:32:1;;;22266:47:0::1;::::0;::::1;3746:51:1::0;3813:18;;;3806:34;;;22273:9:0;;::::1;::::0;22266:26:::1;::::0;3719:18:1;;22266:47:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22244:113;;;::::0;-1:-1:-1;;;22244:113:0;;6218:2:1;22244:113:0::1;::::0;::::1;6200:21:1::0;6257:2;6237:18;;;6230:30;6296:31;6276:18;;;6269:59;6345:18;;22244:113:0::1;6190:179:1::0;22244:113:0::1;22381:34;::::0;;8741:25:1;;;-1:-1:-1;;;;;8802:32:1;;8797:2;8782:18;;8775:60;22381:34:0::1;::::0;8714:18:1;22381:34:0::1;;;;;;;22104:319:::0;;;:::o;24678:237::-;9521:4;9967:30;9521:4;3685:10;9967;:30::i;:::-;24795:16:::1;:43:::0;;;24854:53:::1;::::0;4189:25:1;;;24854:53:0::1;::::0;4177:2:1;4162:18;24854:53:0::1;4144:76:1::0;12277:149:0;11566:7;11593:12;;;;;;;;;;:22;;;9967:30;9978:4;3685:10;9967;:30::i;:::-;12392:26:::1;12404:4;12410:7;12392:11;:26::i;10814:497::-:0;10895:22;10903:4;10909:7;10895;:22::i;:::-;10890:414;;11083:41;11111:7;-1:-1:-1;;;;;11083:41:0;11121:2;11083:19;:41::i;:::-;11197:38;11225:4;11232:2;11197:19;:38::i;:::-;10988:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10988:270:0;;;;;;;;;;-1:-1:-1;;;10934:358:0;;;;;;;:::i;14434:238::-;14518:22;14526:4;14532:7;14518;:22::i;:::-;14513:152;;14557:6;:12;;;;;;;;;;;-1:-1:-1;;;;;14557:29:0;;;;;;;;;:36;;-1:-1:-1;;14557:36:0;14589:4;14557:36;;;14640:12;3685:10;;3605:98;14640:12;-1:-1:-1;;;;;14613:40:0;14631:7;-1:-1:-1;;;;;14613:40:0;14625:4;14613:40;;;;;;;;;;14434:238;;:::o;14804:239::-;14888:22;14896:4;14902:7;14888;:22::i;:::-;14884:152;;;14959:5;14927:12;;;;;;;;;;;-1:-1:-1;;;;;14927:29:0;;;;;;;;;;:37;;-1:-1:-1;;14927:37:0;;;14984:40;3685:10;;14927:12;;14984:40;;14959:5;14984:40;14804:239;;:::o;24979:190::-;25088:12;;;25050;25088;;;;;;;;;-1:-1:-1;;;;;25067:7:0;;;25081:5;;25067:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25049:52;;;25120:7;25112:49;;;;-1:-1:-1;;;25112:49:0;;6982:2:1;25112:49:0;;;6964:21:1;7021:2;7001:18;;;6994:30;7060:31;7040:18;;;7033:59;7109:18;;25112:49:0;6954:179:1;22501:491:0;19062:4;19053:13;;-1:-1:-1;;19053:13:0;;;;;22604:16:::1;::::0;;22618:1:::1;22604:16:::0;;;;;::::1;::::0;;-1:-1:-1;;22604:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;22649:9:0::1;::::0;22631:7;;;;-1:-1:-1;;;;;;22649:9:0::1;::::0;22631:7;;-1:-1:-1;22649:9:0::1;::::0;22631:7:::1;;;;:::i;:::-;-1:-1:-1::0;;;;;22631:28:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:28;;;;22680:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;22680:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;22631:7;;22680:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22670:4;22675:1;22670:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22670:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;22720:9:::1;::::0;22747:15:::1;::::0;22713:64:::1;::::0;-1:-1:-1;;;22713:64:0;;22747:15;;::::1;22713:64;::::0;::::1;3746:51:1::0;3813:18;;;3806:34;;;22720:9:0;::::1;::::0;22713:25:::1;::::0;3719:18:1;;22713:64:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;22788:15:0::1;::::0;:196:::1;::::0;-1:-1:-1;;;22788:196:0;;-1:-1:-1;;;;;22788:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;22869:11;;22788:15:::1;::::0;22911:4;;22938::::1;::::0;22958:15:::1;::::0;22788:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;19089:6:0;:14;;-1:-1:-1;;19089:14:0;;;-1:-1:-1;;;;22501:491:0:o;5402:451::-;5477:13;5503:19;5535:10;5539:6;5535:1;:10;:::i;:::-;:14;;5548:1;5535:14;:::i;:::-;5525:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5525:25:0;;5503:47;;-1:-1:-1;;;5561:6:0;5568:1;5561:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5561:15:0;;;;;;;;;-1:-1:-1;;;5587:6:0;5594:1;5587:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5587:15:0;;;;;;;;-1:-1:-1;5618:9:0;5630:10;5634:6;5630:1;:10;:::i;:::-;:14;;5643:1;5630:14;:::i;:::-;5618:26;;5613:135;5650:1;5646;:5;5613:135;;;-1:-1:-1;;;5698:5:0;5706:3;5698:11;5685:25;;;;;;;:::i;:::-;;;;5673:6;5680:1;5673:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;5673:37:0;;;;;;;;-1:-1:-1;5735:1:0;5725:11;;;;;5653:3;;;:::i;:::-;;;5613:135;;;-1:-1:-1;5766:10:0;;5758:55;;;;-1:-1:-1;;;5758:55:0;;5049:2:1;5758:55:0;;;5031:21:1;;;5068:18;;;5061:30;5127:34;5107:18;;;5100:62;5179:18;;5758:55:0;5021:182:1;5758:55:0;5838:6;5402:451;-1:-1:-1;;;5402:451:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:315::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:2;;;667:1;664;657:12;619:2;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;827:2;812:18;;;;799:32;;-1:-1:-1;;;609:228:1:o;842:277::-;909:6;962:2;950:9;941:7;937:23;933:32;930:2;;;978:1;975;968:12;930:2;1010:9;1004:16;1063:5;1056:13;1049:21;1042:5;1039:32;1029:2;;1085:1;1082;1075:12;1124:180;1183:6;1236:2;1224:9;1215:7;1211:23;1207:32;1204:2;;;1252:1;1249;1242:12;1204:2;-1:-1:-1;1275:23:1;;1194:110;-1:-1:-1;1194:110:1:o;1309:315::-;1377:6;1385;1438:2;1426:9;1417:7;1413:23;1409:32;1406:2;;;1454:1;1451;1444:12;1406:2;1490:9;1477:23;1467:33;;1550:2;1539:9;1535:18;1522:32;1563:31;1588:5;1563:31;:::i;:::-;1613:5;1603:15;;;1396:228;;;;;:::o;1629:286::-;1687:6;1740:2;1728:9;1719:7;1715:23;1711:32;1708:2;;;1756:1;1753;1746:12;1708:2;1782:23;;-1:-1:-1;;;;;;1834:32:1;;1824:43;;1814:2;;1881:1;1878;1871:12;2105:184;2175:6;2228:2;2216:9;2207:7;2203:23;2199:32;2196:2;;;2244:1;2241;2234:12;2196:2;-1:-1:-1;2267:16:1;;2186:103;-1:-1:-1;2186:103:1:o;2294:274::-;2423:3;2461:6;2455:13;2477:53;2523:6;2518:3;2511:4;2503:6;2499:17;2477:53;:::i;:::-;2546:16;;;;;2431:137;-1:-1:-1;;2431:137:1:o;2573:786::-;2984:25;2979:3;2972:38;2954:3;3039:6;3033:13;3055:62;3110:6;3105:2;3100:3;3096:12;3089:4;3081:6;3077:17;3055:62;:::i;:::-;-1:-1:-1;;;3176:2:1;3136:16;;;3168:11;;;3161:40;3226:13;;3248:63;3226:13;3297:2;3289:11;;3282:4;3270:17;;3248:63;:::i;:::-;3331:17;3350:2;3327:26;;2962:397;-1:-1:-1;;;;2962:397:1:o;4459:383::-;4608:2;4597:9;4590:21;4571:4;4640:6;4634:13;4683:6;4678:2;4667:9;4663:18;4656:34;4699:66;4758:6;4753:2;4742:9;4738:18;4733:2;4725:6;4721:15;4699:66;:::i;:::-;4826:2;4805:15;-1:-1:-1;;4801:29:1;4786:45;;;;4833:2;4782:54;;4580:262;-1:-1:-1;;4580:262:1:o;8846:980::-;9108:4;9156:3;9145:9;9141:19;9187:6;9176:9;9169:25;9213:2;9251:6;9246:2;9235:9;9231:18;9224:34;9294:3;9289:2;9278:9;9274:18;9267:31;9318:6;9353;9347:13;9384:6;9376;9369:22;9422:3;9411:9;9407:19;9400:26;;9461:2;9453:6;9449:15;9435:29;;9482:1;9492:195;9506:6;9503:1;9500:13;9492:195;;;9571:13;;-1:-1:-1;;;;;9567:39:1;9555:52;;9662:15;;;;9627:12;;;;9603:1;9521:9;9492:195;;;-1:-1:-1;;;;;;;9743:32:1;;;;9738:2;9723:18;;9716:60;-1:-1:-1;;;9807:3:1;9792:19;9785:35;9704:3;9117:709;-1:-1:-1;;;9117:709:1:o;10181:128::-;10221:3;10252:1;10248:6;10245:1;10242:13;10239:2;;;10258:18;;:::i;:::-;-1:-1:-1;10294:9:1;;10229:80::o;10314:217::-;10354:1;10380;10370:2;;10424:10;10419:3;10415:20;10412:1;10405:31;10459:4;10456:1;10449:15;10487:4;10484:1;10477:15;10370:2;-1:-1:-1;10516:9:1;;10360:171::o;10536:168::-;10576:7;10642:1;10638;10634:6;10630:14;10627:1;10624:21;10619:1;10612:9;10605:17;10601:45;10598:2;;;10649:18;;:::i;:::-;-1:-1:-1;10689:9:1;;10588:116::o;10709:258::-;10781:1;10791:113;10805:6;10802:1;10799:13;10791:113;;;10881:11;;;10875:18;10862:11;;;10855:39;10827:2;10820:10;10791:113;;;10922:6;10919:1;10916:13;10913:2;;;10957:1;10948:6;10943:3;10939:16;10932:27;10913:2;;10762:205;;;:::o;10972:136::-;11011:3;11039:5;11029:2;;11048:18;;:::i;:::-;-1:-1:-1;;;11084:18:1;;11019:89::o;11113:127::-;11174:10;11169:3;11165:20;11162:1;11155:31;11205:4;11202:1;11195:15;11229:4;11226:1;11219:15;11245:127;11306:10;11301:3;11297:20;11294:1;11287:31;11337:4;11334:1;11327:15;11361:4;11358:1;11351:15;11377:127;11438:10;11433:3;11429:20;11426:1;11419:31;11469:4;11466:1;11459:15;11493:4;11490:1;11483:15;11509:131;-1:-1:-1;;;;;11584:31:1;;11574:42;;11564:2;;11630:1;11627;11620:12;11564:2;11554:86;:::o

Swarm Source

ipfs://4097e0a4637893e91f9bfde914a5df9f4f5512277ce4ae925d1b84caed5ac76a
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.