019bb2d5-fdc8-7030-9e45-b14b77f6baec
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 |
|---|---|---|---|---|
| 39692 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39693 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39694 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39695 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39696 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39697 | detector.run | complete | 1 / 3 | 3 months ago |
| 39698 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39756 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39757 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-7nja2kqw) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-7nja2kqw) GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713) performs a multiplication on the result of a division: - rewardRate = reward.div(DURATION) (contracts/Contract.sol#706) - check = DURATION.mul(rewardRate).mul(1e18) (contracts/Contract.sol#712) GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713) performs a multiplication on the result of a division: - leftover = remaining.mul(rewardRate) (contracts/Contract.sol#699) - rewardRate = reward.div(DURATION) (contracts/Contract.sol#706) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676): External calls: - withdraw(balanceOf(msg.sender)) (contracts/Contract.sol#674) - weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598) - (success,returndata) = address(token).call(data) (contracts/Contract.sol#538) - getReward() (contracts/Contract.sol#675) - (success,returndata) = address(token).call(data) (contracts/Contract.sol#538) - scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682) - grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684) State variables written after the call(s): - getReward() (contracts/Contract.sol#675) - lastUpdateTime = lastTimeRewardApplicable() (contracts/Contract.sol#626) GRAPETHPool.lastUpdateTime (contracts/Contract.sol#609) can be used in cross function reentrancies: - GRAPETHPool.lastUpdateTime (contracts/Contract.sol#609) - GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713) - GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650) - GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632) - getReward() (contracts/Contract.sol#675) - rewardPerTokenStored = rewardPerToken() (contracts/Contract.sol#625) GRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610) can be used in cross function reentrancies: - GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650) - GRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610) - GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632) - getReward() (contracts/Contract.sol#675) - rewards[msg.sender] = 0 (contracts/Contract.sol#681) - rewards[account] = earned(account) (contracts/Contract.sol#628) GRAPETHPool.rewards (contracts/Contract.sol#612) can be used in cross function reentrancies: - GRAPETHPool.earned(address) (contracts/Contract.sol#652-658) - GRAPETHPool.getReward() (contracts/Contract.sol#678-687) - GRAPETHPool.rewards (contracts/Contract.sol#612) - GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632) - getReward() (contracts/Contract.sol#675) - userRewardPerTokenPaid[account] = rewardPerTokenStored (contracts/Contract.sol#629) GRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611) can be used in cross function reentrancies: - GRAPETHPool.earned(address) (contracts/Contract.sol#652-658) - GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632) - GRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1 IRewardDistributionRecipient.setRewardDistribution(address) (contracts/Contract.sol#559-564) should emit an event for: - rewardDistribution = _rewardDistribution (contracts/Contract.sol#563) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control IRewardDistributionRecipient.setRewardDistribution(address)._rewardDistribution (contracts/Contract.sol#559) lacks a zero-check on : - rewardDistribution = _rewardDistribution (contracts/Contract.sol#563) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676): External calls: - withdraw(balanceOf(msg.sender)) (contracts/Contract.sol#674) - weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598) - (success,returndata) = address(token).call(data) (contracts/Contract.sol#538) - getReward() (contracts/Contract.sol#675) - (success,returndata) = address(token).call(data) (contracts/Contract.sol#538) - scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682) - grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684) Event emitted after the call(s): - RewardPaid(msg.sender,trueReward) (contracts/Contract.sol#685) - getReward() (contracts/Contract.sol#675) Reentrancy in GRAPETHPool.getReward() (contracts/Contract.sol#678-687): External calls: - scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682) - grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684) Event emitted after the call(s): - RewardPaid(msg.sender,trueReward) (contracts/Contract.sol#685) Reentrancy in GRAPETHPool.stake(uint256) (contracts/Contract.sol#661-665): External calls: - super.stake(amount) (contracts/Contract.sol#663) - weth.safeTransferFrom(msg.sender,address(this),amount) (contracts/Contract.sol#592) - (success,returndata) = address(token).call(data) (contracts/Contract.sol#538) Event emitted after the call(s): - Staked(msg.sender,amount) (contracts/Contract.sol#664) Reentrancy in GRAPETHPool.withdraw(uint256) (contracts/Contract.sol#667-671): External calls: - super.withdraw(amount) (contracts/Contract.sol#669) - weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598) - (success,returndata) = address(token).call(data) (contracts/Contract.sol#538) Event emitted after the call(s): - Withdrawn(msg.sender,amount) (contracts/Contract.sol#670) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3 GRAPETHPool.getReward() (contracts/Contract.sol#678-687) uses timestamp for comparisons Dangerous comparisons: - reward > 0 (contracts/Contract.sol#680) GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713) uses timestamp for comparisons Dangerous comparisons: - block.timestamp > starttime (contracts/Contract.sol#694) - block.timestamp >= periodFinish (contracts/Contract.sol#695) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp Address.isContract(address) (contracts/Contract.sol#425-438) uses assembly - INLINE ASM (contracts/Contract.sol#436-437) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage 2 different versions of Solidity are used: - Version constraint ^0.5.0 is used by: -^0.5.0 (contracts/Contract.sol#1) -^0.5.0 (contracts/Contract.sol#2) -^0.5.0 (contracts/Contract.sol#3) -^0.5.0 (contracts/Contract.sol#4) -^0.5.0 (contracts/Contract.sol#5) -^0.5.0 (contracts/Contract.sol#7) -^0.5.0 (contracts/Contract.sol#8) -^0.5.0 (contracts/Contract.sol#9) - Version constraint ^0.5.5 is used by: -^0.5.5 (contracts/Contract.sol#6) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used Context._msgData() (contracts/Contract.sol#252-255) is never used and should be removed Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code Version constraint ^0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - DirtyBytesArrayToStorage - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching - EmptyByteArrayCopy - DynamicArrayCleanup - ImplicitConstructorCallvalueCheck - TupleAssignmentMultiStackSlotComponents - MemoryArrayCreationOverflow - privateCanBeOverridden - SignedArrayStorageCopy - ABIEncoderV2StorageArrayWithMultiSlotElement - DynamicConstructorArgumentsClippedABIV2 - UninitializedFunctionPointerInConstructor - IncorrectEventSignatureInLibraries - ABIEncoderV2PackedStorage. It is used by: - ^0.5.0 (contracts/Contract.sol#1) - ^0.5.0 (contracts/Contract.sol#2) - ^0.5.0 (contracts/Contract.sol#3) - ^0.5.0 (contracts/Contract.sol#4) - ^0.5.0 (contracts/Contract.sol#5) - ^0.5.0 (contracts/Contract.sol#7) - ^0.5.0 (contracts/Contract.sol#8) - ^0.5.0 (contracts/Contract.sol#9) Version constraint ^0.5.5 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - DirtyBytesArrayToStorage - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching - EmptyByteArrayCopy - DynamicArrayCleanup - ImplicitConstructorCallvalueCheck - TupleAssignmentMultiStackSlotComponents - MemoryArrayCreationOverflow - privateCanBeOverridden - SignedArrayStorageCopy - ABIEncoderV2StorageArrayWithMultiSlotElement - DynamicConstructorArgumentsClippedABIV2 - UninitializedFunctionPointerInConstructor - IncorrectEventSignatureInLibraries - ABIEncoderV2PackedStorage - IncorrectByteInstructionOptimization - DoubleShiftSizeOverflow. It is used by: - ^0.5.5 (contracts/Contract.sol#6) solc-0.5.5 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity Low level call in Address.sendValue(address,uint256) (contracts/Contract.sol#468-474): - (success,None) = recipient.call.value(amount)() (contracts/Contract.sol#472) Low level call in SafeERC20.callOptionalReturn(IERC20,bytes) (contracts/Contract.sol#526-545): - (success,returndata) = address(token).call(data) (contracts/Contract.sol#538) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls Parameter IRewardDistributionRecipient.setRewardDistribution(address)._rewardDistribution (contracts/Contract.sol#559) is not in mixedCase Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions Redundant expression "this (contracts/Contract.sol#253)" inContext (contracts/Contract.sol#242-256) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements GRAPETHPool.grap (contracts/Contract.sol#603) should be constant GRAPETHPool.starttime (contracts/Contract.sol#606) should be constant LPTokenWrapper.weth (contracts/Contract.sol#576) should be constant Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant . analyzed (11 contracts with 100 detectors), 24 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.5.5",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.5.5",
"install_stderr": null,
"install_stdout": "Installing solc '0.5.5'...\nVersion '0.5.5' installed."
},
"solc_args": "--base-path /tmp/slither-7nja2kqw --allow-paths /tmp/slither-7nja2kqw,/tmp/slither-7nja2kqw/lib,/tmp/slither-7nja2kqw/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 24,
"workspace_hash": "a3c4c366517389f718bf3651997f91c2ae154c353437a19cfbfa04633f659a9f",
"duration_seconds": 0.8481094837188721,
"solc_version_requested": "0.5.17"
}
{"no_findings":true,"summary":"No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.","findings":[]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-03e7fa8r
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb30c-e6e3-7773-813e-3cd1d154c217
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE.txt file**
exec
/bin/bash -lc ls in /tmp/codex-03e7fa8r succeeded in 10ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-03e7fa8r succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.5;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
/*
____ __ __ __ _
/ __/__ __ ___ / /_ / / ___ / /_ (_)__ __
thinking
**Analyzing reward pool reentrancy and accounting risks**
I’m carefully auditing the first-party reward distribution contracts, focusing on reentrancy and access control. I see safe external calls to fixed tokens like WETH reduce reentrancy risk, but the external call to the grap token’s scaling factor is a potential oracle manipulation vector and might be exploited if the token admin changes it arbitrarily. The missing check that rewardRate matches actual token balance in notifyRewardAmount could cause misconfigured reward distribution rates, leading to DoS scenarios though not direct exploits. Overall, the main concerns are external calls before transfers without reentrancy guards and relying on uncertified external scaling factors for reward calculation.
thinking
**Confirming absence of exploitable vulnerabilities**
I’m wrapping up the audit with no exploitable issues found in the main contracts; the reward and access controls follow expected patterns. I note residual trust assumptions remain on the rewardDistribution’s proper funding and the behavior of the GRAP and WETH tokens, but no clear vulnerabilities surfaced in the first-party code. I’ll summarize this with a concise JSON output reflecting no findings and a brief summary of residual risks.
codex
{"no_findings":true,"summary":"No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.","findings":[]}
tokens used
20,103
{
"codex": {
"ran_at": "2026-01-12T16:33:40.747042+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.",
"raw_final": {
"summary": "No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x01ad 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x80faa57d 00000026: GT 00000027: PUSH2 0x00ee 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xc8f33c91 00000031: GT 00000032: PUSH2 0x0097 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xe9fad8ee 0000003c: GT 0000003d: PUSH2 0x0071 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xe9fad8ee 00000047: EQ 00000048: PUSH2 0x03c9 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xebe2b12b 00000052: EQ 00000053: PUSH2 0x03d1 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xf2fde38b 0000005d: EQ 0000005e: PUSH2 0x03d9 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xfc965d52 00000068: EQ 00000069: PUSH2 0x040c 0000006c: JUMPI 0000006d: PUSH2 0x01ad 00000070: JUMP 00000071: JUMPDEST 00000072: DUP1 00000073: PUSH4 0xc8f33c91 00000078: EQ 00000079: PUSH2 0x03b1 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0xcd3daf9d 00000083: EQ 00000084: PUSH2 0x03b9 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0xdf136d65 0000008e: EQ 0000008f: PUSH2 0x03c1 00000092: JUMPI 00000093: PUSH2 0x01ad 00000096: JUMP 00000097: JUMPDEST 00000098: DUP1 00000099: PUSH4 0x8da5cb5b 0000009e: GT 0000009f: PUSH2 0x00c8 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0x8da5cb5b 000000a9: EQ 000000aa: PUSH2 0x0370 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0x8f32d59b 000000b4: EQ 000000b5: PUSH2 0x0378 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0xa694fc3a 000000bf: EQ 000000c0: PUSH2 0x0394 000000c3: JUMPI 000000c4: PUSH2 0x01ad 000000c7: JUMP 000000c8: JUMPDEST 000000c9: DUP1 000000ca: PUSH4 0x80faa57d 000000cf: EQ 000000d0: PUSH2 0x032d 000000d3: JUMPI 000000d4: DUP1 000000d5: PUSH4 0x8b876347 000000da: EQ 000000db: PUSH2 0x0335 000000de: JUMPI 000000df: DUP1 000000e0: PUSH4 0x8da58897 000000e5: EQ 000000e6: PUSH2 0x0368 000000e9: JUMPI 000000ea: PUSH2 0x01ad 000000ed: JUMP 000000ee: JUMPDEST 000000ef: DUP1 000000f0: PUSH4 0x2e1a7d4d 000000f5: GT 000000f6: PUSH2 0x015b 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x3fc8cef3 00000100: GT 00000101: PUSH2 0x0135 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x3fc8cef3 0000010b: EQ 0000010c: PUSH2 0x02e2 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x70a08231 00000116: EQ 00000117: PUSH2 0x02ea 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0x715018a6 00000121: EQ 00000122: PUSH2 0x031d 00000125: JUMPI 00000126: DUP1 00000127: PUSH4 0x7b0a47ee 0000012c: EQ 0000012d: PUSH2 0x0325 00000130: JUMPI 00000131: PUSH2 0x01ad 00000134: JUMP 00000135: JUMPDEST 00000136: DUP1 00000137: PUSH4 0x2e1a7d4d 0000013c: EQ 0000013d: PUSH2 0x02a0 00000140: JUMPI 00000141: DUP1 00000142: PUSH4 0x3c6b16ab 00000147: EQ 00000148: PUSH2 0x02bd 0000014b: JUMPI 0000014c: DUP1 0000014d: PUSH4 0x3d18b912 00000152: EQ 00000153: PUSH2 0x02da 00000156: JUMPI 00000157: PUSH2 0x01ad 0000015a: JUMP 0000015b: JUMPDEST 0000015c: DUP1 0000015d: PUSH4 0x101114cf 00000162: GT 00000163: PUSH2 0x018c 00000166: JUMPI 00000167: DUP1 00000168: PUSH4 0x101114cf 0000016d: EQ 0000016e: PUSH2 0x025f 00000171: JUMPI 00000172: DUP1 00000173: PUSH4 0x18160ddd 00000178: EQ 00000179: PUSH2 0x0290 0000017c: JUMPI 0000017d: DUP1 0000017e: PUSH4 0x1be05289 00000183: EQ 00000184: PUSH2 0x0298 00000187: JUMPI 00000188: PUSH2 0x01ad 0000018b: JUMP 0000018c: JUMPDEST 0000018d: DUP1 0000018e: PUSH3 0x8cc262 00000192: EQ 00000193: PUSH2 0x01b2 00000196: JUMPI 00000197: DUP1 00000198: PUSH4 0x0700037d 0000019d: EQ 0000019e: PUSH2 0x01f7 000001a1: JUMPI 000001a2: DUP1 000001a3: PUSH4 0x0d68b761 000001a8: EQ 000001a9: PUSH2 0x022a 000001ac: JUMPI 000001ad: JUMPDEST 000001ae: PUSH1 0x00 000001b0: DUP1 000001b1: REVERT 000001b2: JUMPDEST 000001b3: PUSH2 0x01e5 000001b6: PUSH1 0x04 000001b8: DUP1 000001b9: CALLDATASIZE 000001ba: SUB 000001bb: PUSH1 0x20 000001bd: DUP2 000001be: LT 000001bf: ISZERO 000001c0: PUSH2 0x01c8 000001c3: JUMPI 000001c4: PUSH1 0x00 000001c6: DUP1 000001c7: REVERT 000001c8: JUMPDEST 000001c9: POP 000001ca: CALLDATALOAD 000001cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001e0: AND 000001e1: PUSH2 0x0414 000001e4: JUMP 000001e5: JUMPDEST 000001e6: PUSH1 0x40 000001e8: DUP1 000001e9: MLOAD 000001ea: SWAP2 000001eb: DUP3 000001ec: MSTORE 000001ed: MLOAD 000001ee: SWAP1 000001ef: DUP2 000001f0: SWAP1 000001f1: SUB 000001f2: PUSH1 0x20 000001f4: ADD 000001f5: SWAP1 000001f6: RETURN 000001f7: JUMPDEST 000001f8: PUSH2 0x01e5 000001fb: PUSH1 0x04 000001fd: DUP1 000001fe: CALLDATASIZE 000001ff: SUB 00000200: PUSH1 0x20 00000202: DUP2 00000203: LT 00000204: ISZERO 00000205: PUSH2 0x020d 00000208: JUMPI 00000209: PUSH1 0x00 0000020b: DUP1 0000020c: REVERT 0000020d: JUMPDEST 0000020e: POP 0000020f: CALLDATALOAD 00000210: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000225: AND 00000226: PUSH2 0x04a7 00000229: JUMP 0000022a: JUMPDEST 0000022b: PUSH2 0x025d 0000022e: PUSH1 0x04 00000230: DUP1 00000231: CALLDATASIZE 00000232: SUB 00000233: PUSH1 0x20 00000235: DUP2 00000236: LT 00000237: ISZERO 00000238: PUSH2 0x0240 0000023b: JUMPI 0000023c: PUSH1 0x00 0000023e: DUP1 0000023f: REVERT 00000240: JUMPDEST 00000241: POP 00000242: CALLDATALOAD 00000243: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000258: AND 00000259: PUSH2 0x04b9 0000025c: JUMP 0000025d: JUMPDEST 0000025e: STOP 0000025f: JUMPDEST 00000260: PUSH2 0x0267 00000263: PUSH2 0x0573 00000266: JUMP 00000267: JUMPDEST 00000268: PUSH1 0x40 0000026a: DUP1 0000026b: MLOAD 0000026c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000281: SWAP1 00000282: SWAP3 00000283: AND 00000284: DUP3 00000285: MSTORE 00000286: MLOAD 00000287: SWAP1 00000288: DUP2 00000289: SWAP1 0000028a: SUB 0000028b: PUSH1 0x20 0000028d: ADD 0000028e: SWAP1 0000028f: RETURN 00000290: JUMPDEST 00000291: PUSH2 0x01e5 00000294: PUSH2 0x058f 00000297: JUMP 00000298: JUMPDEST 00000299: PUSH2 0x01e5 0000029c: PUSH2 0x0596 0000029f: JUMP 000002a0: JUMPDEST 000002a1: PUSH2 0x025d 000002a4: PUSH1 0x04 000002a6: DUP1 000002a7: CALLDATASIZE 000002a8: SUB 000002a9: PUSH1 0x20 000002ab: DUP2 000002ac: LT 000002ad: ISZERO 000002ae: PUSH2 0x02b6 000002b1: JUMPI 000002b2: PUSH1 0x00 000002b4: DUP1 000002b5: REVERT 000002b6: JUMPDEST 000002b7: POP 000002b8: CALLDATALOAD 000002b9: PUSH2 0x059d 000002bc: JUMP 000002bd: JUMPDEST 000002be: PUSH2 0x025d 000002c1: PUSH1 0x04 000002c3: DUP1 000002c4: CALLDATASIZE 000002c5: SUB 000002c6: PUSH1 0x20 000002c8: DUP2 000002c9: LT 000002ca: ISZERO 000002cb: PUSH2 0x02d3 000002ce: JUMPI 000002cf: PUSH1 0x00 000002d1: DUP1 000002d2: REVERT 000002d3: JUMPDEST 000002d4: POP 000002d5: CALLDATALOAD 000002d6: PUSH2 0x0735 000002d9: JUMP 000002da: JUMPDEST 000002db: PUSH2 0x025d 000002de: PUSH2 0x099c 000002e1: JUMP 000002e2: JUMPDEST 000002e3: PUSH2 0x0267 000002e6: PUSH2 0x0bc5 000002e9: JUMP 000002ea: JUMPDEST 000002eb: PUSH2 0x01e5 000002ee: PUSH1 0x04 000002f0: DUP1 000002f1: CALLDATASIZE 000002f2: SUB 000002f3: PUSH1 0x20 000002f5: DUP2 000002f6: LT 000002f7: ISZERO 000002f8: PUSH2 0x0300 000002fb: JUMPI 000002fc: PUSH1 0x00 000002fe: DUP1 000002ff: REVERT 00000300: JUMPDEST 00000301: POP 00000302: CALLDATALOAD 00000303: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000318: AND 00000319: PUSH2 0x0be1 0000031c: JUMP 0000031d: JUMPDEST 0000031e: PUSH2 0x025d 00000321: PUSH2 0x0c09 00000324: JUMP 00000325: JUMPDEST 00000326: PUSH2 0x01e5 00000329: PUSH2 0x0ceb 0000032c: JUMP 0000032d: JUMPDEST 0000032e: PUSH2 0x01e5 00000331: PUSH2 0x0cf1 00000334: JUMP 00000335: JUMPDEST 00000336: PUSH2 0x01e5 00000339: PUSH1 0x04 0000033b: DUP1 0000033c: CALLDATASIZE 0000033d: SUB 0000033e: PUSH1 0x20 00000340: DUP2 00000341: LT 00000342: ISZERO 00000343: PUSH2 0x034b 00000346: JUMPI 00000347: PUSH1 0x00 00000349: DUP1 0000034a: REVERT 0000034b: JUMPDEST 0000034c: POP 0000034d: CALLDATALOAD 0000034e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000363: AND 00000364: PUSH2 0x0d04 00000367: JUMP 00000368: JUMPDEST 00000369: PUSH2 0x01e5 0000036c: PUSH2 0x0d16 0000036f: JUMP 00000370: JUMPDEST 00000371: PUSH2 0x0267 00000374: PUSH2 0x0d1c 00000377: JUMP 00000378: JUMPDEST 00000379: PUSH2 0x0380 0000037c: PUSH2 0x0d38 0000037f: JUMP 00000380: JUMPDEST 00000381: PUSH1 0x40 00000383: DUP1 00000384: MLOAD 00000385: SWAP2 00000386: ISZERO 00000387: ISZERO 00000388: DUP3 00000389: MSTORE 0000038a: MLOAD 0000038b: SWAP1 0000038c: DUP2 0000038d: SWAP1 0000038e: SUB 0000038f: PUSH1 0x20 00000391: ADD 00000392: SWAP1 00000393: RETURN 00000394: JUMPDEST 00000395: PUSH2 0x025d 00000398: PUSH1 0x04 0000039a: DUP1 0000039b: CALLDATASIZE 0000039c: SUB 0000039d: PUSH1 0x20 0000039f: DUP2 000003a0: LT 000003a1: ISZERO 000003a2: PUSH2 0x03aa 000003a5: JUMPI 000003a6: PUSH1 0x00 000003a8: DUP1 000003a9: REVERT 000003aa: JUMPDEST 000003ab: POP 000003ac: CALLDATALOAD 000003ad: PUSH2 0x0d78 000003b0: JUMP 000003b1: JUMPDEST 000003b2: PUSH2 0x01e5 000003b5: PUSH2 0x0f10 000003b8: JUMP 000003b9: JUMPDEST 000003ba: PUSH2 0x01e5 000003bd: PUSH2 0x0f16 000003c0: JUMP 000003c1: JUMPDEST 000003c2: PUSH2 0x01e5 000003c5: PUSH2 0x0f6a 000003c8: JUMP 000003c9: JUMPDEST 000003ca: PUSH2 0x025d 000003cd: PUSH2 0x0f70 000003d0: JUMP 000003d1: JUMPDEST 000003d2: PUSH2 0x01e5 000003d5: PUSH2 0x0f8b 000003d8: JUMP 000003d9: JUMPDEST 000003da: PUSH2 0x025d 000003dd: PUSH1 0x04 000003df: DUP1 000003e0: CALLDATASIZE 000003e1: SUB 000003e2: PUSH1 0x20 000003e4: DUP2 000003e5: LT 000003e6: ISZERO 000003e7: PUSH2 0x03ef 000003ea: JUMPI 000003eb: PUSH1 0x00 000003ed: DUP1 000003ee: REVERT 000003ef: JUMPDEST 000003f0: POP 000003f1: CALLDATALOAD 000003f2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000407: AND 00000408: PUSH2 0x0f91 0000040b: JUMP 0000040c: JUMPDEST 0000040d: PUSH2 0x0267 00000410: PUSH2 0x1010 00000413: JUMP 00000414: JUMPDEST 00000415: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000042a: DUP2 0000042b: AND 0000042c: PUSH1 0x00 0000042e: SWAP1 0000042f: DUP2 00000430: MSTORE 00000431: PUSH1 0x0c 00000433: PUSH1 0x20 00000435: SWAP1 00000436: DUP2 00000437: MSTORE 00000438: PUSH1 0x40 0000043a: DUP1 0000043b: DUP4 0000043c: KECCAK256 0000043d: SLOAD 0000043e: PUSH1 0x0b 00000440: SWAP1 00000441: SWAP3 00000442: MSTORE 00000443: DUP3 00000444: KECCAK256 00000445: SLOAD 00000446: PUSH2 0x04a1 00000449: SWAP2 0000044a: SWAP1 0000044b: PUSH2 0x0495 0000044e: SWAP1 0000044f: PUSH8 0x0de0b6b3a7640000 00000458: SWAP1 00000459: PUSH2 0x0489 0000045c: SWAP1 0000045d: PUSH2 0x0474 00000460: SWAP1 00000461: PUSH2 0x0468 00000464: PUSH2 0x0f16 00000467: JUMP 00000468: JUMPDEST 00000469: SWAP1 0000046a: PUSH4 0xffffffff 0000046f: PUSH2 0x102c 00000472: AND 00000473: JUMP 00000474: JUMPDEST 00000475: PUSH2 0x047d 00000478: DUP9 00000479: PUSH2 0x0be1 0000047c: JUMP 0000047d: JUMPDEST 0000047e: SWAP1 0000047f: PUSH4 0xffffffff 00000484: PUSH2 0x1075 00000487: AND 00000488: JUMP 00000489: JUMPDEST 0000048a: SWAP1 0000048b: PUSH4 0xffffffff 00000490: PUSH2 0x10e8 00000493: AND 00000494: JUMP 00000495: JUMPDEST 00000496: SWAP1 00000497: PUSH4 0xffffffff 0000049c: PUSH2 0x112a 0000049f: AND 000004a0: JUMP 000004a1: JUMPDEST 000004a2: SWAP3 000004a3: SWAP2 000004a4: POP 000004a5: POP 000004a6: JUMP 000004a7: JUMPDEST 000004a8: PUSH1 0x0c 000004aa: PUSH1 0x20 000004ac: MSTORE 000004ad: PUSH1 0x00 000004af: SWAP1 000004b0: DUP2 000004b1: MSTORE 000004b2: PUSH1 0x40 000004b4: SWAP1 000004b5: KECCAK256 000004b6: SLOAD 000004b7: DUP2 000004b8: JUMP 000004b9: JUMPDEST 000004ba: PUSH2 0x04c1 000004bd: PUSH2 0x0d38 000004c0: JUMP 000004c1: JUMPDEST 000004c2: PUSH2 0x052c 000004c5: JUMPI 000004c6: PUSH1 0x40 000004c8: DUP1 000004c9: MLOAD 000004ca: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000004eb: DUP2 000004ec: MSTORE 000004ed: PUSH1 0x20 000004ef: PUSH1 0x04 000004f1: DUP3 000004f2: ADD 000004f3: DUP2 000004f4: SWAP1 000004f5: MSTORE 000004f6: PUSH1 0x24 000004f8: DUP3 000004f9: ADD 000004fa: MSTORE 000004fb: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0000051c: PUSH1 0x44 0000051e: DUP3 0000051f: ADD 00000520: MSTORE 00000521: SWAP1 00000522: MLOAD 00000523: SWAP1 00000524: DUP2 00000525: SWAP1 00000526: SUB 00000527: PUSH1 0x64 00000529: ADD 0000052a: SWAP1 0000052b: REVERT 0000052c: JUMPDEST 0000052d: PUSH1 0x04 0000052f: DUP1 00000530: SLOAD 00000531: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000552: AND 00000553: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000568: SWAP3 00000569: SWAP1 0000056a: SWAP3 0000056b: AND 0000056c: SWAP2 0000056d: SWAP1 0000056e: SWAP2 0000056f: OR 00000570: SWAP1 00000571: SSTORE 00000572: JUMP 00000573: JUMPDEST 00000574: PUSH1 0x04 00000576: SLOAD 00000577: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000058c: AND 0000058d: DUP2 0000058e: JUMP 0000058f: JUMPDEST 00000590: PUSH1 0x01 00000592: SLOAD 00000593: JUMPDEST 00000594: SWAP1 00000595: JUMP 00000596: JUMPDEST 00000597: PUSH3 0x098968 0000059b: DUP2 0000059c: JUMP 0000059d: JUMPDEST 0000059e: CALLER 0000059f: PUSH2 0x05a6 000005a2: PUSH2 0x0f16 000005a5: JUMP 000005a6: JUMPDEST 000005a7: PUSH1 0x0a 000005a9: SSTORE 000005aa: PUSH2 0x05b1 000005ad: PUSH2 0x0cf1 000005b0: JUMP 000005b1: JUMPDEST 000005b2: PUSH1 0x09 000005b4: SSTORE 000005b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005ca: DUP2 000005cb: AND 000005cc: ISZERO 000005cd: PUSH2 0x0612 000005d0: JUMPI 000005d1: PUSH2 0x05d9 000005d4: DUP2 000005d5: PUSH2 0x0414 000005d8: JUMP 000005d9: JUMPDEST 000005da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005ef: DUP3 000005f0: AND 000005f1: PUSH1 0x00 000005f3: SWAP1 000005f4: DUP2 000005f5: MSTORE 000005f6: PUSH1 0x0c 000005f8: PUSH1 0x20 000005fa: SWAP1 000005fb: DUP2 000005fc: MSTORE 000005fd: PUSH1 0x40 000005ff: DUP1 00000600: DUP4 00000601: KECCAK256 00000602: SWAP4 00000603: SWAP1 00000604: SWAP4 00000605: SSTORE 00000606: PUSH1 0x0a 00000608: SLOAD 00000609: PUSH1 0x0b 0000060b: SWAP1 0000060c: SWAP2 0000060d: MSTORE 0000060e: SWAP2 0000060f: SWAP1 00000610: KECCAK256 00000611: SSTORE 00000612: JUMPDEST 00000613: PUSH1 0x06 00000615: SLOAD 00000616: TIMESTAMP 00000617: LT 00000618: ISZERO 00000619: PUSH2 0x0683 0000061c: JUMPI 0000061d: PUSH1 0x40 0000061f: DUP1 00000620: MLOAD 00000621: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000642: DUP2 00000643: MSTORE 00000644: PUSH1 0x20 00000646: PUSH1 0x04 00000648: DUP3 00000649: ADD 0000064a: MSTORE 0000064b: PUSH1 0x09 0000064d: PUSH1 0x24 0000064f: DUP3 00000650: ADD 00000651: MSTORE 00000652: PUSH32 0x6e6f742073746172740000000000000000000000000000000000000000000000 00000673: PUSH1 0x44 00000675: DUP3 00000676: ADD 00000677: MSTORE 00000678: SWAP1 00000679: MLOAD 0000067a: SWAP1 0000067b: DUP2 0000067c: SWAP1 0000067d: SUB 0000067e: PUSH1 0x64 00000680: ADD 00000681: SWAP1 00000682: REVERT 00000683: JUMPDEST 00000684: PUSH1 0x00 00000686: DUP3 00000687: GT 00000688: PUSH2 0x06f2 0000068b: JUMPI 0000068c: PUSH1 0x40 0000068e: DUP1 0000068f: MLOAD 00000690: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006b1: DUP2 000006b2: MSTORE 000006b3: PUSH1 0x20 000006b5: PUSH1 0x04 000006b7: DUP3 000006b8: ADD 000006b9: MSTORE 000006ba: PUSH1 0x11 000006bc: PUSH1 0x24 000006be: DUP3 000006bf: ADD 000006c0: MSTORE 000006c1: PUSH32 0x43616e6e6f742077697468647261772030000000000000000000000000000000 000006e2: PUSH1 0x44 000006e4: DUP3 000006e5: ADD 000006e6: MSTORE 000006e7: SWAP1 000006e8: MLOAD 000006e9: SWAP1 000006ea: DUP2 000006eb: SWAP1 000006ec: SUB 000006ed: PUSH1 0x64 000006ef: ADD 000006f0: SWAP1 000006f1: REVERT 000006f2: JUMPDEST 000006f3: PUSH2 0x06fb 000006f6: DUP3 000006f7: PUSH2 0x119e 000006fa: JUMP 000006fb: JUMPDEST 000006fc: PUSH1 0x40 000006fe: DUP1 000006ff: MLOAD 00000700: DUP4 00000701: DUP2 00000702: MSTORE 00000703: SWAP1 00000704: MLOAD 00000705: CALLER 00000706: SWAP2 00000707: PUSH32 0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5 00000728: SWAP2 00000729: SWAP1 0000072a: DUP2 0000072b: SWAP1 0000072c: SUB 0000072d: PUSH1 0x20 0000072f: ADD 00000730: SWAP1 00000731: LOG2 00000732: POP 00000733: POP 00000734: JUMP 00000735: JUMPDEST 00000736: PUSH1 0x04 00000738: SLOAD 00000739: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000074e: AND 0000074f: PUSH2 0x0756 00000752: PUSH2 0x120c 00000755: JUMP 00000756: JUMPDEST 00000757: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000076c: AND 0000076d: EQ 0000076e: PUSH2 0x07c2 00000771: JUMPI 00000772: PUSH1 0x40 00000774: MLOAD 00000775: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000796: DUP2 00000797: MSTORE 00000798: PUSH1 0x04 0000079a: ADD 0000079b: DUP1 0000079c: DUP1 0000079d: PUSH1 0x20 0000079f: ADD 000007a0: DUP3 000007a1: DUP2 000007a2: SUB 000007a3: DUP3 000007a4: MSTORE 000007a5: PUSH1 0x21 000007a7: DUP2 000007a8: MSTORE 000007a9: PUSH1 0x20 000007ab: ADD 000007ac: DUP1 000007ad: PUSH2 0x18a8 000007b0: PUSH1 0x21 000007b2: SWAP2 000007b3: CODECOPY 000007b4: PUSH1 0x40 000007b6: ADD 000007b7: SWAP2 000007b8: POP 000007b9: POP 000007ba: PUSH1 0x40 000007bc: MLOAD 000007bd: DUP1 000007be: SWAP2 000007bf: SUB 000007c0: SWAP1 000007c1: REVERT 000007c2: JUMPDEST 000007c3: PUSH1 0x00 000007c5: PUSH2 0x07cc 000007c8: PUSH2 0x0f16 000007cb: JUMP 000007cc: JUMPDEST 000007cd: PUSH1 0x0a 000007cf: SSTORE 000007d0: PUSH2 0x07d7 000007d3: PUSH2 0x0cf1 000007d6: JUMP 000007d7: JUMPDEST 000007d8: PUSH1 0x09 000007da: SSTORE 000007db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007f0: DUP2 000007f1: AND 000007f2: ISZERO 000007f3: PUSH2 0x0838 000007f6: JUMPI 000007f7: PUSH2 0x07ff 000007fa: DUP2 000007fb: PUSH2 0x0414 000007fe: JUMP 000007ff: JUMPDEST 00000800: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000815: DUP3 00000816: AND 00000817: PUSH1 0x00 00000819: SWAP1 0000081a: DUP2 0000081b: MSTORE 0000081c: PUSH1 0x0c 0000081e: PUSH1 0x20 00000820: SWAP1 00000821: DUP2 00000822: MSTORE 00000823: PUSH1 0x40 00000825: DUP1 00000826: DUP4 00000827: KECCAK256 00000828: SWAP4 00000829: SWAP1 0000082a: SWAP4 0000082b: SSTORE 0000082c: PUSH1 0x0a 0000082e: SLOAD 0000082f: PUSH1 0x0b 00000831: SWAP1 00000832: SWAP2 00000833: MSTORE 00000834: SWAP2 00000835: SWAP1 00000836: KECCAK256 00000837: SSTORE 00000838: JUMPDEST 00000839: PUSH1 0x06 0000083b: SLOAD 0000083c: TIMESTAMP 0000083d: GT 0000083e: ISZERO 0000083f: PUSH2 0x0908 00000842: JUMPI 00000843: PUSH1 0x07 00000845: SLOAD 00000846: TIMESTAMP 00000847: LT 00000848: PUSH2 0x0866 0000084b: JUMPI 0000084c: PUSH2 0x085e 0000084f: DUP3 00000850: PUSH3 0x098968 00000854: PUSH4 0xffffffff 00000859: PUSH2 0x10e8 0000085c: AND 0000085d: JUMP 0000085e: JUMPDEST 0000085f: PUSH1 0x08 00000861: SSTORE 00000862: PUSH2 0x08b4 00000865: JUMP 00000866: JUMPDEST 00000867: PUSH1 0x07 00000869: SLOAD 0000086a: PUSH1 0x00 0000086c: SWAP1 0000086d: PUSH2 0x087c 00000870: SWAP1 00000871: TIMESTAMP 00000872: PUSH4 0xffffffff 00000877: PUSH2 0x102c 0000087a: AND 0000087b: JUMP 0000087c: JUMPDEST 0000087d: SWAP1 0000087e: POP 0000087f: PUSH1 0x00 00000881: PUSH2 0x0895 00000884: PUSH1 0x08 00000886: SLOAD 00000887: DUP4 00000888: PUSH2 0x1075 0000088b: SWAP1 0000088c: SWAP2 0000088d: SWAP1 0000088e: PUSH4 0xffffffff 00000893: AND 00000894: JUMP 00000895: JUMPDEST 00000896: SWAP1 00000897: POP 00000898: PUSH2 0x08ae 0000089b: PUSH3 0x098968 0000089f: PUSH2 0x0489 000008a2: DUP7 000008a3: DUP5 000008a4: PUSH4 0xffffffff 000008a9: PUSH2 0x112a 000008ac: AND 000008ad: JUMP 000008ae: JUMPDEST 000008af: PUSH1 0x08 000008b1: SSTORE 000008b2: POP 000008b3: POP 000008b4: JUMPDEST 000008b5: TIMESTAMP 000008b6: PUSH1 0x09 000008b8: DUP2 000008b9: SWAP1 000008ba: SSTORE 000008bb: PUSH2 0x08cd 000008be: SWAP1 000008bf: PUSH3 0x098968 000008c3: PUSH4 0xffffffff 000008c8: PUSH2 0x112a 000008cb: AND 000008cc: JUMP 000008cd: JUMPDEST 000008ce: PUSH1 0x07 000008d0: SSTORE 000008d1: PUSH1 0x40 000008d3: DUP1 000008d4: MLOAD 000008d5: DUP4 000008d6: DUP2 000008d7: MSTORE 000008d8: SWAP1 000008d9: MLOAD 000008da: PUSH32 0xde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d 000008fb: SWAP2 000008fc: DUP2 000008fd: SWAP1 000008fe: SUB 000008ff: PUSH1 0x20 00000901: ADD 00000902: SWAP1 00000903: LOG1 00000904: PUSH2 0x0970 00000907: JUMP 00000908: JUMPDEST 00000909: PUSH2 0x091b 0000090c: DUP3 0000090d: PUSH3 0x098968 00000911: PUSH4 0xffffffff 00000916: PUSH2 0x10e8 00000919: AND 0000091a: JUMP 0000091b: JUMPDEST 0000091c: PUSH1 0x08 0000091e: SSTORE 0000091f: PUSH1 0x06 00000921: SLOAD 00000922: PUSH1 0x09 00000924: DUP2 00000925: SWAP1 00000926: SSTORE 00000927: PUSH2 0x0939 0000092a: SWAP1 0000092b: PUSH3 0x098968 0000092f: PUSH4 0xffffffff 00000934: PUSH2 0x112a 00000937: AND 00000938: JUMP 00000939: JUMPDEST 0000093a: PUSH1 0x07 0000093c: SSTORE 0000093d: PUSH1 0x40 0000093f: DUP1 00000940: MLOAD 00000941: DUP4 00000942: DUP2 00000943: MSTORE 00000944: SWAP1 00000945: MLOAD 00000946: PUSH32 0xde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d 00000967: SWAP2 00000968: DUP2 00000969: SWAP1 0000096a: SUB 0000096b: PUSH1 0x20 0000096d: ADD 0000096e: SWAP1 0000096f: LOG1 00000970: JUMPDEST 00000971: PUSH1 0x00 00000973: PUSH2 0x0996 00000976: PUSH8 0x0de0b6b3a7640000 0000097f: PUSH2 0x047d 00000982: PUSH1 0x08 00000984: SLOAD 00000985: PUSH3 0x098968 00000989: PUSH2 0x1075 0000098c: SWAP1 0000098d: SWAP2 0000098e: SWAP1 0000098f: PUSH4 0xffffffff 00000994: AND 00000995: JUMP 00000996: JUMPDEST 00000997: POP 00000998: POP 00000999: POP 0000099a: POP 0000099b: JUMP 0000099c: JUMPDEST 0000099d: CALLER 0000099e: PUSH2 0x09a5 000009a1: PUSH2 0x0f16 000009a4: JUMP 000009a5: JUMPDEST 000009a6: PUSH1 0x0a 000009a8: SSTORE 000009a9: PUSH2 0x09b0 000009ac: PUSH2 0x0cf1 000009af: JUMP 000009b0: JUMPDEST 000009b1: PUSH1 0x09 000009b3: SSTORE 000009b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009c9: DUP2 000009ca: AND 000009cb: ISZERO 000009cc: PUSH2 0x0a11 000009cf: JUMPI 000009d0: PUSH2 0x09d8 000009d3: DUP2 000009d4: PUSH2 0x0414 000009d7: JUMP 000009d8: JUMPDEST 000009d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009ee: DUP3 000009ef: AND 000009f0: PUSH1 0x00 000009f2: SWAP1 000009f3: DUP2 000009f4: MSTORE 000009f5: PUSH1 0x0c 000009f7: PUSH1 0x20 000009f9: SWAP1 000009fa: DUP2 000009fb: MSTORE 000009fc: PUSH1 0x40 000009fe: DUP1 000009ff: DUP4 00000a00: KECCAK256 00000a01: SWAP4 00000a02: SWAP1 00000a03: SWAP4 00000a04: SSTORE 00000a05: PUSH1 0x0a 00000a07: SLOAD 00000a08: PUSH1 0x0b 00000a0a: SWAP1 00000a0b: SWAP2 00000a0c: MSTORE 00000a0d: SWAP2 00000a0e: SWAP1 00000a0f: KECCAK256 00000a10: SSTORE 00000a11: JUMPDEST 00000a12: PUSH1 0x06 00000a14: SLOAD 00000a15: TIMESTAMP 00000a16: LT 00000a17: ISZERO 00000a18: PUSH2 0x0a82 00000a1b: JUMPI 00000a1c: PUSH1 0x40 00000a1e: DUP1 00000a1f: MLOAD 00000a20: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a41: DUP2 00000a42: MSTORE 00000a43: PUSH1 0x20 00000a45: PUSH1 0x04 00000a47: DUP3 00000a48: ADD 00000a49: MSTORE 00000a4a: PUSH1 0x09 00000a4c: PUSH1 0x24 00000a4e: DUP3 00000a4f: ADD 00000a50: MSTORE 00000a51: PUSH32 0x6e6f742073746172740000000000000000000000000000000000000000000000 00000a72: PUSH1 0x44 00000a74: DUP3 00000a75: ADD 00000a76: MSTORE 00000a77: SWAP1 00000a78: MLOAD 00000a79: SWAP1 00000a7a: DUP2 00000a7b: SWAP1 00000a7c: SUB 00000a7d: PUSH1 0x64 00000a7f: ADD 00000a80: SWAP1 00000a81: REVERT 00000a82: JUMPDEST 00000a83: PUSH1 0x00 00000a85: PUSH2 0x0a8d 00000a88: CALLER 00000a89: PUSH2 0x0414 00000a8c: JUMP 00000a8d: JUMPDEST 00000a8e: SWAP1 00000a8f: POP 00000a90: DUP1 00000a91: ISZERO 00000a92: PUSH2 0x0bc1 00000a95: JUMPI 00000a96: CALLER 00000a97: PUSH1 0x00 00000a99: SWAP1 00000a9a: DUP2 00000a9b: MSTORE 00000a9c: PUSH1 0x0c 00000a9e: PUSH1 0x20 00000aa0: SWAP1 00000aa1: DUP2 00000aa2: MSTORE 00000aa3: PUSH1 0x40 00000aa5: DUP1 00000aa6: DUP4 00000aa7: KECCAK256 00000aa8: DUP4 00000aa9: SWAP1 00000aaa: SSTORE 00000aab: PUSH1 0x05 00000aad: SLOAD 00000aae: DUP2 00000aaf: MLOAD 00000ab0: PUSH32 0x8e0d8b7b00000000000000000000000000000000000000000000000000000000 00000ad1: DUP2 00000ad2: MSTORE 00000ad3: SWAP2 00000ad4: MLOAD 00000ad5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aea: SWAP1 00000aeb: SWAP2 00000aec: AND 00000aed: SWAP3 00000aee: PUSH4 0x8e0d8b7b 00000af3: SWAP3 00000af4: PUSH1 0x04 00000af6: DUP1 00000af7: DUP3 00000af8: ADD 00000af9: SWAP4 00000afa: SWAP2 00000afb: DUP3 00000afc: SWAP1 00000afd: SUB 00000afe: ADD 00000aff: DUP2 00000b00: DUP8 00000b01: DUP8 00000b02: DUP1 00000b03: EXTCODESIZE 00000b04: ISZERO 00000b05: DUP1 00000b06: ISZERO 00000b07: PUSH2 0x0b0f 00000b0a: JUMPI 00000b0b: PUSH1 0x00 00000b0d: DUP1 00000b0e: REVERT 00000b0f: JUMPDEST 00000b10: POP 00000b11: GAS 00000b12: CALL 00000b13: ISZERO 00000b14: DUP1 00000b15: ISZERO 00000b16: PUSH2 0x0b23 00000b19: JUMPI 00000b1a: RETURNDATASIZE 00000b1b: PUSH1 0x00 00000b1d: DUP1 00000b1e: RETURNDATACOPY 00000b1f: RETURNDATASIZE 00000b20: PUSH1 0x00 00000b22: REVERT 00000b23: JUMPDEST 00000b24: POP 00000b25: POP 00000b26: POP 00000b27: POP 00000b28: PUSH1 0x40 00000b2a: MLOAD 00000b2b: RETURNDATASIZE 00000b2c: PUSH1 0x20 00000b2e: DUP2 00000b2f: LT 00000b30: ISZERO 00000b31: PUSH2 0x0b39 00000b34: JUMPI 00000b35: PUSH1 0x00 00000b37: DUP1 00000b38: REVERT 00000b39: JUMPDEST 00000b3a: POP 00000b3b: MLOAD 00000b3c: SWAP1 00000b3d: POP 00000b3e: PUSH1 0x00 00000b40: PUSH2 0x0b5b 00000b43: PUSH8 0x0de0b6b3a7640000 00000b4c: PUSH2 0x0489 00000b4f: DUP6 00000b50: DUP6 00000b51: PUSH4 0xffffffff 00000b56: PUSH2 0x1075 00000b59: AND 00000b5a: JUMP 00000b5b: JUMPDEST 00000b5c: PUSH1 0x05 00000b5e: SLOAD 00000b5f: SWAP1 00000b60: SWAP2 00000b61: POP 00000b62: PUSH2 0x0b88 00000b65: SWAP1 00000b66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b7b: AND 00000b7c: CALLER 00000b7d: DUP4 00000b7e: PUSH4 0xffffffff 00000b83: PUSH2 0x1210 00000b86: AND 00000b87: JUMP 00000b88: JUMPDEST 00000b89: PUSH1 0x40 00000b8b: DUP1 00000b8c: MLOAD 00000b8d: DUP3 00000b8e: DUP2 00000b8f: MSTORE 00000b90: SWAP1 00000b91: MLOAD 00000b92: CALLER 00000b93: SWAP2 00000b94: PUSH32 0xe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486 00000bb5: SWAP2 00000bb6: SWAP1 00000bb7: DUP2 00000bb8: SWAP1 00000bb9: SUB 00000bba: PUSH1 0x20 00000bbc: ADD 00000bbd: SWAP1 00000bbe: LOG2 00000bbf: POP 00000bc0: POP 00000bc1: JUMPDEST 00000bc2: POP 00000bc3: POP 00000bc4: JUMP 00000bc5: JUMPDEST 00000bc6: PUSH1 0x00 00000bc8: SLOAD 00000bc9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bde: AND 00000bdf: DUP2 00000be0: JUMP 00000be1: JUMPDEST 00000be2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bf7: AND 00000bf8: PUSH1 0x00 00000bfa: SWAP1 00000bfb: DUP2 00000bfc: MSTORE 00000bfd: PUSH1 0x02 00000bff: PUSH1 0x20 00000c01: MSTORE 00000c02: PUSH1 0x40 00000c04: SWAP1 00000c05: KECCAK256 00000c06: SLOAD 00000c07: SWAP1 00000c08: JUMP 00000c09: JUMPDEST 00000c0a: PUSH2 0x0c11 00000c0d: PUSH2 0x0d38 00000c10: JUMP 00000c11: JUMPDEST 00000c12: PUSH2 0x0c7c 00000c15: JUMPI 00000c16: PUSH1 0x40 00000c18: DUP1 00000c19: MLOAD 00000c1a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000c3b: DUP2 00000c3c: MSTORE 00000c3d: PUSH1 0x20 00000c3f: PUSH1 0x04 00000c41: DUP3 00000c42: ADD 00000c43: DUP2 00000c44: SWAP1 00000c45: MSTORE 00000c46: PUSH1 0x24 00000c48: DUP3 00000c49: ADD 00000c4a: MSTORE 00000c4b: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00000c6c: PUSH1 0x44 00000c6e: DUP3 00000c6f: ADD 00000c70: MSTORE 00000c71: SWAP1 00000c72: MLOAD 00000c73: SWAP1 00000c74: DUP2 00000c75: SWAP1 00000c76: SUB 00000c77: PUSH1 0x64 00000c79: ADD 00000c7a: SWAP1 00000c7b: REVERT 00000c7c: JUMPDEST 00000c7d: PUSH1 0x03 00000c7f: SLOAD 00000c80: PUSH1 0x40 00000c82: MLOAD 00000c83: PUSH1 0x00 00000c85: SWAP2 00000c86: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c9b: AND 00000c9c: SWAP1 00000c9d: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000cbe: SWAP1 00000cbf: DUP4 00000cc0: SWAP1 00000cc1: LOG3 00000cc2: PUSH1 0x03 00000cc4: DUP1 00000cc5: SLOAD 00000cc6: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000ce7: AND 00000ce8: SWAP1 00000ce9: SSTORE 00000cea: JUMP 00000ceb: JUMPDEST 00000cec: PUSH1 0x08 00000cee: SLOAD 00000cef: DUP2 00000cf0: JUMP 00000cf1: JUMPDEST 00000cf2: PUSH1 0x00 00000cf4: PUSH2 0x0cff 00000cf7: TIMESTAMP 00000cf8: PUSH1 0x07 00000cfa: SLOAD 00000cfb: PUSH2 0x12a2 00000cfe: JUMP 00000cff: JUMPDEST 00000d00: SWAP1 00000d01: POP 00000d02: SWAP1 00000d03: JUMP 00000d04: JUMPDEST 00000d05: PUSH1 0x0b 00000d07: PUSH1 0x20 00000d09: MSTORE 00000d0a: PUSH1 0x00 00000d0c: SWAP1 00000d0d: DUP2 00000d0e: MSTORE 00000d0f: PUSH1 0x40 00000d11: SWAP1 00000d12: KECCAK256 00000d13: SLOAD 00000d14: DUP2 00000d15: JUMP 00000d16: JUMPDEST 00000d17: PUSH1 0x06 00000d19: SLOAD 00000d1a: DUP2 00000d1b: JUMP 00000d1c: JUMPDEST 00000d1d: PUSH1 0x03 00000d1f: SLOAD 00000d20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d35: AND 00000d36: SWAP1 00000d37: JUMP 00000d38: JUMPDEST 00000d39: PUSH1 0x03 00000d3b: SLOAD 00000d3c: PUSH1 0x00 00000d3e: SWAP1 00000d3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d54: AND 00000d55: PUSH2 0x0d5c 00000d58: PUSH2 0x120c 00000d5b: JUMP 00000d5c: JUMPDEST 00000d5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d72: AND 00000d73: EQ 00000d74: SWAP1 00000d75: POP 00000d76: SWAP1 00000d77: JUMP 00000d78: JUMPDEST 00000d79: CALLER 00000d7a: PUSH2 0x0d81 00000d7d: PUSH2 0x0f16 00000d80: JUMP 00000d81: JUMPDEST 00000d82: PUSH1 0x0a 00000d84: SSTORE 00000d85: PUSH2 0x0d8c 00000d88: PUSH2 0x0cf1 00000d8b: JUMP 00000d8c: JUMPDEST 00000d8d: PUSH1 0x09 00000d8f: SSTORE 00000d90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000da5: DUP2 00000da6: AND 00000da7: ISZERO 00000da8: PUSH2 0x0ded 00000dab: JUMPI 00000dac: PUSH2 0x0db4 00000daf: DUP2 00000db0: PUSH2 0x0414 00000db3: JUMP 00000db4: JUMPDEST 00000db5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000dca: DUP3 00000dcb: AND 00000dcc: PUSH1 0x00 00000dce: SWAP1 00000dcf: DUP2 00000dd0: MSTORE 00000dd1: PUSH1 0x0c 00000dd3: PUSH1 0x20 00000dd5: SWAP1 00000dd6: DUP2 00000dd7: MSTORE 00000dd8: PUSH1 0x40 00000dda: DUP1 00000ddb: DUP4 00000ddc: KECCAK256 00000ddd: SWAP4 00000dde: SWAP1 00000ddf: SWAP4 00000de0: SSTORE 00000de1: PUSH1 0x0a 00000de3: SLOAD 00000de4: PUSH1 0x0b 00000de6: SWAP1 00000de7: SWAP2 00000de8: MSTORE 00000de9: SWAP2 00000dea: SWAP1 00000deb: KECCAK256 00000dec: SSTORE 00000ded: JUMPDEST 00000dee: PUSH1 0x06 00000df0: SLOAD 00000df1: TIMESTAMP 00000df2: LT 00000df3: ISZERO 00000df4: PUSH2 0x0e5e 00000df7: JUMPI 00000df8: PUSH1 0x40 00000dfa: DUP1 00000dfb: MLOAD 00000dfc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e1d: DUP2 00000e1e: MSTORE 00000e1f: PUSH1 0x20 00000e21: PUSH1 0x04 00000e23: DUP3 00000e24: ADD 00000e25: MSTORE 00000e26: PUSH1 0x09 00000e28: PUSH1 0x24 00000e2a: DUP3 00000e2b: ADD 00000e2c: MSTORE 00000e2d: PUSH32 0x6e6f742073746172740000000000000000000000000000000000000000000000 00000e4e: PUSH1 0x44 00000e50: DUP3 00000e51: ADD 00000e52: MSTORE 00000e53: SWAP1 00000e54: MLOAD 00000e55: SWAP1 00000e56: DUP2 00000e57: SWAP1 00000e58: SUB 00000e59: PUSH1 0x64 00000e5b: ADD 00000e5c: SWAP1 00000e5d: REVERT 00000e5e: JUMPDEST 00000e5f: PUSH1 0x00 00000e61: DUP3 00000e62: GT 00000e63: PUSH2 0x0ecd 00000e66: JUMPI 00000e67: PUSH1 0x40 00000e69: DUP1 00000e6a: MLOAD 00000e6b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e8c: DUP2 00000e8d: MSTORE 00000e8e: PUSH1 0x20 00000e90: PUSH1 0x04 00000e92: DUP3 00000e93: ADD 00000e94: MSTORE 00000e95: PUSH1 0x0e 00000e97: PUSH1 0x24 00000e99: DUP3 00000e9a: ADD 00000e9b: MSTORE 00000e9c: PUSH32 0x43616e6e6f74207374616b652030000000000000000000000000000000000000 00000ebd: PUSH1 0x44 00000ebf: DUP3 00000ec0: ADD 00000ec1: MSTORE 00000ec2: SWAP1 00000ec3: MLOAD 00000ec4: SWAP1 00000ec5: DUP2 00000ec6: SWAP1 00000ec7: SUB 00000ec8: PUSH1 0x64 00000eca: ADD 00000ecb: SWAP1 00000ecc: REVERT 00000ecd: JUMPDEST 00000ece: PUSH2 0x0ed6 00000ed1: DUP3 00000ed2: PUSH2 0x12b8 00000ed5: JUMP 00000ed6: JUMPDEST 00000ed7: PUSH1 0x40 00000ed9: DUP1 00000eda: MLOAD 00000edb: DUP4 00000edc: DUP2 00000edd: MSTORE 00000ede: SWAP1 00000edf: MLOAD 00000ee0: CALLER 00000ee1: SWAP2 00000ee2: PUSH32 0x9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d 00000f03: SWAP2 00000f04: SWAP1 00000f05: DUP2 00000f06: SWAP1 00000f07: SUB 00000f08: PUSH1 0x20 00000f0a: ADD 00000f0b: SWAP1 00000f0c: LOG2 00000f0d: POP 00000f0e: POP 00000f0f: JUMP 00000f10: JUMPDEST 00000f11: PUSH1 0x09 00000f13: SLOAD 00000f14: DUP2 00000f15: JUMP 00000f16: JUMPDEST 00000f17: PUSH1 0x00 00000f19: PUSH2 0x0f20 00000f1c: PUSH2 0x058f 00000f1f: JUMP 00000f20: JUMPDEST 00000f21: PUSH2 0x0f2d 00000f24: JUMPI 00000f25: POP 00000f26: PUSH1 0x0a 00000f28: SLOAD 00000f29: PUSH2 0x0593 00000f2c: JUMP 00000f2d: JUMPDEST 00000f2e: PUSH2 0x0cff 00000f31: PUSH2 0x0f5b 00000f34: PUSH2 0x0f3b 00000f37: PUSH2 0x058f 00000f3a: JUMP 00000f3b: JUMPDEST 00000f3c: PUSH2 0x0489 00000f3f: PUSH8 0x0de0b6b3a7640000 00000f48: PUSH2 0x047d 00000f4b: PUSH1 0x08 00000f4d: SLOAD 00000f4e: PUSH2 0x047d 00000f51: PUSH1 0x09 00000f53: SLOAD 00000f54: PUSH2 0x0468 00000f57: PUSH2 0x0cf1 00000f5a: JUMP 00000f5b: JUMPDEST 00000f5c: PUSH1 0x0a 00000f5e: SLOAD 00000f5f: SWAP1 00000f60: PUSH4 0xffffffff 00000f65: PUSH2 0x112a 00000f68: AND 00000f69: JUMP 00000f6a: JUMPDEST 00000f6b: PUSH1 0x0a 00000f6d: SLOAD 00000f6e: DUP2 00000f6f: JUMP 00000f70: JUMPDEST 00000f71: PUSH2 0x0f81 00000f74: PUSH2 0x0f7c 00000f77: CALLER 00000f78: PUSH2 0x0be1 00000f7b: JUMP 00000f7c: JUMPDEST 00000f7d: PUSH2 0x059d 00000f80: JUMP 00000f81: JUMPDEST 00000f82: PUSH2 0x0f89 00000f85: PUSH2 0x099c 00000f88: JUMP 00000f89: JUMPDEST 00000f8a: JUMP 00000f8b: JUMPDEST 00000f8c: PUSH1 0x07 00000f8e: SLOAD 00000f8f: DUP2 00000f90: JUMP 00000f91: JUMPDEST 00000f92: PUSH2 0x0f99 00000f95: PUSH2 0x0d38 00000f98: JUMP 00000f99: JUMPDEST 00000f9a: PUSH2 0x1004 00000f9d: JUMPI 00000f9e: PUSH1 0x40 00000fa0: DUP1 00000fa1: MLOAD 00000fa2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000fc3: DUP2 00000fc4: MSTORE 00000fc5: PUSH1 0x20 00000fc7: PUSH1 0x04 00000fc9: DUP3 00000fca: ADD 00000fcb: DUP2 00000fcc: SWAP1 00000fcd: MSTORE 00000fce: PUSH1 0x24 00000fd0: DUP3 00000fd1: ADD 00000fd2: MSTORE 00000fd3: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00000ff4: PUSH1 0x44 00000ff6: DUP3 00000ff7: ADD 00000ff8: MSTORE 00000ff9: SWAP1 00000ffa: MLOAD 00000ffb: SWAP1 00000ffc: DUP2 00000ffd: SWAP1 00000ffe: SUB 00000fff: PUSH1 0x64 00001001: ADD 00001002: SWAP1 00001003: REVERT 00001004: JUMPDEST 00001005: PUSH2 0x100d 00001008: DUP2 00001009: PUSH2 0x1327 0000100c: JUMP 0000100d: JUMPDEST 0000100e: POP 0000100f: JUMP 00001010: JUMPDEST 00001011: PUSH1 0x05 00001013: SLOAD 00001014: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001029: AND 0000102a: DUP2 0000102b: JUMP 0000102c: JUMPDEST 0000102d: PUSH1 0x00 0000102f: PUSH2 0x106e 00001032: DUP4 00001033: DUP4 00001034: PUSH1 0x40 00001036: MLOAD 00001037: DUP1 00001038: PUSH1 0x40 0000103a: ADD 0000103b: PUSH1 0x40 0000103d: MSTORE 0000103e: DUP1 0000103f: PUSH1 0x1e 00001041: DUP2 00001042: MSTORE 00001043: PUSH1 0x20 00001045: ADD 00001046: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00001067: DUP2 00001068: MSTORE 00001069: POP 0000106a: PUSH2 0x1421 0000106d: JUMP 0000106e: JUMPDEST 0000106f: SWAP4 00001070: SWAP3 00001071: POP 00001072: POP 00001073: POP 00001074: JUMP 00001075: JUMPDEST 00001076: PUSH1 0x00 00001078: DUP3 00001079: PUSH2 0x1084 0000107c: JUMPI 0000107d: POP 0000107e: PUSH1 0x00 00001080: PUSH2 0x04a1 00001083: JUMP 00001084: JUMPDEST 00001085: DUP3 00001086: DUP3 00001087: MUL 00001088: DUP3 00001089: DUP5 0000108a: DUP3 0000108b: DUP2 0000108c: PUSH2 0x1091 0000108f: JUMPI 00001090: INVALID 00001091: JUMPDEST 00001092: DIV 00001093: EQ 00001094: PUSH2 0x106e 00001097: JUMPI 00001098: PUSH1 0x40 0000109a: MLOAD 0000109b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000010bc: DUP2 000010bd: MSTORE 000010be: PUSH1 0x04 000010c0: ADD 000010c1: DUP1 000010c2: DUP1 000010c3: PUSH1 0x20 000010c5: ADD 000010c6: DUP3 000010c7: DUP2 000010c8: SUB 000010c9: DUP3 000010ca: MSTORE 000010cb: PUSH1 0x21 000010cd: DUP2 000010ce: MSTORE 000010cf: PUSH1 0x20 000010d1: ADD 000010d2: DUP1 000010d3: PUSH2 0x1887 000010d6: PUSH1 0x21 000010d8: SWAP2 000010d9: CODECOPY 000010da: PUSH1 0x40 000010dc: ADD 000010dd: SWAP2 000010de: POP 000010df: POP 000010e0: PUSH1 0x40 000010e2: MLOAD 000010e3: DUP1 000010e4: SWAP2 000010e5: SUB 000010e6: SWAP1 000010e7: REVERT 000010e8: JUMPDEST 000010e9: PUSH1 0x00 000010eb: PUSH2 0x106e 000010ee: DUP4 000010ef: DUP4 000010f0: PUSH1 0x40 000010f2: MLOAD 000010f3: DUP1 000010f4: PUSH1 0x40 000010f6: ADD 000010f7: PUSH1 0x40 000010f9: MSTORE 000010fa: DUP1 000010fb: PUSH1 0x1a 000010fd: DUP2 000010fe: MSTORE 000010ff: PUSH1 0x20 00001101: ADD 00001102: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00001123: DUP2 00001124: MSTORE 00001125: POP 00001126: PUSH2 0x14d2 00001129: JUMP 0000112a: JUMPDEST 0000112b: PUSH1 0x00 0000112d: DUP3 0000112e: DUP3 0000112f: ADD 00001130: DUP4 00001131: DUP2 00001132: LT 00001133: ISZERO 00001134: PUSH2 0x106e 00001137: JUMPI 00001138: PUSH1 0x40 0000113a: DUP1 0000113b: MLOAD 0000113c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000115d: DUP2 0000115e: MSTORE 0000115f: PUSH1 0x20 00001161: PUSH1 0x04 00001163: DUP3 00001164: ADD 00001165: MSTORE 00001166: PUSH1 0x1b 00001168: PUSH1 0x24 0000116a: DUP3 0000116b: ADD 0000116c: MSTORE 0000116d: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 0000118e: PUSH1 0x44 00001190: DUP3 00001191: ADD 00001192: MSTORE 00001193: SWAP1 00001194: MLOAD 00001195: SWAP1 00001196: DUP2 00001197: SWAP1 00001198: SUB 00001199: PUSH1 0x64 0000119b: ADD 0000119c: SWAP1 0000119d: REVERT 0000119e: JUMPDEST 0000119f: PUSH1 0x01 000011a1: SLOAD 000011a2: PUSH2 0x11b1 000011a5: SWAP1 000011a6: DUP3 000011a7: PUSH4 0xffffffff 000011ac: PUSH2 0x102c 000011af: AND 000011b0: JUMP 000011b1: JUMPDEST 000011b2: PUSH1 0x01 000011b4: SSTORE 000011b5: CALLER 000011b6: PUSH1 0x00 000011b8: SWAP1 000011b9: DUP2 000011ba: MSTORE 000011bb: PUSH1 0x02 000011bd: PUSH1 0x20 000011bf: MSTORE 000011c0: PUSH1 0x40 000011c2: SWAP1 000011c3: KECCAK256 000011c4: SLOAD 000011c5: PUSH2 0x11d4 000011c8: SWAP1 000011c9: DUP3 000011ca: PUSH4 0xffffffff 000011cf: PUSH2 0x102c 000011d2: AND 000011d3: JUMP 000011d4: JUMPDEST 000011d5: CALLER 000011d6: PUSH1 0x00 000011d8: DUP2 000011d9: DUP2 000011da: MSTORE 000011db: PUSH1 0x02 000011dd: PUSH1 0x20 000011df: MSTORE 000011e0: PUSH1 0x40 000011e2: DUP2 000011e3: KECCAK256 000011e4: SWAP3 000011e5: SWAP1 000011e6: SWAP3 000011e7: SSTORE 000011e8: SWAP1 000011e9: SLOAD 000011ea: PUSH2 0x100d 000011ed: SWAP2 000011ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001203: SWAP1 00001204: SWAP2 00001205: AND 00001206: SWAP1 00001207: DUP4 00001208: PUSH2 0x1210 0000120b: JUMP 0000120c: JUMPDEST 0000120d: CALLER 0000120e: SWAP1 0000120f: JUMP 00001210: JUMPDEST 00001211: PUSH1 0x40 00001213: DUP1 00001214: MLOAD 00001215: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000122a: DUP5 0000122b: AND 0000122c: PUSH1 0x24 0000122e: DUP3 0000122f: ADD 00001230: MSTORE 00001231: PUSH1 0x44 00001233: DUP1 00001234: DUP3 00001235: ADD 00001236: DUP5 00001237: SWAP1 00001238: MSTORE 00001239: DUP3 0000123a: MLOAD 0000123b: DUP1 0000123c: DUP4 0000123d: SUB 0000123e: SWAP1 0000123f: SWAP2 00001240: ADD 00001241: DUP2 00001242: MSTORE 00001243: PUSH1 0x64 00001245: SWAP1 00001246: SWAP2 00001247: ADD 00001248: SWAP1 00001249: SWAP2 0000124a: MSTORE 0000124b: PUSH1 0x20 0000124d: DUP2 0000124e: ADD 0000124f: DUP1 00001250: MLOAD 00001251: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000126e: AND 0000126f: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001290: OR 00001291: SWAP1 00001292: MSTORE 00001293: PUSH2 0x129d 00001296: SWAP1 00001297: DUP5 00001298: SWAP1 00001299: PUSH2 0x1551 0000129c: JUMP 0000129d: JUMPDEST 0000129e: POP 0000129f: POP 000012a0: POP 000012a1: JUMP 000012a2: JUMPDEST 000012a3: PUSH1 0x00 000012a5: DUP2 000012a6: DUP4 000012a7: LT 000012a8: PUSH2 0x12b1 000012ab: JUMPI 000012ac: DUP2 000012ad: PUSH2 0x106e 000012b0: JUMP 000012b1: JUMPDEST 000012b2: POP 000012b3: SWAP1 000012b4: SWAP2 000012b5: SWAP1 000012b6: POP 000012b7: JUMP 000012b8: JUMPDEST 000012b9: PUSH1 0x01 000012bb: SLOAD 000012bc: PUSH2 0x12cb 000012bf: SWAP1 000012c0: DUP3 000012c1: PUSH4 0xffffffff 000012c6: PUSH2 0x112a 000012c9: AND 000012ca: JUMP 000012cb: JUMPDEST 000012cc: PUSH1 0x01 000012ce: SSTORE 000012cf: CALLER 000012d0: PUSH1 0x00 000012d2: SWAP1 000012d3: DUP2 000012d4: MSTORE 000012d5: PUSH1 0x02 000012d7: PUSH1 0x20 000012d9: MSTORE 000012da: PUSH1 0x40 000012dc: SWAP1 000012dd: KECCAK256 000012de: SLOAD 000012df: PUSH2 0x12ee 000012e2: SWAP1 000012e3: DUP3 000012e4: PUSH4 0xffffffff 000012e9: PUSH2 0x112a 000012ec: AND 000012ed: JUMP 000012ee: JUMPDEST 000012ef: CALLER 000012f0: PUSH1 0x00 000012f2: DUP2 000012f3: DUP2 000012f4: MSTORE 000012f5: PUSH1 0x02 000012f7: PUSH1 0x20 000012f9: MSTORE 000012fa: PUSH1 0x40 000012fc: DUP2 000012fd: KECCAK256 000012fe: SWAP3 000012ff: SWAP1 00001300: SWAP3 00001301: SSTORE 00001302: SWAP1 00001303: SLOAD 00001304: PUSH2 0x100d 00001307: SWAP2 00001308: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000131d: SWAP1 0000131e: SWAP2 0000131f: AND 00001320: SWAP1 00001321: ADDRESS 00001322: DUP5 00001323: PUSH2 0x178f 00001326: JUMP 00001327: JUMPDEST 00001328: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000133d: DUP2 0000133e: AND 0000133f: PUSH2 0x1393 00001342: JUMPI 00001343: PUSH1 0x40 00001345: MLOAD 00001346: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001367: DUP2 00001368: MSTORE 00001369: PUSH1 0x04 0000136b: ADD 0000136c: DUP1 0000136d: DUP1 0000136e: PUSH1 0x20 00001370: ADD 00001371: DUP3 00001372: DUP2 00001373: SUB 00001374: DUP3 00001375: MSTORE 00001376: PUSH1 0x26 00001378: DUP2 00001379: MSTORE 0000137a: PUSH1 0x20 0000137c: ADD 0000137d: DUP1 0000137e: PUSH2 0x1861 00001381: PUSH1 0x26 00001383: SWAP2 00001384: CODECOPY 00001385: PUSH1 0x40 00001387: ADD 00001388: SWAP2 00001389: POP 0000138a: POP 0000138b: PUSH1 0x40 0000138d: MLOAD 0000138e: DUP1 0000138f: SWAP2 00001390: SUB 00001391: SWAP1 00001392: REVERT 00001393: JUMPDEST 00001394: PUSH1 0x03 00001396: SLOAD 00001397: PUSH1 0x40 00001399: MLOAD 0000139a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013af: DUP1 000013b0: DUP5 000013b1: AND 000013b2: SWAP3 000013b3: AND 000013b4: SWAP1 000013b5: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000013d6: SWAP1 000013d7: PUSH1 0x00 000013d9: SWAP1 000013da: LOG3 000013db: PUSH1 0x03 000013dd: DUP1 000013de: SLOAD 000013df: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001400: AND 00001401: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001416: SWAP3 00001417: SWAP1 00001418: SWAP3 00001419: AND 0000141a: SWAP2 0000141b: SWAP1 0000141c: SWAP2 0000141d: OR 0000141e: SWAP1 0000141f: SSTORE 00001420: JUMP 00001421: JUMPDEST 00001422: PUSH1 0x00 00001424: DUP2 00001425: DUP5 00001426: DUP5 00001427: GT 00001428: ISZERO 00001429: PUSH2 0x14ca 0000142c: JUMPI 0000142d: PUSH1 0x40 0000142f: MLOAD 00001430: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001451: DUP2 00001452: MSTORE 00001453: PUSH1 0x04 00001455: ADD 00001456: DUP1 00001457: DUP1 00001458: PUSH1 0x20 0000145a: ADD 0000145b: DUP3 0000145c: DUP2 0000145d: SUB 0000145e: DUP3 0000145f: MSTORE 00001460: DUP4 00001461: DUP2 00001462: DUP2 00001463: MLOAD 00001464: DUP2 00001465: MSTORE 00001466: PUSH1 0x20 00001468: ADD 00001469: SWAP2 0000146a: POP 0000146b: DUP1 0000146c: MLOAD 0000146d: SWAP1 0000146e: PUSH1 0x20 00001470: ADD 00001471: SWAP1 00001472: DUP1 00001473: DUP4 00001474: DUP4 00001475: PUSH1 0x00 00001477: JUMPDEST 00001478: DUP4 00001479: DUP2 0000147a: LT 0000147b: ISZERO 0000147c: PUSH2 0x148f 0000147f: JUMPI 00001480: DUP2 00001481: DUP2 00001482: ADD 00001483: MLOAD 00001484: DUP4 00001485: DUP3 00001486: ADD 00001487: MSTORE 00001488: PUSH1 0x20 0000148a: ADD 0000148b: PUSH2 0x1477 0000148e: JUMP 0000148f: JUMPDEST 00001490: POP 00001491: POP 00001492: POP 00001493: POP 00001494: SWAP1 00001495: POP 00001496: SWAP1 00001497: DUP2 00001498: ADD 00001499: SWAP1 0000149a: PUSH1 0x1f 0000149c: AND 0000149d: DUP1 0000149e: ISZERO 0000149f: PUSH2 0x14bc 000014a2: JUMPI 000014a3: DUP1 000014a4: DUP3 000014a5: SUB 000014a6: DUP1 000014a7: MLOAD 000014a8: PUSH1 0x01 000014aa: DUP4 000014ab: PUSH1 0x20 000014ad: SUB 000014ae: PUSH2 0x0100 000014b1: EXP 000014b2: SUB 000014b3: NOT 000014b4: AND 000014b5: DUP2 000014b6: MSTORE 000014b7: PUSH1 0x20 000014b9: ADD 000014ba: SWAP2 000014bb: POP 000014bc: JUMPDEST 000014bd: POP 000014be: SWAP3 000014bf: POP 000014c0: POP 000014c1: POP 000014c2: PUSH1 0x40 000014c4: MLOAD 000014c5: DUP1 000014c6: SWAP2 000014c7: SUB 000014c8: SWAP1 000014c9: REVERT 000014ca: JUMPDEST 000014cb: POP 000014cc: POP 000014cd: POP 000014ce: SWAP1 000014cf: SUB 000014d0: SWAP1 000014d1: JUMP 000014d2: JUMPDEST 000014d3: PUSH1 0x00 000014d5: DUP2 000014d6: DUP4 000014d7: PUSH2 0x153b 000014da: JUMPI 000014db: PUSH1 0x40 000014dd: MLOAD 000014de: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000014ff: DUP2 00001500: MSTORE 00001501: PUSH1 0x20 00001503: PUSH1 0x04 00001505: DUP3 00001506: ADD 00001507: DUP2 00001508: DUP2 00001509: MSTORE 0000150a: DUP4 0000150b: MLOAD 0000150c: PUSH1 0x24 0000150e: DUP5 0000150f: ADD 00001510: MSTORE 00001511: DUP4 00001512: MLOAD 00001513: SWAP1 00001514: SWAP3 00001515: DUP4 00001516: SWAP3 00001517: PUSH1 0x44 00001519: SWAP1 0000151a: SWAP2 0000151b: ADD 0000151c: SWAP2 0000151d: SWAP1 0000151e: DUP6 0000151f: ADD 00001520: SWAP1 00001521: DUP1 00001522: DUP4 00001523: DUP4 00001524: PUSH1 0x00 00001526: DUP4 00001527: ISZERO 00001528: PUSH2 0x148f 0000152b: JUMPI 0000152c: DUP2 0000152d: DUP2 0000152e: ADD 0000152f: MLOAD 00001530: DUP4 00001531: DUP3 00001532: ADD 00001533: MSTORE 00001534: PUSH1 0x20 00001536: ADD 00001537: PUSH2 0x1477 0000153a: JUMP 0000153b: JUMPDEST 0000153c: POP 0000153d: PUSH1 0x00 0000153f: DUP4 00001540: DUP6 00001541: DUP2 00001542: PUSH2 0x1547 00001545: JUMPI 00001546: INVALID 00001547: JUMPDEST 00001548: DIV 00001549: SWAP6 0000154a: SWAP5 0000154b: POP 0000154c: POP 0000154d: POP 0000154e: POP 0000154f: POP 00001550: JUMP 00001551: JUMPDEST 00001552: PUSH2 0x1570 00001555: DUP3 00001556: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000156b: AND 0000156c: PUSH2 0x1824 0000156f: JUMP 00001570: JUMPDEST 00001571: PUSH2 0x15db 00001574: JUMPI 00001575: PUSH1 0x40 00001577: DUP1 00001578: MLOAD 00001579: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000159a: DUP2 0000159b: MSTORE 0000159c: PUSH1 0x20 0000159e: PUSH1 0x04 000015a0: DUP3 000015a1: ADD 000015a2: MSTORE 000015a3: PUSH1 0x1f 000015a5: PUSH1 0x24 000015a7: DUP3 000015a8: ADD 000015a9: MSTORE 000015aa: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400 000015cb: PUSH1 0x44 000015cd: DUP3 000015ce: ADD 000015cf: MSTORE 000015d0: SWAP1 000015d1: MLOAD 000015d2: SWAP1 000015d3: DUP2 000015d4: SWAP1 000015d5: SUB 000015d6: PUSH1 0x64 000015d8: ADD 000015d9: SWAP1 000015da: REVERT 000015db: JUMPDEST 000015dc: PUSH1 0x00 000015de: PUSH1 0x60 000015e0: DUP4 000015e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015f6: AND 000015f7: DUP4 000015f8: PUSH1 0x40 000015fa: MLOAD 000015fb: DUP1 000015fc: DUP3 000015fd: DUP1 000015fe: MLOAD 000015ff: SWAP1 00001600: PUSH1 0x20 00001602: ADD 00001603: SWAP1 00001604: DUP1 00001605: DUP4 00001606: DUP4 00001607: JUMPDEST 00001608: PUSH1 0x20 0000160a: DUP4 0000160b: LT 0000160c: PUSH2 0x1644 0000160f: JUMPI 00001610: DUP1 00001611: MLOAD 00001612: DUP3 00001613: MSTORE 00001614: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00001635: SWAP1 00001636: SWAP3 00001637: ADD 00001638: SWAP2 00001639: PUSH1 0x20 0000163b: SWAP2 0000163c: DUP3 0000163d: ADD 0000163e: SWAP2 0000163f: ADD 00001640: PUSH2 0x1607 00001643: JUMP 00001644: JUMPDEST 00001645: PUSH1 0x01 00001647: DUP4 00001648: PUSH1 0x20 0000164a: SUB 0000164b: PUSH2 0x0100 0000164e: EXP 0000164f: SUB 00001650: DUP1 00001651: NOT 00001652: DUP3 00001653: MLOAD 00001654: AND 00001655: DUP2 00001656: DUP5 00001657: MLOAD 00001658: AND 00001659: DUP1 0000165a: DUP3 0000165b: OR 0000165c: DUP6 0000165d: MSTORE 0000165e: POP 0000165f: POP 00001660: POP 00001661: POP 00001662: POP 00001663: POP 00001664: SWAP1 00001665: POP 00001666: ADD 00001667: SWAP2 00001668: POP 00001669: POP 0000166a: PUSH1 0x00 0000166c: PUSH1 0x40 0000166e: MLOAD 0000166f: DUP1 00001670: DUP4 00001671: SUB 00001672: DUP2 00001673: PUSH1 0x00 00001675: DUP7 00001676: GAS 00001677: CALL 00001678: SWAP2 00001679: POP 0000167a: POP 0000167b: RETURNDATASIZE 0000167c: DUP1 0000167d: PUSH1 0x00 0000167f: DUP2 00001680: EQ 00001681: PUSH2 0x16a6 00001684: JUMPI 00001685: PUSH1 0x40 00001687: MLOAD 00001688: SWAP2 00001689: POP 0000168a: PUSH1 0x1f 0000168c: NOT 0000168d: PUSH1 0x3f 0000168f: RETURNDATASIZE 00001690: ADD 00001691: AND 00001692: DUP3 00001693: ADD 00001694: PUSH1 0x40 00001696: MSTORE 00001697: RETURNDATASIZE 00001698: DUP3 00001699: MSTORE 0000169a: RETURNDATASIZE 0000169b: PUSH1 0x00 0000169d: PUSH1 0x20 0000169f: DUP5 000016a0: ADD 000016a1: RETURNDATACOPY 000016a2: PUSH2 0x16ab 000016a5: JUMP 000016a6: JUMPDEST 000016a7: PUSH1 0x60 000016a9: SWAP2 000016aa: POP 000016ab: JUMPDEST 000016ac: POP 000016ad: SWAP2 000016ae: POP 000016af: SWAP2 000016b0: POP 000016b1: DUP2 000016b2: PUSH2 0x171c 000016b5: JUMPI 000016b6: PUSH1 0x40 000016b8: DUP1 000016b9: MLOAD 000016ba: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000016db: DUP2 000016dc: MSTORE 000016dd: PUSH1 0x20 000016df: PUSH1 0x04 000016e1: DUP3 000016e2: ADD 000016e3: DUP2 000016e4: SWAP1 000016e5: MSTORE 000016e6: PUSH1 0x24 000016e8: DUP3 000016e9: ADD 000016ea: MSTORE 000016eb: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 0000170c: PUSH1 0x44 0000170e: DUP3 0000170f: ADD 00001710: MSTORE 00001711: SWAP1 00001712: MLOAD 00001713: SWAP1 00001714: DUP2 00001715: SWAP1 00001716: SUB 00001717: PUSH1 0x64 00001719: ADD 0000171a: SWAP1 0000171b: REVERT 0000171c: JUMPDEST 0000171d: DUP1 0000171e: MLOAD 0000171f: ISZERO 00001720: PUSH2 0x0996 00001723: JUMPI 00001724: DUP1 00001725: DUP1 00001726: PUSH1 0x20 00001728: ADD 00001729: SWAP1 0000172a: MLOAD 0000172b: PUSH1 0x20 0000172d: DUP2 0000172e: LT 0000172f: ISZERO 00001730: PUSH2 0x1738 00001733: JUMPI 00001734: PUSH1 0x00 00001736: DUP1 00001737: REVERT 00001738: JUMPDEST 00001739: POP 0000173a: MLOAD 0000173b: PUSH2 0x0996 0000173e: JUMPI 0000173f: PUSH1 0x40 00001741: MLOAD 00001742: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001763: DUP2 00001764: MSTORE 00001765: PUSH1 0x04 00001767: ADD 00001768: DUP1 00001769: DUP1 0000176a: PUSH1 0x20 0000176c: ADD 0000176d: DUP3 0000176e: DUP2 0000176f: SUB 00001770: DUP3 00001771: MSTORE 00001772: PUSH1 0x2a 00001774: DUP2 00001775: MSTORE 00001776: PUSH1 0x20 00001778: ADD 00001779: DUP1 0000177a: PUSH2 0x18c9 0000177d: PUSH1 0x2a 0000177f: SWAP2 00001780: CODECOPY 00001781: PUSH1 0x40 00001783: ADD 00001784: SWAP2 00001785: POP 00001786: POP 00001787: PUSH1 0x40 00001789: MLOAD 0000178a: DUP1 0000178b: SWAP2 0000178c: SUB 0000178d: SWAP1 0000178e: REVERT 0000178f: JUMPDEST 00001790: PUSH1 0x40 00001792: DUP1 00001793: MLOAD 00001794: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017a9: DUP6 000017aa: DUP2 000017ab: AND 000017ac: PUSH1 0x24 000017ae: DUP4 000017af: ADD 000017b0: MSTORE 000017b1: DUP5 000017b2: AND 000017b3: PUSH1 0x44 000017b5: DUP3 000017b6: ADD 000017b7: MSTORE 000017b8: PUSH1 0x64 000017ba: DUP1 000017bb: DUP3 000017bc: ADD 000017bd: DUP5 000017be: SWAP1 000017bf: MSTORE 000017c0: DUP3 000017c1: MLOAD 000017c2: DUP1 000017c3: DUP4 000017c4: SUB 000017c5: SWAP1 000017c6: SWAP2 000017c7: ADD 000017c8: DUP2 000017c9: MSTORE 000017ca: PUSH1 0x84 000017cc: SWAP1 000017cd: SWAP2 000017ce: ADD 000017cf: SWAP1 000017d0: SWAP2 000017d1: MSTORE 000017d2: PUSH1 0x20 000017d4: DUP2 000017d5: ADD 000017d6: DUP1 000017d7: MLOAD 000017d8: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000017f5: AND 000017f6: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00001817: OR 00001818: SWAP1 00001819: MSTORE 0000181a: PUSH2 0x0996 0000181d: SWAP1 0000181e: DUP6 0000181f: SWAP1 00001820: PUSH2 0x1551 00001823: JUMP 00001824: JUMPDEST 00001825: PUSH1 0x00 00001827: DUP2 00001828: EXTCODEHASH 00001829: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 0000184a: DUP2 0000184b: ISZERO 0000184c: DUP1 0000184d: ISZERO 0000184e: SWAP1 0000184f: PUSH2 0x1858 00001852: JUMPI 00001853: POP 00001854: DUP1 00001855: DUP3 00001856: EQ 00001857: ISZERO 00001858: JUMPDEST 00001859: SWAP5 0000185a: SWAP4 0000185b: POP 0000185c: POP 0000185d: POP 0000185e: POP 0000185f: JUMP 00001860: INVALID 00001861: UNKNOWN(0x4F) 00001862: PUSH24 0x6e61626c653a206e6577206f776e65722069732074686520 0000187b: PUSH27 0x65726f2061646472657373536166654d6174683a206d756c746970 00001897: PUSH13 0x69636174696f6e206f76657266 000018a5: PUSH13 0x6f7743616c6c6572206973206e 000018b3: PUSH16 0x74207265776172642064697374726962 000018c4: PUSH22 0x74696f6e5361666545524332303a204552433230206f 000018db: PUSH17 0x65726174696f6e20646964206e6f742073 000018ed: PUSH22 0x6363656564a265627a7a7231582097fff6722e633ff6 00001904: UNKNOWN(0xA5) 00001905: UNKNOWN(0x0C) 00001906: CLZ 00001907: UNKNOWN(0xCD) 00001908: UNKNOWN(0x4F) 00001909: NOT 0000190a: MUL 0000190b: STOP 0000190c: PUSH30
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7
call_targets:
0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0"
],
"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": "0xe9fad8ee",
"selector": "0xe9fad8ee",
"calldata_variants": [
"0xe9fad8ee",
"0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebe2b12b",
"selector": "0xebe2b12b",
"calldata_variants": [
"0xebe2b12b",
"0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc965d52",
"selector": "0xfc965d52",
"calldata_variants": [
"0xfc965d52",
"0xfc965d520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8f33c91",
"selector": "0xc8f33c91",
"calldata_variants": [
"0xc8f33c91",
"0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd3daf9d",
"selector": "0xcd3daf9d",
"calldata_variants": [
"0xcd3daf9d",
"0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf136d65",
"selector": "0xdf136d65",
"calldata_variants": [
"0xdf136d65",
"0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2834,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5751,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7
call_targets:
0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0"
],
"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": "0xe9fad8ee",
"selector": "0xe9fad8ee",
"calldata_variants": [
"0xe9fad8ee",
"0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebe2b12b",
"selector": "0xebe2b12b",
"calldata_variants": [
"0xebe2b12b",
"0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc965d52",
"selector": "0xfc965d52",
"calldata_variants": [
"0xfc965d52",
"0xfc965d520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8f33c91",
"selector": "0xc8f33c91",
"calldata_variants": [
"0xc8f33c91",
"0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd3daf9d",
"selector": "0xcd3daf9d",
"calldata_variants": [
"0xcd3daf9d",
"0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf136d65",
"selector": "0xdf136d65",
"calldata_variants": [
"0xdf136d65",
"0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2834,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5751,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|
| medium | reentrancy | slither | Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "exit",
"type": "function",
"source_mapping": {
"lines": [
673,
674,
675,
676
],
"start": 24803,
"length": 94,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GRAPETHPool",
"type": "contract",
"source_mapping": {
"lines": [
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715
],
"start": 22285,
"length": 4006,
"ending_column": 0,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "exit()"
}
},
{
"name": "withdraw(balanceOf(msg.sender))",
"type": "node",
"source_mapping": {
"lines": [
674
],
"start": 24838,
"length": 31,
"ending_column": 40,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "exit",
"type": "function",
"source_mapping": {
"lines": [
673,
674,
675,
676
],
"start": 24803,
"length": 94,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GRAPETHPool",
"type": "contract",
"source_mapping": {
"lines": [
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715
],
"start": 22285,
"length": 4006,
"ending_column": 0,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "exit()"
}
}
}
},
{
"name": "weth.safeTransfer(msg.sender,amount)",
"type": "node",
"source_mapping": {
"lines": [
598
],
"start": 22237,
"length": 37,
"ending_column": 46,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "withdraw",
"type": "function",
"source_mapping": {
"lines": [
595,
596,
597,
598,
599
],
"start": 22070,
"length": 211,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LPTokenWrapper",
"type": "contract",
"source_mapping": {
"lines": [
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600
],
"start": 21369,
"length": 914,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "withdraw(uint256)"
}
}
}
},
{
"name": "(success,returndata) = address(token).call(data)",
"type": "node",
"source_mapping": {
"lines": [
538
],
"start": 20366,
"length": 67,
"ending_column": 76,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "callOptionalReturn",
"type": "function",
"source_mapping": {
"lines": [
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545
],
"start": 19638,
"length": 1095,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "SafeERC20",
"type": "contract",
"source_mapping": {
"lines": [
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546
],
"start": 17546,
"length": 3189,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "callOptionalReturn(IERC20,bytes)"
}
}
}
},
{
"name": "getReward()",
"type": "node",
"source_mapping": {
"lines": [
675
],
"start": 24879,
"length": 11,
"ending_column": 20,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "exit",
"type": "function",
"source_mapping": {
"lines": [
673,
674,
675,
676
],
"start": 24803,
"length": 94,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "GRAPETHPool",
"type": "contract",
"source_mapping": {
"lines": [
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715
],
"start": 22285,
"length": 4006,
"ending_column": 0,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "exit()"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "exit",
"type": "function",
"lines": [
673,
674,
675,
676
]
},
{
"file": "contracts/Contract.sol",
"name": "withdraw(balanceOf(msg.sender))",
"type": "node",
"lines": [
674
]
},
{
"file": "contracts/Contract.sol",
"name": "weth.safeTransfer(msg.sender,amount)",
"type": "node",
"lines": [
598
]
},
{
"file": "contracts/Contract.sol",
"name": "(success,returndata) = address(token).call(data)",
"type": "node",
"lines": [
538
]
},
{
"file": "contracts/Contract.sol",
"name": "getReward()",
"type": "node",
"lines": [
675
]
},
{
"file": "contracts/Contract.sol",
"name": "(success,returndata) = address(token).call(data)",
"type": "node",
"lines": [
538
]
},
{
"file": "contracts/Contract.sol",
"name": "scalingFactor = GRAP(address(grap)).grapsScalingFactor()",
"type": "node",
"lines": [
682
]
},
{
"file": "contracts/Contract.sol",
"name": "grap.safeTransfer(msg.sender,trueReward)",
"type": "node",
"lines": [
684
]
},
{
"file": "contracts/Contract.sol",
"name": "getReward()",
"type": "node",
"lines": [
675
]
},
{
"file": "contracts/Contract.sol",
"name": "lastUpdateTime = lastTimeRewardApplicable()",
"type": "node",
"lines": [
626
]
},
{
"file": "contracts/Contract.sol",
"name": "getReward()",
"type": "node",
"lines": [
675
]
},
{
"file": "contracts/Contract.sol",
"name": "rewardPerTokenStored = rewardPerToken()",
"type": "node",
"lines": [
625
]
},
{
"file": "contracts/Contract.sol",
"name": "getReward()",
"type": "node",
"lines": [
675
]
},
{
"file": "contracts/Contract.sol",
"name": "rewards[msg.sender] = 0",
"type": "node",
"lines": [
681
]
},
{
"file": "contracts/Contract.sol",
"name": "rewards[account] = earned(account)",
"type": "node",
"lines": [
628
]
},
{
"file": "contracts/Contract.sol",
"name": "getReward()",
"type": "node",
"lines": [
675
]
},
{
"file": "contracts/Contract.sol",
"name": "userRewardPerTokenPaid[account] = rewardPerTokenStored",
"type": "node",
"lines": [
629
]
}
],
"description": "Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676):\n\tExternal calls:\n\t- withdraw(balanceOf(msg.sender)) (contracts/Contract.sol#674)\n\t\t- weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598)\n\t\t- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)\n\t\t- scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682)\n\t\t- grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684)\n\tState variables written after the call(s):\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- lastUpdateTime = lastTimeRewardApplicable() (contracts/Contract.sol#626)\n\tGRAPETHPool.lastUpdateTime (contracts/Contract.sol#609) can be used in cross function reentrancies:\n\t- GRAPETHPool.lastUpdateTime (contracts/Contract.sol#609)\n\t- GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713)\n\t- GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- rewardPerTokenStored = rewardPerToken() (contracts/Contract.sol#625)\n\tGRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610) can be used in cross function reentrancies:\n\t- GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650)\n\t- GRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- rewards[msg.sender] = 0 (contracts/Contract.sol#681)\n\t\t- rewards[account] = earned(account) (contracts/Contract.sol#628)\n\tGRAPETHPool.rewards (contracts/Contract.sol#612) can be used in cross function reentrancies:\n\t- GRAPETHPool.earned(address) (contracts/Contract.sol#652-658)\n\t- GRAPETHPool.getReward() (contracts/Contract.sol#678-687)\n\t- GRAPETHPool.rewards (contracts/Contract.sol#612)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- userRewardPerTokenPaid[account] = rewardPerTokenStored (contracts/Contract.sol#629)\n\tGRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611) can be used in cross function reentrancies:\n\t- GRAPETHPool.earned(address) (contracts/Contract.sol#652-658)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- GRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611)"
}
|