Contract 0x8f42f025f257892f4fa29fe56376f8a16835625e

Contract Overview

Balance:
0 BNB
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x11e54efd6e40b10d91a2b7a0459006180f3a93bec4f4c2dcf5d5098eb567b250Set Price Oracle85927482021-05-06 2:39:50141 days 4 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00073103
0xbefd1f3a355175e8a6edb0c48f77b27354a81cca49fbffc987405b3d42eea2ffSet Price Oracle85732962021-05-05 10:27:14141 days 20 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x86813ddf5d5ffbf031cebd423c0278d53d5b601759b2ac22b705bf29743f8971Set Price Oracle85731972021-05-05 10:22:17141 days 21 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xea561c93a38dc6926ae3142cc5b08c1f318db6530981fb5e580d79eb0cb42370Set Price Oracle85730962021-05-05 10:17:14141 days 21 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xfd3ab0f20505364c7e0c4fb15158ec490ab41e793350d404737e0c755f7d3e0eSet Price Oracle85727962021-05-05 10:02:14141 days 21 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xec51183414c440199311815ec258909a2bc34041ba77772f90923da0a1df6f0aSet Price Oracle85726972021-05-05 9:57:17141 days 21 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x98598465f6b40cb161bc07ff3fd82a441787b7e3dfad652e58c77eff536d913cSet Price Oracle85725962021-05-05 9:52:14141 days 21 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x67a6bea6721152b5de3a5f1ed78480b9c2430b4ce858cd865b36386c5440d98aSet Price Oracle85724972021-05-05 9:47:17141 days 21 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xee0e4b046eaa2bf1337ecc12335627805ec7be7e509f9ff21818dcc1b8ff5915Set Price Oracle85722962021-05-05 9:37:14141 days 21 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00065402
0x2acccbfed3739e6bf340bb65097560553517640a164127d6fa12384b1ecec110Set Price Oracle85719962021-05-05 9:22:14141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xe5579b21a088ac5b345876609cec84a138cd150ee6976c49e816cd8afe6dab34Set Price Oracle85718962021-05-05 9:17:14141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xcb7091ee7bbd01d131eca002afe01f3f882061ca9568f011a9796823ed35c029Set Price Oracle85716962021-05-05 9:07:14141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x35360688fbae0d345e9dab776557d038a546792c613d6ee2243b096b569574b7Set Price Oracle85715962021-05-05 9:02:14141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xc48238874e28bd76591da6a6381903f1f68ce5e4bc0606e753e40644fb059b73Set Price Oracle85713972021-05-05 8:52:17141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x0923318ddf65970875b2d4c2b46ddc5485a295c664fdd5578aec385ade2d06e2Set Price Oracle85711962021-05-05 8:42:14141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x30114aab436f6619bef9f1edfc7f9b447589d12cc9b7b9dc4c6ca3b42399a8e4Set Price Oracle85709972021-05-05 8:32:17141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00065402
0x8e7416b29df46aa8c581af91e0ef66c920c2b6d6c7f0a524e392f3abf35b712bSet Price Oracle85708982021-05-05 8:27:20141 days 22 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x3107b401fc681bd41a504ae0d72bd0ce972aaedcf0d20450ea8ee65856779074Set Price Oracle85707962021-05-05 8:22:14141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x9015fa65474ae8b94ce384e72ac456f31925c08e3fabb287ba720fe96753db2aSet Price Oracle85705972021-05-05 8:12:17141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x315c9b43412fc287d55c4802f49e57e0d6e9c370fece15b2ec80613d8e855025Set Price Oracle85704972021-05-05 8:07:17141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x130c7dde4dffe481080259e6050ecfdfad134c23c55bf3ac03c1df713dc6bfaaSet Price Oracle85703962021-05-05 8:02:14141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xfb060e8e0129bbf95679a86f296dedce54a690fadb66a8f16f3d8f60f4d9e06aSet Price Oracle85702972021-05-05 7:57:17141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x6d2a673ca77b24301ddcb850bfe099e9510a1d4a98ce5465db786be8b1b15bcfSet Price Oracle85701962021-05-05 7:52:14141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0xd45f29875d8af53e11251a63fa1b3224c6b990aaf510ed8048ab039eb05de0b1Set Price Oracle85700962021-05-05 7:47:14141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
0x263861c74c160798aaf64685e77dc38de85c3b19eca722216ae3b0f5d07d11d7Set Price Oracle85699962021-05-05 7:42:14141 days 23 hrs ago0x60d95ae4287d319aee53c6565aec1aaf1f34734a IN  0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB0.00054381
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x11e54efd6e40b10d91a2b7a0459006180f3a93bec4f4c2dcf5d5098eb567b25085927482021-05-06 2:39:50141 days 4 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x205d275b6ab173ce94c3327b04a0100e0c0d9bb4b340b88954257d4f63f83e7785736432021-05-05 10:44:35141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x205d275b6ab173ce94c3327b04a0100e0c0d9bb4b340b88954257d4f63f83e7785736432021-05-05 10:44:35141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0xa0c65279833073461326a52c641e107fd57086120 BNB
0x205d275b6ab173ce94c3327b04a0100e0c0d9bb4b340b88954257d4f63f83e7785736432021-05-05 10:44:35141 days 20 hrs ago 0xf2f2cb80ede6e81789c4fd46c8c52e6a531002bc 0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB
0x0abd8b570841b93bfb2a1e79bd8bd14a3bde92a97fcd6e7dd5767922c451380585734392021-05-05 10:34:23141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x0abd8b570841b93bfb2a1e79bd8bd14a3bde92a97fcd6e7dd5767922c451380585734392021-05-05 10:34:23141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x370941ce4f65ede1b30c450daa2e18f3c922676f0 BNB
0x0abd8b570841b93bfb2a1e79bd8bd14a3bde92a97fcd6e7dd5767922c451380585734392021-05-05 10:34:23141 days 20 hrs ago 0xf2f2cb80ede6e81789c4fd46c8c52e6a531002bc 0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB
0x0abd8b570841b93bfb2a1e79bd8bd14a3bde92a97fcd6e7dd5767922c451380585734392021-05-05 10:34:23141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x0abd8b570841b93bfb2a1e79bd8bd14a3bde92a97fcd6e7dd5767922c451380585734392021-05-05 10:34:23141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0xa0c65279833073461326a52c641e107fd57086120 BNB
0x0abd8b570841b93bfb2a1e79bd8bd14a3bde92a97fcd6e7dd5767922c451380585734392021-05-05 10:34:23141 days 20 hrs ago 0xf2f2cb80ede6e81789c4fd46c8c52e6a531002bc 0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB
0x6ad55c4ac75db4e8dc31672f7f2a80bc8bb983e4cd90ba5bf42e39f60193bd7385733812021-05-05 10:31:29141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x6ad55c4ac75db4e8dc31672f7f2a80bc8bb983e4cd90ba5bf42e39f60193bd7385733812021-05-05 10:31:29141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0xa0c65279833073461326a52c641e107fd57086120 BNB
0x6ad55c4ac75db4e8dc31672f7f2a80bc8bb983e4cd90ba5bf42e39f60193bd7385733812021-05-05 10:31:29141 days 20 hrs ago 0xf2f2cb80ede6e81789c4fd46c8c52e6a531002bc 0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB
0xbefd1f3a355175e8a6edb0c48f77b27354a81cca49fbffc987405b3d42eea2ff85732962021-05-05 10:27:14141 days 20 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x86813ddf5d5ffbf031cebd423c0278d53d5b601759b2ac22b705bf29743f897185731972021-05-05 10:22:17141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x7fe440ae6fbafd3028db1c1ccd61bd41c86522e2fa5a870b4941a73357dc400885731332021-05-05 10:19:05141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x7fe440ae6fbafd3028db1c1ccd61bd41c86522e2fa5a870b4941a73357dc400885731332021-05-05 10:19:05141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0xa2e2d7a25f4b2aeb490b4dbce495f0d6951f7aa10 BNB
0x7fe440ae6fbafd3028db1c1ccd61bd41c86522e2fa5a870b4941a73357dc400885731332021-05-05 10:19:05141 days 21 hrs ago 0xf2f2cb80ede6e81789c4fd46c8c52e6a531002bc 0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB
0xea561c93a38dc6926ae3142cc5b08c1f318db6530981fb5e580d79eb0cb4237085730962021-05-05 10:17:14141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x718b31c489a132d15e16e5fd63f34522476feded1bba1810c5cef745b7bae01a85730652021-05-05 10:15:41141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x718b31c489a132d15e16e5fd63f34522476feded1bba1810c5cef745b7bae01a85730652021-05-05 10:15:41141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x6ab7d9cc5d1134f5b20917a2e3a1b633d01e09b10 BNB
0x718b31c489a132d15e16e5fd63f34522476feded1bba1810c5cef745b7bae01a85730652021-05-05 10:15:41141 days 21 hrs ago 0xf2f2cb80ede6e81789c4fd46c8c52e6a531002bc 0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB
0x718b31c489a132d15e16e5fd63f34522476feded1bba1810c5cef745b7bae01a85730652021-05-05 10:15:41141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0x9ac64cc6e4415144c455bd8e4837fea55603e5c30 BNB
0x718b31c489a132d15e16e5fd63f34522476feded1bba1810c5cef745b7bae01a85730652021-05-05 10:15:41141 days 21 hrs ago 0x8f42f025f257892f4fa29fe56376f8a16835625e 0xe8ea9ec8d5a7ff9dc8f09ead55a9cd44dce415180 BNB
0x718b31c489a132d15e16e5fd63f34522476feded1bba1810c5cef745b7bae01a85730652021-05-05 10:15:41141 days 21 hrs ago 0xf2f2cb80ede6e81789c4fd46c8c52e6a531002bc 0x8f42f025f257892f4fa29fe56376f8a16835625e0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PriceOracle

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-15
*/

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

