Contract 0x32dc669427066efc740e5ff0d305b0b457fdc3aa

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xffa140a946f088f2386cab0fd505764fcd1d212baa88cf632271bce283b8dac5Transfer Token37122792022-07-16 7:12:2674 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO0.197108575938 4,962.076780157
0x7359c6dc471c7fed148875fe01eee3f88f3ef72a9626f64bd800ebdcc4a915f4Break Liquidity37122602022-07-16 7:10:3874 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO0.988316856318 4,962.077662337
0x2170675a3df7ba15a3a91cfeb03353b39d0bcb1f3fc87acd0a38da11e5740d1aBreak Liquidity37122582022-07-16 7:10:2674 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.090188331817 4,962.077758338
0x06f0cfa7ea3bc2566636d3dbdbee19f63332fc10e8a1fb1dc70df108067fe4eaBreak Liquidity37122562022-07-16 7:10:1574 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.063611463889 4,962.077854186
0x1eb77f52d21a77b3c2568672a9e7b2d736907444dde7daf5d9b721352338be34Break Liquidity37122532022-07-16 7:09:5874 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.077023990009 4,962.07799093
0xfed564449b7cc5e39d7b62837a3571c2d15a5fc30218f5e939f8c42b45cfa1c3Break Liquidity37122512022-07-16 7:09:4674 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.090332304257 4,962.078086848
0x0ed2097955f21319ee05719b1cb0df4eaa0456372fc12dabab1a1ea8d8e68e65Break Liquidity37122492022-07-16 7:09:3574 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.072965051717 4,962.078182876
0xc65dd6c3c64f02b0dcd54d91dfe2cd73f78ccaff3cce17b421f4367b20a14b9aBreak Liquidity37122472022-07-16 7:09:2474 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.094659278308 4,962.078277051
0xc1a231683de3d6e18d2de20cba5cae958fbcc49b2f806be98c871736d69ca8e6Transfer Token35868702022-07-08 0:55:2882 days 14 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO0.198013888098 4,967.485025803
0xd67ce011dbdc772258460c884567e8c5679433b061110d2dd4b6e2409d2f01ecBreak Liquidity32885032022-06-18 9:10:24102 days 6 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.080316742483 4,979.749160991
0x5d6f15cd90e8190dcd5469d3e968b33b4869ffa5dd394a2073810d701552f323Break Liquidity32416382022-06-15 7:03:56105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.077171007155 4,981.5983312
0x30bcf2910240d2b6391b1e22f02c2b13b1342218a4c388ad7a159208aa243717Break Liquidity32416362022-06-15 7:03:44105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.098965516808 4,981.598408053
0x083e3653e34aa7ec2372bae3b119ce933d2246faee1209001a500257cba5bb54Break Liquidity32416342022-06-15 7:03:33105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.077185985654 4,981.598487068
0xad0ea0634529f7777929f99df70cc138b3fd50ea6b3013489db9c80195f415aeBreak Liquidity32416322022-06-15 7:03:22105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.06548422642 4,981.598560061
0x1b4dd27b567598cb2b3112bbb8e85b71138f3b10437ec94f33291d40f329b43eBreak Liquidity32416292022-06-15 7:03:05105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.0946216244 4,981.598687499
0x62293fe3cb8a11ffa475c474b482f1f8ce4d11ee78e7be7c3b42b98d359c7b27Break Liquidity32416272022-06-15 7:02:53105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.007144766348 4,981.598761201
0x969f7a94cffaa17ebcd0bef13e5ccd6130b7dd169577e3ab8ca05c83fe5ae5b2Break Liquidity32416242022-06-15 7:02:36105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.016360751 4,981.598893266
0x5dd32752b07b2cf5e6e1002e6fff9f56f06fcbbd47980e6e6e39595b4460723cBreak Liquidity32416222022-06-15 7:02:25105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.081804035672 4,981.598985414
0x82b8e2e4e9a722b9db0bf354aef239aff43944c2847c00370fae89fdb4071007Break Liquidity32416202022-06-15 7:02:14105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.071815949062 4,981.599075378
0xbe28bb6b3e9acab4d2412ce148d1e9405f256007d5cc66fa3bc519b6e66496f6Break Liquidity32416172022-06-15 7:01:57105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.08123119942 4,981.599204868
0x5bdae48d72c61e2a4a5d695161e7186397f696b14d0db1b7be23ca230942ea96Break Liquidity32416152022-06-15 7:01:45105 days 8 hrs ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.056916030575 4,981.599284402
0xec0edaa1363999c85ef583f3eda5406616fe270db93274af3ddfc9c17e69ee06Break Liquidity29888412022-05-29 14:56:55122 days 17 mins ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.094616571702 4,991.479918571
0x1287bd4744a385d2c90fb95fe82be5300ef10fb6536efe6213d97ed3cee3ec05Break Liquidity29888382022-05-29 14:56:37122 days 17 mins ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.007759851135 4,991.480025041
0x09f66523eb11a90ae9e7194b988cb32888245ec0832496605eb0ff2b81095525Break Liquidity29888362022-05-29 14:56:26122 days 17 mins ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.060110507638 4,991.480090958
0xdb88276213a7c8ce116714778511bafe4e898aa1991f088b21da75437c9567eaBreak Liquidity29888342022-05-29 14:56:14122 days 18 mins ago0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2 IN  Stronghands Money: Fee Manager0 CRO1.078234588207 4,991.480166688
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeeManager

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-05-19
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

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

    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");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (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 {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library Babylonian {
    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
        // else z = 0
    }
}

