019c0ea9-08cc-7154-a38a-1d2d33f60a5c
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 |
|---|---|---|---|---|
| 41914 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41915 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41916 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41917 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41918 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41919 | detector.run | complete | 1 / 3 | 2 months ago |
| 41920 | validation.fork | complete | 1 / 3 | 2 months ago |
| 42359 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 42360 | tool.slither | failed | 2 / 2 | 2 months ago |
{
"status": "not_proxy"
}
Traceback (most recent call last):
File "/var/www/tripwire/worker/worker.py", line 198, in main
payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
stdout_text, stderr_text, result_json = _run_slither(
~~~~~~~~~~~~^
workspace,
^^^^^^^^^^
...<4 lines>...
target_path=target_path,
^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-a1v7nk13)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-a1v7nk13)
'forge' returned non-zero exit code 1
[2m2026-01-30T16:36:07.698970Z[0m [31mERROR[0m [2mfoundry_compilers_artifacts_solc::sources[0m[2m:[0m [3merror[0m[2m=[0m"/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol": No such file or directory (os error 2)
stdout: [2m2026-01-30T16:36:07.699863Z[0m [31mERROR[0m [2mfoundry_compilers_artifacts_solc::sources[0m[2m:[0m [3merror[0m[2m=[0m"/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/security/Pausable.sol": No such file or directory (os error 2)
stdout: Unable to resolve imports:
stdout: "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol" in "/tmp/slither-a1v7nk13/contracts/ERC20DefaultVault.sol"
stdout: "@openzeppelin/contracts/security/Pausable.sol" in "/tmp/slither-a1v7nk13/contracts/HydraBridge.sol"
stdout: with remappings:
stdout: openzeppelin-contracts/=/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/
stdout: @openzeppelin/contracts/=/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/
Error: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol: No solc version exists that matches the version requirement: ^0.8.20
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/access/AccessControl.sol: No solc version exists that matches the version requirement: ^0.8.20
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/access/AccessControl.sol: No solc version exists that matches the version requirement: ^0.8.20
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol: No solc version exists that matches the version requirement: ^0.8.20
Traceback (most recent call last):
File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
sys.exit(main())
~~~~^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
main_impl(all_detector_classes=detectors, all_printer_classes=printers)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
compilations = compile_all(target, **vars(args))
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
compilations.append(CryticCompile(target, **kwargs))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
self._compile(**kwargs)
~~~~~~~~~~~~~^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
self._platform.compile(self, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
hardhat_like_parsing(
~~~~~~~~~~~~~~~~~~~~^
crytic_compile, str(self._target), build_directory, str(self._project_root)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-a1v7nk13/out/build-info is not a directory.
{"no_findings":false,"summary":"Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.","findings":[{"severity":"high","category":"auth","title":"Proposal hash omits assetId, enabling cross-asset replay within the same vault","exploit_scenario":"If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain.","recommendation":"Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.","evidence":"`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).","locations":["contracts/HydraBridge.sol:197","contracts/HydraBridge.sol:231"]},{"severity":"low","category":"access_control","title":"Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers","exploit_scenario":"If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone.","recommendation":"Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.","evidence":"Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.","locations":["contracts/HydraBridge.sol:72","contracts/HydraBridge.sol:33","contracts/HydraBridge.sol:216","contracts/HydraBridge.sol:269"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-0h7lbdw1
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0f3f-3529-7ba0-8d49-755b0934b153
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
exec
/bin/bash -lc ls in /tmp/codex-0h7lbdw1 succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
@openzeppelin
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-0h7lbdw1 succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/BaseVault.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;
import "./interfaces/IVault.sol";
abstract contract BaseVault is IVault {
address public bridge;
mapping(bytes32 => address) public assetIdToTokenAddress;
mapping(address => bytes32) public tokenAddressToAssetId;
mapping(address => bool) public tokenAllowlist;
mapping(address => bool) public tokenBurnList;
modifier onlyBridge() {
exec
/bin/bash -lc 'nl -ba contracts/HydraBridge.sol' in /tmp/codex-0h7lbdw1 succeeded in 6ms:
1 // SPDX-License-Identifier: MIT
2 pragma solidity 0.8.6;
3
4 import "@openzeppelin/contracts/security/Pausable.sol";
5 import "./interfaces/IVault.sol";
6 import "./HydraAccessControl.sol";
7
8 contract HydraBridge is Pausable, HydraAccessControl {
9 enum ProposalStatus {
10 Inactive,
11 Active,
12 Confirmed,
13 Completed,
14 Cancelled
15 }
16
17 bytes32 public constant FEE_ADMIN = keccak256("FEE_ADMIN");
18 bytes32 public constant OBSERVER_ROLE = keccak256("OBSERVER_ROLE");
19 bytes32 public constant DEFENDER = keccak256("DEFENDER");
20
exec
/bin/bash -lc 'nl -ba contracts/HydraAccessControl.sol' in /tmp/codex-0h7lbdw1 succeeded in 5ms:
1 // SPDX-License-Identifier: MIT
2 pragma solidity 0.8.6;
3
4 import "@openzeppelin/contracts/access/AccessControl.sol";
5 import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
7 interface IAccessControlEnumerable {
8 function getRoleMember(bytes32 role, uint256 index) external view returns (address);
9
10 function getRoleMemberCount(bytes32 role) external view returns (uint256);
11 }
12
13 abstract contract HydraAccessControl is AccessControl, IAccessControlEnumerable {
14 using EnumerableSet for EnumerableSet.AddressSet;
15
16 mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;
17
18 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
19 return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);
20 }
codex
{"no_findings":false,"summary":"Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.","findings":[{"severity":"high","category":"auth","title":"Proposal hash omits assetId, enabling cross-asset replay within the same vault","exploit_scenario":"If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain.","recommendation":"Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.","evidence":"`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).","locations":["contracts/HydraBridge.sol:197","contracts/HydraBridge.sol:231"]},{"severity":"low","category":"access_control","title":"Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers","exploit_scenario":"If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone.","recommendation":"Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.","evidence":"Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.","locations":["contracts/HydraBridge.sol:72","contracts/HydraBridge.sol:33","contracts/HydraBridge.sol:216","contracts/HydraBridge.sol:269"]}]}
tokens used
18,339
{
"codex": {
"ran_at": "2026-01-30T14:14:44.061301+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 23,
"import_count": 27,
"first_party_contracts_count": 7
},
"summary": "Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.",
"raw_final": {
"summary": "Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.",
"findings": [
{
"title": "Proposal hash omits assetId, enabling cross-asset replay within the same vault",
"category": "auth",
"evidence": "`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).",
"severity": "high",
"locations": [
"contracts/HydraBridge.sol:197",
"contracts/HydraBridge.sol:231"
],
"recommendation": "Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.",
"exploit_scenario": "If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain."
},
{
"title": "Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers",
"category": "access_control",
"evidence": "Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.",
"severity": "low",
"locations": [
"contracts/HydraBridge.sol:72",
"contracts/HydraBridge.sol:33",
"contracts/HydraBridge.sol:216",
"contracts/HydraBridge.sol:269"
],
"recommendation": "Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.",
"exploit_scenario": "If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00ca 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x8135369a 00000019: GT 0000001a: PUSH2 0x0079 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xe78cea92 00000024: GT 00000025: PUSH2 0x0056 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe78cea92 0000002f: EQ 00000030: PUSH2 0x027f 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xe9ae5c53 0000003a: EQ 0000003b: PUSH2 0x029f 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xece2a625 00000045: EQ 00000046: PUSH2 0x02bf 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xed1e2563 00000050: EQ 00000051: PUSH2 0x02ef 00000054: JUMPI 00000055: STOP 00000056: JUMPDEST 00000057: DUP1 00000058: PUSH4 0x8135369a 0000005d: EQ 0000005e: PUSH2 0x0204 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xad5c4648 00000068: EQ 00000069: PUSH2 0x0244 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0xd01616c0 00000073: EQ 00000074: PUSH2 0x026c 00000077: JUMPI 00000078: STOP 00000079: JUMPDEST 0000007a: DUP1 0000007b: PUSH4 0x213ce7af 00000080: GT 00000081: PUSH2 0x00a7 00000084: JUMPI 00000085: DUP1 00000086: PUSH4 0x213ce7af 0000008b: EQ 0000008c: PUSH2 0x014e 0000008f: JUMPI 00000090: DUP1 00000091: PUSH4 0x4c59581f 00000096: EQ 00000097: PUSH2 0x019c 0000009a: JUMPI 0000009b: DUP1 0000009c: PUSH4 0x804ddade 000000a1: EQ 000000a2: PUSH2 0x01c9 000000a5: JUMPI 000000a6: STOP 000000a7: JUMPDEST 000000a8: DUP1 000000a9: PUSH4 0x03a00879 000000ae: EQ 000000af: PUSH2 0x00d3 000000b2: JUMPI 000000b3: DUP1 000000b4: PUSH4 0x07b7ed99 000000b9: EQ 000000ba: PUSH2 0x010e 000000bd: JUMPI 000000be: DUP1 000000bf: PUSH4 0x1610c6a6 000000c4: EQ 000000c5: PUSH2 0x012e 000000c8: JUMPI 000000c9: STOP 000000ca: JUMPDEST 000000cb: CALLDATASIZE 000000cc: PUSH2 0x00d1 000000cf: JUMPI 000000d0: STOP 000000d1: JUMPDEST 000000d2: STOP 000000d3: JUMPDEST 000000d4: CALLVALUE 000000d5: DUP1 000000d6: ISZERO 000000d7: PUSH2 0x00df 000000da: JUMPI 000000db: PUSH1 0x00 000000dd: DUP1 000000de: REVERT 000000df: JUMPDEST 000000e0: POP 000000e1: PUSH2 0x00f3 000000e4: PUSH2 0x00ee 000000e7: CALLDATASIZE 000000e8: PUSH1 0x04 000000ea: PUSH2 0x0f64 000000ed: JUMP 000000ee: JUMPDEST 000000ef: PUSH2 0x030f 000000f2: JUMP 000000f3: JUMPDEST 000000f4: PUSH1 0x40 000000f6: MLOAD 000000f7: PUSH2 0x0105 000000fa: SWAP7 000000fb: SWAP6 000000fc: SWAP5 000000fd: SWAP4 000000fe: SWAP3 000000ff: SWAP2 00000100: SWAP1 00000101: PUSH2 0x0fdb 00000104: JUMP 00000105: JUMPDEST 00000106: PUSH1 0x40 00000108: MLOAD 00000109: DUP1 0000010a: SWAP2 0000010b: SUB 0000010c: SWAP1 0000010d: RETURN 0000010e: JUMPDEST 0000010f: CALLVALUE 00000110: DUP1 00000111: ISZERO 00000112: PUSH2 0x011a 00000115: JUMPI 00000116: PUSH1 0x00 00000118: DUP1 00000119: REVERT 0000011a: JUMPDEST 0000011b: POP 0000011c: PUSH2 0x00d1 0000011f: PUSH2 0x0129 00000122: CALLDATASIZE 00000123: PUSH1 0x04 00000125: PUSH2 0x0e10 00000128: JUMP 00000129: JUMPDEST 0000012a: PUSH2 0x03f0 0000012d: JUMP 0000012e: JUMPDEST 0000012f: CALLVALUE 00000130: DUP1 00000131: ISZERO 00000132: PUSH2 0x013a 00000135: JUMPI 00000136: PUSH1 0x00 00000138: DUP1 00000139: REVERT 0000013a: JUMPDEST 0000013b: POP 0000013c: PUSH2 0x00d1 0000013f: PUSH2 0x0149 00000142: CALLDATASIZE 00000143: PUSH1 0x04 00000145: PUSH2 0x0e4b 00000148: JUMP 00000149: JUMPDEST 0000014a: PUSH2 0x0450 0000014d: JUMP 0000014e: JUMPDEST 0000014f: CALLVALUE 00000150: DUP1 00000151: ISZERO 00000152: PUSH2 0x015a 00000155: JUMPI 00000156: PUSH1 0x00 00000158: DUP1 00000159: REVERT 0000015a: JUMPDEST 0000015b: POP 0000015c: PUSH2 0x0184 0000015f: PUSH2 0x0169 00000162: CALLDATASIZE 00000163: PUSH1 0x04 00000165: PUSH2 0x0e32 00000168: JUMP 00000169: JUMPDEST 0000016a: PUSH1 0x01 0000016c: PUSH1 0x20 0000016e: MSTORE 0000016f: PUSH1 0x00 00000171: SWAP1 00000172: DUP2 00000173: MSTORE 00000174: PUSH1 0x40 00000176: SWAP1 00000177: KECCAK256 00000178: SLOAD 00000179: PUSH1 0x01 0000017b: PUSH1 0x01 0000017d: PUSH1 0xa0 0000017f: SHL 00000180: SUB 00000181: AND 00000182: DUP2 00000183: JUMP 00000184: JUMPDEST 00000185: PUSH1 0x40 00000187: MLOAD 00000188: PUSH1 0x01 0000018a: PUSH1 0x01 0000018c: PUSH1 0xa0 0000018e: SHL 0000018f: SUB 00000190: SWAP1 00000191: SWAP2 00000192: AND 00000193: DUP2 00000194: MSTORE 00000195: PUSH1 0x20 00000197: ADD 00000198: PUSH2 0x0105 0000019b: JUMP 0000019c: JUMPDEST 0000019d: CALLVALUE 0000019e: DUP1 0000019f: ISZERO 000001a0: PUSH2 0x01a8 000001a3: JUMPI 000001a4: PUSH1 0x00 000001a6: DUP1 000001a7: REVERT 000001a8: JUMPDEST 000001a9: POP 000001aa: PUSH2 0x01bc 000001ad: PUSH2 0x01b7 000001b0: CALLDATASIZE 000001b1: PUSH1 0x04 000001b3: PUSH2 0x0f64 000001b6: JUMP 000001b7: JUMPDEST 000001b8: PUSH2 0x04fc 000001bb: JUMP 000001bc: JUMPDEST 000001bd: PUSH1 0x40 000001bf: MLOAD 000001c0: PUSH2 0x0105 000001c3: SWAP2 000001c4: SWAP1 000001c5: PUSH2 0x1021 000001c8: JUMP 000001c9: JUMPDEST 000001ca: CALLVALUE 000001cb: DUP1 000001cc: ISZERO 000001cd: PUSH2 0x01d5 000001d0: JUMPI 000001d1: PUSH1 0x00 000001d3: DUP1 000001d4: REVERT 000001d5: JUMPDEST 000001d6: POP 000001d7: PUSH2 0x01f6 000001da: PUSH2 0x01e4 000001dd: CALLDATASIZE 000001de: PUSH1 0x04 000001e0: PUSH2 0x0e10 000001e3: JUMP 000001e4: JUMPDEST 000001e5: PUSH1 0x02 000001e7: PUSH1 0x20 000001e9: MSTORE 000001ea: PUSH1 0x00 000001ec: SWAP1 000001ed: DUP2 000001ee: MSTORE 000001ef: PUSH1 0x40 000001f1: SWAP1 000001f2: KECCAK256 000001f3: SLOAD 000001f4: DUP2 000001f5: JUMP 000001f6: JUMPDEST 000001f7: PUSH1 0x40 000001f9: MLOAD 000001fa: SWAP1 000001fb: DUP2 000001fc: MSTORE 000001fd: PUSH1 0x20 000001ff: ADD 00000200: PUSH2 0x0105 00000203: JUMP 00000204: JUMPDEST 00000205: CALLVALUE 00000206: DUP1 00000207: ISZERO 00000208: PUSH2 0x0210 0000020b: JUMPI 0000020c: PUSH1 0x00 0000020e: DUP1 0000020f: REVERT 00000210: JUMPDEST 00000211: POP 00000212: PUSH2 0x0234 00000215: PUSH2 0x021f 00000218: CALLDATASIZE 00000219: PUSH1 0x04 0000021b: PUSH2 0x0e10 0000021e: JUMP 0000021f: JUMPDEST 00000220: PUSH1 0x03 00000222: PUSH1 0x20 00000224: MSTORE 00000225: PUSH1 0x00 00000227: SWAP1 00000228: DUP2 00000229: MSTORE 0000022a: PUSH1 0x40 0000022c: SWAP1 0000022d: KECCAK256 0000022e: SLOAD 0000022f: PUSH1 0xff 00000231: AND 00000232: DUP2 00000233: JUMP 00000234: JUMPDEST 00000235: PUSH1 0x40 00000237: MLOAD 00000238: SWAP1 00000239: ISZERO 0000023a: ISZERO 0000023b: DUP2 0000023c: MSTORE 0000023d: PUSH1 0x20 0000023f: ADD 00000240: PUSH2 0x0105 00000243: JUMP 00000244: JUMPDEST 00000245: CALLVALUE 00000246: DUP1 00000247: ISZERO 00000248: PUSH2 0x0250 0000024b: JUMPI 0000024c: PUSH1 0x00 0000024e: DUP1 0000024f: REVERT 00000250: JUMPDEST 00000251: POP 00000252: PUSH2 0x0184 00000255: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 0000026a: DUP2 0000026b: JUMP 0000026c: JUMPDEST 0000026d: PUSH2 0x00d1 00000270: PUSH2 0x027a 00000273: CALLDATASIZE 00000274: PUSH1 0x04 00000276: PUSH2 0x0ec3 00000279: JUMP 0000027a: JUMPDEST 0000027b: PUSH2 0x0645 0000027e: JUMP 0000027f: JUMPDEST 00000280: CALLVALUE 00000281: DUP1 00000282: ISZERO 00000283: PUSH2 0x028b 00000286: JUMPI 00000287: PUSH1 0x00 00000289: DUP1 0000028a: REVERT 0000028b: JUMPDEST 0000028c: POP 0000028d: PUSH1 0x00 0000028f: SLOAD 00000290: PUSH2 0x0184 00000293: SWAP1 00000294: PUSH1 0x01 00000296: PUSH1 0x01 00000298: PUSH1 0xa0 0000029a: SHL 0000029b: SUB 0000029c: AND 0000029d: DUP2 0000029e: JUMP 0000029f: JUMPDEST 000002a0: CALLVALUE 000002a1: DUP1 000002a2: ISZERO 000002a3: PUSH2 0x02ab 000002a6: JUMPI 000002a7: PUSH1 0x00 000002a9: DUP1 000002aa: REVERT 000002ab: JUMPDEST 000002ac: POP 000002ad: PUSH2 0x00d1 000002b0: PUSH2 0x02ba 000002b3: CALLDATASIZE 000002b4: PUSH1 0x04 000002b6: PUSH2 0x0e77 000002b9: JUMP 000002ba: JUMPDEST 000002bb: PUSH2 0x0982 000002be: JUMP 000002bf: JUMPDEST 000002c0: CALLVALUE 000002c1: DUP1 000002c2: ISZERO 000002c3: PUSH2 0x02cb 000002c6: JUMPI 000002c7: PUSH1 0x00 000002c9: DUP1 000002ca: REVERT 000002cb: JUMPDEST 000002cc: POP 000002cd: PUSH2 0x0234 000002d0: PUSH2 0x02da 000002d3: CALLDATASIZE 000002d4: PUSH1 0x04 000002d6: PUSH2 0x0e10 000002d9: JUMP 000002da: JUMPDEST 000002db: PUSH1 0x04 000002dd: PUSH1 0x20 000002df: MSTORE 000002e0: PUSH1 0x00 000002e2: SWAP1 000002e3: DUP2 000002e4: MSTORE 000002e5: PUSH1 0x40 000002e7: SWAP1 000002e8: KECCAK256 000002e9: SLOAD 000002ea: PUSH1 0xff 000002ec: AND 000002ed: DUP2 000002ee: JUMP 000002ef: JUMPDEST 000002f0: CALLVALUE 000002f1: DUP1 000002f2: ISZERO 000002f3: PUSH2 0x02fb 000002f6: JUMPI 000002f7: PUSH1 0x00 000002f9: DUP1 000002fa: REVERT 000002fb: JUMPDEST 000002fc: POP 000002fd: PUSH2 0x00d1 00000300: PUSH2 0x030a 00000303: CALLDATASIZE 00000304: PUSH1 0x04 00000306: PUSH2 0x0e10 00000309: JUMP 0000030a: JUMPDEST 0000030b: PUSH2 0x0b64 0000030e: JUMP 0000030f: JUMPDEST 00000310: PUSH1 0x05 00000312: PUSH1 0x20 00000314: SWAP1 00000315: DUP2 00000316: MSTORE 00000317: PUSH1 0x00 00000319: SWAP3 0000031a: DUP4 0000031b: MSTORE 0000031c: PUSH1 0x40 0000031e: DUP1 0000031f: DUP5 00000320: KECCAK256 00000321: SWAP1 00000322: SWAP2 00000323: MSTORE 00000324: SWAP1 00000325: DUP3 00000326: MSTORE 00000327: SWAP1 00000328: KECCAK256 00000329: DUP1 0000032a: SLOAD 0000032b: PUSH1 0x01 0000032d: DUP3 0000032e: ADD 0000032f: SLOAD 00000330: PUSH1 0x02 00000332: DUP4 00000333: ADD 00000334: DUP1 00000335: SLOAD 00000336: PUSH1 0x01 00000338: PUSH1 0x01 0000033a: PUSH1 0xa0 0000033c: SHL 0000033d: SUB 0000033e: DUP5 0000033f: AND 00000340: SWAP5 00000341: PUSH1 0x01 00000343: PUSH1 0xa0 00000345: SHL 00000346: SWAP1 00000347: SWAP5 00000348: DIV 00000349: PUSH1 0xff 0000034b: AND 0000034c: SWAP4 0000034d: SWAP2 0000034e: SWAP1 0000034f: PUSH2 0x0357 00000352: SWAP1 00000353: PUSH2 0x10db 00000356: JUMP 00000357: JUMPDEST 00000358: DUP1 00000359: PUSH1 0x1f 0000035b: ADD 0000035c: PUSH1 0x20 0000035e: DUP1 0000035f: SWAP2 00000360: DIV 00000361: MUL 00000362: PUSH1 0x20 00000364: ADD 00000365: PUSH1 0x40 00000367: MLOAD 00000368: SWAP1 00000369: DUP2 0000036a: ADD 0000036b: PUSH1 0x40 0000036d: MSTORE 0000036e: DUP1 0000036f: SWAP3 00000370: SWAP2 00000371: SWAP1 00000372: DUP2 00000373: DUP2 00000374: MSTORE 00000375: PUSH1 0x20 00000377: ADD 00000378: DUP3 00000379: DUP1 0000037a: SLOAD 0000037b: PUSH2 0x0383 0000037e: SWAP1 0000037f: PUSH2 0x10db 00000382: JUMP 00000383: JUMPDEST 00000384: DUP1 00000385: ISZERO 00000386: PUSH2 0x03d0 00000389: JUMPI 0000038a: DUP1 0000038b: PUSH1 0x1f 0000038d: LT 0000038e: PUSH2 0x03a5 00000391: JUMPI 00000392: PUSH2 0x0100 00000395: DUP1 00000396: DUP4 00000397: SLOAD 00000398: DIV 00000399: MUL 0000039a: DUP4 0000039b: MSTORE 0000039c: SWAP2 0000039d: PUSH1 0x20 0000039f: ADD 000003a0: SWAP2 000003a1: PUSH2 0x03d0 000003a4: JUMP 000003a5: JUMPDEST 000003a6: DUP3 000003a7: ADD 000003a8: SWAP2 000003a9: SWAP1 000003aa: PUSH1 0x00 000003ac: MSTORE 000003ad: PUSH1 0x20 000003af: PUSH1 0x00 000003b1: KECCAK256 000003b2: SWAP1 000003b3: JUMPDEST 000003b4: DUP2 000003b5: SLOAD 000003b6: DUP2 000003b7: MSTORE 000003b8: SWAP1 000003b9: PUSH1 0x01 000003bb: ADD 000003bc: SWAP1 000003bd: PUSH1 0x20 000003bf: ADD 000003c0: DUP1 000003c1: DUP4 000003c2: GT 000003c3: PUSH2 0x03b3 000003c6: JUMPI 000003c7: DUP3 000003c8: SWAP1 000003c9: SUB 000003ca: PUSH1 0x1f 000003cc: AND 000003cd: DUP3 000003ce: ADD 000003cf: SWAP2 000003d0: JUMPDEST 000003d1: POP 000003d2: POP 000003d3: POP 000003d4: POP 000003d5: PUSH1 0x03 000003d7: DUP4 000003d8: ADD 000003d9: SLOAD 000003da: PUSH1 0x04 000003dc: SWAP1 000003dd: SWAP4 000003de: ADD 000003df: SLOAD 000003e0: SWAP2 000003e1: SWAP3 000003e2: PUSH1 0x01 000003e4: PUSH1 0x01 000003e6: PUSH1 0xa0 000003e8: SHL 000003e9: SUB 000003ea: AND 000003eb: SWAP2 000003ec: SWAP1 000003ed: POP 000003ee: DUP7 000003ef: JUMP 000003f0: JUMPDEST 000003f1: PUSH1 0x00 000003f3: SLOAD 000003f4: PUSH1 0x01 000003f6: PUSH1 0x01 000003f8: PUSH1 0xa0 000003fa: SHL 000003fb: SUB 000003fc: AND 000003fd: CALLER 000003fe: EQ 000003ff: PUSH2 0x0444 00000402: JUMPI 00000403: PUSH1 0x40 00000405: MLOAD 00000406: PUSH3 0x461bcd 0000040a: PUSH1 0xe5 0000040c: SHL 0000040d: DUP2 0000040e: MSTORE 0000040f: PUSH1 0x20 00000411: PUSH1 0x04 00000413: DUP3 00000414: ADD 00000415: MSTORE 00000416: PUSH1 0x12 00000418: PUSH1 0x24 0000041a: DUP3 0000041b: ADD 0000041c: MSTORE 0000041d: PUSH18 0x5661756c743a206f6e6c7920627269646765 00000430: PUSH1 0x70 00000432: SHL 00000433: PUSH1 0x44 00000435: DUP3 00000436: ADD 00000437: MSTORE 00000438: PUSH1 0x64 0000043a: ADD 0000043b: JUMPDEST 0000043c: PUSH1 0x40 0000043e: MLOAD 0000043f: DUP1 00000440: SWAP2 00000441: SUB 00000442: SWAP1 00000443: REVERT 00000444: JUMPDEST 00000445: PUSH2 0x044d 00000448: DUP2 00000449: PUSH2 0x0bbc 0000044c: JUMP 0000044d: JUMPDEST 0000044e: POP 0000044f: JUMP 00000450: JUMPDEST 00000451: PUSH1 0x00 00000453: SLOAD 00000454: PUSH1 0x01 00000456: PUSH1 0x01 00000458: PUSH1 0xa0 0000045a: SHL 0000045b: SUB 0000045c: AND 0000045d: CALLER 0000045e: EQ 0000045f: PUSH2 0x049f 00000462: JUMPI 00000463: PUSH1 0x40 00000465: MLOAD 00000466: PUSH3 0x461bcd 0000046a: PUSH1 0xe5 0000046c: SHL 0000046d: DUP2 0000046e: MSTORE 0000046f: PUSH1 0x20 00000471: PUSH1 0x04 00000473: DUP3 00000474: ADD 00000475: MSTORE 00000476: PUSH1 0x12 00000478: PUSH1 0x24 0000047a: DUP3 0000047b: ADD 0000047c: MSTORE 0000047d: PUSH18 0x5661756c743a206f6e6c7920627269646765 00000490: PUSH1 0x70 00000492: SHL 00000493: PUSH1 0x44 00000495: DUP3 00000496: ADD 00000497: MSTORE 00000498: PUSH1 0x64 0000049a: ADD 0000049b: PUSH2 0x043b 0000049e: JUMP 0000049f: JUMPDEST 000004a0: PUSH1 0x00 000004a2: DUP3 000004a3: DUP2 000004a4: MSTORE 000004a5: PUSH1 0x01 000004a7: PUSH1 0x20 000004a9: DUP2 000004aa: DUP2 000004ab: MSTORE 000004ac: PUSH1 0x40 000004ae: DUP1 000004af: DUP5 000004b0: KECCAK256 000004b1: DUP1 000004b2: SLOAD 000004b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004c8: NOT 000004c9: AND 000004ca: PUSH1 0x01 000004cc: PUSH1 0x01 000004ce: PUSH1 0xa0 000004d0: SHL 000004d1: SUB 000004d2: DUP8 000004d3: AND 000004d4: SWAP1 000004d5: DUP2 000004d6: OR 000004d7: SWAP1 000004d8: SWAP2 000004d9: SSTORE 000004da: DUP5 000004db: MSTORE 000004dc: PUSH1 0x02 000004de: DUP3 000004df: MSTORE 000004e0: DUP1 000004e1: DUP5 000004e2: KECCAK256 000004e3: DUP7 000004e4: SWAP1 000004e5: SSTORE 000004e6: PUSH1 0x03 000004e8: SWAP1 000004e9: SWAP2 000004ea: MSTORE 000004eb: SWAP1 000004ec: SWAP2 000004ed: KECCAK256 000004ee: DUP1 000004ef: SLOAD 000004f0: PUSH1 0xff 000004f2: NOT 000004f3: AND 000004f4: SWAP1 000004f5: SWAP2 000004f6: OR 000004f7: SWAP1 000004f8: SSTORE 000004f9: POP 000004fa: POP 000004fb: JUMP 000004fc: JUMPDEST 000004fd: PUSH1 0x40 000004ff: DUP1 00000500: MLOAD 00000501: PUSH1 0xc0 00000503: DUP2 00000504: ADD 00000505: DUP3 00000506: MSTORE 00000507: PUSH1 0x00 00000509: DUP1 0000050a: DUP3 0000050b: MSTORE 0000050c: PUSH1 0x20 0000050e: DUP3 0000050f: ADD 00000510: DUP2 00000511: SWAP1 00000512: MSTORE 00000513: SWAP2 00000514: DUP2 00000515: ADD 00000516: DUP3 00000517: SWAP1 00000518: MSTORE 00000519: PUSH1 0x60 0000051b: DUP1 0000051c: DUP3 0000051d: ADD 0000051e: MSTORE 0000051f: PUSH1 0x80 00000521: DUP2 00000522: ADD 00000523: DUP3 00000524: SWAP1 00000525: MSTORE 00000526: PUSH1 0xa0 00000528: DUP2 00000529: ADD 0000052a: SWAP2 0000052b: SWAP1 0000052c: SWAP2 0000052d: MSTORE 0000052e: PUSH1 0xff 00000530: DUP1 00000531: DUP5 00000532: AND 00000533: PUSH1 0x00 00000535: SWAP1 00000536: DUP2 00000537: MSTORE 00000538: PUSH1 0x05 0000053a: PUSH1 0x20 0000053c: SWAP1 0000053d: DUP2 0000053e: MSTORE 0000053f: PUSH1 0x40 00000541: DUP1 00000542: DUP4 00000543: KECCAK256 00000544: PUSH8 0xffffffffffffffff 0000054d: DUP8 0000054e: AND 0000054f: DUP5 00000550: MSTORE 00000551: DUP3 00000552: MSTORE 00000553: SWAP2 00000554: DUP3 00000555: SWAP1 00000556: KECCAK256 00000557: DUP3 00000558: MLOAD 00000559: PUSH1 0xc0 0000055b: DUP2 0000055c: ADD 0000055d: DUP5 0000055e: MSTORE 0000055f: DUP2 00000560: SLOAD 00000561: PUSH1 0x01 00000563: PUSH1 0x01 00000565: PUSH1 0xa0 00000567: SHL 00000568: SUB 00000569: DUP2 0000056a: AND 0000056b: DUP3 0000056c: MSTORE 0000056d: PUSH1 0x01 0000056f: PUSH1 0xa0 00000571: SHL 00000572: SWAP1 00000573: DIV 00000574: SWAP1 00000575: SWAP5 00000576: AND 00000577: SWAP2 00000578: DUP5 00000579: ADD 0000057a: SWAP2 0000057b: SWAP1 0000057c: SWAP2 0000057d: MSTORE 0000057e: PUSH1 0x01 00000580: DUP2 00000581: ADD 00000582: SLOAD 00000583: SWAP2 00000584: DUP4 00000585: ADD 00000586: SWAP2 00000587: SWAP1 00000588: SWAP2 00000589: MSTORE 0000058a: PUSH1 0x02 0000058c: DUP2 0000058d: ADD 0000058e: DUP1 0000058f: SLOAD 00000590: PUSH1 0x60 00000592: DUP5 00000593: ADD 00000594: SWAP2 00000595: SWAP1 00000596: PUSH2 0x059e 00000599: SWAP1 0000059a: PUSH2 0x10db 0000059d: JUMP 0000059e: JUMPDEST 0000059f: DUP1 000005a0: PUSH1 0x1f 000005a2: ADD 000005a3: PUSH1 0x20 000005a5: DUP1 000005a6: SWAP2 000005a7: DIV 000005a8: MUL 000005a9: PUSH1 0x20 000005ab: ADD 000005ac: PUSH1 0x40 000005ae: MLOAD 000005af: SWAP1 000005b0: DUP2 000005b1: ADD 000005b2: PUSH1 0x40 000005b4: MSTORE 000005b5: DUP1 000005b6: SWAP3 000005b7: SWAP2 000005b8: SWAP1 000005b9: DUP2 000005ba: DUP2 000005bb: MSTORE 000005bc: PUSH1 0x20 000005be: ADD 000005bf: DUP3 000005c0: DUP1 000005c1: SLOAD 000005c2: PUSH2 0x05ca 000005c5: SWAP1 000005c6: PUSH2 0x10db 000005c9: JUMP 000005ca: JUMPDEST 000005cb: DUP1 000005cc: ISZERO 000005cd: PUSH2 0x0617 000005d0: JUMPI 000005d1: DUP1 000005d2: PUSH1 0x1f 000005d4: LT 000005d5: PUSH2 0x05ec 000005d8: JUMPI 000005d9: PUSH2 0x0100 000005dc: DUP1 000005dd: DUP4 000005de: SLOAD 000005df: DIV 000005e0: MUL 000005e1: DUP4 000005e2: MSTORE 000005e3: SWAP2 000005e4: PUSH1 0x20 000005e6: ADD 000005e7: SWAP2 000005e8: PUSH2 0x0617 000005eb: JUMP 000005ec: JUMPDEST 000005ed: DUP3 000005ee: ADD 000005ef: SWAP2 000005f0: SWAP1 000005f1: PUSH1 0x00 000005f3: MSTORE 000005f4: PUSH1 0x20 000005f6: PUSH1 0x00 000005f8: KECCAK256 000005f9: SWAP1 000005fa: JUMPDEST 000005fb: DUP2 000005fc: SLOAD 000005fd: DUP2 000005fe: MSTORE 000005ff: SWAP1 00000600: PUSH1 0x01 00000602: ADD 00000603: SWAP1 00000604: PUSH1 0x20 00000606: ADD 00000607: DUP1 00000608: DUP4 00000609: GT 0000060a: PUSH2 0x05fa 0000060d: JUMPI 0000060e: DUP3 0000060f: SWAP1 00000610: SUB 00000611: PUSH1 0x1f 00000613: AND 00000614: DUP3 00000615: ADD 00000616: SWAP2 00000617: JUMPDEST 00000618: POP 00000619: POP 0000061a: POP 0000061b: SWAP2 0000061c: DUP4 0000061d: MSTORE 0000061e: POP 0000061f: POP 00000620: PUSH1 0x03 00000622: DUP3 00000623: ADD 00000624: SLOAD 00000625: PUSH1 0x01 00000627: PUSH1 0x01 00000629: PUSH1 0xa0 0000062b: SHL 0000062c: SUB 0000062d: AND 0000062e: PUSH1 0x20 00000630: DUP3 00000631: ADD 00000632: MSTORE 00000633: PUSH1 0x04 00000635: SWAP1 00000636: SWAP2 00000637: ADD 00000638: SLOAD 00000639: PUSH1 0x40 0000063b: SWAP1 0000063c: SWAP2 0000063d: ADD 0000063e: MSTORE 0000063f: SWAP4 00000640: SWAP3 00000641: POP 00000642: POP 00000643: POP 00000644: JUMP 00000645: JUMPDEST 00000646: PUSH1 0x00 00000648: SLOAD 00000649: PUSH1 0x01 0000064b: PUSH1 0x01 0000064d: PUSH1 0xa0 0000064f: SHL 00000650: SUB 00000651: AND 00000652: CALLER 00000653: EQ 00000654: PUSH2 0x0694 00000657: JUMPI 00000658: PUSH1 0x40 0000065a: MLOAD 0000065b: PUSH3 0x461bcd 0000065f: PUSH1 0xe5 00000661: SHL 00000662: DUP2 00000663: MSTORE 00000664: PUSH1 0x20 00000666: PUSH1 0x04 00000668: DUP3 00000669: ADD 0000066a: MSTORE 0000066b: PUSH1 0x12 0000066d: PUSH1 0x24 0000066f: DUP3 00000670: ADD 00000671: MSTORE 00000672: PUSH18 0x5661756c743a206f6e6c7920627269646765 00000685: PUSH1 0x70 00000687: SHL 00000688: PUSH1 0x44 0000068a: DUP3 0000068b: ADD 0000068c: MSTORE 0000068d: PUSH1 0x64 0000068f: ADD 00000690: PUSH2 0x043b 00000693: JUMP 00000694: JUMPDEST 00000695: PUSH1 0x60 00000697: PUSH1 0x00 00000699: DUP1 0000069a: PUSH2 0x06a5 0000069d: DUP5 0000069e: DUP7 0000069f: ADD 000006a0: DUP7 000006a1: PUSH2 0x0f42 000006a4: JUMP 000006a5: JUMPDEST 000006a6: SWAP1 000006a7: SWAP3 000006a8: POP 000006a9: SWAP1 000006aa: POP 000006ab: DUP5 000006ac: PUSH1 0x40 000006ae: DUP6 000006af: PUSH2 0x06b8 000006b2: DUP5 000006b3: DUP4 000006b4: PUSH2 0x10b5 000006b7: JUMP 000006b8: JUMPDEST 000006b9: SWAP3 000006ba: PUSH2 0x06c5 000006bd: SWAP4 000006be: SWAP3 000006bf: SWAP2 000006c0: SWAP1 000006c1: PUSH2 0x108b 000006c4: JUMP 000006c5: JUMPDEST 000006c6: DUP1 000006c7: DUP1 000006c8: PUSH1 0x1f 000006ca: ADD 000006cb: PUSH1 0x20 000006cd: DUP1 000006ce: SWAP2 000006cf: DIV 000006d0: MUL 000006d1: PUSH1 0x20 000006d3: ADD 000006d4: PUSH1 0x40 000006d6: MLOAD 000006d7: SWAP1 000006d8: DUP2 000006d9: ADD 000006da: PUSH1 0x40 000006dc: MSTORE 000006dd: DUP1 000006de: SWAP4 000006df: SWAP3 000006e0: SWAP2 000006e1: SWAP1 000006e2: DUP2 000006e3: DUP2 000006e4: MSTORE 000006e5: PUSH1 0x20 000006e7: ADD 000006e8: DUP4 000006e9: DUP4 000006ea: DUP1 000006eb: DUP3 000006ec: DUP5 000006ed: CALLDATACOPY 000006ee: PUSH1 0x00 000006f0: SWAP3 000006f1: ADD 000006f2: SWAP2 000006f3: SWAP1 000006f4: SWAP2 000006f5: MSTORE 000006f6: POP 000006f7: SWAP3 000006f8: SWAP6 000006f9: POP 000006fa: POP 000006fb: POP 000006fc: CALLVALUE 000006fd: DUP4 000006fe: EQ 000006ff: SWAP1 00000700: POP 00000701: PUSH2 0x0758 00000704: JUMPI 00000705: PUSH1 0x40 00000707: MLOAD 00000708: PUSH3 0x461bcd 0000070c: PUSH1 0xe5 0000070e: SHL 0000070f: DUP2 00000710: MSTORE 00000711: PUSH1 0x20 00000713: PUSH1 0x04 00000715: DUP3 00000716: ADD 00000717: MSTORE 00000718: PUSH1 0x24 0000071a: DUP1 0000071b: DUP3 0000071c: ADD 0000071d: MSTORE 0000071e: PUSH32 0x5661756c743a2076616c75652073656e6420646f65736e2774206d6174636820 0000073f: PUSH1 0x44 00000741: DUP3 00000742: ADD 00000743: MSTORE 00000744: PUSH4 0x64617461 00000749: PUSH1 0xe0 0000074b: SHL 0000074c: PUSH1 0x64 0000074e: DUP3 0000074f: ADD 00000750: MSTORE 00000751: PUSH1 0x84 00000753: ADD 00000754: PUSH2 0x043b 00000757: JUMP 00000758: JUMPDEST 00000759: PUSH1 0x00 0000075b: DUP10 0000075c: DUP2 0000075d: MSTORE 0000075e: PUSH1 0x01 00000760: PUSH1 0x20 00000762: SWAP1 00000763: DUP2 00000764: MSTORE 00000765: PUSH1 0x40 00000767: DUP1 00000768: DUP4 00000769: KECCAK256 0000076a: SLOAD 0000076b: PUSH1 0x01 0000076d: PUSH1 0x01 0000076f: PUSH1 0xa0 00000771: SHL 00000772: SUB 00000773: AND 00000774: DUP1 00000775: DUP5 00000776: MSTORE 00000777: PUSH1 0x03 00000779: SWAP1 0000077a: SWAP3 0000077b: MSTORE 0000077c: SWAP1 0000077d: SWAP2 0000077e: KECCAK256 0000077f: SLOAD 00000780: PUSH1 0xff 00000782: AND 00000783: PUSH2 0x07da 00000786: JUMPI 00000787: PUSH1 0x40 00000789: MLOAD 0000078a: PUSH3 0x461bcd 0000078e: PUSH1 0xe5 00000790: SHL 00000791: DUP2 00000792: MSTORE 00000793: PUSH1 0x20 00000795: PUSH1 0x04 00000797: DUP3 00000798: ADD 00000799: MSTORE 0000079a: PUSH1 0x24 0000079c: DUP1 0000079d: DUP3 0000079e: ADD 0000079f: MSTORE 000007a0: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77 000007c1: PUSH1 0x44 000007c3: DUP3 000007c4: ADD 000007c5: MSTORE 000007c6: PUSH4 0x1b1a5cdd 000007cb: PUSH1 0xe2 000007cd: SHL 000007ce: PUSH1 0x64 000007d0: DUP3 000007d1: ADD 000007d2: MSTORE 000007d3: PUSH1 0x84 000007d5: ADD 000007d6: PUSH2 0x043b 000007d9: JUMP 000007da: JUMPDEST 000007db: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 000007f0: PUSH1 0x01 000007f2: PUSH1 0x01 000007f4: PUSH1 0xa0 000007f6: SHL 000007f7: SUB 000007f8: AND 000007f9: PUSH4 0xd0e30db0 000007fe: DUP5 000007ff: PUSH1 0x40 00000801: MLOAD 00000802: DUP3 00000803: PUSH4 0xffffffff 00000808: AND 00000809: PUSH1 0xe0 0000080b: SHL 0000080c: DUP2 0000080d: MSTORE 0000080e: PUSH1 0x04 00000810: ADD 00000811: PUSH1 0x00 00000813: PUSH1 0x40 00000815: MLOAD 00000816: DUP1 00000817: DUP4 00000818: SUB 00000819: DUP2 0000081a: DUP6 0000081b: DUP9 0000081c: DUP1 0000081d: EXTCODESIZE 0000081e: ISZERO 0000081f: DUP1 00000820: ISZERO 00000821: PUSH2 0x0829 00000824: JUMPI 00000825: PUSH1 0x00 00000827: DUP1 00000828: REVERT 00000829: JUMPDEST 0000082a: POP 0000082b: GAS 0000082c: CALL 0000082d: ISZERO 0000082e: DUP1 0000082f: ISZERO 00000830: PUSH2 0x083d 00000833: JUMPI 00000834: RETURNDATASIZE 00000835: PUSH1 0x00 00000837: DUP1 00000838: RETURNDATACOPY 00000839: RETURNDATASIZE 0000083a: PUSH1 0x00 0000083c: REVERT 0000083d: JUMPDEST 0000083e: POP 0000083f: POP 00000840: POP 00000841: POP 00000842: POP 00000843: PUSH1 0x40 00000845: MLOAD 00000846: DUP1 00000847: PUSH1 0xc0 00000849: ADD 0000084a: PUSH1 0x40 0000084c: MSTORE 0000084d: DUP1 0000084e: DUP3 0000084f: PUSH1 0x01 00000851: PUSH1 0x01 00000853: PUSH1 0xa0 00000855: SHL 00000856: SUB 00000857: AND 00000858: DUP2 00000859: MSTORE 0000085a: PUSH1 0x20 0000085c: ADD 0000085d: DUP11 0000085e: PUSH1 0xff 00000860: AND 00000861: DUP2 00000862: MSTORE 00000863: PUSH1 0x20 00000865: ADD 00000866: DUP12 00000867: DUP2 00000868: MSTORE 00000869: PUSH1 0x20 0000086b: ADD 0000086c: DUP6 0000086d: DUP2 0000086e: MSTORE 0000086f: PUSH1 0x20 00000871: ADD 00000872: DUP9 00000873: PUSH1 0x01 00000875: PUSH1 0x01 00000877: PUSH1 0xa0 00000879: SHL 0000087a: SUB 0000087b: AND 0000087c: DUP2 0000087d: MSTORE 0000087e: PUSH1 0x20 00000880: ADD 00000881: DUP5 00000882: DUP2 00000883: MSTORE 00000884: POP 00000885: PUSH1 0x05 00000887: PUSH1 0x00 00000889: DUP12 0000088a: PUSH1 0xff 0000088c: AND 0000088d: PUSH1 0xff 0000088f: AND 00000890: DUP2 00000891: MSTORE 00000892: PUSH1 0x20 00000894: ADD 00000895: SWAP1 00000896: DUP2 00000897: MSTORE 00000898: PUSH1 0x20 0000089a: ADD 0000089b: PUSH1 0x00 0000089d: KECCAK256 0000089e: PUSH1 0x00 000008a0: DUP11 000008a1: PUSH8 0xffffffffffffffff 000008aa: AND 000008ab: PUSH8 0xffffffffffffffff 000008b4: AND 000008b5: DUP2 000008b6: MSTORE 000008b7: PUSH1 0x20 000008b9: ADD 000008ba: SWAP1 000008bb: DUP2 000008bc: MSTORE 000008bd: PUSH1 0x20 000008bf: ADD 000008c0: PUSH1 0x00 000008c2: KECCAK256 000008c3: PUSH1 0x00 000008c5: DUP3 000008c6: ADD 000008c7: MLOAD 000008c8: DUP2 000008c9: PUSH1 0x00 000008cb: ADD 000008cc: PUSH1 0x00 000008ce: PUSH2 0x0100 000008d1: EXP 000008d2: DUP2 000008d3: SLOAD 000008d4: DUP2 000008d5: PUSH1 0x01 000008d7: PUSH1 0x01 000008d9: PUSH1 0xa0 000008db: SHL 000008dc: SUB 000008dd: MUL 000008de: NOT 000008df: AND 000008e0: SWAP1 000008e1: DUP4 000008e2: PUSH1 0x01 000008e4: PUSH1 0x01 000008e6: PUSH1 0xa0 000008e8: SHL 000008e9: SUB 000008ea: AND 000008eb: MUL 000008ec: OR 000008ed: SWAP1 000008ee: SSTORE 000008ef: POP 000008f0: PUSH1 0x20 000008f2: DUP3 000008f3: ADD 000008f4: MLOAD 000008f5: DUP2 000008f6: PUSH1 0x00 000008f8: ADD 000008f9: PUSH1 0x14 000008fb: PUSH2 0x0100 000008fe: EXP 000008ff: DUP2 00000900: SLOAD 00000901: DUP2 00000902: PUSH1 0xff 00000904: MUL 00000905: NOT 00000906: AND 00000907: SWAP1 00000908: DUP4 00000909: PUSH1 0xff 0000090b: AND 0000090c: MUL 0000090d: OR 0000090e: SWAP1 0000090f: SSTORE 00000910: POP 00000911: PUSH1 0x40 00000913: DUP3 00000914: ADD 00000915: MLOAD 00000916: DUP2 00000917: PUSH1 0x01 00000919: ADD 0000091a: SSTORE 0000091b: PUSH1 0x60 0000091d: DUP3 0000091e: ADD 0000091f: MLOAD 00000920: DUP2 00000921: PUSH1 0x02 00000923: ADD 00000924: SWAP1 00000925: DUP1 00000926: MLOAD 00000927: SWAP1 00000928: PUSH1 0x20 0000092a: ADD 0000092b: SWAP1 0000092c: PUSH2 0x0936 0000092f: SWAP3 00000930: SWAP2 00000931: SWAP1 00000932: PUSH2 0x0ce9 00000935: JUMP 00000936: JUMPDEST 00000937: POP 00000938: PUSH1 0x80 0000093a: DUP3 0000093b: ADD 0000093c: MLOAD 0000093d: PUSH1 0x03 0000093f: DUP3 00000940: ADD 00000941: DUP1 00000942: SLOAD 00000943: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000958: NOT 00000959: AND 0000095a: PUSH1 0x01 0000095c: PUSH1 0x01 0000095e: PUSH1 0xa0 00000960: SHL 00000961: SUB 00000962: SWAP1 00000963: SWAP3 00000964: AND 00000965: SWAP2 00000966: SWAP1 00000967: SWAP2 00000968: OR 00000969: SWAP1 0000096a: SSTORE 0000096b: PUSH1 0xa0 0000096d: SWAP1 0000096e: SWAP2 0000096f: ADD 00000970: MLOAD 00000971: PUSH1 0x04 00000973: SWAP1 00000974: SWAP2 00000975: ADD 00000976: SSTORE 00000977: POP 00000978: POP 00000979: POP 0000097a: POP 0000097b: POP 0000097c: POP 0000097d: POP 0000097e: POP 0000097f: POP 00000980: POP 00000981: JUMP 00000982: JUMPDEST 00000983: PUSH1 0x00 00000985: SLOAD 00000986: PUSH1 0x01 00000988: PUSH1 0x01 0000098a: PUSH1 0xa0 0000098c: SHL 0000098d: SUB 0000098e: AND 0000098f: CALLER 00000990: EQ 00000991: PUSH2 0x09d1 00000994: JUMPI 00000995: PUSH1 0x40 00000997: MLOAD 00000998: PUSH3 0x461bcd 0000099c: PUSH1 0xe5 0000099e: SHL 0000099f: DUP2 000009a0: MSTORE 000009a1: PUSH1 0x20 000009a3: PUSH1 0x04 000009a5: DUP3 000009a6: ADD 000009a7: MSTORE 000009a8: PUSH1 0x12 000009aa: PUSH1 0x24 000009ac: DUP3 000009ad: ADD 000009ae: MSTORE 000009af: PUSH18 0x5661756c743a206f6e6c7920627269646765 000009c2: PUSH1 0x70 000009c4: SHL 000009c5: PUSH1 0x44 000009c7: DUP3 000009c8: ADD 000009c9: MSTORE 000009ca: PUSH1 0x64 000009cc: ADD 000009cd: PUSH2 0x043b 000009d0: JUMP 000009d1: JUMPDEST 000009d2: PUSH1 0x60 000009d4: PUSH1 0x00 000009d6: DUP1 000009d7: PUSH2 0x09e2 000009da: DUP5 000009db: DUP7 000009dc: ADD 000009dd: DUP7 000009de: PUSH2 0x0f42 000009e1: JUMP 000009e2: JUMPDEST 000009e3: SWAP1 000009e4: SWAP3 000009e5: POP 000009e6: SWAP1 000009e7: POP 000009e8: DUP5 000009e9: PUSH1 0x40 000009eb: DUP6 000009ec: PUSH2 0x09f5 000009ef: DUP5 000009f0: DUP4 000009f1: PUSH2 0x10b5 000009f4: JUMP 000009f5: JUMPDEST 000009f6: SWAP3 000009f7: PUSH2 0x0a02 000009fa: SWAP4 000009fb: SWAP3 000009fc: SWAP2 000009fd: SWAP1 000009fe: PUSH2 0x108b 00000a01: JUMP 00000a02: JUMPDEST 00000a03: DUP1 00000a04: DUP1 00000a05: PUSH1 0x1f 00000a07: ADD 00000a08: PUSH1 0x20 00000a0a: DUP1 00000a0b: SWAP2 00000a0c: DIV 00000a0d: MUL 00000a0e: PUSH1 0x20 00000a10: ADD 00000a11: PUSH1 0x40 00000a13: MLOAD 00000a14: SWAP1 00000a15: DUP2 00000a16: ADD 00000a17: PUSH1 0x40 00000a19: MSTORE 00000a1a: DUP1 00000a1b: SWAP4 00000a1c: SWAP3 00000a1d: SWAP2 00000a1e: SWAP1 00000a1f: DUP2 00000a20: DUP2 00000a21: MSTORE 00000a22: PUSH1 0x20 00000a24: ADD 00000a25: DUP4 00000a26: DUP4 00000a27: DUP1 00000a28: DUP3 00000a29: DUP5 00000a2a: CALLDATACOPY 00000a2b: PUSH1 0x00 00000a2d: SWAP3 00000a2e: ADD 00000a2f: DUP3 00000a30: SWAP1 00000a31: MSTORE 00000a32: POP 00000a33: DUP11 00000a34: DUP2 00000a35: MSTORE 00000a36: PUSH1 0x01 00000a38: PUSH1 0x20 00000a3a: SWAP1 00000a3b: DUP2 00000a3c: MSTORE 00000a3d: PUSH1 0x40 00000a3f: DUP1 00000a40: DUP4 00000a41: KECCAK256 00000a42: SLOAD 00000a43: DUP3 00000a44: DUP9 00000a45: ADD 00000a46: MLOAD 00000a47: PUSH1 0x01 00000a49: PUSH1 0x01 00000a4b: PUSH1 0xa0 00000a4d: SHL 00000a4e: SUB 00000a4f: SWAP1 00000a50: SWAP2 00000a51: AND 00000a52: DUP1 00000a53: DUP6 00000a54: MSTORE 00000a55: PUSH1 0x03 00000a57: SWAP1 00000a58: SWAP4 00000a59: MSTORE 00000a5a: SWAP3 00000a5b: KECCAK256 00000a5c: SLOAD 00000a5d: SWAP6 00000a5e: SWAP9 00000a5f: POP 00000a60: SWAP1 00000a61: SWAP5 00000a62: SWAP1 00000a63: SWAP4 00000a64: POP 00000a65: PUSH1 0xff 00000a67: AND 00000a68: SWAP2 00000a69: POP 00000a6a: PUSH2 0x0ac3 00000a6d: SWAP1 00000a6e: POP 00000a6f: JUMPI 00000a70: PUSH1 0x40 00000a72: MLOAD 00000a73: PUSH3 0x461bcd 00000a77: PUSH1 0xe5 00000a79: SHL 00000a7a: DUP2 00000a7b: MSTORE 00000a7c: PUSH1 0x20 00000a7e: PUSH1 0x04 00000a80: DUP3 00000a81: ADD 00000a82: MSTORE 00000a83: PUSH1 0x24 00000a85: DUP1 00000a86: DUP3 00000a87: ADD 00000a88: MSTORE 00000a89: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77 00000aaa: PUSH1 0x44 00000aac: DUP3 00000aad: ADD 00000aae: MSTORE 00000aaf: PUSH4 0x1b1a5cdd 00000ab4: PUSH1 0xe2 00000ab6: SHL 00000ab7: PUSH1 0x64 00000ab9: DUP3 00000aba: ADD 00000abb: MSTORE 00000abc: PUSH1 0x84 00000abe: ADD 00000abf: PUSH2 0x043b 00000ac2: JUMP 00000ac3: JUMPDEST 00000ac4: PUSH1 0x40 00000ac6: MLOAD 00000ac7: PUSH4 0x2e1a7d4d 00000acc: PUSH1 0xe0 00000ace: SHL 00000acf: DUP2 00000ad0: MSTORE 00000ad1: PUSH1 0x04 00000ad3: DUP2 00000ad4: ADD 00000ad5: DUP6 00000ad6: SWAP1 00000ad7: MSTORE 00000ad8: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000aed: SWAP1 00000aee: PUSH4 0x2e1a7d4d 00000af3: SWAP1 00000af4: PUSH1 0x24 00000af6: ADD 00000af7: PUSH1 0x00 00000af9: PUSH1 0x40 00000afb: MLOAD 00000afc: DUP1 00000afd: DUP4 00000afe: SUB 00000aff: DUP2 00000b00: PUSH1 0x00 00000b02: DUP8 00000b03: DUP1 00000b04: EXTCODESIZE 00000b05: ISZERO 00000b06: DUP1 00000b07: ISZERO 00000b08: PUSH2 0x0b10 00000b0b: JUMPI 00000b0c: PUSH1 0x00 00000b0e: DUP1 00000b0f: REVERT 00000b10: JUMPDEST 00000b11: POP 00000b12: GAS 00000b13: CALL 00000b14: ISZERO 00000b15: DUP1 00000b16: ISZERO 00000b17: PUSH2 0x0b24 00000b1a: JUMPI 00000b1b: RETURNDATASIZE 00000b1c: PUSH1 0x00 00000b1e: DUP1 00000b1f: RETURNDATACOPY 00000b20: RETURNDATASIZE 00000b21: PUSH1 0x00 00000b23: REVERT 00000b24: JUMPDEST 00000b25: POP 00000b26: POP 00000b27: PUSH1 0x40 00000b29: MLOAD 00000b2a: PUSH1 0x60 00000b2c: DUP6 00000b2d: SWAP1 00000b2e: SHR 00000b2f: SWAP3 00000b30: POP 00000b31: DUP7 00000b32: ISZERO 00000b33: PUSH2 0x08fc 00000b36: MUL 00000b37: SWAP2 00000b38: POP 00000b39: DUP7 00000b3a: SWAP1 00000b3b: PUSH1 0x00 00000b3d: DUP2 00000b3e: DUP2 00000b3f: DUP2 00000b40: DUP6 00000b41: DUP9 00000b42: DUP9 00000b43: CALL 00000b44: SWAP4 00000b45: POP 00000b46: POP 00000b47: POP 00000b48: POP 00000b49: ISZERO 00000b4a: DUP1 00000b4b: ISZERO 00000b4c: PUSH2 0x0b59 00000b4f: JUMPI 00000b50: RETURNDATASIZE 00000b51: PUSH1 0x00 00000b53: DUP1 00000b54: RETURNDATACOPY 00000b55: RETURNDATASIZE 00000b56: PUSH1 0x00 00000b58: REVERT 00000b59: JUMPDEST 00000b5a: POP 00000b5b: POP 00000b5c: POP 00000b5d: POP 00000b5e: POP 00000b5f: POP 00000b60: POP 00000b61: POP 00000b62: POP 00000b63: JUMP 00000b64: JUMPDEST 00000b65: PUSH1 0x00 00000b67: SLOAD 00000b68: PUSH1 0x01 00000b6a: PUSH1 0x01 00000b6c: PUSH1 0xa0 00000b6e: SHL 00000b6f: SUB 00000b70: AND 00000b71: CALLER 00000b72: EQ 00000b73: PUSH2 0x0bb3 00000b76: JUMPI 00000b77: PUSH1 0x40 00000b79: MLOAD 00000b7a: PUSH3 0x461bcd 00000b7e: PUSH1 0xe5 00000b80: SHL 00000b81: DUP2 00000b82: MSTORE 00000b83: PUSH1 0x20 00000b85: PUSH1 0x04 00000b87: DUP3 00000b88: ADD 00000b89: MSTORE 00000b8a: PUSH1 0x12 00000b8c: PUSH1 0x24 00000b8e: DUP3 00000b8f: ADD 00000b90: MSTORE 00000b91: PUSH18 0x5661756c743a206f6e6c7920627269646765 00000ba4: PUSH1 0x70 00000ba6: SHL 00000ba7: PUSH1 0x44 00000ba9: DUP3 00000baa: ADD 00000bab: MSTORE 00000bac: PUSH1 0x64 00000bae: ADD 00000baf: PUSH2 0x043b 00000bb2: JUMP 00000bb3: JUMPDEST 00000bb4: PUSH2 0x044d 00000bb7: DUP2 00000bb8: PUSH2 0x0c54 00000bbb: JUMP 00000bbc: JUMPDEST 00000bbd: PUSH1 0x01 00000bbf: PUSH1 0x01 00000bc1: PUSH1 0xa0 00000bc3: SHL 00000bc4: SUB 00000bc5: DUP2 00000bc6: AND 00000bc7: PUSH1 0x00 00000bc9: SWAP1 00000bca: DUP2 00000bcb: MSTORE 00000bcc: PUSH1 0x03 00000bce: PUSH1 0x20 00000bd0: MSTORE 00000bd1: PUSH1 0x40 00000bd3: SWAP1 00000bd4: KECCAK256 00000bd5: SLOAD 00000bd6: PUSH1 0xff 00000bd8: AND 00000bd9: PUSH2 0x0c30 00000bdc: JUMPI 00000bdd: PUSH1 0x40 00000bdf: MLOAD 00000be0: PUSH3 0x461bcd 00000be4: PUSH1 0xe5 00000be6: SHL 00000be7: DUP2 00000be8: MSTORE 00000be9: PUSH1 0x20 00000beb: PUSH1 0x04 00000bed: DUP3 00000bee: ADD 00000bef: MSTORE 00000bf0: PUSH1 0x24 00000bf2: DUP1 00000bf3: DUP3 00000bf4: ADD 00000bf5: MSTORE 00000bf6: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77 00000c17: PUSH1 0x44 00000c19: DUP3 00000c1a: ADD 00000c1b: MSTORE 00000c1c: PUSH4 0x1b1a5cdd 00000c21: PUSH1 0xe2 00000c23: SHL 00000c24: PUSH1 0x64 00000c26: DUP3 00000c27: ADD 00000c28: MSTORE 00000c29: PUSH1 0x84 00000c2b: ADD 00000c2c: PUSH2 0x043b 00000c2f: JUMP 00000c30: JUMPDEST 00000c31: PUSH1 0x01 00000c33: PUSH1 0x01 00000c35: PUSH1 0xa0 00000c37: SHL 00000c38: SUB 00000c39: AND 00000c3a: PUSH1 0x00 00000c3c: SWAP1 00000c3d: DUP2 00000c3e: MSTORE 00000c3f: PUSH1 0x04 00000c41: PUSH1 0x20 00000c43: MSTORE 00000c44: PUSH1 0x40 00000c46: SWAP1 00000c47: KECCAK256 00000c48: DUP1 00000c49: SLOAD 00000c4a: PUSH1 0xff 00000c4c: NOT 00000c4d: AND 00000c4e: PUSH1 0x01 00000c50: OR 00000c51: SWAP1 00000c52: SSTORE 00000c53: JUMP 00000c54: JUMPDEST 00000c55: PUSH1 0x01 00000c57: PUSH1 0x01 00000c59: PUSH1 0xa0 00000c5b: SHL 00000c5c: SUB 00000c5d: DUP2 00000c5e: AND 00000c5f: PUSH1 0x00 00000c61: SWAP1 00000c62: DUP2 00000c63: MSTORE 00000c64: PUSH1 0x03 00000c66: PUSH1 0x20 00000c68: MSTORE 00000c69: PUSH1 0x40 00000c6b: SWAP1 00000c6c: KECCAK256 00000c6d: SLOAD 00000c6e: PUSH1 0xff 00000c70: AND 00000c71: PUSH2 0x0cc8 00000c74: JUMPI 00000c75: PUSH1 0x40 00000c77: MLOAD 00000c78: PUSH3 0x461bcd 00000c7c: PUSH1 0xe5 00000c7e: SHL 00000c7f: DUP2 00000c80: MSTORE 00000c81: PUSH1 0x20 00000c83: PUSH1 0x04 00000c85: DUP3 00000c86: ADD 00000c87: MSTORE 00000c88: PUSH1 0x24 00000c8a: DUP1 00000c8b: DUP3 00000c8c: ADD 00000c8d: MSTORE 00000c8e: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77 00000caf: PUSH1 0x44 00000cb1: DUP3 00000cb2: ADD 00000cb3: MSTORE 00000cb4: PUSH4 0x1b1a5cdd 00000cb9: PUSH1 0xe2 00000cbb: SHL 00000cbc: PUSH1 0x64 00000cbe: DUP3 00000cbf: ADD 00000cc0: MSTORE 00000cc1: PUSH1 0x84 00000cc3: ADD 00000cc4: PUSH2 0x043b 00000cc7: JUMP 00000cc8: JUMPDEST 00000cc9: PUSH1 0x01 00000ccb: PUSH1 0x01 00000ccd: PUSH1 0xa0 00000ccf: SHL 00000cd0: SUB 00000cd1: AND 00000cd2: PUSH1 0x00 00000cd4: SWAP1 00000cd5: DUP2 00000cd6: MSTORE 00000cd7: PUSH1 0x04 00000cd9: PUSH1 0x20 00000cdb: MSTORE 00000cdc: PUSH1 0x40 00000cde: SWAP1 00000cdf: KECCAK256 00000ce0: DUP1 00000ce1: SLOAD 00000ce2: PUSH1 0xff 00000ce4: NOT 00000ce5: AND 00000ce6: SWAP1 00000ce7: SSTORE 00000ce8: JUMP 00000ce9: JUMPDEST 00000cea: DUP3 00000ceb: DUP1 00000cec: SLOAD 00000ced: PUSH2 0x0cf5 00000cf0: SWAP1 00000cf1: PUSH2 0x10db 00000cf4: JUMP 00000cf5: JUMPDEST 00000cf6: SWAP1 00000cf7: PUSH1 0x00 00000cf9: MSTORE 00000cfa: PUSH1 0x20 00000cfc: PUSH1 0x00 00000cfe: KECCAK256 00000cff: SWAP1 00000d00: PUSH1 0x1f 00000d02: ADD 00000d03: PUSH1 0x20 00000d05: SWAP1 00000d06: DIV 00000d07: DUP2 00000d08: ADD 00000d09: SWAP3 00000d0a: DUP3 00000d0b: PUSH2 0x0d17 00000d0e: JUMPI 00000d0f: PUSH1 0x00 00000d11: DUP6 00000d12: SSTORE 00000d13: PUSH2 0x0d5d 00000d16: JUMP 00000d17: JUMPDEST 00000d18: DUP3 00000d19: PUSH1 0x1f 00000d1b: LT 00000d1c: PUSH2 0x0d30 00000d1f: JUMPI 00000d20: DUP1 00000d21: MLOAD 00000d22: PUSH1 0xff 00000d24: NOT 00000d25: AND 00000d26: DUP4 00000d27: DUP1 00000d28: ADD 00000d29: OR 00000d2a: DUP6 00000d2b: SSTORE 00000d2c: PUSH2 0x0d5d 00000d2f: JUMP 00000d30: JUMPDEST 00000d31: DUP3 00000d32: DUP1 00000d33: ADD 00000d34: PUSH1 0x01 00000d36: ADD 00000d37: DUP6 00000d38: SSTORE 00000d39: DUP3 00000d3a: ISZERO 00000d3b: PUSH2 0x0d5d 00000d3e: JUMPI 00000d3f: SWAP2 00000d40: DUP3 00000d41: ADD 00000d42: JUMPDEST 00000d43: DUP3 00000d44: DUP2 00000d45: GT 00000d46: ISZERO 00000d47: PUSH2 0x0d5d 00000d4a: JUMPI 00000d4b: DUP3 00000d4c: MLOAD 00000d4d: DUP3 00000d4e: SSTORE 00000d4f: SWAP2 00000d50: PUSH1 0x20 00000d52: ADD 00000d53: SWAP2 00000d54: SWAP1 00000d55: PUSH1 0x01 00000d57: ADD 00000d58: SWAP1 00000d59: PUSH2 0x0d42 00000d5c: JUMP 00000d5d: JUMPDEST 00000d5e: POP 00000d5f: PUSH2 0x0d69 00000d62: SWAP3 00000d63: SWAP2 00000d64: POP 00000d65: PUSH2 0x0d6d 00000d68: JUMP 00000d69: JUMPDEST 00000d6a: POP 00000d6b: SWAP1 00000d6c: JUMP 00000d6d: JUMPDEST 00000d6e: JUMPDEST 00000d6f: DUP1 00000d70: DUP3 00000d71: GT 00000d72: ISZERO 00000d73: PUSH2 0x0d69 00000d76: JUMPI 00000d77: PUSH1 0x00 00000d79: DUP2 00000d7a: SSTORE 00000d7b: PUSH1 0x01 00000d7d: ADD 00000d7e: PUSH2 0x0d6e 00000d81: JUMP 00000d82: JUMPDEST 00000d83: DUP1 00000d84: CALLDATALOAD 00000d85: PUSH1 0x01 00000d87: PUSH1 0x01 00000d89: PUSH1 0xa0 00000d8b: SHL 00000d8c: SUB 00000d8d: DUP2 00000d8e: AND 00000d8f: DUP2 00000d90: EQ 00000d91: PUSH2 0x0d99 00000d94: JUMPI 00000d95: PUSH1 0x00 00000d97: DUP1 00000d98: REVERT 00000d99: JUMPDEST 00000d9a: SWAP2 00000d9b: SWAP1 00000d9c: POP 00000d9d: JUMP 00000d9e: JUMPDEST 00000d9f: PUSH1 0x00 00000da1: DUP1 00000da2: DUP4 00000da3: PUSH1 0x1f 00000da5: DUP5 00000da6: ADD 00000da7: SLT 00000da8: PUSH2 0x0db0 00000dab: JUMPI 00000dac: PUSH1 0x00 00000dae: DUP1 00000daf: REVERT 00000db0: JUMPDEST 00000db1: POP 00000db2: DUP2 00000db3: CALLDATALOAD 00000db4: PUSH8 0xffffffffffffffff 00000dbd: DUP2 00000dbe: GT 00000dbf: ISZERO 00000dc0: PUSH2 0x0dc8 00000dc3: JUMPI 00000dc4: PUSH1 0x00 00000dc6: DUP1 00000dc7: REVERT 00000dc8: JUMPDEST 00000dc9: PUSH1 0x20 00000dcb: DUP4 00000dcc: ADD 00000dcd: SWAP2 00000dce: POP 00000dcf: DUP4 00000dd0: PUSH1 0x20 00000dd2: DUP3 00000dd3: DUP6 00000dd4: ADD 00000dd5: ADD 00000dd6: GT 00000dd7: ISZERO 00000dd8: PUSH2 0x0de0 00000ddb: JUMPI 00000ddc: PUSH1 0x00 00000dde: DUP1 00000ddf: REVERT 00000de0: JUMPDEST 00000de1: SWAP3 00000de2: POP 00000de3: SWAP3 00000de4: SWAP1 00000de5: POP 00000de6: JUMP 00000de7: JUMPDEST 00000de8: DUP1 00000de9: CALLDATALOAD 00000dea: PUSH8 0xffffffffffffffff 00000df3: DUP2 00000df4: AND 00000df5: DUP2 00000df6: EQ 00000df7: PUSH2 0x0d99 00000dfa: JUMPI 00000dfb: PUSH1 0x00 00000dfd: DUP1 00000dfe: REVERT 00000dff: JUMPDEST 00000e00: DUP1 00000e01: CALLDATALOAD 00000e02: PUSH1 0xff 00000e04: DUP2 00000e05: AND 00000e06: DUP2 00000e07: EQ 00000e08: PUSH2 0x0d99 00000e0b: JUMPI 00000e0c: PUSH1 0x00 00000e0e: DUP1 00000e0f: REVERT 00000e10: JUMPDEST 00000e11: PUSH1 0x00 00000e13: PUSH1 0x20 00000e15: DUP3 00000e16: DUP5 00000e17: SUB 00000e18: SLT 00000e19: ISZERO 00000e1a: PUSH2 0x0e22 00000e1d: JUMPI 00000e1e: PUSH1 0x00 00000e20: DUP1 00000e21: REVERT 00000e22: JUMPDEST 00000e23: PUSH2 0x0e2b 00000e26: DUP3 00000e27: PUSH2 0x0d82 00000e2a: JUMP 00000e2b: JUMPDEST 00000e2c: SWAP4 00000e2d: SWAP3 00000e2e: POP 00000e2f: POP 00000e30: POP 00000e31: JUMP 00000e32: JUMPDEST 00000e33: PUSH1 0x00 00000e35: PUSH1 0x20 00000e37: DUP3 00000e38: DUP5 00000e39: SUB 00000e3a: SLT 00000e3b: ISZERO 00000e3c: PUSH2 0x0e44 00000e3f: JUMPI 00000e40: PUSH1 0x00 00000e42: DUP1 00000e43: REVERT 00000e44: JUMPDEST 00000e45: POP 00000e46: CALLDATALOAD 00000e47: SWAP2 00000e48: SWAP1 00000e49: POP 00000e4a: JUMP 00000e4b: JUMPDEST 00000e4c: PUSH1 0x00 00000e4e: DUP1 00000e4f: PUSH1 0x40 00000e51: DUP4 00000e52: DUP6 00000e53: SUB 00000e54: SLT 00000e55: ISZERO 00000e56: PUSH2 0x0e5e 00000e59: JUMPI 00000e5a: PUSH1 0x00 00000e5c: DUP1 00000e5d: REVERT 00000e5e: JUMPDEST 00000e5f: DUP3 00000e60: CALLDATALOAD 00000e61: SWAP2 00000e62: POP 00000e63: PUSH2 0x0e6e 00000e66: PUSH1 0x20 00000e68: DUP5 00000e69: ADD 00000e6a: PUSH2 0x0d82 00000e6d: JUMP 00000e6e: JUMPDEST 00000e6f: SWAP1 00000e70: POP 00000e71: SWAP3 00000e72: POP 00000e73: SWAP3 00000e74: SWAP1 00000e75: POP 00000e76: JUMP 00000e77: JUMPDEST 00000e78: PUSH1 0x00 00000e7a: DUP1 00000e7b: PUSH1 0x00 00000e7d: PUSH1 0x40 00000e7f: DUP5 00000e80: DUP7 00000e81: SUB 00000e82: SLT 00000e83: ISZERO 00000e84: PUSH2 0x0e8c 00000e87: JUMPI 00000e88: PUSH1 0x00 00000e8a: DUP1 00000e8b: REVERT 00000e8c: JUMPDEST 00000e8d: DUP4 00000e8e: CALLDATALOAD 00000e8f: SWAP3 00000e90: POP 00000e91: PUSH1 0x20 00000e93: DUP5 00000e94: ADD 00000e95: CALLDATALOAD 00000e96: PUSH8 0xffffffffffffffff 00000e9f: DUP2 00000ea0: GT 00000ea1: ISZERO 00000ea2: PUSH2 0x0eaa 00000ea5: JUMPI 00000ea6: PUSH1 0x00 00000ea8: DUP1 00000ea9: REVERT 00000eaa: JUMPDEST 00000eab: PUSH2 0x0eb6 00000eae: DUP7 00000eaf: DUP3 00000eb0: DUP8 00000eb1: ADD 00000eb2: PUSH2 0x0d9e 00000eb5: JUMP 00000eb6: JUMPDEST 00000eb7: SWAP5 00000eb8: SWAP8 00000eb9: SWAP1 00000eba: SWAP7 00000ebb: POP 00000ebc: SWAP4 00000ebd: SWAP5 00000ebe: POP 00000ebf: POP 00000ec0: POP 00000ec1: POP 00000ec2: JUMP 00000ec3: JUMPDEST 00000ec4: PUSH1 0x00 00000ec6: DUP1 00000ec7: PUSH1 0x00 00000ec9: DUP1 00000eca: PUSH1 0x00 00000ecc: DUP1 00000ecd: PUSH1 0xa0 00000ecf: DUP8 00000ed0: DUP10 00000ed1: SUB 00000ed2: SLT 00000ed3: ISZERO 00000ed4: PUSH2 0x0edc 00000ed7: JUMPI 00000ed8: PUSH1 0x00 00000eda: DUP1 00000edb: REVERT 00000edc: JUMPDEST 00000edd: DUP7 00000ede: CALLDATALOAD 00000edf: SWAP6 00000ee0: POP 00000ee1: PUSH2 0x0eec 00000ee4: PUSH1 0x20 00000ee6: DUP9 00000ee7: ADD 00000ee8: PUSH2 0x0dff 00000eeb: JUMP 00000eec: JUMPDEST 00000eed: SWAP5 00000eee: POP 00000eef: PUSH2 0x0efa 00000ef2: PUSH1 0x40 00000ef4: DUP9 00000ef5: ADD 00000ef6: PUSH2 0x0de7 00000ef9: JUMP 00000efa: JUMPDEST 00000efb: SWAP4 00000efc: POP 00000efd: PUSH2 0x0f08 00000f00: PUSH1 0x60 00000f02: DUP9 00000f03: ADD 00000f04: PUSH2 0x0d82 00000f07: JUMP 00000f08: JUMPDEST 00000f09: SWAP3 00000f0a: POP 00000f0b: PUSH1 0x80 00000f0d: DUP8 00000f0e: ADD 00000f0f: CALLDATALOAD 00000f10: PUSH8 0xffffffffffffffff 00000f19: DUP2 00000f1a: GT 00000f1b: ISZERO 00000f1c: PUSH2 0x0f24 00000f1f: JUMPI 00000f20: PUSH1 0x00 00000f22: DUP1 00000f23: REVERT 00000f24: JUMPDEST 00000f25: PUSH2 0x0f30 00000f28: DUP10 00000f29: DUP3 00000f2a: DUP11 00000f2b: ADD 00000f2c: PUSH2 0x0d9e 00000f2f: JUMP 00000f30: JUMPDEST 00000f31: SWAP8 00000f32: SWAP11 00000f33: SWAP7 00000f34: SWAP10 00000f35: POP 00000f36: SWAP5 00000f37: SWAP8 00000f38: POP 00000f39: SWAP3 00000f3a: SWAP6 00000f3b: SWAP4 00000f3c: SWAP5 00000f3d: SWAP3 00000f3e: POP 00000f3f: POP 00000f40: POP 00000f41: JUMP 00000f42: JUMPDEST 00000f43: PUSH1 0x00 00000f45: DUP1 00000f46: PUSH1 0x40 00000f48: DUP4 00000f49: DUP6 00000f4a: SUB 00000f4b: SLT 00000f4c: ISZERO 00000f4d: PUSH2 0x0f55 00000f50: JUMPI 00000f51: PUSH1 0x00 00000f53: DUP1 00000f54: REVERT 00000f55: JUMPDEST 00000f56: POP 00000f57: POP 00000f58: DUP1 00000f59: CALLDATALOAD 00000f5a: SWAP3 00000f5b: PUSH1 0x20 00000f5d: SWAP1 00000f5e: SWAP2 00000f5f: ADD 00000f60: CALLDATALOAD 00000f61: SWAP2 00000f62: POP 00000f63: JUMP 00000f64: JUMPDEST 00000f65: PUSH1 0x00 00000f67: DUP1 00000f68: PUSH1 0x40 00000f6a: DUP4 00000f6b: DUP6 00000f6c: SUB 00000f6d: SLT 00000f6e: ISZERO 00000f6f: PUSH2 0x0f77 00000f72: JUMPI 00000f73: PUSH1 0x00 00000f75: DUP1 00000f76: REVERT 00000f77: JUMPDEST 00000f78: PUSH2 0x0f80 00000f7b: DUP4 00000f7c: PUSH2 0x0dff 00000f7f: JUMP 00000f80: JUMPDEST 00000f81: SWAP2 00000f82: POP 00000f83: PUSH2 0x0e6e 00000f86: PUSH1 0x20 00000f88: DUP5 00000f89: ADD 00000f8a: PUSH2 0x0de7 00000f8d: JUMP 00000f8e: JUMPDEST 00000f8f: PUSH1 0x00 00000f91: DUP2 00000f92: MLOAD 00000f93: DUP1 00000f94: DUP5 00000f95: MSTORE 00000f96: PUSH1 0x00 00000f98: JUMPDEST 00000f99: DUP2 00000f9a: DUP2 00000f9b: LT 00000f9c: ISZERO 00000f9d: PUSH2 0x0fb4 00000fa0: JUMPI 00000fa1: PUSH1 0x20 00000fa3: DUP2 00000fa4: DUP6 00000fa5: ADD 00000fa6: DUP2 00000fa7: ADD 00000fa8: MLOAD 00000fa9: DUP7 00000faa: DUP4 00000fab: ADD 00000fac: DUP3 00000fad: ADD 00000fae: MSTORE 00000faf: ADD 00000fb0: PUSH2 0x0f98 00000fb3: JUMP 00000fb4: JUMPDEST 00000fb5: DUP2 00000fb6: DUP2 00000fb7: GT 00000fb8: ISZERO 00000fb9: PUSH2 0x0fc6 00000fbc: JUMPI 00000fbd: PUSH1 0x00 00000fbf: PUSH1 0x20 00000fc1: DUP4 00000fc2: DUP8 00000fc3: ADD 00000fc4: ADD 00000fc5: MSTORE 00000fc6: JUMPDEST 00000fc7: POP 00000fc8: PUSH1 0x1f 00000fca: ADD 00000fcb: PUSH1 0x1f 00000fcd: NOT 00000fce: AND 00000fcf: SWAP3 00000fd0: SWAP1 00000fd1: SWAP3 00000fd2: ADD 00000fd3: PUSH1 0x20 00000fd5: ADD 00000fd6: SWAP3 00000fd7: SWAP2 00000fd8: POP 00000fd9: POP 00000fda: JUMP 00000fdb: JUMPDEST 00000fdc: PUSH1 0x00 00000fde: PUSH1 0x01 00000fe0: PUSH1 0x01 00000fe2: PUSH1 0xa0 00000fe4: SHL 00000fe5: SUB 00000fe6: DUP1 00000fe7: DUP10 00000fe8: AND 00000fe9: DUP4 00000fea: MSTORE 00000feb: PUSH1 0xff 00000fed: DUP9 00000fee: AND 00000fef: PUSH1 0x20 00000ff1: DUP5 00000ff2: ADD 00000ff3: MSTORE 00000ff4: DUP7 00000ff5: PUSH1 0x40 00000ff7: DUP5 00000ff8: ADD 00000ff9: MSTORE 00000ffa: PUSH1 0xc0 00000ffc: PUSH1 0x60 00000ffe: DUP5 00000fff: ADD 00001000: MSTORE 00001001: PUSH2 0x100d 00001004: PUSH1 0xc0 00001006: DUP5 00001007: ADD 00001008: DUP8 00001009: PUSH2 0x0f8e 0000100c: JUMP 0000100d: JUMPDEST 0000100e: SWAP5 0000100f: AND 00001010: PUSH1 0x80 00001012: DUP4 00001013: ADD 00001014: MSTORE 00001015: POP 00001016: PUSH1 0xa0 00001018: ADD 00001019: MSTORE 0000101a: SWAP5 0000101b: SWAP4 0000101c: POP 0000101d: POP 0000101e: POP 0000101f: POP 00001020: JUMP 00001021: JUMPDEST 00001022: PUSH1 0x20 00001024: DUP2 00001025: MSTORE 00001026: PUSH1 0x00 00001028: PUSH1 0x01 0000102a: PUSH1 0x01 0000102c: PUSH1 0xa0 0000102e: SHL 0000102f: SUB 00001030: DUP1 00001031: DUP5 00001032: MLOAD 00001033: AND 00001034: PUSH1 0x20 00001036: DUP5 00001037: ADD 00001038: MSTORE 00001039: PUSH1 0xff 0000103b: PUSH1 0x20 0000103d: DUP6 0000103e: ADD 0000103f: MLOAD 00001040: AND 00001041: PUSH1 0x40 00001043: DUP5 00001044: ADD 00001045: MSTORE 00001046: PUSH1 0x40 00001048: DUP5 00001049: ADD 0000104a: MLOAD 0000104b: PUSH1 0x60 0000104d: DUP5 0000104e: ADD 0000104f: MSTORE 00001050: PUSH1 0x60 00001052: DUP5 00001053: ADD 00001054: MLOAD 00001055: PUSH1 0xc0 00001057: PUSH1 0x80 00001059: DUP6 0000105a: ADD 0000105b: MSTORE 0000105c: PUSH2 0x1068 0000105f: PUSH1 0xe0 00001061: DUP6 00001062: ADD 00001063: DUP3 00001064: PUSH2 0x0f8e 00001067: JUMP 00001068: JUMPDEST 00001069: SWAP1 0000106a: POP 0000106b: DUP2 0000106c: PUSH1 0x80 0000106e: DUP7 0000106f: ADD 00001070: MLOAD 00001071: AND 00001072: PUSH1 0xa0 00001074: DUP6 00001075: ADD 00001076: MSTORE 00001077: PUSH1 0xa0 00001079: DUP6 0000107a: ADD 0000107b: MLOAD 0000107c: PUSH1 0xc0 0000107e: DUP6 0000107f: ADD 00001080: MSTORE 00001081: DUP1 00001082: SWAP3 00001083: POP 00001084: POP 00001085: POP 00001086: SWAP3 00001087: SWAP2 00001088: POP 00001089: POP 0000108a: JUMP 0000108b: JUMPDEST 0000108c: PUSH1 0x00 0000108e: DUP1 0000108f: DUP6 00001090: DUP6 00001091: GT 00001092: ISZERO 00001093: PUSH2 0x109b 00001096: JUMPI 00001097: PUSH1 0x00 00001099: DUP1 0000109a: REVERT 0000109b: JUMPDEST 0000109c: DUP4 0000109d: DUP7 0000109e: GT 0000109f: ISZERO 000010a0: PUSH2 0x10a8 000010a3: JUMPI 000010a4: PUSH1 0x00 000010a6: DUP1 000010a7: REVERT 000010a8: JUMPDEST 000010a9: POP 000010aa: POP 000010ab: DUP3 000010ac: ADD 000010ad: SWAP4 000010ae: SWAP2 000010af: SWAP1 000010b0: SWAP3 000010b1: SUB 000010b2: SWAP2 000010b3: POP 000010b4: JUMP 000010b5: JUMPDEST 000010b6: PUSH1 0x00 000010b8: DUP3 000010b9: NOT 000010ba: DUP3 000010bb: GT 000010bc: ISZERO 000010bd: PUSH2 0x10d6 000010c0: JUMPI 000010c1: PUSH4 0x4e487b71 000010c6: PUSH1 0xe0 000010c8: SHL 000010c9: PUSH1 0x00 000010cb: MSTORE 000010cc: PUSH1 0x11 000010ce: PUSH1 0x04 000010d0: MSTORE 000010d1: PUSH1 0x24 000010d3: PUSH1 0x00 000010d5: REVERT 000010d6: JUMPDEST 000010d7: POP 000010d8: ADD 000010d9: SWAP1 000010da: JUMP 000010db: JUMPDEST 000010dc: PUSH1 0x01 000010de: DUP2 000010df: DUP2 000010e0: SHR 000010e1: SWAP1 000010e2: DUP3 000010e3: AND 000010e4: DUP1 000010e5: PUSH2 0x10ef 000010e8: JUMPI 000010e9: PUSH1 0x7f 000010eb: DUP3 000010ec: AND 000010ed: SWAP2 000010ee: POP 000010ef: JUMPDEST 000010f0: PUSH1 0x20 000010f2: DUP3 000010f3: LT 000010f4: DUP2 000010f5: EQ 000010f6: ISZERO 000010f7: PUSH2 0x1110 000010fa: JUMPI 000010fb: PUSH4 0x4e487b71 00001100: PUSH1 0xe0 00001102: SHL 00001103: PUSH1 0x00 00001105: MSTORE 00001106: PUSH1 0x22 00001108: PUSH1 0x04 0000110a: MSTORE 0000110b: PUSH1 0x24 0000110d: PUSH1 0x00 0000110f: REVERT 00001110: JUMPDEST 00001111: POP 00001112: SWAP2 00001113: SWAP1 00001114: POP 00001115: JUMP 00001116: INVALID 00001117: LOG1 00001118: PUSH5 0x736f6c6343 0000111e: STOP 0000111f: ADDMOD 00001120: MOD 00001121: STOP 00001122: EXP
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f
call_targets:
0x99571e95db76b5cbc986ad1044ac73a0a7a09e28
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x99571e95db76b5cbc986ad1044ac73a0a7a09e28"
],
"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": "0xe78cea92",
"selector": "0xe78cea92",
"calldata_variants": [
"0xe78cea92",
"0xe78cea920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe9ae5c53",
"selector": "0xe9ae5c53",
"calldata_variants": [
"0xe9ae5c53",
"0xe9ae5c530000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xece2a625",
"selector": "0xece2a625",
"calldata_variants": [
"0xece2a625",
"0xece2a6250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed1e2563",
"selector": "0xed1e2563",
"calldata_variants": [
"0xed1e2563",
"0xed1e25630000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8135369a",
"selector": "0x8135369a",
"calldata_variants": [
"0x8135369a",
"0x8135369a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xad5c4648",
"selector": "0xad5c4648",
"calldata_variants": [
"0xad5c4648",
"0xad5c46480000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd01616c0",
"selector": "0xd01616c0",
"calldata_variants": [
"0xd01616c0",
"0xd01616c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x213ce7af",
"selector": "0x213ce7af",
"calldata_variants": [
"0x213ce7af",
"0x213ce7af0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2092,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2835,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2883,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [],
"untrusted_call_count": 3
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f
call_targets:
0x99571e95db76b5cbc986ad1044ac73a0a7a09e28
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x99571e95db76b5cbc986ad1044ac73a0a7a09e28"
],
"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": "0xe78cea92",
"selector": "0xe78cea92",
"calldata_variants": [
"0xe78cea92",
"0xe78cea920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe9ae5c53",
"selector": "0xe9ae5c53",
"calldata_variants": [
"0xe9ae5c53",
"0xe9ae5c530000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xece2a625",
"selector": "0xece2a625",
"calldata_variants": [
"0xece2a625",
"0xece2a6250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed1e2563",
"selector": "0xed1e2563",
"calldata_variants": [
"0xed1e2563",
"0xed1e25630000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8135369a",
"selector": "0x8135369a",
"calldata_variants": [
"0x8135369a",
"0x8135369a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xad5c4648",
"selector": "0xad5c4648",
"calldata_variants": [
"0xad5c4648",
"0xad5c46480000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd01616c0",
"selector": "0xd01616c0",
"calldata_variants": [
"0xd01616c0",
"0xd01616c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x213ce7af",
"selector": "0x213ce7af",
"calldata_variants": [
"0x213ce7af",
"0x213ce7af0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2092,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2835,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2883,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": []
}
|
| high | auth | codex | Proposal hash omits assetId, enabling cross-asset replay within the same vault | 85 | no | — |
viewevidence_json{
"evidence": "`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).",
"locations": [
"contracts/HydraBridge.sol:197",
"contracts/HydraBridge.sol:231"
],
"recommendation": "Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.",
"exploit_scenario": "If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain."
}
|
| low | access_control | codex | Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers | 65 | no | — |
viewevidence_json{
"evidence": "Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.",
"locations": [
"contracts/HydraBridge.sol:72",
"contracts/HydraBridge.sol:33",
"contracts/HydraBridge.sol:216",
"contracts/HydraBridge.sol:269"
],
"recommendation": "Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.",
"exploit_scenario": "If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone."
}
|