library SafeMath {
  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    require(c / a == b, 'INVALID_MUL');
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0, 'INVALID_DIV'); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a, 'INVALID_SUB');
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, 'INVALID_ADD');
    return c;
  }
}
interface InterfaceRate {

    function calUtilizationRate(uint256 _totalDemand, uint256 _totalSupply) external pure returns (uint256);
    
    function calBorrowRate(uint256 _totalDemand, uint256 _totalSupply) external pure returns(uint256);
}
contract IDevDefiPool {

	InterfaceRate public rateContract;
	
	function borrow(address _borrower, uint256 _amount) external returns(bool) {}
	function repay(address _borrower, uint256 _amount) external returns(bool) {}

	function isCollateral(address _user) external view returns(bool) {}
	function balanceOf(address _addr) external view returns(uint256) {}
	function getBaseToken() external view returns(address) {}
	function getCollateralOf(address _whoAddr) external view returns(uint256) {}
	function getPrincipalOf(address _borrower) external view returns(uint256) {}
	function getAmountOwed(address _borrower) external view returns(uint256) {}
	function getData() external view returns(uint256 totalSupply_, uint256 totalDemand_, uint256 liquidityAmt_, uint256 borrowAPY_, uint256 supplyAPY_) {}
	function getTotalUser() external view returns(uint256 totalSupplier_,uint256 totalBorrower_) {}
	function getBorrowerDetail(address _borrower) external view returns(uint256 principal_, uint256 amountOwed_, uint256 dayToRepayInterest_, uint256 numberDayToBorrow_) {} 
	function getUserDetail(address _user) external view returns(uint256 supplyBal_, uint256 interestPending_, uint256 baseTokenBal_, uint256 bnbBal_, bool isCollateral_ ) {}
}
interface IPancakeSwapRouter {
    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 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);
}
contract TimeLock {

    enum Functions { 
        TRANSFER_OWNER_SHIP,
        CHANGE_DELAY_TIME, 
        CHANGE_MAX_PRICE_DIFFERENCE_WITH_DEFI
    } 

    using SafeMath for uint256;
  
    address public owner;

    mapping(Functions => LockTransaction) public lockTransactionOf;

    uint256 public constant GRACE_PERIOD = 30 days;
    uint256 public constant MINIMUM_DELAY = 3 days;
    uint256 public constant MAXIMUM_DELAY = 30 days;
    uint256 public DELAY;

    struct LockTransaction {
        bool queued;
        uint256 executeTime;
    }

    modifier onlyOwner()
    {
        require(msg.sender == owner, 'ONLY_OWNER');
        _;
    }

    modifier isQueued(Functions _fn) 
    {
        LockTransaction memory _lock = lockTransactionOf[_fn];
        require(_lock.queued == true, "TLConf::01");
        require(_lock.executeTime <= block.timestamp, "TLConf::02");
        require(_lock.executeTime.add(GRACE_PERIOD) >= block.timestamp, "TLConf::03");
        _;
    }

    event onQueuedTransaction(Functions _fn, uint256 _executeTime);
    event onCancelTransaction(Functions _fn);

    constructor() public {
        owner = msg.sender;
    }

    function setDelay(uint delay_) public onlyOwner {
        require(delay_ >= MINIMUM_DELAY, 'INVALID_MINIMUM_DELAY');
        require(delay_ <= MAXIMUM_DELAY, 'INVALID_MAXIMUM_DELAY');
        DELAY = delay_;
    }

    function cancelTransaction(Functions _fn) public onlyOwner 
    {
        /*------------------------- declare ------------------------------------*/
        LockTransaction storage _lock = lockTransactionOf[_fn];
        /*------------------------- handle -------------------------------------*/
        _lock.queued = false;
        /*------------------------- response -------------------------------------*/
        emit onCancelTransaction(_fn);
    }

    function queuedTransaction(Functions _fn) public onlyOwner 
    {
        /*------------------------- declare ------------------------------------*/
        LockTransaction storage _lock = lockTransactionOf[_fn];
        /*------------------------- handle -------------------------------------*/
        _lock.executeTime = block.timestamp.add(DELAY);
        _lock.queued = true;
        /*------------------------- response -------------------------------------*/
        emit onQueuedTransaction(_fn, _lock.executeTime);
    }

    function transferOwnership(address _owner) public onlyOwner isQueued(Functions.TRANSFER_OWNER_SHIP) 
    {
        /*------------------------- declare ------------------------------------*/
        LockTransaction storage _lock = lockTransactionOf[Functions.TRANSFER_OWNER_SHIP];
        /*------------------------- validate -----------------------------------*/
        require(_owner != address(0), "INVALID_ADDRESS");
        /*------------------------- handle -------------------------------------*/
        owner = _owner;
        _lock.queued = false;
    }
}