library Math {
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    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;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

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

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

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

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

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

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

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

library FixedPoint {
    // range: [0, 2**112 - 1]
    // resolution: 1 / 2**112
    struct uq112x112 {
        uint224 _x;
    }

    // range: [0, 2**144 - 1]
    // resolution: 1 / 2**112
    struct uq144x112 {
        uint256 _x;
    }

    uint8 private constant RESOLUTION = 112;
    uint256 private constant Q112 = uint256(1) << RESOLUTION;
    uint256 private constant Q224 = Q112 << RESOLUTION;

    // encode a uint112 as a UQ112x112
    function encode(uint112 x) internal pure returns (uq112x112 memory) {
        return uq112x112(uint224(x) << RESOLUTION);
    }

    // encodes a uint144 as a UQ144x112
    function encode144(uint144 x) internal pure returns (uq144x112 memory) {
        return uq144x112(uint256(x) << RESOLUTION);
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function div(uq112x112 memory self, uint112 x) internal pure returns (uq112x112 memory) {
        require(x != 0, "FixedPoint: DIV_BY_ZERO");
        return uq112x112(self._x / uint224(x));
    }

    // multiply a UQ112x112 by a uint, returning a UQ144x112
    // reverts on overflow
    function mul(uq112x112 memory self, uint256 y) internal pure returns (uq144x112 memory) {
        uint256 z;
        require(y == 0 || (z = uint256(self._x) * y) / y == uint256(self._x), "FixedPoint: MULTIPLICATION_OVERFLOW");
        return uq144x112(z);
    }

    // returns a UQ112x112 which represents the ratio of the numerator to the denominator
    // equivalent to encode(numerator).div(denominator)
    function fraction(uint112 numerator, uint112 denominator) internal pure returns (uq112x112 memory) {
        require(denominator > 0, "FixedPoint: DIV_BY_ZERO");
        return uq112x112((uint224(numerator) << RESOLUTION) / denominator);
    }

    // decode a UQ112x112 into a uint112 by truncating after the radix point
    function decode(uq112x112 memory self) internal pure returns (uint112) {
        return uint112(self._x >> RESOLUTION);
    }

    // decode a UQ144x112 into a uint144 by truncating after the radix point
    function decode144(uq144x112 memory self) internal pure returns (uint144) {
        return uint144(self._x >> RESOLUTION);
    }

    // take the reciprocal of a UQ112x112
    function reciprocal(uq112x112 memory self) internal pure returns (uq112x112 memory) {
        require(self._x != 0, "FixedPoint: ZERO_RECIPROCAL");
        return uq112x112(uint224(Q224 / self._x));
    }

    // square root of a UQ112x112
    function sqrt(uq112x112 memory self) internal pure returns (uq112x112 memory) {
        return uq112x112(uint224(Babylonian.sqrt(uint256(self._x)) << 56));
    }
}

library SwapLibrary {
    using SafeMath for uint256;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, "SwapLibrary: IDENTICAL_ADDRESSES");
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), "SwapLibrary: ZERO_ADDRESS");
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(
        address factory,
        address tokenA,
        address tokenB
    ) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(
            uint256(
                keccak256(
                    abi.encodePacked(
                        hex"ff",
                        factory,
                        keccak256(abi.encodePacked(token0, token1)),
                        hex"d6569072202055363469dfae94a01f8dfe2b7af06d867f3f2ddf4d95a9d2a716" // init code hash
                    )
                )
            )
        );
    }

    // fetches and sorts the reserves for a pair
    function getReserves(
        address factory,
        address tokenA,
        address tokenB
    ) internal view returns (uint256 reserveA, uint256 reserveB) {
        (address token0, ) = sortTokens(tokenA, tokenB);
        (uint256 reserve0, uint256 reserve1, ) = ISwapPair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) internal pure returns (uint256 amountB) {
        require(amountA > 0, "SwapLibrary: INSUFFICIENT_AMOUNT");
        require(reserveA > 0 && reserveB > 0, "SwapLibrary: INSUFFICIENT_LIQUIDITY");
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) internal pure returns (uint256 amountOut) {
        require(amountIn > 0, "SwapLibrary: INSUFFICIENT_INPUT_AMOUNT");
        require(reserveIn > 0 && reserveOut > 0, "SwapLibrary: INSUFFICIENT_LIQUIDITY");
        uint256 amountInWithFee = amountIn.mul(997);
        uint256 numerator = amountInWithFee.mul(reserveOut);
        uint256 denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) internal pure returns (uint256 amountIn) {
        require(amountOut > 0, "SwapLibrary: INSUFFICIENT_OUTPUT_AMOUNT");
        require(reserveIn > 0 && reserveOut > 0, "SwapLibrary: INSUFFICIENT_LIQUIDITY");
        uint256 numerator = reserveIn.mul(amountOut).mul(1000);
        uint256 denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(
        address factory,
        uint256 amountIn,
        address[] memory path
    ) internal view returns (uint256[] memory amounts) {
        require(path.length >= 2, "SwapLibrary: INVALID_PATH");
        amounts = new uint256[](path.length);
        amounts[0] = amountIn;
        for (uint256 i; i < path.length - 1; i++) {
            (uint256 reserveIn, uint256 reserveOut) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(
        address factory,
        uint256 amountOut,
        address[] memory path
    ) internal view returns (uint256[] memory amounts) {
        require(path.length >= 2, "SwapLibrary: INVALID_PATH");
        amounts = new uint256[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint256 i = path.length - 1; i > 0; i--) {
            (uint256 reserveIn, uint256 reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}

library SwapOracleLibrary {
    using FixedPoint for *;

    // helper function that returns the current block timestamp within the range of uint32, i.e. [0, 2**32 - 1]
    function currentBlockTimestamp() internal view returns (uint32) {
        return uint32(block.timestamp % 2**32);
    }

    // produces the cumulative price using counterfactuals to save gas and avoid a call to sync.
    function currentCumulativePrices(address pair)
        internal
        view
        returns (
            uint256 price0Cumulative,
            uint256 price1Cumulative,
            uint32 blockTimestamp
        )
    {
        blockTimestamp = currentBlockTimestamp();
        price0Cumulative = ISwapPair(pair).price0CumulativeLast();
        price1Cumulative = ISwapPair(pair).price1CumulativeLast();

        // if time has elapsed since the last update on the pair, mock the accumulated price values
        (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) = ISwapPair(pair).getReserves();
        if (blockTimestampLast != blockTimestamp) {
            // subtraction overflow is desired
            uint32 timeElapsed = blockTimestamp - blockTimestampLast;
            // addition overflow is desired
            // counterfactual
            price0Cumulative += uint256(FixedPoint.fraction(reserve1, reserve0)._x) * timeElapsed;
            // counterfactual
            price1Cumulative += uint256(FixedPoint.fraction(reserve0, reserve1)._x) * timeElapsed;
        }
    }
}

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface ISwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface ISwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface ISwapRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(
        address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline
    ) external returns (uint[] memory amounts);
    
    function swapExactETHForTokens(
        uint amountOutMin, address[] calldata path, address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    
    function swapTokensForExactETH(
        uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline
    ) external returns (uint[] memory amounts);
    
    function swapExactTokensForETH(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
    ) external returns (uint[] memory amounts);
    
    function swapETHForExactTokens(
        uint amountOut, address[] calldata path, address to, uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface ISwapRouter02 is ISwapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin, address[] calldata path, address to, uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
    ) external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () internal {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

contract Whitelist is Ownable {
    mapping(address => bool) public whitelist;

    event WhitelistedAddressAdded(address addr);
    event WhitelistedAddressRemoved(address addr);

    modifier onlyWhitelisted() {
        require(whitelist[msg.sender], 'no whitelist');
        _;
    }

    function addAddressToWhitelist(address addr) onlyOwner public returns(bool success) {
        if (!whitelist[addr]) {
            whitelist[addr] = true;
            emit WhitelistedAddressAdded(addr);
            success = true;
        }
    }

    function addAddressesToWhitelist(address[] memory addrs) onlyOwner public returns(bool success) {
        for (uint256 i = 0; i < addrs.length; i++) {
            if (addAddressToWhitelist(addrs[i])) {
                success = true;
            }
        }
        return success;
    }

    function removeAddressFromWhitelist(address addr) onlyOwner public returns(bool success) {
        if (whitelist[addr]) {
            whitelist[addr] = false;
            emit WhitelistedAddressRemoved(addr);
            success = true;
        }
        return success;
    }

    function removeAddressesFromWhitelist(address[] memory addrs) onlyOwner public returns(bool success) {
        for (uint256 i = 0; i < addrs.length; i++) {
            if (removeAddressFromWhitelist(addrs[i])) {
                success = true;
            }
        }
        return success;
    }
}

abstract contract Pausable is Context {

    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    constructor () internal {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

contract FeeManager is Pausable, Whitelist {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    ////////////////
    // INTERFACES //
    ////////////////

    ISwapRouter02 public router;

    ///////////////////////////////
    // CONFIGURABLES & VARIABLES //
    ///////////////////////////////

    address public devWallet;
    address public feeSplitter;

    /////////////////////
    // CONTRACT EVENTS //
    /////////////////////

    event onRemoveLiquidityToToken(address indexed _caller, address _token, uint256 _amount, uint256 _timestamp);

    event onSwapBalanceToToken(address indexed _caller, address _token0, address _token1, uint256 _amount, uint256 _timestamp);
    event onSwapAmountToToken(address indexed _caller, address _token0, address _token1, uint256 _amount, uint256 _timestamp);

    event onDistributeFee(address indexed _caller, address _token, uint256 _amount, uint256 _devFee, uint256 _timestamp);
    
    event onTransferToken(address indexed _caller, address _recipient, address _token, uint256 _amount, uint256 _timestamp);
    event onTransferEther(address indexed _caller, address _recipient, uint256 _amount, uint256 _timestamp);

    event onSetRouter(address indexed _caller, address _router, uint256 _timestamp);
    event onSetFeeSplitter(address indexed _caller, address _splitter, uint256 _timestamp);

    ////////////////////////////
    // CONSTRUCTOR & FALLBACK //
    ////////////////////////////

    constructor (address _devWallet, address _router, address _splitter) public {
        devWallet = _devWallet;
        feeSplitter = _splitter;
        router = ISwapRouter02(_router);
    }

    receive () payable external {

    }

    /////////////////////
    // WRITE FUNCTIONS //
    /////////////////////

    // Break LP Token into its two respective halves
    function breakLiquidity(address _token) external onlyWhitelisted returns (bool _success) {
        ISwapPair _pair = ISwapPair(_token);
        uint256 _amount = _pair.balanceOf(address(this));
        address token0 = _pair.token0();
        address token1 = _pair.token1();

        _pair.approve(address(router), _amount);
        router.removeLiquidity(token0, token1, _amount, 0, 0, address(this), block.timestamp.add(100));

        emit onRemoveLiquidityToToken(msg.sender, _token, _amount, block.timestamp);
        return true;
    }

    // Swap this contract's balance of a token, for another token
    function swapBalanceToToken(address _token0, address _token1) external onlyWhitelisted returns (bool _success) {
        uint256 _amount = IERC20(_token0).balanceOf(address(this));
        IERC20(_token0).approve(address(router), _amount);
        address[] memory path = new address[](2);
        path[0] = _token0;
        path[1] = _token1;
        router.swapExactTokensForTokens(_amount, 0, path, address(this), block.timestamp.add(100));

        emit onSwapBalanceToToken(msg.sender, _token0, _token1, _amount, block.timestamp);
        return true;
    }

    // Swap an amount of one token, for another token
    function swapAmountToToken(address _token0, address _token1, uint256 _token0Amount) external onlyWhitelisted returns (bool _success) {
        IERC20(_token0).approve(address(router), _token0Amount);
        address[] memory path = new address[](2);
        path[0] = _token0;
        path[1] = _token1;
        router.swapExactTokensForTokens(_token0Amount, 0, path, address(this), block.timestamp.add(100));

        emit onSwapAmountToToken(msg.sender, _token0, _token1, _token0Amount, block.timestamp);
        return true;
    }

    // Send a token to the Fee Splitter
    function distributeFee(address _token, bool _payDev) external onlyWhitelisted returns (bool _success) {
        
        // Get a handle on the token
        IERC20 tkn = IERC20(_token);

        // Find the token balance in this contract
        uint256 _amount = tkn.balanceOf(address(this));
        uint256 _devFee = (_amount.mul(10).div(10000)); // 0.1% of every token distributed
        uint256 _tokens = (_amount.sub(_devFee));

        // Transfer balance to the FeeSplitter
        tkn.safeTransfer(feeSplitter, _tokens);

        // If the distribution should pay the protocol developer, make it so...
        if (_payDev == true) {
            tkn.safeTransfer(devWallet, _devFee);

            // But if not, that's okay too.
        } else {
            tkn.safeTransfer(feeSplitter, _devFee);
        }
        
        emit onDistributeFee(msg.sender, _token, _amount, _devFee, block.timestamp);
        return true;
    }

    //////////////////////////
    // OWNER-ONLY FUNCTIONS //
    //////////////////////////

    // Transfer ether to another address
    function transferEther(address _recipient, uint256 _amount) external onlyOwner returns (bool _success) {
        payable(_recipient).transfer(_amount);

        emit onTransferEther(msg.sender, _recipient, _amount, block.timestamp);
        return true;
    }

    // Transfer tokens to another address
    function transferToken(address _token, address _recipient, uint256 _amount) external onlyOwner returns (bool _success) {
        require(_recipient != address(0) && _recipient != address(this), "INVALID_ADDRESS");

        IERC20(_token).transfer(_recipient, _amount);

        emit onTransferToken(msg.sender, _recipient, _token, _amount, block.timestamp);
        return true;
    }

    // Set a new router contract (UPGRADES ONLY)
    function setRouter(address _router) external onlyOwner returns (bool _success) {
        router = ISwapRouter02(_router);

        emit onSetRouter(msg.sender, _router, block.timestamp);
        return true;
    }

    // Set a new fee splitter contract (UPGRADES ONLY)
    function setFeeSplitter(address _splitter) external onlyOwner returns (bool _success) {
        feeSplitter = _splitter;

        emit onSetFeeSplitter(msg.sender, _splitter, block.timestamp);
        return true;
    }

    ////////////////////
    // VIEW FUNCTIONS //
    ////////////////////

    // Get token balance of this contract
    function tokenBalanceOf(address _token) public view returns (uint256 _balance) {
        return (IERC20(_token).balanceOf(address(this)));
    }

    //////////////////////////////////
    // INTERNAL & PRIVATE FUNCTIONS //
    //////////////////////////////////

    function _removeLiquidity(address _pair, address tokenA, address tokenB, uint liquidity, address to) internal returns (uint amountA, uint amountB) {
        ISwapPair(_pair).transferFrom(msg.sender, _pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = ISwapPair(_pair).burn(to);
        (address token0,) = SwapLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
    }

    function safeApprove(address _token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = _token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address _token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = _token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address _token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = _token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_splitter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"WhitelistedAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"WhitelistedAddressRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_devFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onDistributeFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onRemoveLiquidityToToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_splitter","type":"address"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onSetFeeSplitter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_router","type":"address"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onSetRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_token0","type":"address"},{"indexed":false,"internalType":"address","name":"_token1","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onSwapAmountToToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_token0","type":"address"},{"indexed":false,"internalType":"address","name":"_token1","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onSwapBalanceToToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onTransferEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"address","name":"_recipient","type":"address"},{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"onTransferToken","type":"event"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addAddressToWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"addAddressesToWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"breakLiquidity","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_payDev","type":"bool"}],"name":"distributeFee","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSplitter","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removeAddressFromWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"removeAddressesFromWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract ISwapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_splitter","type":"address"}],"name":"setFeeSplitter","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint256","name":"_token0Amount","type":"uint256"}],"name":"swapAmountToToken","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"swapBalanceToToken","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"tokenBalanceOf","outputs":[{"internalType":"uint256","name":"_balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferEther","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferToken","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b50604051620036f8380380620036f8833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060008060006101000a81548160ff021916908315150217905550600062000088620001f360201b60201c565b905080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001fb565b600033905090565b6134ed806200020b6000396000f3fe60806040526004361061012e5760003560e01c8063b11bbca3116100ab578063e2ec6ec31161006f578063e2ec6ec3146106f1578063e42c08f2146107cc578063f2fde38b14610831578063f3d61fc414610882578063f5537ede14610913578063f887ea40146109a457610135565b8063b11bbca3146104c2578063b17fb9d614610529578063b898ff8214610590578063c0d7865514610617578063d2ff7ffc1461067e57610135565b8063715018a6116100f2578063715018a61461035b5780637b9417c8146103725780638da5cb5b146103d95780638ea5220f1461041a5780639b19251a1461045b57610135565b806305b1137b1461013a57806324953eaa146101ab578063286dd3f5146102865780635c975abb146102ed5780636052970c1461031a57610135565b3661013557005b600080fd5b34801561014657600080fd5b506101936004803603604081101561015d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e5565b60405180821515815260200191505060405180910390f35b3480156101b757600080fd5b5061026e600480360360208110156101ce57600080fd5b81019080803590602001906401000000008111156101eb57600080fd5b8201836020820111156101fd57600080fd5b8035906020019184602083028401116401000000008311171561021f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b5b565b60405180821515815260200191505060405180910390f35b34801561029257600080fd5b506102d5600480360360208110156102a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c51565b60405180821515815260200191505060405180910390f35b3480156102f957600080fd5b50610302610e03565b60405180821515815260200191505060405180910390f35b34801561032657600080fd5b5061032f610e19565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036757600080fd5b50610370610e3f565b005b34801561037e57600080fd5b506103c16004803603602081101561039557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fae565b60405180821515815260200191505060405180910390f35b3480156103e557600080fd5b506103ee61115e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042657600080fd5b5061042f611187565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561046757600080fd5b506104aa6004803603602081101561047e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ad565b60405180821515815260200191505060405180910390f35b3480156104ce57600080fd5b50610511600480360360208110156104e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111cd565b60405180821515815260200191505060405180910390f35b34801561053557600080fd5b506105786004803603602081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116d4565b60405180821515815260200191505060405180910390f35b34801561059c57600080fd5b506105ff600480360360408110156105b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061183b565b60405180821515815260200191505060405180910390f35b34801561062357600080fd5b506106666004803603602081101561063a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc1565b60405180821515815260200191505060405180910390f35b34801561068a57600080fd5b506106d9600480360360408110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f28565b60405180821515815260200191505060405180910390f35b3480156106fd57600080fd5b506107b46004803603602081101561071457600080fd5b810190808035906020019064010000000081111561073157600080fd5b82018360208201111561074357600080fd5b8035906020019184602083028401116401000000008311171561076557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061225b565b60405180821515815260200191505060405180910390f35b3480156107d857600080fd5b5061081b600480360360208110156107ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612351565b6040518082815260200191505060405180910390f35b34801561083d57600080fd5b506108806004803603602081101561085457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fc565b005b34801561088e57600080fd5b506108fb600480360360608110156108a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125f1565b60405180821515815260200191505060405180910390f35b34801561091f57600080fd5b5061098c6004803603606081101561093657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ad1565b60405180821515815260200191505060405180910390f35b3480156109b057600080fd5b506109b9612da7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006109ef612dcd565b73ffffffffffffffffffffffffffffffffffffffff16610a0d61115e565b73ffffffffffffffffffffffffffffffffffffffff1614610a96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610adc573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f5859f0ec24e5eec23df93e77e78c14b2824ca84121b861606859353081ce69b1848442604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a26001905092915050565b6000610b65612dcd565b73ffffffffffffffffffffffffffffffffffffffff16610b8361115e565b73ffffffffffffffffffffffffffffffffffffffff1614610c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8251811015610c4b57610c34838281518110610c2757fe5b6020026020010151610c51565b15610c3e57600191505b8080600101915050610c0f565b50919050565b6000610c5b612dcd565b73ffffffffffffffffffffffffffffffffffffffff16610c7961115e565b73ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dfe576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600190505b919050565b60008060009054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e47612dcd565b73ffffffffffffffffffffffffffffffffffffffff16610e6561115e565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610fb8612dcd565b73ffffffffffffffffffffffffffffffffffffffff16610fd661115e565b73ffffffffffffffffffffffffffffffffffffffff161461105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111595760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600190505b919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f2077686974656c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d602081101561132657600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561138157600080fd5b505afa158015611395573d6000803e3d6000fd5b505050506040513d60208110156113ab57600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561140657600080fd5b505afa15801561141a573d6000803e3d6000fd5b505050506040513d602081101561143057600080fd5b810190808051906020019092919050505090508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b505050506040513d602081101561150057600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde8383866000803061156b606442612dd590919063ffffffff16565b6040518863ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019750505050505050506040805180830381600087803b15801561160c57600080fd5b505af1158015611620573d6000803e3d6000fd5b505050506040513d604081101561163657600080fd5b81019080805190602001909291908051906020019092919050505050503373ffffffffffffffffffffffffffffffffffffffff167f960921ea96565a713b16f9ebc68223fc113abc14295cbb5dc1b15cad02f2a538878542604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a26001945050505050919050565b60006116de612dcd565b73ffffffffffffffffffffffffffffffffffffffff166116fc61115e565b73ffffffffffffffffffffffffffffffffffffffff1614611785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fc9a4ee667fd18c5a95a04364e8ae438d17f95b4230a556ff266ea019d349a3138342604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a260019050919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f2077686974656c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561196557600080fd5b505afa158015611979573d6000803e3d6000fd5b505050506040513d602081101561198f57600080fd5b810190808051906020019092919050505090508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611a3557600080fd5b505af1158015611a49573d6000803e3d6000fd5b505050506040513d6020811015611a5f57600080fd5b8101908080519060200190929190505050506060600267ffffffffffffffff81118015611a8b57600080fd5b50604051908082528060200260200182016040528015611aba5781602001602082028036833780820191505090505b5090508481600081518110611acb57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611b1357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed17398360008430611ba4606442612dd590919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c24578082015181840152602081019050611c09565b505050509050019650505050505050600060405180830381600087803b158015611c4d57600080fd5b505af1158015611c61573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611c8b57600080fd5b8101908080516040519392919084640100000000821115611cab57600080fd5b83820191506020820185811115611cc157600080fd5b8251866020820283011164010000000082111715611cde57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611d15578082015181840152602081019050611cfa565b50505050905001604052505050503373ffffffffffffffffffffffffffffffffffffffff167f8fd67f01d32a179e69bc4c29d5d908ba681b38c3914fc16a46396a3f506ceb6986868542604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a260019250505092915050565b6000611dcb612dcd565b73ffffffffffffffffffffffffffffffffffffffff16611de961115e565b73ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f510adbacb2ffdc391a9559518acfd42e5967d65d0f301ff41979f36ee847e5ea8342604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a260019050919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f2077686974656c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b600083905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561205757600080fd5b505afa15801561206b573d6000803e3d6000fd5b505050506040513d602081101561208157600080fd5b8101908080519060200190929190505050905060006120be6127106120b0600a85612e5d90919063ffffffff16565b612ee390919063ffffffff16565b905060006120d58284612f6c90919063ffffffff16565b9050612124600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828673ffffffffffffffffffffffffffffffffffffffff16612fef9092919063ffffffff16565b6001151586151514156121835761217e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838673ffffffffffffffffffffffffffffffffffffffff16612fef9092919063ffffffff16565b6121d1565b6121d0600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838673ffffffffffffffffffffffffffffffffffffffff16612fef9092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167f473a3387ec1e5c1efcef0b3c64942dc04b8241ac603b61518abd48cd51d457ac88858542604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a2600194505050505092915050565b6000612265612dcd565b73ffffffffffffffffffffffffffffffffffffffff1661228361115e565b73ffffffffffffffffffffffffffffffffffffffff161461230c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b825181101561234b5761233483828151811061232757fe5b6020026020010151610fae565b1561233e57600191505b808060010191505061230f565b50919050565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123ba57600080fd5b505afa1580156123ce573d6000803e3d6000fd5b505050506040513d60208110156123e457600080fd5b81019080805190602001909291905050509050919050565b612404612dcd565b73ffffffffffffffffffffffffffffffffffffffff1661242261115e565b73ffffffffffffffffffffffffffffffffffffffff16146124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612531576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134216026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f2077686974656c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561274557600080fd5b505af1158015612759573d6000803e3d6000fd5b505050506040513d602081101561276f57600080fd5b8101908080519060200190929190505050506060600267ffffffffffffffff8111801561279b57600080fd5b506040519080825280602002602001820160405280156127ca5781602001602082028036833780820191505090505b50905084816000815181106127db57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061282357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173984600084306128b4606442612dd590919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612934578082015181840152602081019050612919565b505050509050019650505050505050600060405180830381600087803b15801561295d57600080fd5b505af1158015612971573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561299b57600080fd5b81019080805160405193929190846401000000008211156129bb57600080fd5b838201915060208201858111156129d157600080fd5b82518660208202830111640100000000821117156129ee57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612a25578082015181840152602081019050612a0a565b50505050905001604052505050503373ffffffffffffffffffffffffffffffffffffffff167f1ca67f025b0d9e9587feea576a4ba28a12be50606d1415690a1c4a73216a910886868642604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a260019150509392505050565b6000612adb612dcd565b73ffffffffffffffffffffffffffffffffffffffff16612af961115e565b73ffffffffffffffffffffffffffffffffffffffff1614612b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612beb57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f494e56414c49445f41444452455353000000000000000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612cce57600080fd5b505af1158015612ce2573d6000803e3d6000fd5b505050506040513d6020811015612cf857600080fd5b8101908080519060200190929190505050503373ffffffffffffffffffffffffffffffffffffffff167f175ce9a241008685761e7fed3e7a9d434f11121d6c73d2daec866634c1f1342b84868542604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a2600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600080828401905083811015612e53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415612e705760009050612edd565b6000828402905082848281612e8157fe5b0414612ed8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061346d6021913960400191505060405180910390fd5b809150505b92915050565b6000808211612f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381612f6357fe5b04905092915050565b600082821115612fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b61308c8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613091565b505050565b60606130f3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166131809092919063ffffffff16565b905060008151111561317b5780806020019051602081101561311457600080fd5b810190808051906020019092919050505061317a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061348e602a913960400191505060405180910390fd5b5b505050565b606061318f8484600085613198565b90509392505050565b6060824710156131f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134476026913960400191505060405180910390fd5b6131fc85613341565b61326e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106132be578051825260208201915060208101905060208303925061329b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613320576040519150601f19603f3d011682016040523d82523d6000602084013e613325565b606091505b5091509150613335828286613354565b92505050949350505050565b600080823b905060008111915050919050565b6060831561336457829050613419565b6000835111156133775782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133de5780820151818401526020810190506133c3565b50505050905090810190601f16801561340b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122064f2d6af8846a1e3e169861db728338aad0c5119cfae752354c0c8dba9c3497064736f6c634300060c00330000000000000000000000004d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2000000000000000000000000fc0d2d06efe8d44f3eecc8e1df7c1509f7ba8e31000000000000000000000000b7fd7c5a90387f5e7394d42e544365c3474eb651

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

0000000000000000000000004d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2000000000000000000000000fc0d2d06efe8d44f3eecc8e1df7c1509f7ba8e31000000000000000000000000b7fd7c5a90387f5e7394d42e544365c3474eb651

-----Decoded View---------------
Arg [0] : _devWallet (address): 0x4d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2
Arg [1] : _router (address): 0xfc0d2d06efe8d44f3eecc8e1df7c1509f7ba8e31
Arg [2] : _splitter (address): 0xb7fd7c5a90387f5e7394d42e544365c3474eb651

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000004d0df886f42baf7aeb22b66e5f4b6d46f6ef81f2
Arg [1] : 000000000000000000000000fc0d2d06efe8d44f3eecc8e1df7c1509f7ba8e31
Arg [2] : 000000000000000000000000b7fd7c5a90387f5e7394d42e544365c3474eb651


Deployed ByteCode Sourcemap

29459:8371:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34319:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28379:304;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28088:283;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29112:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29825:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26390:148;;;;;;;;;;;;;:::i;:::-;;27527:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26167:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29794:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27261:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31355:553;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35365:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31983:572;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35083:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33209:962;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27786:294;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35720:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26546:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32618:542;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34634:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29645:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34319:264;34407:13;26313:12;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34441:10:::1;34433:28;;:37;34462:7;34433:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34504:10;34488:65;;;34516:10;34528:7;34537:15;34488:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34571:4;34564:11;;34319:264:::0;;;;:::o;28379:304::-;28466:12;26313;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28496:9:::1;28491:160;28515:5;:12;28511:1;:16;28491:160;;;28553:36;28580:5;28586:1;28580:8;;;;;;;;;;;;;;28553:26;:36::i;:::-;28549:91;;;28620:4;28610:14;;28549:91;28529:3;;;;;;;28491:160;;;;28379:304:::0;;;:::o;28088:283::-;28163:12;26313;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28192:9:::1;:15;28202:4;28192:15;;;;;;;;;;;;;;;;;;;;;;;;;28188:151;;;28242:5;28224:9;:15;28234:4;28224:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;28267:31;28293:4;28267:31;;;;;;;;;;;;;;;;;;;;28323:4;28313:14;;28188:151;28088:283:::0;;;:::o;29112:86::-;29159:4;29183:7;;;;;;;;;;;29176:14;;29112:86;:::o;29825:26::-;;;;;;;;;;;;;:::o;26390:148::-;26313:12;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26497:1:::1;26460:40;;26481:6;;;;;;;;;;;26460:40;;;;;;;;;;;;26528:1;26511:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;26390:148::o:0;27527:251::-;27597:12;26313;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27627:9:::1;:15;27637:4;27627:15;;;;;;;;;;;;;;;;;;;;;;;;;27622:149;;27677:4;27659:9:::0;:15:::1;27669:4;27659:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;27701:29;27725:4;27701:29;;;;;;;;;;;;;;;;;;;;27755:4;27745:14;;27622:149;27527:251:::0;;;:::o;26167:87::-;26213:7;26240:6;;;;;;;;;;;26233:13;;26167:87;:::o;29794:24::-;;;;;;;;;;;;;:::o;27261:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;31355:553::-;31429:13;27461:9;:21;27471:10;27461:21;;;;;;;;;;;;;;;;;;;;;;;;;27453:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31455:15:::1;31483:6;31455:35;;31501:15;31519:5;:15;;;31543:4;31519:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;31501:48;;31560:14;31577:5;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;31560:31;;31602:14;31619:5;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;31602:31;;31646:5;:13;;;31668:6;;;;;;;;;;;31677:7;31646:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;31696:6;;;;;;;;;;;:22;;;31719:6;31727;31735:7;31744:1;31747::::0;31758:4:::1;31765:24;31785:3;31765:15;:19;;:24;;;;:::i;:::-;31696:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31833:10;31808:70;;;31845:6;31853:7;31862:15;31808:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31896:4;31889:11;;;;;;31355:553:::0;;;:::o;35365:224::-;35436:13;26313:12;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35476:9:::1;35462:11;;:23;;;;;;;;;;;;;;;;;;35520:10;35503:56;;;35532:9;35543:15;35503:56;;;;;;;;;;;;;;;;;;;;;;;;;;35577:4;35570:11;;35365:224:::0;;;:::o;31983:572::-;32079:13;27461:9;:21;27471:10;27461:21;;;;;;;;;;;;;;;;;;;;;;;;;27453:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32105:15:::1;32130:7;32123:25;;;32157:4;32123:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;32105:58;;32181:7;32174:23;;;32206:6;;;;;;;;;;;32215:7;32174:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;32234:21;32272:1;32258:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32234:40;;32295:7;32285:4;32290:1;32285:7;;;;;;;;;;;;;:17;;;;;;;;;::::0;::::1;32323:7;32313:4;32318:1;32313:7;;;;;;;;;;;;;:17;;;;;;;;;::::0;::::1;32341:6;;;;;;;;;;;:31;;;32373:7;32382:1;32385:4;32399;32406:24;32426:3;32406:15;:19;;:24;;;;:::i;:::-;32341:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;32470:10;32449:76;;;32482:7;32491;32500;32509:15;32449:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32543:4;32536:11;;;;31983:572:::0;;;;:::o;35083:218::-;35147:13;26313:12;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35196:7:::1;35173:6;;:31;;;;;;;;;;;;;;;;;;35234:10;35222:49;;;35246:7;35255:15;35222:49;;;;;;;;;;;;;;;;;;;;;;;;;;35289:4;35282:11;;35083:218:::0;;;:::o;33209:962::-;33296:13;27461:9;:21;27471:10;27461:21;;;;;;;;;;;;;;;;;;;;;;;;;27453:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33370:10:::1;33390:6;33370:27;;33462:15;33480:3;:13;;;33502:4;33480:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;33462:46;;33519:15;33538:26;33558:5;33538:15;33550:2;33538:7;:11;;:15;;;;:::i;:::-;:19;;:26;;;;:::i;:::-;33519:46;;33611:15;33630:20;33642:7;33630;:11;;:20;;;;:::i;:::-;33611:40;;33712:38;33729:11;;;;;;;;;;;33742:7;33712:3;:16;;;;:38;;;;;:::i;:::-;33859:4;33848:15;;:7;:15;;;33844:202;;;33880:36;33897:9;;;;;;;;;;;33908:7;33880:3;:16;;;;:36;;;;;:::i;:::-;33844:202;;;33996:38;34013:11;;;;;;;;;;;34026:7;33996:3;:16;;;;:38;;;;;:::i;:::-;33844:202;34087:10;34071:70;;;34099:6;34107:7;34116;34125:15;34071:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34159:4;34152:11;;;;;;33209:962:::0;;;;:::o;27786:294::-;27868:12;26313;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27898:9:::1;27893:155;27917:5;:12;27913:1;:16;27893:155;;;27955:31;27977:5;27983:1;27977:8;;;;;;;;;;;;;;27955:21;:31::i;:::-;27951:86;;;28017:4;28007:14;;27951:86;27931:3;;;;;;;27893:155;;;;27786:294:::0;;;:::o;35720:146::-;35781:16;35825:6;35818:24;;;35851:4;35818:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35810:48;;35720:146;;;:::o;26546:244::-;26313:12;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26655:1:::1;26635:22;;:8;:22;;;;26627:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26745:8;26716:38;;26737:6;;;;;;;;;;;26716:38;;;;;;;;;;;;26774:8;26765:6;;:17;;;;;;;;;;;;;;;;;;26546:244:::0;:::o;32618:542::-;32736:13;27461:9;:21;27471:10;27461:21;;;;;;;;;;;;;;;;;;;;;;;;;27453:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32769:7:::1;32762:23;;;32794:6;;;;;;;;;;;32803:13;32762:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;32828:21;32866:1;32852:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32828:40;;32889:7;32879:4;32884:1;32879:7;;;;;;;;;;;;;:17;;;;;;;;;::::0;::::1;32917:7;32907:4;32912:1;32907:7;;;;;;;;;;;;;:17;;;;;;;;;::::0;::::1;32935:6;;;;;;;;;;;:31;;;32967:13;32982:1;32985:4;32999;33006:24;33026:3;33006:15;:19;;:24;;;;:::i;:::-;32935:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;33069:10;33049:81;;;33081:7;33090;33099:13;33114:15;33049:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33148:4;33141:11;;;32618:542:::0;;;;;:::o;34634:391::-;34738:13;26313:12;:10;:12::i;:::-;26302:23;;:7;:5;:7::i;:::-;:23;;;26294:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34794:1:::1;34772:24;;:10;:24;;;;:55;;;;;34822:4;34800:27;;:10;:27;;;;34772:55;34764:83;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;34867:6;34860:23;;;34884:10;34896:7;34860:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;34938:10;34922:73;;;34950:10;34962:6;34970:7;34979:15;34922:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35013:4;35006:11;;34634:391:::0;;;;;:::o;29645:27::-;;;;;;;;;;;;;:::o;25594:106::-;25647:15;25682:10;25675:17;;25594:106;:::o;5048:179::-;5106:7;5126:9;5142:1;5138;:5;5126:17;;5167:1;5162;:6;;5154:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5218:1;5211:8;;;5048:179;;;;:::o;5401:220::-;5459:7;5488:1;5483;:6;5479:20;;;5498:1;5491:8;;;;5479:20;5510:9;5526:1;5522;:5;5510:17;;5555:1;5550;5546;:5;;;;;;:10;5538:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5612:1;5605:8;;;5401:220;;;;;:::o;5629:153::-;5687:7;5719:1;5715;:5;5707:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:1;5769;:5;;;;;;5762:12;;5629:153;;;;:::o;5235:158::-;5293:7;5326:1;5321;:6;;5313:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5384:1;5380;:5;5373:12;;5235:158;;;;:::o;6560:177::-;6643:86;6663:5;6693:23;;;6718:2;6722:5;6670:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:19;:86::i;:::-;6560:177;;;:::o;7924:333::-;8005:23;8031:69;8059:4;8031:69;;;;;;;;;;;;;;;;;8039:5;8031:27;;;;:69;;;;;:::i;:::-;8005:95;;8135:1;8115:10;:17;:21;8111:139;;;8172:10;8161:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8153:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8111:139;7924:333;;;:::o;771:195::-;874:12;906:52;928:6;936:4;942:1;945:12;906:21;:52::i;:::-;899:59;;771:195;;;;;:::o;1208:468::-;1335:12;1393:5;1368:21;:30;;1360:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1460:18;1471:6;1460:10;:18::i;:::-;1452:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:12;1538:23;1565:6;:11;;1585:5;1593:4;1565:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1523:75;;;;1616:52;1634:7;1643:10;1655:12;1616:17;:52::i;:::-;1609:59;;;;1208:468;;;;;;:::o;83:174::-;143:4;160:12;214:7;202:20;194:28;;248:1;241:4;:8;234:15;;;83:174;;;:::o;2836:515::-;2951:12;2980:7;2976:368;;;3011:10;3004:17;;;;2976:368;3078:1;3058:10;:17;:21;3054:279;;;3161:10;3155:17;3222:15;3209:10;3205:2;3201:19;3194:44;3109:148;3304:12;3297:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2836:515;;;;;;:::o

Swarm Source

ipfs://64f2d6af8846a1e3e169861db728338aad0c5119cfae752354c0c8dba9c34970
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.