Overview
AVAX Balance
0 AVAX
AVAX Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Emergency Withdr... | 38776436 | 373 days ago | IN | 0 AVAX | 0.00228852 | ||||
Set Reward Rate | 7377682 | 1117 days ago | IN | 0 AVAX | 0.00180819 | ||||
Transfer Ownersh... | 7377645 | 1117 days ago | IN | 0 AVAX | 0.0018209 | ||||
Transfer Ownersh... | 6716189 | 1132 days ago | IN | 0 AVAX | 0.00079527 | ||||
Transfer Ownersh... | 6716070 | 1132 days ago | IN | 0 AVAX | 0.00079527 | ||||
Transfer Ownersh... | 6715721 | 1132 days ago | IN | 0 AVAX | 0.00079527 | ||||
Transfer | 6101568 | 1147 days ago | IN | 20,000 AVAX | 0.00052637 | ||||
Set Reward Rate | 6101135 | 1147 days ago | IN | 0 AVAX | 0.00118417 | ||||
Transfer | 6100962 | 1147 days ago | IN | 10 AVAX | 0.00052637 | ||||
Set Reward Rate | 6100565 | 1147 days ago | IN | 0 AVAX | 0.00118387 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
38776436 | 373 days ago | 56.14429459 AVAX | ||||
38104831 | 389 days ago | 0.01829961 AVAX | ||||
37806859 | 396 days ago | 0.05894283 AVAX | ||||
37704122 | 398 days ago | 0.00255903 AVAX | ||||
37233353 | 409 days ago | 2.71269154 AVAX | ||||
37189058 | 410 days ago | 0.00432932 AVAX | ||||
37118541 | 412 days ago | 0.09615693 AVAX | ||||
35695041 | 446 days ago | 0.00023003 AVAX | ||||
35349504 | 454 days ago | 0.40959323 AVAX | ||||
34649608 | 471 days ago | 0.00600712 AVAX | ||||
34475385 | 475 days ago | 0.00153091 AVAX | ||||
31734987 | 540 days ago | 0.02736609 AVAX | ||||
31610105 | 543 days ago | 0.00370197 AVAX | ||||
31589952 | 544 days ago | 2.21050327 AVAX | ||||
31118120 | 555 days ago | 0.0013301 AVAX | ||||
31067680 | 556 days ago | 0.00035671 AVAX | ||||
30953108 | 559 days ago | 0.02879783 AVAX | ||||
30540544 | 568 days ago | 0.00027225 AVAX | ||||
30481439 | 570 days ago | 0.00202528 AVAX | ||||
30462084 | 570 days ago | 0.00178856 AVAX | ||||
29741931 | 587 days ago | 0.03801803 AVAX | ||||
29564927 | 591 days ago | 0.36656953 AVAX | ||||
29435867 | 594 days ago | 0.01317753 AVAX | ||||
29369965 | 596 days ago | 0.00042114 AVAX | ||||
28931404 | 606 days ago | 0.00734856 AVAX |
Loading...
Loading
Contract Name:
SimpleRewarderPerSec
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2021-11-09 */ // File: @openzeppelin/contracts/math/SafeMath.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity >=0.6.2 <0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: contracts/boringcrypto/BoringOwnable.sol pragma solidity 0.6.12; // Audit on 5-Jan-2021 by Keno and BoringCrypto // Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol // Edited by BoringCrypto contract BoringOwnableData { address public owner; address public pendingOwner; } contract BoringOwnable is BoringOwnableData { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /// @notice `owner` defaults to msg.sender on construction. constructor() public { owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } /// @notice Transfers ownership to `newOwner`. Either directly or claimable by the new pending owner. /// Can only be invoked by the current `owner`. /// @param newOwner Address of the new owner. /// @param direct True if `newOwner` should be set immediately. False if `newOwner` needs to use `claimOwnership`. /// @param renounce Allows the `newOwner` to be `address(0)` if `direct` and `renounce` is True. Has no effect otherwise. function transferOwnership( address newOwner, bool direct, bool renounce ) public onlyOwner { if (direct) { // Checks require(newOwner != address(0) || renounce, "Ownable: zero address"); // Effects emit OwnershipTransferred(owner, newOwner); owner = newOwner; pendingOwner = address(0); } else { // Effects pendingOwner = newOwner; } } /// @notice Needs to be called by `pendingOwner` to claim ownership. function claimOwnership() public { address _pendingOwner = pendingOwner; // Checks require(msg.sender == _pendingOwner, "Ownable: caller != pending owner"); // Effects emit OwnershipTransferred(owner, _pendingOwner); owner = _pendingOwner; pendingOwner = address(0); } /// @notice Only allows the `owner` to execute the function. modifier onlyOwner() { require(msg.sender == owner, "Ownable: caller is not the owner"); _; } } // File: contracts/interfaces/IERC20.sol pragma solidity 0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, 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); // EIP 2612 function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } // File: contracts/libraries/SafeERC20.sol pragma solidity 0.6.12; library SafeERC20 { function safeSymbol(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeName(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeDecimals(IERC20 token) public view returns (uint8) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567)); return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; } function safeTransfer( IERC20 token, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: Transfer failed"); } function safeTransferFrom( IERC20 token, address from, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call( abi.encodeWithSelector(0x23b872dd, from, address(this), amount) ); require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: TransferFrom failed"); } } // File: contracts/rewarders/SimpleRewarderPerSec.sol pragma solidity ^0.6.12; pragma experimental ABIEncoderV2; interface IRewarder { using SafeERC20 for IERC20; function onJoeReward(address user, uint256 newLpAmount) external; function pendingTokens(address user) external view returns (uint256 pending); function rewardToken() external view returns (IERC20); } interface IMasterChefJoe { using SafeERC20 for IERC20; struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. } struct PoolInfo { IERC20 lpToken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this poolInfo. SUSHI to distribute per block. uint256 lastRewardTimestamp; // Last block timestamp that SUSHI distribution occurs. uint256 accJoePerShare; // Accumulated SUSHI per share, times 1e12. See below. } function poolInfo(uint256 pid) external view returns (PoolInfo memory); function totalAllocPoint() external view returns (uint256); function deposit(uint256 _pid, uint256 _amount) external; } /** * This is a sample contract to be used in the MasterChefJoe contract for partners to reward * stakers with their native token alongside JOE. * * It assumes no minting rights, so requires a set amount of YOUR_TOKEN to be transferred to this contract prior. * E.g. say you've allocated 100,000 XYZ to the JOE-XYZ farm over 30 days. Then you would need to transfer * 100,000 XYZ and set the block reward accordingly so it's fully distributed after 30 days. * */ contract SimpleRewarderPerSec is IRewarder, BoringOwnable { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public immutable override rewardToken; IERC20 public immutable lpToken; bool public immutable isNative; IMasterChefJoe public immutable MCJ; /// @notice Info of each MCJ user. /// `amount` LP token amount the user has provided. /// `rewardDebt` The amount of YOUR_TOKEN entitled to the user. struct UserInfo { uint256 amount; uint256 rewardDebt; } /// @notice Info of each MCJ poolInfo. /// `accTokenPerShare` Amount of YOUR_TOKEN each LP token is worth. /// `lastRewardTimestamp` The last timestamp YOUR_TOKEN was rewarded to the poolInfo. struct PoolInfo { uint256 accTokenPerShare; uint256 lastRewardTimestamp; } /// @notice Info of the poolInfo. PoolInfo public poolInfo; /// @notice Info of each user that stakes LP tokens. mapping(address => UserInfo) public userInfo; uint256 public tokenPerSec; uint256 private constant ACC_TOKEN_PRECISION = 1e12; event OnReward(address indexed user, uint256 amount); event RewardRateUpdated(uint256 oldRate, uint256 newRate); modifier onlyMCJ { require(msg.sender == address(MCJ), "onlyMCJ: only MasterChefJoe can call this function"); _; } constructor( IERC20 _rewardToken, IERC20 _lpToken, uint256 _tokenPerSec, IMasterChefJoe _MCJ, bool _isNative ) public { require(Address.isContract(address(_rewardToken)), "constructor: reward token must be a valid contract"); require(Address.isContract(address(_lpToken)), "constructor: LP token must be a valid contract"); require(Address.isContract(address(_MCJ)), "constructor: MasterChefJoe must be a valid contract"); rewardToken = _rewardToken; lpToken = _lpToken; tokenPerSec = _tokenPerSec; MCJ = _MCJ; isNative = _isNative; poolInfo = PoolInfo({lastRewardTimestamp: block.timestamp, accTokenPerShare: 0}); } /// @notice Update reward variables of the given poolInfo. /// @return pool Returns the pool that was updated. function updatePool() public returns (PoolInfo memory pool) { pool = poolInfo; if (block.timestamp > pool.lastRewardTimestamp) { uint256 lpSupply = lpToken.balanceOf(address(MCJ)); if (lpSupply > 0) { uint256 timeElapsed = block.timestamp.sub(pool.lastRewardTimestamp); uint256 tokenReward = timeElapsed.mul(tokenPerSec); pool.accTokenPerShare = pool.accTokenPerShare.add((tokenReward.mul(ACC_TOKEN_PRECISION) / lpSupply)); } pool.lastRewardTimestamp = block.timestamp; poolInfo = pool; } } /// @notice Sets the distribution reward rate. This will also update the poolInfo. /// @param _tokenPerSec The number of tokens to distribute per second function setRewardRate(uint256 _tokenPerSec) external onlyOwner { updatePool(); uint256 oldRate = tokenPerSec; tokenPerSec = _tokenPerSec; emit RewardRateUpdated(oldRate, _tokenPerSec); } /// @notice Function called by MasterChefJoe whenever staker claims JOE harvest. Allows staker to also receive a 2nd reward token. /// @param _user Address of user /// @param _lpAmount Number of LP tokens the user has function onJoeReward(address _user, uint256 _lpAmount) external override onlyMCJ { updatePool(); PoolInfo memory pool = poolInfo; UserInfo storage user = userInfo[_user]; uint256 pending = (user.amount.mul(pool.accTokenPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt); uint256 prevAmount = user.amount; // Effects before interactions to prevent re-entrancy user.amount = _lpAmount; user.rewardDebt = user.amount.mul(pool.accTokenPerShare) / ACC_TOKEN_PRECISION; if (prevAmount > 0) { if (isNative) { uint256 balance = address(this).balance; if (pending > balance) { (bool success, ) = _user.call.value(balance)(""); require(success, "Transfer failed"); } else { (bool success, ) = _user.call.value(pending)(""); require(success, "Transfer failed"); } } else { uint256 balance = rewardToken.balanceOf(address(this)); if (pending > balance) { rewardToken.safeTransfer(_user, balance); } else { rewardToken.safeTransfer(_user, pending); } } } emit OnReward(_user, pending); } /// @notice View function to see pending tokens /// @param _user Address of user. /// @return pending reward for a given user. function pendingTokens(address _user) external view override returns (uint256 pending) { PoolInfo memory pool = poolInfo; UserInfo storage user = userInfo[_user]; uint256 accTokenPerShare = pool.accTokenPerShare; uint256 lpSupply = lpToken.balanceOf(address(MCJ)); if (block.timestamp > pool.lastRewardTimestamp && lpSupply != 0) { uint256 timeElapsed = block.timestamp.sub(pool.lastRewardTimestamp); uint256 tokenReward = timeElapsed.mul(tokenPerSec); accTokenPerShare = accTokenPerShare.add(tokenReward.mul(ACC_TOKEN_PRECISION).div(lpSupply)); } pending = (user.amount.mul(accTokenPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt); } /// @notice In case rewarder is stopped before emissions finished, this function allows /// withdrawal of remaining tokens. function emergencyWithdraw() public onlyOwner { if (isNative) { (bool success, ) = msg.sender.call.value(address(this).balance)(""); require(success, "Transfer failed"); } else { rewardToken.safeTransfer(address(msg.sender), rewardToken.balanceOf(address(this))); } } /// @notice View function to see balance of reward token. function balance() external view returns (uint256) { if (isNative) { return address(this).balance; } else { return rewardToken.balanceOf(address(this)); } } /// @notice payable function needed to receive AVAX receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_tokenPerSec","type":"uint256"},{"internalType":"contract IMasterChefJoe","name":"_MCJ","type":"address"},{"internalType":"bool","name":"_isNative","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OnReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"RewardRateUpdated","type":"event"},{"inputs":[],"name":"MCJ","outputs":[{"internalType":"contract IMasterChefJoe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNative","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_lpAmount","type":"uint256"}],"name":"onJoeReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"pendingTokens","outputs":[{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolInfo","outputs":[{"internalType":"uint256","name":"accTokenPerShare","type":"uint256"},{"internalType":"uint256","name":"lastRewardTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenPerSec","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenPerSec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePool","outputs":[{"components":[{"internalType":"uint256","name":"accTokenPerShare","type":"uint256"},{"internalType":"uint256","name":"lastRewardTimestamp","type":"uint256"}],"internalType":"struct SimpleRewarderPerSec.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6101006040523480156200001257600080fd5b50604051620028983803806200289883398181016040528101906200003891906200033f565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620000e985620002d060201b6200159a1760201c565b6200012b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012290620004f9565b60405180910390fd5b6200014184620002d060201b6200159a1760201c565b62000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a906200051b565b60405180910390fd5b6200019982620002d060201b6200159a1760201c565b620001db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001d2906200053d565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050826005819055508173ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080151560c081151560f81b81525050604051806040016040528060008152602001428152506002600082015181600001556020820151816001015590505050505050506200064a565b600080823b905060008111915050919050565b600081519050620002f481620005e2565b92915050565b6000815190506200030b81620005fc565b92915050565b600081519050620003228162000616565b92915050565b600081519050620003398162000630565b92915050565b600080600080600060a086880312156200035857600080fd5b60006200036888828901620002fa565b95505060206200037b88828901620002fa565b94505060406200038e8882890162000328565b9350506060620003a18882890162000311565b9250506080620003b488828901620002e3565b9150509295509295909350565b6000620003d06032836200055f565b91507f636f6e7374727563746f723a2072657761726420746f6b656e206d757374206260008301527f6520612076616c696420636f6e747261637400000000000000000000000000006020830152604082019050919050565b600062000438602e836200055f565b91507f636f6e7374727563746f723a204c5020746f6b656e206d75737420626520612060008301527f76616c696420636f6e74726163740000000000000000000000000000000000006020830152604082019050919050565b6000620004a06033836200055f565b91507f636f6e7374727563746f723a204d6173746572436865664a6f65206d7573742060008301527f626520612076616c696420636f6e7472616374000000000000000000000000006020830152604082019050919050565b600060208201905081810360008301526200051481620003c1565b9050919050565b60006020820190508181036000830152620005368162000429565b9050919050565b60006020820190508181036000830152620005588162000491565b9050919050565b600082825260208201905092915050565b60006200057d82620005b8565b9050919050565b60008115159050919050565b60006200059d8262000570565b9050919050565b6000620005b18262000570565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620005ed8162000584565b8114620005f957600080fd5b50565b620006078162000590565b81146200061357600080fd5b50565b6200062181620005a4565b81146200062d57600080fd5b50565b6200063b81620005d8565b81146200064757600080fd5b50565b60805160601c60a05160601c60c05160f81c60e05160601c6121c6620006d26000398061065b5280610b325280610fe652806114405250806107ef5280610d265280610e5252806111d7525080610d025280610faa528061140452508061098a5280610a425280610a925280610e8052806112b3528061135c528061157852506121c66000f3fe6080604052600436106101025760003560e01c806373cfc6b211610095578063c031a66f11610064578063c031a66f1461030c578063db2e21bc14610349578063e30c397814610360578063e3161ddd1461038b578063f7c618c1146103b657610109565b806373cfc6b2146102625780638da5cb5b1461028d5780639e447fc6146102b8578063b69ef8a8146102e157610109565b80634e71e0c8116100d15780634e71e0c8146101c957806350fd1f3e146101e05780635a2f3d091461020b5780635fcbd2851461023757610109565b8063078dfbe71461010e5780631959a002146101375780631a7af8b01461017557806330628e151461019e57610109565b3661010957005b600080fd5b34801561011a57600080fd5b50610135600480360381019061013091906118fb565b6103e1565b005b34801561014357600080fd5b5061015e600480360381019061015991906118d2565b610635565b60405161016c929190612002565b60405180910390f35b34801561018157600080fd5b5061019c6004803603810190610197919061194a565b610659565b005b3480156101aa57600080fd5b506101b3610b30565b6040516101c09190611e71565b60405180910390f35b3480156101d557600080fd5b506101de610b54565b005b3480156101ec57600080fd5b506101f5610ce8565b6040516102029190611fe7565b60405180910390f35b34801561021757600080fd5b50610220610cee565b60405161022e929190612002565b60405180910390f35b34801561024357600080fd5b5061024c610d00565b6040516102599190611e56565b60405180910390f35b34801561026e57600080fd5b50610277610d24565b6040516102849190611e3b565b60405180910390f35b34801561029957600080fd5b506102a2610d48565b6040516102af9190611ddc565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da91906119af565b610d6c565b005b3480156102ed57600080fd5b506102f6610e4e565b6040516103039190611fe7565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e91906118d2565b610f2d565b6040516103409190611fe7565b60405180910390f35b34801561035557600080fd5b5061035e611147565b005b34801561036c57600080fd5b506103756113a3565b6040516103829190611ddc565b60405180910390f35b34801561039757600080fd5b506103a06113c9565b6040516103ad9190611fcc565b60405180910390f35b3480156103c257600080fd5b506103cb611576565b6040516103d89190611e56565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046690611f4c565b60405180910390fd5b81156105ee57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806104ae5750805b6104ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e490611ecc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610630565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b60046020528060005260406000206000915090508060000154908060010154905082565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90611fac565b60405180910390fd5b6106ef6113c9565b506106f861184f565b60026040518060400160405290816000820154815260200160018201548152505090506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061079f826001015464e8d4a51000610789866000015186600001546115ad90919063ffffffff16565b8161079057fe5b0461161d90919063ffffffff16565b905060008260000154905084836000018190555064e8d4a510006107d4856000015185600001546115ad90919063ffffffff16565b816107db57fe5b0483600101819055506000811115610ada577f000000000000000000000000000000000000000000000000000000000000000015610986576000479050808311156108d25760008773ffffffffffffffffffffffffffffffffffffffff168260405161084690611dc7565b60006040518083038185875af1925050503d8060008114610883576040519150601f19603f3d011682016040523d82523d6000602084013e610888565b606091505b50509050806108cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c390611e8c565b60405180910390fd5b50610980565b60008773ffffffffffffffffffffffffffffffffffffffff16846040516108f890611dc7565b60006040518083038185875af1925050503d8060008114610935576040519150601f19603f3d011682016040523d82523d6000602084013e61093a565b606091505b505090508061097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097590611e8c565b60405180910390fd5b505b50610ad9565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109e19190611df7565b60206040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3191906119d8565b905080831115610a8b57610a8687827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661166d9092919063ffffffff16565b610ad7565b610ad687847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661166d9092919063ffffffff16565b5b505b5b8573ffffffffffffffffffffffffffffffffffffffff167fd1072bb52c3131d0c96197b73fb8a45637e30f8b6664fc142310cc9b242859b483604051610b209190611fe7565b60405180910390a2505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be090611f6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b60028060000154908060010154905082565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190611f4c565b60405180910390fd5b610e026113c9565b5060006005549050816005819055507fc390a98ace15a7bb6bab611eedfdbb2685043b241a869420043cdfb23ccfee508183604051610e42929190612002565b60405180910390a15050565b60007f000000000000000000000000000000000000000000000000000000000000000015610e7e57479050610f2a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ed79190611df7565b60206040518083038186803b158015610eef57600080fd5b505afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2791906119d8565b90505b90565b6000610f3761184f565b60026040518060400160405290816000820154815260200160018201548152505090506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260000151905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016110219190611ddc565b60206040518083038186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107191906119d8565b9050836020015142118015611087575060008114155b156111015760006110a585602001514261161d90919063ffffffff16565b905060006110be600554836115ad90919063ffffffff16565b90506110fc6110ed846110df64e8d4a51000856115ad90919063ffffffff16565b6117a490919063ffffffff16565b856117fa90919063ffffffff16565b935050505b61113c836001015464e8d4a510006111268587600001546115ad90919063ffffffff16565b8161112d57fe5b0461161d90919063ffffffff16565b945050505050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc90611f4c565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156112ad5760003373ffffffffffffffffffffffffffffffffffffffff164760405161122190611dc7565b60006040518083038185875af1925050503d806000811461125e576040519150601f19603f3d011682016040523d82523d6000602084013e611263565b606091505b50509050806112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90611e8c565b60405180910390fd5b506113a1565b6113a0337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161130a9190611df7565b60206040518083038186803b15801561132257600080fd5b505afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a91906119d8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661166d9092919063ffffffff16565b5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113d161184f565b600260405180604001604052908160008201548152602001600182015481525050905080602001514211156115735760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161147b9190611ddc565b60206040518083038186803b15801561149357600080fd5b505afa1580156114a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cb91906119d8565b9050600081111561154d5760006114ef83602001514261161d90919063ffffffff16565b90506000611508600554836115ad90919063ffffffff16565b90506115418361152664e8d4a51000846115ad90919063ffffffff16565b8161152d57fe5b0485600001516117fa90919063ffffffff16565b84600001818152505050505b428260200181815250508160026000820151816000015560208201518160010155905050505b90565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080823b905060008111915050919050565b6000808314156115c05760009050611617565b60008284029050828482816115d157fe5b0414611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160990611f2c565b60405180910390fd5b809150505b92915050565b600082821115611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990611eec565b60405180910390fd5b818303905092915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016116a0929190611e12565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516116ee9190611db0565b6000604051808303816000865af19150503d806000811461172b576040519150601f19603f3d011682016040523d82523d6000602084013e611730565b606091505b509150915081801561175e575060008151148061175d57508080602001905181019061175c9190611986565b5b5b61179d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179490611f8c565b60405180910390fd5b5050505050565b60008082116117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90611f0c565b60405180910390fd5b8183816117f157fe5b04905092915050565b600080828401905083811015611845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183c90611eac565b60405180910390fd5b8091505092915050565b604051806040016040528060008152602001600081525090565b6000813590506118788161214b565b92915050565b60008135905061188d81612162565b92915050565b6000815190506118a281612162565b92915050565b6000813590506118b781612179565b92915050565b6000815190506118cc81612179565b92915050565b6000602082840312156118e457600080fd5b60006118f284828501611869565b91505092915050565b60008060006060848603121561191057600080fd5b600061191e86828701611869565b935050602061192f8682870161187e565b92505060406119408682870161187e565b9150509250925092565b6000806040838503121561195d57600080fd5b600061196b85828601611869565b925050602061197c858286016118a8565b9150509250929050565b60006020828403121561199857600080fd5b60006119a684828501611893565b91505092915050565b6000602082840312156119c157600080fd5b60006119cf848285016118a8565b91505092915050565b6000602082840312156119ea57600080fd5b60006119f8848285016118bd565b91505092915050565b611a0a8161209a565b82525050565b611a1981612052565b82525050565b611a2881612064565b82525050565b6000611a398261202b565b611a438185612036565b9350611a53818560208601612118565b80840191505092915050565b611a68816120ac565b82525050565b611a77816120d0565b82525050565b6000611a8a600f83612041565b91507f5472616e73666572206661696c656400000000000000000000000000000000006000830152602082019050919050565b6000611aca601b83612041565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611b0a601583612041565b91507f4f776e61626c653a207a65726f206164647265737300000000000000000000006000830152602082019050919050565b6000611b4a601e83612041565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b6000611b8a601a83612041565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b6000611bca602183612041565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c30602083612041565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611c70602083612041565b91507f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726000830152602082019050919050565b6000611cb0601a83612041565b91507f5361666545524332303a205472616e73666572206661696c65640000000000006000830152602082019050919050565b6000611cf0600083612036565b9150600082019050919050565b6000611d0a603383612041565b91507f6f6e6c794d434a3a206f6e6c79204d6173746572436865664a6f65202063616e60008301527f2063616c6c20746869732066756e6374696f6e000000000000000000000000006020830152604082019050919050565b604082016000820151611d796000850182611d92565b506020820151611d8c6020850182611d92565b50505050565b611d9b81612090565b82525050565b611daa81612090565b82525050565b6000611dbc8284611a2e565b915081905092915050565b6000611dd282611ce3565b9150819050919050565b6000602082019050611df16000830184611a10565b92915050565b6000602082019050611e0c6000830184611a01565b92915050565b6000604082019050611e276000830185611a10565b611e346020830184611da1565b9392505050565b6000602082019050611e506000830184611a1f565b92915050565b6000602082019050611e6b6000830184611a5f565b92915050565b6000602082019050611e866000830184611a6e565b92915050565b60006020820190508181036000830152611ea581611a7d565b9050919050565b60006020820190508181036000830152611ec581611abd565b9050919050565b60006020820190508181036000830152611ee581611afd565b9050919050565b60006020820190508181036000830152611f0581611b3d565b9050919050565b60006020820190508181036000830152611f2581611b7d565b9050919050565b60006020820190508181036000830152611f4581611bbd565b9050919050565b60006020820190508181036000830152611f6581611c23565b9050919050565b60006020820190508181036000830152611f8581611c63565b9050919050565b60006020820190508181036000830152611fa581611ca3565b9050919050565b60006020820190508181036000830152611fc581611cfd565b9050919050565b6000604082019050611fe16000830184611d63565b92915050565b6000602082019050611ffc6000830184611da1565b92915050565b60006040820190506120176000830185611da1565b6120246020830184611da1565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061205d82612070565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006120a5826120f4565b9050919050565b60006120b7826120be565b9050919050565b60006120c982612070565b9050919050565b60006120db826120e2565b9050919050565b60006120ed82612070565b9050919050565b60006120ff82612106565b9050919050565b600061211182612070565b9050919050565b60005b8381101561213657808201518184015260208101905061211b565b83811115612145576000848401525b50505050565b61215481612052565b811461215f57600080fd5b50565b61216b81612064565b811461217657600080fd5b50565b61218281612090565b811461218d57600080fd5b5056fea2646970667358221220a2e72c75ace76c466a8af6dc0862c116a275153701fdf29469631d0956b3078d64736f6c634300060c0033000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a1500000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f000000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x6080604052600436106101025760003560e01c806373cfc6b211610095578063c031a66f11610064578063c031a66f1461030c578063db2e21bc14610349578063e30c397814610360578063e3161ddd1461038b578063f7c618c1146103b657610109565b806373cfc6b2146102625780638da5cb5b1461028d5780639e447fc6146102b8578063b69ef8a8146102e157610109565b80634e71e0c8116100d15780634e71e0c8146101c957806350fd1f3e146101e05780635a2f3d091461020b5780635fcbd2851461023757610109565b8063078dfbe71461010e5780631959a002146101375780631a7af8b01461017557806330628e151461019e57610109565b3661010957005b600080fd5b34801561011a57600080fd5b50610135600480360381019061013091906118fb565b6103e1565b005b34801561014357600080fd5b5061015e600480360381019061015991906118d2565b610635565b60405161016c929190612002565b60405180910390f35b34801561018157600080fd5b5061019c6004803603810190610197919061194a565b610659565b005b3480156101aa57600080fd5b506101b3610b30565b6040516101c09190611e71565b60405180910390f35b3480156101d557600080fd5b506101de610b54565b005b3480156101ec57600080fd5b506101f5610ce8565b6040516102029190611fe7565b60405180910390f35b34801561021757600080fd5b50610220610cee565b60405161022e929190612002565b60405180910390f35b34801561024357600080fd5b5061024c610d00565b6040516102599190611e56565b60405180910390f35b34801561026e57600080fd5b50610277610d24565b6040516102849190611e3b565b60405180910390f35b34801561029957600080fd5b506102a2610d48565b6040516102af9190611ddc565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da91906119af565b610d6c565b005b3480156102ed57600080fd5b506102f6610e4e565b6040516103039190611fe7565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e91906118d2565b610f2d565b6040516103409190611fe7565b60405180910390f35b34801561035557600080fd5b5061035e611147565b005b34801561036c57600080fd5b506103756113a3565b6040516103829190611ddc565b60405180910390f35b34801561039757600080fd5b506103a06113c9565b6040516103ad9190611fcc565b60405180910390f35b3480156103c257600080fd5b506103cb611576565b6040516103d89190611e56565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046690611f4c565b60405180910390fd5b81156105ee57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806104ae5750805b6104ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e490611ecc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610630565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b60046020528060005260406000206000915090508060000154908060010154905082565b7f000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f0073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90611fac565b60405180910390fd5b6106ef6113c9565b506106f861184f565b60026040518060400160405290816000820154815260200160018201548152505090506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061079f826001015464e8d4a51000610789866000015186600001546115ad90919063ffffffff16565b8161079057fe5b0461161d90919063ffffffff16565b905060008260000154905084836000018190555064e8d4a510006107d4856000015185600001546115ad90919063ffffffff16565b816107db57fe5b0483600101819055506000811115610ada577f000000000000000000000000000000000000000000000000000000000000000115610986576000479050808311156108d25760008773ffffffffffffffffffffffffffffffffffffffff168260405161084690611dc7565b60006040518083038185875af1925050503d8060008114610883576040519150601f19603f3d011682016040523d82523d6000602084013e610888565b606091505b50509050806108cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c390611e8c565b60405180910390fd5b50610980565b60008773ffffffffffffffffffffffffffffffffffffffff16846040516108f890611dc7565b60006040518083038185875af1925050503d8060008114610935576040519150601f19603f3d011682016040523d82523d6000602084013e61093a565b606091505b505090508061097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097590611e8c565b60405180910390fd5b505b50610ad9565b60007f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109e19190611df7565b60206040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3191906119d8565b905080831115610a8b57610a8687827f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c773ffffffffffffffffffffffffffffffffffffffff1661166d9092919063ffffffff16565b610ad7565b610ad687847f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c773ffffffffffffffffffffffffffffffffffffffff1661166d9092919063ffffffff16565b5b505b5b8573ffffffffffffffffffffffffffffffffffffffff167fd1072bb52c3131d0c96197b73fb8a45637e30f8b6664fc142310cc9b242859b483604051610b209190611fe7565b60405180910390a2505050505050565b7f000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f0081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be090611f6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b60028060000154908060010154905082565b7f000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a1581565b7f000000000000000000000000000000000000000000000000000000000000000181565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190611f4c565b60405180910390fd5b610e026113c9565b5060006005549050816005819055507fc390a98ace15a7bb6bab611eedfdbb2685043b241a869420043cdfb23ccfee508183604051610e42929190612002565b60405180910390a15050565b60007f000000000000000000000000000000000000000000000000000000000000000115610e7e57479050610f2a565b7f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ed79190611df7565b60206040518083038186803b158015610eef57600080fd5b505afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2791906119d8565b90505b90565b6000610f3761184f565b60026040518060400160405290816000820154815260200160018201548152505090506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260000151905060007f000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a1573ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f006040518263ffffffff1660e01b81526004016110219190611ddc565b60206040518083038186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107191906119d8565b9050836020015142118015611087575060008114155b156111015760006110a585602001514261161d90919063ffffffff16565b905060006110be600554836115ad90919063ffffffff16565b90506110fc6110ed846110df64e8d4a51000856115ad90919063ffffffff16565b6117a490919063ffffffff16565b856117fa90919063ffffffff16565b935050505b61113c836001015464e8d4a510006111268587600001546115ad90919063ffffffff16565b8161112d57fe5b0461161d90919063ffffffff16565b945050505050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc90611f4c565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000001156112ad5760003373ffffffffffffffffffffffffffffffffffffffff164760405161122190611dc7565b60006040518083038185875af1925050503d806000811461125e576040519150601f19603f3d011682016040523d82523d6000602084013e611263565b606091505b50509050806112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90611e8c565b60405180910390fd5b506113a1565b6113a0337f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161130a9190611df7565b60206040518083038186803b15801561132257600080fd5b505afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a91906119d8565b7f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c773ffffffffffffffffffffffffffffffffffffffff1661166d9092919063ffffffff16565b5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113d161184f565b600260405180604001604052908160008201548152602001600182015481525050905080602001514211156115735760007f000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a1573ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f006040518263ffffffff1660e01b815260040161147b9190611ddc565b60206040518083038186803b15801561149357600080fd5b505afa1580156114a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cb91906119d8565b9050600081111561154d5760006114ef83602001514261161d90919063ffffffff16565b90506000611508600554836115ad90919063ffffffff16565b90506115418361152664e8d4a51000846115ad90919063ffffffff16565b8161152d57fe5b0485600001516117fa90919063ffffffff16565b84600001818152505050505b428260200181815250508160026000820151816000015560208201518160010155905050505b90565b7f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c781565b600080823b905060008111915050919050565b6000808314156115c05760009050611617565b60008284029050828482816115d157fe5b0414611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160990611f2c565b60405180910390fd5b809150505b92915050565b600082821115611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990611eec565b60405180910390fd5b818303905092915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016116a0929190611e12565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516116ee9190611db0565b6000604051808303816000865af19150503d806000811461172b576040519150601f19603f3d011682016040523d82523d6000602084013e611730565b606091505b509150915081801561175e575060008151148061175d57508080602001905181019061175c9190611986565b5b5b61179d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179490611f8c565b60405180910390fd5b5050505050565b60008082116117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90611f0c565b60405180910390fd5b8183816117f157fe5b04905092915050565b600080828401905083811015611845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183c90611eac565b60405180910390fd5b8091505092915050565b604051806040016040528060008152602001600081525090565b6000813590506118788161214b565b92915050565b60008135905061188d81612162565b92915050565b6000815190506118a281612162565b92915050565b6000813590506118b781612179565b92915050565b6000815190506118cc81612179565b92915050565b6000602082840312156118e457600080fd5b60006118f284828501611869565b91505092915050565b60008060006060848603121561191057600080fd5b600061191e86828701611869565b935050602061192f8682870161187e565b92505060406119408682870161187e565b9150509250925092565b6000806040838503121561195d57600080fd5b600061196b85828601611869565b925050602061197c858286016118a8565b9150509250929050565b60006020828403121561199857600080fd5b60006119a684828501611893565b91505092915050565b6000602082840312156119c157600080fd5b60006119cf848285016118a8565b91505092915050565b6000602082840312156119ea57600080fd5b60006119f8848285016118bd565b91505092915050565b611a0a8161209a565b82525050565b611a1981612052565b82525050565b611a2881612064565b82525050565b6000611a398261202b565b611a438185612036565b9350611a53818560208601612118565b80840191505092915050565b611a68816120ac565b82525050565b611a77816120d0565b82525050565b6000611a8a600f83612041565b91507f5472616e73666572206661696c656400000000000000000000000000000000006000830152602082019050919050565b6000611aca601b83612041565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611b0a601583612041565b91507f4f776e61626c653a207a65726f206164647265737300000000000000000000006000830152602082019050919050565b6000611b4a601e83612041565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b6000611b8a601a83612041565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b6000611bca602183612041565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c30602083612041565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611c70602083612041565b91507f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726000830152602082019050919050565b6000611cb0601a83612041565b91507f5361666545524332303a205472616e73666572206661696c65640000000000006000830152602082019050919050565b6000611cf0600083612036565b9150600082019050919050565b6000611d0a603383612041565b91507f6f6e6c794d434a3a206f6e6c79204d6173746572436865664a6f65202063616e60008301527f2063616c6c20746869732066756e6374696f6e000000000000000000000000006020830152604082019050919050565b604082016000820151611d796000850182611d92565b506020820151611d8c6020850182611d92565b50505050565b611d9b81612090565b82525050565b611daa81612090565b82525050565b6000611dbc8284611a2e565b915081905092915050565b6000611dd282611ce3565b9150819050919050565b6000602082019050611df16000830184611a10565b92915050565b6000602082019050611e0c6000830184611a01565b92915050565b6000604082019050611e276000830185611a10565b611e346020830184611da1565b9392505050565b6000602082019050611e506000830184611a1f565b92915050565b6000602082019050611e6b6000830184611a5f565b92915050565b6000602082019050611e866000830184611a6e565b92915050565b60006020820190508181036000830152611ea581611a7d565b9050919050565b60006020820190508181036000830152611ec581611abd565b9050919050565b60006020820190508181036000830152611ee581611afd565b9050919050565b60006020820190508181036000830152611f0581611b3d565b9050919050565b60006020820190508181036000830152611f2581611b7d565b9050919050565b60006020820190508181036000830152611f4581611bbd565b9050919050565b60006020820190508181036000830152611f6581611c23565b9050919050565b60006020820190508181036000830152611f8581611c63565b9050919050565b60006020820190508181036000830152611fa581611ca3565b9050919050565b60006020820190508181036000830152611fc581611cfd565b9050919050565b6000604082019050611fe16000830184611d63565b92915050565b6000602082019050611ffc6000830184611da1565b92915050565b60006040820190506120176000830185611da1565b6120246020830184611da1565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061205d82612070565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006120a5826120f4565b9050919050565b60006120b7826120be565b9050919050565b60006120c982612070565b9050919050565b60006120db826120e2565b9050919050565b60006120ed82612070565b9050919050565b60006120ff82612106565b9050919050565b600061211182612070565b9050919050565b60005b8381101561213657808201518184015260208101905061211b565b83811115612145576000848401525b50505050565b61215481612052565b811461215f57600080fd5b50565b61216b81612064565b811461217657600080fd5b50565b61218281612090565b811461218d57600080fd5b5056fea2646970667358221220a2e72c75ace76c466a8af6dc0862c116a275153701fdf29469631d0956b3078d64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a1500000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f000000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : _rewardToken (address): 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7
Arg [1] : _lpToken (address): 0x454E67025631C065d3cFAD6d71E6892f74487a15
Arg [2] : _tokenPerSec (uint256): 100000000000000
Arg [3] : _MCJ (address): 0x188bED1968b795d5c9022F6a0bb5931Ac4c18F00
Arg [4] : _isNative (bool): True
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7
Arg [1] : 000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a15
Arg [2] : 00000000000000000000000000000000000000000000000000005af3107a4000
Arg [3] : 000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f00
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode Sourcemap
21989:6736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16696:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22985:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;25573:1388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22248:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17284:340;;;;;;;;;;;;;:::i;:::-;;23038:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22896:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;22173:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22211:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15842:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25100:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28414:214;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27111:752;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28005:338;;;;;;;;;;;;;:::i;:::-;;15869:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24285:644;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22122:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16696:506;17752:5;;;;;;;;;;17738:19;;:10;:19;;;17730:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16835:6:::1;16831:364;;;16909:1;16889:22;;:8;:22;;;;:34;;;;16915:8;16889:34;16881:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17023:8;16995:37;;17016:5;::::0;::::1;;;;;;;;16995:37;;;;;;;;;;;;17055:8;17047:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;17101:1;17078:12;;:25;;;;;;;;;;;;;;;;;;16831:364;;;17175:8;17160:12;;:23;;;;;;;;;;;;;;;;;;16831:364;16696:506:::0;;;:::o;22985:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25573:1388::-;23314:3;23292:26;;:10;:26;;;23284:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25665:12:::1;:10;:12::i;:::-;;25688:20;;:::i;:::-;25711:8;25688:31;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;25730:21;25754:8;:15;25763:5;25754:15;;;;;;;;;;;;;;;25730:39;;25780:15;25798:83;25865:4;:15;;;23118:4;25799:38;25815:4;:21;;;25799:4;:11;;;:15;;:38;;;;:::i;:::-;:60;;;;;;25798:66;;:83;;;;:::i;:::-;25780:101;;25892:18;25913:4;:11;;;25892:32;;26014:9;26000:4;:11;;:23;;;;23118:4;26052:38;26068:4;:21;;;26052:4;:11;;;:15;;:38;;;;:::i;:::-;:60;;;;;;26034:4;:15;;:78;;;;26142:1;26129:10;:14;26125:787;;;26164:8;26160:741;;;26193:15;26211:21;26193:39;;26265:7;26255;:17;26251:327;;;26298:12;26316:5;:10;;26333:7;26316:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26297:48;;;26376:7;26368:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;26251:327;;;;26453:12;26471:5;:10;;26488:7;26471:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26452:48;;;26531:7;26523:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;26251:327;;26160:741;;;;26618:15;26636:11;:21;;;26666:4;26636:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26618:54;;26705:7;26695;:17;26691:195;;;26737:40;26762:5;26769:7;26737:11;:24;;;;:40;;;;;:::i;:::-;26691:195;;;26826:40;26851:5;26858:7;26826:11;:24;;;;:40;;;;;:::i;:::-;26691:195;26160:741;;26125:787;26938:5;26929:24;;;26945:7;26929:24;;;;;;:::i;:::-;;;;;;;;23385:1;;;;25573:1388:::0;;:::o;22248:35::-;;;:::o;17284:340::-;17328:21;17352:12;;;;;;;;;;;17328:36;;17418:13;17404:27;;:10;:27;;;17396:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17534:13;17506:42;;17527:5;;;;;;;;;;17506:42;;;;;;;;;;;;17567:13;17559:5;;:21;;;;;;;;;;;;;;;;;;17614:1;17591:12;;:25;;;;;;;;;;;;;;;;;;17284:340;:::o;23038:26::-;;;;:::o;22896:24::-;;;;;;;;;;;;;;:::o;22173:31::-;;;:::o;22211:30::-;;;:::o;15842:20::-;;;;;;;;;;;;:::o;25100:232::-;17752:5;;;;;;;;;;17738:19;;:10;:19;;;17730:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25175:12:::1;:10;:12::i;:::-;;25200:15;25218:11;;25200:29;;25254:12;25240:11;:26;;;;25284:40;25302:7;25311:12;25284:40;;;;;;;:::i;:::-;;;;;;;;17805:1;25100:232:::0;:::o;28414:214::-;28456:7;28480:8;28476:145;;;28512:21;28505:28;;;;28476:145;28573:11;:21;;;28603:4;28573:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28566:43;;28414:214;;:::o;27111:752::-;27181:15;27209:20;;:::i;:::-;27232:8;27209:31;;;;;;;;;;;;;;;;;;;;;;;;;;;27251:21;27275:8;:15;27284:5;27275:15;;;;;;;;;;;;;;;27251:39;;27303:24;27330:4;:21;;;27303:48;;27362:16;27381:7;:17;;;27407:3;27381:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27362:50;;27447:4;:24;;;27429:15;:42;:59;;;;;27487:1;27475:8;:13;;27429:59;27425:330;;;27505:19;27527:45;27547:4;:24;;;27527:15;:19;;:45;;;;:::i;:::-;27505:67;;27587:19;27609:28;27625:11;;27609;:15;;:28;;;;:::i;:::-;27587:50;;27671:72;27692:50;27733:8;27692:36;23118:4;27692:11;:15;;:36;;;;:::i;:::-;:40;;:50;;;;:::i;:::-;27671:16;:20;;:72;;;;:::i;:::-;27652:91;;27425:330;;;27777:78;27839:4;:15;;;23118:4;27778:33;27794:16;27778:4;:11;;;:15;;:33;;;;:::i;:::-;:55;;;;;;27777:61;;:78;;;;:::i;:::-;27767:88;;27111:752;;;;;;;:::o;28005:338::-;17752:5;;;;;;;;;;17738:19;;:10;:19;;;17730:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28066:8:::1;28062:274;;;28092:12;28110:10;:15;;28132:21;28110:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28091:67;;;28181:7;28173:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;28062:274;;;;28241:83;28274:10;28287:11;:21;;;28317:4;28287:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28241:11;:24;;;;:83;;;;;:::i;:::-;28062:274;28005:338::o:0;15869:27::-;;;;;;;;;;;;;:::o;24285:644::-;24323:20;;:::i;:::-;24363:8;24356:15;;;;;;;;;;;;;;;;;;;;;;;;;;;24406:4;:24;;;24388:15;:42;24384:538;;;24447:16;24466:7;:17;;;24492:3;24466:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24447:50;;24529:1;24518:8;:12;24514:308;;;24551:19;24573:45;24593:4;:24;;;24573:15;:19;;:45;;;;:::i;:::-;24551:67;;24637:19;24659:28;24675:11;;24659;:15;;:28;;;;:::i;:::-;24637:50;;24730:76;24796:8;24757:36;23118:4;24757:11;:15;;:36;;;;:::i;:::-;:47;;;;;;24730:4;:21;;;:25;;:76;;;;:::i;:::-;24706:4;:21;;:100;;;;;24514:308;;;24865:15;24838:4;:24;;:42;;;;;24906:4;24895:8;:15;;;;;;;;;;;;;;;;;;;24384:538;;24285:644;:::o;22122:44::-;;;:::o;8267:422::-;8327:4;8535:12;8646:7;8634:20;8626:28;;8680:1;8673:4;:8;8666:15;;;8267:422;;;:::o;3707:220::-;3765:7;3794:1;3789;:6;3785:20;;;3804:1;3797:8;;;;3785:20;3816:9;3832:1;3828;:5;3816:17;;3861:1;3856;3852;:5;;;;;;:10;3844:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3918:1;3911:8;;;3707:220;;;;;:::o;3290:158::-;3348:7;3381:1;3376;:6;;3368:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;3439:1;3435;:5;3428:12;;3290:158;;;;:::o;19526:336::-;19645:12;19659:17;19688:5;19680:19;;19723:10;19735:2;19739:6;19700:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19680:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19644:103;;;;19766:7;:57;;;;;19793:1;19778:4;:11;:16;:44;;;;19809:4;19798:24;;;;;;;;;;;;:::i;:::-;19778:44;19766:57;19758:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19526:336;;;;;:::o;4405:153::-;4463:7;4495:1;4491;:5;4483:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;4549:1;4545;:5;;;;;;4538:12;;4405:153;;;;:::o;2828:179::-;2886:7;2906:9;2922:1;2918;:5;2906:17;;2947:1;2942;:6;;2934:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2998:1;2991:8;;;2828:179;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:124::-;;219:6;206:20;197:29;;231:30;255:5;231:30;:::i;:::-;191:75;;;;:::o;273:128::-;;354:6;348:13;339:22;;366:30;390:5;366:30;:::i;:::-;333:68;;;;:::o;408:130::-;;488:6;475:20;466:29;;500:33;527:5;500:33;:::i;:::-;460:78;;;;:::o;545:134::-;;629:6;623:13;614:22;;641:33;668:5;641:33;:::i;:::-;608:71;;;;:::o;686:241::-;;790:2;778:9;769:7;765:23;761:32;758:2;;;806:1;803;796:12;758:2;841:1;858:53;903:7;894:6;883:9;879:22;858:53;:::i;:::-;848:63;;820:97;752:175;;;;:::o;934:479::-;;;;1066:2;1054:9;1045:7;1041:23;1037:32;1034:2;;;1082:1;1079;1072:12;1034:2;1117:1;1134:53;1179:7;1170:6;1159:9;1155:22;1134:53;:::i;:::-;1124:63;;1096:97;1224:2;1242:50;1284:7;1275:6;1264:9;1260:22;1242:50;:::i;:::-;1232:60;;1203:95;1329:2;1347:50;1389:7;1380:6;1369:9;1365:22;1347:50;:::i;:::-;1337:60;;1308:95;1028:385;;;;;:::o;1420:366::-;;;1541:2;1529:9;1520:7;1516:23;1512:32;1509:2;;;1557:1;1554;1547:12;1509:2;1592:1;1609:53;1654:7;1645:6;1634:9;1630:22;1609:53;:::i;:::-;1599:63;;1571:97;1699:2;1717:53;1762:7;1753:6;1742:9;1738:22;1717:53;:::i;:::-;1707:63;;1678:98;1503:283;;;;;:::o;1793:257::-;;1905:2;1893:9;1884:7;1880:23;1876:32;1873:2;;;1921:1;1918;1911:12;1873:2;1956:1;1973:61;2026:7;2017:6;2006:9;2002:22;1973:61;:::i;:::-;1963:71;;1935:105;1867:183;;;;:::o;2057:241::-;;2161:2;2149:9;2140:7;2136:23;2132:32;2129:2;;;2177:1;2174;2167:12;2129:2;2212:1;2229:53;2274:7;2265:6;2254:9;2250:22;2229:53;:::i;:::-;2219:63;;2191:97;2123:175;;;;:::o;2305:263::-;;2420:2;2408:9;2399:7;2395:23;2391:32;2388:2;;;2436:1;2433;2426:12;2388:2;2471:1;2488:64;2544:7;2535:6;2524:9;2520:22;2488:64;:::i;:::-;2478:74;;2450:108;2382:186;;;;:::o;2575:142::-;2666:45;2705:5;2666:45;:::i;:::-;2661:3;2654:58;2648:69;;:::o;2724:113::-;2807:24;2825:5;2807:24;:::i;:::-;2802:3;2795:37;2789:48;;:::o;2844:104::-;2921:21;2936:5;2921:21;:::i;:::-;2916:3;2909:34;2903:45;;:::o;2955:356::-;;3083:38;3115:5;3083:38;:::i;:::-;3133:88;3214:6;3209:3;3133:88;:::i;:::-;3126:95;;3226:52;3271:6;3266:3;3259:4;3252:5;3248:16;3226:52;:::i;:::-;3299:6;3294:3;3290:16;3283:23;;3063:248;;;;;:::o;3318:154::-;3415:51;3460:5;3415:51;:::i;:::-;3410:3;3403:64;3397:75;;:::o;3479:172::-;3585:60;3639:5;3585:60;:::i;:::-;3580:3;3573:73;3567:84;;:::o;3659:315::-;;3819:67;3883:2;3878:3;3819:67;:::i;:::-;3812:74;;3919:17;3915:1;3910:3;3906:11;3899:38;3965:2;3960:3;3956:12;3949:19;;3805:169;;;:::o;3983:327::-;;4143:67;4207:2;4202:3;4143:67;:::i;:::-;4136:74;;4243:29;4239:1;4234:3;4230:11;4223:50;4301:2;4296:3;4292:12;4285:19;;4129:181;;;:::o;4319:321::-;;4479:67;4543:2;4538:3;4479:67;:::i;:::-;4472:74;;4579:23;4575:1;4570:3;4566:11;4559:44;4631:2;4626:3;4622:12;4615:19;;4465:175;;;:::o;4649:330::-;;4809:67;4873:2;4868:3;4809:67;:::i;:::-;4802:74;;4909:32;4905:1;4900:3;4896:11;4889:53;4970:2;4965:3;4961:12;4954:19;;4795:184;;;:::o;4988:326::-;;5148:67;5212:2;5207:3;5148:67;:::i;:::-;5141:74;;5248:28;5244:1;5239:3;5235:11;5228:49;5305:2;5300:3;5296:12;5289:19;;5134:180;;;:::o;5323:370::-;;5483:67;5547:2;5542:3;5483:67;:::i;:::-;5476:74;;5583:34;5579:1;5574:3;5570:11;5563:55;5652:3;5647:2;5642:3;5638:12;5631:25;5684:2;5679:3;5675:12;5668:19;;5469:224;;;:::o;5702:332::-;;5862:67;5926:2;5921:3;5862:67;:::i;:::-;5855:74;;5962:34;5958:1;5953:3;5949:11;5942:55;6025:2;6020:3;6016:12;6009:19;;5848:186;;;:::o;6043:332::-;;6203:67;6267:2;6262:3;6203:67;:::i;:::-;6196:74;;6303:34;6299:1;6294:3;6290:11;6283:55;6366:2;6361:3;6357:12;6350:19;;6189:186;;;:::o;6384:326::-;;6544:67;6608:2;6603:3;6544:67;:::i;:::-;6537:74;;6644:28;6640:1;6635:3;6631:11;6624:49;6701:2;6696:3;6692:12;6685:19;;6530:180;;;:::o;6719:296::-;;6896:83;6977:1;6972:3;6896:83;:::i;:::-;6889:90;;7007:1;7002:3;6998:11;6991:18;;6882:133;;;:::o;7024:388::-;;7184:67;7248:2;7243:3;7184:67;:::i;:::-;7177:74;;7284:34;7280:1;7275:3;7271:11;7264:55;7353:21;7348:2;7343:3;7339:12;7332:43;7403:2;7398:3;7394:12;7387:19;;7170:242;;;:::o;7503:505::-;7648:4;7643:3;7639:14;7743:4;7736:5;7732:16;7726:23;7755:63;7812:4;7807:3;7803:14;7789:12;7755:63;:::i;:::-;7668:156;7912:4;7905:5;7901:16;7895:23;7924:63;7981:4;7976:3;7972:14;7958:12;7924:63;:::i;:::-;7834:159;7621:387;;;:::o;8015:103::-;8088:24;8106:5;8088:24;:::i;:::-;8083:3;8076:37;8070:48;;:::o;8125:113::-;8208:24;8226:5;8208:24;:::i;:::-;8203:3;8196:37;8190:48;;:::o;8245:271::-;;8398:93;8487:3;8478:6;8398:93;:::i;:::-;8391:100;;8508:3;8501:10;;8379:137;;;;:::o;8523:379::-;;8730:147;8873:3;8730:147;:::i;:::-;8723:154;;8894:3;8887:10;;8711:191;;;:::o;8909:222::-;;9036:2;9025:9;9021:18;9013:26;;9050:71;9118:1;9107:9;9103:17;9094:6;9050:71;:::i;:::-;9007:124;;;;:::o;9138:238::-;;9273:2;9262:9;9258:18;9250:26;;9287:79;9363:1;9352:9;9348:17;9339:6;9287:79;:::i;:::-;9244:132;;;;:::o;9383:333::-;;9538:2;9527:9;9523:18;9515:26;;9552:71;9620:1;9609:9;9605:17;9596:6;9552:71;:::i;:::-;9634:72;9702:2;9691:9;9687:18;9678:6;9634:72;:::i;:::-;9509:207;;;;;:::o;9723:210::-;;9844:2;9833:9;9829:18;9821:26;;9858:65;9920:1;9909:9;9905:17;9896:6;9858:65;:::i;:::-;9815:118;;;;:::o;9940:250::-;;10081:2;10070:9;10066:18;10058:26;;10095:85;10177:1;10166:9;10162:17;10153:6;10095:85;:::i;:::-;10052:138;;;;:::o;10197:268::-;;10347:2;10336:9;10332:18;10324:26;;10361:94;10452:1;10441:9;10437:17;10428:6;10361:94;:::i;:::-;10318:147;;;;:::o;10472:416::-;;10672:2;10661:9;10657:18;10649:26;;10722:9;10716:4;10712:20;10708:1;10697:9;10693:17;10686:47;10747:131;10873:4;10747:131;:::i;:::-;10739:139;;10643:245;;;:::o;10895:416::-;;11095:2;11084:9;11080:18;11072:26;;11145:9;11139:4;11135:20;11131:1;11120:9;11116:17;11109:47;11170:131;11296:4;11170:131;:::i;:::-;11162:139;;11066:245;;;:::o;11318:416::-;;11518:2;11507:9;11503:18;11495:26;;11568:9;11562:4;11558:20;11554:1;11543:9;11539:17;11532:47;11593:131;11719:4;11593:131;:::i;:::-;11585:139;;11489:245;;;:::o;11741:416::-;;11941:2;11930:9;11926:18;11918:26;;11991:9;11985:4;11981:20;11977:1;11966:9;11962:17;11955:47;12016:131;12142:4;12016:131;:::i;:::-;12008:139;;11912:245;;;:::o;12164:416::-;;12364:2;12353:9;12349:18;12341:26;;12414:9;12408:4;12404:20;12400:1;12389:9;12385:17;12378:47;12439:131;12565:4;12439:131;:::i;:::-;12431:139;;12335:245;;;:::o;12587:416::-;;12787:2;12776:9;12772:18;12764:26;;12837:9;12831:4;12827:20;12823:1;12812:9;12808:17;12801:47;12862:131;12988:4;12862:131;:::i;:::-;12854:139;;12758:245;;;:::o;13010:416::-;;13210:2;13199:9;13195:18;13187:26;;13260:9;13254:4;13250:20;13246:1;13235:9;13231:17;13224:47;13285:131;13411:4;13285:131;:::i;:::-;13277:139;;13181:245;;;:::o;13433:416::-;;13633:2;13622:9;13618:18;13610:26;;13683:9;13677:4;13673:20;13669:1;13658:9;13654:17;13647:47;13708:131;13834:4;13708:131;:::i;:::-;13700:139;;13604:245;;;:::o;13856:416::-;;14056:2;14045:9;14041:18;14033:26;;14106:9;14100:4;14096:20;14092:1;14081:9;14077:17;14070:47;14131:131;14257:4;14131:131;:::i;:::-;14123:139;;14027:245;;;:::o;14279:416::-;;14479:2;14468:9;14464:18;14456:26;;14529:9;14523:4;14519:20;14515:1;14504:9;14500:17;14493:47;14554:131;14680:4;14554:131;:::i;:::-;14546:139;;14450:245;;;:::o;14702:326::-;;14881:2;14870:9;14866:18;14858:26;;14895:123;15015:1;15004:9;15000:17;14991:6;14895:123;:::i;:::-;14852:176;;;;:::o;15035:222::-;;15162:2;15151:9;15147:18;15139:26;;15176:71;15244:1;15233:9;15229:17;15220:6;15176:71;:::i;:::-;15133:124;;;;:::o;15264:333::-;;15419:2;15408:9;15404:18;15396:26;;15433:71;15501:1;15490:9;15486:17;15477:6;15433:71;:::i;:::-;15515:72;15583:2;15572:9;15568:18;15559:6;15515:72;:::i;:::-;15390:207;;;;;:::o;15604:121::-;;15697:5;15691:12;15681:22;;15662:63;;;:::o;15733:144::-;;15868:3;15853:18;;15846:31;;;;:::o;15886:163::-;;16001:6;15996:3;15989:19;16038:4;16033:3;16029:14;16014:29;;15982:67;;;;:::o;16057:91::-;;16119:24;16137:5;16119:24;:::i;:::-;16108:35;;16102:46;;;:::o;16155:85::-;;16228:5;16221:13;16214:21;16203:32;;16197:43;;;:::o;16247:121::-;;16320:42;16313:5;16309:54;16298:65;;16292:76;;;:::o;16375:72::-;;16437:5;16426:16;;16420:27;;;:::o;16454:129::-;;16541:37;16572:5;16541:37;:::i;:::-;16528:50;;16522:61;;;:::o;16590:149::-;;16683:51;16728:5;16683:51;:::i;:::-;16670:64;;16664:75;;;:::o;16746:122::-;;16839:24;16857:5;16839:24;:::i;:::-;16826:37;;16820:48;;;:::o;16875:167::-;;16977:60;17031:5;16977:60;:::i;:::-;16964:73;;16958:84;;;:::o;17049:131::-;;17151:24;17169:5;17151:24;:::i;:::-;17138:37;;17132:48;;;:::o;17187:121::-;;17266:37;17297:5;17266:37;:::i;:::-;17253:50;;17247:61;;;:::o;17315:108::-;;17394:24;17412:5;17394:24;:::i;:::-;17381:37;;17375:48;;;:::o;17431:268::-;17496:1;17503:101;17517:6;17514:1;17511:13;17503:101;;;17593:1;17588:3;17584:11;17578:18;17574:1;17569:3;17565:11;17558:39;17539:2;17536:1;17532:10;17527:15;;17503:101;;;17619:6;17616:1;17613:13;17610:2;;;17684:1;17675:6;17670:3;17666:16;17659:27;17610:2;17480:219;;;;:::o;17707:117::-;17776:24;17794:5;17776:24;:::i;:::-;17769:5;17766:35;17756:2;;17815:1;17812;17805:12;17756:2;17750:74;:::o;17831:111::-;17897:21;17912:5;17897:21;:::i;:::-;17890:5;17887:32;17877:2;;17933:1;17930;17923:12;17877:2;17871:71;:::o;17949:117::-;18018:24;18036:5;18018:24;:::i;:::-;18011:5;18008:35;17998:2;;18057:1;18054;18047:12;17998:2;17992:74;:::o
Swarm Source
ipfs://a2e72c75ace76c466a8af6dc0862c116a275153701fdf29469631d0956b3078d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.