contract PriceOracle is TimeLock {
    /// @notice Indicator that this is a PriceOracle contract (for inspection)
    bool public constant isPriceOracle = true;

    using SafeMath for uint256;

    address public WBNB;
    address public BUSD;

    uint256 public DELAY_TIME = 60 * 60 * 1; // 1 hour; period to update nearest price
    uint256 public MAX_PRICE_DIFFERENCE_WITH_DEFI = 5;// 5%;

    mapping(address => uint256) public priceOracle;
    mapping(address => uint256) public nearestPrice;
    mapping(address => uint256) public nearestTime;

    IPancakeSwapRouter public pancakeSwapContract;

    event onSetPriceOracle(address _token, uint256 _price, uint256 _newPrice);

    constructor(
        IPancakeSwapRouter _pancakeSwap,
        address _wbnb,
        address _busd
        ) public {
        pancakeSwapContract = _pancakeSwap;

        WBNB = _wbnb;
        BUSD = _busd;
    }

    /**
    * Action::setDelayTime
    */
    function setDelayTime(uint256 _value) public onlyOwner isQueued(Functions.CHANGE_DELAY_TIME) 
    {
        /*------------------------- declare ------------------------------------*/
        LockTransaction storage _lock = lockTransactionOf[Functions.CHANGE_DELAY_TIME];
        /*------------------------- validate -----------------------------------*/
        require(_value > 0, "INVALID::AMOUNT");
        /*------------------------- handle -------------------------------------*/
        DELAY_TIME = _value;
        _lock.queued = false;
        /*------------------------- response -------------------------------------*/
    }

     /**
    * Action::setMaxPriceDifferenceWithDefi
    */
    function setMaxPriceDifferenceWithDefi(uint256 _value) public onlyOwner isQueued(Functions.CHANGE_MAX_PRICE_DIFFERENCE_WITH_DEFI) 
    {
        /*------------------------- declare ------------------------------------*/
        LockTransaction storage _lock = lockTransactionOf[Functions.CHANGE_MAX_PRICE_DIFFERENCE_WITH_DEFI];
        /*------------------------- validate -----------------------------------*/
        require(_value > 0, "INVALID::AMOUNT");
        /*------------------------- handle -------------------------------------*/
        MAX_PRICE_DIFFERENCE_WITH_DEFI = _value;
        _lock.queued = false;
        /*------------------------- response -------------------------------------*/
    }

    /**
    *
    * _price decimail = 18 || 
    */
    function setPriceOracle(address _token, uint256 _price) public 
    {
        require(msg.sender == tx.origin, 'INVALID_PERMISTION');
        require(_token != BUSD, 'INVALID_TOKEN');

        uint256 _baseTokenAmtByBUSD = getPriceOnPancake(_token); // 1 BASE -> ? BUSD
        uint256 newPrice = _price;

        uint256 _maxPriceDifference = _baseTokenAmtByBUSD.mul(MAX_PRICE_DIFFERENCE_WITH_DEFI).div(100);
        uint256 _minPrice = _baseTokenAmtByBUSD.sub(_maxPriceDifference);
        uint256 _maxPrice = _baseTokenAmtByBUSD.add(_maxPriceDifference);

        require(_price >= _minPrice && _price <= _maxPrice, 'INVALID_PRICE');

        if (
            nearestPrice[_token] > 0 &&
            newPrice > nearestPrice[_token].add(nearestPrice[_token].mul(10).div(100))
            ) {
            newPrice = nearestPrice[_token].add(nearestPrice[_token].mul(10).div(100));
        }

        if (
            nearestPrice[_token] > 0 &&
            newPrice < nearestPrice[_token].sub(nearestPrice[_token].mul(10).div(100))
            ) {
            newPrice = nearestPrice[_token].sub(nearestPrice[_token].mul(10).div(100));
        }
        // update  price
        priceOracle[_token] = newPrice;
        // update nearest time and price
        if (nearestTime[_token].add(DELAY_TIME) <= now) {
            nearestTime[_token]  = now;
            nearestPrice[_token] = priceOracle[_token];
        }
        /*------------------------ emit event ----------------------------------*/
        emit onSetPriceOracle(_token, _price, newPrice);
    }

    /**
    * @notice Get the underlying price of a cToken asset
    */
    function assetPrices(IDevDefiPool _pool) external view returns (uint256 collateralPrice_, uint256 loanPrice_) 
    {
        address _baseToken = _pool.getBaseToken();
       
        uint256 _baseTokenAmtByBUSD = getPriceOnPancake(_baseToken); // 1 BASE -> ? BUSD

        collateralPrice_ = _baseTokenAmtByBUSD < priceOracle[_baseToken] ? _baseTokenAmtByBUSD : priceOracle[_baseToken];

        if (collateralPrice_ <= 0) {
            collateralPrice_ = _baseTokenAmtByBUSD > 0 ? _baseTokenAmtByBUSD : priceOracle[_baseToken];
        }

        loanPrice_ = _baseTokenAmtByBUSD > priceOracle[_baseToken] ? _baseTokenAmtByBUSD : priceOracle[_baseToken];

        if (loanPrice_ <= 0) {
            loanPrice_ = _baseTokenAmtByBUSD > 0 ? _baseTokenAmtByBUSD : priceOracle[_baseToken];
        }

    }

    function getPriceOnPancake(address _token) public view returns(uint256) 
    {
        address[] memory _path;

        if (_token == BUSD) {
            return 1e18;
        }    
        
        if (_token == WBNB) {
            _path = new address[](2);
            _path[0] = WBNB;
            _path[1] = BUSD;
        } else {
            _path = new address[](3);
            _path[0] = _token;
            _path[1] = WBNB;
            _path[2] = BUSD;
        }

        uint256 _baseTokenAmtByBUSD; // 1 BASE -> ? BUSD

        try pancakeSwapContract.getAmountsOut(1e18, _path) returns(uint[] memory amounts) {
            _baseTokenAmtByBUSD = amounts[_path.length - 1];
        } catch {
            _baseTokenAmtByBUSD = 0; //  
        }

        return _baseTokenAmtByBUSD;
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract IPancakeSwapRouter","name":"_pancakeSwap","type":"address"},{"internalType":"address","name":"_wbnb","type":"address"},{"internalType":"address","name":"_busd","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum TimeLock.Functions","name":"_fn","type":"uint8"}],"name":"onCancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum TimeLock.Functions","name":"_fn","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"_executeTime","type":"uint256"}],"name":"onQueuedTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"onSetPriceOracle","type":"event"},{"inputs":[],"name":"BUSD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DELAY_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PRICE_DIFFERENCE_WITH_DEFI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDevDefiPool","name":"_pool","type":"address"}],"name":"assetPrices","outputs":[{"internalType":"uint256","name":"collateralPrice_","type":"uint256"},{"internalType":"uint256","name":"loanPrice_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum TimeLock.Functions","name":"_fn","type":"uint8"}],"name":"cancelTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getPriceOnPancake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPriceOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum TimeLock.Functions","name":"","type":"uint8"}],"name":"lockTransactionOf","outputs":[{"internalType":"bool","name":"queued","type":"bool"},{"internalType":"uint256","name":"executeTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nearestPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nearestTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeSwapContract","outputs":[{"internalType":"contract IPancakeSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priceOracle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum TimeLock.Functions","name":"_fn","type":"uint8"}],"name":"queuedTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay_","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setDelayTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxPriceDifferenceWithDefi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPriceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052610e10600555600560065534801561001b57600080fd5b506040516117683803806117688339818101604052606081101561003e57600080fd5b5080516020820151604090920151600080546001600160a01b03199081163317909155600a80546001600160a01b0394851690831617905560038054948416948216949094179093556004805492909116919092161790556116c3806100a56000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638dd95002116100c3578063bbba68b61161007c578063bbba68b614610328578063c1a287e214610281578063c9e6eaae14610363578063e177246e14610389578063e70dd625146103a6578063f2fde38b146103c657610158565b80638dd95002146102b65780638eb5b4d8146102be578063904c2e1b146102c6578063a9cbbc1b146102ec578063af8e071f146102f4578063b1b43ae51461032057610158565b806366331bba1161011557806366331bba1461025d57806369b41170146102795780637d645fab1461028157806384547a7a146102895780638951ed18146102915780638da5cb5b146102ae57610158565b80632951f1b21461015d578063484f4ea9146101955780634ce00893146101b9578063587f0172146101d85780635e9a523c146101fe57806360ff87a41461023d575b600080fd5b6101836004803603602081101561017357600080fd5b50356001600160a01b03166103ec565b60408051918252519081900360200190f35b61019d6103fe565b604080516001600160a01b039092168252519081900360200190f35b6101d6600480360360208110156101cf57600080fd5b503561040d565b005b610183600480360360208110156101ee57600080fd5b50356001600160a01b031661060d565b6102246004803603602081101561021457600080fd5b50356001600160a01b0316610908565b6040805192835260208301919091528051918290030190f35b6101d66004803603602081101561025357600080fd5b503560ff16610a71565b610265610b5f565b604080519115158252519081900360200190f35b610183610b64565b610183610b6a565b610183610b71565b6101d6600480360360208110156102a757600080fd5b5035610b77565b61019d610d77565b61019d610d86565b61019d610d95565b610183600480360360208110156102dc57600080fd5b50356001600160a01b0316610da4565b610183610db6565b6101d66004803603604081101561030a57600080fd5b506001600160a01b038135169060200135610dbc565b61018361110c565b6103486004803603602081101561033e57600080fd5b503560ff16611113565b60408051921515835260208301919091528051918290030190f35b6101836004803603602081101561037957600080fd5b50356001600160a01b0316611132565b6101d66004803603602081101561039f57600080fd5b5035611144565b6101d6600480360360208110156103bc57600080fd5b503560ff16611235565b6101d6600480360360208110156103dc57600080fd5b50356001600160a01b0316611302565b60076020526000908152604090205481565b6004546001600160a01b031681565b6000546001600160a01b03163314610459576040805162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b604482015290519081900360640190fd5b6002610463611676565b6001600083600281111561047357fe5b600281111561047e57fe5b815260208082019290925260409081016000208151808301909252805460ff16151580835260019182015493830193909352909250146104f2576040805162461bcd60e51b815260206004820152600a602482015269544c436f6e663a3a303160b01b604482015290519081900360640190fd5b4281602001511115610538576040805162461bcd60e51b815260206004820152600a6024820152692a2621b7b7331d1d181960b11b604482015290519081900360640190fd5b6020810151429061054c9062278d00611525565b101561058c576040805162461bcd60e51b815260206004820152600a602482015269544c436f6e663a3a303360b01b604482015290519081900360640190fd5b600260005260016020527fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f836105fb576040805162461bcd60e51b815260206004820152600f60248201526e125395905312510e8e905353d55395608a1b604482015290519081900360640190fd5b6006939093555050805460ff19169055565b6004546000906060906001600160a01b038481169116141561063a57670de0b6b3a7640000915050610903565b6003546001600160a01b03848116911614156106da576040805160028082526060820183529091602083019080368337505060035482519293506001600160a01b03169183915060009061068a57fe5b6001600160a01b0392831660209182029290920101526004548251911690829060019081106106b557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610780565b604080516003808252608082019092529060208201606080368337019050509050828160008151811061070957fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061073457fe5b6001600160a01b03928316602091820292909201015260045482519116908290600290811061075f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b600a546040805163d06ca61f60e01b8152670de0b6b3a764000060048201818152602483019384528551604484015285516000956001600160a01b03169463d06ca61f94889392606490910190602080860191028083838c5b838110156107f15781810151838201526020016107d9565b50505050905001935050505060006040518083038186803b15801561081557600080fd5b505afa9250505080156108d757506040513d6000823e601f3d908101601f19168201604052602081101561084857600080fd5b810190808051604051939291908464010000000082111561086857600080fd5b90830190602082018581111561087d57600080fd5b825186602082028301116401000000008211171561089a57600080fd5b82525081516020918201928201910280838360005b838110156108c75781810151838201526020016108af565b5050505090500160405250505060015b6108e3575060006108ff565b806001845103815181106108f357fe5b60200260200101519150505b9150505b919050565b6000806000836001600160a01b03166398acd7a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d602081101561097057600080fd5b50519050600061097f8261060d565b6001600160a01b03831660009081526007602052604090205490915081106109bf576001600160a01b0382166000908152600760205260409020546109c1565b805b9350600084116109f657600081116109f1576001600160a01b0382166000908152600760205260409020546109f3565b805b93505b6001600160a01b0382166000908152600760205260409020548111610a33576001600160a01b038216600090815260076020526040902054610a35565b805b925060008311610a6a5760008111610a65576001600160a01b038216600090815260076020526040902054610a67565b805b92505b5050915091565b6000546001600160a01b03163314610abd576040805162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b604482015290519081900360640190fd5b600060016000836002811115610acf57fe5b6002811115610ada57fe5b81526020019081526020016000209050610aff6002544261152590919063ffffffff16565b6001808301829055825460ff19161782556040517f2750180134a7141597efe494a023e1de200534e6bdbf4d68443c20731701c7c391849180836002811115610b4457fe5b81526020018281526020019250505060405180910390a15050565b600181565b60025481565b62278d0081565b60055481565b6000546001600160a01b03163314610bc3576040805162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b604482015290519081900360640190fd5b6001610bcd611676565b60016000836002811115610bdd57fe5b6002811115610be857fe5b815260208082019290925260409081016000208151808301909252805460ff1615158083526001918201549383019390935290925014610c5c576040805162461bcd60e51b815260206004820152600a602482015269544c436f6e663a3a303160b01b604482015290519081900360640190fd5b4281602001511115610ca2576040805162461bcd60e51b815260206004820152600a6024820152692a2621b7b7331d1d181960b11b604482015290519081900360640190fd5b60208101514290610cb69062278d00611525565b1015610cf6576040805162461bcd60e51b815260206004820152600a602482015269544c436f6e663a3a303360b01b604482015290519081900360640190fd5b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f83610d65576040805162461bcd60e51b815260206004820152600f60248201526e125395905312510e8e905353d55395608a1b604482015290519081900360640190fd5b6005939093555050805460ff19169055565b6000546001600160a01b031681565b6003546001600160a01b031681565b600a546001600160a01b031681565b60086020526000908152604090205481565b60065481565b333214610e05576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa822a926a4a9aa24a7a760711b604482015290519081900360640190fd5b6004546001600160a01b0383811691161415610e58576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b6000610e638361060d565b905060008290506000610e8c6064610e866006548661157690919063ffffffff16565b906115d3565b90506000610e9a848361162b565b90506000610ea88584611525565b9050818610158015610eba5750808611155b610efb576040805162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f505249434560981b604482015290519081900360640190fd5b6001600160a01b03871660009081526008602052604090205415801590610f6e57506001600160a01b038716600090815260086020526040902054610f6b90610f4c90606490610e8690600a611576565b6001600160a01b03891660009081526008602052604090205490611525565b84115b15610fa5576001600160a01b038716600090815260086020526040902054610fa290610f4c90606490610e8690600a611576565b93505b6001600160a01b0387166000908152600860205260409020541580159061101857506001600160a01b03871660009081526008602052604090205461101590610ff690606490610e8690600a611576565b6001600160a01b0389166000908152600860205260409020549061162b565b84105b1561104f576001600160a01b03871660009081526008602052604090205461104c90610ff690606490610e8690600a611576565b93505b6001600160a01b038716600090815260076020908152604080832087905560055460099092529091205442916110859190611525565b116110ba576001600160a01b038716600090815260096020908152604080832042905560078252808320546008909252909120555b604080516001600160a01b03891681526020810188905280820186905290517f8169d7f87fca08927e53ae23ddd936488b0a9ed53c497ef80a2c9eb83b7efe899181900360600190a150505050505050565b6203f48081565b6001602081905260009182526040909120805491015460ff9091169082565b60096020526000908152604090205481565b6000546001600160a01b03163314611190576040805162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b604482015290519081900360640190fd5b6203f4808110156111e0576040805162461bcd60e51b8152602060048201526015602482015274494e56414c49445f4d494e494d554d5f44454c415960581b604482015290519081900360640190fd5b62278d00811115611230576040805162461bcd60e51b8152602060048201526015602482015274494e56414c49445f4d4158494d554d5f44454c415960581b604482015290519081900360640190fd5b600255565b6000546001600160a01b03163314611281576040805162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b604482015290519081900360640190fd5b60006001600083600281111561129357fe5b600281111561129e57fe5b815260208101919091526040908101600020805460ff1916815590519091507f8601523a44261067758b7786fcd66c33669bd716969a7f6bff9bb0f70f8bbf71908390808260028111156112ee57fe5b815260200191505060405180910390a15050565b6000546001600160a01b0316331461134e576040805162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b604482015290519081900360640190fd5b6000611358611676565b6001600083600281111561136857fe5b600281111561137357fe5b815260208082019290925260409081016000208151808301909252805460ff16151580835260019182015493830193909352909250146113e7576040805162461bcd60e51b815260206004820152600a602482015269544c436f6e663a3a303160b01b604482015290519081900360640190fd5b428160200151111561142d576040805162461bcd60e51b815260206004820152600a6024820152692a2621b7b7331d1d181960b11b604482015290519081900360640190fd5b602081015142906114419062278d00611525565b1015611481576040805162461bcd60e51b815260206004820152600a602482015269544c436f6e663a3a303360b01b604482015290519081900360640190fd5b6000805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb496001600160a01b0384166114f8576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4144445245535360881b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0395909516949094179093555050805460ff19169055565b60008282018381101561156d576040805162461bcd60e51b815260206004820152600b60248201526a1253959053125117d0511160aa1b604482015290519081900360640190fd5b90505b92915050565b60008261158557506000611570565b8282028284828161159257fe5b041461156d576040805162461bcd60e51b815260206004820152600b60248201526a1253959053125117d3555360aa1b604482015290519081900360640190fd5b6000808211611617576040805162461bcd60e51b815260206004820152600b60248201526a24a72b20a624a22fa224ab60a91b604482015290519081900360640190fd5b600082848161162257fe5b04949350505050565b600082821115611670576040805162461bcd60e51b815260206004820152600b60248201526a24a72b20a624a22fa9aaa160a91b604482015290519081900360640190fd5b50900390565b60408051808201909152600080825260208201529056fea26469706673582212205beedb0d0c994d957406a707495cac07b8740de868c744d2cc55ba6b4c2722b664736f6c634300060c00330000000000000000000000009ac64cc6e4415144c455bd8e4837fea55603e5c3000000000000000000000000e83d391b766e399ed9c55546fa818f9322b083b8000000000000000000000000aa9c32126abfa0b1ea4f1d1728ca0f4724f6ec18

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

