9669f033-142c-498f-a5e9-51ea916b6a54
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31318 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 110906 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 110907 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 110908 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 110909 | capability.graph | complete | 1 / 3 | 1 week ago |
| 110910 | detector.run | complete | 1 / 3 | 1 week ago |
| 110911 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:485441] OpenAI Codex v0.77.0 (research preview)
[codex:485441] --------
[codex:485441] workdir: /tmp/codex-multi-948ldl5w
[codex:485441] model: gpt-5.2-codex
[codex:485441] provider: openai
[codex:485441] approval: never
[codex:485441] sandbox: read-only
[codex:485441] reasoning effort: xhigh
[codex:485441] reasoning summaries: auto
[codex:485441] session id: 019b8002-f45e-73a0-8b97-3e28ddbd6d17
[codex:485441] --------
[codex:485441] user
[codex:485441] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:485441]
[codex:485441] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:485441]
[codex:485441] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:485441] - Gas inefficiency, code quality, naming, or best practices
[codex:485441] - Theoretical vulnerabilities without a clear extraction path
[codex:485441] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:485441] - Front-running unless it enables theft beyond MEV
[codex:485441] - DoS, griefing, or issues that don't result in attacker profit
[codex:485441] - Missing events, view function issues, or informational findings
[codex:485441]
[codex:485441] HIGH-VALUE PATTERNS TO HUNT:
[codex:485441] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:485441] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:485441] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:485441] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:485441] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:485441] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:485441] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:485441] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:485441] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:485441]
[codex:485441] For each finding, you MUST provide:
[codex:485441] 1. Exact file and line numbers of vulnerable code
[codex:485441] 2. Step-by-step exploit transaction sequence
[codex:485441] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:485441]
[codex:485441] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:485441]
[codex:485441] Output MUST be valid JSON matching the provided schema.
[codex:485441] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:485441] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:485441] mcp startup: no servers
[codex:485441]
[codex:485441] thinking
[codex:485441] **Preparing to explore project files**
[codex:485441] exec
[codex:485441] /bin/bash -lc ls in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] AUDIT_BUNDLE.txt
[codex:485441] codex-output-schema.json
[codex:485441] contracts
[codex:485441]
[codex:485441] thinking
[codex:485441] **Reading AUDIT_BUNDLE.txt**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:485441]
[codex:485441] ================================================================================
[codex:485441] FILE: contracts/AdditionalMath.sol
[codex:485441] ================================================================================
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441]
[codex:485441] pragma solidity ^0.7.0;
[codex:485441]
[codex:485441]
[codex:485441] import "./SafeMath.sol";
[codex:485441]
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Additional math operations
[codex:485441] */
[codex:485441] library AdditionalMath {
[codex:485441] using SafeMath for uint256;
[codex:485441]
[codex:485441] function max16(uint16 a, uint16 b) internal pure returns (uint16) {
[codex:485441]
[codex:485441] thinking
[codex:485441] **Searching for exploit patterns**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "function|withdraw|claim|refund|mint|burn|transfer" contracts' in /tmp/codex-multi-948ldl5w succeeded in 9ms:
[codex:485441] contracts/SafeERC20.sol:19: function safeTransfer(IERC20 token, address to, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:20: require(token.transfer(to, value));
[codex:485441] contracts/SafeERC20.sol:23: function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:24: require(token.transferFrom(from, to, value));
[codex:485441] contracts/SafeERC20.sol:27: function safeApprove(IERC20 token, address spender, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:35: function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:40: function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
[codex:485441] contracts/IERC20.sol:11: function transfer(address to, uint256 value) external returns (bool);
[codex:485441] contracts/IERC20.sol:13: function approve(address spender, uint256 value) external returns (bool);
[codex:485441] contracts/IERC20.sol:15: function transferFrom(address from, address to, uint256 value) external returns (bool);
[codex:485441] contracts/IERC20.sol:17: function totalSupply() external view returns (uint256);
[codex:485441] contracts/IERC20.sol:19: function balanceOf(address who) external view returns (uint256);
[codex:485441] contracts/IERC20.sol:21: function allowance(address owner, address spender) external view returns (uint256);
[codex:485441] contracts/Math.sol:14: function max(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:485441] contracts/Math.sol:21: function min(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:485441] contracts/Math.sol:30: function average(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:485441] contracts/Bits.sol:18: function toggleBit(uint256 self, uint8 index) internal pure returns (uint256) {
[codex:485441] contracts/Bits.sol:25: function bit(uint256 self, uint8 index) internal pure returns (uint8) {
[codex:485441] contracts/Bits.sol:34: function bitSet(uint256 self, uint8 index) internal pure returns (bool) {
[codex:485441] contracts/WorkLock.sol:27: event Claimed(address indexed sender, uint256 claimedTokens);
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing contract functions for reentrancy and authorization**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,220p' contracts/Upgradeable.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441]
[codex:485441] pragma solidity ^0.7.0;
[codex:485441]
[codex:485441]
[codex:485441] import "./Ownable.sol";
[codex:485441]
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Base contract for upgradeable contract
[codex:485441] * @dev Inherited contract should implement verifyState(address) method by checking storage variables
[codex:485441] * (see verifyState(address) in Dispatcher). Also contract should implement finishUpgrade(address)
[codex:485441] * if it is using constructor parameters by coping this parameters to the dispatcher storage
[codex:485441] */
[codex:485441] abstract contract Upgradeable is Ownable {
[codex:485441]
[codex:485441] event StateVerified(address indexed testTarget, address sender);
[codex:485441] event UpgradeFinished(address indexed target, address sender);
[codex:485441]
[codex:485441] /**
[codex:485441]
[codex:485441] thinking
[codex:485441] **Investigating delegatecall usage**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "delegateGet" contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 1593: function delegateGetStakerInfo(address _target, bytes32 _staker)
[codex:485441] 1596: bytes32 memoryAddress = delegateGetData(_target, this.stakerInfo.selector, 1, _staker, 0);
[codex:485441] 1605: function delegateGetSubStakeInfo(address _target, bytes32 _staker, uint256 _index)
[codex:485441] 1608: bytes32 memoryAddress = delegateGetData(
[codex:485441] 1618: function delegateGetPastDowntime(address _target, bytes32 _staker, uint256 _index)
[codex:485441] 1621: bytes32 memoryAddress = delegateGetData(
[codex:485441] 1631: require(address(delegateGet(_testTarget, this.policyManager.selector)) == address(policyManager));
[codex:485441] 1632: require(address(delegateGet(_testTarget, this.adjudicator.selector)) == address(adjudicator));
[codex:485441] 1633: require(address(delegateGet(_testTarget, this.workLock.selector)) == address(workLock));
[codex:485441] 1634: require(delegateGet(_testTarget, this.lockedPerPeriod.selector,
[codex:485441] 1636: require(address(delegateGet(_testTarget, this.stakerFromWorker.selector, bytes32(0))) ==
[codex:485441] 1639: require(delegateGet(_testTarget, this.getStakersLength.selector) == stakers.length);
[codex:485441] 1644: require(address(uint160(delegateGet(_testTarget, this.stakers.selector, 0))) == stakerAddress);
[codex:485441] 1647: StakerInfo memory infoToCheck = delegateGetStakerInfo(_testTarget, staker);
[codex:485441] 1658: require(delegateGet(_testTarget, this.getPastDowntimeLength.selector, staker) ==
[codex:485441] 1662: Downtime memory downtimeToCheck = delegateGetPastDowntime(_testTarget, staker, i);
[codex:485441] 1667: require(delegateGet(_testTarget, this.getSubStakesLength.selector, staker) == info.subStakes.length);
[codex:485441] 1670: SubStakeInfo memory subStakeInfoToCheck = delegateGetSubStakeInfo(_testTarget, staker, i);
[codex:485441] 1679: require(delegateGet(_testTarget, this.totalStakedForAt.selector, staker, bytes32(block.number)) ==
[codex:485441] 1681: require(delegateGet(_testTarget, this.totalStakedAt.selector, bytes32(block.number)) ==
[codex:485441]
[codex:485441] thinking
[codex:485441] **Inspecting StakingEscrow for issues**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1040,1140p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] require(uint32(lastPeriod - currentPeriod) + _periods >= minLockedPeriods);
[codex:485441] emit Locked(msg.sender, subStake.lockedValue, lastPeriod + 1, _periods);
[codex:485441] emit Prolonged(msg.sender, subStake.lockedValue, lastPeriod, _periods);
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Merge two sub-stakes into one if their last periods are equal
[codex:485441] * @dev It's possible that both sub-stakes will be active after this transaction.
[codex:485441] * But only one of them will be active until next call `commitToNextPeriod` (in the next period)
[codex:485441] * @param _index1 Index of the first sub-stake
[codex:485441] * @param _index2 Index of the second sub-stake
[codex:485441] */
[codex:485441] function mergeStake(uint256 _index1, uint256 _index2) external onlyStaker {
[codex:485441] require(_index1 != _index2); // must be different sub-stakes
[codex:485441]
[codex:485441] StakerInfo storage info = stakerInfo[msg.sender];
[codex:485441] SubStakeInfo storage subStake1 = info.subStakes[_index1];
[codex:485441] SubStakeInfo storage subStake2 = info.subStakes[_index2];
[codex:485441] uint16 currentPeriod = getCurrentPeriod();
[codex:485441]
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing deposit and withdrawal functions**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '700,860p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] uint256 value = _values[j];
[codex:485441] uint16 periods = _periods[j];
[codex:485441] require(value >= minAllowableLockedTokens && periods >= minLockedPeriods);
[codex:485441] info.value = info.value.add(value);
[codex:485441] info.subStakes.push(SubStakeInfo(nextPeriod, 0, periods, uint128(value)));
[codex:485441] sumValue = sumValue.add(value);
[codex:485441] emit Deposited(staker, value, periods);
[codex:485441] emit Locked(staker, value, nextPeriod, periods);
[codex:485441] }
[codex:485441] require(info.value <= maxAllowableLockedTokens);
[codex:485441] info.history.addSnapshot(info.value);
[codex:485441]
[codex:485441] if (_lockReStakeUntilPeriod >= nextPeriod) {
[codex:485441] forceLockReStake(staker, info, _lockReStakeUntilPeriod);
[codex:485441] }
[codex:485441] }
[codex:485441] require(j == subStakesLength);
[codex:485441] uint256 lastGlobalBalance = uint256(balanceHistory.lastValue());
[codex:485441] balanceHistory.addSnapshot(lastGlobalBalance + sumValue);
[codex:485441] token.safeTransferFrom(msg.sender, address(this), sumValue);
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing potential reentrancy and access control issues**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '430,520p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] */
[codex:485441] function getWorkerFromStaker(address _staker) external view returns (address) {
[codex:485441] return stakerInfo[_staker].worker;
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Get work that completed by the staker
[codex:485441] */
[codex:485441] function getCompletedWork(address _staker) external view returns (uint256) {
[codex:485441] return stakerInfo[_staker].completedWork;
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Find index of downtime structure that includes specified period
[codex:485441] * @dev If specified period is outside all downtime periods, the length of the array will be returned
[codex:485441] * @param _staker Staker
[codex:485441] * @param _period Specified period number
[codex:485441] */
[codex:485441] function findIndexOfPastDowntime(address _staker, uint16 _period) external view returns (uint256 index) {
[codex:485441] StakerInfo storage info = stakerInfo[_staker];
[codex:485441]
[codex:485441] thinking
[codex:485441] **Verifying workLock restrictions**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "depositFromWorkLock" -n contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 564: function depositFromWorkLock(
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '548,620p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] emit ReStakeSet(_staker, true);
[codex:485441] }
[codex:485441] // lock `reStake` parameter if it's not locked or locked for too short duration
[codex:485441] if (_lockReStakeUntilPeriod > _info.lockReStakeUntilPeriod) {
[codex:485441] _info.lockReStakeUntilPeriod = _lockReStakeUntilPeriod;
[codex:485441] emit ReStakeLocked(_staker, _lockReStakeUntilPeriod);
[codex:485441] }
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Deposit tokens and lock `reStake` parameter from WorkLock contract
[codex:485441] * @param _staker Staker address
[codex:485441] * @param _value Amount of tokens to deposit
[codex:485441] * @param _periods Amount of periods during which tokens will be locked
[codex:485441] * and number of period after which `reStake` can be changed
[codex:485441] */
[codex:485441] function depositFromWorkLock(
[codex:485441] address _staker,
[codex:485441] uint256 _value,
[codex:485441] uint16 _periods
[codex:485441]
[codex:485441] thinking
[codex:485441] **Investigating depositFromWorkLock restriction**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,120p' contracts/NuCypherToken.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441]
[codex:485441] pragma solidity ^0.7.0;
[codex:485441]
[codex:485441]
[codex:485441] import "./ERC20.sol";
[codex:485441] import "./ERC20Detailed.sol";
[codex:485441]
[codex:485441]
[codex:485441] /**
[codex:485441] * @title NuCypher token
[codex:485441] * @notice ERC20 token
[codex:485441] * @dev Optional approveAndCall() functionality to notify a contract if an approve() has occurred.
[codex:485441] */
[codex:485441] contract NuCypherToken is ERC20, ERC20Detailed('NuCypher', 'NU', 18) {
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Set amount of tokens
[codex:485441] * @param _totalSupplyOfTokens Total number of tokens
[codex:485441] */
[codex:485441]
[codex:485441] thinking
[codex:485441] **Investigating potential reentrancy in WorkLock**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,220p' contracts/WorkLock.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441]
[codex:485441] pragma solidity ^0.7.0;
[codex:485441]
[codex:485441]
[codex:485441] import "./SafeMath.sol";
[codex:485441] import "./SafeERC20.sol";
[codex:485441] import "./Address.sol";
[codex:485441] import "./Ownable.sol";
[codex:485441] import "./NuCypherToken.sol";
[codex:485441] import "./StakingEscrow.sol";
[codex:485441] import "./AdditionalMath.sol";
[codex:485441]
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice The WorkLock distribution contract
[codex:485441] */
[codex:485441] contract WorkLock is Ownable {
[codex:485441] using SafeERC20 for NuCypherToken;
[codex:485441] using SafeMath for uint256;
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing potential reentrancy and access checks**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "modifier onlyStaker" -n contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 214: modifier onlyStaker()
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '200,240p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] )
[codex:485441] {
[codex:485441] // constant `1` in the expression `_minLockedPeriods > 1` uses to simplify the `lock` method
[codex:485441] require(_minLockedPeriods > 1 && _maxAllowableLockedTokens != 0);
[codex:485441] minLockedPeriods = _minLockedPeriods;
[codex:485441] minAllowableLockedTokens = _minAllowableLockedTokens;
[codex:485441] maxAllowableLockedTokens = _maxAllowableLockedTokens;
[codex:485441] minWorkerPeriods = _minWorkerPeriods;
[codex:485441] isTestContract = _isTestContract;
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @dev Checks the existence of a staker in the contract
[codex:485441] */
[codex:485441] modifier onlyStaker()
[codex:485441] {
[codex:485441] StakerInfo storage info = stakerInfo[msg.sender];
[codex:485441] require(info.value > 0 || info.nextCommittedPeriod != 0);
[codex:485441] _;
[codex:485441] }
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing potential staking attack vectors**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '140,260p' contracts/Issuer.sol" in /tmp/codex-multi-948ldl5w succeeded in 7ms:
[codex:485441] function getCurrentPeriod() public view returns (uint16) {
[codex:485441] return uint16(block.timestamp / secondsPerPeriod);
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Initialize reserved tokens for reward
[codex:485441] */
[codex:485441] function initialize(uint256 _reservedReward, address _sourceOfFunds) external onlyOwner {
[codex:485441] require(currentMintingPeriod == 0);
[codex:485441] // Reserved reward must be sufficient for at least one period of the first phase
[codex:485441] require(firstPhaseMaxIssuance <= _reservedReward);
[codex:485441] currentMintingPeriod = getCurrentPeriod();
[codex:485441] currentPeriodSupply = totalSupply - uint128(_reservedReward);
[codex:485441] previousPeriodSupply = currentPeriodSupply;
[codex:485441] token.safeTransferFrom(_sourceOfFunds, address(this), _reservedReward);
[codex:485441] emit Initialized(_reservedReward);
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Function to mint tokens for one period.
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing potential mint exploit**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1160,1305p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] }
[codex:485441] subStake.periods--;
[codex:485441] if (subStake.periods == 0) {
[codex:485441] subStake.lastPeriod = _nextPeriod;
[codex:485441] }
[codex:485441] }
[codex:485441] }
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Mint tokens for previous periods if staker locked their tokens and made a commitment
[codex:485441] */
[codex:485441] function mint() external onlyStaker {
[codex:485441] // save last committed period to the storage if both periods will be empty after minting
[codex:485441] // because we won't be able to calculate last committed period
[codex:485441] // see getLastCommittedPeriod(address)
[codex:485441] StakerInfo storage info = stakerInfo[msg.sender];
[codex:485441] uint16 previousPeriod = getCurrentPeriod() - 1;
[codex:485441] if (info.nextCommittedPeriod <= previousPeriod && info.nextCommittedPeriod != 0) {
[codex:485441] info.lastCommittedPeriod = info.nextCommittedPeriod;
[codex:485441] }
[codex:485441]
[codex:485441] thinking
[codex:485441] **Assessing potential staking exploits**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "initialize" contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w exited 1 in 6ms:
[codex:485441]
[codex:485441]
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing potential underflow and refund issues**
[codex:485441] thinking
[codex:485441] **Evaluating refund calculation edge cases and access control**
[codex:485441]
[codex:485441] I’m working through whether the refund math can underflow or break given certain inputs, and if anyone can call forceRefund to affect others’ deposits without real profit. The formulas seem designed to avoid underflows, and refunds match deposits, so no clear exploit emerges, but I’m curious if missing input checks or access controls could cause unexpected behavior.
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "interface PolicyManager|PolicyManagerInterface|AdjudicatorInterface" contracts' in /tmp/codex-multi-948ldl5w succeeded in 9ms:
[codex:485441] contracts/StakingEscrow.sol:17:interface PolicyManagerInterface {
[codex:485441] contracts/StakingEscrow.sol:28:interface AdjudicatorInterface {
[codex:485441] contracts/StakingEscrow.sol:144: PolicyManagerInterface public policyManager;
[codex:485441] contracts/StakingEscrow.sol:145: AdjudicatorInterface public adjudicator;
[codex:485441] contracts/StakingEscrow.sol:225: function setPolicyManager(PolicyManagerInterface _policyManager) external onlyOwner {
[codex:485441] contracts/StakingEscrow.sol:236: function setAdjudicator(AdjudicatorInterface _adjudicator) external onlyOwner {
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing upgrade-time delegatecall risks**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1580,1705p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441]
[codex:485441] function totalStakedAt(uint256 _blockNumber) public view override returns (uint256){
[codex:485441] return balanceHistory.getValueAt(_blockNumber);
[codex:485441] }
[codex:485441]
[codex:485441] function supportsHistory() external pure override returns (bool){
[codex:485441] return true;
[codex:485441] }
[codex:485441]
[codex:485441] //------------------------Upgradeable------------------------
[codex:485441] /**
[codex:485441] * @dev Get StakerInfo structure by delegatecall
[codex:485441] */
[codex:485441] function delegateGetStakerInfo(address _target, bytes32 _staker)
[codex:485441] internal returns (StakerInfo memory result)
[codex:485441] {
[codex:485441] bytes32 memoryAddress = delegateGetData(_target, this.stakerInfo.selector, 1, _staker, 0);
[codex:485441] assembly {
[codex:485441] result := memoryAddress
[codex:485441] }
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing upgrade function vulnerabilities**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,60p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441]
[codex:485441] pragma solidity ^0.7.0;
[codex:485441]
[codex:485441]
[codex:485441] import "./IERC900History.sol";
[codex:485441] import "./Issuer.sol";
[codex:485441] import "./Bits.sol";
[codex:485441] import "./Snapshot.sol";
[codex:485441] import "./SafeMath.sol";
[codex:485441] import "./SafeERC20.sol";
[codex:485441]
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice PolicyManager interface
[codex:485441] */
[codex:485441] interface PolicyManagerInterface {
[codex:485441] function register(address _node, uint16 _period) external;
[codex:485441] function updateFee(address _node, uint16 _period) external;
[codex:485441] function escrow() external view returns (address);
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing upgradeable pattern and delegatecall risks**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,120p' contracts/Ownable.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] // SPDX-License-Identifier: MIT
[codex:485441]
[codex:485441] pragma solidity ^0.7.0;
[codex:485441]
[codex:485441]
[codex:485441] /**
[codex:485441] * @title Ownable
[codex:485441] * @dev The Ownable contract has an owner address, and provides basic authorization control
[codex:485441] * functions, this simplifies the implementation of "user permissions".
[codex:485441] */
[codex:485441] abstract contract Ownable {
[codex:485441] address private _owner;
[codex:485441]
[codex:485441] event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
[codex:485441]
[codex:485441] /**
[codex:485441] * @dev The Ownable constructor sets the original `owner` of the contract to the sender
[codex:485441] * account.
[codex:485441] */
[codex:485441] constructor () {
[codex:485441]
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing delegatecall upgrade vulnerability**
[codex:485441] thinking
[codex:485441] **Reviewing numeric edge cases and access controls**
[codex:485441]
[codex:485441] I'm inspecting potential underflow or division-by-zero issues in math and bidding functions, confirming protections seem in place. I’m also checking for access control gaps on verifyState and finishUpgrade, noting delegatecall remains the main suspect while these functions appear safe but could disrupt contract state during upgrades.
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "verifyState" -n contracts/Issuer.sol' in /tmp/codex-multi-948ldl5w succeeded in 8ms:
[codex:485441] 240: /// @dev the `onlyWhileUpgrading` modifier works through a call to the parent `verifyState`
[codex:485441] 241: function verifyState(address _testTarget) public override virtual {
[codex:485441] 242: super.verifyState(_testTarget);
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '232,260p' contracts/Issuer.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441]
[codex:485441] /**
[codex:485441] * @notice Returns the number of tokens that can be minted
[codex:485441] */
[codex:485441] function getReservedReward() public view returns (uint256) {
[codex:485441] return totalSupply - currentPeriodSupply;
[codex:485441] }
[codex:485441]
[codex:485441] /// @dev the `onlyWhileUpgrading` modifier works through a call to the parent `verifyState`
[codex:485441] function verifyState(address _testTarget) public override virtual {
[codex:485441] super.verifyState(_testTarget);
[codex:485441] require(uint16(delegateGet(_testTarget, this.currentMintingPeriod.selector)) == currentMintingPeriod);
[codex:485441] require(uint128(delegateGet(_testTarget, this.previousPeriodSupply.selector)) == previousPeriodSupply);
[codex:485441] require(uint128(delegateGet(_testTarget, this.currentPeriodSupply.selector)) == currentPeriodSupply);
[codex:485441] }
[codex:485441]
[codex:485441] }
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing potential upgradeability exploit**
[codex:485441] exec
[codex:485441] /bin/bash -lc "nl -ba contracts/Upgradeable.sol | sed -n '1,200p'" in /tmp/codex-multi-948ldl5w succeeded in 7ms:
[codex:485441] 1 // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441] 2
[codex:485441] 3 pragma solidity ^0.7.0;
[codex:485441] 4
[codex:485441] 5
[codex:485441] 6 import "./Ownable.sol";
[codex:485441] 7
[codex:485441] 8
[codex:485441] 9 /**
[codex:485441] 10 * @notice Base contract for upgradeable contract
[codex:485441] 11 * @dev Inherited contract should implement verifyState(address) method by checking storage variables
[codex:485441] 12 * (see verifyState(address) in Dispatcher). Also contract should implement finishUpgrade(address)
[codex:485441] 13 * if it is using constructor parameters by coping this parameters to the dispatcher storage
[codex:485441] 14 */
[codex:485441] 15 abstract contract Upgradeable is Ownable {
[codex:485441] 16
[codex:485441] 17 event StateVerified(address indexed testTarget, address sender);
[codex:485441] 18 event UpgradeFinished(address indexed target, address sender);
[codex:485441] 19
[codex:485441] 20 /**
[codex:485441]
[codex:485441] thinking
[codex:485441] **Adding line numbers to verifyState**
[codex:485441] exec
[codex:485441] /bin/bash -lc "nl -ba contracts/StakingEscrow.sol | sed -n '1580,1685p'" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 1580
[codex:485441] 1581 function totalStakedAt(uint256 _blockNumber) public view override returns (uint256){
[codex:485441] 1582 return balanceHistory.getValueAt(_blockNumber);
[codex:485441] 1583 }
[codex:485441] 1584
[codex:485441] 1585 function supportsHistory() external pure override returns (bool){
[codex:485441] 1586 return true;
[codex:485441] 1587 }
[codex:485441] 1588
[codex:485441] 1589 //------------------------Upgradeable------------------------
[codex:485441] 1590 /**
[codex:485441] 1591 * @dev Get StakerInfo structure by delegatecall
[codex:485441] 1592 */
[codex:485441] 1593 function delegateGetStakerInfo(address _target, bytes32 _staker)
[codex:485441] 1594 internal returns (StakerInfo memory result)
[codex:485441] 1595 {
[codex:485441] 1596 bytes32 memoryAddress = delegateGetData(_target, this.stakerInfo.selector, 1, _staker, 0);
[codex:485441] 1597 assembly {
[codex:485441] 1598 result := memoryAddress
[codex:485441] 1599 }
[codex:485441]
[codex:485441] thinking
[codex:485441] **Reviewing relevant code lines for verification**
[codex:485441] exec
[codex:485441] /bin/bash -lc "nl -ba contracts/Issuer.sol | sed -n '228,260p'" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 228 token.safeTransferFrom(msg.sender, address(this), _value);
[codex:485441] 229 unMint(_value);
[codex:485441] 230 emit Donated(msg.sender, _value);
[codex:485441] 231 }
[codex:485441] 232
[codex:485441] 233 /**
[codex:485441] 234 * @notice Returns the number of tokens that can be minted
[codex:485441] 235 */
[codex:485441] 236 function getReservedReward() public view returns (uint256) {
[codex:485441] 237 return totalSupply - currentPeriodSupply;
[codex:485441] 238 }
[codex:485441] 239
[codex:485441] 240 /// @dev the `onlyWhileUpgrading` modifier works through a call to the parent `verifyState`
[codex:485441] 241 function verifyState(address _testTarget) public override virtual {
[codex:485441] 242 super.verifyState(_testTarget);
[codex:485441] 243 require(uint16(delegateGet(_testTarget, this.currentMintingPeriod.selector)) == currentMintingPeriod);
[codex:485441] 244 require(uint128(delegateGet(_testTarget, this.previousPeriodSupply.selector)) == previousPeriodSupply);
[codex:485441] 245 require(uint128(delegateGet(_testTarget, this.currentPeriodSupply.selector)) == currentPeriodSupply);
[codex:485441] 246 }
[codex:485441] 247
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing delegatecall exploit scenario**
[codex:485441]
[codex:485441] I'm outlining a potential exploit involving delegatecall in upgradeable contracts, focusing on how a malicious contract set as a target during an upgrade window could run arbitrary code to drain tokens while passing state checks by returning expected values; this relies on assumptions about upgrade atomicity and the upgrade process, which I can't fully verify without dispatcher code, but the scenario highlights risks if verifyState can be called during an upgrade phase by attackers.
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg --files contracts' in /tmp/codex-multi-948ldl5w succeeded in 9ms:
[codex:485441] contracts/WorkLock.sol
[codex:485441] contracts/NuCypherToken.sol
[codex:485441] contracts/Address.sol
[codex:485441] contracts/Upgradeable.sol
[codex:485441] contracts/SafeMath.sol
[codex:485441] contracts/AdditionalMath.sol
[codex:485441] contracts/IERC900History.sol
[codex:485441] contracts/Ownable.sol
[codex:485441] contracts/StakingEscrow.sol
[codex:485441] contracts/SafeERC20.sol
[codex:485441] contracts/IERC20.sol
[codex:485441] contracts/Math.sol
[codex:485441] contracts/Bits.sol
[codex:485441] contracts/Snapshot.sol
[codex:485441] contracts/Issuer.sol
[codex:485441] contracts/ERC20Detailed.sol
[codex:485441] contracts/ERC20.sol
[codex:485441]
[codex:485441] thinking
[codex:485441] **Analyzing upgradeability delegatecall risk**
[codex:485441] codex
[codex:485441] {"no_findings":false,"summary":"Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.","findings":[{"severity":"critical","category":"upgradeability","title":"Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain","exploit_scenario":"1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker’s contract, executing the token transfer in the proxy’s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer).","recommendation":"Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.","evidence":"`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy’s context during upgrades.","locations":["contracts/Upgradeable.sol:62","contracts/Upgradeable.sol:83","contracts/Upgradeable.sol:101","contracts/StakingEscrow.sol:1628","contracts/StakingEscrow.sol:1631"]}]}
[codex:485441] tokens used
[codex:485441] 95,517
[codex:485441] {"no_findings":false,"summary":"Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.","findings":[{"severity":"critical","category":"upgradeability","title":"Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain","exploit_scenario":"1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker’s contract, executing the token transfer in the proxy’s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer).","recommendation":"Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.","evidence":"`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy’s context during upgrades.","locations":["contracts/Upgradeable.sol:62","contracts/Upgradeable.sol:83","contracts/Upgradeable.sol:101","contracts/StakingEscrow.sol:1628","contracts/StakingEscrow.sol:1631"]}]}
{
"codex": {
"ran_at": "2026-01-02T18:48:32.446931+00:00",
"returncode": 0
},
"summary": "Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.",
"raw_final": {
"summary": "Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.",
"findings": [
{
"title": "Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain",
"category": "upgradeability",
"evidence": "`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy\u2019s context during upgrades.",
"severity": "critical",
"locations": [
"contracts/Upgradeable.sol:62",
"contracts/Upgradeable.sol:83",
"contracts/Upgradeable.sol:101",
"contracts/StakingEscrow.sol:1628",
"contracts/StakingEscrow.sol:1631"
],
"recommendation": "Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.",
"exploit_scenario": "1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker\u2019s contract, executing the token transfer in the proxy\u2019s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer)."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x021a 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x87a15dc9 00000019: GT 0000001a: PUSH2 0x0123 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xb15cf964 00000024: GT 00000025: PUSH2 0x00ab 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe1fe7d23 0000002f: GT 00000030: PUSH2 0x006f 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xe1fe7d23 0000003a: EQ 0000003b: PUSH2 0x068b 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe2fdcc17 00000045: EQ 00000046: PUSH2 0x06b5 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf2fde38b 00000050: EQ 00000051: PUSH2 0x06ca 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfc0c546a 0000005b: EQ 0000005c: PUSH2 0x06fd 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xfc0e74d1 00000066: EQ 00000067: PUSH2 0x0712 0000006a: JUMPI 0000006b: PUSH2 0x021a 0000006e: JUMP 0000006f: JUMPDEST 00000070: DUP1 00000071: PUSH4 0xb15cf964 00000076: EQ 00000077: PUSH2 0x0590 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xbc859f44 00000081: EQ 00000082: PUSH2 0x05a5 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xbe7ff580 0000008c: EQ 0000008d: PUSH2 0x05cf 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xcbce49ed 00000097: EQ 00000098: PUSH2 0x05e4 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xcff29dfd 000000a2: EQ 000000a3: PUSH2 0x0661 000000a6: JUMPI 000000a7: PUSH2 0x021a 000000aa: JUMP 000000ab: JUMPDEST 000000ac: DUP1 000000ad: PUSH4 0x8da5cb5b 000000b2: GT 000000b3: PUSH2 0x00f2 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x8da5cb5b 000000bd: EQ 000000be: PUSH2 0x04f6 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x8f32d59b 000000c8: EQ 000000c9: PUSH2 0x0527 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0x9435c887 000000d3: EQ 000000d4: PUSH2 0x053c 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0x9b51ac85 000000de: EQ 000000df: PUSH2 0x0551 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0xa4c89322 000000e9: EQ 000000ea: PUSH2 0x0566 000000ed: JUMPI 000000ee: PUSH2 0x021a 000000f1: JUMP 000000f2: JUMPDEST 000000f3: DUP1 000000f4: PUSH4 0x87a15dc9 000000f9: EQ 000000fa: PUSH2 0x048e 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x88657c7a 00000104: EQ 00000105: PUSH2 0x04a3 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0x897db45c 0000010f: EQ 00000110: PUSH2 0x04cc 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0x8cab6c4f 0000011a: EQ 0000011b: PUSH2 0x04e1 0000011e: JUMPI 0000011f: PUSH2 0x021a 00000122: JUMP 00000123: JUMPDEST 00000124: DUP1 00000125: PUSH4 0x5bf997f5 0000012a: GT 0000012b: PUSH2 0x01a6 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0x715018a6 00000135: GT 00000136: PUSH2 0x0175 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0x715018a6 00000140: EQ 00000141: PUSH2 0x03f0 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0x72f96040 0000014b: EQ 0000014c: PUSH2 0x0405 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x7824407f 00000156: EQ 00000157: PUSH2 0x0438 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x7f4fad69 00000161: EQ 00000162: PUSH2 0x044d 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x87865033 0000016c: EQ 0000016d: PUSH2 0x0462 00000170: JUMPI 00000171: PUSH2 0x021a 00000174: JUMP 00000175: JUMPDEST 00000176: DUP1 00000177: PUSH4 0x5bf997f5 0000017c: EQ 0000017d: PUSH2 0x0381 00000180: JUMPI 00000181: DUP1 00000182: PUSH4 0x617e677e 00000187: EQ 00000188: PUSH2 0x0396 0000018b: JUMPI 0000018c: DUP1 0000018d: PUSH4 0x66ade78e 00000192: EQ 00000193: PUSH2 0x03ab 00000196: JUMPI 00000197: DUP1 00000198: PUSH4 0x6fb653a2 0000019d: EQ 0000019e: PUSH2 0x03db 000001a1: JUMPI 000001a2: PUSH2 0x021a 000001a5: JUMP 000001a6: JUMPDEST 000001a7: DUP1 000001a8: PUSH4 0x1f45002c 000001ad: GT 000001ae: PUSH2 0x01ed 000001b1: JUMPI 000001b2: DUP1 000001b3: PUSH4 0x1f45002c 000001b8: EQ 000001b9: PUSH2 0x02ad 000001bc: JUMPI 000001bd: DUP1 000001be: PUSH4 0x4e71d92d 000001c3: EQ 000001c4: PUSH2 0x030f 000001c7: JUMPI 000001c8: DUP1 000001c9: PUSH4 0x4f1910a1 000001ce: EQ 000001cf: PUSH2 0x0324 000001d2: JUMPI 000001d3: DUP1 000001d4: PUSH4 0x5707bee5 000001d9: EQ 000001da: PUSH2 0x0339 000001dd: JUMPI 000001de: DUP1 000001df: PUSH4 0x590e1ae3 000001e4: EQ 000001e5: PUSH2 0x036c 000001e8: JUMPI 000001e9: PUSH2 0x021a 000001ec: JUMP 000001ed: JUMPDEST 000001ee: DUP1 000001ef: PUSH4 0x0594851c 000001f4: EQ 000001f5: PUSH2 0x021f 000001f8: JUMPI 000001f9: DUP1 000001fa: PUSH4 0x124a1f4f 000001ff: EQ 00000200: PUSH2 0x0264 00000203: JUMPI 00000204: DUP1 00000205: PUSH4 0x1998aeef 0000020a: EQ 0000020b: PUSH2 0x028e 0000020e: JUMPI 0000020f: DUP1 00000210: PUSH4 0x1bb89762 00000215: EQ 00000216: PUSH2 0x0298 00000219: JUMPI 0000021a: JUMPDEST 0000021b: PUSH1 0x00 0000021d: DUP1 0000021e: REVERT 0000021f: JUMPDEST 00000220: CALLVALUE 00000221: DUP1 00000222: ISZERO 00000223: PUSH2 0x022b 00000226: JUMPI 00000227: PUSH1 0x00 00000229: DUP1 0000022a: REVERT 0000022b: JUMPDEST 0000022c: POP 0000022d: PUSH2 0x0252 00000230: PUSH1 0x04 00000232: DUP1 00000233: CALLDATASIZE 00000234: SUB 00000235: PUSH1 0x20 00000237: DUP2 00000238: LT 00000239: ISZERO 0000023a: PUSH2 0x0242 0000023d: JUMPI 0000023e: PUSH1 0x00 00000240: DUP1 00000241: REVERT 00000242: JUMPDEST 00000243: POP 00000244: CALLDATALOAD 00000245: PUSH1 0x01 00000247: PUSH1 0x01 00000249: PUSH1 0xa0 0000024b: SHL 0000024c: SUB 0000024d: AND 0000024e: PUSH2 0x0727 00000251: JUMP 00000252: JUMPDEST 00000253: PUSH1 0x40 00000255: DUP1 00000256: MLOAD 00000257: SWAP2 00000258: DUP3 00000259: MSTORE 0000025a: MLOAD 0000025b: SWAP1 0000025c: DUP2 0000025d: SWAP1 0000025e: SUB 0000025f: PUSH1 0x20 00000261: ADD 00000262: SWAP1 00000263: RETURN 00000264: JUMPDEST 00000265: CALLVALUE 00000266: DUP1 00000267: ISZERO 00000268: PUSH2 0x0270 0000026b: JUMPI 0000026c: PUSH1 0x00 0000026e: DUP1 0000026f: REVERT 00000270: JUMPDEST 00000271: POP 00000272: PUSH2 0x0252 00000275: PUSH1 0x04 00000277: DUP1 00000278: CALLDATASIZE 00000279: SUB 0000027a: PUSH1 0x20 0000027c: DUP2 0000027d: LT 0000027e: ISZERO 0000027f: PUSH2 0x0287 00000282: JUMPI 00000283: PUSH1 0x00 00000285: DUP1 00000286: REVERT 00000287: JUMPDEST 00000288: POP 00000289: CALLDATALOAD 0000028a: PUSH2 0x0810 0000028d: JUMP 0000028e: JUMPDEST 0000028f: PUSH2 0x0296 00000292: PUSH2 0x0823 00000295: JUMP 00000296: JUMPDEST 00000297: STOP 00000298: JUMPDEST 00000299: CALLVALUE 0000029a: DUP1 0000029b: ISZERO 0000029c: PUSH2 0x02a4 0000029f: JUMPI 000002a0: PUSH1 0x00 000002a2: DUP1 000002a3: REVERT 000002a4: JUMPDEST 000002a5: POP 000002a6: PUSH2 0x0252 000002a9: PUSH2 0x0ac3 000002ac: JUMP 000002ad: JUMPDEST 000002ae: CALLVALUE 000002af: DUP1 000002b0: ISZERO 000002b1: PUSH2 0x02b9 000002b4: JUMPI 000002b5: PUSH1 0x00 000002b7: DUP1 000002b8: REVERT 000002b9: JUMPDEST 000002ba: POP 000002bb: PUSH2 0x02e0 000002be: PUSH1 0x04 000002c0: DUP1 000002c1: CALLDATASIZE 000002c2: SUB 000002c3: PUSH1 0x20 000002c5: DUP2 000002c6: LT 000002c7: ISZERO 000002c8: PUSH2 0x02d0 000002cb: JUMPI 000002cc: PUSH1 0x00 000002ce: DUP1 000002cf: REVERT 000002d0: JUMPDEST 000002d1: POP 000002d2: CALLDATALOAD 000002d3: PUSH1 0x01 000002d5: PUSH1 0x01 000002d7: PUSH1 0xa0 000002d9: SHL 000002da: SUB 000002db: AND 000002dc: PUSH2 0x0ac9 000002df: JUMP 000002e0: JUMPDEST 000002e1: PUSH1 0x40 000002e3: DUP1 000002e4: MLOAD 000002e5: SWAP5 000002e6: DUP6 000002e7: MSTORE 000002e8: PUSH1 0x20 000002ea: DUP6 000002eb: ADD 000002ec: SWAP4 000002ed: SWAP1 000002ee: SWAP4 000002ef: MSTORE 000002f0: SWAP1 000002f1: ISZERO 000002f2: ISZERO 000002f3: DUP4 000002f4: DUP4 000002f5: ADD 000002f6: MSTORE 000002f7: PUSH1 0x01 000002f9: PUSH1 0x01 000002fb: PUSH1 0x80 000002fd: SHL 000002fe: SUB 000002ff: AND 00000300: PUSH1 0x60 00000302: DUP4 00000303: ADD 00000304: MSTORE 00000305: MLOAD 00000306: SWAP1 00000307: DUP2 00000308: SWAP1 00000309: SUB 0000030a: PUSH1 0x80 0000030c: ADD 0000030d: SWAP1 0000030e: RETURN 0000030f: JUMPDEST 00000310: CALLVALUE 00000311: DUP1 00000312: ISZERO 00000313: PUSH2 0x031b 00000316: JUMPI 00000317: PUSH1 0x00 00000319: DUP1 0000031a: REVERT 0000031b: JUMPDEST 0000031c: POP 0000031d: PUSH2 0x0252 00000320: PUSH2 0x0afd 00000323: JUMP 00000324: JUMPDEST 00000325: CALLVALUE 00000326: DUP1 00000327: ISZERO 00000328: PUSH2 0x0330 0000032b: JUMPI 0000032c: PUSH1 0x00 0000032e: DUP1 0000032f: REVERT 00000330: JUMPDEST 00000331: POP 00000332: PUSH2 0x0252 00000335: PUSH2 0x0e5b 00000338: JUMP 00000339: JUMPDEST 0000033a: CALLVALUE 0000033b: DUP1 0000033c: ISZERO 0000033d: PUSH2 0x0345 00000340: JUMPI 00000341: PUSH1 0x00 00000343: DUP1 00000344: REVERT 00000345: JUMPDEST 00000346: POP 00000347: PUSH2 0x0252 0000034a: PUSH1 0x04 0000034c: DUP1 0000034d: CALLDATASIZE 0000034e: SUB 0000034f: PUSH1 0x20 00000351: DUP2 00000352: LT 00000353: ISZERO 00000354: PUSH2 0x035c 00000357: JUMPI 00000358: PUSH1 0x00 0000035a: DUP1 0000035b: REVERT 0000035c: JUMPDEST 0000035d: POP 0000035e: CALLDATALOAD 0000035f: PUSH1 0x01 00000361: PUSH1 0x01 00000363: PUSH1 0xa0 00000365: SHL 00000366: SUB 00000367: AND 00000368: PUSH2 0x0e7f 0000036b: JUMP 0000036c: JUMPDEST 0000036d: CALLVALUE 0000036e: DUP1 0000036f: ISZERO 00000370: PUSH2 0x0378 00000373: JUMPI 00000374: PUSH1 0x00 00000376: DUP1 00000377: REVERT 00000378: JUMPDEST 00000379: POP 0000037a: PUSH2 0x0252 0000037d: PUSH2 0x0e91 00000380: JUMP 00000381: JUMPDEST 00000382: CALLVALUE 00000383: DUP1 00000384: ISZERO 00000385: PUSH2 0x038d 00000388: JUMPI 00000389: PUSH1 0x00 0000038b: DUP1 0000038c: REVERT 0000038d: JUMPDEST 0000038e: POP 0000038f: PUSH2 0x0252 00000392: PUSH2 0x105a 00000395: JUMP 00000396: JUMPDEST 00000397: CALLVALUE 00000398: DUP1 00000399: ISZERO 0000039a: PUSH2 0x03a2 0000039d: JUMPI 0000039e: PUSH1 0x00 000003a0: DUP1 000003a1: REVERT 000003a2: JUMPDEST 000003a3: POP 000003a4: PUSH2 0x0252 000003a7: PUSH2 0x107e 000003aa: JUMP 000003ab: JUMPDEST 000003ac: CALLVALUE 000003ad: DUP1 000003ae: ISZERO 000003af: PUSH2 0x03b7 000003b2: JUMPI 000003b3: PUSH1 0x00 000003b5: DUP1 000003b6: REVERT 000003b7: JUMPDEST 000003b8: POP 000003b9: PUSH2 0x0252 000003bc: PUSH1 0x04 000003be: DUP1 000003bf: CALLDATASIZE 000003c0: SUB 000003c1: PUSH1 0x40 000003c3: DUP2 000003c4: LT 000003c5: ISZERO 000003c6: PUSH2 0x03ce 000003c9: JUMPI 000003ca: PUSH1 0x00 000003cc: DUP1 000003cd: REVERT 000003ce: JUMPDEST 000003cf: POP 000003d0: DUP1 000003d1: CALLDATALOAD 000003d2: SWAP1 000003d3: PUSH1 0x20 000003d5: ADD 000003d6: CALLDATALOAD 000003d7: PUSH2 0x1084 000003da: JUMP 000003db: JUMPDEST 000003dc: CALLVALUE 000003dd: DUP1 000003de: ISZERO 000003df: PUSH2 0x03e7 000003e2: JUMPI 000003e3: PUSH1 0x00 000003e5: DUP1 000003e6: REVERT 000003e7: JUMPDEST 000003e8: POP 000003e9: PUSH2 0x0252 000003ec: PUSH2 0x1197 000003ef: JUMP 000003f0: JUMPDEST 000003f1: CALLVALUE 000003f2: DUP1 000003f3: ISZERO 000003f4: PUSH2 0x03fc 000003f7: JUMPI 000003f8: PUSH1 0x00 000003fa: DUP1 000003fb: REVERT 000003fc: JUMPDEST 000003fd: POP 000003fe: PUSH2 0x0296 00000401: PUSH2 0x11bb 00000404: JUMP 00000405: JUMPDEST 00000406: CALLVALUE 00000407: DUP1 00000408: ISZERO 00000409: PUSH2 0x0411 0000040c: JUMPI 0000040d: PUSH1 0x00 0000040f: DUP1 00000410: REVERT 00000411: JUMPDEST 00000412: POP 00000413: PUSH2 0x0252 00000416: PUSH1 0x04 00000418: DUP1 00000419: CALLDATASIZE 0000041a: SUB 0000041b: PUSH1 0x20 0000041d: DUP2 0000041e: LT 0000041f: ISZERO 00000420: PUSH2 0x0428 00000423: JUMPI 00000424: PUSH1 0x00 00000426: DUP1 00000427: REVERT 00000428: JUMPDEST 00000429: POP 0000042a: CALLDATALOAD 0000042b: PUSH1 0x01 0000042d: PUSH1 0x01 0000042f: PUSH1 0xa0 00000431: SHL 00000432: SUB 00000433: AND 00000434: PUSH2 0x1216 00000437: JUMP 00000438: JUMPDEST 00000439: CALLVALUE 0000043a: DUP1 0000043b: ISZERO 0000043c: PUSH2 0x0444 0000043f: JUMPI 00000440: PUSH1 0x00 00000442: DUP1 00000443: REVERT 00000444: JUMPDEST 00000445: POP 00000446: PUSH2 0x0252 00000449: PUSH2 0x132b 0000044c: JUMP 0000044d: JUMPDEST 0000044e: CALLVALUE 0000044f: DUP1 00000450: ISZERO 00000451: PUSH2 0x0459 00000454: JUMPI 00000455: PUSH1 0x00 00000457: DUP1 00000458: REVERT 00000459: JUMPDEST 0000045a: POP 0000045b: PUSH2 0x0252 0000045e: PUSH2 0x1331 00000461: JUMP 00000462: JUMPDEST 00000463: CALLVALUE 00000464: DUP1 00000465: ISZERO 00000466: PUSH2 0x046e 00000469: JUMPI 0000046a: PUSH1 0x00 0000046c: DUP1 0000046d: REVERT 0000046e: JUMPDEST 0000046f: POP 00000470: PUSH2 0x0477 00000473: PUSH2 0x1337 00000476: JUMP 00000477: JUMPDEST 00000478: PUSH1 0x40 0000047a: DUP1 0000047b: MLOAD 0000047c: PUSH2 0xffff 0000047f: SWAP1 00000480: SWAP3 00000481: AND 00000482: DUP3 00000483: MSTORE 00000484: MLOAD 00000485: SWAP1 00000486: DUP2 00000487: SWAP1 00000488: SUB 00000489: PUSH1 0x20 0000048b: ADD 0000048c: SWAP1 0000048d: RETURN 0000048e: JUMPDEST 0000048f: CALLVALUE 00000490: DUP1 00000491: ISZERO 00000492: PUSH2 0x049a 00000495: JUMPI 00000496: PUSH1 0x00 00000498: DUP1 00000499: REVERT 0000049a: JUMPDEST 0000049b: POP 0000049c: PUSH2 0x0296 0000049f: PUSH2 0x133c 000004a2: JUMP 000004a3: JUMPDEST 000004a4: CALLVALUE 000004a5: DUP1 000004a6: ISZERO 000004a7: PUSH2 0x04af 000004aa: JUMPI 000004ab: PUSH1 0x00 000004ad: DUP1 000004ae: REVERT 000004af: JUMPDEST 000004b0: POP 000004b1: PUSH2 0x04b8 000004b4: PUSH2 0x13f1 000004b7: JUMP 000004b8: JUMPDEST 000004b9: PUSH1 0x40 000004bb: DUP1 000004bc: MLOAD 000004bd: SWAP2 000004be: ISZERO 000004bf: ISZERO 000004c0: DUP3 000004c1: MSTORE 000004c2: MLOAD 000004c3: SWAP1 000004c4: DUP2 000004c5: SWAP1 000004c6: SUB 000004c7: PUSH1 0x20 000004c9: ADD 000004ca: SWAP1 000004cb: RETURN 000004cc: JUMPDEST 000004cd: CALLVALUE 000004ce: DUP1 000004cf: ISZERO 000004d0: PUSH2 0x04d8 000004d3: JUMPI 000004d4: PUSH1 0x00 000004d6: DUP1 000004d7: REVERT 000004d8: JUMPDEST 000004d9: POP 000004da: PUSH2 0x0252 000004dd: PUSH2 0x140d 000004e0: JUMP 000004e1: JUMPDEST 000004e2: CALLVALUE 000004e3: DUP1 000004e4: ISZERO 000004e5: PUSH2 0x04ed 000004e8: JUMPI 000004e9: PUSH1 0x00 000004eb: DUP1 000004ec: REVERT 000004ed: JUMPDEST 000004ee: POP 000004ef: PUSH2 0x0252 000004f2: PUSH2 0x1413 000004f5: JUMP 000004f6: JUMPDEST 000004f7: CALLVALUE 000004f8: DUP1 000004f9: ISZERO 000004fa: PUSH2 0x0502 000004fd: JUMPI 000004fe: PUSH1 0x00 00000500: DUP1 00000501: REVERT 00000502: JUMPDEST 00000503: POP 00000504: PUSH2 0x050b 00000507: PUSH2 0x1437 0000050a: JUMP 0000050b: JUMPDEST 0000050c: PUSH1 0x40 0000050e: DUP1 0000050f: MLOAD 00000510: PUSH1 0x01 00000512: PUSH1 0x01 00000514: PUSH1 0xa0 00000516: SHL 00000517: SUB 00000518: SWAP1 00000519: SWAP3 0000051a: AND 0000051b: DUP3 0000051c: MSTORE 0000051d: MLOAD 0000051e: SWAP1 0000051f: DUP2 00000520: SWAP1 00000521: SUB 00000522: PUSH1 0x20 00000524: ADD 00000525: SWAP1 00000526: RETURN 00000527: JUMPDEST 00000528: CALLVALUE 00000529: DUP1 0000052a: ISZERO 0000052b: PUSH2 0x0533 0000052e: JUMPI 0000052f: PUSH1 0x00 00000531: DUP1 00000532: REVERT 00000533: JUMPDEST 00000534: POP 00000535: PUSH2 0x04b8 00000538: PUSH2 0x1446 0000053b: JUMP 0000053c: JUMPDEST 0000053d: CALLVALUE 0000053e: DUP1 0000053f: ISZERO 00000540: PUSH2 0x0548 00000543: JUMPI 00000544: PUSH1 0x00 00000546: DUP1 00000547: REVERT 00000548: JUMPDEST 00000549: POP 0000054a: PUSH2 0x0296 0000054d: PUSH2 0x1457 00000550: JUMP 00000551: JUMPDEST 00000552: CALLVALUE 00000553: DUP1 00000554: ISZERO 00000555: PUSH2 0x055d 00000558: JUMPI 00000559: PUSH1 0x00 0000055b: DUP1 0000055c: REVERT 0000055d: JUMPDEST 0000055e: POP 0000055f: PUSH2 0x0252 00000562: PUSH2 0x16ec 00000565: JUMP 00000566: JUMPDEST 00000567: CALLVALUE 00000568: DUP1 00000569: ISZERO 0000056a: PUSH2 0x0572 0000056d: JUMPI 0000056e: PUSH1 0x00 00000570: DUP1 00000571: REVERT 00000572: JUMPDEST 00000573: POP 00000574: PUSH2 0x0252 00000577: PUSH1 0x04 00000579: DUP1 0000057a: CALLDATASIZE 0000057b: SUB 0000057c: PUSH1 0x20 0000057e: DUP2 0000057f: LT 00000580: ISZERO 00000581: PUSH2 0x0589 00000584: JUMPI 00000585: PUSH1 0x00 00000587: DUP1 00000588: REVERT 00000589: JUMPDEST 0000058a: POP 0000058b: CALLDATALOAD 0000058c: PUSH2 0x16f2 0000058f: JUMP 00000590: JUMPDEST 00000591: CALLVALUE 00000592: DUP1 00000593: ISZERO 00000594: PUSH2 0x059c 00000597: JUMPI 00000598: PUSH1 0x00 0000059a: DUP1 0000059b: REVERT 0000059c: JUMPDEST 0000059d: POP 0000059e: PUSH2 0x0252 000005a1: PUSH2 0x17d1 000005a4: JUMP 000005a5: JUMPDEST 000005a6: CALLVALUE 000005a7: DUP1 000005a8: ISZERO 000005a9: PUSH2 0x05b1 000005ac: JUMPI 000005ad: PUSH1 0x00 000005af: DUP1 000005b0: REVERT 000005b1: JUMPDEST 000005b2: POP 000005b3: PUSH2 0x0252 000005b6: PUSH1 0x04 000005b8: DUP1 000005b9: CALLDATASIZE 000005ba: SUB 000005bb: PUSH1 0x20 000005bd: DUP2 000005be: LT 000005bf: ISZERO 000005c0: PUSH2 0x05c8 000005c3: JUMPI 000005c4: PUSH1 0x00 000005c6: DUP1 000005c7: REVERT 000005c8: JUMPDEST 000005c9: POP 000005ca: CALLDATALOAD 000005cb: PUSH2 0x17d7 000005ce: JUMP 000005cf: JUMPDEST 000005d0: CALLVALUE 000005d1: DUP1 000005d2: ISZERO 000005d3: PUSH2 0x05db 000005d6: JUMPI 000005d7: PUSH1 0x00 000005d9: DUP1 000005da: REVERT 000005db: JUMPDEST 000005dc: POP 000005dd: PUSH2 0x0477 000005e0: PUSH2 0x1a62 000005e3: JUMP 000005e4: JUMPDEST 000005e5: CALLVALUE 000005e6: DUP1 000005e7: ISZERO 000005e8: PUSH2 0x05f0 000005eb: JUMPI 000005ec: PUSH1 0x00 000005ee: DUP1 000005ef: REVERT 000005f0: JUMPDEST 000005f1: POP 000005f2: PUSH2 0x0296 000005f5: PUSH1 0x04 000005f7: DUP1 000005f8: CALLDATASIZE 000005f9: SUB 000005fa: PUSH1 0x20 000005fc: DUP2 000005fd: LT 000005fe: ISZERO 000005ff: PUSH2 0x0607 00000602: JUMPI 00000603: PUSH1 0x00 00000605: DUP1 00000606: REVERT 00000607: JUMPDEST 00000608: DUP2 00000609: ADD 0000060a: SWAP1 0000060b: PUSH1 0x20 0000060d: DUP2 0000060e: ADD 0000060f: DUP2 00000610: CALLDATALOAD 00000611: PUSH5 0x0100000000 00000617: DUP2 00000618: GT 00000619: ISZERO 0000061a: PUSH2 0x0622 0000061d: JUMPI 0000061e: PUSH1 0x00 00000620: DUP1 00000621: REVERT 00000622: JUMPDEST 00000623: DUP3 00000624: ADD 00000625: DUP4 00000626: PUSH1 0x20 00000628: DUP3 00000629: ADD 0000062a: GT 0000062b: ISZERO 0000062c: PUSH2 0x0634 0000062f: JUMPI 00000630: PUSH1 0x00 00000632: DUP1 00000633: REVERT 00000634: JUMPDEST 00000635: DUP1 00000636: CALLDATALOAD 00000637: SWAP1 00000638: PUSH1 0x20 0000063a: ADD 0000063b: SWAP2 0000063c: DUP5 0000063d: PUSH1 0x20 0000063f: DUP4 00000640: MUL 00000641: DUP5 00000642: ADD 00000643: GT 00000644: PUSH5 0x0100000000 0000064a: DUP4 0000064b: GT 0000064c: OR 0000064d: ISZERO 0000064e: PUSH2 0x0656 00000651: JUMPI 00000652: PUSH1 0x00 00000654: DUP1 00000655: REVERT 00000656: JUMPDEST 00000657: POP 00000658: SWAP1 00000659: SWAP3 0000065a: POP 0000065b: SWAP1 0000065c: POP 0000065d: PUSH2 0x1a86 00000660: JUMP 00000661: JUMPDEST 00000662: CALLVALUE 00000663: DUP1 00000664: ISZERO 00000665: PUSH2 0x066d 00000668: JUMPI 00000669: PUSH1 0x00 0000066b: DUP1 0000066c: REVERT 0000066d: JUMPDEST 0000066e: POP 0000066f: PUSH2 0x050b 00000672: PUSH1 0x04 00000674: DUP1 00000675: CALLDATASIZE 00000676: SUB 00000677: PUSH1 0x20 00000679: DUP2 0000067a: LT 0000067b: ISZERO 0000067c: PUSH2 0x0684 0000067f: JUMPI 00000680: PUSH1 0x00 00000682: DUP1 00000683: REVERT 00000684: JUMPDEST 00000685: POP 00000686: CALLDATALOAD 00000687: PUSH2 0x2005 0000068a: JUMP 0000068b: JUMPDEST 0000068c: CALLVALUE 0000068d: DUP1 0000068e: ISZERO 0000068f: PUSH2 0x0697 00000692: JUMPI 00000693: PUSH1 0x00 00000695: DUP1 00000696: REVERT 00000697: JUMPDEST 00000698: POP 00000699: PUSH2 0x0296 0000069c: PUSH1 0x04 0000069e: DUP1 0000069f: CALLDATASIZE 000006a0: SUB 000006a1: PUSH1 0x20 000006a3: DUP2 000006a4: LT 000006a5: ISZERO 000006a6: PUSH2 0x06ae 000006a9: JUMPI 000006aa: PUSH1 0x00 000006ac: DUP1 000006ad: REVERT 000006ae: JUMPDEST 000006af: POP 000006b0: CALLDATALOAD 000006b1: PUSH2 0x202c 000006b4: JUMP 000006b5: JUMPDEST 000006b6: CALLVALUE 000006b7: DUP1 000006b8: ISZERO 000006b9: PUSH2 0x06c1 000006bc: JUMPI 000006bd: PUSH1 0x00 000006bf: DUP1 000006c0: REVERT 000006c1: JUMPDEST 000006c2: POP 000006c3: PUSH2 0x050b 000006c6: PUSH2 0x20e2 000006c9: JUMP 000006ca: JUMPDEST 000006cb: CALLVALUE 000006cc: DUP1 000006cd: ISZERO 000006ce: PUSH2 0x06d6 000006d1: JUMPI 000006d2: PUSH1 0x00 000006d4: DUP1 000006d5: REVERT 000006d6: JUMPDEST 000006d7: POP 000006d8: PUSH2 0x0296 000006db: PUSH1 0x04 000006dd: DUP1 000006de: CALLDATASIZE 000006df: SUB 000006e0: PUSH1 0x20 000006e2: DUP2 000006e3: LT 000006e4: ISZERO 000006e5: PUSH2 0x06ed 000006e8: JUMPI 000006e9: PUSH1 0x00 000006eb: DUP1 000006ec: REVERT 000006ed: JUMPDEST 000006ee: POP 000006ef: CALLDATALOAD 000006f0: PUSH1 0x01 000006f2: PUSH1 0x01 000006f4: PUSH1 0xa0 000006f6: SHL 000006f7: SUB 000006f8: AND 000006f9: PUSH2 0x2106 000006fc: JUMP 000006fd: JUMPDEST 000006fe: CALLVALUE 000006ff: DUP1 00000700: ISZERO 00000701: PUSH2 0x0709 00000704: JUMPI 00000705: PUSH1 0x00 00000707: DUP1 00000708: REVERT 00000709: JUMPDEST 0000070a: POP 0000070b: PUSH2 0x050b 0000070e: PUSH2 0x2123 00000711: JUMP 00000712: JUMPDEST 00000713: CALLVALUE 00000714: DUP1 00000715: ISZERO 00000716: PUSH2 0x071e 00000719: JUMPI 0000071a: PUSH1 0x00 0000071c: DUP1 0000071d: REVERT 0000071e: JUMPDEST 0000071f: POP 00000720: PUSH2 0x0296 00000723: PUSH2 0x2147 00000726: JUMP 00000727: JUMPDEST 00000728: PUSH1 0x01 0000072a: PUSH1 0x01 0000072c: PUSH1 0xa0 0000072e: SHL 0000072f: SUB 00000730: DUP1 00000731: DUP3 00000732: AND 00000733: PUSH1 0x00 00000735: DUP2 00000736: DUP2 00000737: MSTORE 00000738: PUSH1 0x06 0000073a: PUSH1 0x20 0000073c: SWAP1 0000073d: DUP2 0000073e: MSTORE 0000073f: PUSH1 0x40 00000741: DUP1 00000742: DUP4 00000743: KECCAK256 00000744: PUSH1 0x01 00000746: DUP2 00000747: ADD 00000748: SLOAD 00000749: DUP3 0000074a: MLOAD 0000074b: PUSH4 0xd094adbf 00000750: PUSH1 0xe0 00000752: SHL 00000753: DUP2 00000754: MSTORE 00000755: PUSH1 0x04 00000757: DUP2 00000758: ADD 00000759: SWAP7 0000075a: SWAP1 0000075b: SWAP7 0000075c: MSTORE 0000075d: SWAP2 0000075e: MLOAD 0000075f: SWAP4 00000760: SWAP6 00000761: SWAP1 00000762: SWAP5 00000763: DUP7 00000764: SWAP5 00000765: PUSH2 0x07e0 00000768: SWAP5 00000769: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2 0000078a: SWAP1 0000078b: SWAP4 0000078c: AND 0000078d: SWAP3 0000078e: PUSH4 0xd094adbf 00000793: SWAP3 00000794: PUSH1 0x24 00000796: DUP1 00000797: DUP3 00000798: ADD 00000799: SWAP4 0000079a: SWAP2 0000079b: DUP3 0000079c: SWAP1 0000079d: SUB 0000079e: ADD 0000079f: DUP2 000007a0: DUP7 000007a1: DUP1 000007a2: EXTCODESIZE 000007a3: ISZERO 000007a4: DUP1 000007a5: ISZERO 000007a6: PUSH2 0x07ae 000007a9: JUMPI 000007aa: PUSH1 0x00 000007ac: DUP1 000007ad: REVERT 000007ae: JUMPDEST 000007af: POP 000007b0: GAS 000007b1: STATICCALL 000007b2: ISZERO 000007b3: DUP1 000007b4: ISZERO 000007b5: PUSH2 0x07c2 000007b8: JUMPI 000007b9: RETURNDATASIZE 000007ba: PUSH1 0x00 000007bc: DUP1 000007bd: RETURNDATACOPY 000007be: RETURNDATASIZE 000007bf: PUSH1 0x00 000007c1: REVERT 000007c2: JUMPDEST 000007c3: POP 000007c4: POP 000007c5: POP 000007c6: POP 000007c7: PUSH1 0x40 000007c9: MLOAD 000007ca: RETURNDATASIZE 000007cb: PUSH1 0x20 000007cd: DUP2 000007ce: LT 000007cf: ISZERO 000007d0: PUSH2 0x07d8 000007d3: JUMPI 000007d4: PUSH1 0x00 000007d6: DUP1 000007d7: REVERT 000007d8: JUMPDEST 000007d9: POP 000007da: MLOAD 000007db: SWAP1 000007dc: PUSH2 0x21a6 000007df: JUMP 000007e0: JUMPDEST 000007e1: SWAP1 000007e2: POP 000007e3: PUSH1 0x00 000007e5: PUSH2 0x07f1 000007e8: DUP4 000007e9: PUSH1 0x00 000007eb: ADD 000007ec: SLOAD 000007ed: PUSH2 0x0810 000007f0: JUMP 000007f1: JUMPDEST 000007f2: SWAP1 000007f3: POP 000007f4: DUP2 000007f5: DUP2 000007f6: GT 000007f7: PUSH2 0x0806 000007fa: JUMPI 000007fb: PUSH1 0x00 000007fd: SWAP4 000007fe: POP 000007ff: POP 00000800: POP 00000801: POP 00000802: PUSH2 0x080b 00000805: JUMP 00000806: JUMPDEST 00000807: SUB 00000808: SWAP2 00000809: POP 0000080a: POP 0000080b: JUMPDEST 0000080c: SWAP2 0000080d: SWAP1 0000080e: POP 0000080f: JUMP 00000810: JUMPDEST 00000811: PUSH1 0x00 00000813: PUSH2 0x081d 00000816: DUP3 00000817: PUSH1 0x00 00000819: PUSH2 0x21bb 0000081c: JUMP 0000081d: JUMPDEST 0000081e: SWAP3 0000081f: SWAP2 00000820: POP 00000821: POP 00000822: JUMP 00000823: JUMPDEST 00000824: PUSH1 0x02 00000826: SLOAD 00000827: TIMESTAMP 00000828: LT 00000829: ISZERO 0000082a: PUSH2 0x087a 0000082d: JUMPI 0000082e: PUSH1 0x40 00000830: DUP1 00000831: MLOAD 00000832: PUSH3 0x461bcd 00000836: PUSH1 0xe5 00000838: SHL 00000839: DUP2 0000083a: MSTORE 0000083b: PUSH1 0x20 0000083d: PUSH1 0x04 0000083f: DUP3 00000840: ADD 00000841: MSTORE 00000842: PUSH1 0x17 00000844: PUSH1 0x24 00000846: DUP3 00000847: ADD 00000848: MSTORE 00000849: PUSH32 0x42696464696e67206973206e6f74206f70656e20796574000000000000000000 0000086a: PUSH1 0x44 0000086c: DUP3 0000086d: ADD 0000086e: MSTORE 0000086f: SWAP1 00000870: MLOAD 00000871: SWAP1 00000872: DUP2 00000873: SWAP1 00000874: SUB 00000875: PUSH1 0x64 00000877: ADD 00000878: SWAP1 00000879: REVERT 0000087a: JUMPDEST 0000087b: PUSH1 0x03 0000087d: SLOAD 0000087e: TIMESTAMP 0000087f: LT 00000880: PUSH2 0x08d0 00000883: JUMPI 00000884: PUSH1 0x40 00000886: DUP1 00000887: MLOAD 00000888: PUSH3 0x461bcd 0000088c: PUSH1 0xe5 0000088e: SHL 0000088f: DUP2 00000890: MSTORE 00000891: PUSH1 0x20 00000893: PUSH1 0x04 00000895: DUP3 00000896: ADD 00000897: MSTORE 00000898: PUSH1 0x1b 0000089a: PUSH1 0x24 0000089c: DUP3 0000089d: ADD 0000089e: MSTORE 0000089f: PUSH32 0x42696464696e6720697320616c72656164792066696e69736865640000000000 000008c0: PUSH1 0x44 000008c2: DUP3 000008c3: ADD 000008c4: MSTORE 000008c5: SWAP1 000008c6: MLOAD 000008c7: SWAP1 000008c8: DUP2 000008c9: SWAP1 000008ca: SUB 000008cb: PUSH1 0x64 000008cd: ADD 000008ce: SWAP1 000008cf: REVERT 000008d0: JUMPDEST 000008d1: CALLER 000008d2: PUSH1 0x00 000008d4: SWAP1 000008d5: DUP2 000008d6: MSTORE 000008d7: PUSH1 0x06 000008d9: PUSH1 0x20 000008db: MSTORE 000008dc: PUSH1 0x40 000008de: SWAP1 000008df: KECCAK256 000008e0: DUP1 000008e1: SLOAD 000008e2: PUSH2 0x0a6b 000008e5: JUMPI 000008e6: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 00000907: CALLVALUE 00000908: LT 00000909: ISZERO 0000090a: PUSH2 0x095a 0000090d: JUMPI 0000090e: PUSH1 0x40 00000910: DUP1 00000911: MLOAD 00000912: PUSH3 0x461bcd 00000916: PUSH1 0xe5 00000918: SHL 00000919: DUP2 0000091a: MSTORE 0000091b: PUSH1 0x20 0000091d: PUSH1 0x04 0000091f: DUP3 00000920: ADD 00000921: MSTORE 00000922: PUSH1 0x1c 00000924: PUSH1 0x24 00000926: DUP3 00000927: ADD 00000928: MSTORE 00000929: PUSH32 0x426964206d757374206265206174206c65617374206d696e696d756d00000000 0000094a: PUSH1 0x44 0000094c: DUP3 0000094d: ADD 0000094e: MSTORE 0000094f: SWAP1 00000950: MLOAD 00000951: SWAP1 00000952: DUP2 00000953: SWAP1 00000954: SUB 00000955: PUSH1 0x64 00000957: ADD 00000958: SWAP1 00000959: REVERT 0000095a: JUMPDEST 0000095b: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 0000097c: PUSH1 0x01 0000097e: SLOAD 0000097f: DUP2 00000980: PUSH2 0x0985 00000983: JUMPI 00000984: INVALID 00000985: JUMPDEST 00000986: DIV 00000987: PUSH1 0x08 00000989: DUP1 0000098a: SLOAD 0000098b: SWAP1 0000098c: POP 0000098d: LT 0000098e: PUSH2 0x09c8 00000991: JUMPI 00000992: PUSH1 0x40 00000994: MLOAD 00000995: PUSH3 0x461bcd 00000999: PUSH1 0xe5 0000099b: SHL 0000099c: DUP2 0000099d: MSTORE 0000099e: PUSH1 0x04 000009a0: ADD 000009a1: DUP1 000009a2: DUP1 000009a3: PUSH1 0x20 000009a5: ADD 000009a6: DUP3 000009a7: DUP2 000009a8: SUB 000009a9: DUP3 000009aa: MSTORE 000009ab: PUSH1 0x22 000009ad: DUP2 000009ae: MSTORE 000009af: PUSH1 0x20 000009b1: ADD 000009b2: DUP1 000009b3: PUSH2 0x28b5 000009b6: PUSH1 0x22 000009b8: SWAP2 000009b9: CODECOPY 000009ba: PUSH1 0x40 000009bc: ADD 000009bd: SWAP2 000009be: POP 000009bf: POP 000009c0: PUSH1 0x40 000009c2: MLOAD 000009c3: DUP1 000009c4: SWAP2 000009c5: SUB 000009c6: SWAP1 000009c7: REVERT 000009c8: JUMPDEST 000009c9: PUSH1 0x08 000009cb: DUP1 000009cc: SLOAD 000009cd: PUSH1 0x02 000009cf: DUP4 000009d0: ADD 000009d1: DUP1 000009d2: SLOAD 000009d3: PUSH1 0x01 000009d5: PUSH1 0x01 000009d7: PUSH1 0x80 000009d9: SHL 000009da: SUB 000009db: SWAP1 000009dc: SWAP3 000009dd: AND 000009de: PUSH2 0x0100 000009e1: MUL 000009e2: PUSH2 0x0100 000009e5: PUSH1 0x01 000009e7: PUSH1 0x88 000009e9: SHL 000009ea: SUB 000009eb: NOT 000009ec: SWAP1 000009ed: SWAP3 000009ee: AND 000009ef: SWAP2 000009f0: SWAP1 000009f1: SWAP2 000009f2: OR 000009f3: SWAP1 000009f4: SSTORE 000009f5: DUP1 000009f6: SLOAD 000009f7: PUSH1 0x01 000009f9: DUP2 000009fa: ADD 000009fb: DUP3 000009fc: SSTORE 000009fd: PUSH1 0x00 000009ff: SWAP2 00000a00: SWAP1 00000a01: SWAP2 00000a02: MSTORE 00000a03: PUSH32 0xf3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3 00000a24: ADD 00000a25: DUP1 00000a26: SLOAD 00000a27: PUSH1 0x01 00000a29: PUSH1 0x01 00000a2b: PUSH1 0xa0 00000a2d: SHL 00000a2e: SUB 00000a2f: NOT 00000a30: AND 00000a31: CALLER 00000a32: OR 00000a33: SWAP1 00000a34: SSTORE 00000a35: PUSH1 0x05 00000a37: SLOAD 00000a38: PUSH2 0x0a63 00000a3b: SWAP1 00000a3c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 00000a5d: CALLVALUE 00000a5e: SUB 00000a5f: PUSH2 0x22ee 00000a62: JUMP 00000a63: JUMPDEST 00000a64: PUSH1 0x05 00000a66: SSTORE 00000a67: PUSH2 0x0a7c 00000a6a: JUMP 00000a6b: JUMPDEST 00000a6c: PUSH1 0x05 00000a6e: SLOAD 00000a6f: PUSH2 0x0a78 00000a72: SWAP1 00000a73: CALLVALUE 00000a74: PUSH2 0x22ee 00000a77: JUMP 00000a78: JUMPDEST 00000a79: PUSH1 0x05 00000a7b: SSTORE 00000a7c: JUMPDEST 00000a7d: DUP1 00000a7e: SLOAD 00000a7f: PUSH2 0x0a88 00000a82: SWAP1 00000a83: CALLVALUE 00000a84: PUSH2 0x22ee 00000a87: JUMP 00000a88: JUMPDEST 00000a89: DUP2 00000a8a: SSTORE 00000a8b: PUSH1 0x40 00000a8d: DUP1 00000a8e: MLOAD 00000a8f: CALLVALUE 00000a90: DUP2 00000a91: MSTORE 00000a92: SWAP1 00000a93: MLOAD 00000a94: CALLER 00000a95: SWAP2 00000a96: PUSH32 0xe684a55f31b79eca403df938249029212a5925ec6be8012e099b45bc1019e5d2 00000ab7: SWAP2 00000ab8: SWAP1 00000ab9: DUP2 00000aba: SWAP1 00000abb: SUB 00000abc: PUSH1 0x20 00000abe: ADD 00000abf: SWAP1 00000ac0: LOG2 00000ac1: POP 00000ac2: JUMP 00000ac3: JUMPDEST 00000ac4: PUSH1 0x08 00000ac6: SLOAD 00000ac7: SWAP1 00000ac8: JUMP 00000ac9: JUMPDEST 00000aca: PUSH1 0x06 00000acc: PUSH1 0x20 00000ace: MSTORE 00000acf: PUSH1 0x00 00000ad1: SWAP1 00000ad2: DUP2 00000ad3: MSTORE 00000ad4: PUSH1 0x40 00000ad6: SWAP1 00000ad7: KECCAK256 00000ad8: DUP1 00000ad9: SLOAD 00000ada: PUSH1 0x01 00000adc: DUP3 00000add: ADD 00000ade: SLOAD 00000adf: PUSH1 0x02 00000ae1: SWAP1 00000ae2: SWAP3 00000ae3: ADD 00000ae4: SLOAD 00000ae5: SWAP1 00000ae6: SWAP2 00000ae7: SWAP1 00000ae8: PUSH1 0xff 00000aea: DUP2 00000aeb: AND 00000aec: SWAP1 00000aed: PUSH2 0x0100 00000af0: SWAP1 00000af1: DIV 00000af2: PUSH1 0x01 00000af4: PUSH1 0x01 00000af6: PUSH1 0x80 00000af8: SHL 00000af9: SUB 00000afa: AND 00000afb: DUP5 00000afc: JUMP 00000afd: JUMPDEST 00000afe: PUSH1 0x00 00000b00: PUSH2 0x0b07 00000b03: PUSH2 0x13f1 00000b06: JUMP 00000b07: JUMPDEST 00000b08: PUSH2 0x0b42 00000b0b: JUMPI 00000b0c: PUSH1 0x40 00000b0e: MLOAD 00000b0f: PUSH3 0x461bcd 00000b13: PUSH1 0xe5 00000b15: SHL 00000b16: DUP2 00000b17: MSTORE 00000b18: PUSH1 0x04 00000b1a: ADD 00000b1b: DUP1 00000b1c: DUP1 00000b1d: PUSH1 0x20 00000b1f: ADD 00000b20: DUP3 00000b21: DUP2 00000b22: SUB 00000b23: DUP3 00000b24: MSTORE 00000b25: PUSH1 0x21 00000b27: DUP2 00000b28: MSTORE 00000b29: PUSH1 0x20 00000b2b: ADD 00000b2c: DUP1 00000b2d: PUSH2 0x281f 00000b30: PUSH1 0x21 00000b32: SWAP2 00000b33: CODECOPY 00000b34: PUSH1 0x40 00000b36: ADD 00000b37: SWAP2 00000b38: POP 00000b39: POP 00000b3a: PUSH1 0x40 00000b3c: MLOAD 00000b3d: DUP1 00000b3e: SWAP2 00000b3f: SUB 00000b40: SWAP1 00000b41: REVERT 00000b42: JUMPDEST 00000b43: CALLER 00000b44: PUSH1 0x00 00000b46: SWAP1 00000b47: DUP2 00000b48: MSTORE 00000b49: PUSH1 0x06 00000b4b: PUSH1 0x20 00000b4d: MSTORE 00000b4e: PUSH1 0x40 00000b50: SWAP1 00000b51: KECCAK256 00000b52: PUSH1 0x02 00000b54: DUP2 00000b55: ADD 00000b56: SLOAD 00000b57: PUSH1 0xff 00000b59: AND 00000b5a: ISZERO 00000b5b: PUSH2 0x0bab 00000b5e: JUMPI 00000b5f: PUSH1 0x40 00000b61: DUP1 00000b62: MLOAD 00000b63: PUSH3 0x461bcd 00000b67: PUSH1 0xe5 00000b69: SHL 00000b6a: DUP2 00000b6b: MSTORE 00000b6c: PUSH1 0x20 00000b6e: PUSH1 0x04 00000b70: DUP3 00000b71: ADD 00000b72: MSTORE 00000b73: PUSH1 0x1a 00000b75: PUSH1 0x24 00000b77: DUP3 00000b78: ADD 00000b79: MSTORE 00000b7a: PUSH32 0x546f6b656e732061726520616c726561647920636c61696d6564000000000000 00000b9b: PUSH1 0x44 00000b9d: DUP3 00000b9e: ADD 00000b9f: MSTORE 00000ba0: SWAP1 00000ba1: MLOAD 00000ba2: SWAP1 00000ba3: DUP2 00000ba4: SWAP1 00000ba5: SUB 00000ba6: PUSH1 0x64 00000ba8: ADD 00000ba9: SWAP1 00000baa: REVERT 00000bab: JUMPDEST 00000bac: DUP1 00000bad: SLOAD 00000bae: PUSH2 0x0bb6 00000bb1: SWAP1 00000bb2: PUSH2 0x16f2 00000bb5: JUMP 00000bb6: JUMPDEST 00000bb7: SWAP2 00000bb8: POP 00000bb9: PUSH1 0x00 00000bbb: DUP3 00000bbc: GT 00000bbd: PUSH2 0x0c00 00000bc0: JUMPI 00000bc1: PUSH1 0x40 00000bc3: DUP1 00000bc4: MLOAD 00000bc5: PUSH3 0x461bcd 00000bc9: PUSH1 0xe5 00000bcb: SHL 00000bcc: DUP2 00000bcd: MSTORE 00000bce: PUSH1 0x20 00000bd0: PUSH1 0x04 00000bd2: DUP3 00000bd3: ADD 00000bd4: MSTORE 00000bd5: PUSH1 0x10 00000bd7: PUSH1 0x24 00000bd9: DUP3 00000bda: ADD 00000bdb: MSTORE 00000bdc: PUSH16 0x4e6f7468696e6720746f20636c61696d 00000bed: PUSH1 0x80 00000bef: SHL 00000bf0: PUSH1 0x44 00000bf2: DUP3 00000bf3: ADD 00000bf4: MSTORE 00000bf5: SWAP1 00000bf6: MLOAD 00000bf7: SWAP1 00000bf8: DUP2 00000bf9: SWAP1 00000bfa: SUB 00000bfb: PUSH1 0x64 00000bfd: ADD 00000bfe: SWAP1 00000bff: REVERT 00000c00: JUMPDEST 00000c01: PUSH1 0x02 00000c03: DUP2 00000c04: ADD 00000c05: DUP1 00000c06: SLOAD 00000c07: PUSH1 0xff 00000c09: NOT 00000c0a: AND 00000c0b: PUSH1 0x01 00000c0d: OR 00000c0e: SWAP1 00000c0f: SSTORE 00000c10: PUSH1 0x40 00000c12: DUP1 00000c13: MLOAD 00000c14: PUSH4 0x095ea7b3 00000c19: PUSH1 0xe0 00000c1b: SHL 00000c1c: DUP2 00000c1d: MSTORE 00000c1e: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2 00000c3f: PUSH1 0x01 00000c41: PUSH1 0x01 00000c43: PUSH1 0xa0 00000c45: SHL 00000c46: SUB 00000c47: SWAP1 00000c48: DUP2 00000c49: AND 00000c4a: PUSH1 0x04 00000c4c: DUP4 00000c4d: ADD 00000c4e: MSTORE 00000c4f: PUSH1 0x24 00000c51: DUP3 00000c52: ADD 00000c53: DUP6 00000c54: SWAP1 00000c55: MSTORE 00000c56: SWAP2 00000c57: MLOAD 00000c58: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc 00000c79: SWAP3 00000c7a: SWAP1 00000c7b: SWAP3 00000c7c: AND 00000c7d: SWAP2 00000c7e: PUSH4 0x095ea7b3 00000c83: SWAP2 00000c84: PUSH1 0x44 00000c86: DUP1 00000c87: DUP3 00000c88: ADD 00000c89: SWAP3 00000c8a: PUSH1 0x20 00000c8c: SWAP3 00000c8d: SWAP1 00000c8e: SWAP2 00000c8f: SWAP1 00000c90: DUP3 00000c91: SWAP1 00000c92: SUB 00000c93: ADD 00000c94: DUP2 00000c95: PUSH1 0x00 00000c97: DUP8 00000c98: DUP1 00000c99: EXTCODESIZE 00000c9a: ISZERO 00000c9b: DUP1 00000c9c: ISZERO 00000c9d: PUSH2 0x0ca5 00000ca0: JUMPI 00000ca1: PUSH1 0x00 00000ca3: DUP1 00000ca4: REVERT 00000ca5: JUMPDEST 00000ca6: POP 00000ca7: GAS 00000ca8: CALL 00000ca9: ISZERO 00000caa: DUP1 00000cab: ISZERO 00000cac: PUSH2 0x0cb9 00000caf: JUMPI 00000cb0: RETURNDATASIZE 00000cb1: PUSH1 0x00 00000cb3: DUP1 00000cb4: RETURNDATACOPY 00000cb5: RETURNDATASIZE 00000cb6: PUSH1 0x00 00000cb8: REVERT 00000cb9: JUMPDEST 00000cba: POP 00000cbb: POP 00000cbc: POP 00000cbd: POP 00000cbe: PUSH1 0x40 00000cc0: MLOAD 00000cc1: RETURNDATASIZE 00000cc2: PUSH1 0x20 00000cc4: DUP2 00000cc5: LT 00000cc6: ISZERO 00000cc7: PUSH2 0x0ccf 00000cca: JUMPI 00000ccb: PUSH1 0x00 00000ccd: DUP1 00000cce: REVERT 00000ccf: JUMPDEST 00000cd0: POP 00000cd1: POP 00000cd2: PUSH1 0x40 00000cd4: DUP1 00000cd5: MLOAD 00000cd6: PUSH4 0x0b8f81e1 00000cdb: PUSH1 0xe1 00000cdd: SHL 00000cde: DUP2 00000cdf: MSTORE 00000ce0: CALLER 00000ce1: PUSH1 0x04 00000ce3: DUP3 00000ce4: ADD 00000ce5: MSTORE 00000ce6: PUSH1 0x24 00000ce8: DUP2 00000ce9: ADD 00000cea: DUP5 00000ceb: SWAP1 00000cec: MSTORE 00000ced: PUSH2 0xffff 00000cf0: PUSH32 0x00000000000000000000000000000000000000000000000000000000000000b4 00000d11: AND 00000d12: PUSH1 0x44 00000d14: DUP3 00000d15: ADD 00000d16: MSTORE 00000d17: SWAP1 00000d18: MLOAD 00000d19: PUSH1 0x01 00000d1b: PUSH1 0x01 00000d1d: PUSH1 0xa0 00000d1f: SHL 00000d20: SUB 00000d21: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2 00000d42: AND 00000d43: SWAP2 00000d44: PUSH4 0x171f03c2 00000d49: SWAP2 00000d4a: PUSH1 0x64 00000d4c: DUP1 00000d4d: DUP4 00000d4e: ADD 00000d4f: SWAP3 00000d50: PUSH1 0x00 00000d52: SWAP3 00000d53: SWAP2 00000d54: SWAP1 00000d55: DUP3 00000d56: SWAP1 00000d57: SUB 00000d58: ADD 00000d59: DUP2 00000d5a: DUP4 00000d5b: DUP8 00000d5c: DUP1 00000d5d: EXTCODESIZE 00000d5e: ISZERO 00000d5f: DUP1 00000d60: ISZERO 00000d61: PUSH2 0x0d69 00000d64: JUMPI 00000d65: PUSH1 0x00 00000d67: DUP1 00000d68: REVERT 00000d69: JUMPDEST 00000d6a: POP 00000d6b: GAS 00000d6c: CALL 00000d6d: ISZERO 00000d6e: DUP1 00000d6f: ISZERO 00000d70: PUSH2 0x0d7d 00000d73: JUMPI 00000d74: RETURNDATASIZE 00000d75: PUSH1 0x00 00000d77: DUP1 00000d78: RETURNDATACOPY 00000d79: RETURNDATASIZE 00000d7a: PUSH1 0x00 00000d7c: REVERT 00000d7d: JUMPDEST 00000d7e: POP 00000d7f: POP 00000d80: PUSH1 0x40 00000d82: DUP1 00000d83: MLOAD 00000d84: PUSH4 0x12796b75 00000d89: PUSH1 0xe2 00000d8b: SHL 00000d8c: DUP2 00000d8d: MSTORE 00000d8e: CALLER 00000d8f: PUSH1 0x04 00000d91: DUP3 00000d92: ADD 00000d93: MSTORE 00000d94: PUSH1 0x01 00000d96: PUSH1 0x24 00000d98: DUP3 00000d99: ADD 00000d9a: MSTORE 00000d9b: SWAP1 00000d9c: MLOAD 00000d9d: PUSH1 0x01 00000d9f: PUSH1 0x01 00000da1: PUSH1 0xa0 00000da3: SHL 00000da4: SUB 00000da5: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2 00000dc6: AND 00000dc7: SWAP4 00000dc8: POP 00000dc9: PUSH4 0x49e5add4 00000dce: SWAP3 00000dcf: POP 00000dd0: PUSH1 0x44 00000dd2: DUP1 00000dd3: DUP4 00000dd4: ADD 00000dd5: SWAP3 00000dd6: PUSH1 0x20 00000dd8: SWAP3 00000dd9: SWAP2 00000dda: SWAP1 00000ddb: DUP3 00000ddc: SWAP1 00000ddd: SUB 00000dde: ADD 00000ddf: DUP2 00000de0: PUSH1 0x00 00000de2: DUP8 00000de3: DUP1 00000de4: EXTCODESIZE 00000de5: ISZERO 00000de6: DUP1 00000de7: ISZERO 00000de8: PUSH2 0x0df0 00000deb: JUMPI 00000dec: PUSH1 0x00 00000dee: DUP1 00000def: REVERT 00000df0: JUMPDEST 00000df1: POP 00000df2: GAS 00000df3: CALL 00000df4: ISZERO 00000df5: DUP1 00000df6: ISZERO 00000df7: PUSH2 0x0e04 00000dfa: JUMPI 00000dfb: RETURNDATASIZE 00000dfc: PUSH1 0x00 00000dfe: DUP1 00000dff: RETURNDATACOPY 00000e00: RETURNDATASIZE 00000e01: PUSH1 0x00 00000e03: REVERT 00000e04: JUMPDEST 00000e05: POP 00000e06: POP 00000e07: POP 00000e08: POP 00000e09: PUSH1 0x40 00000e0b: MLOAD 00000e0c: RETURNDATASIZE 00000e0d: PUSH1 0x20 00000e0f: DUP2 00000e10: LT 00000e11: ISZERO 00000e12: PUSH2 0x0e1a 00000e15: JUMPI 00000e16: PUSH1 0x00 00000e18: DUP1 00000e19: REVERT 00000e1a: JUMPDEST 00000e1b: POP 00000e1c: MLOAD 00000e1d: PUSH1 0x01 00000e1f: DUP3 00000e20: ADD 00000e21: SSTORE 00000e22: PUSH1 0x40 00000e24: DUP1 00000e25: MLOAD 00000e26: DUP4 00000e27: DUP2 00000e28: MSTORE 00000e29: SWAP1 00000e2a: MLOAD 00000e2b: CALLER 00000e2c: SWAP2 00000e2d: PUSH32 0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a 00000e4e: SWAP2 00000e4f: SWAP1 00000e50: DUP2 00000e51: SWAP1 00000e52: SUB 00000e53: PUSH1 0x20 00000e55: ADD 00000e56: SWAP1 00000e57: LOG2 00000e58: POP 00000e59: SWAP1 00000e5a: JUMP 00000e5b: JUMPDEST 00000e5c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 00000e7d: DUP2 00000e7e: JUMP 00000e7f: JUMPDEST 00000e80: PUSH1 0x07 00000e82: PUSH1 0x20 00000e84: MSTORE 00000e85: PUSH1 0x00 00000e87: SWAP1 00000e88: DUP2 00000e89: MSTORE 00000e8a: PUSH1 0x40 00000e8c: SWAP1 00000e8d: KECCAK256 00000e8e: SLOAD 00000e8f: DUP2 00000e90: JUMP 00000e91: JUMPDEST 00000e92: CALLER 00000e93: PUSH1 0x00 00000e95: SWAP1 00000e96: DUP2 00000e97: MSTORE 00000e98: PUSH1 0x06 00000e9a: PUSH1 0x20 00000e9c: MSTORE 00000e9d: PUSH1 0x40 00000e9f: DUP2 00000ea0: KECCAK256 00000ea1: PUSH1 0x02 00000ea3: DUP2 00000ea4: ADD 00000ea5: SLOAD 00000ea6: PUSH1 0xff 00000ea8: AND 00000ea9: PUSH2 0x0ee3 00000eac: JUMPI 00000ead: PUSH1 0x40 00000eaf: MLOAD 00000eb0: PUSH3 0x461bcd 00000eb4: PUSH1 0xe5 00000eb6: SHL 00000eb7: DUP2 00000eb8: MSTORE 00000eb9: PUSH1 0x04 00000ebb: ADD 00000ebc: DUP1 00000ebd: DUP1 00000ebe: PUSH1 0x20 00000ec0: ADD 00000ec1: DUP3 00000ec2: DUP2 00000ec3: SUB 00000ec4: DUP3 00000ec5: MSTORE 00000ec6: PUSH1 0x24 00000ec8: DUP2 00000ec9: MSTORE 00000eca: PUSH1 0x20 00000ecc: ADD 00000ecd: DUP1 00000ece: PUSH2 0x279c 00000ed1: PUSH1 0x24 00000ed3: SWAP2 00000ed4: CODECOPY 00000ed5: PUSH1 0x40 00000ed7: ADD 00000ed8: SWAP2 00000ed9: POP 00000eda: POP 00000edb: PUSH1 0x40 00000edd: MLOAD 00000ede: DUP1 00000edf: SWAP2 00000ee0: SUB 00000ee1: SWAP1 00000ee2: REVERT 00000ee3: JUMPDEST 00000ee4: PUSH2 0x0eec 00000ee7: CALLER 00000ee8: PUSH2 0x1216 00000eeb: JUMP 00000eec: JUMPDEST 00000eed: SWAP2 00000eee: POP 00000eef: PUSH1 0x00 00000ef1: DUP3 00000ef2: GT 00000ef3: PUSH2 0x0f2d 00000ef6: JUMPI 00000ef7: PUSH1 0x40 00000ef9: MLOAD 00000efa: PUSH3 0x461bcd 00000efe: PUSH1 0xe5 00000f00: SHL 00000f01: DUP2 00000f02: MSTORE 00000f03: PUSH1 0x04 00000f05: ADD 00000f06: DUP1 00000f07: DUP1 00000f08: PUSH1 0x20 00000f0a: ADD 00000f0b: DUP3 00000f0c: DUP2 00000f0d: SUB 00000f0e: DUP3 00000f0f: MSTORE 00000f10: PUSH1 0x41 00000f12: DUP2 00000f13: MSTORE 00000f14: PUSH1 0x20 00000f16: ADD 00000f17: DUP1 00000f18: PUSH2 0x2840 00000f1b: PUSH1 0x41 00000f1d: SWAP2 00000f1e: CODECOPY 00000f1f: PUSH1 0x60 00000f21: ADD 00000f22: SWAP2 00000f23: POP 00000f24: POP 00000f25: PUSH1 0x40 00000f27: MLOAD 00000f28: DUP1 00000f29: SWAP2 00000f2a: SUB 00000f2b: SWAP1 00000f2c: REVERT 00000f2d: JUMPDEST 00000f2e: DUP1 00000f2f: SLOAD 00000f30: DUP3 00000f31: EQ 00000f32: ISZERO 00000f33: PUSH2 0x0fdd 00000f36: JUMPI 00000f37: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2 00000f58: PUSH1 0x01 00000f5a: PUSH1 0x01 00000f5c: PUSH1 0xa0 00000f5e: SHL 00000f5f: SUB 00000f60: AND 00000f61: PUSH4 0x49e5add4 00000f66: CALLER 00000f67: PUSH1 0x00 00000f69: PUSH1 0x40 00000f6b: MLOAD 00000f6c: DUP4 00000f6d: PUSH4 0xffffffff 00000f72: AND 00000f73: PUSH1 0xe0 00000f75: SHL 00000f76: DUP2 00000f77: MSTORE 00000f78: PUSH1 0x04 00000f7a: ADD 00000f7b: DUP1 00000f7c: DUP4 00000f7d: PUSH1 0x01 00000f7f: PUSH1 0x01 00000f81: PUSH1 0xa0 00000f83: SHL 00000f84: SUB 00000f85: AND 00000f86: DUP2 00000f87: MSTORE 00000f88: PUSH1 0x20 00000f8a: ADD 00000f8b: DUP3 00000f8c: ISZERO 00000f8d: ISZERO 00000f8e: DUP2 00000f8f: MSTORE 00000f90: PUSH1 0x20 00000f92: ADD 00000f93: SWAP3 00000f94: POP 00000f95: POP 00000f96: POP 00000f97: PUSH1 0x20 00000f99: PUSH1 0x40 00000f9b: MLOAD 00000f9c: DUP1 00000f9d: DUP4 00000f9e: SUB 00000f9f: DUP2 00000fa0: PUSH1 0x00 00000fa2: DUP8 00000fa3: DUP1 00000fa4: EXTCODESIZE 00000fa5: ISZERO 00000fa6: DUP1 00000fa7: ISZERO 00000fa8: PUSH2 0x0fb0 00000fab: JUMPI 00000fac: PUSH1 0x00 00000fae: DUP1 00000faf: REVERT 00000fb0: JUMPDEST 00000fb1: POP 00000fb2: GAS 00000fb3: CALL 00000fb4: ISZERO 00000fb5: DUP1 00000fb6: ISZERO 00000fb7: PUSH2 0x0fc4 00000fba: JUMPI 00000fbb: RETURNDATASIZE 00000fbc: PUSH1 0x00 00000fbe: DUP1 00000fbf: RETURNDATACOPY 00000fc0: RETURNDATASIZE 00000fc1: PUSH1 0x00 00000fc3: REVERT 00000fc4: JUMPDEST 00000fc5: POP 00000fc6: POP 00000fc7: POP 00000fc8: POP 00000fc9: PUSH1 0x40 00000fcb: MLOAD 00000fcc: RETURNDATASIZE 00000fcd: PUSH1 0x20 00000fcf: DUP2 00000fd0: LT 00000fd1: ISZERO 00000fd2: PUSH2 0x0fda 00000fd5: JUMPI 00000fd6: PUSH1 0x00 00000fd8: DUP1 00000fd9: REVERT 00000fda: JUMPDEST 00000fdb: POP 00000fdc: POP 00000fdd: JUMPDEST 00000fde: DUP1 00000fdf: SLOAD 00000fe0: PUSH2 0x0fe9 00000fe3: SWAP1 00000fe4: DUP4 00000fe5: PUSH2 0x21a6 00000fe8: JUMP 00000fe9: JUMPDEST 00000fea: DUP1 00000feb: DUP3 00000fec: SSTORE 00000fed: PUSH1 0x00 00000fef: SWAP1 00000ff0: PUSH2 0x0ffa 00000ff3: SWAP1 00000ff4: DUP5 00000ff5: SWAP1 00000ff6: PUSH2 0x21bb 00000ff9: JUMP 00000ffa: JUMPDEST 00000ffb: PUSH1 0x01 00000ffd: DUP4 00000ffe: ADD 00000fff: SLOAD 00001000: SWAP1 00001001: SWAP2 00001002: POP 00001003: PUSH2 0x100c 00001006: SWAP1 00001007: DUP3 00001008: PUSH2 0x22ee 0000100b: JUMP 0000100c: JUMPDEST 0000100d: PUSH1 0x01 0000100f: DUP4 00001010: ADD 00001011: SSTORE 00001012: PUSH1 0x40 00001014: DUP1 00001015: MLOAD 00001016: DUP5 00001017: DUP2 00001018: MSTORE 00001019: PUSH1 0x20 0000101b: DUP2 0000101c: ADD 0000101d: DUP4 0000101e: SWAP1 0000101f: MSTORE 00001020: DUP2 00001021: MLOAD 00001022: CALLER 00001023: SWAP3 00001024: PUSH32 0x73f04af9dcc582a923ec15d3eea990fe34adabfff2879e28d44572e01a54abb6 00001045: SWAP3 00001046: DUP3 00001047: SWAP1 00001048: SUB 00001049: ADD 0000104a: SWAP1 0000104b: LOG2 0000104c: PUSH2 0x1055 0000104f: CALLER 00001050: DUP5 00001051: PUSH2 0x2307 00001054: JUMP 00001055: JUMPDEST 00001056: POP 00001057: POP 00001058: SWAP1 00001059: JUMP 0000105a: JUMPDEST 0000105b: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000320 0000107c: DUP2 0000107d: JUMP 0000107e: JUMPDEST 0000107f: PUSH1 0x04 00001081: SLOAD 00001082: DUP2 00001083: JUMP 00001084: JUMPDEST 00001085: PUSH1 0x08 00001087: SLOAD 00001088: PUSH1 0x05 0000108a: SLOAD 0000108b: PUSH1 0x00 0000108d: SWAP2 0000108e: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 000010af: MUL 000010b0: SWAP1 000010b1: PUSH2 0x10c9 000010b4: JUMPI 000010b5: PUSH2 0x10c1 000010b8: DUP5 000010b9: DUP3 000010ba: PUSH1 0x01 000010bc: SLOAD 000010bd: PUSH2 0x23f1 000010c0: JUMP 000010c1: JUMPDEST 000010c2: SWAP2 000010c3: POP 000010c4: POP 000010c5: PUSH2 0x081d 000010c8: JUMP 000010c9: JUMPDEST 000010ca: PUSH1 0x08 000010cc: SLOAD 000010cd: PUSH1 0x00 000010cf: SWAP1 000010d0: DUP2 000010d1: SWAP1 000010d2: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 000010f3: MUL 000010f4: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 00001115: DUP7 00001116: GT 00001117: ISZERO 00001118: PUSH2 0x117a 0000111b: JUMPI 0000111c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000113d: DUP7 0000113e: SUB 0000113f: SWAP2 00001140: POP 00001141: PUSH1 0x00 00001143: DUP2 00001144: PUSH1 0x01 00001146: SLOAD 00001147: SUB 00001148: SWAP1 00001149: POP 0000114a: PUSH2 0x1156 0000114d: DUP4 0000114e: DUP3 0000114f: PUSH1 0x05 00001151: SLOAD 00001152: PUSH2 0x243d 00001155: JUMP 00001156: JUMPDEST 00001157: SWAP4 00001158: POP 00001159: DUP4 0000115a: DUP9 0000115b: GT 0000115c: PUSH2 0x1178 0000115f: JUMPI 00001160: PUSH2 0x116c 00001163: DUP9 00001164: PUSH1 0x05 00001166: SLOAD 00001167: DUP4 00001168: PUSH2 0x23f1 0000116b: JUMP 0000116c: JUMPDEST 0000116d: SWAP6 0000116e: POP 0000116f: POP 00001170: POP 00001171: POP 00001172: POP 00001173: POP 00001174: PUSH2 0x081d 00001177: JUMP 00001178: JUMPDEST 00001179: POP 0000117a: JUMPDEST 0000117b: DUP3 0000117c: DUP8 0000117d: SUB 0000117e: SWAP7 0000117f: POP 00001180: PUSH2 0x118a 00001183: DUP8 00001184: DUP6 00001185: DUP4 00001186: PUSH2 0x23f1 00001189: JUMP 0000118a: JUMPDEST 0000118b: SWAP1 0000118c: SWAP2 0000118d: ADD 0000118e: SWAP7 0000118f: SWAP6 00001190: POP 00001191: POP 00001192: POP 00001193: POP 00001194: POP 00001195: POP 00001196: JUMP 00001197: JUMPDEST 00001198: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000 000011b9: DUP2 000011ba: JUMP 000011bb: JUMPDEST 000011bc: PUSH2 0x11c3 000011bf: PUSH2 0x1446 000011c2: JUMP 000011c3: JUMPDEST 000011c4: PUSH2 0x11cc 000011c7: JUMPI 000011c8: PUSH1 0x00 000011ca: DUP1 000011cb: REVERT 000011cc: JUMPDEST 000011cd: PUSH1 0x00 000011cf: DUP1 000011d0: SLOAD 000011d1: PUSH1 0x40 000011d3: MLOAD 000011d4: PUSH1 0x01 000011d6: PUSH1 0x01 000011d8: PUSH1 0xa0 000011da: SHL 000011db: SUB 000011dc: SWAP1 000011dd: SWAP2 000011de: AND 000011df: SWAP1 000011e0: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001201: SWAP1 00001202: DUP4 00001203: SWAP1 00001204: LOG3 00001205: PUSH1 0x00 00001207: DUP1 00001208: SLOAD 00001209: PUSH1 0x01 0000120b: PUSH1 0x01 0000120d: PUSH1 0xa0 0000120f: SHL 00001210: SUB 00001211: NOT 00001212: AND 00001213: SWAP1 00001214: SSTORE 00001215: JUMP 00001216: JUMPDEST 00001217: PUSH1 0x01 00001219: PUSH1 0x01 0000121b: PUSH1 0xa0 0000121d: SHL 0000121e: SUB 0000121f: DUP2 00001220: AND 00001221: PUSH1 0x00 00001223: SWAP1 00001224: DUP2 00001225: MSTORE 00001226: PUSH1 0x06 00001228: PUSH1 0x20 0000122a: MSTORE 0000122b: PUSH1 0x40 0000122d: DUP2 0000122e: KECCAK256 0000122f: DUP1 00001230: SLOAD 00001231: PUSH2 0x123e 00001234: JUMPI 00001235: PUSH1 0x00 00001237: SWAP2 00001238: POP 00001239: POP 0000123a: PUSH2 0x080b 0000123d: JUMP 0000123e: JUMPDEST 0000123f: PUSH1 0x00 00001241: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2 00001262: PUSH1 0x01 00001264: PUSH1 0x01 00001266: PUSH1 0xa0 00001268: SHL 00001269: SUB 0000126a: AND 0000126b: PUSH4 0xd094adbf 00001270: DUP6 00001271: PUSH1 0x40 00001273: MLOAD 00001274: DUP3 00001275: PUSH4 0xffffffff 0000127a: AND 0000127b: PUSH1 0xe0 0000127d: SHL 0000127e: DUP2 0000127f: MSTORE 00001280: PUSH1 0x04 00001282: ADD 00001283: DUP1 00001284: DUP3 00001285: PUSH1 0x01 00001287: PUSH1 0x01 00001289: PUSH1 0xa0 0000128b: SHL 0000128c: SUB 0000128d: AND 0000128e: DUP2 0000128f: MSTORE 00001290: PUSH1 0x20 00001292: ADD 00001293: SWAP2 00001294: POP 00001295: POP 00001296: PUSH1 0x20 00001298: PUSH1 0x40 0000129a: MLOAD 0000129b: DUP1 0000129c: DUP4 0000129d: SUB 0000129e: DUP2 0000129f: DUP7 000012a0: DUP1 000012a1: EXTCODESIZE 000012a2: ISZERO 000012a3: DUP1 000012a4: ISZERO 000012a5: PUSH2 0x12ad 000012a8: JUMPI 000012a9: PUSH1 0x00 000012ab: DUP1 000012ac: REVERT 000012ad: JUMPDEST 000012ae: POP 000012af: GAS 000012b0: STATICCALL 000012b1: ISZERO 000012b2: DUP1 000012b3: ISZERO 000012b4: PUSH2 0x12c1 000012b7: JUMPI 000012b8: RETURNDATASIZE 000012b9: PUSH1 0x00 000012bb: DUP1 000012bc: RETURNDATACOPY 000012bd: RETURNDATASIZE 000012be: PUSH1 0x00 000012c0: REVERT 000012c1: JUMPDEST 000012c2: POP 000012c3: POP 000012c4: POP 000012c5: POP 000012c6: PUSH1 0x40 000012c8: MLOAD 000012c9: RETURNDATASIZE 000012ca: PUSH1 0x20 000012cc: DUP2 000012cd: LT 000012ce: ISZERO 000012cf: PUSH2 0x12d7 000012d2: JUMPI 000012d3: PUSH1 0x00 000012d5: DUP1 000012d6: REVERT 000012d7: JUMPDEST 000012d8: POP 000012d9: MLOAD 000012da: PUSH1 0x01 000012dc: DUP4 000012dd: ADD 000012de: SLOAD 000012df: SWAP1 000012e0: SWAP2 000012e1: POP 000012e2: PUSH1 0x00 000012e4: SWAP1 000012e5: PUSH2 0x12ef 000012e8: SWAP1 000012e9: DUP4 000012ea: SWAP1 000012eb: PUSH2 0x21a6 000012ee: JUMP 000012ef: JUMPDEST 000012f0: SWAP1 000012f1: POP 000012f2: DUP1 000012f3: PUSH2 0x1302 000012f6: JUMPI 000012f7: PUSH1 0x00 000012f9: SWAP4 000012fa: POP 000012fb: POP 000012fc: POP 000012fd: POP 000012fe: PUSH2 0x080b 00001301: JUMP 00001302: JUMPDEST 00001303: PUSH1 0x00 00001305: PUSH2 0x1312 00001308: DUP3 00001309: DUP6 0000130a: PUSH1 0x00 0000130c: ADD 0000130d: SLOAD 0000130e: PUSH2 0x1084 00001311: JUMP 00001312: JUMPDEST 00001313: DUP5 00001314: SLOAD 00001315: SWAP1 00001316: SWAP2 00001317: POP 00001318: DUP2 00001319: GT 0000131a: ISZERO 0000131b: PUSH2 0x1322 0000131e: JUMPI 0000131f: POP 00001320: DUP3 00001321: SLOAD 00001322: JUMPDEST 00001323: SWAP6 00001324: SWAP5 00001325: POP 00001326: POP 00001327: POP 00001328: POP 00001329: POP 0000132a: JUMP 0000132b: JUMPDEST 0000132c: PUSH1 0x01 0000132e: SLOAD 0000132f: DUP2 00001330: JUMP 00001331: JUMPDEST 00001332: PUSH1 0x02 00001334: SLOAD 00001335: DUP2 00001336: JUMP 00001337: JUMPDEST 00001338: PUSH1 0x64 0000133a: DUP2 0000133b: JUMP 0000133c: JUMPDEST 0000133d: CALLER 0000133e: PUSH1 0x00 00001340: SWAP1 00001341: DUP2 00001342: MSTORE 00001343: PUSH1 0x07 00001345: PUSH1 0x20 00001347: MSTORE 00001348: PUSH1 0x40 0000134a: SWAP1 0000134b: KECCAK256 0000134c: SLOAD 0000134d: DUP1 0000134e: PUSH2 0x139e 00001351: JUMPI 00001352: PUSH1 0x40 00001354: DUP1 00001355: MLOAD 00001356: PUSH3 0x461bcd 0000135a: PUSH1 0xe5 0000135c: SHL 0000135d: DUP2 0000135e: MSTORE 0000135f: PUSH1 0x20 00001361: PUSH1 0x04 00001363: DUP3 00001364: ADD 00001365: MSTORE 00001366: PUSH1 0x18 00001368: PUSH1 0x24 0000136a: DUP3 0000136b: ADD 0000136c: MSTORE 0000136d: PUSH32 0x5468657265206973206e6f20636f6d70656e736174696f6e0000000000000000 0000138e: PUSH1 0x44 00001390: DUP3 00001391: ADD 00001392: MSTORE 00001393: SWAP1 00001394: MLOAD 00001395: SWAP1 00001396: DUP2 00001397: SWAP1 00001398: SUB 00001399: PUSH1 0x64 0000139b: ADD 0000139c: SWAP1 0000139d: REVERT 0000139e: JUMPDEST 0000139f: CALLER 000013a0: PUSH1 0x00 000013a2: DUP2 000013a3: DUP2 000013a4: MSTORE 000013a5: PUSH1 0x07 000013a7: PUSH1 0x20 000013a9: MSTORE 000013aa: PUSH1 0x40 000013ac: DUP2 000013ad: KECCAK256 000013ae: SSTORE 000013af: PUSH2 0x13b8 000013b2: SWAP1 000013b3: DUP3 000013b4: PUSH2 0x2307 000013b7: JUMP 000013b8: JUMPDEST 000013b9: PUSH1 0x40 000013bb: DUP1 000013bc: MLOAD 000013bd: DUP3 000013be: DUP2 000013bf: MSTORE 000013c0: SWAP1 000013c1: MLOAD 000013c2: CALLER 000013c3: SWAP2 000013c4: PUSH32 0x1480b15e3eab83a9b923578ffe330e3dce94536007ec9c0b48a5dfbde8c49181 000013e5: SWAP2 000013e6: SWAP1 000013e7: DUP2 000013e8: SWAP1 000013e9: SUB 000013ea: PUSH1 0x20 000013ec: ADD 000013ed: SWAP1 000013ee: LOG2 000013ef: POP 000013f0: JUMP 000013f1: JUMPDEST 000013f2: PUSH1 0x00 000013f4: PUSH1 0x04 000013f6: SLOAD 000013f7: TIMESTAMP 000013f8: LT 000013f9: ISZERO 000013fa: DUP1 000013fb: ISZERO 000013fc: PUSH2 0x1408 000013ff: JUMPI 00001400: POP 00001401: PUSH1 0x08 00001403: SLOAD 00001404: PUSH1 0x09 00001406: SLOAD 00001407: EQ 00001408: JUMPDEST 00001409: SWAP1 0000140a: POP 0000140b: SWAP1 0000140c: JUMP 0000140d: JUMPDEST 0000140e: PUSH1 0x03 00001410: SLOAD 00001411: DUP2 00001412: JUMP 00001413: JUMPDEST 00001414: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 00001435: DUP2 00001436: JUMP 00001437: JUMPDEST 00001438: PUSH1 0x00 0000143a: SLOAD 0000143b: PUSH1 0x01 0000143d: PUSH1 0x01 0000143f: PUSH1 0xa0 00001441: SHL 00001442: SUB 00001443: AND 00001444: SWAP1 00001445: JUMP 00001446: JUMPDEST 00001447: PUSH1 0x00 00001449: SLOAD 0000144a: PUSH1 0x01 0000144c: PUSH1 0x01 0000144e: PUSH1 0xa0 00001450: SHL 00001451: SUB 00001452: AND 00001453: CALLER 00001454: EQ 00001455: SWAP1 00001456: JUMP 00001457: JUMPDEST 00001458: PUSH1 0x04 0000145a: SLOAD 0000145b: TIMESTAMP 0000145c: LT 0000145d: PUSH2 0x1497 00001460: JUMPI 00001461: PUSH1 0x40 00001463: MLOAD 00001464: PUSH3 0x461bcd 00001468: PUSH1 0xe5 0000146a: SHL 0000146b: DUP2 0000146c: MSTORE 0000146d: PUSH1 0x04 0000146f: ADD 00001470: DUP1 00001471: DUP1 00001472: PUSH1 0x20 00001474: ADD 00001475: DUP3 00001476: DUP2 00001477: SUB 00001478: DUP3 00001479: MSTORE 0000147a: PUSH1 0x34 0000147c: DUP2 0000147d: MSTORE 0000147e: PUSH1 0x20 00001480: ADD 00001481: DUP1 00001482: PUSH2 0x2881 00001485: PUSH1 0x34 00001487: SWAP2 00001488: CODECOPY 00001489: PUSH1 0x40 0000148b: ADD 0000148c: SWAP2 0000148d: POP 0000148e: POP 0000148f: PUSH1 0x40 00001491: MLOAD 00001492: DUP1 00001493: SWAP2 00001494: SUB 00001495: SWAP1 00001496: REVERT 00001497: JUMPDEST 00001498: CALLER 00001499: PUSH1 0x00 0000149b: SWAP1 0000149c: DUP2 0000149d: MSTORE 0000149e: PUSH1 0x06 000014a0: PUSH1 0x20 000014a2: MSTORE 000014a3: PUSH1 0x40 000014a5: SWAP1 000014a6: KECCAK256 000014a7: DUP1 000014a8: SLOAD 000014a9: PUSH2 0x14ec 000014ac: JUMPI 000014ad: PUSH1 0x40 000014af: DUP1 000014b0: MLOAD 000014b1: PUSH3 0x461bcd 000014b5: PUSH1 0xe5 000014b7: SHL 000014b8: DUP2 000014b9: MSTORE 000014ba: PUSH1 0x20 000014bc: PUSH1 0x04 000014be: DUP3 000014bf: ADD 000014c0: MSTORE 000014c1: PUSH1 0x10 000014c3: PUSH1 0x24 000014c5: DUP3 000014c6: ADD 000014c7: MSTORE 000014c8: PUSH16 0x139bc8189a59081d1bc818d85b98d95b 000014d9: PUSH1 0x82 000014db: SHL 000014dc: PUSH1 0x44 000014de: DUP3 000014df: ADD 000014e0: MSTORE 000014e1: SWAP1 000014e2: MLOAD 000014e3: SWAP1 000014e4: DUP2 000014e5: SWAP1 000014e6: SUB 000014e7: PUSH1 0x64 000014e9: ADD 000014ea: SWAP1 000014eb: REVERT 000014ec: JUMPDEST 000014ed: PUSH1 0x02 000014ef: DUP2 000014f0: ADD 000014f1: SLOAD 000014f2: PUSH1 0xff 000014f4: AND 000014f5: ISZERO 000014f6: PUSH2 0x1546 000014f9: JUMPI 000014fa: PUSH1 0x40 000014fc: DUP1 000014fd: MLOAD 000014fe: PUSH3 0x461bcd 00001502: PUSH1 0xe5 00001504: SHL 00001505: DUP2 00001506: MSTORE 00001507: PUSH1 0x20 00001509: PUSH1 0x04 0000150b: DUP3 0000150c: ADD 0000150d: MSTORE 0000150e: PUSH1 0x1a 00001510: PUSH1 0x24 00001512: DUP3 00001513: ADD 00001514: MSTORE 00001515: PUSH32 0x546f6b656e732061726520616c726561647920636c61696d6564000000000000 00001536: PUSH1 0x44 00001538: DUP3 00001539: ADD 0000153a: MSTORE 0000153b: SWAP1 0000153c: MLOAD 0000153d: SWAP1 0000153e: DUP2 0000153f: SWAP1 00001540: SUB 00001541: PUSH1 0x64 00001543: ADD 00001544: SWAP1 00001545: REVERT 00001546: JUMPDEST 00001547: DUP1 00001548: SLOAD 00001549: PUSH1 0x00 0000154b: DUP3 0000154c: SSTORE 0000154d: PUSH1 0x08 0000154f: SLOAD 00001550: PUSH1 0x02 00001552: DUP4 00001553: ADD 00001554: SLOAD 00001555: PUSH1 0x00 00001557: NOT 00001558: SWAP1 00001559: SWAP2 0000155a: ADD 0000155b: SWAP1 0000155c: PUSH2 0x0100 0000155f: SWAP1 00001560: DIV 00001561: PUSH1 0x01 00001563: PUSH1 0x01 00001565: PUSH1 0x80 00001567: SHL 00001568: SUB 00001569: AND 0000156a: DUP2 0000156b: EQ 0000156c: PUSH2 0x161f 0000156f: JUMPI 00001570: PUSH1 0x00 00001572: PUSH1 0x08 00001574: DUP3 00001575: DUP2 00001576: SLOAD 00001577: DUP2 00001578: LT 00001579: PUSH2 0x157e 0000157c: JUMPI 0000157d: INVALID 0000157e: JUMPDEST 0000157f: PUSH1 0x00 00001581: SWAP2 00001582: DUP3 00001583: MSTORE 00001584: PUSH1 0x20 00001586: SWAP1 00001587: SWAP2 00001588: KECCAK256 00001589: ADD 0000158a: SLOAD 0000158b: PUSH1 0x02 0000158d: DUP6 0000158e: ADD 0000158f: SLOAD 00001590: PUSH1 0x08 00001592: DUP1 00001593: SLOAD 00001594: PUSH1 0x01 00001596: PUSH1 0x01 00001598: PUSH1 0xa0 0000159a: SHL 0000159b: SUB 0000159c: SWAP1 0000159d: SWAP4 0000159e: AND 0000159f: SWAP4 000015a0: POP 000015a1: DUP4 000015a2: SWAP3 000015a3: SWAP1 000015a4: SWAP2 000015a5: PUSH2 0x0100 000015a8: SWAP1 000015a9: DIV 000015aa: PUSH1 0x01 000015ac: PUSH1 0x01 000015ae: PUSH1 0x80 000015b0: SHL 000015b1: SUB 000015b2: AND 000015b3: SWAP1 000015b4: DUP2 000015b5: LT 000015b6: PUSH2 0x15bb 000015b9: JUMPI 000015ba: INVALID 000015bb: JUMPDEST 000015bc: PUSH1 0x00 000015be: SWAP2 000015bf: DUP3 000015c0: MSTORE 000015c1: PUSH1 0x20 000015c3: DUP1 000015c4: DUP4 000015c5: KECCAK256 000015c6: SWAP2 000015c7: SWAP1 000015c8: SWAP2 000015c9: ADD 000015ca: DUP1 000015cb: SLOAD 000015cc: PUSH1 0x01 000015ce: PUSH1 0x01 000015d0: PUSH1 0xa0 000015d2: SHL 000015d3: SUB 000015d4: NOT 000015d5: AND 000015d6: PUSH1 0x01 000015d8: PUSH1 0x01 000015da: PUSH1 0xa0 000015dc: SHL 000015dd: SUB 000015de: SWAP5 000015df: DUP6 000015e0: AND 000015e1: OR 000015e2: SWAP1 000015e3: SSTORE 000015e4: PUSH1 0x02 000015e6: DUP8 000015e7: DUP2 000015e8: ADD 000015e9: SLOAD 000015ea: SWAP5 000015eb: SWAP1 000015ec: SWAP4 000015ed: AND 000015ee: DUP3 000015ef: MSTORE 000015f0: PUSH1 0x06 000015f2: SWAP1 000015f3: MSTORE 000015f4: PUSH1 0x40 000015f6: SWAP1 000015f7: KECCAK256 000015f8: ADD 000015f9: DUP1 000015fa: SLOAD 000015fb: PUSH2 0x0100 000015fe: PUSH1 0x01 00001600: PUSH1 0x88 00001602: SHL 00001603: SUB 00001604: NOT 00001605: AND 00001606: PUSH2 0x0100 00001609: SWAP3 0000160a: DUP4 0000160b: SWAP1 0000160c: DIV 0000160d: PUSH1 0x01 0000160f: PUSH1 0x01 00001611: PUSH1 0x80 00001613: SHL 00001614: SUB 00001615: AND 00001616: SWAP1 00001617: SWAP3 00001618: MUL 00001619: SWAP2 0000161a: SWAP1 0000161b: SWAP2 0000161c: OR 0000161d: SWAP1 0000161e: SSTORE 0000161f: JUMPDEST 00001620: PUSH1 0x08 00001622: DUP1 00001623: SLOAD 00001624: DUP1 00001625: PUSH2 0x162a 00001628: JUMPI 00001629: INVALID 0000162a: JUMPDEST 0000162b: PUSH1 0x00 0000162d: DUP3 0000162e: DUP2 0000162f: MSTORE 00001630: PUSH1 0x20 00001632: SWAP1 00001633: KECCAK256 00001634: DUP2 00001635: ADD 00001636: PUSH1 0x00 00001638: NOT 00001639: SWAP1 0000163a: DUP2 0000163b: ADD 0000163c: DUP1 0000163d: SLOAD 0000163e: PUSH1 0x01 00001640: PUSH1 0x01 00001642: PUSH1 0xa0 00001644: SHL 00001645: SUB 00001646: NOT 00001647: AND 00001648: SWAP1 00001649: SSTORE 0000164a: ADD 0000164b: SWAP1 0000164c: SSTORE 0000164d: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000166e: DUP3 0000166f: GT 00001670: ISZERO 00001671: PUSH2 0x16a7 00001674: JUMPI 00001675: PUSH1 0x05 00001677: SLOAD 00001678: PUSH2 0x16a3 0000167b: SWAP1 0000167c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000169d: DUP5 0000169e: SUB 0000169f: PUSH2 0x21a6 000016a2: JUMP 000016a3: JUMPDEST 000016a4: PUSH1 0x05 000016a6: SSTORE 000016a7: JUMPDEST 000016a8: PUSH2 0x16b1 000016ab: CALLER 000016ac: DUP4 000016ad: PUSH2 0x2307 000016b0: JUMP 000016b1: JUMPDEST 000016b2: PUSH1 0x40 000016b4: DUP1 000016b5: MLOAD 000016b6: DUP4 000016b7: DUP2 000016b8: MSTORE 000016b9: SWAP1 000016ba: MLOAD 000016bb: CALLER 000016bc: SWAP2 000016bd: PUSH32 0xf3a6ef5718c05d9183af076f5753197b68b04552a763c34796637d6134bdd0f2 000016de: SWAP2 000016df: SWAP1 000016e0: DUP2 000016e1: SWAP1 000016e2: SUB 000016e3: PUSH1 0x20 000016e5: ADD 000016e6: SWAP1 000016e7: LOG2 000016e8: POP 000016e9: POP 000016ea: POP 000016eb: JUMP 000016ec: JUMPDEST 000016ed: PUSH1 0x05 000016ef: SLOAD 000016f0: DUP2 000016f1: JUMP 000016f2: JUMPDEST 000016f3: PUSH1 0x00 000016f5: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 00001716: DUP3 00001717: LT 00001718: ISZERO 00001719: PUSH2 0x1724 0000171c: JUMPI 0000171d: POP 0000171e: PUSH1 0x00 00001720: PUSH2 0x080b 00001723: JUMP 00001724: JUMPDEST 00001725: PUSH1 0x05 00001727: SLOAD 00001728: PUSH2 0x1740 0000172b: JUMPI 0000172c: PUSH1 0x08 0000172e: SLOAD 0000172f: PUSH1 0x01 00001731: SLOAD 00001732: DUP2 00001733: PUSH2 0x1738 00001736: JUMPI 00001737: INVALID 00001738: JUMPDEST 00001739: DIV 0000173a: SWAP1 0000173b: POP 0000173c: PUSH2 0x080b 0000173f: JUMP 00001740: JUMPDEST 00001741: PUSH1 0x08 00001743: SLOAD 00001744: PUSH1 0x01 00001746: SLOAD 00001747: PUSH1 0x05 00001749: SLOAD 0000174a: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000176b: DUP6 0000176c: SUB 0000176d: SWAP3 0000176e: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 0000178f: MUL 00001790: SWAP1 00001791: SWAP2 00001792: SUB 00001793: SWAP1 00001794: PUSH2 0x17a7 00001797: SWAP1 00001798: PUSH2 0x17a1 0000179b: DUP5 0000179c: DUP5 0000179d: PUSH2 0x2477 000017a0: JUMP 000017a1: JUMPDEST 000017a2: SWAP1 000017a3: PUSH2 0x249e 000017a6: JUMP 000017a7: JUMPDEST 000017a8: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 000017c9: ADD 000017ca: SWAP5 000017cb: SWAP4 000017cc: POP 000017cd: POP 000017ce: POP 000017cf: POP 000017d0: JUMP 000017d1: JUMPDEST 000017d2: PUSH1 0x09 000017d4: SLOAD 000017d5: DUP2 000017d6: JUMP 000017d7: JUMPDEST 000017d8: PUSH1 0x00 000017da: PUSH1 0x04 000017dc: SLOAD 000017dd: TIMESTAMP 000017de: LT 000017df: ISZERO 000017e0: PUSH2 0x181a 000017e3: JUMPI 000017e4: PUSH1 0x40 000017e6: MLOAD 000017e7: PUSH3 0x461bcd 000017eb: PUSH1 0xe5 000017ed: SHL 000017ee: DUP2 000017ef: MSTORE 000017f0: PUSH1 0x04 000017f2: ADD 000017f3: DUP1 000017f4: DUP1 000017f5: PUSH1 0x20 000017f7: ADD 000017f8: DUP3 000017f9: DUP2 000017fa: SUB 000017fb: DUP3 000017fc: MSTORE 000017fd: PUSH1 0x34 000017ff: DUP2 00001800: MSTORE 00001801: PUSH1 0x20 00001803: ADD 00001804: DUP1 00001805: PUSH2 0x2900 00001808: PUSH1 0x34 0000180a: SWAP2 0000180b: CODECOPY 0000180c: PUSH1 0x40 0000180e: ADD 0000180f: SWAP2 00001810: POP 00001811: POP 00001812: PUSH1 0x40 00001814: MLOAD 00001815: DUP1 00001816: SWAP2 00001817: SUB 00001818: SWAP1 00001819: REVERT 0000181a: JUMPDEST 0000181b: PUSH1 0x08 0000181d: SLOAD 0000181e: PUSH1 0x09 00001820: SLOAD 00001821: EQ 00001822: ISZERO 00001823: PUSH2 0x185d 00001826: JUMPI 00001827: PUSH1 0x40 00001829: MLOAD 0000182a: PUSH3 0x461bcd 0000182e: PUSH1 0xe5 00001830: SHL 00001831: DUP2 00001832: MSTORE 00001833: PUSH1 0x04 00001835: ADD 00001836: DUP1 00001837: DUP1 00001838: PUSH1 0x20 0000183a: ADD 0000183b: DUP3 0000183c: DUP2 0000183d: SUB 0000183e: DUP3 0000183f: MSTORE 00001840: PUSH1 0x21 00001842: DUP2 00001843: MSTORE 00001844: PUSH1 0x20 00001846: ADD 00001847: DUP1 00001848: PUSH2 0x2727 0000184b: PUSH1 0x21 0000184d: SWAP2 0000184e: CODECOPY 0000184f: PUSH1 0x40 00001851: ADD 00001852: SWAP2 00001853: POP 00001854: POP 00001855: PUSH1 0x40 00001857: MLOAD 00001858: DUP1 00001859: SWAP2 0000185a: SUB 0000185b: SWAP1 0000185c: REVERT 0000185d: JUMPDEST 0000185e: PUSH1 0x09 00001860: SLOAD 00001861: PUSH1 0x05 00001863: SLOAD 00001864: PUSH2 0x18e5 00001867: JUMPI 00001868: PUSH1 0x08 0000186a: SLOAD 0000186b: PUSH1 0x01 0000186d: SLOAD 0000186e: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000 0000188f: SWAP2 00001890: SWAP1 00001891: DUP2 00001892: PUSH2 0x1897 00001895: JUMPI 00001896: INVALID 00001897: JUMPDEST 00001898: DIV 00001899: GT 0000189a: ISZERO 0000189b: PUSH2 0x18e0 0000189e: JUMPI 0000189f: PUSH1 0x40 000018a1: DUP1 000018a2: MLOAD 000018a3: PUSH3 0x461bcd 000018a7: PUSH1 0xe5 000018a9: SHL 000018aa: DUP2 000018ab: MSTORE 000018ac: PUSH1 0x20 000018ae: PUSH1 0x04 000018b0: DUP3 000018b1: ADD 000018b2: MSTORE 000018b3: PUSH1 0x12 000018b5: PUSH1 0x24 000018b7: DUP3 000018b8: ADD 000018b9: MSTORE 000018ba: PUSH18 0x4e6f7420656e6f7567682062696464657273 000018cd: PUSH1 0x70 000018cf: SHL 000018d0: PUSH1 0x44 000018d2: DUP3 000018d3: ADD 000018d4: MSTORE 000018d5: SWAP1 000018d6: MLOAD 000018d7: SWAP1 000018d8: DUP2 000018d9: SWAP1 000018da: SUB 000018db: PUSH1 0x64 000018dd: ADD 000018de: SWAP1 000018df: REVERT 000018e0: JUMPDEST 000018e1: POP 000018e2: PUSH1 0x08 000018e4: SLOAD 000018e5: JUMPDEST 000018e6: PUSH1 0x08 000018e8: SLOAD 000018e9: PUSH1 0x01 000018eb: SLOAD 000018ec: PUSH1 0x05 000018ee: SLOAD 000018ef: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 00001910: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000 00001931: DUP2 00001932: SWAP1 00001933: SUB 00001934: SWAP4 00001935: MUL 00001936: SWAP1 00001937: SWAP2 00001938: SUB 00001939: SWAP1 0000193a: PUSH1 0x00 0000193c: SWAP1 0000193d: PUSH2 0x194d 00001940: SWAP1 00001941: DUP4 00001942: SWAP1 00001943: PUSH2 0x17a1 00001946: SWAP1 00001947: DUP7 00001948: SWAP1 00001949: PUSH2 0x2477 0000194c: JUMP 0000194d: JUMPDEST 0000194e: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000196f: ADD 00001970: SWAP1 00001971: POP 00001972: JUMPDEST 00001973: PUSH1 0x08 00001975: SLOAD 00001976: DUP5 00001977: LT 00001978: DUP1 00001979: ISZERO 0000197a: PUSH2 0x1982 0000197d: JUMPI 0000197e: POP 0000197f: DUP6 00001980: GAS 00001981: GT 00001982: JUMPDEST 00001983: ISZERO 00001984: PUSH2 0x1a08 00001987: JUMPI 00001988: PUSH1 0x00 0000198a: PUSH1 0x08 0000198c: DUP6 0000198d: DUP2 0000198e: SLOAD 0000198f: DUP2 00001990: LT 00001991: PUSH2 0x1996 00001994: JUMPI 00001995: INVALID 00001996: JUMPDEST 00001997: PUSH1 0x00 00001999: SWAP2 0000199a: DUP3 0000199b: MSTORE 0000199c: PUSH1 0x20 0000199e: DUP1 0000199f: DUP4 000019a0: KECCAK256 000019a1: SWAP1 000019a2: SWAP2 000019a3: ADD 000019a4: SLOAD 000019a5: PUSH1 0x01 000019a7: PUSH1 0x01 000019a9: PUSH1 0xa0 000019ab: SHL 000019ac: SUB 000019ad: AND 000019ae: DUP1 000019af: DUP4 000019b0: MSTORE 000019b1: PUSH1 0x06 000019b3: SWAP1 000019b4: SWAP2 000019b5: MSTORE 000019b6: PUSH1 0x40 000019b8: SWAP1 000019b9: SWAP2 000019ba: KECCAK256 000019bb: SLOAD 000019bc: SWAP1 000019bd: SWAP2 000019be: POP 000019bf: DUP3 000019c0: LT 000019c1: ISZERO 000019c2: PUSH2 0x19fc 000019c5: JUMPI 000019c6: PUSH1 0x40 000019c8: MLOAD 000019c9: PUSH3 0x461bcd 000019cd: PUSH1 0xe5 000019cf: SHL 000019d0: DUP2 000019d1: MSTORE 000019d2: PUSH1 0x04 000019d4: ADD 000019d5: DUP1 000019d6: DUP1 000019d7: PUSH1 0x20 000019d9: ADD 000019da: DUP3 000019db: DUP2 000019dc: SUB 000019dd: DUP3 000019de: MSTORE 000019df: PUSH1 0x25 000019e1: DUP2 000019e2: MSTORE 000019e3: PUSH1 0x20 000019e5: ADD 000019e6: DUP1 000019e7: PUSH2 0x27c0 000019ea: PUSH1 0x25 000019ec: SWAP2 000019ed: CODECOPY 000019ee: PUSH1 0x40 000019f0: ADD 000019f1: SWAP2 000019f2: POP 000019f3: POP 000019f4: PUSH1 0x40 000019f6: MLOAD 000019f7: DUP1 000019f8: SWAP2 000019f9: SUB 000019fa: SWAP1 000019fb: REVERT 000019fc: JUMPDEST 000019fd: POP 000019fe: PUSH1 0x01 00001a00: SWAP1 00001a01: SWAP4 00001a02: ADD 00001a03: SWAP3 00001a04: PUSH2 0x1972 00001a07: JUMP 00001a08: JUMPDEST 00001a09: PUSH1 0x09 00001a0b: SLOAD 00001a0c: DUP5 00001a0d: EQ 00001a0e: PUSH2 0x1a55 00001a11: JUMPI 00001a12: PUSH1 0x09 00001a14: SLOAD 00001a15: PUSH1 0x40 00001a17: DUP1 00001a18: MLOAD 00001a19: SWAP2 00001a1a: DUP3 00001a1b: MSTORE 00001a1c: PUSH1 0x20 00001a1e: DUP3 00001a1f: ADD 00001a20: DUP7 00001a21: SWAP1 00001a22: MSTORE 00001a23: DUP1 00001a24: MLOAD 00001a25: CALLER 00001a26: SWAP3 00001a27: PUSH32 0x97d5ad02b58968c48057bb16e90b9468ec753e30169bf00692b7ba02b47b090e 00001a48: SWAP3 00001a49: SWAP1 00001a4a: DUP3 00001a4b: SWAP1 00001a4c: SUB 00001a4d: ADD 00001a4e: SWAP1 00001a4f: LOG2 00001a50: PUSH1 0x09 00001a52: DUP5 00001a53: SWAP1 00001a54: SSTORE 00001a55: JUMPDEST 00001a56: POP 00001a57: POP 00001a58: PUSH1 0x09 00001a5a: SLOAD 00001a5b: SWAP5 00001a5c: SWAP4 00001a5d: POP 00001a5e: POP 00001a5f: POP 00001a60: POP 00001a61: JUMP 00001a62: JUMPDEST 00001a63: PUSH32 0x00000000000000000000000000000000000000000000000000000000000000b4 00001a84: DUP2 00001a85: JUMP 00001a86: JUMPDEST 00001a87: PUSH1 0x04 00001a89: SLOAD 00001a8a: TIMESTAMP 00001a8b: LT 00001a8c: ISZERO 00001a8d: PUSH2 0x1ac7 00001a90: JUMPI 00001a91: PUSH1 0x40 00001a93: MLOAD 00001a94: PUSH3 0x461bcd 00001a98: PUSH1 0xe5 00001a9a: SHL 00001a9b: DUP2 00001a9c: MSTORE 00001a9d: PUSH1 0x04 00001a9f: ADD 00001aa0: DUP1 00001aa1: DUP1 00001aa2: PUSH1 0x20 00001aa4: ADD 00001aa5: DUP3 00001aa6: DUP2 00001aa7: SUB 00001aa8: DUP3 00001aa9: MSTORE 00001aaa: PUSH1 0x34 00001aac: DUP2 00001aad: MSTORE 00001aae: PUSH1 0x20 00001ab0: ADD 00001ab1: DUP1 00001ab2: PUSH2 0x2900 00001ab5: PUSH1 0x34 00001ab7: SWAP2 00001ab8: CODECOPY 00001ab9: PUSH1 0x40 00001abb: ADD 00001abc: SWAP2 00001abd: POP 00001abe: POP 00001abf: PUSH1 0x40 00001ac1: MLOAD 00001ac2: DUP1 00001ac3: SWAP2 00001ac4: SUB 00001ac5: SWAP1 00001ac6: REVERT 00001ac7: JUMPDEST 00001ac8: PUSH1 0x08 00001aca: SLOAD 00001acb: PUSH1 0x09 00001acd: SLOAD 00001ace: EQ 00001acf: ISZERO 00001ad0: PUSH2 0x1b0a 00001ad3: JUMPI 00001ad4: PUSH1 0x40 00001ad6: MLOAD 00001ad7: PUSH3 0x461bcd 00001adb: PUSH1 0xe5 00001add: SHL 00001ade: DUP2 00001adf: MSTORE 00001ae0: PUSH1 0x04 00001ae2: ADD 00001ae3: DUP1 00001ae4: DUP1 00001ae5: PUSH1 0x20 00001ae7: ADD 00001ae8: DUP3 00001ae9: DUP2 00001aea: SUB 00001aeb: DUP3 00001aec: MSTORE 00001aed: PUSH1 0x21 00001aef: DUP2 00001af0: MSTORE 00001af1: PUSH1 0x20 00001af3: ADD 00001af4: DUP1 00001af5: PUSH2 0x2727 00001af8: PUSH1 0x21 00001afa: SWAP2 00001afb: CODECOPY 00001afc: PUSH1 0x40 00001afe: ADD 00001aff: SWAP2 00001b00: POP 00001b01: POP 00001b02: PUSH1 0x40 00001b04: MLOAD 00001b05: DUP1 00001b06: SWAP2 00001b07: SUB 00001b08: SWAP1 00001b09: REVERT 00001b0a: JUMPDEST 00001b0b: DUP1 00001b0c: DUP1 00001b0d: PUSH2 0x1b47 00001b10: JUMPI 00001b11: PUSH1 0x40 00001b13: MLOAD 00001b14: PUSH3 0x461bcd 00001b18: PUSH1 0xe5 00001b1a: SHL 00001b1b: DUP2 00001b1c: MSTORE 00001b1d: PUSH1 0x04 00001b1f: ADD 00001b20: DUP1 00001b21: DUP1 00001b22: PUSH1 0x20 00001b24: ADD 00001b25: DUP3 00001b26: DUP2 00001b27: SUB 00001b28: DUP3 00001b29: MSTORE 00001b2a: PUSH1 0x28 00001b2c: DUP2 00001b2d: MSTORE 00001b2e: PUSH1 0x20 00001b30: ADD 00001b31: DUP1 00001b32: PUSH2 0x2774 00001b35: PUSH1 0x28 00001b37: SWAP2 00001b38: CODECOPY 00001b39: PUSH1 0x40 00001b3b: ADD 00001b3c: SWAP2 00001b3d: POP 00001b3e: POP 00001b3f: PUSH1 0x40 00001b41: MLOAD 00001b42: DUP1 00001b43: SWAP2 00001b44: SUB 00001b45: SWAP1 00001b46: REVERT 00001b47: JUMPDEST 00001b48: PUSH1 0x01 00001b4a: SLOAD 00001b4b: PUSH1 0x00 00001b4d: SWAP1 00001b4e: PUSH2 0x1b77 00001b51: SWAP1 00001b52: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000 00001b73: PUSH2 0x24c0 00001b76: JUMP 00001b77: JUMPDEST 00001b78: PUSH1 0x08 00001b7a: SLOAD 00001b7b: SWAP1 00001b7c: SWAP2 00001b7d: POP 00001b7e: DUP2 00001b7f: GT 00001b80: ISZERO 00001b81: PUSH2 0x1b93 00001b84: JUMPI 00001b85: PUSH2 0x1b8c 00001b88: PUSH2 0x24df 00001b8b: JUMP 00001b8c: JUMPDEST 00001b8d: POP 00001b8e: POP 00001b8f: PUSH2 0x2001 00001b92: JUMP 00001b93: JUMPDEST 00001b94: PUSH1 0x00 00001b96: DUP5 00001b97: DUP5 00001b98: PUSH1 0x00 00001b9a: DUP2 00001b9b: DUP2 00001b9c: LT 00001b9d: PUSH2 0x1ba2 00001ba0: JUMPI 00001ba1: INVALID 00001ba2: JUMPDEST 00001ba3: PUSH1 0x20 00001ba5: SWAP1 00001ba6: DUP2 00001ba7: MUL 00001ba8: SWAP3 00001ba9: SWAP1 00001baa: SWAP3 00001bab: ADD 00001bac: CALLDATALOAD 00001bad: PUSH1 0x01 00001baf: PUSH1 0x01 00001bb1: PUSH1 0xa0 00001bb3: SHL 00001bb4: SUB 00001bb5: AND 00001bb6: PUSH1 0x00 00001bb8: DUP2 00001bb9: DUP2 00001bba: MSTORE 00001bbb: PUSH1 0x06 00001bbd: SWAP1 00001bbe: SWAP4 00001bbf: MSTORE 00001bc0: PUSH1 0x40 00001bc2: SWAP1 00001bc3: SWAP3 00001bc4: KECCAK256 00001bc5: SLOAD 00001bc6: SWAP2 00001bc7: SWAP3 00001bc8: POP 00001bc9: DUP2 00001bca: SWAP1 00001bcb: POP 00001bcc: PUSH1 0x01 00001bce: JUMPDEST 00001bcf: DUP6 00001bd0: DUP2 00001bd1: LT 00001bd2: ISZERO 00001bd3: PUSH2 0x1c80 00001bd6: JUMPI 00001bd7: PUSH1 0x00 00001bd9: DUP9 00001bda: DUP9 00001bdb: DUP4 00001bdc: DUP2 00001bdd: DUP2 00001bde: LT 00001bdf: PUSH2 0x1be4 00001be2: JUMPI 00001be3: INVALID 00001be4: JUMPDEST 00001be5: PUSH1 0x01 00001be7: PUSH1 0x01 00001be9: PUSH1 0xa0 00001beb: SHL 00001bec: SUB 00001bed: PUSH1 0x20 00001bef: SWAP2 00001bf0: DUP3 00001bf1: MUL 00001bf2: SWAP4 00001bf3: SWAP1 00001bf4: SWAP4 00001bf5: ADD 00001bf6: CALLDATALOAD 00001bf7: DUP4 00001bf8: AND 00001bf9: PUSH1 0x00 00001bfb: DUP2 00001bfc: DUP2 00001bfd: MSTORE 00001bfe: PUSH1 0x06 00001c00: SWAP1 00001c01: SWAP3 00001c02: MSTORE 00001c03: PUSH1 0x40 00001c05: SWAP1 00001c06: SWAP2 00001c07: KECCAK256 00001c08: SLOAD 00001c09: SWAP1 00001c0a: SWAP4 00001c0b: POP 00001c0c: SWAP2 00001c0d: DUP8 00001c0e: AND 00001c0f: DUP4 00001c10: GT 00001c11: SWAP1 00001c12: POP 00001c13: DUP1 00001c14: ISZERO 00001c15: PUSH2 0x1c1e 00001c18: JUMPI 00001c19: POP 00001c1a: PUSH1 0x00 00001c1c: DUP2 00001c1d: GT 00001c1e: JUMPDEST 00001c1f: PUSH2 0x1c59 00001c22: JUMPI 00001c23: PUSH1 0x40 00001c25: MLOAD 00001c26: PUSH3 0x461bcd 00001c2a: PUSH1 0xe5 00001c2c: SHL 00001c2d: DUP2 00001c2e: MSTORE 00001c2f: PUSH1 0x04 00001c31: ADD 00001c32: DUP1 00001c33: DUP1 00001c34: PUSH1 0x20 00001c36: ADD 00001c37: DUP3 00001c38: DUP2 00001c39: SUB 00001c3a: DUP3 00001c3b: MSTORE 00001c3c: PUSH1 0x2c 00001c3e: DUP2 00001c3f: MSTORE 00001c40: PUSH1 0x20 00001c42: ADD 00001c43: DUP1 00001c44: PUSH2 0x2748 00001c47: PUSH1 0x2c 00001c49: SWAP2 00001c4a: CODECOPY 00001c4b: PUSH1 0x40 00001c4d: ADD 00001c4e: SWAP2 00001c4f: POP 00001c50: POP 00001c51: PUSH1 0x40 00001c53: MLOAD 00001c54: DUP1 00001c55: SWAP2 00001c56: SUB 00001c57: SWAP1 00001c58: REVERT 00001c59: JUMPDEST 00001c5a: DUP1 00001c5b: DUP6 00001c5c: GT 00001c5d: ISZERO 00001c5e: PUSH2 0x1c69 00001c61: JUMPI 00001c62: DUP1 00001c63: SWAP5 00001c64: POP 00001c65: PUSH2 0x1c75 00001c68: JUMP 00001c69: JUMPDEST 00001c6a: DUP1 00001c6b: DUP5 00001c6c: LT 00001c6d: ISZERO 00001c6e: PUSH2 0x1c75 00001c71: JUMPI 00001c72: DUP1 00001c73: SWAP4 00001c74: POP 00001c75: JUMPDEST 00001c76: POP 00001c77: SWAP4 00001c78: POP 00001c79: PUSH1 0x01 00001c7b: ADD 00001c7c: PUSH2 0x1bce 00001c7f: JUMP 00001c80: JUMPDEST 00001c81: POP 00001c82: PUSH1 0x60 00001c84: DUP6 00001c85: PUSH8 0xffffffffffffffff 00001c8e: DUP2 00001c8f: GT 00001c90: DUP1 00001c91: ISZERO 00001c92: PUSH2 0x1c9a 00001c95: JUMPI 00001c96: PUSH1 0x00 00001c98: DUP1 00001c99: REVERT 00001c9a: JUMPDEST 00001c9b: POP 00001c9c: PUSH1 0x40 00001c9e: MLOAD 00001c9f: SWAP1 00001ca0: DUP1 00001ca1: DUP3 00001ca2: MSTORE 00001ca3: DUP1 00001ca4: PUSH1 0x20 00001ca6: MUL 00001ca7: PUSH1 0x20 00001ca9: ADD 00001caa: DUP3 00001cab: ADD 00001cac: PUSH1 0x40 00001cae: MSTORE 00001caf: DUP1 00001cb0: ISZERO 00001cb1: PUSH2 0x1cc4 00001cb4: JUMPI 00001cb5: DUP2 00001cb6: PUSH1 0x20 00001cb8: ADD 00001cb9: PUSH1 0x20 00001cbb: DUP3 00001cbc: MUL 00001cbd: DUP1 00001cbe: CALLDATASIZE 00001cbf: DUP4 00001cc0: CALLDATACOPY 00001cc1: ADD 00001cc2: SWAP1 00001cc3: POP 00001cc4: JUMPDEST 00001cc5: POP 00001cc6: SWAP1 00001cc7: POP 00001cc8: DUP2 00001cc9: DUP4 00001cca: EQ 00001ccb: PUSH2 0x1d81 00001cce: JUMPI 00001ccf: PUSH1 0x00 00001cd1: JUMPDEST 00001cd2: DUP7 00001cd3: DUP2 00001cd4: LT 00001cd5: ISZERO 00001cd6: PUSH2 0x1d7f 00001cd9: JUMPI 00001cda: PUSH1 0x00 00001cdc: DUP10 00001cdd: DUP10 00001cde: DUP4 00001cdf: DUP2 00001ce0: DUP2 00001ce1: LT 00001ce2: PUSH2 0x1ce7 00001ce5: JUMPI 00001ce6: INVALID 00001ce7: JUMPDEST 00001ce8: SWAP1 00001ce9: POP 00001cea: PUSH1 0x20 00001cec: MUL 00001ced: ADD 00001cee: CALLDATALOAD 00001cef: PUSH1 0x01 00001cf1: PUSH1 0x01 00001cf3: PUSH1 0xa0 00001cf5: SHL 00001cf6: SUB 00001cf7: AND 00001cf8: SWAP1 00001cf9: POP 00001cfa: PUSH1 0x00 00001cfc: PUSH1 0x06 00001cfe: PUSH1 0x00 00001d00: DUP4 00001d01: PUSH1 0x01 00001d03: PUSH1 0x01 00001d05: PUSH1 0xa0 00001d07: SHL 00001d08: SUB 00001d09: AND 00001d0a: PUSH1 0x01 00001d0c: PUSH1 0x01 00001d0e: PUSH1 0xa0 00001d10: SHL 00001d11: SUB 00001d12: AND 00001d13: DUP2 00001d14: MSTORE 00001d15: PUSH1 0x20 00001d17: ADD 00001d18: SWAP1 00001d19: DUP2 00001d1a: MSTORE 00001d1b: PUSH1 0x20 00001d1d: ADD 00001d1e: PUSH1 0x00 00001d20: KECCAK256 00001d21: SWAP1 00001d22: POP 00001d23: DUP6 00001d24: DUP2 00001d25: PUSH1 0x00 00001d27: ADD 00001d28: SLOAD 00001d29: GT 00001d2a: ISZERO 00001d2b: PUSH2 0x1d75 00001d2e: JUMPI 00001d2f: DUP6 00001d30: DUP2 00001d31: PUSH1 0x00 00001d33: ADD 00001d34: SLOAD 00001d35: SUB 00001d36: DUP5 00001d37: DUP5 00001d38: DUP2 00001d39: MLOAD 00001d3a: DUP2 00001d3b: LT 00001d3c: PUSH2 0x1d41 00001d3f: JUMPI 00001d40: INVALID 00001d41: JUMPDEST 00001d42: PUSH1 0x20 00001d44: SWAP1 00001d45: DUP2 00001d46: MUL 00001d47: SWAP2 00001d48: SWAP1 00001d49: SWAP2 00001d4a: ADD 00001d4b: ADD 00001d4c: MSTORE 00001d4d: DUP6 00001d4e: DUP2 00001d4f: SSTORE 00001d50: DUP4 00001d51: MLOAD 00001d52: DUP5 00001d53: SWAP1 00001d54: DUP5 00001d55: SWAP1 00001d56: DUP2 00001d57: LT 00001d58: PUSH2 0x1d5d 00001d5b: JUMPI 00001d5c: INVALID 00001d5d: JUMPDEST 00001d5e: PUSH1 0x20 00001d60: MUL 00001d61: PUSH1 0x20 00001d63: ADD 00001d64: ADD 00001d65: MLOAD 00001d66: PUSH1 0x05 00001d68: PUSH1 0x00 00001d6a: DUP3 00001d6b: DUP3 00001d6c: SLOAD 00001d6d: SUB 00001d6e: SWAP3 00001d6f: POP 00001d70: POP 00001d71: DUP2 00001d72: SWAP1 00001d73: SSTORE 00001d74: POP 00001d75: JUMPDEST 00001d76: POP 00001d77: POP 00001d78: PUSH1 0x01 00001d7a: ADD 00001d7b: PUSH2 0x1cd1 00001d7e: JUMP 00001d7f: JUMPDEST 00001d80: POP 00001d81: JUMPDEST 00001d82: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000 00001da3: PUSH2 0x1dab 00001da6: DUP5 00001da7: PUSH2 0x16f2 00001daa: JUMP 00001dab: JUMPDEST 00001dac: GT 00001dad: PUSH2 0x1de7 00001db0: JUMPI 00001db1: PUSH1 0x40 00001db3: MLOAD 00001db4: PUSH3 0x461bcd 00001db8: PUSH1 0xe5 00001dba: SHL 00001dbb: DUP2 00001dbc: MSTORE 00001dbd: PUSH1 0x04 00001dbf: ADD 00001dc0: DUP1 00001dc1: DUP1 00001dc2: PUSH1 0x20 00001dc4: ADD 00001dc5: DUP3 00001dc6: DUP2 00001dc7: SUB 00001dc8: DUP3 00001dc9: MSTORE 00001dca: PUSH1 0x29 00001dcc: DUP2 00001dcd: MSTORE 00001dce: PUSH1 0x20 00001dd0: ADD 00001dd1: DUP1 00001dd2: PUSH2 0x28d7 00001dd5: PUSH1 0x29 00001dd7: SWAP2 00001dd8: CODECOPY 00001dd9: PUSH1 0x40 00001ddb: ADD 00001ddc: SWAP2 00001ddd: POP 00001dde: POP 00001ddf: PUSH1 0x40 00001de1: MLOAD 00001de2: DUP1 00001de3: SWAP2 00001de4: SUB 00001de5: SWAP1 00001de6: REVERT 00001de7: JUMPDEST 00001de8: PUSH1 0x08 00001dea: SLOAD 00001deb: PUSH1 0x01 00001ded: SLOAD 00001dee: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 00001e0f: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000 00001e30: DUP2 00001e31: SWAP1 00001e32: SUB 00001e33: SWAP3 00001e34: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 00001e55: DUP8 00001e56: SUB 00001e57: SWAP3 00001e58: SWAP2 00001e59: MUL 00001e5a: SWAP1 00001e5b: SUB 00001e5c: PUSH1 0x00 00001e5e: PUSH2 0x1e9a 00001e61: PUSH2 0x1e6a 00001e64: DUP6 00001e65: DUP13 00001e66: PUSH2 0x2477 00001e69: JUMP 00001e6a: JUMPDEST 00001e6b: DUP4 00001e6c: SUB 00001e6d: PUSH2 0x1e94 00001e70: PUSH2 0x1e84 00001e73: PUSH1 0x05 00001e75: SLOAD 00001e76: DUP9 00001e77: PUSH2 0x2477 00001e7a: SWAP1 00001e7b: SWAP2 00001e7c: SWAP1 00001e7d: PUSH4 0xffffffff 00001e82: AND 00001e83: JUMP 00001e84: JUMPDEST 00001e85: PUSH2 0x1e8e 00001e88: DUP8 00001e89: DUP8 00001e8a: PUSH2 0x2477 00001e8d: JUMP 00001e8e: JUMPDEST 00001e8f: SWAP1 00001e90: PUSH2 0x21a6 00001e93: JUMP 00001e94: JUMPDEST 00001e95: SWAP1 00001e96: PUSH2 0x24c0 00001e99: JUMP 00001e9a: JUMPDEST 00001e9b: SWAP1 00001e9c: POP 00001e9d: PUSH1 0x00 00001e9f: PUSH2 0x1ea8 00001ea2: DUP9 00001ea3: DUP4 00001ea4: PUSH2 0x21a6 00001ea7: JUMP 00001ea8: JUMPDEST 00001ea9: PUSH1 0x05 00001eab: DUP1 00001eac: SLOAD 00001ead: DUP14 00001eae: DUP6 00001eaf: MUL 00001eb0: SWAP1 00001eb1: SUB 00001eb2: SWAP1 00001eb3: SSTORE 00001eb4: SWAP1 00001eb5: POP 00001eb6: PUSH1 0x00 00001eb8: JUMPDEST 00001eb9: DUP12 00001eba: DUP2 00001ebb: LT 00001ebc: ISZERO 00001ebd: PUSH2 0x1f33 00001ec0: JUMPI 00001ec1: PUSH1 0x00 00001ec3: DUP15 00001ec4: DUP15 00001ec5: DUP4 00001ec6: DUP2 00001ec7: DUP2 00001ec8: LT 00001ec9: PUSH2 0x1ece 00001ecc: JUMPI 00001ecd: INVALID 00001ece: JUMPDEST 00001ecf: SWAP1 00001ed0: POP 00001ed1: PUSH1 0x20 00001ed3: MUL 00001ed4: ADD 00001ed5: CALLDATALOAD 00001ed6: PUSH1 0x01 00001ed8: PUSH1 0x01 00001eda: PUSH1 0xa0 00001edc: SHL 00001edd: SUB 00001ede: AND 00001edf: SWAP1 00001ee0: POP 00001ee1: PUSH1 0x00 00001ee3: PUSH1 0x06 00001ee5: PUSH1 0x00 00001ee7: DUP4 00001ee8: PUSH1 0x01 00001eea: PUSH1 0x01 00001eec: PUSH1 0xa0 00001eee: SHL 00001eef: SUB 00001ef0: AND 00001ef1: PUSH1 0x01 00001ef3: PUSH1 0x01 00001ef5: PUSH1 0xa0 00001ef7: SHL 00001ef8: SUB 00001ef9: AND 00001efa: DUP2 00001efb: MSTORE 00001efc: PUSH1 0x20 00001efe: ADD 00001eff: SWAP1 00001f00: DUP2 00001f01: MSTORE 00001f02: PUSH1 0x20 00001f04: ADD 00001f05: PUSH1 0x00 00001f07: KECCAK256 00001f08: SWAP1 00001f09: POP 00001f0a: DUP5 00001f0b: DUP10 00001f0c: DUP5 00001f0d: DUP2 00001f0e: MLOAD 00001f0f: DUP2 00001f10: LT 00001f11: PUSH2 0x1f16 00001f14: JUMPI 00001f15: INVALID 00001f16: JUMPDEST 00001f17: PUSH1 0x20 00001f19: SWAP1 00001f1a: DUP2 00001f1b: MUL 00001f1c: SWAP2 00001f1d: SWAP1 00001f1e: SWAP2 00001f1f: ADD 00001f20: ADD 00001f21: DUP1 00001f22: MLOAD 00001f23: SWAP1 00001f24: SWAP2 00001f25: ADD 00001f26: SWAP1 00001f27: MSTORE 00001f28: DUP4 00001f29: SWAP1 00001f2a: SSTORE 00001f2b: POP 00001f2c: PUSH1 0x01 00001f2e: ADD 00001f2f: PUSH2 0x1eb8 00001f32: JUMP 00001f33: JUMPDEST 00001f34: POP 00001f35: PUSH1 0x00 00001f37: PUSH1 0x09 00001f39: DUP2 00001f3a: SWAP1 00001f3b: SSTORE 00001f3c: JUMPDEST 00001f3d: DUP12 00001f3e: DUP2 00001f3f: LT 00001f40: ISZERO 00001f41: PUSH2 0x1ff4 00001f44: JUMPI 00001f45: PUSH1 0x00 00001f47: DUP15 00001f48: DUP15 00001f49: DUP4 00001f4a: DUP2 00001f4b: DUP2 00001f4c: LT 00001f4d: PUSH2 0x1f52 00001f50: JUMPI 00001f51: INVALID 00001f52: JUMPDEST 00001f53: SWAP1 00001f54: POP 00001f55: PUSH1 0x20 00001f57: MUL 00001f58: ADD 00001f59: CALLDATALOAD 00001f5a: PUSH1 0x01 00001f5c: PUSH1 0x01 00001f5e: PUSH1 0xa0 00001f60: SHL 00001f61: SUB 00001f62: AND 00001f63: SWAP1 00001f64: POP 00001f65: DUP8 00001f66: DUP3 00001f67: DUP2 00001f68: MLOAD 00001f69: DUP2 00001f6a: LT 00001f6b: PUSH2 0x1f70 00001f6e: JUMPI 00001f6f: INVALID 00001f70: JUMPDEST 00001f71: PUSH1 0x20 00001f73: SWAP1 00001f74: DUP2 00001f75: MUL 00001f76: SWAP2 00001f77: SWAP1 00001f78: SWAP2 00001f79: ADD 00001f7a: DUP2 00001f7b: ADD 00001f7c: MLOAD 00001f7d: PUSH1 0x01 00001f7f: PUSH1 0x01 00001f81: PUSH1 0xa0 00001f83: SHL 00001f84: SUB 00001f85: DUP4 00001f86: AND 00001f87: PUSH1 0x00 00001f89: DUP2 00001f8a: DUP2 00001f8b: MSTORE 00001f8c: PUSH1 0x07 00001f8e: SWAP1 00001f8f: SWAP4 00001f90: MSTORE 00001f91: PUSH1 0x40 00001f93: SWAP1 00001f94: SWAP3 00001f95: KECCAK256 00001f96: DUP1 00001f97: SLOAD 00001f98: SWAP1 00001f99: SWAP2 00001f9a: ADD 00001f9b: SWAP1 00001f9c: SSTORE 00001f9d: DUP9 00001f9e: MLOAD 00001f9f: CALLER 00001fa0: SWAP1 00001fa1: PUSH32 0x2887b6da4c721c91735aada87ddc427d4ef240ef9b54e759ef10c0792b409373 00001fc2: SWAP1 00001fc3: DUP12 00001fc4: SWAP1 00001fc5: DUP7 00001fc6: SWAP1 00001fc7: DUP2 00001fc8: LT 00001fc9: PUSH2 0x1fce 00001fcc: JUMPI 00001fcd: INVALID 00001fce: JUMPDEST 00001fcf: PUSH1 0x20 00001fd1: MUL 00001fd2: PUSH1 0x20 00001fd4: ADD 00001fd5: ADD 00001fd6: MLOAD 00001fd7: PUSH1 0x40 00001fd9: MLOAD 00001fda: DUP1 00001fdb: DUP3 00001fdc: DUP2 00001fdd: MSTORE 00001fde: PUSH1 0x20 00001fe0: ADD 00001fe1: SWAP2 00001fe2: POP 00001fe3: POP 00001fe4: PUSH1 0x40 00001fe6: MLOAD 00001fe7: DUP1 00001fe8: SWAP2 00001fe9: SUB 00001fea: SWAP1 00001feb: LOG3 00001fec: POP 00001fed: PUSH1 0x01 00001fef: ADD 00001ff0: PUSH2 0x1f3c 00001ff3: JUMP 00001ff4: JUMPDEST 00001ff5: POP 00001ff6: POP 00001ff7: POP 00001ff8: POP 00001ff9: POP 00001ffa: POP 00001ffb: POP 00001ffc: POP 00001ffd: POP 00001ffe: POP 00001fff: POP 00002000: POP 00002001: JUMPDEST 00002002: POP 00002003: POP 00002004: JUMP 00002005: JUMPDEST 00002006: PUSH1 0x08 00002008: DUP2 00002009: DUP2 0000200a: SLOAD 0000200b: DUP2 0000200c: LT 0000200d: PUSH2 0x2012 00002010: JUMPI 00002011: INVALID 00002012: JUMPDEST 00002013: PUSH1 0x00 00002015: SWAP2 00002016: DUP3 00002017: MSTORE 00002018: PUSH1 0x20 0000201a: SWAP1 0000201b: SWAP2 0000201c: KECCAK256 0000201d: ADD 0000201e: SLOAD 0000201f: PUSH1 0x01 00002021: PUSH1 0x01 00002023: PUSH1 0xa0 00002025: SHL 00002026: SUB 00002027: AND 00002028: SWAP1 00002029: POP 0000202a: DUP2 0000202b: JUMP 0000202c: JUMPDEST 0000202d: PUSH1 0x03 0000202f: SLOAD 00002030: TIMESTAMP 00002031: LT 00002032: PUSH2 0x206c 00002035: JUMPI 00002036: PUSH1 0x40 00002038: MLOAD 00002039: PUSH3 0x461bcd 0000203d: PUSH1 0xe5 0000203f: SHL 00002040: DUP2 00002041: MSTORE 00002042: PUSH1 0x04 00002044: ADD 00002045: DUP1 00002046: DUP1 00002047: PUSH1 0x20 00002049: ADD 0000204a: DUP3 0000204b: DUP2 0000204c: SUB 0000204d: DUP3 0000204e: MSTORE 0000204f: PUSH1 0x2e 00002051: DUP2 00002052: MSTORE 00002053: PUSH1 0x20 00002055: ADD 00002056: DUP1 00002057: PUSH2 0x26f9 0000205a: PUSH1 0x2e 0000205c: SWAP2 0000205d: CODECOPY 0000205e: PUSH1 0x40 00002060: ADD 00002061: SWAP2 00002062: POP 00002063: POP 00002064: PUSH1 0x40 00002066: MLOAD 00002067: DUP1 00002068: SWAP2 00002069: SUB 0000206a: SWAP1 0000206b: REVERT 0000206c: JUMPDEST 0000206d: PUSH2 0x20a1 00002070: PUSH1 0x01 00002072: PUSH1 0x01 00002074: PUSH1 0xa0 00002076: SHL 00002077: SUB 00002078: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc 00002099: AND 0000209a: CALLER 0000209b: ADDRESS 0000209c: DUP5 0000209d: PUSH2 0x255b 000020a0: JUMP 000020a1: JUMPDEST 000020a2: PUSH1 0x01 000020a4: DUP1 000020a5: SLOAD 000020a6: DUP3 000020a7: ADD 000020a8: SWAP1 000020a9: SSTORE 000020aa: PUSH1 0x40 000020ac: DUP1 000020ad: MLOAD 000020ae: DUP3 000020af: DUP2 000020b0: MSTORE 000020b1: SWAP1 000020b2: MLOAD 000020b3: CALLER 000020b4: SWAP2 000020b5: PUSH32 0x2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4 000020d6: SWAP2 000020d7: SWAP1 000020d8: DUP2 000020d9: SWAP1 000020da: SUB 000020db: PUSH1 0x20 000020dd: ADD 000020de: SWAP1 000020df: LOG2 000020e0: POP 000020e1: JUMP 000020e2: JUMPDEST 000020e3: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2 00002104: DUP2 00002105: JUMP 00002106: JUMPDEST 00002107: PUSH2 0x210e 0000210a: PUSH2 0x1446 0000210d: JUMP 0000210e: JUMPDEST 0000210f: PUSH2 0x2117 00002112: JUMPI 00002113: PUSH1 0x00 00002115: DUP1 00002116: REVERT 00002117: JUMPDEST 00002118: PUSH2 0x2120 0000211b: DUP2 0000211c: PUSH2 0x25fe 0000211f: JUMP 00002120: JUMPDEST 00002121: POP 00002122: JUMP 00002123: JUMPDEST 00002124: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc 00002145: DUP2 00002146: JUMP 00002147: JUMPDEST 00002148: PUSH2 0x214f 0000214b: PUSH2 0x1446 0000214e: JUMP 0000214f: JUMPDEST 00002150: PUSH2 0x2158 00002153: JUMPI 00002154: PUSH1 0x00 00002156: DUP1 00002157: REVERT 00002158: JUMPDEST 00002159: PUSH2 0x2160 0000215c: PUSH2 0x13f1 0000215f: JUMP 00002160: JUMPDEST 00002161: ISZERO 00002162: PUSH2 0x219c 00002165: JUMPI 00002166: PUSH1 0x40 00002168: MLOAD 00002169: PUSH3 0x461bcd 0000216d: PUSH1 0xe5 0000216f: SHL 00002170: DUP2 00002171: MSTORE 00002172: PUSH1 0x04 00002174: ADD 00002175: DUP1 00002176: DUP1 00002177: PUSH1 0x20 00002179: ADD 0000217a: DUP3 0000217b: DUP2 0000217c: SUB 0000217d: DUP3 0000217e: MSTORE 0000217f: PUSH1 0x21 00002181: DUP2 00002182: MSTORE 00002183: PUSH1 0x20 00002185: ADD 00002186: DUP1 00002187: PUSH2 0x2934 0000218a: PUSH1 0x21 0000218c: SWAP2 0000218d: CODECOPY 0000218e: PUSH1 0x40 00002190: ADD 00002191: SWAP2 00002192: POP 00002193: POP 00002194: PUSH1 0x40 00002196: MLOAD 00002197: DUP1 00002198: SWAP2 00002199: SUB 0000219a: SWAP1 0000219b: REVERT 0000219c: JUMPDEST 0000219d: PUSH2 0x21a4 000021a0: PUSH2 0x24df 000021a3: JUMP 000021a4: JUMPDEST 000021a5: JUMP 000021a6: JUMPDEST 000021a7: PUSH1 0x00 000021a9: DUP3 000021aa: DUP3 000021ab: GT 000021ac: ISZERO 000021ad: PUSH2 0x21b5 000021b0: JUMPI 000021b1: PUSH1 0x00 000021b3: DUP1 000021b4: REVERT 000021b5: JUMPDEST 000021b6: POP 000021b7: SWAP1 000021b8: SUB 000021b9: SWAP1 000021ba: JUMP 000021bb: JUMPDEST 000021bc: PUSH1 0x08 000021be: SLOAD 000021bf: PUSH1 0x05 000021c1: SLOAD 000021c2: PUSH1 0x00 000021c4: SWAP2 000021c5: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 000021e6: MUL 000021e7: SWAP1 000021e8: PUSH2 0x21f8 000021eb: JUMPI 000021ec: PUSH2 0x10c1 000021ef: DUP5 000021f0: PUSH1 0x01 000021f2: SLOAD 000021f3: DUP4 000021f4: PUSH2 0x243d 000021f7: JUMP 000021f8: JUMPDEST 000021f9: PUSH1 0x00 000021fb: DUP1 000021fc: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000221d: DUP6 0000221e: DUP8 0000221f: ADD 00002220: GT 00002221: PUSH2 0x222c 00002224: JUMPI 00002225: DUP6 00002226: SWAP2 00002227: POP 00002228: PUSH2 0x2286 0000222b: JUMP 0000222c: JUMPDEST 0000222d: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000224e: DUP6 0000224f: LT 00002250: PUSH2 0x225a 00002253: JUMPI 00002254: POP 00002255: DUP5 00002256: PUSH2 0x2286 00002259: JUMP 0000225a: JUMPDEST 0000225b: POP 0000225c: POP 0000225d: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000 0000227e: DUP5 0000227f: DUP5 00002280: ADD 00002281: SUB 00002282: DUP1 00002283: DUP6 00002284: SUB 00002285: SWAP1 00002286: JUMPDEST 00002287: PUSH1 0x08 00002289: SLOAD 0000228a: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000 000022ab: MUL 000022ac: PUSH1 0x00 000022ae: DUP4 000022af: ISZERO 000022b0: PUSH2 0x22c1 000022b3: JUMPI 000022b4: PUSH2 0x22be 000022b7: DUP5 000022b8: DUP4 000022b9: DUP8 000022ba: PUSH2 0x243d 000022bd: JUMP 000022be: JUMPDEST 000022bf: SWAP1 000022c0: POP 000022c1: JUMPDEST 000022c2: DUP3 000022c3: ISZERO 000022c4: PUSH2 0x22e3 000022c7: JUMPI 000022c8: PUSH1 0x00 000022ca: DUP3 000022cb: PUSH1 0x01 000022cd: SLOAD 000022ce: SUB 000022cf: SWAP1 000022d0: POP 000022d1: PUSH2 0x22dd 000022d4: DUP5 000022d5: DUP3 000022d6: PUSH1 0x05 000022d8: SLOAD 000022d9: PUSH2 0x243d 000022dc: JUMP 000022dd: JUMPDEST 000022de: DUP3 000022df: ADD 000022e0: SWAP2 000022e1: POP 000022e2: POP 000022e3: JUMPDEST 000022e4: SWAP8 000022e5: SWAP7 000022e6: POP 000022e7: POP 000022e8: POP 000022e9: POP 000022ea: POP 000022eb: POP 000022ec: POP 000022ed: JUMP 000022ee: JUMPDEST 000022ef: PUSH1 0x00 000022f1: DUP3 000022f2: DUP3 000022f3: ADD 000022f4: DUP4 000022f5: DUP2 000022f6: LT 000022f7: ISZERO 000022f8: PUSH2 0x2300 000022fb: JUMPI 000022fc: PUSH1 0x00 000022fe: DUP1 000022ff: REVERT 00002300: JUMPDEST 00002301: SWAP4 00002302: SWAP3 00002303: POP 00002304: POP 00002305: POP 00002306: JUMP 00002307: JUMPDEST 00002308: DUP1 00002309: SELFBALANCE 0000230a: LT 0000230b: ISZERO 0000230c: PUSH2 0x235c 0000230f: JUMPI 00002310: PUSH1 0x40 00002312: DUP1 00002313: MLOAD 00002314: PUSH3 0x461bcd 00002318: PUSH1 0xe5 0000231a: SHL 0000231b: DUP2 0000231c: MSTORE 0000231d: PUSH1 0x20 0000231f: PUSH1 0x04 00002321: DUP3 00002322: ADD 00002323: MSTORE 00002324: PUSH1 0x1d 00002326: PUSH1 0x24 00002328: DUP3 00002329: ADD 0000232a: MSTORE 0000232b: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e6365000000 0000234c: PUSH1 0x44 0000234e: DUP3 0000234f: ADD 00002350: MSTORE 00002351: SWAP1 00002352: MLOAD 00002353: SWAP1 00002354: DUP2 00002355: SWAP1 00002356: SUB 00002357: PUSH1 0x64 00002359: ADD 0000235a: SWAP1 0000235b: REVERT 0000235c: JUMPDEST 0000235d: PUSH1 0x40 0000235f: MLOAD 00002360: PUSH1 0x00 00002362: SWAP1 00002363: PUSH1 0x01 00002365: PUSH1 0x01 00002367: PUSH1 0xa0 00002369: SHL 0000236a: SUB 0000236b: DUP5 0000236c: AND 0000236d: SWAP1 0000236e: DUP4 0000236f: SWAP1 00002370: DUP4 00002371: DUP2 00002372: DUP2 00002373: DUP2 00002374: DUP6 00002375: DUP8 00002376: GAS 00002377: CALL 00002378: SWAP3 00002379: POP 0000237a: POP 0000237b: POP 0000237c: RETURNDATASIZE 0000237d: DUP1 0000237e: PUSH1 0x00 00002380: DUP2 00002381: EQ 00002382: PUSH2 0x23a7 00002385: JUMPI 00002386: PUSH1 0x40 00002388: MLOAD 00002389: SWAP2 0000238a: POP 0000238b: PUSH1 0x1f 0000238d: NOT 0000238e: PUSH1 0x3f 00002390: RETURNDATASIZE 00002391: ADD 00002392: AND 00002393: DUP3 00002394: ADD 00002395: PUSH1 0x40 00002397: MSTORE 00002398: RETURNDATASIZE 00002399: DUP3 0000239a: MSTORE 0000239b: RETURNDATASIZE 0000239c: PUSH1 0x00 0000239e: PUSH1 0x20 000023a0: DUP5 000023a1: ADD 000023a2: RETURNDATACOPY 000023a3: PUSH2 0x23ac 000023a6: JUMP 000023a7: JUMPDEST 000023a8: PUSH1 0x60 000023aa: SWAP2 000023ab: POP 000023ac: JUMPDEST 000023ad: POP 000023ae: POP 000023af: SWAP1 000023b0: POP 000023b1: DUP1 000023b2: PUSH2 0x23ec 000023b5: JUMPI 000023b6: PUSH1 0x40 000023b8: MLOAD 000023b9: PUSH3 0x461bcd 000023bd: PUSH1 0xe5 000023bf: SHL 000023c0: DUP2 000023c1: MSTORE 000023c2: PUSH1 0x04 000023c4: ADD 000023c5: DUP1 000023c6: DUP1 000023c7: PUSH1 0x20 000023c9: ADD 000023ca: DUP3 000023cb: DUP2 000023cc: SUB 000023cd: DUP3 000023ce: MSTORE 000023cf: PUSH1 0x3a 000023d1: DUP2 000023d2: MSTORE 000023d3: PUSH1 0x20 000023d5: ADD 000023d6: DUP1 000023d7: PUSH2 0x27e5 000023da: PUSH1 0x3a 000023dc: SWAP2 000023dd: CODECOPY 000023de: PUSH1 0x40 000023e0: ADD 000023e1: SWAP2 000023e2: POP 000023e3: POP 000023e4: PUSH1 0x40 000023e6: MLOAD 000023e7: DUP1 000023e8: SWAP2 000023e9: SUB 000023ea: SWAP1 000023eb: REVERT 000023ec: JUMPDEST 000023ed: POP 000023ee: POP 000023ef: POP 000023f0: JUMP 000023f1: JUMPDEST 000023f2: PUSH1 0x00 000023f4: PUSH2 0x2435 000023f7: PUSH2 0x2401 000023fa: DUP4 000023fb: PUSH1 0x64 000023fd: PUSH2 0x2477 00002400: JUMP 00002401: JUMPDEST 00002402: PUSH2 0x17a1 00002405: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000320 00002426: PUSH2 0x242f 00002429: DUP9 0000242a: DUP9 0000242b: PUSH2 0x2477 0000242e: JUMP 0000242f: JUMPDEST 00002430: SWAP1 00002431: PUSH2 0x2477 00002434: JUMP 00002435: JUMPDEST 00002436: SWAP5 00002437: SWAP4 00002438: POP 00002439: POP 0000243a: POP 0000243b: POP 0000243c: JUMP 0000243d: JUMPDEST 0000243e: PUSH1 0x00 00002440: PUSH2 0x2435 00002443: PUSH2 0x246c 00002446: DUP4 00002447: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000320 00002468: PUSH2 0x2477 0000246b: JUMP 0000246c: JUMPDEST 0000246d: PUSH2 0x1e94 00002470: PUSH1 0x64 00002472: PUSH2 0x242f 00002475: DUP9 00002476: DUP9 00002477: JUMPDEST 00002478: PUSH1 0x00 0000247a: DUP3 0000247b: PUSH2 0x2486 0000247e: JUMPI 0000247f: POP 00002480: PUSH1 0x00 00002482: PUSH2 0x081d 00002485: JUMP 00002486: JUMPDEST 00002487: DUP3 00002488: DUP3 00002489: MUL 0000248a: DUP3 0000248b: DUP5 0000248c: DUP3 0000248d: DUP2 0000248e: PUSH2 0x2493 00002491: JUMPI 00002492: INVALID 00002493: JUMPDEST 00002494: DIV 00002495: EQ 00002496: PUSH2 0x2300 00002499: JUMPI 0000249a: PUSH1 0x00 0000249c: DUP1 0000249d: REVERT 0000249e: JUMPDEST 0000249f: PUSH1 0x00 000024a1: DUP1 000024a2: DUP3 000024a3: GT 000024a4: PUSH2 0x24ac 000024a7: JUMPI 000024a8: PUSH1 0x00 000024aa: DUP1 000024ab: REVERT 000024ac: JUMPDEST 000024ad: PUSH1 0x00 000024af: DUP3 000024b0: DUP5 000024b1: DUP2 000024b2: PUSH2 0x24b7 000024b5: JUMPI 000024b6: INVALID 000024b7: JUMPDEST 000024b8: DIV 000024b9: SWAP5 000024ba: SWAP4 000024bb: POP 000024bc: POP 000024bd: POP 000024be: POP 000024bf: JUMP 000024c0: JUMPDEST 000024c1: PUSH1 0x00 000024c3: DUP2 000024c4: PUSH1 0x01 000024c6: PUSH2 0x24cf 000024c9: DUP6 000024ca: DUP4 000024cb: PUSH2 0x22ee 000024ce: JUMP 000024cf: JUMPDEST 000024d0: SUB 000024d1: DUP2 000024d2: PUSH2 0x24d7 000024d5: JUMPI 000024d6: INVALID 000024d7: JUMPDEST 000024d8: DIV 000024d9: SWAP4 000024da: SWAP3 000024db: POP 000024dc: POP 000024dd: POP 000024de: JUMP 000024df: JUMPDEST 000024e0: PUSH1 0x00 000024e2: PUSH1 0x02 000024e4: DUP2 000024e5: SWAP1 000024e6: SSTORE 000024e7: PUSH1 0x03 000024e9: SSTORE 000024ea: PUSH1 0x00 000024ec: NOT 000024ed: PUSH1 0x04 000024ef: SSTORE 000024f0: PUSH2 0x252e 000024f3: PUSH2 0x24fa 000024f6: PUSH2 0x1437 000024f9: JUMP 000024fa: JUMPDEST 000024fb: PUSH1 0x01 000024fd: SLOAD 000024fe: PUSH1 0x01 00002500: PUSH1 0x01 00002502: PUSH1 0xa0 00002504: SHL 00002505: SUB 00002506: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc 00002527: AND 00002528: SWAP2 00002529: SWAP1 0000252a: PUSH2 0x266c 0000252d: JUMP 0000252e: JUMPDEST 0000252f: PUSH1 0x40 00002531: MLOAD 00002532: CALLER 00002533: SWAP1 00002534: PUSH32 0x28b4c24cb1012c094cd2f59f98e89d791973295f8fda6eaa118022d6d318960a 00002555: SWAP1 00002556: PUSH1 0x00 00002558: SWAP1 00002559: LOG2 0000255a: JUMP 0000255b: JUMPDEST 0000255c: DUP4 0000255d: PUSH1 0x01 0000255f: PUSH1 0x01 00002561: PUSH1 0xa0 00002563: SHL 00002564: SUB 00002565: AND 00002566: PUSH4 0x23b872dd 0000256b: DUP5 0000256c: DUP5 0000256d: DUP5 0000256e: PUSH1 0x40 00002570: MLOAD 00002571: DUP5 00002572: PUSH4 0xffffffff 00002577: AND 00002578: PUSH1 0xe0 0000257a: SHL 0000257b: DUP2 0000257c: MSTORE 0000257d: PUSH1 0x04 0000257f: ADD 00002580: DUP1 00002581: DUP5 00002582: PUSH1 0x01 00002584: PUSH1 0x01 00002586: PUSH1 0xa0 00002588: SHL 00002589: SUB 0000258a: AND 0000258b: DUP2 0000258c: MSTORE 0000258d: PUSH1 0x20 0000258f: ADD 00002590: DUP4 00002591: PUSH1 0x01 00002593: PUSH1 0x01 00002595: PUSH1 0xa0 00002597: SHL 00002598: SUB 00002599: AND 0000259a: DUP2 0000259b: MSTORE 0000259c: PUSH1 0x20 0000259e: ADD 0000259f: DUP3 000025a0: DUP2 000025a1: MSTORE 000025a2: PUSH1 0x20 000025a4: ADD 000025a5: SWAP4 000025a6: POP 000025a7: POP 000025a8: POP 000025a9: POP 000025aa: PUSH1 0x20 000025ac: PUSH1 0x40 000025ae: MLOAD 000025af: DUP1 000025b0: DUP4 000025b1: SUB 000025b2: DUP2 000025b3: PUSH1 0x00 000025b5: DUP8 000025b6: DUP1 000025b7: EXTCODESIZE 000025b8: ISZERO 000025b9: DUP1 000025ba: ISZERO 000025bb: PUSH2 0x25c3 000025be: JUMPI 000025bf: PUSH1 0x00 000025c1: DUP1 000025c2: REVERT 000025c3: JUMPDEST 000025c4: POP 000025c5: GAS 000025c6: CALL 000025c7: ISZERO 000025c8: DUP1 000025c9: ISZERO 000025ca: PUSH2 0x25d7 000025cd: JUMPI 000025ce: RETURNDATASIZE 000025cf: PUSH1 0x00 000025d1: DUP1 000025d2: RETURNDATACOPY 000025d3: RETURNDATASIZE 000025d4: PUSH1 0x00 000025d6: REVERT 000025d7: JUMPDEST 000025d8: POP 000025d9: POP 000025da: POP 000025db: POP 000025dc: PUSH1 0x40 000025de: MLOAD 000025df: RETURNDATASIZE 000025e0: PUSH1 0x20 000025e2: DUP2 000025e3: LT 000025e4: ISZERO 000025e5: PUSH2 0x25ed 000025e8: JUMPI 000025e9: PUSH1 0x00 000025eb: DUP1 000025ec: REVERT 000025ed: JUMPDEST 000025ee: POP 000025ef: MLOAD 000025f0: PUSH2 0x25f8 000025f3: JUMPI 000025f4: PUSH1 0x00 000025f6: DUP1 000025f7: REVERT 000025f8: JUMPDEST 000025f9: POP 000025fa: POP 000025fb: POP 000025fc: POP 000025fd: JUMP 000025fe: JUMPDEST 000025ff: PUSH1 0x01 00002601: PUSH1 0x01 00002603: PUSH1 0xa0 00002605: SHL 00002606: SUB 00002607: DUP2 00002608: AND 00002609: PUSH2 0x2611 0000260c: JUMPI 0000260d: PUSH1 0x00 0000260f: DUP1 00002610: REVERT 00002611: JUMPDEST 00002612: PUSH1 0x00 00002614: DUP1 00002615: SLOAD 00002616: PUSH1 0x40 00002618: MLOAD 00002619: PUSH1 0x01 0000261b: PUSH1 0x01 0000261d: PUSH1 0xa0 0000261f: SHL 00002620: SUB 00002621: DUP1 00002622: DUP6 00002623: AND 00002624: SWAP4 00002625: SWAP3 00002626: AND 00002627: SWAP2 00002628: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00002649: SWAP2 0000264a: LOG3 0000264b: PUSH1 0x00 0000264d: DUP1 0000264e: SLOAD 0000264f: PUSH1 0x01 00002651: PUSH1 0x01 00002653: PUSH1 0xa0 00002655: SHL 00002656: SUB 00002657: NOT 00002658: AND 00002659: PUSH1 0x01 0000265b: PUSH1 0x01 0000265d: PUSH1 0xa0 0000265f: SHL 00002660: SUB 00002661: SWAP3 00002662: SWAP1 00002663: SWAP3 00002664: AND 00002665: SWAP2 00002666: SWAP1 00002667: SWAP2 00002668: OR 00002669: SWAP1 0000266a: SSTORE 0000266b: JUMP 0000266c: JUMPDEST 0000266d: DUP3 0000266e: PUSH1 0x01 00002670: PUSH1 0x01 00002672: PUSH1 0xa0 00002674: SHL 00002675: SUB 00002676: AND 00002677: PUSH4 0xa9059cbb 0000267c: DUP4 0000267d: DUP4 0000267e: PUSH1 0x40 00002680: MLOAD 00002681: DUP4 00002682: PUSH4 0xffffffff 00002687: AND 00002688: PUSH1 0xe0 0000268a: SHL 0000268b: DUP2 0000268c: MSTORE 0000268d: PUSH1 0x04 0000268f: ADD 00002690: DUP1 00002691: DUP4 00002692: PUSH1 0x01 00002694: PUSH1 0x01 00002696: PUSH1 0xa0 00002698: SHL 00002699: SUB 0000269a: AND 0000269b: DUP2 0000269c: MSTORE 0000269d: PUSH1 0x20 0000269f: ADD 000026a0: DUP3 000026a1: DUP2 000026a2: MSTORE 000026a3: PUSH1 0x20 000026a5: ADD 000026a6: SWAP3 000026a7: POP 000026a8: POP 000026a9: POP 000026aa: PUSH1 0x20 000026ac: PUSH1 0x40 000026ae: MLOAD 000026af: DUP1 000026b0: DUP4 000026b1: SUB 000026b2: DUP2 000026b3: PUSH1 0x00 000026b5: DUP8 000026b6: DUP1 000026b7: EXTCODESIZE 000026b8: ISZERO 000026b9: DUP1 000026ba: ISZERO 000026bb: PUSH2 0x26c3 000026be: JUMPI 000026bf: PUSH1 0x00 000026c1: DUP1 000026c2: REVERT 000026c3: JUMPDEST 000026c4: POP 000026c5: GAS 000026c6: CALL 000026c7: ISZERO 000026c8: DUP1 000026c9: ISZERO 000026ca: PUSH2 0x26d7 000026cd: JUMPI 000026ce: RETURNDATASIZE 000026cf: PUSH1 0x00 000026d1: DUP1 000026d2: RETURNDATACOPY 000026d3: RETURNDATASIZE 000026d4: PUSH1 0x00 000026d6: REVERT 000026d7: JUMPDEST 000026d8: POP 000026d9: POP 000026da: POP 000026db: POP 000026dc: PUSH1 0x40 000026de: MLOAD 000026df: RETURNDATASIZE 000026e0: PUSH1 0x20 000026e2: DUP2 000026e3: LT 000026e4: ISZERO 000026e5: PUSH2 0x26ed 000026e8: JUMPI 000026e9: PUSH1 0x00 000026eb: DUP1 000026ec: REVERT 000026ed: JUMPDEST 000026ee: POP 000026ef: MLOAD 000026f0: PUSH2 0x23ec 000026f3: JUMPI 000026f4: PUSH1 0x00 000026f6: DUP1 000026f7: REVERT 000026f8: INVALID 000026f9: NUMBER 000026fa: PUSH2 0x6e27 000026fd: PUSH21 0x206465706f736974206d6f726520746f6b656e7320 00002713: PUSH2 0x6674 00002716: PUSH6 0x7220656e6420 0000271d: PUSH16 0x662062696464696e6742696464657273 0000272e: KECCAK256 0000272f: PUSH9 0x61766520616c726561 00002739: PUSH5 0x7920626565 0000273f: PUSH15 0x20636865636b656441646472657373 0000274f: PUSH6 0x73206d757374 00002756: KECCAK256 00002757: PUSH3 0x652061 0000275b: PUSH15 0x206172726179206f6620756e697175 0000276b: PUSH6 0x206269646465 00002772: PUSH19 0x734d757374206265206174206c65617374206f 00002786: PUSH15 0x652062696464657220666f72206120 00002796: PUSH19 0x6566756e64546f6b656e73206d757374206265 000027aa: KECCAK256 000027ab: PUSH4 0x6c61696d 000027b0: PUSH6 0x64206265666f 000027b7: PUSH19 0x6520726566756e644269642069732067726561 000027cb: PUSH21 0x6572207468616e206d617820616c6c6f7761626c65 000027e1: KECCAK256 000027e2: PUSH3 0x696441 000027e6: PUSH5 0x6472657373 000027ec: GASPRICE 000027ed: KECCAK256 000027ee: PUSH22 0x6e61626c6520746f2073656e642076616c75652c2072 00002805: PUSH6 0x63697069656e 0000280c: PUSH21 0x206d61792068617665207265766572746564436c61 00002822: PUSH10 0x6d696e6720686173206e 0000282d: PUSH16 0x74206265656e20656e61626c65642079 0000283e: PUSH6 0x744e6f746869 00002845: PUSH15 0x6720746f20726566756e643a207468 00002855: PUSH6 0x726520697320 0000285c: PUSH15 0x6f2045544820746f20726566756e64 0000286c: KECCAK256 0000286d: PUSH16 0x72206e6f20636f6d706c657465642077 0000287e: PUSH16 0x726b43616e63656c6c6174696f6e2061 0000288f: PUSH13 0x6c6f776564206f6e6c79206475 0000289d: PUSH19 0x696e672063616e63656c6c6174696f6e207769 000028b1: PUSH15 0x646f774e6f7420656e6f7567682074 000028c1: PUSH16 0x6b656e7320666f72206d6f7265206269 000028d2: PUSH5 0x6465727341 000028d8: PUSH21 0x206c65617374206f6e65206f662062696464657273 000028ee: KECCAK256 000028ef: PUSH9 0x617320616c6c6f7761 000028f9: PUSH3 0x6c6520 000028fd: PUSH3 0x69644f 00002901: PUSH17 0x65726174696f6e20697320616c6c6f7765 00002913: PUSH5 0x207768656e 00002919: KECCAK256 0000291a: PUSH4 0x616e6365 0000291f: PUSH13 0x6c6174696f6e20706861736520 0000292d: PUSH10 0x73206f766572436c6169 00002938: PUSH14 0x696e672068617320616c72656164 00002947: PUSH26 0x206265656e20656e61626c6564a26469706673582212209391d2 00002962: UNKNOWN(0xED) 00002963: UNKNOWN(0xB4) 00002964: UNKNOWN(0x2D) 00002965: RETURNDATASIZE 00002966: UNKNOWN(0xB3) 00002967: UNKNOWN(0xDB) 00002968: PUSH18 0x331f2d28e571cf258e989bdbfbfe3593d481 0000297b: PUSH20
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | codex | Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain | 90 | no | — |
viewevidence_json{
"evidence": "`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy\u2019s context during upgrades.",
"locations": [
"contracts/Upgradeable.sol:62",
"contracts/Upgradeable.sol:83",
"contracts/Upgradeable.sol:101",
"contracts/StakingEscrow.sol:1628",
"contracts/StakingEscrow.sol:1631"
],
"recommendation": "Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.",
"exploit_scenario": "1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker\u2019s contract, executing the token transfer in the proxy\u2019s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer)."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c
call_targets:
0xe9778e69a961e64d3cdbb34cf6778281d34667c2
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe9778e69a961e64d3cdbb34cf6778281d34667c2"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xe1fe7d23",
"selector": "0xe1fe7d23",
"calldata_variants": [
"0xe1fe7d23",
"0xe1fe7d230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe2fdcc17",
"selector": "0xe2fdcc17",
"calldata_variants": [
"0xe2fdcc17",
"0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0e74d1",
"selector": "0xfc0e74d1",
"calldata_variants": [
"0xfc0e74d1",
"0xfc0e74d10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb15cf964",
"selector": "0xb15cf964",
"calldata_variants": [
"0xb15cf964",
"0xb15cf9640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc859f44",
"selector": "0xbc859f44",
"calldata_variants": [
"0xbc859f44",
"0xbc859f440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe7ff580",
"selector": "0xbe7ff580",
"calldata_variants": [
"0xbe7ff580",
"0xbe7ff5800000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3240,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3436,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3571,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [],
"untrusted_call_count": 7
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c
call_targets:
0xe9778e69a961e64d3cdbb34cf6778281d34667c2
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe9778e69a961e64d3cdbb34cf6778281d34667c2"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xe1fe7d23",
"selector": "0xe1fe7d23",
"calldata_variants": [
"0xe1fe7d23",
"0xe1fe7d230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe2fdcc17",
"selector": "0xe2fdcc17",
"calldata_variants": [
"0xe2fdcc17",
"0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0e74d1",
"selector": "0xfc0e74d1",
"calldata_variants": [
"0xfc0e74d1",
"0xfc0e74d10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb15cf964",
"selector": "0xb15cf964",
"calldata_variants": [
"0xb15cf964",
"0xb15cf9640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc859f44",
"selector": "0xbc859f44",
"calldata_variants": [
"0xbc859f44",
"0xbc859f440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe7ff580",
"selector": "0xbe7ff580",
"calldata_variants": [
"0xbe7ff580",
"0xbe7ff5800000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3240,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3436,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3571,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": []
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 8
}
|