Overview
ETH Balance
0 ETH
Eth Value
$0.00
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
There are no matching entriesUpdate your filters to view other transactions | |||||||||
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MCAGAggregator
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.17;
import {Errors} from "./libraries/Errors.sol";
import {IAccessControl} from "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol";
import {MCAGAggregatorInterface} from "./interfaces/MCAGAggregatorInterface.sol";
import {Roles} from "./libraries/Roles.sol";
import {WadRayMath} from "./libraries/WadRayMath.sol";
/**
* @title MCAG Aggregator
* @author MIMO Labs
* @notice MCAGAggregator contracts serve as an oracle for the MCAGRateFeed
*/
contract MCAGAggregator is MCAGAggregatorInterface {
using WadRayMath for uint256;
uint256 public constant MIN_TERM = 4 weeks;
uint8 private constant _VERSION = 1;
uint8 private constant _DECIMALS = 27;
uint256 private immutable _term;
IAccessControl public immutable accessController;
uint80 private _roundId;
string private _description;
int256 private _answer;
int256 private _maxAnswer;
uint256 private _volatilityThreshold;
uint256 private _updatedAt;
/**
* @dev Modifier to make a function callable only when the caller has a specific role
* @param role The role required to call the function
*/
modifier onlyRole(bytes32 role) {
if (!accessController.hasRole(role, msg.sender)) {
revert Errors.ACCESS_CONTROL_ACCOUNT_IS_MISSING_ROLE(msg.sender, role);
}
_;
}
/**
* @param description_ Description of the oracle - for example "10 YEAR US TREASURY".
* @param maxAnswer_ Maximum sensible answer the contract should accept during transmission
* @param _accessController MCAG AccessController
*/
constructor(
string memory description_,
int256 maxAnswer_,
IAccessControl _accessController,
int256 answer,
uint256 volatilityThreshold,
uint256 term
) {
if (address(_accessController) == address(0)) {
revert Errors.CANNOT_SET_TO_ADDRESS_ZERO();
}
if (volatilityThreshold <= 0) {
revert Errors.INVALID_VOLATILITY_THRESHOLD();
}
if (answer > maxAnswer_) {
revert Errors.TRANSMITTED_ANSWER_TOO_HIGH(answer, maxAnswer_);
}
if (term < MIN_TERM) {
revert Errors.TERM_TOO_LOW(term, MIN_TERM);
}
_description = description_;
_answer = answer;
_maxAnswer = maxAnswer_;
_volatilityThreshold = volatilityThreshold;
_updatedAt = block.timestamp;
_term = term;
accessController = _accessController;
emit AccessControllerSet(address(_accessController));
emit AnswerTransmitted(msg.sender, 0, answer);
emit MaxAnswerSet(0, maxAnswer_);
emit VolatilityThresholdSet(0, volatilityThreshold);
emit TermSet(term);
}
/**
* @notice Transmits a new price to the aggreator and updates the answer, round id and updated at.
* @dev Can only be called by a registered transmitter.
* @param answer New central bank rate as a per second cumualtive rate in 27 decimals.
* For example a 5% annual linear rate would be converted to a per second cumulative rate as follow :
* (1 + 5%)^(1 / 31536000) * 1e27 = 100000000578137865680459171
*/
function transmit(int256 answer) external onlyRole(Roles.MCAG_TRANSMITTER_ROLE) {
if (answer > _maxAnswer) {
revert Errors.TRANSMITTED_ANSWER_TOO_HIGH(answer, _maxAnswer);
}
if (answer < 0) {
revert Errors.TRANSMITTED_ANSWER_TOO_LOW(answer, 0);
}
int256 answer_ = _answer;
uint256 oldAnswer = uint256(answer_);
uint256 newAnswer = uint256(answer);
uint256 oldTotalLinearRate = oldAnswer.rayPow(_term);
uint256 newTotalLinearRate = newAnswer.rayPow(_term);
uint256 absoluteRateChange;
if (newTotalLinearRate > oldTotalLinearRate) {
absoluteRateChange = newTotalLinearRate - oldTotalLinearRate;
} else {
absoluteRateChange = oldTotalLinearRate - newTotalLinearRate;
}
if (absoluteRateChange > _volatilityThreshold) {
revert Errors.RATE_TOO_VOLATILE(absoluteRateChange, _volatilityThreshold);
}
++_roundId;
_updatedAt = block.timestamp;
_answer = answer;
emit AnswerTransmitted(msg.sender, _roundId, answer);
}
/**
* @notice Sets a new max answer.
* @dev Can only be called by MCAG Manager.
* @param newMaxAnswer New maximum sensible answer the contract should accept in RAY.
*/
function setMaxAnswer(int256 newMaxAnswer) external onlyRole(Roles.MCAG_MANAGER_ROLE) {
emit MaxAnswerSet(_maxAnswer, newMaxAnswer);
_maxAnswer = newMaxAnswer;
}
/**
* @notice Sets a new volatility threshold.
* @dev Can only be called by MCAG Manager.
* @param newVolatilityThreshold New maximum absolute value change of the answer between two consecutive rounds.
*/
function setVolatilityThreshold(uint256 newVolatilityThreshold) external onlyRole(Roles.MCAG_MANAGER_ROLE) {
if (newVolatilityThreshold == 0) {
revert Errors.INVALID_VOLATILITY_THRESHOLD();
}
emit VolatilityThresholdSet(_volatilityThreshold, newVolatilityThreshold);
_volatilityThreshold = newVolatilityThreshold;
}
/**
* @notice Returns round data per the Chainlink format.
* @return roundId Latest _roundId.
* @return answer Latest answer transmitted.
* @return startedAt Unused variable here only to follow Chainlink format.
* @return updatedAt Timestamp of the last transmitted answer.
* @return answeredInRound Latest _roundId.
*/
function latestRoundData()
external
view
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
{
roundId = _roundId;
answer = _answer;
startedAt = _updatedAt;
updatedAt = _updatedAt;
answeredInRound = _roundId;
}
/**
* @return Description of the oracle - for example "10 YEAR US TREASURY".
*/
function description() external view returns (string memory) {
return _description;
}
/**
* @return Maximum sensible answer the contract should accept.
*/
function maxAnswer() external view returns (int256) {
return _maxAnswer;
}
/**
* @return Maximum absolute value change of the answer between two consecutive rounds.
*/
function getVolatilityThreshold() external view returns (uint256) {
return _volatilityThreshold;
}
/**
* @return The term of oracle asset in seconds. For example 364 days for 52 week t-bills.
*/
function getTerm() external view returns (uint256) {
return _term;
}
/**
* @return Number of decimals used to get its user representation.
*/
function decimals() external pure returns (uint8) {
return _DECIMALS;
}
/**
* @return Contract version.
*/
function version() external pure returns (uint8) {
return _VERSION;
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.17;
interface MCAGAggregatorInterface {
event AccessControllerSet(address accesController);
event AnswerTransmitted(address indexed transmitter, uint80 roundId, int256 answer);
event MaxAnswerSet(int256 oldMaxAnswer, int256 newMaxAnswer);
event VolatilityThresholdSet(uint256 oldVolatilityThreshold, uint256 newVolatilityThreshold);
event TermSet(uint256 term);
function transmit(int256 answer) external;
function decimals() external view returns (uint8);
function description() external view returns (string memory);
function maxAnswer() external view returns (int256);
function getVolatilityThreshold() external view returns (uint256);
function version() external view returns (uint8);
function getTerm() external view returns (uint256);
function latestRoundData()
external
view
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
library Errors {
error CANNOT_SET_TO_ADDRESS_ZERO();
error ERC721_APPROVAL_TO_CURRENT_OWNER();
error ERC721_APPROVE_CALLER_IS_NOT_TOKEN_OWNER_OR_APPROVED_FOR_ALL();
error ERC721_INVALID_TOKEN_ID();
error ERC721_CALLER_IS_NOT_TOKEN_OWNER();
error ACCESS_CONTROL_ACCOUNT_IS_MISSING_ROLE(address account, bytes32 role);
error BLACKLIST_CALLER_IS_NOT_BLACKLISTER();
error BLACKLIST_ACCOUNT_IS_NOT_BLACKLISTED(address account);
error BLACKLIST_ACCOUNT_IS_BLACKLISTED(address account);
error TRANSMITTED_ANSWER_TOO_HIGH(int256 answer, int256 maxAnswer);
error TRANSMITTED_ANSWER_TOO_LOW(int256 answer, int256 minAnswer);
error TOKEN_IS_NOT_TRANSFERABLE();
error KYC_DATA_OWNER_MISMATCH(address to, address owner);
error RATE_TOO_VOLATILE(uint256 absoluteRateChange, uint256 volatilityThreshold);
error INVALID_VOLATILITY_THRESHOLD();
error TERMS_AND_CONDITIONS_URL_DOES_NOT_EXIST(uint256 tncId);
error TERM_TOO_LOW(uint256 term, uint256 minTerm);
error RISK_CATEGORY_MISMATCH(bytes4 currency, bytes32 name, uint64 term, bytes32 riskCategory);
error MATURITY_LESS_THAN_ISSUANCE(uint64 maturity, uint64 issuance);
error INVALID_RISK_CATEGORY();
error EMPTY_CUSIP_AND_ISIN();
error INVALID_MAX_COUPON();
error INVALID_COUPON(uint256 coupon, uint256 minCoupon, uint256 maxCoupon);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
library Roles {
bytes32 public constant MCAG_MINT_ROLE = keccak256("MCAG_MINT_ROLE");
bytes32 public constant MCAG_BURN_ROLE = keccak256("MCAG_BURN_ROLE");
bytes32 public constant MCAG_BLACKLIST_ROLE = keccak256("MCAG_BLACKLIST_ROLE");
bytes32 public constant MCAG_PAUSE_ROLE = keccak256("MCAG_PAUSE_ROLE");
bytes32 public constant MCAG_UNPAUSE_ROLE = keccak256("MCAG_UNPAUSE_ROLE");
bytes32 public constant MCAG_TRANSMITTER_ROLE = keccak256("MCAG_TRANSMITTER_ROLE");
bytes32 public constant MCAG_MANAGER_ROLE = keccak256("MCAG_MANAGER_ROLE");
bytes32 public constant MCAG_SET_URI_ROLE = keccak256("MCAG_SET_URI_ROLE");
bytes32 public constant MCAG_SET_TNC_ROLE = keccak256("MCAG_SET_TNC_ROLE");
bytes32 public constant MCAG_SET_MAX_COUPON_ROLE = keccak256("MCAG_SET_MAX_COUPON_ROLE");
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.17;
/**
* @title WadRayMath library
* @author Aave
* @notice Provides functions to perform calculations with Wad and Ray units
* @dev Provides mul and div function for wads (decimal numbers with 18 digits of precision) and rays (decimal numbers
* with 27 digits of precision)
* @dev Operations are rounded. If a value is >=.5, will be rounded up, otherwise rounded down.
*
*/
library WadRayMath {
// HALF_WAD and HALF_RAY expressed with extended notation as constant with operations are not supported in Yul assembly
uint256 internal constant WAD = 1e18;
uint256 internal constant HALF_WAD = 0.5e18;
uint256 internal constant RAY = 1e27;
uint256 internal constant HALF_RAY = 0.5e27;
uint256 internal constant WAD_RAY_RATIO = 1e9;
/**
* @dev Multiplies two wad, rounding half up to the nearest wad
* @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
* @param a Wad
* @param b Wad
* @return c = a*b, in wad
*
*/
function wadMul(uint256 a, uint256 b) internal pure returns (uint256 c) {
// to avoid overflow, a <= (type(uint256).max - HALF_WAD) / b
assembly {
if iszero(or(iszero(b), iszero(gt(a, div(sub(not(0), HALF_WAD), b))))) { revert(0, 0) }
c := div(add(mul(a, b), HALF_WAD), WAD)
}
}
/**
* @dev Divides two wad, rounding half up to the nearest wad
* @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
* @param a Wad
* @param b Wad
* @return c = a/b, in wad
*
*/
function wadDiv(uint256 a, uint256 b) internal pure returns (uint256 c) {
// to avoid overflow, a <= (type(uint256).max - halfB) / WAD
assembly {
if or(iszero(b), iszero(iszero(gt(a, div(sub(not(0), div(b, 2)), WAD))))) { revert(0, 0) }
c := div(add(mul(a, WAD), div(b, 2)), b)
}
}
/**
* @notice Multiplies two ray, rounding half up to the nearest ray
* @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
* @param a Ray
* @param b Ray
* @return c = a raymul b
*
*/
function rayMul(uint256 a, uint256 b) internal pure returns (uint256 c) {
// to avoid overflow, a <= (type(uint256).max - HALF_RAY) / b
assembly {
if iszero(or(iszero(b), iszero(gt(a, div(sub(not(0), HALF_RAY), b))))) { revert(0, 0) }
c := div(add(mul(a, b), HALF_RAY), RAY)
}
}
/**
* @notice Divides two ray, rounding half up to the nearest ray
* @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
* @param a Ray
* @param b Ray
* @return c = a raydiv b
*
*/
function rayDiv(uint256 a, uint256 b) internal pure returns (uint256 c) {
// to avoid overflow, a <= (type(uint256).max - halfB) / RAY
assembly {
if or(iszero(b), iszero(iszero(gt(a, div(sub(not(0), div(b, 2)), RAY))))) { revert(0, 0) }
c := div(add(mul(a, RAY), div(b, 2)), b)
}
}
/**
* @dev Casts ray down to wad
* @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
* @param a Ray
* @return b = a converted to wad, rounded half up to the nearest wad
*
*/
function rayToWad(uint256 a) internal pure returns (uint256 b) {
assembly {
b := div(a, WAD_RAY_RATIO)
let remainder := mod(a, WAD_RAY_RATIO)
if iszero(lt(remainder, div(WAD_RAY_RATIO, 2))) { b := add(b, 1) }
}
}
/**
* @dev Converts wad up to ray
* @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
* @param a Wad
* @return b = a converted in ray
*
*/
function wadToRay(uint256 a) internal pure returns (uint256 b) {
// to avoid overflow, b/WAD_RAY_RATIO == a
assembly {
b := mul(a, WAD_RAY_RATIO)
if iszero(eq(div(b, WAD_RAY_RATIO), a)) { revert(0, 0) }
}
}
/**
* @dev calculates base^exp. The code uses the ModExp precompile
* @return z base^exp, in ray
*
*/
function rayPow(uint256 x, uint256 n) internal pure returns (uint256 z) {
z = n % 2 != 0 ? x : RAY;
for (n /= 2; n != 0; n /= 2) {
x = rayMul(x, x);
if (n % 2 != 0) {
z = rayMul(z, x);
}
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
pragma solidity ^0.8.0;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControl {
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*
* _Available since v3.1._
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Emitted when `account` is revoked `role`.
*
* `sender` is the account that originated the contract call:
* - if using `revokeRole`, it is the admin role bearer
* - if using `renounceRole`, it is the role bearer (i.e. `account`)
*/
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) external view returns (bool);
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {AccessControl-_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) external view returns (bytes32);
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function grantRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function revokeRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been granted `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `account`.
*/
function renounceRole(bytes32 role, address account) external;
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"description_","type":"string"},{"internalType":"int256","name":"maxAnswer_","type":"int256"},{"internalType":"contract IAccessControl","name":"_accessController","type":"address"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"volatilityThreshold","type":"uint256"},{"internalType":"uint256","name":"term","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"ACCESS_CONTROL_ACCOUNT_IS_MISSING_ROLE","type":"error"},{"inputs":[],"name":"CANNOT_SET_TO_ADDRESS_ZERO","type":"error"},{"inputs":[],"name":"INVALID_VOLATILITY_THRESHOLD","type":"error"},{"inputs":[{"internalType":"uint256","name":"absoluteRateChange","type":"uint256"},{"internalType":"uint256","name":"volatilityThreshold","type":"uint256"}],"name":"RATE_TOO_VOLATILE","type":"error"},{"inputs":[{"internalType":"uint256","name":"term","type":"uint256"},{"internalType":"uint256","name":"minTerm","type":"uint256"}],"name":"TERM_TOO_LOW","type":"error"},{"inputs":[{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"int256","name":"maxAnswer","type":"int256"}],"name":"TRANSMITTED_ANSWER_TOO_HIGH","type":"error"},{"inputs":[{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"int256","name":"minAnswer","type":"int256"}],"name":"TRANSMITTED_ANSWER_TOO_LOW","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"accesController","type":"address"}],"name":"AccessControllerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":false,"internalType":"uint80","name":"roundId","type":"uint80"},{"indexed":false,"internalType":"int256","name":"answer","type":"int256"}],"name":"AnswerTransmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"oldMaxAnswer","type":"int256"},{"indexed":false,"internalType":"int256","name":"newMaxAnswer","type":"int256"}],"name":"MaxAnswerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"term","type":"uint256"}],"name":"TermSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVolatilityThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVolatilityThreshold","type":"uint256"}],"name":"VolatilityThresholdSet","type":"event"},{"inputs":[],"name":"MIN_TERM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract IAccessControl","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTerm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVolatilityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"newMaxAnswer","type":"int256"}],"name":"setMaxAnswer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVolatilityThreshold","type":"uint256"}],"name":"setVolatilityThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"answer","type":"int256"}],"name":"transmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"}]Contract Creation Code
60c06040523480156200001157600080fd5b5060405162001cfe38038062001cfe8339818101604052810190620000379190620005a8565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200009e576040517f6a8403ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008211620000d9576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84831315620001235782856040517f6bbbaae10000000000000000000000000000000000000000000000000000000081526004016200011a92919062000674565b60405180910390fd5b6224ea008110156200017357806224ea006040517f9fa7dec60000000000000000000000000000000000000000000000000000000081526004016200016a929190620006b2565b60405180910390fd5b856001908162000184919062000920565b508260028190555084600381905550816004819055504260058190555080608081815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fd0761a673d8d97d3dd1e8beb78920467f6482d897a3d1a77d0749f20c653130d846040516200020e919062000a18565b60405180910390a13373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b8406000856040516200026192919062000a8e565b60405180910390a27f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286000866040516200029d92919062000af4565b60405180910390a17f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600083604051620002d992919062000b5a565b60405180910390a17fc7280f97f846a9a86abb340951a554b3b460a661f096b87b54c1e05428f20c748160405162000312919062000b87565b60405180910390a150505050505062000ba4565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200038f8262000344565b810181811067ffffffffffffffff82111715620003b157620003b062000355565b5b80604052505050565b6000620003c662000326565b9050620003d4828262000384565b919050565b600067ffffffffffffffff821115620003f757620003f662000355565b5b620004028262000344565b9050602081019050919050565b60005b838110156200042f57808201518184015260208101905062000412565b60008484015250505050565b6000620004526200044c84620003d9565b620003ba565b9050828152602081018484840111156200047157620004706200033f565b5b6200047e8482856200040f565b509392505050565b600082601f8301126200049e576200049d6200033a565b5b8151620004b08482602086016200043b565b91505092915050565b6000819050919050565b620004ce81620004b9565b8114620004da57600080fd5b50565b600081519050620004ee81620004c3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200052182620004f4565b9050919050565b6000620005358262000514565b9050919050565b620005478162000528565b81146200055357600080fd5b50565b60008151905062000567816200053c565b92915050565b6000819050919050565b62000582816200056d565b81146200058e57600080fd5b50565b600081519050620005a28162000577565b92915050565b60008060008060008060c08789031215620005c857620005c762000330565b5b600087015167ffffffffffffffff811115620005e957620005e862000335565b5b620005f789828a0162000486565b96505060206200060a89828a01620004dd565b95505060406200061d89828a0162000556565b94505060606200063089828a01620004dd565b93505060806200064389828a0162000591565b92505060a06200065689828a0162000591565b9150509295509295509295565b6200066e81620004b9565b82525050565b60006040820190506200068b600083018562000663565b6200069a602083018462000663565b9392505050565b620006ac816200056d565b82525050565b6000604082019050620006c96000830185620006a1565b620006d86020830184620006a1565b9392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200073257607f821691505b602082108103620007485762000747620006ea565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000773565b620007be868362000773565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000801620007fb620007f5846200056d565b620007d6565b6200056d565b9050919050565b6000819050919050565b6200081d83620007e0565b620008356200082c8262000808565b84845462000780565b825550505050565b600090565b6200084c6200083d565b6200085981848462000812565b505050565b5b8181101562000881576200087560008262000842565b6001810190506200085f565b5050565b601f821115620008d0576200089a816200074e565b620008a58462000763565b81016020851015620008b5578190505b620008cd620008c48562000763565b8301826200085e565b50505b505050565b600082821c905092915050565b6000620008f560001984600802620008d5565b1980831691505092915050565b6000620009108383620008e2565b9150826002028217905092915050565b6200092b82620006df565b67ffffffffffffffff81111562000947576200094662000355565b5b62000953825462000719565b6200096082828562000885565b600060209050601f83116001811462000998576000841562000983578287015190505b6200098f858262000902565b865550620009ff565b601f198416620009a8866200074e565b60005b82811015620009d257848901518255600182019150602085019450602081019050620009ab565b86831015620009f25784890151620009ee601f891682620008e2565b8355505b6001600288020188555050505b505050505050565b62000a128162000514565b82525050565b600060208201905062000a2f600083018462000a07565b92915050565b6000819050919050565b600069ffffffffffffffffffff82169050919050565b600062000a7662000a7062000a6a8462000a35565b620007d6565b62000a3f565b9050919050565b62000a888162000a55565b82525050565b600060408201905062000aa5600083018562000a7d565b62000ab4602083018462000663565b9392505050565b600062000adc62000ad662000ad08462000a35565b620007d6565b620004b9565b9050919050565b62000aee8162000abb565b82525050565b600060408201905062000b0b600083018562000ae3565b62000b1a602083018462000663565b9392505050565b600062000b4262000b3c62000b368462000a35565b620007d6565b6200056d565b9050919050565b62000b548162000b21565b82525050565b600060408201905062000b71600083018562000b49565b62000b806020830184620006a1565b9392505050565b600060208201905062000b9e6000830184620006a1565b92915050565b60805160a05161111162000bed60003960008181610242015281816106560152818161069b015261081b0152600081816103cb01528181610402015261057801526111116000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637284e416116100715780637284e4161461016b578063bc43cbaf14610189578063d1d73635146101a7578063e9bded29146101c3578063f0604829146101df578063feaf968c146101fd576100b4565b80630452ed78146100b9578063124b65b4146100d5578063313ce567146100f357806353b8b8501461011157806354fd4d501461012f57806370da2f671461014d575b600080fd5b6100d360048036038101906100ce9190610aa6565b61021f565b005b6100dd610574565b6040516100ea9190610aec565b60405180910390f35b6100fb61059c565b6040516101089190610b23565b60405180910390f35b6101196105a5565b6040516101269190610aec565b60405180910390f35b6101376105af565b6040516101449190610b23565b60405180910390f35b6101556105b8565b6040516101629190610b4d565b60405180910390f35b6101736105c2565b6040516101809190610bf8565b60405180910390f35b610191610654565b60405161019e9190610c99565b60405180910390f35b6101c160048036038101906101bc9190610ce0565b610678565b005b6101dd60048036038101906101d89190610aa6565b6107f8565b005b6101e761093e565b6040516101f49190610aec565b60405180910390f35b610205610945565b604051610216959493929190610d32565b60405180910390f35b7fe6924b3e3549cbc71c8da5526215177ed4f734356390d258db06fc5a24837a697f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b815260040161029b929190610dbf565b602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc9190610e20565b61031f5733816040517f5dcee3bb000000000000000000000000000000000000000000000000000000008152600401610316929190610e4d565b60405180910390fd5b60035482131561036a57816003546040517f6bbbaae1000000000000000000000000000000000000000000000000000000008152600401610361929190610e76565b60405180910390fd5b60008212156103b3578160006040517f8bbdd4120000000000000000000000000000000000000000000000000000000081526004016103aa929190610eda565b60405180910390fd5b600060025490506000819050600084905060006103f97f00000000000000000000000000000000000000000000000000000000000000008461099690919063ffffffff16565b905060006104307f00000000000000000000000000000000000000000000000000000000000000008461099690919063ffffffff16565b905060008282111561044f5782826104489190610f32565b905061045e565b818361045b9190610f32565b90505b6004548111156104a957806004546040517f96f593a60000000000000000000000000000000000000000000000000000000081526004016104a0929190610f66565b60405180910390fd5b60008081819054906101000a900469ffffffffffffffffffff166104cc90610f8f565b91906101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555042600581905550876002819055503373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b84060008054906101000a900469ffffffffffffffffffff168a604051610562929190610fc1565b60405180910390a25050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000601b905090565b6000600454905090565b60006001905090565b6000600354905090565b6060600180546105d190611019565b80601f01602080910402602001604051908101604052809291908181526020018280546105fd90611019565b801561064a5780601f1061061f5761010080835404028352916020019161064a565b820191906000526020600020905b81548152906001019060200180831161062d57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b81526004016106f4929190610dbf565b602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610e20565b6107785733816040517f5dcee3bb00000000000000000000000000000000000000000000000000000000815260040161076f929190610e4d565b60405180910390fd5b600082036107b2576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600454836040516107e5929190610f66565b60405180910390a1816004819055505050565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b8152600401610874929190610dbf565b602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b59190610e20565b6108f85733816040517f5dcee3bb0000000000000000000000000000000000000000000000000000000081526004016108ef929190610e4d565b60405180910390fd5b7f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286003548360405161092b929190610e76565b60405180910390a1816003819055505050565b6224ea0081565b60008060008060008060009054906101000a900469ffffffffffffffffffff16945060025493506005549250600554915060008054906101000a900469ffffffffffffffffffff1690509091929394565b6000806002836109a69190611079565b036109bd576b033b2e3c9fd0803ce80000006109bf565b825b90506002826109ce91906110aa565b91505b60008214610a1a576109e38384610a20565b925060006002836109f49190611079565b14610a0657610a038184610a20565b90505b600282610a1391906110aa565b91506109d1565b92915050565b6000816b019d971e4fe8401e740000006000190304831115821517610a4457600080fd5b6b033b2e3c9fd0803ce80000006b019d971e4fe8401e740000008385020104905092915050565b600080fd5b6000819050919050565b610a8381610a70565b8114610a8e57600080fd5b50565b600081359050610aa081610a7a565b92915050565b600060208284031215610abc57610abb610a6b565b5b6000610aca84828501610a91565b91505092915050565b6000819050919050565b610ae681610ad3565b82525050565b6000602082019050610b016000830184610add565b92915050565b600060ff82169050919050565b610b1d81610b07565b82525050565b6000602082019050610b386000830184610b14565b92915050565b610b4781610a70565b82525050565b6000602082019050610b626000830184610b3e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ba2578082015181840152602081019050610b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bca82610b68565b610bd48185610b73565b9350610be4818560208601610b84565b610bed81610bae565b840191505092915050565b60006020820190508181036000830152610c128184610bbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c5f610c5a610c5584610c1a565b610c3a565b610c1a565b9050919050565b6000610c7182610c44565b9050919050565b6000610c8382610c66565b9050919050565b610c9381610c78565b82525050565b6000602082019050610cae6000830184610c8a565b92915050565b610cbd81610ad3565b8114610cc857600080fd5b50565b600081359050610cda81610cb4565b92915050565b600060208284031215610cf657610cf5610a6b565b5b6000610d0484828501610ccb565b91505092915050565b600069ffffffffffffffffffff82169050919050565b610d2c81610d0d565b82525050565b600060a082019050610d476000830188610d23565b610d546020830187610b3e565b610d616040830186610add565b610d6e6060830185610add565b610d7b6080830184610d23565b9695505050505050565b6000819050919050565b610d9881610d85565b82525050565b6000610da982610c1a565b9050919050565b610db981610d9e565b82525050565b6000604082019050610dd46000830185610d8f565b610de16020830184610db0565b9392505050565b60008115159050919050565b610dfd81610de8565b8114610e0857600080fd5b50565b600081519050610e1a81610df4565b92915050565b600060208284031215610e3657610e35610a6b565b5b6000610e4484828501610e0b565b91505092915050565b6000604082019050610e626000830185610db0565b610e6f6020830184610d8f565b9392505050565b6000604082019050610e8b6000830185610b3e565b610e986020830184610b3e565b9392505050565b6000819050919050565b6000610ec4610ebf610eba84610e9f565b610c3a565b610a70565b9050919050565b610ed481610ea9565b82525050565b6000604082019050610eef6000830185610b3e565b610efc6020830184610ecb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f3d82610ad3565b9150610f4883610ad3565b9250828203905081811115610f6057610f5f610f03565b5b92915050565b6000604082019050610f7b6000830185610add565b610f886020830184610add565b9392505050565b6000610f9a82610d0d565b915069ffffffffffffffffffff8203610fb657610fb5610f03565b5b600182019050919050565b6000604082019050610fd66000830185610d23565b610fe36020830184610b3e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061103157607f821691505b60208210810361104457611043610fea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061108482610ad3565b915061108f83610ad3565b92508261109f5761109e61104a565b5b828206905092915050565b60006110b582610ad3565b91506110c083610ad3565b9250826110d0576110cf61104a565b5b82820490509291505056fea264697066735822122004a17612a58f55d4609c9b745d271e740a5aea0be277e67756048ebd7c93514364736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000033b2e3d13455c38653f2c6d0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a7250000000000000000000000000000000000000000033b2e3cb24ecf390379af4b00000000000000000000000000000000000000000018d0bf423c03d8de0000000000000000000000000000000000000000000000000000000000000001dfe200000000000000000000000000000000000000000000000000000000000000001a353257205553205442696c6c2041646a75737465642052617465000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80637284e416116100715780637284e4161461016b578063bc43cbaf14610189578063d1d73635146101a7578063e9bded29146101c3578063f0604829146101df578063feaf968c146101fd576100b4565b80630452ed78146100b9578063124b65b4146100d5578063313ce567146100f357806353b8b8501461011157806354fd4d501461012f57806370da2f671461014d575b600080fd5b6100d360048036038101906100ce9190610aa6565b61021f565b005b6100dd610574565b6040516100ea9190610aec565b60405180910390f35b6100fb61059c565b6040516101089190610b23565b60405180910390f35b6101196105a5565b6040516101269190610aec565b60405180910390f35b6101376105af565b6040516101449190610b23565b60405180910390f35b6101556105b8565b6040516101629190610b4d565b60405180910390f35b6101736105c2565b6040516101809190610bf8565b60405180910390f35b610191610654565b60405161019e9190610c99565b60405180910390f35b6101c160048036038101906101bc9190610ce0565b610678565b005b6101dd60048036038101906101d89190610aa6565b6107f8565b005b6101e761093e565b6040516101f49190610aec565b60405180910390f35b610205610945565b604051610216959493929190610d32565b60405180910390f35b7fe6924b3e3549cbc71c8da5526215177ed4f734356390d258db06fc5a24837a697f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b815260040161029b929190610dbf565b602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc9190610e20565b61031f5733816040517f5dcee3bb000000000000000000000000000000000000000000000000000000008152600401610316929190610e4d565b60405180910390fd5b60035482131561036a57816003546040517f6bbbaae1000000000000000000000000000000000000000000000000000000008152600401610361929190610e76565b60405180910390fd5b60008212156103b3578160006040517f8bbdd4120000000000000000000000000000000000000000000000000000000081526004016103aa929190610eda565b60405180910390fd5b600060025490506000819050600084905060006103f97f0000000000000000000000000000000000000000000000000000000001dfe2008461099690919063ffffffff16565b905060006104307f0000000000000000000000000000000000000000000000000000000001dfe2008461099690919063ffffffff16565b905060008282111561044f5782826104489190610f32565b905061045e565b818361045b9190610f32565b90505b6004548111156104a957806004546040517f96f593a60000000000000000000000000000000000000000000000000000000081526004016104a0929190610f66565b60405180910390fd5b60008081819054906101000a900469ffffffffffffffffffff166104cc90610f8f565b91906101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555042600581905550876002819055503373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b84060008054906101000a900469ffffffffffffffffffff168a604051610562929190610fc1565b60405180910390a25050505050505050565b60007f0000000000000000000000000000000000000000000000000000000001dfe200905090565b6000601b905090565b6000600454905090565b60006001905090565b6000600354905090565b6060600180546105d190611019565b80601f01602080910402602001604051908101604052809291908181526020018280546105fd90611019565b801561064a5780601f1061061f5761010080835404028352916020019161064a565b820191906000526020600020905b81548152906001019060200180831161062d57829003601f168201915b5050505050905090565b7f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72581565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b81526004016106f4929190610dbf565b602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610e20565b6107785733816040517f5dcee3bb00000000000000000000000000000000000000000000000000000000815260040161076f929190610e4d565b60405180910390fd5b600082036107b2576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600454836040516107e5929190610f66565b60405180910390a1816004819055505050565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b8152600401610874929190610dbf565b602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b59190610e20565b6108f85733816040517f5dcee3bb0000000000000000000000000000000000000000000000000000000081526004016108ef929190610e4d565b60405180910390fd5b7f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286003548360405161092b929190610e76565b60405180910390a1816003819055505050565b6224ea0081565b60008060008060008060009054906101000a900469ffffffffffffffffffff16945060025493506005549250600554915060008054906101000a900469ffffffffffffffffffff1690509091929394565b6000806002836109a69190611079565b036109bd576b033b2e3c9fd0803ce80000006109bf565b825b90506002826109ce91906110aa565b91505b60008214610a1a576109e38384610a20565b925060006002836109f49190611079565b14610a0657610a038184610a20565b90505b600282610a1391906110aa565b91506109d1565b92915050565b6000816b019d971e4fe8401e740000006000190304831115821517610a4457600080fd5b6b033b2e3c9fd0803ce80000006b019d971e4fe8401e740000008385020104905092915050565b600080fd5b6000819050919050565b610a8381610a70565b8114610a8e57600080fd5b50565b600081359050610aa081610a7a565b92915050565b600060208284031215610abc57610abb610a6b565b5b6000610aca84828501610a91565b91505092915050565b6000819050919050565b610ae681610ad3565b82525050565b6000602082019050610b016000830184610add565b92915050565b600060ff82169050919050565b610b1d81610b07565b82525050565b6000602082019050610b386000830184610b14565b92915050565b610b4781610a70565b82525050565b6000602082019050610b626000830184610b3e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ba2578082015181840152602081019050610b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bca82610b68565b610bd48185610b73565b9350610be4818560208601610b84565b610bed81610bae565b840191505092915050565b60006020820190508181036000830152610c128184610bbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c5f610c5a610c5584610c1a565b610c3a565b610c1a565b9050919050565b6000610c7182610c44565b9050919050565b6000610c8382610c66565b9050919050565b610c9381610c78565b82525050565b6000602082019050610cae6000830184610c8a565b92915050565b610cbd81610ad3565b8114610cc857600080fd5b50565b600081359050610cda81610cb4565b92915050565b600060208284031215610cf657610cf5610a6b565b5b6000610d0484828501610ccb565b91505092915050565b600069ffffffffffffffffffff82169050919050565b610d2c81610d0d565b82525050565b600060a082019050610d476000830188610d23565b610d546020830187610b3e565b610d616040830186610add565b610d6e6060830185610add565b610d7b6080830184610d23565b9695505050505050565b6000819050919050565b610d9881610d85565b82525050565b6000610da982610c1a565b9050919050565b610db981610d9e565b82525050565b6000604082019050610dd46000830185610d8f565b610de16020830184610db0565b9392505050565b60008115159050919050565b610dfd81610de8565b8114610e0857600080fd5b50565b600081519050610e1a81610df4565b92915050565b600060208284031215610e3657610e35610a6b565b5b6000610e4484828501610e0b565b91505092915050565b6000604082019050610e626000830185610db0565b610e6f6020830184610d8f565b9392505050565b6000604082019050610e8b6000830185610b3e565b610e986020830184610b3e565b9392505050565b6000819050919050565b6000610ec4610ebf610eba84610e9f565b610c3a565b610a70565b9050919050565b610ed481610ea9565b82525050565b6000604082019050610eef6000830185610b3e565b610efc6020830184610ecb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f3d82610ad3565b9150610f4883610ad3565b9250828203905081811115610f6057610f5f610f03565b5b92915050565b6000604082019050610f7b6000830185610add565b610f886020830184610add565b9392505050565b6000610f9a82610d0d565b915069ffffffffffffffffffff8203610fb657610fb5610f03565b5b600182019050919050565b6000604082019050610fd66000830185610d23565b610fe36020830184610b3e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061103157607f821691505b60208210810361104457611043610fea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061108482610ad3565b915061108f83610ad3565b92508261109f5761109e61104a565b5b828206905092915050565b60006110b582610ad3565b91506110c083610ad3565b9250826110d0576110cf61104a565b5b82820490509291505056fea264697066735822122004a17612a58f55d4609c9b745d271e740a5aea0be277e67756048ebd7c93514364736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000033b2e3d13455c38653f2c6d0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a7250000000000000000000000000000000000000000033b2e3cb24ecf390379af4b00000000000000000000000000000000000000000018d0bf423c03d8de0000000000000000000000000000000000000000000000000000000000000001dfe200000000000000000000000000000000000000000000000000000000000000001a353257205553205442696c6c2041646a75737465642052617465000000000000
-----Decoded View---------------
Arg [0] : description_ (string): 52W US TBill Adjusted Rate
Arg [1] : maxAnswer_ (int256): 1000000008319516284844715117
Arg [2] : _accessController (address): 0x8b853de26973b6C772B1e29Bb127F1a60130a725
Arg [3] : answer (int256): 1000000001332589384447930187
Arg [4] : volatilityThreshold (uint256): 30000000000000000000000000
Arg [5] : term (uint256): 31449600
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000033b2e3d13455c38653f2c6d
Arg [2] : 0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a725
Arg [3] : 0000000000000000000000000000000000000000033b2e3cb24ecf390379af4b
Arg [4] : 00000000000000000000000000000000000000000018d0bf423c03d8de000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000001dfe200
Arg [6] : 000000000000000000000000000000000000000000000000000000000000001a
Arg [7] : 353257205553205442696c6c2041646a75737465642052617465000000000000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.