0000000000000000000000009ac64cc6e4415144c455bd8e4837fea55603e5c3000000000000000000000000e83d391b766e399ed9c55546fa818f9322b083b8000000000000000000000000aa9c32126abfa0b1ea4f1d1728ca0f4724f6ec18
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ac64cc6e4415144c455bd8e4837fea55603e5c3
Arg [1] : 000000000000000000000000e83d391b766e399ed9c55546fa818f9322b083b8
Arg [2] : 000000000000000000000000aa9c32126abfa0b1ea4f1d1728ca0f4724f6ec18


Deployed ByteCode Sourcemap

7401:5818:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7812:46;;;;;;;;;;;;;;;;-1:-1:-1;7812:46:0;-1:-1:-1;;;;;7812:46:0;;:::i;:::-;;;;;;;;;;;;;;;;7632:19;;;:::i;:::-;;;;-1:-1:-1;;;;;7632:19:0;;;;;;;;;;;;;;9099:721;;;;;;;;;;;;;;;;-1:-1:-1;9099:721:0;;:::i;:::-;;12394:822;;;;;;;;;;;;;;;;-1:-1:-1;12394:822:0;-1:-1:-1;;;;;12394:822:0;;:::i;11565:821::-;;;;;;;;;;;;;;;;-1:-1:-1;11565:821:0;-1:-1:-1;;;;;11565:821:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6276:538;;;;;;;;;;;;;;;;-1:-1:-1;6276:538:0;;;;:::i;7521:41::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4826:20;;;:::i;4772:47::-;;;:::i;7660:39::-;;;:::i;8384:644::-;;;;;;;;;;;;;;;;-1:-1:-1;8384:644:0;;:::i;4566:20::-;;;:::i;7606:19::-;;;:::i;7974:45::-;;;:::i;7865:47::-;;;;;;;;;;;;;;;;-1:-1:-1;7865:47:0;-1:-1:-1;;;;;7865:47:0;;:::i;7748:49::-;;;:::i;9884:1598::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9884:1598:0;;;;;;;;:::i;4719:46::-;;;:::i;4595:62::-;;;;;;;;;;;;;;;;-1:-1:-1;4595:62:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7919:46;;;;;;;;;;;;;;;;-1:-1:-1;7919:46:0;-1:-1:-1;;;;;7919:46:0;;:::i;5580:217::-;;;;;;;;;;;;;;;;-1:-1:-1;5580:217:0;;:::i;5805:463::-;;;;;;;;;;;;;;;;-1:-1:-1;5805:463:0;;;;:::i;6822:572::-;;;;;;;;;;;;;;;;-1:-1:-1;6822:572:0;-1:-1:-1;;;;;6822:572:0;;:::i;7812:46::-;;;;;;;;;;;;;:::o;7632:19::-;;;-1:-1:-1;;;;;7632:19:0;;:::o;9099:721::-;5005:5;;-1:-1:-1;;;;;5005:5:0;4991:10;:19;4983:42;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;;;;9180:47:::1;5103:28;;:::i;:::-;5134:17;:22;5152:3;5134:22;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;5134:22:0;5103:53;;;;::::1;::::0;;;;;::::1;;;;::::0;;;;;;::::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;5175:20:0::1;5167:43;;;::::0;;-1:-1:-1;;;5167:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5167:43:0;;;;;;;;;;;;;::::1;;5250:15;5229:5;:17;;;:36;;5221:59;;;::::0;;-1:-1:-1;;;5221:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5221:59:0;;;;;;;;;;;;;::::1;;5299:17;::::0;::::1;::::0;5338:15:::1;::::0;5299:35:::1;::::0;4705:7:::1;5299:21;:35::i;:::-;:54;;5291:77;;;::::0;;-1:-1:-1;;;5291:77:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5291:77:0;;;;;;;;;;;;;::::1;;9380:47:::2;9330:29;9362:66:::0;:17:::2;:66;::::0;;9531:10;9523:38:::2;;;::::0;;-1:-1:-1;;;9523:38:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;9523:38:0;;;;;;;;;;;;;::::2;;9656:30;:39:::0;;;;-1:-1:-1;;9706:20:0;;-1:-1:-1;;9706:20:0::2;::::0;;9099:721::o;12394:822::-;12532:4;;12457:7;;12483:22;;-1:-1:-1;;;;;12522:14:0;;;12532:4;;12522:14;12518:58;;;12560:4;12553:11;;;;;12518:58;12614:4;;-1:-1:-1;;;;;12604:14:0;;;12614:4;;12604:14;12600:280;;;12643:16;;;12657:1;12643:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;12685:4:0;;12674:8;;;;-1:-1:-1;;;;;;12685:4:0;;12674:8;;-1:-1:-1;12685:4:0;;12674:8;;;;-1:-1:-1;;;;;12674:15:0;;;:8;;;;;;;;;:15;12715:4;;12704:8;;12715:4;;;12704:5;;12715:4;;12704:8;;;;;;;;;;;:15;-1:-1:-1;;;;;12704:15:0;;;-1:-1:-1;;;;;12704:15:0;;;;;12600:280;;;12760:16;;;12774:1;12760:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12760:16:0;12752:24;;12802:6;12791:5;12797:1;12791:8;;;;;;;;-1:-1:-1;;;;;12791:17:0;;;:8;;;;;;;;;:17;12834:4;;12823:8;;12834:4;;;12823:5;;12834:4;;12823:8;;;;;;-1:-1:-1;;;;;12823:15:0;;;:8;;;;;;;;;:15;12864:4;;12853:8;;12864:4;;;12853:5;;12859:1;;12853:8;;;;;;;;;;;:15;-1:-1:-1;;;;;12853:15:0;;;-1:-1:-1;;;;;12853:15:0;;;;;12600:280;12956:19;;:46;;;-1:-1:-1;;;12956:46:0;;12990:4;12956:46;;;;;;;;;;;;;;;;;;;;12892:27;;-1:-1:-1;;;;;12956:19:0;;:33;;12996:5;;12956:46;;;;;;;;;;;;;;;12892:27;12956:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12956:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12956:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12952:218;;-1:-1:-1;13152:1:0;12952:218;;;13071:7;13094:1;13079:5;:12;:16;13071:25;;;;;;;;;;;;;;13049:47;;13003:105;12952:218;13189:19;-1:-1:-1;;12394:822:0;;;;:::o;11565:821::-;11629:24;11655:18;11692;11713:5;-1:-1:-1;;;;;11713:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11713:20:0;;-1:-1:-1;11753:27:0;11783:29;11713:20;11783:17;:29::i;:::-;-1:-1:-1;;;;;11886:23:0;;;;;;:11;:23;;;;;;11753:59;;-1:-1:-1;11864:45:0;;:93;;-1:-1:-1;;;;;11934:23:0;;;;;;:11;:23;;;;;;11864:93;;;11912:19;11864:93;11845:112;;11994:1;11974:16;:21;11970:144;;12053:1;12031:19;:23;:71;;-1:-1:-1;;;;;12079:23:0;;;;;;:11;:23;;;;;;12031:71;;;12057:19;12031:71;12012:90;;11970:144;-1:-1:-1;;;;;12161:23:0;;;;;;:11;:23;;;;;;12139:45;;:93;;-1:-1:-1;;;;;12209:23:0;;;;;;:11;:23;;;;;;12139:93;;;12187:19;12139:93;12126:106;;12263:1;12249:10;:15;12245:132;;12316:1;12294:19;:23;:71;;-1:-1:-1;;;;;12342:23:0;;;;;;:11;:23;;;;;;12294:71;;;12320:19;12294:71;12281:84;;12245:132;11565:821;;;;;:::o;6276:538::-;5005:5;;-1:-1:-1;;;;;5005:5:0;4991:10;:19;4983:42;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;;;;6436:29:::1;6468:17;:22;6486:3;6468:22;;;;;;;;;;;;;;;;;;;;;;;;;;;6436:54;;6605:26;6625:5;;6605:15;:19;;:26;;;;:::i;:::-;6585:17;::::0;;::::1;:46:::0;;;6642:19;;-1:-1:-1;;6642:19:0::1;;::::0;;6763:43:::1;::::0;::::1;::::0;6783:3;;6763:43;6783:3;6763:43:::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;5036:1;6276:538:::0;:::o;7521:41::-;7558:4;7521:41;:::o;4826:20::-;;;;:::o;4772:47::-;4812:7;4772:47;:::o;7660:39::-;;;;:::o;8384:644::-;5005:5;;-1:-1:-1;;;;;5005:5:0;4991:10;:19;4983:42;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;;;;8448:27:::1;5103:28;;:::i;:::-;5134:17;:22;5152:3;5134:22;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;5134:22:0;5103:53;;;;::::1;::::0;;;;;::::1;;;;::::0;;;;;;::::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;5175:20:0::1;5167:43;;;::::0;;-1:-1:-1;;;5167:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5167:43:0;;;;;;;;;;;;;::::1;;5250:15;5229:5;:17;;;:36;;5221:59;;;::::0;;-1:-1:-1;;;5221:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5221:59:0;;;;;;;;;;;;;::::1;;5299:17;::::0;::::1;::::0;5338:15:::1;::::0;5299:35:::1;::::0;4705:7:::1;5299:21;:35::i;:::-;:54;;5291:77;;;::::0;;-1:-1:-1;;;5291:77:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5291:77:0;;;;;;;;;;;;;::::1;;8610:17:::2;8578:29;8610:46:::0;;;::::2;::::0;;8759:10;8751:38:::2;;;::::0;;-1:-1:-1;;;8751:38:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;8751:38:0;;;;;;;;;;;;;::::2;;8884:10;:19:::0;;;;-1:-1:-1;;8914:20:0;;-1:-1:-1;;8914:20:0::2;::::0;;8384:644::o;4566:20::-;;;-1:-1:-1;;;;;4566:20:0;;:::o;7606:19::-;;;-1:-1:-1;;;;;7606:19:0;;:::o;7974:45::-;;;-1:-1:-1;;;;;7974:45:0;;:::o;7865:47::-;;;;;;;;;;;;;:::o;7748:49::-;;;;:::o;9884:1598::-;9972:10;9986:9;9972:23;9964:54;;;;;-1:-1:-1;;;9964:54:0;;;;;;;;;;;;-1:-1:-1;;;9964:54:0;;;;;;;;;;;;;;;10047:4;;-1:-1:-1;;;;;10037:14:0;;;10047:4;;10037:14;;10029:40;;;;;-1:-1:-1;;;10029:40:0;;;;;;;;;;;;-1:-1:-1;;;10029:40:0;;;;;;;;;;;;;;;10082:27;10112:25;10130:6;10112:17;:25::i;:::-;10082:55;;10168:16;10187:6;10168:25;;10206:27;10236:64;10296:3;10236:55;10260:30;;10236:19;:23;;:55;;;;:::i;:::-;:59;;:64::i;:::-;10206:94;-1:-1:-1;10311:17:0;10331:44;:19;10206:94;10331:23;:44::i;:::-;10311:64;-1:-1:-1;10386:17:0;10406:44;:19;10430;10406:23;:44::i;:::-;10386:64;;10481:9;10471:6;:19;;:42;;;;;10504:9;10494:6;:19;;10471:42;10463:68;;;;;-1:-1:-1;;;10463:68:0;;;;;;;;;;;;-1:-1:-1;;;10463:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10562:20:0;;10585:1;10562:20;;;:12;:20;;;;;;:24;;;;:115;;-1:-1:-1;;;;;;10639:20:0;;;;;;:12;:20;;;;;;10614:63;;10639:37;;10672:3;;10639:28;;10664:2;10639:24;:28::i;:37::-;-1:-1:-1;;;;;10614:20:0;;;;;;:12;:20;;;;;;;:24;:63::i;:::-;10603:8;:74;10562:115;10544:250;;;-1:-1:-1;;;;;10744:20:0;;;;;;:12;:20;;;;;;10719:63;;10744:37;;10777:3;;10744:28;;10769:2;10744:24;:28::i;10719:63::-;10708:74;;10544:250;-1:-1:-1;;;;;10824:20:0;;10847:1;10824:20;;;:12;:20;;;;;;:24;;;;:115;;-1:-1:-1;;;;;;10901:20:0;;;;;;:12;:20;;;;;;10876:63;;10901:37;;10934:3;;10901:28;;10926:2;10901:24;:28::i;:37::-;-1:-1:-1;;;;;10876:20:0;;;;;;:12;:20;;;;;;;:24;:63::i;:::-;10865:8;:74;10824:115;10806:250;;;-1:-1:-1;;;;;11006:20:0;;;;;;:12;:20;;;;;;10981:63;;11006:37;;11039:3;;11006:28;;11031:2;11006:24;:28::i;10981:63::-;10970:74;;10806:250;-1:-1:-1;;;;;11092:19:0;;;;;;:11;:19;;;;;;;;:30;;;11203:10;;11179:11;:19;;;;;;;11218:3;;11179:35;;:19;:23;:35::i;:::-;:42;11175:158;;-1:-1:-1;;;;;11238:19:0;;;;;;:11;:19;;;;;;;;11261:3;11238:26;;11302:11;:19;;;;;;11279:12;:20;;;;;;:42;11175:158;11432:42;;;-1:-1:-1;;;;;11432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9884:1598;;;;;;;:::o;4719:46::-;4759:6;4719:46;:::o;4595:62::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7919:46::-;;;;;;;;;;;;;:::o;5580:217::-;5005:5;;-1:-1:-1;;;;;5005:5:0;4991:10;:19;4983:42;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;;;;4759:6:::1;5647;:23;;5639:57;;;::::0;;-1:-1:-1;;;5639:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5639:57:0;;;;;;;;;;;;;::::1;;4812:7;5715:6;:23;;5707:57;;;::::0;;-1:-1:-1;;;5707:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5707:57:0;;;;;;;;;;;;;::::1;;5775:5;:14:::0;5580:217::o;5805:463::-;5005:5;;-1:-1:-1;;;;;5005:5:0;4991:10;:19;4983:42;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;;;;5965:29:::1;5997:17;:22;6015:3;5997:22;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;;;-1:-1:-1;5997:22:0;6114:20;;-1:-1:-1;;6114:20:0::1;::::0;;6236:24;;5997:22;;-1:-1:-1;6236:24:0::1;::::0;6256:3;;6236:24;6256:3;6236:24:::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;5036:1;5805:463:::0;:::o;6822:572::-;5005:5;;-1:-1:-1;;;;;5005:5:0;4991:10;:19;4983:42;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;-1:-1:-1;;;4983:42:0;;;;;;;;;;;;;;;6891:29:::1;5103:28;;:::i;:::-;5134:17;:22;5152:3;5134:22;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;5134:22:0;5103:53;;;;::::1;::::0;;;;;::::1;;;;::::0;;;;;;::::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;5175:20:0::1;5167:43;;;::::0;;-1:-1:-1;;;5167:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5167:43:0;;;;;;;;;;;;;::::1;;5250:15;5229:5;:17;;;:36;;5221:59;;;::::0;;-1:-1:-1;;;5221:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5221:59:0;;;;;;;;;;;;;::::1;;5299:17;::::0;::::1;::::0;5338:15:::1;::::0;5299:35:::1;::::0;4705:7:::1;5299:21;:35::i;:::-;:54;;5291:77;;;::::0;;-1:-1:-1;;;5291:77:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5291:77:0;;;;;;;;;;;;;::::1;;7023:29:::2;7055:48:::0;;:17:::2;:48;::::0;;-1:-1:-1;;;;;7206:20:0;::::2;7198:48;;;::::0;;-1:-1:-1;;;7198:48:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;7198:48:0;;;;;;;;;;;;;::::2;;7341:5;:14:::0;;-1:-1:-1;;;;;;7341:14:0::2;-1:-1:-1::0;;;;;7341:14:0;;;::::2;::::0;;;::::2;::::0;;;-1:-1:-1;;7366:20:0;;-1:-1:-1;;7366:20:0::2;::::0;;6822:572::o;1031:149::-;1089:7;1117:5;;;1137:6;;;;1129:30;;;;;-1:-1:-1;;;1129:30:0;;;;;;;;;;;;-1:-1:-1;;;1129:30:0;;;;;;;;;;;;;;;1173:1;-1:-1:-1;1031:149:0;;;;;:::o;151:196::-;209:7;229:6;225:37;;-1:-1:-1;253:1:0;246:8;;225:37;280:5;;;284:1;280;:5;:1;300:5;;;;;:10;292:34;;;;;-1:-1:-1;;;292:34:0;;;;;;;;;;;;-1:-1:-1;;;292:34:0;;;;;;;;;;;;;;434:283;492:7;520:1;516;:5;508:29;;;;;-1:-1:-1;;;508:29:0;;;;;;;;;;;;-1:-1:-1;;;508:29:0;;;;;;;;;;;;;;;596:9;612:1;608;:5;;;;;;;434:283;-1:-1:-1;;;;434:283:0:o;835:129::-;893:7;922:1;917;:6;;909:30;;;;;-1:-1:-1;;;909:30:0;;;;;;;;;;;;-1:-1:-1;;;909:30:0;;;;;;;;;;;;;;;-1:-1:-1;953:5:0;;;835:129::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://5beedb0d0c994d957406a707495cac07b8740de868c744d2cc55ba6b4c2722b6
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading