3096f960-d0e1-4fed-a9c7-9aaf7caafa47
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 |
|---|---|---|---|---|
| 31782 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 96115 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 96116 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 96117 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 96118 | capability.graph | complete | 1 / 3 | 1 week ago |
| 96119 | detector.run | complete | 1 / 3 | 1 week ago |
| 96120 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113793 | tool.slither | complete | 1 / 2 | 1 week ago |
'forge clean' running (wd: /tmp/slither-4omqyvxs) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-4omqyvxs) tokenProxy.deposit(uint256,bool) (contracts/Contract.sol#419-428) uses delegatecall to a input-controlled function id - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#426-427) tokenProxy.withdraw(uint256,bool) (contracts/Contract.sol#435-443) uses delegatecall to a input-controlled function id - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#442) tokenProxy.borrow(uint256,bool) (contracts/Contract.sol#451-459) uses delegatecall to a input-controlled function id - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#458) tokenProxy.repay(uint256,bool) (contracts/Contract.sol#466-475) uses delegatecall to a input-controlled function id - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#471-474) tokenProxy.handlerProxy(bytes) (contracts/Contract.sol#479-485) uses delegatecall to a input-controlled function id - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#483) tokenProxy.handlerViewProxy(bytes) (contracts/Contract.sol#493-500) uses delegatecall to a input-controlled function id - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#497-498) tokenProxy.siProxy(bytes) (contracts/Contract.sol#506-513) uses delegatecall to a input-controlled function id - (result,returnData) = SI.delegatecall(data) (contracts/Contract.sol#509-511) tokenProxy.siViewProxy(bytes) (contracts/Contract.sol#521-528) uses delegatecall to a input-controlled function id - (result,returnData) = SI.delegatecall(data) (contracts/Contract.sol#523-526) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall IERC20 (contracts/Contract.sol#163-175) has incorrect ERC20 function interface:IERC20.transfer(address,uint256) (contracts/Contract.sol#169-172) IERC20 (contracts/Contract.sol#163-175) has incorrect ERC20 function interface:IERC20.transferFrom(address,address,uint256) (contracts/Contract.sol#175) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface tokenProxy.ownershipTransfer(address) (contracts/Contract.sol#309-316) should emit an event for: - owner = address(uint160(_owner)) (contracts/Contract.sol#314) - owner = address(uint160(_owner)) (contracts/Contract.sol#314) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control tokenProxy.initialize(uint256,address,address,address,address,address,string,address,address) (contracts/Contract.sol#337-347) should emit an event for: - handlerID = _handlerID (contracts/Contract.sol#341) tokenProxy.setHandlerID(uint256) (contracts/Contract.sol#349-351) should emit an event for: - handlerID = _handlerID (contracts/Contract.sol#350-351) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic tokenProxy.ownershipTransfer(address)._owner (contracts/Contract.sol#309-310) lacks a zero-check on : - owner = address(uint160(_owner)) (contracts/Contract.sol#314) tokenProxy.initialize(uint256,address,address,address,address,address,string,address,address).handlerAddr (contracts/Contract.sol#337-338) lacks a zero-check on : - handler = handlerAddr (contracts/Contract.sol#341) tokenProxy.initialize(uint256,address,address,address,address,address,string,address,address).siHandlerAddr (contracts/Contract.sol#340) lacks a zero-check on : - SI = siHandlerAddr (contracts/Contract.sol#343-345) tokenProxy.setHandlerAddr(address).handlerAddr (contracts/Contract.sol#358) lacks a zero-check on : - handler = handlerAddr (contracts/Contract.sol#359-360) tokenProxy.setSiHandlerAddr(address).siHandlerAddr (contracts/Contract.sol#369-370) lacks a zero-check on : - SI = siHandlerAddr (contracts/Contract.sol#372) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation Version constraint 0.6.12 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - DataLocationChangeInInternalOverride - NestedCalldataArrayAbiReencodingSizeValidation - SignedImmutables - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching - EmptyByteArrayCopy - DynamicArrayCleanup. It is used by: - 0.6.12 (contracts/Contract.sol#2-3) - 0.6.12 (contracts/Contract.sol#55) - 0.6.12 (contracts/Contract.sol#65) - 0.6.12 (contracts/Contract.sol#163) - 0.6.12 (contracts/Contract.sol#176) - 0.6.12 (contracts/Contract.sol#195) - 0.6.12 (contracts/Contract.sol#249) solc-0.6.12 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 tokenProxy.deposit(uint256,bool) (contracts/Contract.sol#419-428): - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#426-427) Low level call in tokenProxy.withdraw(uint256,bool) (contracts/Contract.sol#435-443): - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#442) Low level call in tokenProxy.borrow(uint256,bool) (contracts/Contract.sol#451-459): - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#458) Low level call in tokenProxy.repay(uint256,bool) (contracts/Contract.sol#466-475): - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#471-474) Low level call in tokenProxy.handlerProxy(bytes) (contracts/Contract.sol#479-485): - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#483) Low level call in tokenProxy.handlerViewProxy(bytes) (contracts/Contract.sol#493-500): - (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#497-498) Low level call in tokenProxy.siProxy(bytes) (contracts/Contract.sol#506-513): - (result,returnData) = SI.delegatecall(data) (contracts/Contract.sol#509-511) Low level call in tokenProxy.siViewProxy(bytes) (contracts/Contract.sol#521-528): - (result,returnData) = SI.delegatecall(data) (contracts/Contract.sol#523-526) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls Contract marketManagerInterface (contracts/Contract.sol#3-52) is not in CapWords Contract interestModelInterface (contracts/Contract.sol#55-62) is not in CapWords Contract marketHandlerDataStorageInterface (contracts/Contract.sol#65-161) is not in CapWords Contract marketSIHandlerDataStorageInterface (contracts/Contract.sol#177-195) is not in CapWords Contract tokenProxy (contracts/Contract.sol#255-528) is not in CapWords Parameter tokenProxy.ownershipTransfer(address)._owner (contracts/Contract.sol#309-310) is not in mixedCase Parameter tokenProxy.initialize(uint256,address,address,address,address,address,string,address,address)._handlerID (contracts/Contract.sol#337) is not in mixedCase Parameter tokenProxy.initialize(uint256,address,address,address,address,address,string,address,address)._tokenName (contracts/Contract.sol#339-340) is not in mixedCase Parameter tokenProxy.initialize(uint256,address,address,address,address,address,string,address,address).SIHandlerDataStorageAddr (contracts/Contract.sol#340) is not in mixedCase Parameter tokenProxy.setHandlerID(uint256)._handlerID (contracts/Contract.sol#349) is not in mixedCase Constant tokenProxy.unifiedPoint (contracts/Contract.sol#260-263) is not in UPPER_CASE_WITH_UNDERSCORES Variable tokenProxy.SIHandlerDataStorage (contracts/Contract.sol#272-276) is not in mixedCase Variable tokenProxy.SI (contracts/Contract.sol#278) is not in mixedCase Variable tokenProxy.DEPOSIT (contracts/Contract.sol#278-280) is not in mixedCase Variable tokenProxy.REDEEM (contracts/Contract.sol#281-282) is not in mixedCase Variable tokenProxy.BORROW (contracts/Contract.sol#282-284) is not in mixedCase Variable tokenProxy.REPAY (contracts/Contract.sol#284-286) is not in mixedCase Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions Modifier.CIRCUIT_BREAKER (contracts/Contract.sol#198-201) is never used in tokenProxy (contracts/Contract.sol#255-528) tokenProxy.unifiedPoint (contracts/Contract.sol#260-263) is never used in tokenProxy (contracts/Contract.sol#255-528) tokenProxy.unifiedTokenDecimal (contracts/Contract.sol#263-264) is never used in tokenProxy (contracts/Contract.sol#255-528) tokenProxy.underlyingTokenDecimal (contracts/Contract.sol#264) is never used in tokenProxy (contracts/Contract.sol#255-528) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable tokenProxy.BORROW (contracts/Contract.sol#282-284) should be constant tokenProxy.DEPOSIT (contracts/Contract.sol#278-280) should be constant tokenProxy.REDEEM (contracts/Contract.sol#281-282) should be constant tokenProxy.REPAY (contracts/Contract.sol#284-286) should be constant tokenProxy.underlyingTokenDecimal (contracts/Contract.sol#264) should be constant tokenProxy.unifiedTokenDecimal (contracts/Contract.sol#263-264) should be constant Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant . analyzed (18 contracts with 100 detectors), 55 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.6.12",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.6.12",
"install_stderr": null,
"install_stdout": "Version '0.6.12' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-4omqyvxs --allow-paths /tmp/slither-4omqyvxs,/tmp/slither-4omqyvxs/lib,/tmp/slither-4omqyvxs/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 55,
"workspace_hash": "c192ccdb020e6ec56e642efd2b31419940d9ed32b9266c02cdda08a53f2b8578",
"duration_seconds": 0.5617504119873047,
"solc_version_requested": "0.6.12"
}
[codex:532733] OpenAI Codex v0.77.0 (research preview)
[codex:532733] --------
[codex:532733] workdir: /tmp/codex-multi-ce48allb
[codex:532733] model: gpt-5.2-codex
[codex:532733] provider: openai
[codex:532733] approval: never
[codex:532733] sandbox: read-only
[codex:532733] reasoning effort: xhigh
[codex:532733] reasoning summaries: auto
[codex:532733] session id: 019b9017-b612-7783-b546-9483f8d62100
[codex:532733] --------
[codex:532733] user
[codex:532733] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:532733]
[codex:532733] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:532733]
[codex:532733] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:532733] - Gas inefficiency, code quality, naming, or best practices
[codex:532733] - Theoretical vulnerabilities without a clear extraction path
[codex:532733] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:532733] - Front-running unless it enables theft beyond MEV
[codex:532733] - DoS, griefing, or issues that don't result in attacker profit
[codex:532733] - Missing events, view function issues, or informational findings
[codex:532733]
[codex:532733] HIGH-VALUE PATTERNS TO HUNT:
[codex:532733] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:532733] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:532733] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:532733] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:532733] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:532733] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:532733] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:532733] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:532733] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:532733]
[codex:532733] For each finding, you MUST provide:
[codex:532733] 1. Exact file and line numbers of vulnerable code
[codex:532733] 2. Step-by-step exploit transaction sequence
[codex:532733] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:532733]
[codex:532733] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:532733]
[codex:532733] Output MUST be valid JSON matching the provided schema.
[codex:532733] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:532733] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:532733] mcp startup: no servers
[codex:532733]
[codex:532733] thinking
[codex:532733] **Preparing to search AGENTS and skills files**
[codex:532733] exec
[codex:532733] /bin/bash -lc ls in /tmp/codex-multi-ce48allb succeeded in 5ms:
[codex:532733] AUDIT_BUNDLE.txt
[codex:532733] codex-output-schema.json
[codex:532733] contracts
[codex:532733]
[codex:532733] thinking
[codex:532733] **Reading AUDIT_BUNDLE.txt**
[codex:532733] exec
[codex:532733] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-ce48allb succeeded in 6ms:
[codex:532733] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:532733]
[codex:532733] ================================================================================
[codex:532733] FILE: contracts/Contract.sol
[codex:532733] ================================================================================
[codex:532733] // File: contracts/interfaces/marketManagerInterface.sol
[codex:532733]
[codex:532733] pragma solidity 0.6.12;
[codex:532733]
[codex:532733] interface marketManagerInterface {
[codex:532733] function setBreakerTable(address _target, bool _status) external returns (bool);
[codex:532733]
[codex:532733] function getCircuitBreaker() external view returns (bool);
[codex:532733] function setCircuitBreaker(bool _emergency) external returns (bool);
[codex:532733]
[codex:532733] function getTokenHandlerInfo(uint256 handlerID) external view returns (bool, address, string memory);
[codex:532733]
[codex:532733] function handlerRegister(uint256 handlerID, address tokenHandlerAddr) external returns (bool);
[codex:532733]
[codex:532733] function applyInterestHandlers(address payable userAddr, uint256 callerID, bool allFlag) external returns (uint256, uint256, uint256, uint256, uint256, uint256);
[codex:532733]
[codex:532733] thinking
[codex:532733] **Assessing proxy delegatecall risks**
[codex:532733] codex
[codex:532733] {"no_findings":true,"summary":"Reviewed AUDIT_BUNDLE.txt; no concrete exploitable profit path found in provided sources.","findings":[]}
[codex:532733] tokens used
[codex:532733] 11,102
[codex:532733] {"no_findings":true,"summary":"Reviewed AUDIT_BUNDLE.txt; no concrete exploitable profit path found in provided sources.","findings":[]}
{
"codex": {
"ran_at": "2026-01-05T21:37:49.508990+00:00",
"returncode": 0
},
"summary": "Reviewed AUDIT_BUNDLE.txt; no concrete exploitable profit path found in provided sources.",
"raw_final": {
"summary": "Reviewed AUDIT_BUNDLE.txt; no concrete exploitable profit path found in provided sources.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0114 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x829311cc 00000019: GT 0000001a: PUSH2 0x00a0 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xba0b3623 00000024: GT 00000025: PUSH2 0x0064 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xba0b3623 0000002f: EQ 00000030: PUSH2 0x067a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xc0a47d45 0000003a: EQ 0000003b: PUSH2 0x069f 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xc80916d4 00000045: EQ 00000046: PUSH2 0x06b4 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xd3a417a2 00000050: EQ 00000051: PUSH2 0x06c9 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xff41073a 0000005b: EQ 0000005c: PUSH2 0x06fc 0000005f: JUMPI 00000060: PUSH2 0x0114 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x829311cc 0000006b: EQ 0000006c: PUSH2 0x05b1 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x8cd01307 00000076: EQ 00000077: PUSH2 0x05c6 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x9a408321 00000081: EQ 00000082: PUSH2 0x05f8 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xadc49556 0000008c: EQ 0000008d: PUSH2 0x061d 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xb6fd0070 00000097: EQ 00000098: PUSH2 0x0650 0000009b: JUMPI 0000009c: PUSH2 0x0114 0000009f: JUMP 000000a0: JUMPDEST 000000a1: DUP1 000000a2: PUSH4 0x43b5eabe 000000a7: GT 000000a8: PUSH2 0x00e7 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x43b5eabe 000000b2: EQ 000000b3: PUSH2 0x0373 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x478a4251 000000bd: EQ 000000be: PUSH2 0x0424 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x575979c5 000000c8: EQ 000000c9: PUSH2 0x0457 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0x685e2486 000000d3: EQ 000000d4: PUSH2 0x047e 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0x7ad23b7f 000000de: EQ 000000df: PUSH2 0x04b1 000000e2: JUMPI 000000e3: PUSH2 0x0114 000000e6: JUMP 000000e7: JUMPDEST 000000e8: DUP1 000000e9: PUSH4 0x0e76d128 000000ee: EQ 000000ef: PUSH2 0x0119 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x1e157ad1 000000f9: EQ 000000fa: PUSH2 0x024b 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x1f426b1d 00000104: EQ 00000105: PUSH2 0x027c 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0x38d07436 0000010f: EQ 00000110: PUSH2 0x032d 00000113: JUMPI 00000114: JUMPDEST 00000115: PUSH1 0x00 00000117: DUP1 00000118: REVERT 00000119: JUMPDEST 0000011a: CALLVALUE 0000011b: DUP1 0000011c: ISZERO 0000011d: PUSH2 0x0125 00000120: JUMPI 00000121: PUSH1 0x00 00000123: DUP1 00000124: REVERT 00000125: JUMPDEST 00000126: POP 00000127: PUSH2 0x01ca 0000012a: PUSH1 0x04 0000012c: DUP1 0000012d: CALLDATASIZE 0000012e: SUB 0000012f: PUSH1 0x20 00000131: DUP2 00000132: LT 00000133: ISZERO 00000134: PUSH2 0x013c 00000137: JUMPI 00000138: PUSH1 0x00 0000013a: DUP1 0000013b: REVERT 0000013c: JUMPDEST 0000013d: DUP2 0000013e: ADD 0000013f: SWAP1 00000140: PUSH1 0x20 00000142: DUP2 00000143: ADD 00000144: DUP2 00000145: CALLDATALOAD 00000146: PUSH1 0x01 00000148: PUSH1 0x20 0000014a: SHL 0000014b: DUP2 0000014c: GT 0000014d: ISZERO 0000014e: PUSH2 0x0156 00000151: JUMPI 00000152: PUSH1 0x00 00000154: DUP1 00000155: REVERT 00000156: JUMPDEST 00000157: DUP3 00000158: ADD 00000159: DUP4 0000015a: PUSH1 0x20 0000015c: DUP3 0000015d: ADD 0000015e: GT 0000015f: ISZERO 00000160: PUSH2 0x0168 00000163: JUMPI 00000164: PUSH1 0x00 00000166: DUP1 00000167: REVERT 00000168: JUMPDEST 00000169: DUP1 0000016a: CALLDATALOAD 0000016b: SWAP1 0000016c: PUSH1 0x20 0000016e: ADD 0000016f: SWAP2 00000170: DUP5 00000171: PUSH1 0x01 00000173: DUP4 00000174: MUL 00000175: DUP5 00000176: ADD 00000177: GT 00000178: PUSH1 0x01 0000017a: PUSH1 0x20 0000017c: SHL 0000017d: DUP4 0000017e: GT 0000017f: OR 00000180: ISZERO 00000181: PUSH2 0x0189 00000184: JUMPI 00000185: PUSH1 0x00 00000187: DUP1 00000188: REVERT 00000189: JUMPDEST 0000018a: SWAP2 0000018b: SWAP1 0000018c: DUP1 0000018d: DUP1 0000018e: PUSH1 0x1f 00000190: ADD 00000191: PUSH1 0x20 00000193: DUP1 00000194: SWAP2 00000195: DIV 00000196: MUL 00000197: PUSH1 0x20 00000199: ADD 0000019a: PUSH1 0x40 0000019c: MLOAD 0000019d: SWAP1 0000019e: DUP2 0000019f: ADD 000001a0: PUSH1 0x40 000001a2: MSTORE 000001a3: DUP1 000001a4: SWAP4 000001a5: SWAP3 000001a6: SWAP2 000001a7: SWAP1 000001a8: DUP2 000001a9: DUP2 000001aa: MSTORE 000001ab: PUSH1 0x20 000001ad: ADD 000001ae: DUP4 000001af: DUP4 000001b0: DUP1 000001b1: DUP3 000001b2: DUP5 000001b3: CALLDATACOPY 000001b4: PUSH1 0x00 000001b6: SWAP3 000001b7: ADD 000001b8: SWAP2 000001b9: SWAP1 000001ba: SWAP2 000001bb: MSTORE 000001bc: POP 000001bd: SWAP3 000001be: SWAP6 000001bf: POP 000001c0: PUSH2 0x07ad 000001c3: SWAP5 000001c4: POP 000001c5: POP 000001c6: POP 000001c7: POP 000001c8: POP 000001c9: JUMP 000001ca: JUMPDEST 000001cb: PUSH1 0x40 000001cd: MLOAD 000001ce: DUP1 000001cf: DUP4 000001d0: ISZERO 000001d1: ISZERO 000001d2: DUP2 000001d3: MSTORE 000001d4: PUSH1 0x20 000001d6: ADD 000001d7: DUP1 000001d8: PUSH1 0x20 000001da: ADD 000001db: DUP3 000001dc: DUP2 000001dd: SUB 000001de: DUP3 000001df: MSTORE 000001e0: DUP4 000001e1: DUP2 000001e2: DUP2 000001e3: MLOAD 000001e4: DUP2 000001e5: MSTORE 000001e6: PUSH1 0x20 000001e8: ADD 000001e9: SWAP2 000001ea: POP 000001eb: DUP1 000001ec: MLOAD 000001ed: SWAP1 000001ee: PUSH1 0x20 000001f0: ADD 000001f1: SWAP1 000001f2: DUP1 000001f3: DUP4 000001f4: DUP4 000001f5: PUSH1 0x00 000001f7: JUMPDEST 000001f8: DUP4 000001f9: DUP2 000001fa: LT 000001fb: ISZERO 000001fc: PUSH2 0x020f 000001ff: JUMPI 00000200: DUP2 00000201: DUP2 00000202: ADD 00000203: MLOAD 00000204: DUP4 00000205: DUP3 00000206: ADD 00000207: MSTORE 00000208: PUSH1 0x20 0000020a: ADD 0000020b: PUSH2 0x01f7 0000020e: JUMP 0000020f: JUMPDEST 00000210: POP 00000211: POP 00000212: POP 00000213: POP 00000214: SWAP1 00000215: POP 00000216: SWAP1 00000217: DUP2 00000218: ADD 00000219: SWAP1 0000021a: PUSH1 0x1f 0000021c: AND 0000021d: DUP1 0000021e: ISZERO 0000021f: PUSH2 0x023c 00000222: JUMPI 00000223: DUP1 00000224: DUP3 00000225: SUB 00000226: DUP1 00000227: MLOAD 00000228: PUSH1 0x01 0000022a: DUP4 0000022b: PUSH1 0x20 0000022d: SUB 0000022e: PUSH2 0x0100 00000231: EXP 00000232: SUB 00000233: NOT 00000234: AND 00000235: DUP2 00000236: MSTORE 00000237: PUSH1 0x20 00000239: ADD 0000023a: SWAP2 0000023b: POP 0000023c: JUMPDEST 0000023d: POP 0000023e: SWAP4 0000023f: POP 00000240: POP 00000241: POP 00000242: POP 00000243: PUSH1 0x40 00000245: MLOAD 00000246: DUP1 00000247: SWAP2 00000248: SUB 00000249: SWAP1 0000024a: RETURN 0000024b: JUMPDEST 0000024c: CALLVALUE 0000024d: DUP1 0000024e: ISZERO 0000024f: PUSH2 0x0257 00000252: JUMPI 00000253: PUSH1 0x00 00000255: DUP1 00000256: REVERT 00000257: JUMPDEST 00000258: POP 00000259: PUSH2 0x0260 0000025c: PUSH2 0x08f5 0000025f: JUMP 00000260: JUMPDEST 00000261: PUSH1 0x40 00000263: DUP1 00000264: MLOAD 00000265: PUSH1 0x01 00000267: PUSH1 0x01 00000269: PUSH1 0xa0 0000026b: SHL 0000026c: SUB 0000026d: SWAP1 0000026e: SWAP3 0000026f: AND 00000270: DUP3 00000271: MSTORE 00000272: MLOAD 00000273: SWAP1 00000274: DUP2 00000275: SWAP1 00000276: SUB 00000277: PUSH1 0x20 00000279: ADD 0000027a: SWAP1 0000027b: RETURN 0000027c: JUMPDEST 0000027d: CALLVALUE 0000027e: DUP1 0000027f: ISZERO 00000280: PUSH2 0x0288 00000283: JUMPI 00000284: PUSH1 0x00 00000286: DUP1 00000287: REVERT 00000288: JUMPDEST 00000289: POP 0000028a: PUSH2 0x01ca 0000028d: PUSH1 0x04 0000028f: DUP1 00000290: CALLDATASIZE 00000291: SUB 00000292: PUSH1 0x20 00000294: DUP2 00000295: LT 00000296: ISZERO 00000297: PUSH2 0x029f 0000029a: JUMPI 0000029b: PUSH1 0x00 0000029d: DUP1 0000029e: REVERT 0000029f: JUMPDEST 000002a0: DUP2 000002a1: ADD 000002a2: SWAP1 000002a3: PUSH1 0x20 000002a5: DUP2 000002a6: ADD 000002a7: DUP2 000002a8: CALLDATALOAD 000002a9: PUSH1 0x01 000002ab: PUSH1 0x20 000002ad: SHL 000002ae: DUP2 000002af: GT 000002b0: ISZERO 000002b1: PUSH2 0x02b9 000002b4: JUMPI 000002b5: PUSH1 0x00 000002b7: DUP1 000002b8: REVERT 000002b9: JUMPDEST 000002ba: DUP3 000002bb: ADD 000002bc: DUP4 000002bd: PUSH1 0x20 000002bf: DUP3 000002c0: ADD 000002c1: GT 000002c2: ISZERO 000002c3: PUSH2 0x02cb 000002c6: JUMPI 000002c7: PUSH1 0x00 000002c9: DUP1 000002ca: REVERT 000002cb: JUMPDEST 000002cc: DUP1 000002cd: CALLDATALOAD 000002ce: SWAP1 000002cf: PUSH1 0x20 000002d1: ADD 000002d2: SWAP2 000002d3: DUP5 000002d4: PUSH1 0x01 000002d6: DUP4 000002d7: MUL 000002d8: DUP5 000002d9: ADD 000002da: GT 000002db: PUSH1 0x01 000002dd: PUSH1 0x20 000002df: SHL 000002e0: DUP4 000002e1: GT 000002e2: OR 000002e3: ISZERO 000002e4: PUSH2 0x02ec 000002e7: JUMPI 000002e8: PUSH1 0x00 000002ea: DUP1 000002eb: REVERT 000002ec: JUMPDEST 000002ed: SWAP2 000002ee: SWAP1 000002ef: DUP1 000002f0: DUP1 000002f1: PUSH1 0x1f 000002f3: ADD 000002f4: PUSH1 0x20 000002f6: DUP1 000002f7: SWAP2 000002f8: DIV 000002f9: MUL 000002fa: PUSH1 0x20 000002fc: ADD 000002fd: PUSH1 0x40 000002ff: MLOAD 00000300: SWAP1 00000301: DUP2 00000302: ADD 00000303: PUSH1 0x40 00000305: MSTORE 00000306: DUP1 00000307: SWAP4 00000308: SWAP3 00000309: SWAP2 0000030a: SWAP1 0000030b: DUP2 0000030c: DUP2 0000030d: MSTORE 0000030e: PUSH1 0x20 00000310: ADD 00000311: DUP4 00000312: DUP4 00000313: DUP1 00000314: DUP3 00000315: DUP5 00000316: CALLDATACOPY 00000317: PUSH1 0x00 00000319: SWAP3 0000031a: ADD 0000031b: SWAP2 0000031c: SWAP1 0000031d: SWAP2 0000031e: MSTORE 0000031f: POP 00000320: SWAP3 00000321: SWAP6 00000322: POP 00000323: PUSH2 0x0904 00000326: SWAP5 00000327: POP 00000328: POP 00000329: POP 0000032a: POP 0000032b: POP 0000032c: JUMP 0000032d: JUMPDEST 0000032e: CALLVALUE 0000032f: DUP1 00000330: ISZERO 00000331: PUSH2 0x0339 00000334: JUMPI 00000335: PUSH1 0x00 00000337: DUP1 00000338: REVERT 00000339: JUMPDEST 0000033a: POP 0000033b: PUSH2 0x035f 0000033e: PUSH1 0x04 00000340: DUP1 00000341: CALLDATASIZE 00000342: SUB 00000343: PUSH1 0x40 00000345: DUP2 00000346: LT 00000347: ISZERO 00000348: PUSH2 0x0350 0000034b: JUMPI 0000034c: PUSH1 0x00 0000034e: DUP1 0000034f: REVERT 00000350: JUMPDEST 00000351: POP 00000352: DUP1 00000353: CALLDATALOAD 00000354: SWAP1 00000355: PUSH1 0x20 00000357: ADD 00000358: CALLDATALOAD 00000359: ISZERO 0000035a: ISZERO 0000035b: PUSH2 0x094b 0000035e: JUMP 0000035f: JUMPDEST 00000360: PUSH1 0x40 00000362: DUP1 00000363: MLOAD 00000364: SWAP2 00000365: ISZERO 00000366: ISZERO 00000367: DUP3 00000368: MSTORE 00000369: MLOAD 0000036a: SWAP1 0000036b: DUP2 0000036c: SWAP1 0000036d: SUB 0000036e: PUSH1 0x20 00000370: ADD 00000371: SWAP1 00000372: RETURN 00000373: JUMPDEST 00000374: CALLVALUE 00000375: DUP1 00000376: ISZERO 00000377: PUSH2 0x037f 0000037a: JUMPI 0000037b: PUSH1 0x00 0000037d: DUP1 0000037e: REVERT 0000037f: JUMPDEST 00000380: POP 00000381: PUSH2 0x01ca 00000384: PUSH1 0x04 00000386: DUP1 00000387: CALLDATASIZE 00000388: SUB 00000389: PUSH1 0x20 0000038b: DUP2 0000038c: LT 0000038d: ISZERO 0000038e: PUSH2 0x0396 00000391: JUMPI 00000392: PUSH1 0x00 00000394: DUP1 00000395: REVERT 00000396: JUMPDEST 00000397: DUP2 00000398: ADD 00000399: SWAP1 0000039a: PUSH1 0x20 0000039c: DUP2 0000039d: ADD 0000039e: DUP2 0000039f: CALLDATALOAD 000003a0: PUSH1 0x01 000003a2: PUSH1 0x20 000003a4: SHL 000003a5: DUP2 000003a6: GT 000003a7: ISZERO 000003a8: PUSH2 0x03b0 000003ab: JUMPI 000003ac: PUSH1 0x00 000003ae: DUP1 000003af: REVERT 000003b0: JUMPDEST 000003b1: DUP3 000003b2: ADD 000003b3: DUP4 000003b4: PUSH1 0x20 000003b6: DUP3 000003b7: ADD 000003b8: GT 000003b9: ISZERO 000003ba: PUSH2 0x03c2 000003bd: JUMPI 000003be: PUSH1 0x00 000003c0: DUP1 000003c1: REVERT 000003c2: JUMPDEST 000003c3: DUP1 000003c4: CALLDATALOAD 000003c5: SWAP1 000003c6: PUSH1 0x20 000003c8: ADD 000003c9: SWAP2 000003ca: DUP5 000003cb: PUSH1 0x01 000003cd: DUP4 000003ce: MUL 000003cf: DUP5 000003d0: ADD 000003d1: GT 000003d2: PUSH1 0x01 000003d4: PUSH1 0x20 000003d6: SHL 000003d7: DUP4 000003d8: GT 000003d9: OR 000003da: ISZERO 000003db: PUSH2 0x03e3 000003de: JUMPI 000003df: PUSH1 0x00 000003e1: DUP1 000003e2: REVERT 000003e3: JUMPDEST 000003e4: SWAP2 000003e5: SWAP1 000003e6: DUP1 000003e7: DUP1 000003e8: PUSH1 0x1f 000003ea: ADD 000003eb: PUSH1 0x20 000003ed: DUP1 000003ee: SWAP2 000003ef: DIV 000003f0: MUL 000003f1: PUSH1 0x20 000003f3: ADD 000003f4: PUSH1 0x40 000003f6: MLOAD 000003f7: SWAP1 000003f8: DUP2 000003f9: ADD 000003fa: PUSH1 0x40 000003fc: MSTORE 000003fd: DUP1 000003fe: SWAP4 000003ff: SWAP3 00000400: SWAP2 00000401: SWAP1 00000402: DUP2 00000403: DUP2 00000404: MSTORE 00000405: PUSH1 0x20 00000407: ADD 00000408: DUP4 00000409: DUP4 0000040a: DUP1 0000040b: DUP3 0000040c: DUP5 0000040d: CALLDATACOPY 0000040e: PUSH1 0x00 00000410: SWAP3 00000411: ADD 00000412: SWAP2 00000413: SWAP1 00000414: SWAP2 00000415: MSTORE 00000416: POP 00000417: SWAP3 00000418: SWAP6 00000419: POP 0000041a: PUSH2 0x0b0b 0000041d: SWAP5 0000041e: POP 0000041f: POP 00000420: POP 00000421: POP 00000422: POP 00000423: JUMP 00000424: JUMPDEST 00000425: CALLVALUE 00000426: DUP1 00000427: ISZERO 00000428: PUSH2 0x0430 0000042b: JUMPI 0000042c: PUSH1 0x00 0000042e: DUP1 0000042f: REVERT 00000430: JUMPDEST 00000431: POP 00000432: PUSH2 0x035f 00000435: PUSH1 0x04 00000437: DUP1 00000438: CALLDATASIZE 00000439: SUB 0000043a: PUSH1 0x20 0000043c: DUP2 0000043d: LT 0000043e: ISZERO 0000043f: PUSH2 0x0447 00000442: JUMPI 00000443: PUSH1 0x00 00000445: DUP1 00000446: REVERT 00000447: JUMPDEST 00000448: POP 00000449: CALLDATALOAD 0000044a: PUSH1 0x01 0000044c: PUSH1 0x01 0000044e: PUSH1 0xa0 00000450: SHL 00000451: SUB 00000452: AND 00000453: PUSH2 0x0cab 00000456: JUMP 00000457: JUMPDEST 00000458: CALLVALUE 00000459: DUP1 0000045a: ISZERO 0000045b: PUSH2 0x0463 0000045e: JUMPI 0000045f: PUSH1 0x00 00000461: DUP1 00000462: REVERT 00000463: JUMPDEST 00000464: POP 00000465: PUSH2 0x046c 00000468: PUSH2 0x0d44 0000046b: JUMP 0000046c: JUMPDEST 0000046d: PUSH1 0x40 0000046f: DUP1 00000470: MLOAD 00000471: SWAP2 00000472: DUP3 00000473: MSTORE 00000474: MLOAD 00000475: SWAP1 00000476: DUP2 00000477: SWAP1 00000478: SUB 00000479: PUSH1 0x20 0000047b: ADD 0000047c: SWAP1 0000047d: RETURN 0000047e: JUMPDEST 0000047f: CALLVALUE 00000480: DUP1 00000481: ISZERO 00000482: PUSH2 0x048a 00000485: JUMPI 00000486: PUSH1 0x00 00000488: DUP1 00000489: REVERT 0000048a: JUMPDEST 0000048b: POP 0000048c: PUSH2 0x035f 0000048f: PUSH1 0x04 00000491: DUP1 00000492: CALLDATASIZE 00000493: SUB 00000494: PUSH1 0x20 00000496: DUP2 00000497: LT 00000498: ISZERO 00000499: PUSH2 0x04a1 0000049c: JUMPI 0000049d: PUSH1 0x00 0000049f: DUP1 000004a0: REVERT 000004a1: JUMPDEST 000004a2: POP 000004a3: CALLDATALOAD 000004a4: PUSH1 0x01 000004a6: PUSH1 0x01 000004a8: PUSH1 0xa0 000004aa: SHL 000004ab: SUB 000004ac: AND 000004ad: PUSH2 0x0d4a 000004b0: JUMP 000004b1: JUMPDEST 000004b2: CALLVALUE 000004b3: DUP1 000004b4: ISZERO 000004b5: PUSH2 0x04bd 000004b8: JUMPI 000004b9: PUSH1 0x00 000004bb: DUP1 000004bc: REVERT 000004bd: JUMPDEST 000004be: POP 000004bf: PUSH2 0x035f 000004c2: PUSH1 0x04 000004c4: DUP1 000004c5: CALLDATASIZE 000004c6: SUB 000004c7: PUSH2 0x0120 000004ca: DUP2 000004cb: LT 000004cc: ISZERO 000004cd: PUSH2 0x04d5 000004d0: JUMPI 000004d1: PUSH1 0x00 000004d3: DUP1 000004d4: REVERT 000004d5: JUMPDEST 000004d6: DUP2 000004d7: CALLDATALOAD 000004d8: SWAP2 000004d9: PUSH1 0x01 000004db: PUSH1 0x01 000004dd: PUSH1 0xa0 000004df: SHL 000004e0: SUB 000004e1: PUSH1 0x20 000004e3: DUP3 000004e4: ADD 000004e5: CALLDATALOAD 000004e6: DUP2 000004e7: AND 000004e8: SWAP3 000004e9: PUSH1 0x40 000004eb: DUP4 000004ec: ADD 000004ed: CALLDATALOAD 000004ee: DUP3 000004ef: AND 000004f0: SWAP3 000004f1: PUSH1 0x60 000004f3: DUP2 000004f4: ADD 000004f5: CALLDATALOAD 000004f6: DUP4 000004f7: AND 000004f8: SWAP3 000004f9: PUSH1 0x80 000004fb: DUP3 000004fc: ADD 000004fd: CALLDATALOAD 000004fe: DUP2 000004ff: AND 00000500: SWAP3 00000501: PUSH1 0xa0 00000503: DUP4 00000504: ADD 00000505: CALLDATALOAD 00000506: SWAP1 00000507: SWAP2 00000508: AND 00000509: SWAP2 0000050a: SWAP1 0000050b: DUP2 0000050c: ADD 0000050d: SWAP1 0000050e: PUSH1 0xe0 00000510: DUP2 00000511: ADD 00000512: PUSH1 0xc0 00000514: DUP3 00000515: ADD 00000516: CALLDATALOAD 00000517: PUSH1 0x01 00000519: PUSH1 0x20 0000051b: SHL 0000051c: DUP2 0000051d: GT 0000051e: ISZERO 0000051f: PUSH2 0x0527 00000522: JUMPI 00000523: PUSH1 0x00 00000525: DUP1 00000526: REVERT 00000527: JUMPDEST 00000528: DUP3 00000529: ADD 0000052a: DUP4 0000052b: PUSH1 0x20 0000052d: DUP3 0000052e: ADD 0000052f: GT 00000530: ISZERO 00000531: PUSH2 0x0539 00000534: JUMPI 00000535: PUSH1 0x00 00000537: DUP1 00000538: REVERT 00000539: JUMPDEST 0000053a: DUP1 0000053b: CALLDATALOAD 0000053c: SWAP1 0000053d: PUSH1 0x20 0000053f: ADD 00000540: SWAP2 00000541: DUP5 00000542: PUSH1 0x01 00000544: DUP4 00000545: MUL 00000546: DUP5 00000547: ADD 00000548: GT 00000549: PUSH1 0x01 0000054b: PUSH1 0x20 0000054d: SHL 0000054e: DUP4 0000054f: GT 00000550: OR 00000551: ISZERO 00000552: PUSH2 0x055a 00000555: JUMPI 00000556: PUSH1 0x00 00000558: DUP1 00000559: REVERT 0000055a: JUMPDEST 0000055b: SWAP2 0000055c: SWAP1 0000055d: DUP1 0000055e: DUP1 0000055f: PUSH1 0x1f 00000561: ADD 00000562: PUSH1 0x20 00000564: DUP1 00000565: SWAP2 00000566: DIV 00000567: MUL 00000568: PUSH1 0x20 0000056a: ADD 0000056b: PUSH1 0x40 0000056d: MLOAD 0000056e: SWAP1 0000056f: DUP2 00000570: ADD 00000571: PUSH1 0x40 00000573: MSTORE 00000574: DUP1 00000575: SWAP4 00000576: SWAP3 00000577: SWAP2 00000578: SWAP1 00000579: DUP2 0000057a: DUP2 0000057b: MSTORE 0000057c: PUSH1 0x20 0000057e: ADD 0000057f: DUP4 00000580: DUP4 00000581: DUP1 00000582: DUP3 00000583: DUP5 00000584: CALLDATACOPY 00000585: PUSH1 0x00 00000587: SWAP3 00000588: ADD 00000589: SWAP2 0000058a: SWAP1 0000058b: SWAP2 0000058c: MSTORE 0000058d: POP 0000058e: SWAP3 0000058f: SWAP6 00000590: POP 00000591: POP 00000592: PUSH1 0x01 00000594: PUSH1 0x01 00000596: PUSH1 0xa0 00000598: SHL 00000599: SUB 0000059a: DUP4 0000059b: CALLDATALOAD 0000059c: DUP2 0000059d: AND 0000059e: SWAP5 0000059f: POP 000005a0: PUSH1 0x20 000005a2: SWAP1 000005a3: SWAP4 000005a4: ADD 000005a5: CALLDATALOAD 000005a6: SWAP1 000005a7: SWAP3 000005a8: AND 000005a9: SWAP2 000005aa: POP 000005ab: PUSH2 0x0eaa 000005ae: SWAP1 000005af: POP 000005b0: JUMP 000005b1: JUMPDEST 000005b2: CALLVALUE 000005b3: DUP1 000005b4: ISZERO 000005b5: PUSH2 0x05bd 000005b8: JUMPI 000005b9: PUSH1 0x00 000005bb: DUP1 000005bc: REVERT 000005bd: JUMPDEST 000005be: POP 000005bf: PUSH2 0x0260 000005c2: PUSH2 0x0fc8 000005c5: JUMP 000005c6: JUMPDEST 000005c7: CALLVALUE 000005c8: DUP1 000005c9: ISZERO 000005ca: PUSH2 0x05d2 000005cd: JUMPI 000005ce: PUSH1 0x00 000005d0: DUP1 000005d1: REVERT 000005d2: JUMPDEST 000005d3: POP 000005d4: PUSH2 0x035f 000005d7: PUSH1 0x04 000005d9: DUP1 000005da: CALLDATASIZE 000005db: SUB 000005dc: PUSH1 0x40 000005de: DUP2 000005df: LT 000005e0: ISZERO 000005e1: PUSH2 0x05e9 000005e4: JUMPI 000005e5: PUSH1 0x00 000005e7: DUP1 000005e8: REVERT 000005e9: JUMPDEST 000005ea: POP 000005eb: DUP1 000005ec: CALLDATALOAD 000005ed: SWAP1 000005ee: PUSH1 0x20 000005f0: ADD 000005f1: CALLDATALOAD 000005f2: ISZERO 000005f3: ISZERO 000005f4: PUSH2 0x0fd7 000005f7: JUMP 000005f8: JUMPDEST 000005f9: PUSH2 0x035f 000005fc: PUSH1 0x04 000005fe: DUP1 000005ff: CALLDATASIZE 00000600: SUB 00000601: PUSH1 0x40 00000603: DUP2 00000604: LT 00000605: ISZERO 00000606: PUSH2 0x060e 00000609: JUMPI 0000060a: PUSH1 0x00 0000060c: DUP1 0000060d: REVERT 0000060e: JUMPDEST 0000060f: POP 00000610: DUP1 00000611: CALLDATALOAD 00000612: SWAP1 00000613: PUSH1 0x20 00000615: ADD 00000616: CALLDATALOAD 00000617: ISZERO 00000618: ISZERO 00000619: PUSH2 0x1043 0000061c: JUMP 0000061d: JUMPDEST 0000061e: CALLVALUE 0000061f: DUP1 00000620: ISZERO 00000621: PUSH2 0x0629 00000624: JUMPI 00000625: PUSH1 0x00 00000627: DUP1 00000628: REVERT 00000629: JUMPDEST 0000062a: POP 0000062b: PUSH2 0x035f 0000062e: PUSH1 0x04 00000630: DUP1 00000631: CALLDATASIZE 00000632: SUB 00000633: PUSH1 0x20 00000635: DUP2 00000636: LT 00000637: ISZERO 00000638: PUSH2 0x0640 0000063b: JUMPI 0000063c: PUSH1 0x00 0000063e: DUP1 0000063f: REVERT 00000640: JUMPDEST 00000641: POP 00000642: CALLDATALOAD 00000643: PUSH1 0x01 00000645: PUSH1 0x01 00000647: PUSH1 0xa0 00000649: SHL 0000064a: SUB 0000064b: AND 0000064c: PUSH2 0x10af 0000064f: JUMP 00000650: JUMPDEST 00000651: CALLVALUE 00000652: DUP1 00000653: ISZERO 00000654: PUSH2 0x065c 00000657: JUMPI 00000658: PUSH1 0x00 0000065a: DUP1 0000065b: REVERT 0000065c: JUMPDEST 0000065d: POP 0000065e: PUSH2 0x035f 00000661: PUSH1 0x04 00000663: DUP1 00000664: CALLDATASIZE 00000665: SUB 00000666: PUSH1 0x20 00000668: DUP2 00000669: LT 0000066a: ISZERO 0000066b: PUSH2 0x0673 0000066e: JUMPI 0000066f: PUSH1 0x00 00000671: DUP1 00000672: REVERT 00000673: JUMPDEST 00000674: POP 00000675: CALLDATALOAD 00000676: PUSH2 0x1148 00000679: JUMP 0000067a: JUMPDEST 0000067b: PUSH2 0x035f 0000067e: PUSH1 0x04 00000680: DUP1 00000681: CALLDATASIZE 00000682: SUB 00000683: PUSH1 0x40 00000685: DUP2 00000686: LT 00000687: ISZERO 00000688: PUSH2 0x0690 0000068b: JUMPI 0000068c: PUSH1 0x00 0000068e: DUP1 0000068f: REVERT 00000690: JUMPDEST 00000691: POP 00000692: DUP1 00000693: CALLDATALOAD 00000694: SWAP1 00000695: PUSH1 0x20 00000697: ADD 00000698: CALLDATALOAD 00000699: ISZERO 0000069a: ISZERO 0000069b: PUSH2 0x11c5 0000069e: JUMP 0000069f: JUMPDEST 000006a0: CALLVALUE 000006a1: DUP1 000006a2: ISZERO 000006a3: PUSH2 0x06ab 000006a6: JUMPI 000006a7: PUSH1 0x00 000006a9: DUP1 000006aa: REVERT 000006ab: JUMPDEST 000006ac: POP 000006ad: PUSH2 0x0260 000006b0: PUSH2 0x1231 000006b3: JUMP 000006b4: JUMPDEST 000006b5: CALLVALUE 000006b6: DUP1 000006b7: ISZERO 000006b8: PUSH2 0x06c0 000006bb: JUMPI 000006bc: PUSH1 0x00 000006be: DUP1 000006bf: REVERT 000006c0: JUMPDEST 000006c1: POP 000006c2: PUSH2 0x0260 000006c5: PUSH2 0x1240 000006c8: JUMP 000006c9: JUMPDEST 000006ca: CALLVALUE 000006cb: DUP1 000006cc: ISZERO 000006cd: PUSH2 0x06d5 000006d0: JUMPI 000006d1: PUSH1 0x00 000006d3: DUP1 000006d4: REVERT 000006d5: JUMPDEST 000006d6: POP 000006d7: PUSH2 0x035f 000006da: PUSH1 0x04 000006dc: DUP1 000006dd: CALLDATASIZE 000006de: SUB 000006df: PUSH1 0x20 000006e1: DUP2 000006e2: LT 000006e3: ISZERO 000006e4: PUSH2 0x06ec 000006e7: JUMPI 000006e8: PUSH1 0x00 000006ea: DUP1 000006eb: REVERT 000006ec: JUMPDEST 000006ed: POP 000006ee: CALLDATALOAD 000006ef: PUSH1 0x01 000006f1: PUSH1 0x01 000006f3: PUSH1 0xa0 000006f5: SHL 000006f6: SUB 000006f7: AND 000006f8: PUSH2 0x124f 000006fb: JUMP 000006fc: JUMPDEST 000006fd: CALLVALUE 000006fe: DUP1 000006ff: ISZERO 00000700: PUSH2 0x0708 00000703: JUMPI 00000704: PUSH1 0x00 00000706: DUP1 00000707: REVERT 00000708: JUMPDEST 00000709: POP 0000070a: PUSH2 0x01ca 0000070d: PUSH1 0x04 0000070f: DUP1 00000710: CALLDATASIZE 00000711: SUB 00000712: PUSH1 0x20 00000714: DUP2 00000715: LT 00000716: ISZERO 00000717: PUSH2 0x071f 0000071a: JUMPI 0000071b: PUSH1 0x00 0000071d: DUP1 0000071e: REVERT 0000071f: JUMPDEST 00000720: DUP2 00000721: ADD 00000722: SWAP1 00000723: PUSH1 0x20 00000725: DUP2 00000726: ADD 00000727: DUP2 00000728: CALLDATALOAD 00000729: PUSH1 0x01 0000072b: PUSH1 0x20 0000072d: SHL 0000072e: DUP2 0000072f: GT 00000730: ISZERO 00000731: PUSH2 0x0739 00000734: JUMPI 00000735: PUSH1 0x00 00000737: DUP1 00000738: REVERT 00000739: JUMPDEST 0000073a: DUP3 0000073b: ADD 0000073c: DUP4 0000073d: PUSH1 0x20 0000073f: DUP3 00000740: ADD 00000741: GT 00000742: ISZERO 00000743: PUSH2 0x074b 00000746: JUMPI 00000747: PUSH1 0x00 00000749: DUP1 0000074a: REVERT 0000074b: JUMPDEST 0000074c: DUP1 0000074d: CALLDATALOAD 0000074e: SWAP1 0000074f: PUSH1 0x20 00000751: ADD 00000752: SWAP2 00000753: DUP5 00000754: PUSH1 0x01 00000756: DUP4 00000757: MUL 00000758: DUP5 00000759: ADD 0000075a: GT 0000075b: PUSH1 0x01 0000075d: PUSH1 0x20 0000075f: SHL 00000760: DUP4 00000761: GT 00000762: OR 00000763: ISZERO 00000764: PUSH2 0x076c 00000767: JUMPI 00000768: PUSH1 0x00 0000076a: DUP1 0000076b: REVERT 0000076c: JUMPDEST 0000076d: SWAP2 0000076e: SWAP1 0000076f: DUP1 00000770: DUP1 00000771: PUSH1 0x1f 00000773: ADD 00000774: PUSH1 0x20 00000776: DUP1 00000777: SWAP2 00000778: DIV 00000779: MUL 0000077a: PUSH1 0x20 0000077c: ADD 0000077d: PUSH1 0x40 0000077f: MLOAD 00000780: SWAP1 00000781: DUP2 00000782: ADD 00000783: PUSH1 0x40 00000785: MSTORE 00000786: DUP1 00000787: SWAP4 00000788: SWAP3 00000789: SWAP2 0000078a: SWAP1 0000078b: DUP2 0000078c: DUP2 0000078d: MSTORE 0000078e: PUSH1 0x20 00000790: ADD 00000791: DUP4 00000792: DUP4 00000793: DUP1 00000794: DUP3 00000795: DUP5 00000796: CALLDATACOPY 00000797: PUSH1 0x00 00000799: SWAP3 0000079a: ADD 0000079b: SWAP2 0000079c: SWAP1 0000079d: SWAP2 0000079e: MSTORE 0000079f: POP 000007a0: SWAP3 000007a1: SWAP6 000007a2: POP 000007a3: PUSH2 0x12e8 000007a6: SWAP5 000007a7: POP 000007a8: POP 000007a9: POP 000007aa: POP 000007ab: POP 000007ac: JUMP 000007ad: JUMPDEST 000007ae: PUSH1 0x0a 000007b0: SLOAD 000007b1: PUSH1 0x40 000007b3: MLOAD 000007b4: DUP3 000007b5: MLOAD 000007b6: PUSH1 0x00 000007b8: SWAP3 000007b9: PUSH1 0x60 000007bb: SWAP3 000007bc: DUP5 000007bd: SWAP3 000007be: DUP5 000007bf: SWAP3 000007c0: PUSH1 0x01 000007c2: PUSH1 0x01 000007c4: PUSH1 0xa0 000007c6: SHL 000007c7: SUB 000007c8: AND 000007c9: SWAP2 000007ca: DUP8 000007cb: SWAP2 000007cc: DUP2 000007cd: SWAP1 000007ce: PUSH1 0x20 000007d0: DUP5 000007d1: ADD 000007d2: SWAP1 000007d3: DUP1 000007d4: DUP4 000007d5: DUP4 000007d6: JUMPDEST 000007d7: PUSH1 0x20 000007d9: DUP4 000007da: LT 000007db: PUSH2 0x07f5 000007de: JUMPI 000007df: DUP1 000007e0: MLOAD 000007e1: DUP3 000007e2: MSTORE 000007e3: PUSH1 0x1f 000007e5: NOT 000007e6: SWAP1 000007e7: SWAP3 000007e8: ADD 000007e9: SWAP2 000007ea: PUSH1 0x20 000007ec: SWAP2 000007ed: DUP3 000007ee: ADD 000007ef: SWAP2 000007f0: ADD 000007f1: PUSH2 0x07d6 000007f4: JUMP 000007f5: JUMPDEST 000007f6: PUSH1 0x01 000007f8: DUP4 000007f9: PUSH1 0x20 000007fb: SUB 000007fc: PUSH2 0x0100 000007ff: EXP 00000800: SUB 00000801: DUP1 00000802: NOT 00000803: DUP3 00000804: MLOAD 00000805: AND 00000806: DUP2 00000807: DUP5 00000808: MLOAD 00000809: AND 0000080a: DUP1 0000080b: DUP3 0000080c: OR 0000080d: DUP6 0000080e: MSTORE 0000080f: POP 00000810: POP 00000811: POP 00000812: POP 00000813: POP 00000814: POP 00000815: SWAP1 00000816: POP 00000817: ADD 00000818: SWAP2 00000819: POP 0000081a: POP 0000081b: PUSH1 0x00 0000081d: PUSH1 0x40 0000081f: MLOAD 00000820: DUP1 00000821: DUP4 00000822: SUB 00000823: DUP2 00000824: DUP6 00000825: GAS 00000826: DELEGATECALL 00000827: SWAP2 00000828: POP 00000829: POP 0000082a: RETURNDATASIZE 0000082b: DUP1 0000082c: PUSH1 0x00 0000082e: DUP2 0000082f: EQ 00000830: PUSH2 0x0855 00000833: JUMPI 00000834: PUSH1 0x40 00000836: MLOAD 00000837: SWAP2 00000838: POP 00000839: PUSH1 0x1f 0000083b: NOT 0000083c: PUSH1 0x3f 0000083e: RETURNDATASIZE 0000083f: ADD 00000840: AND 00000841: DUP3 00000842: ADD 00000843: PUSH1 0x40 00000845: MSTORE 00000846: RETURNDATASIZE 00000847: DUP3 00000848: MSTORE 00000849: RETURNDATASIZE 0000084a: PUSH1 0x00 0000084c: PUSH1 0x20 0000084e: DUP5 0000084f: ADD 00000850: RETURNDATACOPY 00000851: PUSH2 0x085a 00000854: JUMP 00000855: JUMPDEST 00000856: PUSH1 0x60 00000858: SWAP2 00000859: POP 0000085a: JUMPDEST 0000085b: POP 0000085c: SWAP1 0000085d: SWAP3 0000085e: POP 0000085f: SWAP1 00000860: POP 00000861: DUP1 00000862: DUP3 00000863: PUSH2 0x08ea 00000866: JUMPI 00000867: PUSH1 0x40 00000869: MLOAD 0000086a: PUSH3 0x461bcd 0000086e: PUSH1 0xe5 00000870: SHL 00000871: DUP2 00000872: MSTORE 00000873: PUSH1 0x04 00000875: ADD 00000876: DUP1 00000877: DUP1 00000878: PUSH1 0x20 0000087a: ADD 0000087b: DUP3 0000087c: DUP2 0000087d: SUB 0000087e: DUP3 0000087f: MSTORE 00000880: DUP4 00000881: DUP2 00000882: DUP2 00000883: MLOAD 00000884: DUP2 00000885: MSTORE 00000886: PUSH1 0x20 00000888: ADD 00000889: SWAP2 0000088a: POP 0000088b: DUP1 0000088c: MLOAD 0000088d: SWAP1 0000088e: PUSH1 0x20 00000890: ADD 00000891: SWAP1 00000892: DUP1 00000893: DUP4 00000894: DUP4 00000895: PUSH1 0x00 00000897: JUMPDEST 00000898: DUP4 00000899: DUP2 0000089a: LT 0000089b: ISZERO 0000089c: PUSH2 0x08af 0000089f: JUMPI 000008a0: DUP2 000008a1: DUP2 000008a2: ADD 000008a3: MLOAD 000008a4: DUP4 000008a5: DUP3 000008a6: ADD 000008a7: MSTORE 000008a8: PUSH1 0x20 000008aa: ADD 000008ab: PUSH2 0x0897 000008ae: JUMP 000008af: JUMPDEST 000008b0: POP 000008b1: POP 000008b2: POP 000008b3: POP 000008b4: SWAP1 000008b5: POP 000008b6: SWAP1 000008b7: DUP2 000008b8: ADD 000008b9: SWAP1 000008ba: PUSH1 0x1f 000008bc: AND 000008bd: DUP1 000008be: ISZERO 000008bf: PUSH2 0x08dc 000008c2: JUMPI 000008c3: DUP1 000008c4: DUP3 000008c5: SUB 000008c6: DUP1 000008c7: MLOAD 000008c8: PUSH1 0x01 000008ca: DUP4 000008cb: PUSH1 0x20 000008cd: SUB 000008ce: PUSH2 0x0100 000008d1: EXP 000008d2: SUB 000008d3: NOT 000008d4: AND 000008d5: DUP2 000008d6: MSTORE 000008d7: PUSH1 0x20 000008d9: ADD 000008da: SWAP2 000008db: POP 000008dc: JUMPDEST 000008dd: POP 000008de: SWAP3 000008df: POP 000008e0: POP 000008e1: POP 000008e2: PUSH1 0x40 000008e4: MLOAD 000008e5: DUP1 000008e6: SWAP2 000008e7: SUB 000008e8: SWAP1 000008e9: REVERT 000008ea: JUMPDEST 000008eb: POP 000008ec: SWAP1 000008ed: SWAP3 000008ee: POP 000008ef: SWAP1 000008f0: POP 000008f1: SWAP2 000008f2: POP 000008f3: SWAP2 000008f4: JUMP 000008f5: JUMPDEST 000008f6: PUSH1 0x0b 000008f8: SLOAD 000008f9: PUSH1 0x01 000008fb: PUSH1 0x01 000008fd: PUSH1 0xa0 000008ff: SHL 00000900: SUB 00000901: AND 00000902: DUP2 00000903: JUMP 00000904: JUMPDEST 00000905: PUSH1 0x0b 00000907: SLOAD 00000908: PUSH1 0x40 0000090a: MLOAD 0000090b: DUP3 0000090c: MLOAD 0000090d: PUSH1 0x00 0000090f: SWAP3 00000910: PUSH1 0x60 00000912: SWAP3 00000913: DUP5 00000914: SWAP3 00000915: DUP5 00000916: SWAP3 00000917: PUSH1 0x01 00000919: PUSH1 0x01 0000091b: PUSH1 0xa0 0000091d: SHL 0000091e: SUB 0000091f: AND 00000920: SWAP2 00000921: DUP8 00000922: SWAP2 00000923: DUP2 00000924: SWAP1 00000925: PUSH1 0x20 00000927: DUP5 00000928: ADD 00000929: SWAP1 0000092a: DUP1 0000092b: DUP4 0000092c: DUP4 0000092d: PUSH1 0x20 0000092f: DUP4 00000930: LT 00000931: PUSH2 0x07f5 00000934: JUMPI 00000935: DUP1 00000936: MLOAD 00000937: DUP3 00000938: MSTORE 00000939: PUSH1 0x1f 0000093b: NOT 0000093c: SWAP1 0000093d: SWAP3 0000093e: ADD 0000093f: SWAP2 00000940: PUSH1 0x20 00000942: SWAP2 00000943: DUP3 00000944: ADD 00000945: SWAP2 00000946: ADD 00000947: PUSH2 0x07d6 0000094a: JUMP 0000094b: JUMPDEST 0000094c: PUSH1 0x00 0000094e: DUP1 0000094f: PUSH1 0x60 00000951: DUP1 00000952: PUSH1 0x0d 00000954: DUP7 00000955: DUP7 00000956: PUSH1 0x40 00000958: MLOAD 00000959: PUSH1 0x24 0000095b: ADD 0000095c: DUP1 0000095d: DUP4 0000095e: DUP2 0000095f: MSTORE 00000960: PUSH1 0x20 00000962: ADD 00000963: DUP3 00000964: ISZERO 00000965: ISZERO 00000966: DUP2 00000967: MSTORE 00000968: PUSH1 0x20 0000096a: ADD 0000096b: SWAP3 0000096c: POP 0000096d: POP 0000096e: POP 0000096f: PUSH1 0x40 00000971: MLOAD 00000972: PUSH1 0x20 00000974: DUP2 00000975: DUP4 00000976: SUB 00000977: SUB 00000978: DUP2 00000979: MSTORE 0000097a: SWAP1 0000097b: PUSH1 0x40 0000097d: MSTORE 0000097e: SWAP1 0000097f: PUSH1 0x40 00000981: MLOAD 00000982: DUP1 00000983: DUP3 00000984: DUP1 00000985: SLOAD 00000986: PUSH1 0x01 00000988: DUP2 00000989: PUSH1 0x01 0000098b: AND 0000098c: ISZERO 0000098d: PUSH2 0x0100 00000990: MUL 00000991: SUB 00000992: AND 00000993: PUSH1 0x02 00000995: SWAP1 00000996: DIV 00000997: DUP1 00000998: ISZERO 00000999: PUSH2 0x09d9 0000099c: JUMPI 0000099d: DUP1 0000099e: PUSH1 0x1f 000009a0: LT 000009a1: PUSH2 0x09b7 000009a4: JUMPI 000009a5: PUSH2 0x0100 000009a8: DUP1 000009a9: DUP4 000009aa: SLOAD 000009ab: DIV 000009ac: MUL 000009ad: DUP4 000009ae: MSTORE 000009af: SWAP2 000009b0: DUP3 000009b1: ADD 000009b2: SWAP2 000009b3: PUSH2 0x09d9 000009b6: JUMP 000009b7: JUMPDEST 000009b8: DUP3 000009b9: ADD 000009ba: SWAP2 000009bb: SWAP1 000009bc: PUSH1 0x00 000009be: MSTORE 000009bf: PUSH1 0x20 000009c1: PUSH1 0x00 000009c3: KECCAK256 000009c4: SWAP1 000009c5: JUMPDEST 000009c6: DUP2 000009c7: SLOAD 000009c8: DUP2 000009c9: MSTORE 000009ca: SWAP1 000009cb: PUSH1 0x01 000009cd: ADD 000009ce: SWAP1 000009cf: PUSH1 0x20 000009d1: ADD 000009d2: DUP1 000009d3: DUP4 000009d4: GT 000009d5: PUSH2 0x09c5 000009d8: JUMPI 000009d9: JUMPDEST 000009da: POP 000009db: POP 000009dc: PUSH1 0x40 000009de: DUP1 000009df: MLOAD 000009e0: SWAP2 000009e1: DUP3 000009e2: SWAP1 000009e3: SUB 000009e4: SWAP1 000009e5: SWAP2 000009e6: KECCAK256 000009e7: PUSH1 0x20 000009e9: DUP6 000009ea: ADD 000009eb: DUP1 000009ec: MLOAD 000009ed: PUSH1 0x01 000009ef: PUSH1 0x01 000009f1: PUSH1 0xe0 000009f3: SHL 000009f4: SUB 000009f5: AND 000009f6: PUSH1 0x01 000009f8: PUSH1 0x01 000009fa: PUSH1 0xe0 000009fc: SHL 000009fd: SUB 000009fe: NOT 000009ff: SWAP1 00000a00: SWAP3 00000a01: AND 00000a02: SWAP2 00000a03: SWAP1 00000a04: SWAP2 00000a05: OR 00000a06: DUP2 00000a07: MSTORE 00000a08: PUSH1 0x0a 00000a0a: SLOAD 00000a0b: SWAP2 00000a0c: MLOAD 00000a0d: DUP6 00000a0e: MLOAD 00000a0f: SWAP6 00000a10: SWAP7 00000a11: POP 00000a12: PUSH1 0x01 00000a14: PUSH1 0x01 00000a16: PUSH1 0xa0 00000a18: SHL 00000a19: SUB 00000a1a: SWAP1 00000a1b: SWAP3 00000a1c: AND 00000a1d: SWAP5 00000a1e: DUP7 00000a1f: SWAP5 00000a20: POP 00000a21: SWAP2 00000a22: SWAP3 00000a23: POP 00000a24: DUP3 00000a25: SWAP2 00000a26: DUP1 00000a27: DUP4 00000a28: DUP4 00000a29: JUMPDEST 00000a2a: PUSH1 0x20 00000a2c: DUP4 00000a2d: LT 00000a2e: PUSH2 0x0a48 00000a31: JUMPI 00000a32: DUP1 00000a33: MLOAD 00000a34: DUP3 00000a35: MSTORE 00000a36: PUSH1 0x1f 00000a38: NOT 00000a39: SWAP1 00000a3a: SWAP3 00000a3b: ADD 00000a3c: SWAP2 00000a3d: PUSH1 0x20 00000a3f: SWAP2 00000a40: DUP3 00000a41: ADD 00000a42: SWAP2 00000a43: ADD 00000a44: PUSH2 0x0a29 00000a47: JUMP 00000a48: JUMPDEST 00000a49: PUSH1 0x01 00000a4b: DUP4 00000a4c: PUSH1 0x20 00000a4e: SUB 00000a4f: PUSH2 0x0100 00000a52: EXP 00000a53: SUB 00000a54: DUP1 00000a55: NOT 00000a56: DUP3 00000a57: MLOAD 00000a58: AND 00000a59: DUP2 00000a5a: DUP5 00000a5b: MLOAD 00000a5c: AND 00000a5d: DUP1 00000a5e: DUP3 00000a5f: OR 00000a60: DUP6 00000a61: MSTORE 00000a62: POP 00000a63: POP 00000a64: POP 00000a65: POP 00000a66: POP 00000a67: POP 00000a68: SWAP1 00000a69: POP 00000a6a: ADD 00000a6b: SWAP2 00000a6c: POP 00000a6d: POP 00000a6e: PUSH1 0x00 00000a70: PUSH1 0x40 00000a72: MLOAD 00000a73: DUP1 00000a74: DUP4 00000a75: SUB 00000a76: DUP2 00000a77: DUP6 00000a78: GAS 00000a79: DELEGATECALL 00000a7a: SWAP2 00000a7b: POP 00000a7c: POP 00000a7d: RETURNDATASIZE 00000a7e: DUP1 00000a7f: PUSH1 0x00 00000a81: DUP2 00000a82: EQ 00000a83: PUSH2 0x0aa8 00000a86: JUMPI 00000a87: PUSH1 0x40 00000a89: MLOAD 00000a8a: SWAP2 00000a8b: POP 00000a8c: PUSH1 0x1f 00000a8e: NOT 00000a8f: PUSH1 0x3f 00000a91: RETURNDATASIZE 00000a92: ADD 00000a93: AND 00000a94: DUP3 00000a95: ADD 00000a96: PUSH1 0x40 00000a98: MSTORE 00000a99: RETURNDATASIZE 00000a9a: DUP3 00000a9b: MSTORE 00000a9c: RETURNDATASIZE 00000a9d: PUSH1 0x00 00000a9f: PUSH1 0x20 00000aa1: DUP5 00000aa2: ADD 00000aa3: RETURNDATACOPY 00000aa4: PUSH2 0x0aad 00000aa7: JUMP 00000aa8: JUMPDEST 00000aa9: PUSH1 0x60 00000aab: SWAP2 00000aac: POP 00000aad: JUMPDEST 00000aae: POP 00000aaf: SWAP1 00000ab0: SWAP4 00000ab1: POP 00000ab2: SWAP2 00000ab3: POP 00000ab4: DUP2 00000ab5: DUP4 00000ab6: PUSH2 0x0b00 00000ab9: JUMPI 00000aba: PUSH1 0x40 00000abc: MLOAD 00000abd: PUSH3 0x461bcd 00000ac1: PUSH1 0xe5 00000ac3: SHL 00000ac4: DUP2 00000ac5: MSTORE 00000ac6: PUSH1 0x20 00000ac8: PUSH1 0x04 00000aca: DUP3 00000acb: ADD 00000acc: DUP2 00000acd: DUP2 00000ace: MSTORE 00000acf: DUP4 00000ad0: MLOAD 00000ad1: PUSH1 0x24 00000ad3: DUP5 00000ad4: ADD 00000ad5: MSTORE 00000ad6: DUP4 00000ad7: MLOAD 00000ad8: SWAP1 00000ad9: SWAP3 00000ada: DUP4 00000adb: SWAP3 00000adc: PUSH1 0x44 00000ade: SWAP1 00000adf: SWAP2 00000ae0: ADD 00000ae1: SWAP2 00000ae2: SWAP1 00000ae3: DUP6 00000ae4: ADD 00000ae5: SWAP1 00000ae6: DUP1 00000ae7: DUP4 00000ae8: DUP4 00000ae9: PUSH1 0x00 00000aeb: DUP4 00000aec: ISZERO 00000aed: PUSH2 0x08af 00000af0: JUMPI 00000af1: DUP2 00000af2: DUP2 00000af3: ADD 00000af4: MLOAD 00000af5: DUP4 00000af6: DUP3 00000af7: ADD 00000af8: MSTORE 00000af9: PUSH1 0x20 00000afb: ADD 00000afc: PUSH2 0x0897 00000aff: JUMP 00000b00: JUMPDEST 00000b01: POP 00000b02: SWAP2 00000b03: SWAP6 00000b04: SWAP5 00000b05: POP 00000b06: POP 00000b07: POP 00000b08: POP 00000b09: POP 00000b0a: JUMP 00000b0b: JUMPDEST 00000b0c: PUSH1 0x05 00000b0e: SLOAD 00000b0f: PUSH1 0x00 00000b11: SWAP1 00000b12: PUSH1 0x60 00000b14: SWAP1 00000b15: CALLER 00000b16: SWAP1 00000b17: PUSH1 0x01 00000b19: PUSH1 0x01 00000b1b: PUSH1 0xa0 00000b1d: SHL 00000b1e: SUB 00000b1f: AND 00000b20: DUP2 00000b21: EQ 00000b22: DUP1 00000b23: PUSH2 0x0b39 00000b26: JUMPI 00000b27: POP 00000b28: PUSH1 0x00 00000b2a: SLOAD 00000b2b: PUSH1 0x01 00000b2d: PUSH1 0x01 00000b2f: PUSH1 0xa0 00000b31: SHL 00000b32: SUB 00000b33: DUP3 00000b34: DUP2 00000b35: AND 00000b36: SWAP2 00000b37: AND 00000b38: EQ 00000b39: JUMPDEST 00000b3a: PUSH1 0x40 00000b3c: MLOAD 00000b3d: DUP1 00000b3e: PUSH1 0x40 00000b40: ADD 00000b41: PUSH1 0x40 00000b43: MSTORE 00000b44: DUP1 00000b45: PUSH1 0x01 00000b47: DUP2 00000b48: MSTORE 00000b49: PUSH1 0x20 00000b4b: ADD 00000b4c: PUSH1 0x4d 00000b4e: PUSH1 0xf8 00000b50: SHL 00000b51: DUP2 00000b52: MSTORE 00000b53: POP 00000b54: SWAP1 00000b55: PUSH2 0x0b9f 00000b58: JUMPI 00000b59: PUSH1 0x40 00000b5b: MLOAD 00000b5c: PUSH3 0x461bcd 00000b60: PUSH1 0xe5 00000b62: SHL 00000b63: DUP2 00000b64: MSTORE 00000b65: PUSH1 0x20 00000b67: PUSH1 0x04 00000b69: DUP3 00000b6a: ADD 00000b6b: DUP2 00000b6c: DUP2 00000b6d: MSTORE 00000b6e: DUP4 00000b6f: MLOAD 00000b70: PUSH1 0x24 00000b72: DUP5 00000b73: ADD 00000b74: MSTORE 00000b75: DUP4 00000b76: MLOAD 00000b77: SWAP1 00000b78: SWAP3 00000b79: DUP4 00000b7a: SWAP3 00000b7b: PUSH1 0x44 00000b7d: SWAP1 00000b7e: SWAP2 00000b7f: ADD 00000b80: SWAP2 00000b81: SWAP1 00000b82: DUP6 00000b83: ADD 00000b84: SWAP1 00000b85: DUP1 00000b86: DUP4 00000b87: DUP4 00000b88: PUSH1 0x00 00000b8a: DUP4 00000b8b: ISZERO 00000b8c: PUSH2 0x08af 00000b8f: JUMPI 00000b90: DUP2 00000b91: DUP2 00000b92: ADD 00000b93: MLOAD 00000b94: DUP4 00000b95: DUP3 00000b96: ADD 00000b97: MSTORE 00000b98: PUSH1 0x20 00000b9a: ADD 00000b9b: PUSH2 0x0897 00000b9e: JUMP 00000b9f: JUMPDEST 00000ba0: POP 00000ba1: PUSH1 0x0b 00000ba3: SLOAD 00000ba4: PUSH1 0x40 00000ba6: MLOAD 00000ba7: DUP6 00000ba8: MLOAD 00000ba9: PUSH1 0x00 00000bab: SWAP3 00000bac: PUSH1 0x60 00000bae: SWAP3 00000baf: PUSH1 0x01 00000bb1: PUSH1 0x01 00000bb3: PUSH1 0xa0 00000bb5: SHL 00000bb6: SUB 00000bb7: SWAP1 00000bb8: SWAP2 00000bb9: AND 00000bba: SWAP2 00000bbb: DUP9 00000bbc: SWAP2 00000bbd: SWAP1 00000bbe: DUP2 00000bbf: SWAP1 00000bc0: PUSH1 0x20 00000bc2: DUP5 00000bc3: ADD 00000bc4: SWAP1 00000bc5: DUP1 00000bc6: DUP4 00000bc7: DUP4 00000bc8: JUMPDEST 00000bc9: PUSH1 0x20 00000bcb: DUP4 00000bcc: LT 00000bcd: PUSH2 0x0be7 00000bd0: JUMPI 00000bd1: DUP1 00000bd2: MLOAD 00000bd3: DUP3 00000bd4: MSTORE 00000bd5: PUSH1 0x1f 00000bd7: NOT 00000bd8: SWAP1 00000bd9: SWAP3 00000bda: ADD 00000bdb: SWAP2 00000bdc: PUSH1 0x20 00000bde: SWAP2 00000bdf: DUP3 00000be0: ADD 00000be1: SWAP2 00000be2: ADD 00000be3: PUSH2 0x0bc8 00000be6: JUMP 00000be7: JUMPDEST 00000be8: PUSH1 0x01 00000bea: DUP4 00000beb: PUSH1 0x20 00000bed: SUB 00000bee: PUSH2 0x0100 00000bf1: EXP 00000bf2: SUB 00000bf3: DUP1 00000bf4: NOT 00000bf5: DUP3 00000bf6: MLOAD 00000bf7: AND 00000bf8: DUP2 00000bf9: DUP5 00000bfa: MLOAD 00000bfb: AND 00000bfc: DUP1 00000bfd: DUP3 00000bfe: OR 00000bff: DUP6 00000c00: MSTORE 00000c01: POP 00000c02: POP 00000c03: POP 00000c04: POP 00000c05: POP 00000c06: POP 00000c07: SWAP1 00000c08: POP 00000c09: ADD 00000c0a: SWAP2 00000c0b: POP 00000c0c: POP 00000c0d: PUSH1 0x00 00000c0f: PUSH1 0x40 00000c11: MLOAD 00000c12: DUP1 00000c13: DUP4 00000c14: SUB 00000c15: DUP2 00000c16: DUP6 00000c17: GAS 00000c18: DELEGATECALL 00000c19: SWAP2 00000c1a: POP 00000c1b: POP 00000c1c: RETURNDATASIZE 00000c1d: DUP1 00000c1e: PUSH1 0x00 00000c20: DUP2 00000c21: EQ 00000c22: PUSH2 0x0c47 00000c25: JUMPI 00000c26: PUSH1 0x40 00000c28: MLOAD 00000c29: SWAP2 00000c2a: POP 00000c2b: PUSH1 0x1f 00000c2d: NOT 00000c2e: PUSH1 0x3f 00000c30: RETURNDATASIZE 00000c31: ADD 00000c32: AND 00000c33: DUP3 00000c34: ADD 00000c35: PUSH1 0x40 00000c37: MSTORE 00000c38: RETURNDATASIZE 00000c39: DUP3 00000c3a: MSTORE 00000c3b: RETURNDATASIZE 00000c3c: PUSH1 0x00 00000c3e: PUSH1 0x20 00000c40: DUP5 00000c41: ADD 00000c42: RETURNDATACOPY 00000c43: PUSH2 0x0c4c 00000c46: JUMP 00000c47: JUMPDEST 00000c48: PUSH1 0x60 00000c4a: SWAP2 00000c4b: POP 00000c4c: JUMPDEST 00000c4d: POP 00000c4e: SWAP1 00000c4f: SWAP3 00000c50: POP 00000c51: SWAP1 00000c52: POP 00000c53: DUP1 00000c54: DUP3 00000c55: PUSH2 0x0c9f 00000c58: JUMPI 00000c59: PUSH1 0x40 00000c5b: MLOAD 00000c5c: PUSH3 0x461bcd 00000c60: PUSH1 0xe5 00000c62: SHL 00000c63: DUP2 00000c64: MSTORE 00000c65: PUSH1 0x20 00000c67: PUSH1 0x04 00000c69: DUP3 00000c6a: ADD 00000c6b: DUP2 00000c6c: DUP2 00000c6d: MSTORE 00000c6e: DUP4 00000c6f: MLOAD 00000c70: PUSH1 0x24 00000c72: DUP5 00000c73: ADD 00000c74: MSTORE 00000c75: DUP4 00000c76: MLOAD 00000c77: SWAP1 00000c78: SWAP3 00000c79: DUP4 00000c7a: SWAP3 00000c7b: PUSH1 0x44 00000c7d: SWAP1 00000c7e: SWAP2 00000c7f: ADD 00000c80: SWAP2 00000c81: SWAP1 00000c82: DUP6 00000c83: ADD 00000c84: SWAP1 00000c85: DUP1 00000c86: DUP4 00000c87: DUP4 00000c88: PUSH1 0x00 00000c8a: DUP4 00000c8b: ISZERO 00000c8c: PUSH2 0x08af 00000c8f: JUMPI 00000c90: DUP2 00000c91: DUP2 00000c92: ADD 00000c93: MLOAD 00000c94: DUP4 00000c95: DUP3 00000c96: ADD 00000c97: MSTORE 00000c98: PUSH1 0x20 00000c9a: ADD 00000c9b: PUSH2 0x0897 00000c9e: JUMP 00000c9f: JUMPDEST 00000ca0: POP 00000ca1: SWAP1 00000ca2: SWAP4 00000ca3: POP 00000ca4: SWAP2 00000ca5: POP 00000ca6: POP 00000ca7: SWAP2 00000ca8: POP 00000ca9: SWAP2 00000caa: JUMP 00000cab: JUMPDEST 00000cac: PUSH1 0x00 00000cae: DUP1 00000caf: SLOAD 00000cb0: PUSH1 0x40 00000cb2: DUP1 00000cb3: MLOAD 00000cb4: DUP1 00000cb5: DUP3 00000cb6: ADD 00000cb7: SWAP1 00000cb8: SWAP2 00000cb9: MSTORE 00000cba: PUSH1 0x01 00000cbc: DUP2 00000cbd: MSTORE 00000cbe: PUSH1 0x4f 00000cc0: PUSH1 0xf8 00000cc2: SHL 00000cc3: PUSH1 0x20 00000cc5: DUP3 00000cc6: ADD 00000cc7: MSTORE 00000cc8: SWAP1 00000cc9: PUSH1 0x01 00000ccb: PUSH1 0x01 00000ccd: PUSH1 0xa0 00000ccf: SHL 00000cd0: SUB 00000cd1: AND 00000cd2: CALLER 00000cd3: EQ 00000cd4: PUSH2 0x0d1e 00000cd7: JUMPI 00000cd8: PUSH1 0x40 00000cda: MLOAD 00000cdb: PUSH3 0x461bcd 00000cdf: PUSH1 0xe5 00000ce1: SHL 00000ce2: DUP2 00000ce3: MSTORE 00000ce4: PUSH1 0x20 00000ce6: PUSH1 0x04 00000ce8: DUP3 00000ce9: ADD 00000cea: DUP2 00000ceb: DUP2 00000cec: MSTORE 00000ced: DUP4 00000cee: MLOAD 00000cef: PUSH1 0x24 00000cf1: DUP5 00000cf2: ADD 00000cf3: MSTORE 00000cf4: DUP4 00000cf5: MLOAD 00000cf6: SWAP1 00000cf7: SWAP3 00000cf8: DUP4 00000cf9: SWAP3 00000cfa: PUSH1 0x44 00000cfc: SWAP1 00000cfd: SWAP2 00000cfe: ADD 00000cff: SWAP2 00000d00: SWAP1 00000d01: DUP6 00000d02: ADD 00000d03: SWAP1 00000d04: DUP1 00000d05: DUP4 00000d06: DUP4 00000d07: PUSH1 0x00 00000d09: DUP4 00000d0a: ISZERO 00000d0b: PUSH2 0x08af 00000d0e: JUMPI 00000d0f: DUP2 00000d10: DUP2 00000d11: ADD 00000d12: MLOAD 00000d13: DUP4 00000d14: DUP3 00000d15: ADD 00000d16: MSTORE 00000d17: PUSH1 0x20 00000d19: ADD 00000d1a: PUSH2 0x0897 00000d1d: JUMP 00000d1e: JUMPDEST 00000d1f: POP 00000d20: POP 00000d21: PUSH1 0x0a 00000d23: DUP1 00000d24: SLOAD 00000d25: PUSH1 0x01 00000d27: PUSH1 0x01 00000d29: PUSH1 0xa0 00000d2b: SHL 00000d2c: SUB 00000d2d: DUP4 00000d2e: AND 00000d2f: PUSH1 0x01 00000d31: PUSH1 0x01 00000d33: PUSH1 0xa0 00000d35: SHL 00000d36: SUB 00000d37: NOT 00000d38: SWAP1 00000d39: SWAP2 00000d3a: AND 00000d3b: OR 00000d3c: SWAP1 00000d3d: SSTORE 00000d3e: PUSH1 0x01 00000d40: SWAP2 00000d41: SWAP1 00000d42: POP 00000d43: JUMP 00000d44: JUMPDEST 00000d45: PUSH1 0x01 00000d47: SLOAD 00000d48: SWAP1 00000d49: JUMP 00000d4a: JUMPDEST 00000d4b: PUSH1 0x00 00000d4d: DUP1 00000d4e: SLOAD 00000d4f: PUSH1 0x40 00000d51: DUP1 00000d52: MLOAD 00000d53: DUP1 00000d54: DUP3 00000d55: ADD 00000d56: SWAP1 00000d57: SWAP2 00000d58: MSTORE 00000d59: PUSH1 0x01 00000d5b: DUP2 00000d5c: MSTORE 00000d5d: PUSH1 0x4f 00000d5f: PUSH1 0xf8 00000d61: SHL 00000d62: PUSH1 0x20 00000d64: DUP3 00000d65: ADD 00000d66: MSTORE 00000d67: SWAP1 00000d68: PUSH1 0x01 00000d6a: PUSH1 0x01 00000d6c: PUSH1 0xa0 00000d6e: SHL 00000d6f: SUB 00000d70: AND 00000d71: CALLER 00000d72: EQ 00000d73: PUSH2 0x0dbd 00000d76: JUMPI 00000d77: PUSH1 0x40 00000d79: MLOAD 00000d7a: PUSH3 0x461bcd 00000d7e: PUSH1 0xe5 00000d80: SHL 00000d81: DUP2 00000d82: MSTORE 00000d83: PUSH1 0x20 00000d85: PUSH1 0x04 00000d87: DUP3 00000d88: ADD 00000d89: DUP2 00000d8a: DUP2 00000d8b: MSTORE 00000d8c: DUP4 00000d8d: MLOAD 00000d8e: PUSH1 0x24 00000d90: DUP5 00000d91: ADD 00000d92: MSTORE 00000d93: DUP4 00000d94: MLOAD 00000d95: SWAP1 00000d96: SWAP3 00000d97: DUP4 00000d98: SWAP3 00000d99: PUSH1 0x44 00000d9b: SWAP1 00000d9c: SWAP2 00000d9d: ADD 00000d9e: SWAP2 00000d9f: SWAP1 00000da0: DUP6 00000da1: ADD 00000da2: SWAP1 00000da3: DUP1 00000da4: DUP4 00000da5: DUP4 00000da6: PUSH1 0x00 00000da8: DUP4 00000da9: ISZERO 00000daa: PUSH2 0x08af 00000dad: JUMPI 00000dae: DUP2 00000daf: DUP2 00000db0: ADD 00000db1: MLOAD 00000db2: DUP4 00000db3: DUP3 00000db4: ADD 00000db5: MSTORE 00000db6: PUSH1 0x20 00000db8: ADD 00000db9: PUSH2 0x0897 00000dbc: JUMP 00000dbd: JUMPDEST 00000dbe: POP 00000dbf: PUSH1 0x09 00000dc1: SLOAD 00000dc2: PUSH1 0x40 00000dc4: DUP1 00000dc5: MLOAD 00000dc6: PUSH4 0x70a08231 00000dcb: PUSH1 0xe0 00000dcd: SHL 00000dce: DUP2 00000dcf: MSTORE 00000dd0: ADDRESS 00000dd1: PUSH1 0x04 00000dd3: DUP3 00000dd4: ADD 00000dd5: MSTORE 00000dd6: SWAP1 00000dd7: MLOAD 00000dd8: PUSH1 0x00 00000dda: SWAP3 00000ddb: PUSH1 0x01 00000ddd: PUSH1 0x01 00000ddf: PUSH1 0xa0 00000de1: SHL 00000de2: SUB 00000de3: AND 00000de4: SWAP2 00000de5: PUSH4 0x70a08231 00000dea: SWAP2 00000deb: PUSH1 0x24 00000ded: DUP1 00000dee: DUP4 00000def: ADD 00000df0: SWAP3 00000df1: PUSH1 0x20 00000df3: SWAP3 00000df4: SWAP2 00000df5: SWAP1 00000df6: DUP3 00000df7: SWAP1 00000df8: SUB 00000df9: ADD 00000dfa: DUP2 00000dfb: DUP7 00000dfc: DUP1 00000dfd: EXTCODESIZE 00000dfe: ISZERO 00000dff: DUP1 00000e00: ISZERO 00000e01: PUSH2 0x0e09 00000e04: JUMPI 00000e05: PUSH1 0x00 00000e07: DUP1 00000e08: REVERT 00000e09: JUMPDEST 00000e0a: POP 00000e0b: GAS 00000e0c: STATICCALL 00000e0d: ISZERO 00000e0e: DUP1 00000e0f: ISZERO 00000e10: PUSH2 0x0e1d 00000e13: JUMPI 00000e14: RETURNDATASIZE 00000e15: PUSH1 0x00 00000e17: DUP1 00000e18: RETURNDATACOPY 00000e19: RETURNDATASIZE 00000e1a: PUSH1 0x00 00000e1c: REVERT 00000e1d: JUMPDEST 00000e1e: POP 00000e1f: POP 00000e20: POP 00000e21: POP 00000e22: PUSH1 0x40 00000e24: MLOAD 00000e25: RETURNDATASIZE 00000e26: PUSH1 0x20 00000e28: DUP2 00000e29: LT 00000e2a: ISZERO 00000e2b: PUSH2 0x0e33 00000e2e: JUMPI 00000e2f: PUSH1 0x00 00000e31: DUP1 00000e32: REVERT 00000e33: JUMPDEST 00000e34: POP 00000e35: MLOAD 00000e36: PUSH1 0x09 00000e38: SLOAD 00000e39: PUSH1 0x40 00000e3b: DUP1 00000e3c: MLOAD 00000e3d: PUSH4 0xa9059cbb 00000e42: PUSH1 0xe0 00000e44: SHL 00000e45: DUP2 00000e46: MSTORE 00000e47: PUSH1 0x01 00000e49: PUSH1 0x01 00000e4b: PUSH1 0xa0 00000e4d: SHL 00000e4e: SUB 00000e4f: DUP8 00000e50: DUP2 00000e51: AND 00000e52: PUSH1 0x04 00000e54: DUP4 00000e55: ADD 00000e56: MSTORE 00000e57: PUSH1 0x24 00000e59: DUP3 00000e5a: ADD 00000e5b: DUP6 00000e5c: SWAP1 00000e5d: MSTORE 00000e5e: SWAP2 00000e5f: MLOAD 00000e60: SWAP4 00000e61: SWAP5 00000e62: POP 00000e63: SWAP2 00000e64: AND 00000e65: SWAP2 00000e66: PUSH4 0xa9059cbb 00000e6b: SWAP2 00000e6c: PUSH1 0x44 00000e6e: DUP1 00000e6f: DUP3 00000e70: ADD 00000e71: SWAP3 00000e72: PUSH1 0x00 00000e74: SWAP3 00000e75: SWAP1 00000e76: SWAP2 00000e77: SWAP1 00000e78: DUP3 00000e79: SWAP1 00000e7a: SUB 00000e7b: ADD 00000e7c: DUP2 00000e7d: DUP4 00000e7e: DUP8 00000e7f: DUP1 00000e80: EXTCODESIZE 00000e81: ISZERO 00000e82: DUP1 00000e83: ISZERO 00000e84: PUSH2 0x0e8c 00000e87: JUMPI 00000e88: PUSH1 0x00 00000e8a: DUP1 00000e8b: REVERT 00000e8c: JUMPDEST 00000e8d: POP 00000e8e: GAS 00000e8f: CALL 00000e90: ISZERO 00000e91: DUP1 00000e92: ISZERO 00000e93: PUSH2 0x0ea0 00000e96: JUMPI 00000e97: RETURNDATASIZE 00000e98: PUSH1 0x00 00000e9a: DUP1 00000e9b: RETURNDATACOPY 00000e9c: RETURNDATASIZE 00000e9d: PUSH1 0x00 00000e9f: REVERT 00000ea0: JUMPDEST 00000ea1: POP 00000ea2: POP 00000ea3: POP 00000ea4: POP 00000ea5: POP 00000ea6: SWAP2 00000ea7: SWAP1 00000ea8: POP 00000ea9: JUMP 00000eaa: JUMPDEST 00000eab: PUSH1 0x00 00000ead: DUP1 00000eae: SLOAD 00000eaf: PUSH1 0x40 00000eb1: DUP1 00000eb2: MLOAD 00000eb3: DUP1 00000eb4: DUP3 00000eb5: ADD 00000eb6: SWAP1 00000eb7: SWAP2 00000eb8: MSTORE 00000eb9: PUSH1 0x01 00000ebb: DUP2 00000ebc: MSTORE 00000ebd: PUSH1 0x4f 00000ebf: PUSH1 0xf8 00000ec1: SHL 00000ec2: PUSH1 0x20 00000ec4: DUP3 00000ec5: ADD 00000ec6: MSTORE 00000ec7: SWAP1 00000ec8: PUSH1 0x01 00000eca: PUSH1 0x01 00000ecc: PUSH1 0xa0 00000ece: SHL 00000ecf: SUB 00000ed0: AND 00000ed1: CALLER 00000ed2: EQ 00000ed3: PUSH2 0x0f1d 00000ed6: JUMPI 00000ed7: PUSH1 0x40 00000ed9: MLOAD 00000eda: PUSH3 0x461bcd 00000ede: PUSH1 0xe5 00000ee0: SHL 00000ee1: DUP2 00000ee2: MSTORE 00000ee3: PUSH1 0x20 00000ee5: PUSH1 0x04 00000ee7: DUP3 00000ee8: ADD 00000ee9: DUP2 00000eea: DUP2 00000eeb: MSTORE 00000eec: DUP4 00000eed: MLOAD 00000eee: PUSH1 0x24 00000ef0: DUP5 00000ef1: ADD 00000ef2: MSTORE 00000ef3: DUP4 00000ef4: MLOAD 00000ef5: SWAP1 00000ef6: SWAP3 00000ef7: DUP4 00000ef8: SWAP3 00000ef9: PUSH1 0x44 00000efb: SWAP1 00000efc: SWAP2 00000efd: ADD 00000efe: SWAP2 00000eff: SWAP1 00000f00: DUP6 00000f01: ADD 00000f02: SWAP1 00000f03: DUP1 00000f04: DUP4 00000f05: DUP4 00000f06: PUSH1 0x00 00000f08: DUP4 00000f09: ISZERO 00000f0a: PUSH2 0x08af 00000f0d: JUMPI 00000f0e: DUP2 00000f0f: DUP2 00000f10: ADD 00000f11: MLOAD 00000f12: DUP4 00000f13: DUP3 00000f14: ADD 00000f15: MSTORE 00000f16: PUSH1 0x20 00000f18: ADD 00000f19: PUSH2 0x0897 00000f1c: JUMP 00000f1d: JUMPDEST 00000f1e: POP 00000f1f: PUSH1 0x01 00000f21: DUP11 00000f22: SWAP1 00000f23: SSTORE 00000f24: PUSH1 0x0a 00000f26: DUP1 00000f27: SLOAD 00000f28: PUSH1 0x01 00000f2a: PUSH1 0x01 00000f2c: PUSH1 0xa0 00000f2e: SHL 00000f2f: SUB 00000f30: NOT 00000f31: SWAP1 00000f32: DUP2 00000f33: AND 00000f34: PUSH1 0x01 00000f36: PUSH1 0x01 00000f38: PUSH1 0xa0 00000f3a: SHL 00000f3b: SUB 00000f3c: DUP13 00000f3d: DUP2 00000f3e: AND 00000f3f: SWAP2 00000f40: SWAP1 00000f41: SWAP2 00000f42: OR 00000f43: SWAP1 00000f44: SWAP3 00000f45: SSTORE 00000f46: PUSH1 0x05 00000f48: DUP1 00000f49: SLOAD 00000f4a: DUP3 00000f4b: AND 00000f4c: DUP12 00000f4d: DUP5 00000f4e: AND 00000f4f: OR 00000f50: SWAP1 00000f51: SSTORE 00000f52: PUSH1 0x06 00000f54: DUP1 00000f55: SLOAD 00000f56: DUP3 00000f57: AND 00000f58: DUP11 00000f59: DUP5 00000f5a: AND 00000f5b: OR 00000f5c: SWAP1 00000f5d: SSTORE 00000f5e: PUSH1 0x07 00000f60: DUP1 00000f61: SLOAD 00000f62: DUP3 00000f63: AND 00000f64: DUP10 00000f65: DUP5 00000f66: AND 00000f67: OR 00000f68: SWAP1 00000f69: SSTORE 00000f6a: PUSH1 0x09 00000f6c: DUP1 00000f6d: SLOAD 00000f6e: SWAP1 00000f6f: SWAP2 00000f70: AND 00000f71: SWAP2 00000f72: DUP8 00000f73: AND 00000f74: SWAP2 00000f75: SWAP1 00000f76: SWAP2 00000f77: OR 00000f78: SWAP1 00000f79: SSTORE 00000f7a: DUP4 00000f7b: MLOAD 00000f7c: PUSH2 0x0f8c 00000f7f: SWAP1 00000f80: PUSH1 0x02 00000f82: SWAP1 00000f83: PUSH1 0x20 00000f85: DUP8 00000f86: ADD 00000f87: SWAP1 00000f88: PUSH2 0x13c3 00000f8b: JUMP 00000f8c: JUMPDEST 00000f8d: POP 00000f8e: PUSH1 0x0b 00000f90: DUP1 00000f91: SLOAD 00000f92: PUSH1 0x01 00000f94: PUSH1 0x01 00000f96: PUSH1 0xa0 00000f98: SHL 00000f99: SUB 00000f9a: SWAP5 00000f9b: DUP6 00000f9c: AND 00000f9d: PUSH1 0x01 00000f9f: PUSH1 0x01 00000fa1: PUSH1 0xa0 00000fa3: SHL 00000fa4: SUB 00000fa5: NOT 00000fa6: SWAP2 00000fa7: DUP3 00000fa8: AND 00000fa9: OR 00000faa: SWAP1 00000fab: SWAP2 00000fac: SSTORE 00000fad: PUSH1 0x08 00000faf: DUP1 00000fb0: SLOAD 00000fb1: SWAP4 00000fb2: SWAP1 00000fb3: SWAP5 00000fb4: AND 00000fb5: SWAP3 00000fb6: AND 00000fb7: SWAP2 00000fb8: SWAP1 00000fb9: SWAP2 00000fba: OR 00000fbb: SWAP1 00000fbc: SWAP2 00000fbd: SSTORE 00000fbe: SWAP8 00000fbf: SWAP7 00000fc0: POP 00000fc1: POP 00000fc2: POP 00000fc3: POP 00000fc4: POP 00000fc5: POP 00000fc6: POP 00000fc7: JUMP 00000fc8: JUMPDEST 00000fc9: PUSH1 0x0a 00000fcb: SLOAD 00000fcc: PUSH1 0x01 00000fce: PUSH1 0x01 00000fd0: PUSH1 0xa0 00000fd2: SHL 00000fd3: SUB 00000fd4: AND 00000fd5: SWAP1 00000fd6: JUMP 00000fd7: JUMPDEST 00000fd8: PUSH1 0x00 00000fda: DUP1 00000fdb: PUSH1 0x60 00000fdd: DUP1 00000fde: PUSH1 0x0e 00000fe0: DUP7 00000fe1: DUP7 00000fe2: PUSH1 0x40 00000fe4: MLOAD 00000fe5: PUSH1 0x24 00000fe7: ADD 00000fe8: DUP1 00000fe9: DUP4 00000fea: DUP2 00000feb: MSTORE 00000fec: PUSH1 0x20 00000fee: ADD 00000fef: DUP3 00000ff0: ISZERO 00000ff1: ISZERO 00000ff2: DUP2 00000ff3: MSTORE 00000ff4: PUSH1 0x20 00000ff6: ADD 00000ff7: SWAP3 00000ff8: POP 00000ff9: POP 00000ffa: POP 00000ffb: PUSH1 0x40 00000ffd: MLOAD 00000ffe: PUSH1 0x20 00001000: DUP2 00001001: DUP4 00001002: SUB 00001003: SUB 00001004: DUP2 00001005: MSTORE 00001006: SWAP1 00001007: PUSH1 0x40 00001009: MSTORE 0000100a: SWAP1 0000100b: PUSH1 0x40 0000100d: MLOAD 0000100e: DUP1 0000100f: DUP3 00001010: DUP1 00001011: SLOAD 00001012: PUSH1 0x01 00001014: DUP2 00001015: PUSH1 0x01 00001017: AND 00001018: ISZERO 00001019: PUSH2 0x0100 0000101c: MUL 0000101d: SUB 0000101e: AND 0000101f: PUSH1 0x02 00001021: SWAP1 00001022: DIV 00001023: DUP1 00001024: ISZERO 00001025: PUSH2 0x09d9 00001028: JUMPI 00001029: DUP1 0000102a: PUSH1 0x1f 0000102c: LT 0000102d: PUSH2 0x09b7 00001030: JUMPI 00001031: PUSH2 0x0100 00001034: DUP1 00001035: DUP4 00001036: SLOAD 00001037: DIV 00001038: MUL 00001039: DUP4 0000103a: MSTORE 0000103b: SWAP2 0000103c: DUP3 0000103d: ADD 0000103e: SWAP2 0000103f: PUSH2 0x09d9 00001042: JUMP 00001043: JUMPDEST 00001044: PUSH1 0x00 00001046: DUP1 00001047: PUSH1 0x60 00001049: DUP1 0000104a: PUSH1 0x0c 0000104c: DUP7 0000104d: DUP7 0000104e: PUSH1 0x40 00001050: MLOAD 00001051: PUSH1 0x24 00001053: ADD 00001054: DUP1 00001055: DUP4 00001056: DUP2 00001057: MSTORE 00001058: PUSH1 0x20 0000105a: ADD 0000105b: DUP3 0000105c: ISZERO 0000105d: ISZERO 0000105e: DUP2 0000105f: MSTORE 00001060: PUSH1 0x20 00001062: ADD 00001063: SWAP3 00001064: POP 00001065: POP 00001066: POP 00001067: PUSH1 0x40 00001069: MLOAD 0000106a: PUSH1 0x20 0000106c: DUP2 0000106d: DUP4 0000106e: SUB 0000106f: SUB 00001070: DUP2 00001071: MSTORE 00001072: SWAP1 00001073: PUSH1 0x40 00001075: MSTORE 00001076: SWAP1 00001077: PUSH1 0x40 00001079: MLOAD 0000107a: DUP1 0000107b: DUP3 0000107c: DUP1 0000107d: SLOAD 0000107e: PUSH1 0x01 00001080: DUP2 00001081: PUSH1 0x01 00001083: AND 00001084: ISZERO 00001085: PUSH2 0x0100 00001088: MUL 00001089: SUB 0000108a: AND 0000108b: PUSH1 0x02 0000108d: SWAP1 0000108e: DIV 0000108f: DUP1 00001090: ISZERO 00001091: PUSH2 0x09d9 00001094: JUMPI 00001095: DUP1 00001096: PUSH1 0x1f 00001098: LT 00001099: PUSH2 0x09b7 0000109c: JUMPI 0000109d: PUSH2 0x0100 000010a0: DUP1 000010a1: DUP4 000010a2: SLOAD 000010a3: DIV 000010a4: MUL 000010a5: DUP4 000010a6: MSTORE 000010a7: SWAP2 000010a8: DUP3 000010a9: ADD 000010aa: SWAP2 000010ab: PUSH2 0x09d9 000010ae: JUMP 000010af: JUMPDEST 000010b0: PUSH1 0x00 000010b2: DUP1 000010b3: SLOAD 000010b4: PUSH1 0x40 000010b6: DUP1 000010b7: MLOAD 000010b8: DUP1 000010b9: DUP3 000010ba: ADD 000010bb: SWAP1 000010bc: SWAP2 000010bd: MSTORE 000010be: PUSH1 0x01 000010c0: DUP2 000010c1: MSTORE 000010c2: PUSH1 0x4f 000010c4: PUSH1 0xf8 000010c6: SHL 000010c7: PUSH1 0x20 000010c9: DUP3 000010ca: ADD 000010cb: MSTORE 000010cc: SWAP1 000010cd: PUSH1 0x01 000010cf: PUSH1 0x01 000010d1: PUSH1 0xa0 000010d3: SHL 000010d4: SUB 000010d5: AND 000010d6: CALLER 000010d7: EQ 000010d8: PUSH2 0x1122 000010db: JUMPI 000010dc: PUSH1 0x40 000010de: MLOAD 000010df: PUSH3 0x461bcd 000010e3: PUSH1 0xe5 000010e5: SHL 000010e6: DUP2 000010e7: MSTORE 000010e8: PUSH1 0x20 000010ea: PUSH1 0x04 000010ec: DUP3 000010ed: ADD 000010ee: DUP2 000010ef: DUP2 000010f0: MSTORE 000010f1: DUP4 000010f2: MLOAD 000010f3: PUSH1 0x24 000010f5: DUP5 000010f6: ADD 000010f7: MSTORE 000010f8: DUP4 000010f9: MLOAD 000010fa: SWAP1 000010fb: SWAP3 000010fc: DUP4 000010fd: SWAP3 000010fe: PUSH1 0x44 00001100: SWAP1 00001101: SWAP2 00001102: ADD 00001103: SWAP2 00001104: SWAP1 00001105: DUP6 00001106: ADD 00001107: SWAP1 00001108: DUP1 00001109: DUP4 0000110a: DUP4 0000110b: PUSH1 0x00 0000110d: DUP4 0000110e: ISZERO 0000110f: PUSH2 0x08af 00001112: JUMPI 00001113: DUP2 00001114: DUP2 00001115: ADD 00001116: MLOAD 00001117: DUP4 00001118: DUP3 00001119: ADD 0000111a: MSTORE 0000111b: PUSH1 0x20 0000111d: ADD 0000111e: PUSH2 0x0897 00001121: JUMP 00001122: JUMPDEST 00001123: POP 00001124: POP 00001125: PUSH1 0x0b 00001127: DUP1 00001128: SLOAD 00001129: PUSH1 0x01 0000112b: PUSH1 0x01 0000112d: PUSH1 0xa0 0000112f: SHL 00001130: SUB 00001131: DUP4 00001132: AND 00001133: PUSH1 0x01 00001135: PUSH1 0x01 00001137: PUSH1 0xa0 00001139: SHL 0000113a: SUB 0000113b: NOT 0000113c: SWAP1 0000113d: SWAP2 0000113e: AND 0000113f: OR 00001140: SWAP1 00001141: SSTORE 00001142: PUSH1 0x01 00001144: SWAP2 00001145: SWAP1 00001146: POP 00001147: JUMP 00001148: JUMPDEST 00001149: PUSH1 0x00 0000114b: DUP1 0000114c: SLOAD 0000114d: PUSH1 0x40 0000114f: DUP1 00001150: MLOAD 00001151: DUP1 00001152: DUP3 00001153: ADD 00001154: SWAP1 00001155: SWAP2 00001156: MSTORE 00001157: PUSH1 0x01 00001159: DUP2 0000115a: MSTORE 0000115b: PUSH1 0x4f 0000115d: PUSH1 0xf8 0000115f: SHL 00001160: PUSH1 0x20 00001162: DUP3 00001163: ADD 00001164: MSTORE 00001165: SWAP1 00001166: PUSH1 0x01 00001168: PUSH1 0x01 0000116a: PUSH1 0xa0 0000116c: SHL 0000116d: SUB 0000116e: AND 0000116f: CALLER 00001170: EQ 00001171: PUSH2 0x11bb 00001174: JUMPI 00001175: PUSH1 0x40 00001177: MLOAD 00001178: PUSH3 0x461bcd 0000117c: PUSH1 0xe5 0000117e: SHL 0000117f: DUP2 00001180: MSTORE 00001181: PUSH1 0x20 00001183: PUSH1 0x04 00001185: DUP3 00001186: ADD 00001187: DUP2 00001188: DUP2 00001189: MSTORE 0000118a: DUP4 0000118b: MLOAD 0000118c: PUSH1 0x24 0000118e: DUP5 0000118f: ADD 00001190: MSTORE 00001191: DUP4 00001192: MLOAD 00001193: SWAP1 00001194: SWAP3 00001195: DUP4 00001196: SWAP3 00001197: PUSH1 0x44 00001199: SWAP1 0000119a: SWAP2 0000119b: ADD 0000119c: SWAP2 0000119d: SWAP1 0000119e: DUP6 0000119f: ADD 000011a0: SWAP1 000011a1: DUP1 000011a2: DUP4 000011a3: DUP4 000011a4: PUSH1 0x00 000011a6: DUP4 000011a7: ISZERO 000011a8: PUSH2 0x08af 000011ab: JUMPI 000011ac: DUP2 000011ad: DUP2 000011ae: ADD 000011af: MLOAD 000011b0: DUP4 000011b1: DUP3 000011b2: ADD 000011b3: MSTORE 000011b4: PUSH1 0x20 000011b6: ADD 000011b7: PUSH2 0x0897 000011ba: JUMP 000011bb: JUMPDEST 000011bc: POP 000011bd: POP 000011be: PUSH1 0x01 000011c0: SWAP1 000011c1: DUP2 000011c2: SSTORE 000011c3: SWAP1 000011c4: JUMP 000011c5: JUMPDEST 000011c6: PUSH1 0x00 000011c8: DUP1 000011c9: PUSH1 0x60 000011cb: DUP1 000011cc: PUSH1 0x0f 000011ce: DUP7 000011cf: DUP7 000011d0: PUSH1 0x40 000011d2: MLOAD 000011d3: PUSH1 0x24 000011d5: ADD 000011d6: DUP1 000011d7: DUP4 000011d8: DUP2 000011d9: MSTORE 000011da: PUSH1 0x20 000011dc: ADD 000011dd: DUP3 000011de: ISZERO 000011df: ISZERO 000011e0: DUP2 000011e1: MSTORE 000011e2: PUSH1 0x20 000011e4: ADD 000011e5: SWAP3 000011e6: POP 000011e7: POP 000011e8: POP 000011e9: PUSH1 0x40 000011eb: MLOAD 000011ec: PUSH1 0x20 000011ee: DUP2 000011ef: DUP4 000011f0: SUB 000011f1: SUB 000011f2: DUP2 000011f3: MSTORE 000011f4: SWAP1 000011f5: PUSH1 0x40 000011f7: MSTORE 000011f8: SWAP1 000011f9: PUSH1 0x40 000011fb: MLOAD 000011fc: DUP1 000011fd: DUP3 000011fe: DUP1 000011ff: SLOAD 00001200: PUSH1 0x01 00001202: DUP2 00001203: PUSH1 0x01 00001205: AND 00001206: ISZERO 00001207: PUSH2 0x0100 0000120a: MUL 0000120b: SUB 0000120c: AND 0000120d: PUSH1 0x02 0000120f: SWAP1 00001210: DIV 00001211: DUP1 00001212: ISZERO 00001213: PUSH2 0x09d9 00001216: JUMPI 00001217: DUP1 00001218: PUSH1 0x1f 0000121a: LT 0000121b: PUSH2 0x09b7 0000121e: JUMPI 0000121f: PUSH2 0x0100 00001222: DUP1 00001223: DUP4 00001224: SLOAD 00001225: DIV 00001226: MUL 00001227: DUP4 00001228: MSTORE 00001229: SWAP2 0000122a: DUP3 0000122b: ADD 0000122c: SWAP2 0000122d: PUSH2 0x09d9 00001230: JUMP 00001231: JUMPDEST 00001232: PUSH1 0x0b 00001234: SLOAD 00001235: PUSH1 0x01 00001237: PUSH1 0x01 00001239: PUSH1 0xa0 0000123b: SHL 0000123c: SUB 0000123d: AND 0000123e: SWAP1 0000123f: JUMP 00001240: JUMPDEST 00001241: PUSH1 0x0a 00001243: SLOAD 00001244: PUSH1 0x01 00001246: PUSH1 0x01 00001248: PUSH1 0xa0 0000124a: SHL 0000124b: SUB 0000124c: AND 0000124d: DUP2 0000124e: JUMP 0000124f: JUMPDEST 00001250: PUSH1 0x00 00001252: DUP1 00001253: SLOAD 00001254: PUSH1 0x40 00001256: DUP1 00001257: MLOAD 00001258: DUP1 00001259: DUP3 0000125a: ADD 0000125b: SWAP1 0000125c: SWAP2 0000125d: MSTORE 0000125e: PUSH1 0x01 00001260: DUP2 00001261: MSTORE 00001262: PUSH1 0x4f 00001264: PUSH1 0xf8 00001266: SHL 00001267: PUSH1 0x20 00001269: DUP3 0000126a: ADD 0000126b: MSTORE 0000126c: SWAP1 0000126d: PUSH1 0x01 0000126f: PUSH1 0x01 00001271: PUSH1 0xa0 00001273: SHL 00001274: SUB 00001275: AND 00001276: CALLER 00001277: EQ 00001278: PUSH2 0x12c2 0000127b: JUMPI 0000127c: PUSH1 0x40 0000127e: MLOAD 0000127f: PUSH3 0x461bcd 00001283: PUSH1 0xe5 00001285: SHL 00001286: DUP2 00001287: MSTORE 00001288: PUSH1 0x20 0000128a: PUSH1 0x04 0000128c: DUP3 0000128d: ADD 0000128e: DUP2 0000128f: DUP2 00001290: MSTORE 00001291: DUP4 00001292: MLOAD 00001293: PUSH1 0x24 00001295: DUP5 00001296: ADD 00001297: MSTORE 00001298: DUP4 00001299: MLOAD 0000129a: SWAP1 0000129b: SWAP3 0000129c: DUP4 0000129d: SWAP3 0000129e: PUSH1 0x44 000012a0: SWAP1 000012a1: SWAP2 000012a2: ADD 000012a3: SWAP2 000012a4: SWAP1 000012a5: DUP6 000012a6: ADD 000012a7: SWAP1 000012a8: DUP1 000012a9: DUP4 000012aa: DUP4 000012ab: PUSH1 0x00 000012ad: DUP4 000012ae: ISZERO 000012af: PUSH2 0x08af 000012b2: JUMPI 000012b3: DUP2 000012b4: DUP2 000012b5: ADD 000012b6: MLOAD 000012b7: DUP4 000012b8: DUP3 000012b9: ADD 000012ba: MSTORE 000012bb: PUSH1 0x20 000012bd: ADD 000012be: PUSH2 0x0897 000012c1: JUMP 000012c2: JUMPDEST 000012c3: POP 000012c4: POP 000012c5: PUSH1 0x00 000012c7: DUP1 000012c8: SLOAD 000012c9: PUSH1 0x01 000012cb: PUSH1 0x01 000012cd: PUSH1 0xa0 000012cf: SHL 000012d0: SUB 000012d1: DUP4 000012d2: AND 000012d3: PUSH1 0x01 000012d5: PUSH1 0x01 000012d7: PUSH1 0xa0 000012d9: SHL 000012da: SUB 000012db: NOT 000012dc: SWAP1 000012dd: SWAP2 000012de: AND 000012df: OR 000012e0: SWAP1 000012e1: SSTORE 000012e2: PUSH1 0x01 000012e4: SWAP2 000012e5: SWAP1 000012e6: POP 000012e7: JUMP 000012e8: JUMPDEST 000012e9: PUSH1 0x05 000012eb: SLOAD 000012ec: PUSH1 0x00 000012ee: SWAP1 000012ef: PUSH1 0x60 000012f1: SWAP1 000012f2: CALLER 000012f3: SWAP1 000012f4: PUSH1 0x01 000012f6: PUSH1 0x01 000012f8: PUSH1 0xa0 000012fa: SHL 000012fb: SUB 000012fc: AND 000012fd: DUP2 000012fe: EQ 000012ff: DUP1 00001300: PUSH2 0x1316 00001303: JUMPI 00001304: POP 00001305: PUSH1 0x00 00001307: SLOAD 00001308: PUSH1 0x01 0000130a: PUSH1 0x01 0000130c: PUSH1 0xa0 0000130e: SHL 0000130f: SUB 00001310: DUP3 00001311: DUP2 00001312: AND 00001313: SWAP2 00001314: AND 00001315: EQ 00001316: JUMPDEST 00001317: PUSH1 0x40 00001319: MLOAD 0000131a: DUP1 0000131b: PUSH1 0x40 0000131d: ADD 0000131e: PUSH1 0x40 00001320: MSTORE 00001321: DUP1 00001322: PUSH1 0x01 00001324: DUP2 00001325: MSTORE 00001326: PUSH1 0x20 00001328: ADD 00001329: PUSH1 0x4d 0000132b: PUSH1 0xf8 0000132d: SHL 0000132e: DUP2 0000132f: MSTORE 00001330: POP 00001331: SWAP1 00001332: PUSH2 0x137c 00001335: JUMPI 00001336: PUSH1 0x40 00001338: MLOAD 00001339: PUSH3 0x461bcd 0000133d: PUSH1 0xe5 0000133f: SHL 00001340: DUP2 00001341: MSTORE 00001342: PUSH1 0x20 00001344: PUSH1 0x04 00001346: DUP3 00001347: ADD 00001348: DUP2 00001349: DUP2 0000134a: MSTORE 0000134b: DUP4 0000134c: MLOAD 0000134d: PUSH1 0x24 0000134f: DUP5 00001350: ADD 00001351: MSTORE 00001352: DUP4 00001353: MLOAD 00001354: SWAP1 00001355: SWAP3 00001356: DUP4 00001357: SWAP3 00001358: PUSH1 0x44 0000135a: SWAP1 0000135b: SWAP2 0000135c: ADD 0000135d: SWAP2 0000135e: SWAP1 0000135f: DUP6 00001360: ADD 00001361: SWAP1 00001362: DUP1 00001363: DUP4 00001364: DUP4 00001365: PUSH1 0x00 00001367: DUP4 00001368: ISZERO 00001369: PUSH2 0x08af 0000136c: JUMPI 0000136d: DUP2 0000136e: DUP2 0000136f: ADD 00001370: MLOAD 00001371: DUP4 00001372: DUP3 00001373: ADD 00001374: MSTORE 00001375: PUSH1 0x20 00001377: ADD 00001378: PUSH2 0x0897 0000137b: JUMP 0000137c: JUMPDEST 0000137d: POP 0000137e: PUSH1 0x0a 00001380: SLOAD 00001381: PUSH1 0x40 00001383: MLOAD 00001384: DUP6 00001385: MLOAD 00001386: PUSH1 0x00 00001388: SWAP3 00001389: PUSH1 0x60 0000138b: SWAP3 0000138c: PUSH1 0x01 0000138e: PUSH1 0x01 00001390: PUSH1 0xa0 00001392: SHL 00001393: SUB 00001394: SWAP1 00001395: SWAP2 00001396: AND 00001397: SWAP2 00001398: DUP9 00001399: SWAP2 0000139a: SWAP1 0000139b: DUP2 0000139c: SWAP1 0000139d: PUSH1 0x20 0000139f: DUP5 000013a0: ADD 000013a1: SWAP1 000013a2: DUP1 000013a3: DUP4 000013a4: DUP4 000013a5: PUSH1 0x20 000013a7: DUP4 000013a8: LT 000013a9: PUSH2 0x0be7 000013ac: JUMPI 000013ad: DUP1 000013ae: MLOAD 000013af: DUP3 000013b0: MSTORE 000013b1: PUSH1 0x1f 000013b3: NOT 000013b4: SWAP1 000013b5: SWAP3 000013b6: ADD 000013b7: SWAP2 000013b8: PUSH1 0x20 000013ba: SWAP2 000013bb: DUP3 000013bc: ADD 000013bd: SWAP2 000013be: ADD 000013bf: PUSH2 0x0bc8 000013c2: JUMP 000013c3: JUMPDEST 000013c4: DUP3 000013c5: DUP1 000013c6: SLOAD 000013c7: PUSH1 0x01 000013c9: DUP2 000013ca: PUSH1 0x01 000013cc: AND 000013cd: ISZERO 000013ce: PUSH2 0x0100 000013d1: MUL 000013d2: SUB 000013d3: AND 000013d4: PUSH1 0x02 000013d6: SWAP1 000013d7: DIV 000013d8: SWAP1 000013d9: PUSH1 0x00 000013db: MSTORE 000013dc: PUSH1 0x20 000013de: PUSH1 0x00 000013e0: KECCAK256 000013e1: SWAP1 000013e2: PUSH1 0x1f 000013e4: ADD 000013e5: PUSH1 0x20 000013e7: SWAP1 000013e8: DIV 000013e9: DUP2 000013ea: ADD 000013eb: SWAP3 000013ec: DUP3 000013ed: PUSH1 0x1f 000013ef: LT 000013f0: PUSH2 0x1404 000013f3: JUMPI 000013f4: DUP1 000013f5: MLOAD 000013f6: PUSH1 0xff 000013f8: NOT 000013f9: AND 000013fa: DUP4 000013fb: DUP1 000013fc: ADD 000013fd: OR 000013fe: DUP6 000013ff: SSTORE 00001400: PUSH2 0x1431 00001403: JUMP 00001404: JUMPDEST 00001405: DUP3 00001406: DUP1 00001407: ADD 00001408: PUSH1 0x01 0000140a: ADD 0000140b: DUP6 0000140c: SSTORE 0000140d: DUP3 0000140e: ISZERO 0000140f: PUSH2 0x1431 00001412: JUMPI 00001413: SWAP2 00001414: DUP3 00001415: ADD 00001416: JUMPDEST 00001417: DUP3 00001418: DUP2 00001419: GT 0000141a: ISZERO 0000141b: PUSH2 0x1431 0000141e: JUMPI 0000141f: DUP3 00001420: MLOAD 00001421: DUP3 00001422: SSTORE 00001423: SWAP2 00001424: PUSH1 0x20 00001426: ADD 00001427: SWAP2 00001428: SWAP1 00001429: PUSH1 0x01 0000142b: ADD 0000142c: SWAP1 0000142d: PUSH2 0x1416 00001430: JUMP 00001431: JUMPDEST 00001432: POP 00001433: PUSH2 0x143d 00001436: SWAP3 00001437: SWAP2 00001438: POP 00001439: PUSH2 0x1441 0000143c: JUMP 0000143d: JUMPDEST 0000143e: POP 0000143f: SWAP1 00001440: JUMP 00001441: JUMPDEST 00001442: JUMPDEST 00001443: DUP1 00001444: DUP3 00001445: GT 00001446: ISZERO 00001447: PUSH2 0x143d 0000144a: JUMPI 0000144b: PUSH1 0x00 0000144d: DUP2 0000144e: SSTORE 0000144f: PUSH1 0x01 00001451: ADD 00001452: PUSH2 0x1442 00001455: JUMP 00001456: INVALID 00001457: LOG2 00001458: PUSH5 0x6970667358 0000145e: UNKNOWN(0x22) 0000145f: SLT 00001460: KECCAK256 00001461: UNKNOWN(0xCD) 00001462: CALLER 00001463: UNKNOWN(0x24) 00001464: CREATE 00001465: SWAP6 00001466: UNKNOWN(0xFB) 00001467: CODECOPY 00001468: CODESIZE 00001469: PUSH11 0xfd6ff47e770055168d4a1a 00001475: SWAP1 00001476: PUSH17 0x6d3528877368b7cadad664736f6c634300 00001488: MOD 00001489: UNKNOWN(0x0C) 0000148a: STOP 0000148b: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | yes | yes |
viewtrace_id: 0x7a790f4110cdd466a2f40227098f22ce13a98bc7a8c8d0d1678801eaaddc8025
call_targets:
0x43506849d7c04f9138d1a2050bbf3a0c054402dd, 0x47be3d1def039bd85e7570864bb5148e7491a65f, 0xc06b71ec195ccaa98a57dd4ba9e90a7469c37d13
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "confirmed",
"attempts": 3,
"trace_id": "0x7a790f4110cdd466a2f40227098f22ce13a98bc7a8c8d0d1678801eaaddc8025",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x43506849d7c04f9138d1a2050bbf3a0c054402dd",
"0x47be3d1def039bd85e7570864bb5148e7491a65f",
"0xc06b71ec195ccaa98a57dd4ba9e90a7469c37d13"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xba0b3623",
"selector": "0xba0b3623",
"calldata_variants": [
"0xba0b3623",
"0xba0b36230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0a47d45",
"selector": "0xc0a47d45",
"calldata_variants": [
"0xc0a47d45",
"0xc0a47d450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc80916d4",
"selector": "0xc80916d4",
"calldata_variants": [
"0xc80916d4",
"0xc80916d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd3a417a2",
"selector": "0xd3a417a2",
"calldata_variants": [
"0xd3a417a2",
"0xd3a417a20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff41073a",
"selector": "0xff41073a",
"calldata_variants": [
"0xff41073a",
"0xff41073a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x829311cc",
"selector": "0x829311cc",
"calldata_variants": [
"0x829311cc",
"0x829311cc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8cd01307",
"selector": "0x8cd01307",
"calldata_variants": [
"0x8cd01307",
"0x8cd013070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a408321",
"selector": "0x9a408321",
"calldata_variants": [
"0x9a408321",
"0x9a4083210000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2086,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 2681,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 3096,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 3,
"untrusted_delegatecall_count": 3
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x3ae759837e05c0d6c93658f81eefe63c4b84ec9071aaab554de8943c1b62ae04
call_targets:
0x128647690c7733593aa3dd149eebc5e256e79217
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x3ae759837e05c0d6c93658f81eefe63c4b84ec9071aaab554de8943c1b62ae04",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x128647690c7733593aa3dd149eebc5e256e79217"
],
"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": "0xba0b3623",
"selector": "0xba0b3623",
"calldata_variants": [
"0xba0b3623",
"0xba0b36230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0a47d45",
"selector": "0xc0a47d45",
"calldata_variants": [
"0xc0a47d45",
"0xc0a47d450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc80916d4",
"selector": "0xc80916d4",
"calldata_variants": [
"0xc80916d4",
"0xc80916d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd3a417a2",
"selector": "0xd3a417a2",
"calldata_variants": [
"0xd3a417a2",
"0xd3a417a20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff41073a",
"selector": "0xff41073a",
"calldata_variants": [
"0xff41073a",
"0xff41073a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x829311cc",
"selector": "0x829311cc",
"calldata_variants": [
"0x829311cc",
"0x829311cc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8cd01307",
"selector": "0x8cd01307",
"calldata_variants": [
"0x8cd01307",
"0x8cd013070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a408321",
"selector": "0x9a408321",
"calldata_variants": [
"0x9a408321",
"0x9a4083210000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3727,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x3ae759837e05c0d6c93658f81eefe63c4b84ec9071aaab554de8943c1b62ae04
call_targets:
0x128647690c7733593aa3dd149eebc5e256e79217
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x3ae759837e05c0d6c93658f81eefe63c4b84ec9071aaab554de8943c1b62ae04",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x128647690c7733593aa3dd149eebc5e256e79217"
],
"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": "0xba0b3623",
"selector": "0xba0b3623",
"calldata_variants": [
"0xba0b3623",
"0xba0b36230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0a47d45",
"selector": "0xc0a47d45",
"calldata_variants": [
"0xc0a47d45",
"0xc0a47d450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc80916d4",
"selector": "0xc80916d4",
"calldata_variants": [
"0xc80916d4",
"0xc80916d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd3a417a2",
"selector": "0xd3a417a2",
"calldata_variants": [
"0xd3a417a2",
"0xd3a417a20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff41073a",
"selector": "0xff41073a",
"calldata_variants": [
"0xff41073a",
"0xff41073a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x829311cc",
"selector": "0x829311cc",
"calldata_variants": [
"0x829311cc",
"0x829311cc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8cd01307",
"selector": "0x8cd01307",
"calldata_variants": [
"0x8cd01307",
"0x8cd013070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a408321",
"selector": "0x9a408321",
"calldata_variants": [
"0x9a408321",
"0x9a4083210000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3727,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| high | upgradeability | slither | tokenProxy.handlerProxy(bytes) (contracts/Contract.sol#479-485) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "handlerProxy",
"type": "function",
"source_mapping": {
"lines": [
479,
480,
481,
482,
483,
484,
485
],
"start": 19163,
"length": 267,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "handlerProxy(bytes)"
}
},
{
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
483
],
"start": 19307,
"length": 49,
"ending_column": 67,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "handlerProxy",
"type": "function",
"source_mapping": {
"lines": [
479,
480,
481,
482,
483,
484,
485
],
"start": 19163,
"length": 267,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "handlerProxy(bytes)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "handlerProxy",
"type": "function",
"lines": [
479,
480,
481,
482,
483,
484,
485
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"lines": [
483
]
}
],
"description": "tokenProxy.handlerProxy(bytes) (contracts/Contract.sol#479-485) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#483)"
}
|
| high | upgradeability | slither | tokenProxy.siProxy(bytes) (contracts/Contract.sol#506-513) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "siProxy",
"type": "function",
"source_mapping": {
"lines": [
506,
507,
508,
509,
510,
511,
512,
513
],
"start": 20077,
"length": 257,
"ending_column": 45,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "siProxy(bytes)"
}
},
{
"name": "(result,returnData) = SI.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
509,
510,
511
],
"start": 20216,
"length": 44,
"ending_column": 15,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 60,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "siProxy",
"type": "function",
"source_mapping": {
"lines": [
506,
507,
508,
509,
510,
511,
512,
513
],
"start": 20077,
"length": 257,
"ending_column": 45,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "siProxy(bytes)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "siProxy",
"type": "function",
"lines": [
506,
507,
508,
509,
510,
511,
512,
513
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = SI.delegatecall(data)",
"type": "node",
"lines": [
509,
510,
511
]
}
],
"description": "tokenProxy.siProxy(bytes) (contracts/Contract.sol#506-513) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = SI.delegatecall(data) (contracts/Contract.sol#509-511)"
}
|
| high | upgradeability | slither | tokenProxy.repay(uint256,bool) (contracts/Contract.sol#466-475) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "repay",
"type": "function",
"source_mapping": {
"lines": [
466,
467,
468,
469,
470,
471,
472,
473,
474,
475
],
"start": 18679,
"length": 320,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "repay(uint256,bool)"
}
},
{
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
471,
472,
473,
474
],
"start": 18890,
"length": 49,
"ending_column": 39,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "repay",
"type": "function",
"source_mapping": {
"lines": [
466,
467,
468,
469,
470,
471,
472,
473,
474,
475
],
"start": 18679,
"length": 320,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "repay(uint256,bool)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "repay",
"type": "function",
"lines": [
466,
467,
468,
469,
470,
471,
472,
473,
474,
475
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"lines": [
471,
472,
473,
474
]
}
],
"description": "tokenProxy.repay(uint256,bool) (contracts/Contract.sol#466-475) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#471-474)"
}
|
| high | upgradeability | slither | tokenProxy.deposit(uint256,bool) (contracts/Contract.sol#419-428) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "deposit",
"type": "function",
"source_mapping": {
"lines": [
419,
420,
421,
422,
423,
424,
425,
426,
427,
428
],
"start": 16935,
"length": 324,
"ending_column": 18,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 25,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "deposit(uint256,bool)"
}
},
{
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
426,
427
],
"start": 17150,
"length": 49,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 50,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "deposit",
"type": "function",
"source_mapping": {
"lines": [
419,
420,
421,
422,
423,
424,
425,
426,
427,
428
],
"start": 16935,
"length": 324,
"ending_column": 18,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 25,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "deposit(uint256,bool)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "deposit",
"type": "function",
"lines": [
419,
420,
421,
422,
423,
424,
425,
426,
427,
428
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"lines": [
426,
427
]
}
],
"description": "tokenProxy.deposit(uint256,bool) (contracts/Contract.sol#419-428) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#426-427)"
}
|
| high | upgradeability | slither | tokenProxy.siViewProxy(bytes) (contracts/Contract.sol#521-528) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "siViewProxy",
"type": "function",
"source_mapping": {
"lines": [
521,
522,
523,
524,
525,
526,
527,
528
],
"start": 20564,
"length": 243,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 7,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "siViewProxy(bytes)"
}
},
{
"name": "(result,returnData) = SI.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
523,
524,
525,
526
],
"start": 20689,
"length": 44,
"ending_column": 22,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 92,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "siViewProxy",
"type": "function",
"source_mapping": {
"lines": [
521,
522,
523,
524,
525,
526,
527,
528
],
"start": 20564,
"length": 243,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 7,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "siViewProxy(bytes)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "siViewProxy",
"type": "function",
"lines": [
521,
522,
523,
524,
525,
526,
527,
528
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = SI.delegatecall(data)",
"type": "node",
"lines": [
523,
524,
525,
526
]
}
],
"description": "tokenProxy.siViewProxy(bytes) (contracts/Contract.sol#521-528) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = SI.delegatecall(data) (contracts/Contract.sol#523-526)"
}
|
| high | upgradeability | slither | tokenProxy.handlerViewProxy(bytes) (contracts/Contract.sol#493-500) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "handlerViewProxy",
"type": "function",
"source_mapping": {
"lines": [
493,
494,
495,
496,
497,
498,
499,
500
],
"start": 19650,
"length": 253,
"ending_column": 8,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "handlerViewProxy(bytes)"
}
},
{
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
497,
498
],
"start": 19780,
"length": 49,
"ending_column": 28,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 7,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "handlerViewProxy",
"type": "function",
"source_mapping": {
"lines": [
493,
494,
495,
496,
497,
498,
499,
500
],
"start": 19650,
"length": 253,
"ending_column": 8,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "handlerViewProxy(bytes)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "handlerViewProxy",
"type": "function",
"lines": [
493,
494,
495,
496,
497,
498,
499,
500
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"lines": [
497,
498
]
}
],
"description": "tokenProxy.handlerViewProxy(bytes) (contracts/Contract.sol#493-500) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#497-498)"
}
|
| high | upgradeability | slither | tokenProxy.withdraw(uint256,bool) (contracts/Contract.sol#435-443) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "withdraw",
"type": "function",
"source_mapping": {
"lines": [
435,
436,
437,
438,
439,
440,
441,
442,
443
],
"start": 17529,
"length": 316,
"ending_column": 57,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "withdraw(uint256,bool)"
}
},
{
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
442
],
"start": 17736,
"length": 49,
"ending_column": 79,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "withdraw",
"type": "function",
"source_mapping": {
"lines": [
435,
436,
437,
438,
439,
440,
441,
442,
443
],
"start": 17529,
"length": 316,
"ending_column": 57,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "withdraw(uint256,bool)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "withdraw",
"type": "function",
"lines": [
435,
436,
437,
438,
439,
440,
441,
442,
443
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"lines": [
442
]
}
],
"description": "tokenProxy.withdraw(uint256,bool) (contracts/Contract.sol#435-443) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#442)"
}
|
| high | upgradeability | slither | tokenProxy.borrow(uint256,bool) (contracts/Contract.sol#451-459) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "borrow",
"type": "function",
"source_mapping": {
"lines": [
451,
452,
453,
454,
455,
456,
457,
458,
459
],
"start": 18107,
"length": 314,
"ending_column": 35,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "borrow(uint256,bool)"
}
},
{
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
458
],
"start": 18312,
"length": 49,
"ending_column": 53,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "borrow",
"type": "function",
"source_mapping": {
"lines": [
451,
452,
453,
454,
455,
456,
457,
458,
459
],
"start": 18107,
"length": 314,
"ending_column": 35,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "tokenProxy",
"type": "contract",
"source_mapping": {
"lines": [
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
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
],
"start": 12552,
"length": 8257,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-4omqyvxs/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "borrow(uint256,bool)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "borrow",
"type": "function",
"lines": [
451,
452,
453,
454,
455,
456,
457,
458,
459
]
},
{
"file": "contracts/Contract.sol",
"name": "(result,returnData) = handler.delegatecall(data)",
"type": "node",
"lines": [
458
]
}
],
"description": "tokenProxy.borrow(uint256,bool) (contracts/Contract.sol#451-459) uses delegatecall to a input-controlled function id\n\t- (result,returnData) = handler.delegatecall(data) (contracts/Contract.sol#458)"
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 3
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xdf534de86d7baf40274b3d3197ba1618d3093d7ecf98e1203940bb0b69f2b67d
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0xdf534de86d7baf40274b3d3197ba1618d3093d7ecf98e1203940bb0b69f2b67d",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xba0b3623",
"selector": "0xba0b3623",
"calldata_variants": [
"0xba0b3623",
"0xba0b36230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0a47d45",
"selector": "0xc0a47d45",
"calldata_variants": [
"0xc0a47d45",
"0xc0a47d450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc80916d4",
"selector": "0xc80916d4",
"calldata_variants": [
"0xc80916d4",
"0xc80916d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd3a417a2",
"selector": "0xd3a417a2",
"calldata_variants": [
"0xd3a417a2",
"0xd3a417a20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff41073a",
"selector": "0xff41073a",
"calldata_variants": [
"0xff41073a",
"0xff41073a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x829311cc",
"selector": "0x829311cc",
"calldata_variants": [
"0x829311cc",
"0x829311cc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8cd01307",
"selector": "0x8cd01307",
"calldata_variants": [
"0x8cd01307",
"0x8cd013070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a408321",
"selector": "0x9a408321",
"calldata_variants": [
"0x9a408321",
"0x9a4083210000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 0
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 1,
"create2_count": 0
}
|