019bab3d-7dae-718a-bd33-ed21b428c9ba
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 |
|---|---|---|---|---|
| 39102 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39103 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39104 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39105 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39106 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39107 | detector.run | complete | 1 / 3 | 3 months ago |
| 39108 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39249 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39250 | tool.slither | failed | 2 / 2 | 3 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-eonluff1)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-eonluff1)
'forge' returned non-zero exit code 1
Compiling 11 files with Solc 0.8.4
stdout: Solc 0.8.4 finished in 29.56ms
Error: Compiler run failed:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:71:5:
stderr: |
stderr: 71 | function updateRollupAddress(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:132:5:
stderr: |
stderr: 132 | function updateRollupAddress(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:79:5:
stderr: |
stderr: 79 | function activeOutbox() public view returns (address) {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:78:5:
stderr: |
stderr: 78 | function activeOutbox() external view returns (address);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:89:5:
stderr: |
stderr: 89 | function allowedDelayedInboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:80:5:
stderr: |
stderr: 80 | function allowedDelayedInboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:95:5:
stderr: |
stderr: 95 | function allowedOutboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:84:5:
stderr: |
stderr: 84 | function allowedOutboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:106:5:
stderr: |
stderr: 106 | function enqueueSequencerMessage(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:102:5:
stderr: |
stderr: 102 | function enqueueSequencerMessage(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:135:5:
stderr: |
stderr: 135 | function submitBatchSpendingReport(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:117:5:
stderr: |
stderr: 117 | function submitBatchSpendingReport(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:195:5:
stderr: |
stderr: 195 | function executeCall(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:90:5:
stderr: |
stderr: 90 | function executeCall(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:214:5:
stderr: |
stderr: 214 | function setSequencerInbox(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:124:5:
stderr: |
stderr: 124 | function setSequencerInbox(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:221:5:
stderr: |
stderr: 221 | function setDelayedInbox(address inbox, bool enabled) external onlyRollupOrOwner {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:128:5:
stderr: |
stderr: 128 | function setDelayedInbox(address inbox, bool enabled) external;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:240:5:
stderr: |
stderr: 240 | function setOutbox(address outbox, bool enabled) external onlyRollupOrOwner {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:130:5:
stderr: |
stderr: 130 | function setOutbox(address inbox, bool enabled) external;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:270:5:
stderr: |
stderr: 270 | function sequencerMessageCount() external view returns (uint256) {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IBridge.sol:98:5:
stderr: |
stderr: 98 | function sequencerMessageCount() external view returns (uint256);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (9456): Overriding public state variable is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:42:5:
stderr: |
stderr: 42 | address[] public allowedDelayedInboxList;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Overridden public state variable is here:
stderr: --> src/bridge/IBridge.sol:56:5:
stderr: |
stderr: 56 | function allowedDelayedInboxList(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding public state variable is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:43:5:
stderr: |
stderr: 43 | address[] public allowedOutboxList;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Overridden public state variable is here:
stderr: --> src/bridge/IBridge.sol:60:5:
stderr: |
stderr: 60 | function allowedOutboxList(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding public state variable is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:48:5:
stderr: |
stderr: 48 | bytes32[] public delayedInboxAccs;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Overridden public state variable is here:
stderr: --> src/bridge/IBridge.sol:65:5:
stderr: |
stderr: 65 | function delayedInboxAccs(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding public state variable is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:51:5:
stderr: |
stderr: 51 | bytes32[] public sequencerInboxAccs;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Overridden public state variable is here:
stderr: --> src/bridge/IBridge.sol:70:5:
stderr: |
stderr: 70 | function sequencerInboxAccs(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding public state variable is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:53:5:
stderr: |
stderr: 53 | IOwnable public rollup;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Overridden public state variable is here:
stderr: --> src/bridge/IBridge.sol:74:5:
stderr: |
stderr: 74 | function rollup() external view returns (IOwnable);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (9456): Overriding public state variable is missing "override" specifier.
stderr: --> src/bridge/AbsBridge.sol:54:5:
stderr: |
stderr: 54 | address public sequencerInbox;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Overridden public state variable is here:
stderr: --> src/bridge/IBridge.sol:76:5:
stderr: |
stderr: 76 | function sequencerInbox() external view returns (address);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/Bridge.sol:22:5:
stderr: |
stderr: 22 | function initialize(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IEthBridge.sol:25:5:
stderr: |
stderr: 25 | function initialize(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9456): Overriding function is missing "override" specifier.
stderr: --> src/bridge/Bridge.sol:30:5:
stderr: |
stderr: 30 | function enqueueDelayedMessage(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Overridden function is here:
stderr: --> src/bridge/IEthBridge.sol:17:5:
stderr: |
stderr: 17 | function enqueueDelayedMessage(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "activeOutbox". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:79:5:
stderr: |
stderr: 79 | function activeOutbox() public view returns (address) {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:78:5:
stderr: |
stderr: 78 | function activeOutbox() external view returns (address);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (6480): Derived contract must override function "allowedDelayedInboxList". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:42:5:
stderr: |
stderr: 42 | address[] public allowedDelayedInboxList;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:56:5:
stderr: |
stderr: 56 | function allowedDelayedInboxList(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "allowedDelayedInboxes". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:89:5:
stderr: |
stderr: 89 | function allowedDelayedInboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:80:5:
stderr: |
stderr: 80 | function allowedDelayedInboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "allowedOutboxList". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:43:5:
stderr: |
stderr: 43 | address[] public allowedOutboxList;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:60:5:
stderr: |
stderr: 60 | function allowedOutboxList(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "allowedOutboxes". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:95:5:
stderr: |
stderr: 95 | function allowedOutboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:84:5:
stderr: |
stderr: 84 | function allowedOutboxes(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "delayedInboxAccs". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:48:5:
stderr: |
stderr: 48 | bytes32[] public delayedInboxAccs;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:65:5:
stderr: |
stderr: 65 | function delayedInboxAccs(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "enqueueSequencerMessage". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:106:5:
stderr: |
stderr: 106 | function enqueueSequencerMessage(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:102:5:
stderr: |
stderr: 102 | function enqueueSequencerMessage(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "executeCall". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:195:5:
stderr: |
stderr: 195 | function executeCall(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:90:5:
stderr: |
stderr: 90 | function executeCall(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "rollup". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:53:5:
stderr: |
stderr: 53 | IOwnable public rollup;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:74:5:
stderr: |
stderr: 74 | function rollup() external view returns (IOwnable);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (6480): Derived contract must override function "sequencerInbox". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:54:5:
stderr: |
stderr: 54 | address public sequencerInbox;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:76:5:
stderr: |
stderr: 76 | function sequencerInbox() external view returns (address);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (6480): Derived contract must override function "sequencerInboxAccs". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:51:5:
stderr: |
stderr: 51 | bytes32[] public sequencerInboxAccs;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:70:5:
stderr: |
stderr: 70 | function sequencerInboxAccs(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "sequencerMessageCount". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:270:5:
stderr: |
stderr: 270 | function sequencerMessageCount() external view returns (uint256) {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:98:5:
stderr: |
stderr: 98 | function sequencerMessageCount() external view returns (uint256);
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (6480): Derived contract must override function "setDelayedInbox". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:221:5:
stderr: |
stderr: 221 | function setDelayedInbox(address inbox, bool enabled) external onlyRollupOrOwner {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:128:5:
stderr: |
stderr: 128 | function setDelayedInbox(address inbox, bool enabled) external;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (6480): Derived contract must override function "setOutbox". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:240:5:
stderr: |
stderr: 240 | function setOutbox(address outbox, bool enabled) external onlyRollupOrOwner {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:130:5:
stderr: |
stderr: 130 | function setOutbox(address inbox, bool enabled) external;
stderr: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
stderr:
stderr: Error (6480): Derived contract must override function "setSequencerInbox". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:214:5:
stderr: |
stderr: 214 | function setSequencerInbox(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:124:5:
stderr: |
stderr: 124 | function setSequencerInbox(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "submitBatchSpendingReport". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:135:5:
stderr: |
stderr: 135 | function submitBatchSpendingReport(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:117:5:
stderr: |
stderr: 117 | function submitBatchSpendingReport(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (6480): Derived contract must override function "updateRollupAddress". Two or more base classes define function with same name and parameter types.
stderr: --> src/bridge/Bridge.sol:18:1:
stderr: |
stderr: 18 | contract Bridge is AbsBridge, IEthBridge {
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "AbsBridge":
stderr: --> src/bridge/AbsBridge.sol:71:5:
stderr: |
stderr: 71 | function updateRollupAddress(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr: Note: Definition in "IBridge":
stderr: --> src/bridge/IBridge.sol:132:5:
stderr: |
stderr: 132 | function updateRollupAddress(
stderr: | ^ (Relevant source part starts here and spans across multiple lines).
stderr:
stderr: Error (9582): Member "basefee" not found or not visible after argument-dependent lookup in block.
stderr: --> src/bridge/AbsBridge.sol:144:13:
stderr: |
stderr: 144 | block.basefee,
stderr: | ^^^^^^^^^^^^^
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-eonluff1/out/build-info is not a directory.
{"no_findings":false,"summary":"Unprotected initializer lets anyone take ownership if the proxy is deployed without calling initialize in the same transaction.","findings":[{"severity":"critical","category":"upgradeability","title":"Initializer is publicly callable, enabling proxy takeover if not initialized atomically","exploit_scenario":"If the proxy is deployed without calling `initialize` in the same transaction, any account can call `initialize(rollup_)` via the proxy and set `rollup` to a malicious contract that returns the attacker as owner. The attacker then controls `onlyRollupOrOwner` functions (e.g., setting outboxes/inboxes or updating rollup), enabling full system takeover and potential escrow drain via allowed outbox execution.","recommendation":"Ensure `initialize` is executed atomically during proxy deployment (constructor `data` call) or add an access-control guard (e.g., `onlyProxyOwner`/admin) to `initialize`. Consider disabling initializers on the implementation to prevent misuse.","evidence":"`initialize` is `external` and only gated by `initializer` and `onlyDelegated`, with no caller authentication.","locations":["src/bridge/Bridge.sol:22"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-_s_a76zq
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bac37-77d0-7d33-a2cc-302055885d9d
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Preparing to read AUDIT_BUNDLE file**
exec
/bin/bash -lc 'cat /tmp/codex-_s_a76zq/AUDIT_BUNDLE.txt' in /tmp/codex-_s_a76zq succeeded in 8ms:
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: src/bridge/AbsBridge.sol
================================================================================
// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.4;
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol";
import {
NotContract,
NotRollupOrOwner,
NotDelayedInbox,
NotSequencerInbox,
thinking
**Identifying potential vulnerabilities and auditing risks**
I'm reviewing the code for reentrancy risks, unprotected initializer functions, and external calls semantics, especially focusing on executeCall and onlyRollupOrOwner modifiers. The main concern is the unprotected initializer allowing admin takeover if deployment isn't atomic, which I consider a high-critical risk. Other issues like allowed outboxes calling arbitrary contracts seem intended. I'll gather file line numbers for key functions to produce an audit JSON summary.
exec
/bin/bash -lc "nl -ba /tmp/codex-_s_a76zq/AUDIT_BUNDLE.txt | sed -n '80,220p'" in /tmp/codex-_s_a76zq succeeded in 7ms:
80 rollup = _rollup;
81 emit RollupUpdated(address(_rollup));
82 }
83
84 /// @dev returns the address of current active Outbox, or zero if no outbox is active
85 function activeOutbox() public view returns (address) {
86 address outbox = _activeOutbox;
87 // address zero is returned if no outbox is set, but the value used in storage
88 // is non-zero to save users some gas (as storage refunds are usually maxed out)
89 // EIP-1153 would help here.
90 // we don't return `EMPTY_ACTIVEOUTBOX` to avoid a breaking change on the current api
91 if (outbox == EMPTY_ACTIVEOUTBOX) return address(0);
92 return outbox;
93 }
94
95 function allowedDelayedInboxes(
96 address inbox
97 ) public view returns (bool) {
98 return allowedDelayedInboxesMap[inbox].allowed;
99 }
thinking
**Searching for Bridge initialization line numbers**
exec
/bin/bash -lc "nl -ba /tmp/codex-_s_a76zq/AUDIT_BUNDLE.txt | sed -n '260,360p'" in /tmp/codex-_s_a76zq succeeded in 6ms:
260 allowedOutboxesMap[allowedOutboxList[info.index]].index = info.index;
261 allowedOutboxList.pop();
262 delete allowedOutboxesMap[outbox];
263 }
264 }
265
266 function setSequencerReportedSubMessageCount(
267 uint256 newMsgCount
268 ) external onlyRollupOrOwner {
269 sequencerReportedSubMessageCount = newMsgCount;
270 }
271
272 function delayedMessageCount() external view override returns (uint256) {
273 return delayedInboxAccs.length;
274 }
275
276 function sequencerMessageCount() external view returns (uint256) {
277 return sequencerInboxAccs.length;
278 }
279
thinking
**Considering line number referencing**
exec
/bin/bash -lc 'nl -ba /tmp/codex-_s_a76zq/src/bridge/Bridge.sol' in /tmp/codex-_s_a76zq succeeded in 9ms:
1 // Copyright 2021-2022, Offchain Labs, Inc.
2 // For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
3 // SPDX-License-Identifier: BUSL-1.1
4
5 pragma solidity ^0.8.4;
6
7 import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
8 import "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol";
9 import "./AbsBridge.sol";
10 import "./IEthBridge.sol";
11 import "./Messages.sol";
12 import "../libraries/DelegateCallAware.sol";
13
14 /**
15 * @title Staging ground for incoming and outgoing messages
16 * @notice It is also the ETH escrow for value sent with these messages.
17 */
18 contract Bridge is AbsBridge, IEthBridge {
19 using AddressUpgradeable for address;
20
thinking
**Analyzing Bridge initialization risks**
codex
{"no_findings":false,"summary":"Unprotected initializer lets anyone take ownership if the proxy is deployed without calling initialize in the same transaction.","findings":[{"severity":"critical","category":"upgradeability","title":"Initializer is publicly callable, enabling proxy takeover if not initialized atomically","exploit_scenario":"If the proxy is deployed without calling `initialize` in the same transaction, any account can call `initialize(rollup_)` via the proxy and set `rollup` to a malicious contract that returns the attacker as owner. The attacker then controls `onlyRollupOrOwner` functions (e.g., setting outboxes/inboxes or updating rollup), enabling full system takeover and potential escrow drain via allowed outbox execution.","recommendation":"Ensure `initialize` is executed atomically during proxy deployment (constructor `data` call) or add an access-control guard (e.g., `onlyProxyOwner`/admin) to `initialize`. Consider disabling initializers on the implementation to prevent misuse.","evidence":"`initialize` is `external` and only gated by `initializer` and `onlyDelegated`, with no caller authentication.","locations":["src/bridge/Bridge.sol:22"]}]}
tokens used
18,343
{
"codex": {
"ran_at": "2026-01-11T08:42:27.120395+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 11,
"import_count": 11,
"first_party_contracts_count": 9
},
"summary": "Unprotected initializer lets anyone take ownership if the proxy is deployed without calling initialize in the same transaction.",
"raw_final": {
"summary": "Unprotected initializer lets anyone take ownership if the proxy is deployed without calling initialize in the same transaction.",
"findings": [
{
"title": "Initializer is publicly callable, enabling proxy takeover if not initialized atomically",
"category": "upgradeability",
"evidence": "`initialize` is `external` and only gated by `initializer` and `onlyDelegated`, with no caller authentication.",
"severity": "critical",
"locations": [
"src/bridge/Bridge.sol:22"
],
"recommendation": "Ensure `initialize` is executed atomically during proxy deployment (constructor `data` call) or add an access-control guard (e.g., `onlyProxyOwner`/admin) to `initialize`. Consider disabling initializers on the implementation to prevent misuse.",
"exploit_scenario": "If the proxy is deployed without calling `initialize` in the same transaction, any account can call `initialize(rollup_)` via the proxy and set `rollup` to a malicious contract that returns the attacker as owner. The attacker then controls `onlyRollupOrOwner` functions (e.g., setting outboxes/inboxes or updating rollup), enabling full system takeover and potential escrow drain via allowed outbox execution."
}
],
"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 0x017f 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x9e5d4c49 00000019: GT 0000001a: PUSH2 0x00d6 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xd5719dc2 00000024: GT 00000025: PUSH2 0x007f 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xeca067ad 0000002f: GT 00000030: PUSH2 0x0059 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xeca067ad 0000003a: EQ 0000003b: PUSH2 0x0457 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xee35f327 00000045: EQ 00000046: PUSH2 0x046c 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf81ff3b3 00000050: EQ 00000051: PUSH2 0x048c 00000054: JUMPI 00000055: PUSH1 0x00 00000057: DUP1 00000058: REVERT 00000059: JUMPDEST 0000005a: DUP1 0000005b: PUSH4 0xd5719dc2 00000060: EQ 00000061: PUSH2 0x0417 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0xe76f5c8d 0000006b: EQ 0000006c: PUSH2 0x0437 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xe77145f4 00000076: EQ 00000077: PUSH2 0x0234 0000007a: JUMPI 0000007b: PUSH1 0x00 0000007d: DUP1 0000007e: REVERT 0000007f: JUMPDEST 00000080: DUP1 00000081: PUSH4 0xc4d66de8 00000086: GT 00000087: PUSH2 0x00b0 0000008a: JUMPI 0000008b: DUP1 0000008c: PUSH4 0xc4d66de8 00000091: EQ 00000092: PUSH2 0x03b7 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0xcb23bcb5 0000009c: EQ 0000009d: PUSH2 0x03d7 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xcee3d728 000000a7: EQ 000000a8: PUSH2 0x03f7 000000ab: JUMPI 000000ac: PUSH1 0x00 000000ae: DUP1 000000af: REVERT 000000b0: JUMPDEST 000000b1: DUP1 000000b2: PUSH4 0x9e5d4c49 000000b7: EQ 000000b8: PUSH2 0x0337 000000bb: JUMPI 000000bc: DUP1 000000bd: PUSH4 0xab5d8943 000000c2: EQ 000000c3: PUSH2 0x0365 000000c6: JUMPI 000000c7: DUP1 000000c8: PUSH4 0xae60bd13 000000cd: EQ 000000ce: PUSH2 0x037a 000000d1: JUMPI 000000d2: PUSH1 0x00 000000d4: DUP1 000000d5: REVERT 000000d6: JUMPDEST 000000d7: DUP1 000000d8: PUSH4 0x5fca4a16 000000dd: GT 000000de: PUSH2 0x0138 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0x8db5993b 000000e8: GT 000000e9: PUSH2 0x0112 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0x8db5993b 000000f3: EQ 000000f4: PUSH2 0x02cc 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x919cc706 000000fe: EQ 000000ff: PUSH2 0x02df 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x945e1147 00000109: EQ 0000010a: PUSH2 0x02ff 0000010d: JUMPI 0000010e: PUSH1 0x00 00000110: DUP1 00000111: REVERT 00000112: JUMPDEST 00000113: DUP1 00000114: PUSH4 0x5fca4a16 00000119: EQ 0000011a: PUSH2 0x0256 0000011d: JUMPI 0000011e: DUP1 0000011f: PUSH4 0x7a88b107 00000124: EQ 00000125: PUSH2 0x026c 00000128: JUMPI 00000129: DUP1 0000012a: PUSH4 0x86598a56 0000012f: EQ 00000130: PUSH2 0x028c 00000133: JUMPI 00000134: PUSH1 0x00 00000136: DUP1 00000137: REVERT 00000138: JUMPDEST 00000139: DUP1 0000013a: PUSH4 0x413b35bd 0000013f: GT 00000140: PUSH2 0x0169 00000143: JUMPI 00000144: DUP1 00000145: PUSH4 0x413b35bd 0000014a: EQ 0000014b: PUSH2 0x01c8 0000014e: JUMPI 0000014f: DUP1 00000150: PUSH4 0x47fb24c5 00000155: EQ 00000156: PUSH2 0x0214 00000159: JUMPI 0000015a: DUP1 0000015b: PUSH4 0x4f61f850 00000160: EQ 00000161: PUSH2 0x0236 00000164: JUMPI 00000165: PUSH1 0x00 00000167: DUP1 00000168: REVERT 00000169: JUMPDEST 0000016a: DUP1 0000016b: PUSH3 0x84120c 0000016f: EQ 00000170: PUSH2 0x0184 00000173: JUMPI 00000174: DUP1 00000175: PUSH4 0x16bf5579 0000017a: EQ 0000017b: PUSH2 0x01a8 0000017e: JUMPI 0000017f: JUMPDEST 00000180: PUSH1 0x00 00000182: DUP1 00000183: REVERT 00000184: JUMPDEST 00000185: CALLVALUE 00000186: DUP1 00000187: ISZERO 00000188: PUSH2 0x0190 0000018b: JUMPI 0000018c: PUSH1 0x00 0000018e: DUP1 0000018f: REVERT 00000190: JUMPDEST 00000191: POP 00000192: PUSH1 0x07 00000194: SLOAD 00000195: JUMPDEST 00000196: PUSH1 0x40 00000198: MLOAD 00000199: SWAP1 0000019a: DUP2 0000019b: MSTORE 0000019c: PUSH1 0x20 0000019e: ADD 0000019f: JUMPDEST 000001a0: PUSH1 0x40 000001a2: MLOAD 000001a3: DUP1 000001a4: SWAP2 000001a5: SUB 000001a6: SWAP1 000001a7: RETURN 000001a8: JUMPDEST 000001a9: CALLVALUE 000001aa: DUP1 000001ab: ISZERO 000001ac: PUSH2 0x01b4 000001af: JUMPI 000001b0: PUSH1 0x00 000001b2: DUP1 000001b3: REVERT 000001b4: JUMPDEST 000001b5: POP 000001b6: PUSH2 0x0195 000001b9: PUSH2 0x01c3 000001bc: CALLDATASIZE 000001bd: PUSH1 0x04 000001bf: PUSH2 0x175e 000001c2: JUMP 000001c3: JUMPDEST 000001c4: PUSH2 0x04ac 000001c7: JUMP 000001c8: JUMPDEST 000001c9: CALLVALUE 000001ca: DUP1 000001cb: ISZERO 000001cc: PUSH2 0x01d4 000001cf: JUMPI 000001d0: PUSH1 0x00 000001d2: DUP1 000001d3: REVERT 000001d4: JUMPDEST 000001d5: POP 000001d6: PUSH2 0x0204 000001d9: PUSH2 0x01e3 000001dc: CALLDATASIZE 000001dd: PUSH1 0x04 000001df: PUSH2 0x178c 000001e2: JUMP 000001e3: JUMPDEST 000001e4: PUSH1 0x01 000001e6: PUSH1 0x01 000001e8: PUSH1 0xa0 000001ea: SHL 000001eb: SUB 000001ec: AND 000001ed: PUSH1 0x00 000001ef: SWAP1 000001f0: DUP2 000001f1: MSTORE 000001f2: PUSH1 0x02 000001f4: PUSH1 0x20 000001f6: MSTORE 000001f7: PUSH1 0x40 000001f9: SWAP1 000001fa: KECCAK256 000001fb: PUSH1 0x01 000001fd: ADD 000001fe: SLOAD 000001ff: PUSH1 0xff 00000201: AND 00000202: SWAP1 00000203: JUMP 00000204: JUMPDEST 00000205: PUSH1 0x40 00000207: MLOAD 00000208: SWAP1 00000209: ISZERO 0000020a: ISZERO 0000020b: DUP2 0000020c: MSTORE 0000020d: PUSH1 0x20 0000020f: ADD 00000210: PUSH2 0x019f 00000213: JUMP 00000214: JUMPDEST 00000215: CALLVALUE 00000216: DUP1 00000217: ISZERO 00000218: PUSH2 0x0220 0000021b: JUMPI 0000021c: PUSH1 0x00 0000021e: DUP1 0000021f: REVERT 00000220: JUMPDEST 00000221: POP 00000222: PUSH2 0x0234 00000225: PUSH2 0x022f 00000228: CALLDATASIZE 00000229: PUSH1 0x04 0000022b: PUSH2 0x17b0 0000022e: JUMP 0000022f: JUMPDEST 00000230: PUSH2 0x04cd 00000233: JUMP 00000234: JUMPDEST 00000235: STOP 00000236: JUMPDEST 00000237: CALLVALUE 00000238: DUP1 00000239: ISZERO 0000023a: PUSH2 0x0242 0000023d: JUMPI 0000023e: PUSH1 0x00 00000240: DUP1 00000241: REVERT 00000242: JUMPDEST 00000243: POP 00000244: PUSH2 0x0234 00000247: PUSH2 0x0251 0000024a: CALLDATASIZE 0000024b: PUSH1 0x04 0000024d: PUSH2 0x178c 00000250: JUMP 00000251: JUMPDEST 00000252: PUSH2 0x07d3 00000255: JUMP 00000256: JUMPDEST 00000257: CALLVALUE 00000258: DUP1 00000259: ISZERO 0000025a: PUSH2 0x0262 0000025d: JUMPI 0000025e: PUSH1 0x00 00000260: DUP1 00000261: REVERT 00000262: JUMPDEST 00000263: POP 00000264: PUSH2 0x0195 00000267: PUSH1 0x0a 00000269: SLOAD 0000026a: DUP2 0000026b: JUMP 0000026c: JUMPDEST 0000026d: CALLVALUE 0000026e: DUP1 0000026f: ISZERO 00000270: PUSH2 0x0278 00000273: JUMPI 00000274: PUSH1 0x00 00000276: DUP1 00000277: REVERT 00000278: JUMPDEST 00000279: POP 0000027a: PUSH2 0x0195 0000027d: PUSH2 0x0287 00000280: CALLDATASIZE 00000281: PUSH1 0x04 00000283: PUSH2 0x17ee 00000286: JUMP 00000287: JUMPDEST 00000288: PUSH2 0x08ff 0000028b: JUMP 0000028c: JUMPDEST 0000028d: CALLVALUE 0000028e: DUP1 0000028f: ISZERO 00000290: PUSH2 0x0298 00000293: JUMPI 00000294: PUSH1 0x00 00000296: DUP1 00000297: REVERT 00000298: JUMPDEST 00000299: POP 0000029a: PUSH2 0x02ac 0000029d: PUSH2 0x02a7 000002a0: CALLDATASIZE 000002a1: PUSH1 0x04 000002a3: PUSH2 0x181a 000002a6: JUMP 000002a7: JUMPDEST 000002a8: PUSH2 0x0960 000002ab: JUMP 000002ac: JUMPDEST 000002ad: PUSH1 0x40 000002af: DUP1 000002b0: MLOAD 000002b1: SWAP5 000002b2: DUP6 000002b3: MSTORE 000002b4: PUSH1 0x20 000002b6: DUP6 000002b7: ADD 000002b8: SWAP4 000002b9: SWAP1 000002ba: SWAP4 000002bb: MSTORE 000002bc: SWAP2 000002bd: DUP4 000002be: ADD 000002bf: MSTORE 000002c0: PUSH1 0x60 000002c2: DUP3 000002c3: ADD 000002c4: MSTORE 000002c5: PUSH1 0x80 000002c7: ADD 000002c8: PUSH2 0x019f 000002cb: JUMP 000002cc: JUMPDEST 000002cd: PUSH2 0x0195 000002d0: PUSH2 0x02da 000002d3: CALLDATASIZE 000002d4: PUSH1 0x04 000002d6: PUSH2 0x184c 000002d9: JUMP 000002da: JUMPDEST 000002db: PUSH2 0x0af6 000002de: JUMP 000002df: JUMPDEST 000002e0: CALLVALUE 000002e1: DUP1 000002e2: ISZERO 000002e3: PUSH2 0x02eb 000002e6: JUMPI 000002e7: PUSH1 0x00 000002e9: DUP1 000002ea: REVERT 000002eb: JUMPDEST 000002ec: POP 000002ed: PUSH2 0x0234 000002f0: PUSH2 0x02fa 000002f3: CALLDATASIZE 000002f4: PUSH1 0x04 000002f6: PUSH2 0x178c 000002f9: JUMP 000002fa: JUMPDEST 000002fb: PUSH2 0x0b0c 000002fe: JUMP 000002ff: JUMPDEST 00000300: CALLVALUE 00000301: DUP1 00000302: ISZERO 00000303: PUSH2 0x030b 00000306: JUMPI 00000307: PUSH1 0x00 00000309: DUP1 0000030a: REVERT 0000030b: JUMPDEST 0000030c: POP 0000030d: PUSH2 0x031f 00000310: PUSH2 0x031a 00000313: CALLDATASIZE 00000314: PUSH1 0x04 00000316: PUSH2 0x175e 00000319: JUMP 0000031a: JUMPDEST 0000031b: PUSH2 0x0c31 0000031e: JUMP 0000031f: JUMPDEST 00000320: PUSH1 0x40 00000322: MLOAD 00000323: PUSH1 0x01 00000325: PUSH1 0x01 00000327: PUSH1 0xa0 00000329: SHL 0000032a: SUB 0000032b: SWAP1 0000032c: SWAP2 0000032d: AND 0000032e: DUP2 0000032f: MSTORE 00000330: PUSH1 0x20 00000332: ADD 00000333: PUSH2 0x019f 00000336: JUMP 00000337: JUMPDEST 00000338: CALLVALUE 00000339: DUP1 0000033a: ISZERO 0000033b: PUSH2 0x0343 0000033e: JUMPI 0000033f: PUSH1 0x00 00000341: DUP1 00000342: REVERT 00000343: JUMPDEST 00000344: POP 00000345: PUSH2 0x0357 00000348: PUSH2 0x0352 0000034b: CALLDATASIZE 0000034c: PUSH1 0x04 0000034e: PUSH2 0x1893 00000351: JUMP 00000352: JUMPDEST 00000353: PUSH2 0x0c5b 00000356: JUMP 00000357: JUMPDEST 00000358: PUSH1 0x40 0000035a: MLOAD 0000035b: PUSH2 0x019f 0000035e: SWAP3 0000035f: SWAP2 00000360: SWAP1 00000361: PUSH2 0x1940 00000364: JUMP 00000365: JUMPDEST 00000366: CALLVALUE 00000367: DUP1 00000368: ISZERO 00000369: PUSH2 0x0371 0000036c: JUMPI 0000036d: PUSH1 0x00 0000036f: DUP1 00000370: REVERT 00000371: JUMPDEST 00000372: POP 00000373: PUSH2 0x031f 00000376: PUSH2 0x0df1 00000379: JUMP 0000037a: JUMPDEST 0000037b: CALLVALUE 0000037c: DUP1 0000037d: ISZERO 0000037e: PUSH2 0x0386 00000381: JUMPI 00000382: PUSH1 0x00 00000384: DUP1 00000385: REVERT 00000386: JUMPDEST 00000387: POP 00000388: PUSH2 0x0204 0000038b: PUSH2 0x0395 0000038e: CALLDATASIZE 0000038f: PUSH1 0x04 00000391: PUSH2 0x178c 00000394: JUMP 00000395: JUMPDEST 00000396: PUSH1 0x01 00000398: PUSH1 0x01 0000039a: PUSH1 0xa0 0000039c: SHL 0000039d: SUB 0000039e: AND 0000039f: PUSH1 0x00 000003a1: SWAP1 000003a2: DUP2 000003a3: MSTORE 000003a4: PUSH1 0x01 000003a6: PUSH1 0x20 000003a8: DUP2 000003a9: SWAP1 000003aa: MSTORE 000003ab: PUSH1 0x40 000003ad: SWAP1 000003ae: SWAP2 000003af: KECCAK256 000003b0: ADD 000003b1: SLOAD 000003b2: PUSH1 0xff 000003b4: AND 000003b5: SWAP1 000003b6: JUMP 000003b7: JUMPDEST 000003b8: CALLVALUE 000003b9: DUP1 000003ba: ISZERO 000003bb: PUSH2 0x03c3 000003be: JUMPI 000003bf: PUSH1 0x00 000003c1: DUP1 000003c2: REVERT 000003c3: JUMPDEST 000003c4: POP 000003c5: PUSH2 0x0234 000003c8: PUSH2 0x03d2 000003cb: CALLDATASIZE 000003cc: PUSH1 0x04 000003ce: PUSH2 0x178c 000003d1: JUMP 000003d2: JUMPDEST 000003d3: PUSH2 0x0e34 000003d6: JUMP 000003d7: JUMPDEST 000003d8: CALLVALUE 000003d9: DUP1 000003da: ISZERO 000003db: PUSH2 0x03e3 000003de: JUMPI 000003df: PUSH1 0x00 000003e1: DUP1 000003e2: REVERT 000003e3: JUMPDEST 000003e4: POP 000003e5: PUSH1 0x08 000003e7: SLOAD 000003e8: PUSH2 0x031f 000003eb: SWAP1 000003ec: PUSH1 0x01 000003ee: PUSH1 0x01 000003f0: PUSH1 0xa0 000003f2: SHL 000003f3: SUB 000003f4: AND 000003f5: DUP2 000003f6: JUMP 000003f7: JUMPDEST 000003f8: CALLVALUE 000003f9: DUP1 000003fa: ISZERO 000003fb: PUSH2 0x0403 000003fe: JUMPI 000003ff: PUSH1 0x00 00000401: DUP1 00000402: REVERT 00000403: JUMPDEST 00000404: POP 00000405: PUSH2 0x0234 00000408: PUSH2 0x0412 0000040b: CALLDATASIZE 0000040c: PUSH1 0x04 0000040e: PUSH2 0x17b0 00000411: JUMP 00000412: JUMPDEST 00000413: PUSH2 0x1058 00000416: JUMP 00000417: JUMPDEST 00000418: CALLVALUE 00000419: DUP1 0000041a: ISZERO 0000041b: PUSH2 0x0423 0000041e: JUMPI 0000041f: PUSH1 0x00 00000421: DUP1 00000422: REVERT 00000423: JUMPDEST 00000424: POP 00000425: PUSH2 0x0195 00000428: PUSH2 0x0432 0000042b: CALLDATASIZE 0000042c: PUSH1 0x04 0000042e: PUSH2 0x175e 00000431: JUMP 00000432: JUMPDEST 00000433: PUSH2 0x13c6 00000436: JUMP 00000437: JUMPDEST 00000438: CALLVALUE 00000439: DUP1 0000043a: ISZERO 0000043b: PUSH2 0x0443 0000043e: JUMPI 0000043f: PUSH1 0x00 00000441: DUP1 00000442: REVERT 00000443: JUMPDEST 00000444: POP 00000445: PUSH2 0x031f 00000448: PUSH2 0x0452 0000044b: CALLDATASIZE 0000044c: PUSH1 0x04 0000044e: PUSH2 0x175e 00000451: JUMP 00000452: JUMPDEST 00000453: PUSH2 0x13d6 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: PUSH1 0x06 00000467: SLOAD 00000468: PUSH2 0x0195 0000046b: JUMP 0000046c: JUMPDEST 0000046d: CALLVALUE 0000046e: DUP1 0000046f: ISZERO 00000470: PUSH2 0x0478 00000473: JUMPI 00000474: PUSH1 0x00 00000476: DUP1 00000477: REVERT 00000478: JUMPDEST 00000479: POP 0000047a: PUSH1 0x09 0000047c: SLOAD 0000047d: PUSH2 0x031f 00000480: SWAP1 00000481: PUSH1 0x01 00000483: PUSH1 0x01 00000485: PUSH1 0xa0 00000487: SHL 00000488: SUB 00000489: AND 0000048a: DUP2 0000048b: JUMP 0000048c: JUMPDEST 0000048d: CALLVALUE 0000048e: DUP1 0000048f: ISZERO 00000490: PUSH2 0x0498 00000493: JUMPI 00000494: PUSH1 0x00 00000496: DUP1 00000497: REVERT 00000498: JUMPDEST 00000499: POP 0000049a: PUSH2 0x0234 0000049d: PUSH2 0x04a7 000004a0: CALLDATASIZE 000004a1: PUSH1 0x04 000004a3: PUSH2 0x175e 000004a6: JUMP 000004a7: JUMPDEST 000004a8: PUSH2 0x13e6 000004ab: JUMP 000004ac: JUMPDEST 000004ad: PUSH1 0x07 000004af: DUP2 000004b0: DUP2 000004b1: SLOAD 000004b2: DUP2 000004b3: LT 000004b4: PUSH2 0x04bc 000004b7: JUMPI 000004b8: PUSH1 0x00 000004ba: DUP1 000004bb: REVERT 000004bc: JUMPDEST 000004bd: PUSH1 0x00 000004bf: SWAP2 000004c0: DUP3 000004c1: MSTORE 000004c2: PUSH1 0x20 000004c4: SWAP1 000004c5: SWAP2 000004c6: KECCAK256 000004c7: ADD 000004c8: SLOAD 000004c9: SWAP1 000004ca: POP 000004cb: DUP2 000004cc: JUMP 000004cd: JUMPDEST 000004ce: PUSH1 0x08 000004d0: SLOAD 000004d1: PUSH1 0x01 000004d3: PUSH1 0x01 000004d5: PUSH1 0xa0 000004d7: SHL 000004d8: SUB 000004d9: AND 000004da: CALLER 000004db: EQ 000004dc: PUSH2 0x059c 000004df: JUMPI 000004e0: PUSH1 0x08 000004e2: SLOAD 000004e3: PUSH1 0x40 000004e5: DUP1 000004e6: MLOAD 000004e7: PUSH4 0x8da5cb5b 000004ec: PUSH1 0xe0 000004ee: SHL 000004ef: DUP2 000004f0: MSTORE 000004f1: SWAP1 000004f2: MLOAD 000004f3: PUSH1 0x00 000004f5: SWAP3 000004f6: PUSH1 0x01 000004f8: PUSH1 0x01 000004fa: PUSH1 0xa0 000004fc: SHL 000004fd: SUB 000004fe: AND 000004ff: SWAP2 00000500: PUSH4 0x8da5cb5b 00000505: SWAP2 00000506: PUSH1 0x04 00000508: DUP1 00000509: DUP4 0000050a: ADD 0000050b: SWAP3 0000050c: PUSH1 0x20 0000050e: SWAP3 0000050f: SWAP2 00000510: SWAP1 00000511: DUP3 00000512: SWAP1 00000513: SUB 00000514: ADD 00000515: DUP2 00000516: DUP7 00000517: GAS 00000518: STATICCALL 00000519: ISZERO 0000051a: DUP1 0000051b: ISZERO 0000051c: PUSH2 0x0529 0000051f: JUMPI 00000520: RETURNDATASIZE 00000521: PUSH1 0x00 00000523: DUP1 00000524: RETURNDATACOPY 00000525: RETURNDATASIZE 00000526: PUSH1 0x00 00000528: REVERT 00000529: JUMPDEST 0000052a: POP 0000052b: POP 0000052c: POP 0000052d: POP 0000052e: PUSH1 0x40 00000530: MLOAD 00000531: RETURNDATASIZE 00000532: PUSH1 0x1f 00000534: NOT 00000535: PUSH1 0x1f 00000537: DUP3 00000538: ADD 00000539: AND 0000053a: DUP3 0000053b: ADD 0000053c: DUP1 0000053d: PUSH1 0x40 0000053f: MSTORE 00000540: POP 00000541: DUP2 00000542: ADD 00000543: SWAP1 00000544: PUSH2 0x054d 00000547: SWAP2 00000548: SWAP1 00000549: PUSH2 0x197c 0000054c: JUMP 0000054d: JUMPDEST 0000054e: SWAP1 0000054f: POP 00000550: CALLER 00000551: PUSH1 0x01 00000553: PUSH1 0x01 00000555: PUSH1 0xa0 00000557: SHL 00000558: SUB 00000559: DUP3 0000055a: AND 0000055b: EQ 0000055c: PUSH2 0x059a 0000055f: JUMPI 00000560: PUSH1 0x08 00000562: SLOAD 00000563: PUSH1 0x40 00000565: MLOAD 00000566: PUSH4 0x07396007 0000056b: PUSH1 0xe0 0000056d: SHL 0000056e: DUP2 0000056f: MSTORE 00000570: CALLER 00000571: PUSH1 0x04 00000573: DUP3 00000574: ADD 00000575: MSTORE 00000576: PUSH1 0x01 00000578: PUSH1 0x01 0000057a: PUSH1 0xa0 0000057c: SHL 0000057d: SUB 0000057e: SWAP2 0000057f: DUP3 00000580: AND 00000581: PUSH1 0x24 00000583: DUP3 00000584: ADD 00000585: MSTORE 00000586: SWAP1 00000587: DUP3 00000588: AND 00000589: PUSH1 0x44 0000058b: DUP3 0000058c: ADD 0000058d: MSTORE 0000058e: PUSH1 0x64 00000590: ADD 00000591: JUMPDEST 00000592: PUSH1 0x40 00000594: MLOAD 00000595: DUP1 00000596: SWAP2 00000597: SUB 00000598: SWAP1 00000599: REVERT 0000059a: JUMPDEST 0000059b: POP 0000059c: JUMPDEST 0000059d: PUSH1 0x01 0000059f: PUSH1 0x01 000005a1: PUSH1 0xa0 000005a3: SHL 000005a4: SUB 000005a5: DUP3 000005a6: AND 000005a7: PUSH1 0x00 000005a9: DUP2 000005aa: DUP2 000005ab: MSTORE 000005ac: PUSH1 0x01 000005ae: PUSH1 0x20 000005b0: DUP2 000005b1: DUP2 000005b2: MSTORE 000005b3: PUSH1 0x40 000005b5: SWAP3 000005b6: DUP4 000005b7: SWAP1 000005b8: KECCAK256 000005b9: SWAP2 000005ba: DUP3 000005bb: ADD 000005bc: SLOAD 000005bd: SWAP3 000005be: MLOAD 000005bf: DUP6 000005c0: ISZERO 000005c1: ISZERO 000005c2: DUP2 000005c3: MSTORE 000005c4: SWAP2 000005c5: SWAP4 000005c6: PUSH1 0xff 000005c8: SWAP1 000005c9: SWAP4 000005ca: AND 000005cb: SWAP3 000005cc: SWAP2 000005cd: PUSH32 0x6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521 000005ee: SWAP2 000005ef: ADD 000005f0: PUSH1 0x40 000005f2: MLOAD 000005f3: DUP1 000005f4: SWAP2 000005f5: SUB 000005f6: SWAP1 000005f7: LOG2 000005f8: DUP3 000005f9: ISZERO 000005fa: ISZERO 000005fb: DUP2 000005fc: ISZERO 000005fd: ISZERO 000005fe: SUB 000005ff: PUSH2 0x0608 00000602: JUMPI 00000603: POP 00000604: POP 00000605: POP 00000606: POP 00000607: JUMP 00000608: JUMPDEST 00000609: DUP3 0000060a: ISZERO 0000060b: PUSH2 0x06a3 0000060e: JUMPI 0000060f: PUSH1 0x40 00000611: DUP1 00000612: MLOAD 00000613: DUP1 00000614: DUP3 00000615: ADD 00000616: DUP3 00000617: MSTORE 00000618: PUSH1 0x03 0000061a: DUP1 0000061b: SLOAD 0000061c: DUP3 0000061d: MSTORE 0000061e: PUSH1 0x01 00000620: PUSH1 0x20 00000622: DUP1 00000623: DUP5 00000624: ADD 00000625: DUP3 00000626: DUP2 00000627: MSTORE 00000628: PUSH1 0x01 0000062a: PUSH1 0x01 0000062c: PUSH1 0xa0 0000062e: SHL 0000062f: SUB 00000630: DUP11 00000631: AND 00000632: PUSH1 0x00 00000634: DUP2 00000635: DUP2 00000636: MSTORE 00000637: SWAP3 00000638: DUP5 00000639: SWAP1 0000063a: MSTORE 0000063b: SWAP6 0000063c: DUP3 0000063d: KECCAK256 0000063e: SWAP5 0000063f: MLOAD 00000640: DUP6 00000641: SSTORE 00000642: MLOAD 00000643: SWAP4 00000644: DUP3 00000645: ADD 00000646: DUP1 00000647: SLOAD 00000648: PUSH1 0xff 0000064a: NOT 0000064b: AND 0000064c: SWAP5 0000064d: ISZERO 0000064e: ISZERO 0000064f: SWAP5 00000650: SWAP1 00000651: SWAP5 00000652: OR 00000653: SWAP1 00000654: SWAP4 00000655: SSTORE 00000656: DUP2 00000657: SLOAD 00000658: SWAP1 00000659: DUP2 0000065a: ADD 0000065b: DUP3 0000065c: SSTORE 0000065d: SWAP2 0000065e: MSTORE 0000065f: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b 00000680: ADD 00000681: DUP1 00000682: SLOAD 00000683: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000698: NOT 00000699: AND 0000069a: SWAP1 0000069b: SWAP2 0000069c: OR 0000069d: SWAP1 0000069e: SSTORE 0000069f: PUSH2 0x07cc 000006a2: JUMP 000006a3: JUMPDEST 000006a4: PUSH1 0x03 000006a6: DUP1 000006a7: SLOAD 000006a8: PUSH2 0x06b3 000006ab: SWAP1 000006ac: PUSH1 0x01 000006ae: SWAP1 000006af: PUSH2 0x1999 000006b2: JUMP 000006b3: JUMPDEST 000006b4: DUP2 000006b5: SLOAD 000006b6: DUP2 000006b7: LT 000006b8: PUSH2 0x06c3 000006bb: JUMPI 000006bc: PUSH2 0x06c3 000006bf: PUSH2 0x19ba 000006c2: JUMP 000006c3: JUMPDEST 000006c4: PUSH1 0x00 000006c6: SWAP2 000006c7: DUP3 000006c8: MSTORE 000006c9: PUSH1 0x20 000006cb: SWAP1 000006cc: SWAP2 000006cd: KECCAK256 000006ce: ADD 000006cf: SLOAD 000006d0: DUP3 000006d1: SLOAD 000006d2: PUSH1 0x03 000006d4: DUP1 000006d5: SLOAD 000006d6: PUSH1 0x01 000006d8: PUSH1 0x01 000006da: PUSH1 0xa0 000006dc: SHL 000006dd: SUB 000006de: SWAP1 000006df: SWAP4 000006e0: AND 000006e1: SWAP3 000006e2: SWAP1 000006e3: SWAP2 000006e4: SWAP1 000006e5: DUP2 000006e6: LT 000006e7: PUSH2 0x06f2 000006ea: JUMPI 000006eb: PUSH2 0x06f2 000006ee: PUSH2 0x19ba 000006f1: JUMP 000006f2: JUMPDEST 000006f3: SWAP1 000006f4: PUSH1 0x00 000006f6: MSTORE 000006f7: PUSH1 0x20 000006f9: PUSH1 0x00 000006fb: KECCAK256 000006fc: ADD 000006fd: PUSH1 0x00 000006ff: PUSH2 0x0100 00000702: EXP 00000703: DUP2 00000704: SLOAD 00000705: DUP2 00000706: PUSH1 0x01 00000708: PUSH1 0x01 0000070a: PUSH1 0xa0 0000070c: SHL 0000070d: SUB 0000070e: MUL 0000070f: NOT 00000710: AND 00000711: SWAP1 00000712: DUP4 00000713: PUSH1 0x01 00000715: PUSH1 0x01 00000717: PUSH1 0xa0 00000719: SHL 0000071a: SUB 0000071b: AND 0000071c: MUL 0000071d: OR 0000071e: SWAP1 0000071f: SSTORE 00000720: POP 00000721: DUP2 00000722: PUSH1 0x00 00000724: ADD 00000725: SLOAD 00000726: PUSH1 0x01 00000728: PUSH1 0x00 0000072a: PUSH1 0x03 0000072c: DUP6 0000072d: PUSH1 0x00 0000072f: ADD 00000730: SLOAD 00000731: DUP2 00000732: SLOAD 00000733: DUP2 00000734: LT 00000735: PUSH2 0x0740 00000738: JUMPI 00000739: PUSH2 0x0740 0000073c: PUSH2 0x19ba 0000073f: JUMP 00000740: JUMPDEST 00000741: PUSH1 0x00 00000743: SWAP2 00000744: DUP3 00000745: MSTORE 00000746: PUSH1 0x20 00000748: DUP1 00000749: DUP4 0000074a: KECCAK256 0000074b: SWAP1 0000074c: SWAP2 0000074d: ADD 0000074e: SLOAD 0000074f: PUSH1 0x01 00000751: PUSH1 0x01 00000753: PUSH1 0xa0 00000755: SHL 00000756: SUB 00000757: AND 00000758: DUP4 00000759: MSTORE 0000075a: DUP3 0000075b: ADD 0000075c: SWAP3 0000075d: SWAP1 0000075e: SWAP3 0000075f: MSTORE 00000760: PUSH1 0x40 00000762: ADD 00000763: SWAP1 00000764: KECCAK256 00000765: SSTORE 00000766: PUSH1 0x03 00000768: DUP1 00000769: SLOAD 0000076a: DUP1 0000076b: PUSH2 0x0776 0000076e: JUMPI 0000076f: PUSH2 0x0776 00000772: PUSH2 0x19d0 00000775: JUMP 00000776: JUMPDEST 00000777: PUSH1 0x00 00000779: DUP3 0000077a: DUP2 0000077b: MSTORE 0000077c: PUSH1 0x20 0000077e: DUP1 0000077f: DUP3 00000780: KECCAK256 00000781: DUP4 00000782: ADD 00000783: PUSH1 0x00 00000785: NOT 00000786: SWAP1 00000787: DUP2 00000788: ADD 00000789: DUP1 0000078a: SLOAD 0000078b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007a0: NOT 000007a1: AND 000007a2: SWAP1 000007a3: SSTORE 000007a4: SWAP1 000007a5: SWAP3 000007a6: ADD 000007a7: SWAP1 000007a8: SWAP3 000007a9: SSTORE 000007aa: PUSH1 0x01 000007ac: PUSH1 0x01 000007ae: PUSH1 0xa0 000007b0: SHL 000007b1: SUB 000007b2: DUP7 000007b3: AND 000007b4: DUP3 000007b5: MSTORE 000007b6: PUSH1 0x01 000007b8: SWAP1 000007b9: DUP2 000007ba: SWAP1 000007bb: MSTORE 000007bc: PUSH1 0x40 000007be: DUP3 000007bf: KECCAK256 000007c0: SWAP2 000007c1: DUP3 000007c2: SSTORE 000007c3: ADD 000007c4: DUP1 000007c5: SLOAD 000007c6: PUSH1 0xff 000007c8: NOT 000007c9: AND 000007ca: SWAP1 000007cb: SSTORE 000007cc: JUMPDEST 000007cd: POP 000007ce: POP 000007cf: JUMPDEST 000007d0: POP 000007d1: POP 000007d2: JUMP 000007d3: JUMPDEST 000007d4: PUSH1 0x08 000007d6: SLOAD 000007d7: PUSH1 0x01 000007d9: PUSH1 0x01 000007db: PUSH1 0xa0 000007dd: SHL 000007de: SUB 000007df: AND 000007e0: CALLER 000007e1: EQ 000007e2: PUSH2 0x089d 000007e5: JUMPI 000007e6: PUSH1 0x08 000007e8: SLOAD 000007e9: PUSH1 0x40 000007eb: DUP1 000007ec: MLOAD 000007ed: PUSH4 0x8da5cb5b 000007f2: PUSH1 0xe0 000007f4: SHL 000007f5: DUP2 000007f6: MSTORE 000007f7: SWAP1 000007f8: MLOAD 000007f9: PUSH1 0x00 000007fb: SWAP3 000007fc: PUSH1 0x01 000007fe: PUSH1 0x01 00000800: PUSH1 0xa0 00000802: SHL 00000803: SUB 00000804: AND 00000805: SWAP2 00000806: PUSH4 0x8da5cb5b 0000080b: SWAP2 0000080c: PUSH1 0x04 0000080e: DUP1 0000080f: DUP4 00000810: ADD 00000811: SWAP3 00000812: PUSH1 0x20 00000814: SWAP3 00000815: SWAP2 00000816: SWAP1 00000817: DUP3 00000818: SWAP1 00000819: SUB 0000081a: ADD 0000081b: DUP2 0000081c: DUP7 0000081d: GAS 0000081e: STATICCALL 0000081f: ISZERO 00000820: DUP1 00000821: ISZERO 00000822: PUSH2 0x082f 00000825: JUMPI 00000826: RETURNDATASIZE 00000827: PUSH1 0x00 00000829: DUP1 0000082a: RETURNDATACOPY 0000082b: RETURNDATASIZE 0000082c: PUSH1 0x00 0000082e: REVERT 0000082f: JUMPDEST 00000830: POP 00000831: POP 00000832: POP 00000833: POP 00000834: PUSH1 0x40 00000836: MLOAD 00000837: RETURNDATASIZE 00000838: PUSH1 0x1f 0000083a: NOT 0000083b: PUSH1 0x1f 0000083d: DUP3 0000083e: ADD 0000083f: AND 00000840: DUP3 00000841: ADD 00000842: DUP1 00000843: PUSH1 0x40 00000845: MSTORE 00000846: POP 00000847: DUP2 00000848: ADD 00000849: SWAP1 0000084a: PUSH2 0x0853 0000084d: SWAP2 0000084e: SWAP1 0000084f: PUSH2 0x197c 00000852: JUMP 00000853: JUMPDEST 00000854: SWAP1 00000855: POP 00000856: CALLER 00000857: PUSH1 0x01 00000859: PUSH1 0x01 0000085b: PUSH1 0xa0 0000085d: SHL 0000085e: SUB 0000085f: DUP3 00000860: AND 00000861: EQ 00000862: PUSH2 0x089b 00000865: JUMPI 00000866: PUSH1 0x08 00000868: SLOAD 00000869: PUSH1 0x40 0000086b: MLOAD 0000086c: PUSH4 0x07396007 00000871: PUSH1 0xe0 00000873: SHL 00000874: DUP2 00000875: MSTORE 00000876: CALLER 00000877: PUSH1 0x04 00000879: DUP3 0000087a: ADD 0000087b: MSTORE 0000087c: PUSH1 0x01 0000087e: PUSH1 0x01 00000880: PUSH1 0xa0 00000882: SHL 00000883: SUB 00000884: SWAP2 00000885: DUP3 00000886: AND 00000887: PUSH1 0x24 00000889: DUP3 0000088a: ADD 0000088b: MSTORE 0000088c: SWAP1 0000088d: DUP3 0000088e: AND 0000088f: PUSH1 0x44 00000891: DUP3 00000892: ADD 00000893: MSTORE 00000894: PUSH1 0x64 00000896: ADD 00000897: PUSH2 0x0591 0000089a: JUMP 0000089b: JUMPDEST 0000089c: POP 0000089d: JUMPDEST 0000089e: PUSH1 0x09 000008a0: DUP1 000008a1: SLOAD 000008a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008b7: NOT 000008b8: AND 000008b9: PUSH1 0x01 000008bb: PUSH1 0x01 000008bd: PUSH1 0xa0 000008bf: SHL 000008c0: SUB 000008c1: DUP4 000008c2: AND 000008c3: SWAP1 000008c4: DUP2 000008c5: OR 000008c6: SWAP1 000008c7: SWAP2 000008c8: SSTORE 000008c9: PUSH1 0x40 000008cb: MLOAD 000008cc: SWAP1 000008cd: DUP2 000008ce: MSTORE 000008cf: PUSH32 0x8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a 000008f0: SWAP1 000008f1: PUSH1 0x20 000008f3: ADD 000008f4: JUMPDEST 000008f5: PUSH1 0x40 000008f7: MLOAD 000008f8: DUP1 000008f9: SWAP2 000008fa: SUB 000008fb: SWAP1 000008fc: LOG1 000008fd: POP 000008fe: JUMP 000008ff: JUMPDEST 00000900: PUSH1 0x09 00000902: SLOAD 00000903: PUSH1 0x00 00000905: SWAP1 00000906: PUSH1 0x01 00000908: PUSH1 0x01 0000090a: PUSH1 0xa0 0000090c: SHL 0000090d: SUB 0000090e: AND 0000090f: CALLER 00000910: EQ 00000911: PUSH2 0x0948 00000914: JUMPI 00000915: PUSH1 0x40 00000917: MLOAD 00000918: PUSH32 0x88f84f0400000000000000000000000000000000000000000000000000000000 00000939: DUP2 0000093a: MSTORE 0000093b: CALLER 0000093c: PUSH1 0x04 0000093e: DUP3 0000093f: ADD 00000940: MSTORE 00000941: PUSH1 0x24 00000943: ADD 00000944: PUSH2 0x0591 00000947: JUMP 00000948: JUMPDEST 00000949: PUSH2 0x0957 0000094c: PUSH1 0x0d 0000094e: DUP5 0000094f: NUMBER 00000950: TIMESTAMP 00000951: BASEFEE 00000952: DUP8 00000953: PUSH2 0x14b5 00000956: JUMP 00000957: JUMPDEST 00000958: SWAP1 00000959: POP 0000095a: JUMPDEST 0000095b: SWAP3 0000095c: SWAP2 0000095d: POP 0000095e: POP 0000095f: JUMP 00000960: JUMPDEST 00000961: PUSH1 0x09 00000963: SLOAD 00000964: PUSH1 0x00 00000966: SWAP1 00000967: DUP2 00000968: SWAP1 00000969: DUP2 0000096a: SWAP1 0000096b: DUP2 0000096c: SWAP1 0000096d: PUSH1 0x01 0000096f: PUSH1 0x01 00000971: PUSH1 0xa0 00000973: SHL 00000974: SUB 00000975: AND 00000976: CALLER 00000977: EQ 00000978: PUSH2 0x09af 0000097b: JUMPI 0000097c: PUSH1 0x40 0000097e: MLOAD 0000097f: PUSH32 0x88f84f0400000000000000000000000000000000000000000000000000000000 000009a0: DUP2 000009a1: MSTORE 000009a2: CALLER 000009a3: PUSH1 0x04 000009a5: DUP3 000009a6: ADD 000009a7: MSTORE 000009a8: PUSH1 0x24 000009aa: ADD 000009ab: PUSH2 0x0591 000009ae: JUMP 000009af: JUMPDEST 000009b0: DUP6 000009b1: PUSH1 0x0a 000009b3: SLOAD 000009b4: EQ 000009b5: ISZERO 000009b6: DUP1 000009b7: ISZERO 000009b8: PUSH2 0x09c0 000009bb: JUMPI 000009bc: POP 000009bd: DUP6 000009be: ISZERO 000009bf: ISZERO 000009c0: JUMPDEST 000009c1: DUP1 000009c2: ISZERO 000009c3: PUSH2 0x09cd 000009c6: JUMPI 000009c7: POP 000009c8: PUSH1 0x0a 000009ca: SLOAD 000009cb: ISZERO 000009cc: ISZERO 000009cd: JUMPDEST 000009ce: ISZERO 000009cf: PUSH2 0x0a12 000009d2: JUMPI 000009d3: PUSH1 0x0a 000009d5: SLOAD 000009d6: PUSH1 0x40 000009d8: MLOAD 000009d9: PUSH32 0xe2051feb00000000000000000000000000000000000000000000000000000000 000009fa: DUP2 000009fb: MSTORE 000009fc: PUSH1 0x04 000009fe: DUP2 000009ff: ADD 00000a00: SWAP2 00000a01: SWAP1 00000a02: SWAP2 00000a03: MSTORE 00000a04: PUSH1 0x24 00000a06: DUP2 00000a07: ADD 00000a08: DUP8 00000a09: SWAP1 00000a0a: MSTORE 00000a0b: PUSH1 0x44 00000a0d: ADD 00000a0e: PUSH2 0x0591 00000a11: JUMP 00000a12: JUMPDEST 00000a13: PUSH1 0x0a 00000a15: DUP6 00000a16: SWAP1 00000a17: SSTORE 00000a18: PUSH1 0x07 00000a1a: SLOAD 00000a1b: SWAP4 00000a1c: POP 00000a1d: DUP4 00000a1e: ISZERO 00000a1f: PUSH2 0x0a4d 00000a22: JUMPI 00000a23: PUSH1 0x07 00000a25: PUSH2 0x0a2f 00000a28: PUSH1 0x01 00000a2a: DUP7 00000a2b: PUSH2 0x1999 00000a2e: JUMP 00000a2f: JUMPDEST 00000a30: DUP2 00000a31: SLOAD 00000a32: DUP2 00000a33: LT 00000a34: PUSH2 0x0a3f 00000a37: JUMPI 00000a38: PUSH2 0x0a3f 00000a3b: PUSH2 0x19ba 00000a3e: JUMP 00000a3f: JUMPDEST 00000a40: SWAP1 00000a41: PUSH1 0x00 00000a43: MSTORE 00000a44: PUSH1 0x20 00000a46: PUSH1 0x00 00000a48: KECCAK256 00000a49: ADD 00000a4a: SLOAD 00000a4b: SWAP3 00000a4c: POP 00000a4d: JUMPDEST 00000a4e: DUP7 00000a4f: ISZERO 00000a50: PUSH2 0x0a7e 00000a53: JUMPI 00000a54: PUSH1 0x06 00000a56: PUSH2 0x0a60 00000a59: PUSH1 0x01 00000a5b: DUP10 00000a5c: PUSH2 0x1999 00000a5f: JUMP 00000a60: JUMPDEST 00000a61: DUP2 00000a62: SLOAD 00000a63: DUP2 00000a64: LT 00000a65: PUSH2 0x0a70 00000a68: JUMPI 00000a69: PUSH2 0x0a70 00000a6c: PUSH2 0x19ba 00000a6f: JUMP 00000a70: JUMPDEST 00000a71: SWAP1 00000a72: PUSH1 0x00 00000a74: MSTORE 00000a75: PUSH1 0x20 00000a77: PUSH1 0x00 00000a79: KECCAK256 00000a7a: ADD 00000a7b: SLOAD 00000a7c: SWAP2 00000a7d: POP 00000a7e: JUMPDEST 00000a7f: PUSH1 0x40 00000a81: DUP1 00000a82: MLOAD 00000a83: PUSH1 0x20 00000a85: DUP2 00000a86: ADD 00000a87: DUP6 00000a88: SWAP1 00000a89: MSTORE 00000a8a: SWAP1 00000a8b: DUP2 00000a8c: ADD 00000a8d: DUP10 00000a8e: SWAP1 00000a8f: MSTORE 00000a90: PUSH1 0x60 00000a92: DUP2 00000a93: ADD 00000a94: DUP4 00000a95: SWAP1 00000a96: MSTORE 00000a97: PUSH1 0x80 00000a99: ADD 00000a9a: PUSH1 0x40 00000a9c: DUP1 00000a9d: MLOAD 00000a9e: PUSH1 0x1f 00000aa0: NOT 00000aa1: DUP2 00000aa2: DUP5 00000aa3: SUB 00000aa4: ADD 00000aa5: DUP2 00000aa6: MSTORE 00000aa7: SWAP2 00000aa8: SWAP1 00000aa9: MSTORE 00000aaa: DUP1 00000aab: MLOAD 00000aac: PUSH1 0x20 00000aae: SWAP1 00000aaf: SWAP2 00000ab0: ADD 00000ab1: KECCAK256 00000ab2: PUSH1 0x07 00000ab4: DUP1 00000ab5: SLOAD 00000ab6: PUSH1 0x01 00000ab8: DUP2 00000ab9: ADD 00000aba: DUP3 00000abb: SSTORE 00000abc: PUSH1 0x00 00000abe: SWAP2 00000abf: SWAP1 00000ac0: SWAP2 00000ac1: MSTORE 00000ac2: PUSH32 0xa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688 00000ae3: ADD 00000ae4: DUP2 00000ae5: SWAP1 00000ae6: SSTORE 00000ae7: SWAP4 00000ae8: SWAP9 00000ae9: SWAP3 00000aea: SWAP8 00000aeb: POP 00000aec: SWAP1 00000aed: SWAP6 00000aee: POP 00000aef: SWAP2 00000af0: SWAP4 00000af1: POP 00000af2: SWAP2 00000af3: POP 00000af4: POP 00000af5: JUMP 00000af6: JUMPDEST 00000af7: PUSH1 0x00 00000af9: PUSH2 0x0b04 00000afc: DUP5 00000afd: DUP5 00000afe: DUP5 00000aff: CALLVALUE 00000b00: PUSH2 0x1687 00000b03: JUMP 00000b04: JUMPDEST 00000b05: SWAP5 00000b06: SWAP4 00000b07: POP 00000b08: POP 00000b09: POP 00000b0a: POP 00000b0b: JUMP 00000b0c: JUMPDEST 00000b0d: PUSH1 0x08 00000b0f: SLOAD 00000b10: PUSH1 0x01 00000b12: PUSH1 0x01 00000b14: PUSH1 0xa0 00000b16: SHL 00000b17: SUB 00000b18: AND 00000b19: CALLER 00000b1a: EQ 00000b1b: PUSH2 0x0bd6 00000b1e: JUMPI 00000b1f: PUSH1 0x08 00000b21: SLOAD 00000b22: PUSH1 0x40 00000b24: DUP1 00000b25: MLOAD 00000b26: PUSH4 0x8da5cb5b 00000b2b: PUSH1 0xe0 00000b2d: SHL 00000b2e: DUP2 00000b2f: MSTORE 00000b30: SWAP1 00000b31: MLOAD 00000b32: PUSH1 0x00 00000b34: SWAP3 00000b35: PUSH1 0x01 00000b37: PUSH1 0x01 00000b39: PUSH1 0xa0 00000b3b: SHL 00000b3c: SUB 00000b3d: AND 00000b3e: SWAP2 00000b3f: PUSH4 0x8da5cb5b 00000b44: SWAP2 00000b45: PUSH1 0x04 00000b47: DUP1 00000b48: DUP4 00000b49: ADD 00000b4a: SWAP3 00000b4b: PUSH1 0x20 00000b4d: SWAP3 00000b4e: SWAP2 00000b4f: SWAP1 00000b50: DUP3 00000b51: SWAP1 00000b52: SUB 00000b53: ADD 00000b54: DUP2 00000b55: DUP7 00000b56: GAS 00000b57: STATICCALL 00000b58: ISZERO 00000b59: DUP1 00000b5a: ISZERO 00000b5b: PUSH2 0x0b68 00000b5e: JUMPI 00000b5f: RETURNDATASIZE 00000b60: PUSH1 0x00 00000b62: DUP1 00000b63: RETURNDATACOPY 00000b64: RETURNDATASIZE 00000b65: PUSH1 0x00 00000b67: REVERT 00000b68: JUMPDEST 00000b69: POP 00000b6a: POP 00000b6b: POP 00000b6c: POP 00000b6d: PUSH1 0x40 00000b6f: MLOAD 00000b70: RETURNDATASIZE 00000b71: PUSH1 0x1f 00000b73: NOT 00000b74: PUSH1 0x1f 00000b76: DUP3 00000b77: ADD 00000b78: AND 00000b79: DUP3 00000b7a: ADD 00000b7b: DUP1 00000b7c: PUSH1 0x40 00000b7e: MSTORE 00000b7f: POP 00000b80: DUP2 00000b81: ADD 00000b82: SWAP1 00000b83: PUSH2 0x0b8c 00000b86: SWAP2 00000b87: SWAP1 00000b88: PUSH2 0x197c 00000b8b: JUMP 00000b8c: JUMPDEST 00000b8d: SWAP1 00000b8e: POP 00000b8f: CALLER 00000b90: PUSH1 0x01 00000b92: PUSH1 0x01 00000b94: PUSH1 0xa0 00000b96: SHL 00000b97: SUB 00000b98: DUP3 00000b99: AND 00000b9a: EQ 00000b9b: PUSH2 0x0bd4 00000b9e: JUMPI 00000b9f: PUSH1 0x08 00000ba1: SLOAD 00000ba2: PUSH1 0x40 00000ba4: MLOAD 00000ba5: PUSH4 0x07396007 00000baa: PUSH1 0xe0 00000bac: SHL 00000bad: DUP2 00000bae: MSTORE 00000baf: CALLER 00000bb0: PUSH1 0x04 00000bb2: DUP3 00000bb3: ADD 00000bb4: MSTORE 00000bb5: PUSH1 0x01 00000bb7: PUSH1 0x01 00000bb9: PUSH1 0xa0 00000bbb: SHL 00000bbc: SUB 00000bbd: SWAP2 00000bbe: DUP3 00000bbf: AND 00000bc0: PUSH1 0x24 00000bc2: DUP3 00000bc3: ADD 00000bc4: MSTORE 00000bc5: SWAP1 00000bc6: DUP3 00000bc7: AND 00000bc8: PUSH1 0x44 00000bca: DUP3 00000bcb: ADD 00000bcc: MSTORE 00000bcd: PUSH1 0x64 00000bcf: ADD 00000bd0: PUSH2 0x0591 00000bd3: JUMP 00000bd4: JUMPDEST 00000bd5: POP 00000bd6: JUMPDEST 00000bd7: PUSH1 0x08 00000bd9: DUP1 00000bda: SLOAD 00000bdb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bf0: NOT 00000bf1: AND 00000bf2: PUSH1 0x01 00000bf4: PUSH1 0x01 00000bf6: PUSH1 0xa0 00000bf8: SHL 00000bf9: SUB 00000bfa: DUP4 00000bfb: AND 00000bfc: SWAP1 00000bfd: DUP2 00000bfe: OR 00000bff: SWAP1 00000c00: SWAP2 00000c01: SSTORE 00000c02: PUSH1 0x40 00000c04: MLOAD 00000c05: SWAP1 00000c06: DUP2 00000c07: MSTORE 00000c08: PUSH32 0xae1f5aa15f6ff844896347ceca2a3c24c8d3a27785efdeacd581a0a95172784a 00000c29: SWAP1 00000c2a: PUSH1 0x20 00000c2c: ADD 00000c2d: PUSH2 0x08f4 00000c30: JUMP 00000c31: JUMPDEST 00000c32: PUSH1 0x04 00000c34: DUP2 00000c35: DUP2 00000c36: SLOAD 00000c37: DUP2 00000c38: LT 00000c39: PUSH2 0x0c41 00000c3c: JUMPI 00000c3d: PUSH1 0x00 00000c3f: DUP1 00000c40: REVERT 00000c41: JUMPDEST 00000c42: PUSH1 0x00 00000c44: SWAP2 00000c45: DUP3 00000c46: MSTORE 00000c47: PUSH1 0x20 00000c49: SWAP1 00000c4a: SWAP2 00000c4b: KECCAK256 00000c4c: ADD 00000c4d: SLOAD 00000c4e: PUSH1 0x01 00000c50: PUSH1 0x01 00000c52: PUSH1 0xa0 00000c54: SHL 00000c55: SUB 00000c56: AND 00000c57: SWAP1 00000c58: POP 00000c59: DUP2 00000c5a: JUMP 00000c5b: JUMPDEST 00000c5c: CALLER 00000c5d: PUSH1 0x00 00000c5f: SWAP1 00000c60: DUP2 00000c61: MSTORE 00000c62: PUSH1 0x02 00000c64: PUSH1 0x20 00000c66: MSTORE 00000c67: PUSH1 0x40 00000c69: DUP2 00000c6a: KECCAK256 00000c6b: PUSH1 0x01 00000c6d: ADD 00000c6e: SLOAD 00000c6f: PUSH1 0x60 00000c71: SWAP1 00000c72: PUSH1 0xff 00000c74: AND 00000c75: PUSH2 0x0cac 00000c78: JUMPI 00000c79: PUSH1 0x40 00000c7b: MLOAD 00000c7c: PUSH32 0x32ea82ab00000000000000000000000000000000000000000000000000000000 00000c9d: DUP2 00000c9e: MSTORE 00000c9f: CALLER 00000ca0: PUSH1 0x04 00000ca2: DUP3 00000ca3: ADD 00000ca4: MSTORE 00000ca5: PUSH1 0x24 00000ca7: ADD 00000ca8: PUSH2 0x0591 00000cab: JUMP 00000cac: JUMPDEST 00000cad: DUP3 00000cae: ISZERO 00000caf: DUP1 00000cb0: ISZERO 00000cb1: SWAP1 00000cb2: PUSH2 0x0cc3 00000cb5: JUMPI 00000cb6: POP 00000cb7: PUSH1 0x01 00000cb9: PUSH1 0x01 00000cbb: PUSH1 0xa0 00000cbd: SHL 00000cbe: SUB 00000cbf: DUP7 00000cc0: AND 00000cc1: EXTCODESIZE 00000cc2: ISZERO 00000cc3: JUMPDEST 00000cc4: ISZERO 00000cc5: PUSH2 0x0d05 00000cc8: JUMPI 00000cc9: PUSH1 0x40 00000ccb: MLOAD 00000ccc: PUSH32 0xb5cf5b8f00000000000000000000000000000000000000000000000000000000 00000ced: DUP2 00000cee: MSTORE 00000cef: PUSH1 0x01 00000cf1: PUSH1 0x01 00000cf3: PUSH1 0xa0 00000cf5: SHL 00000cf6: SUB 00000cf7: DUP8 00000cf8: AND 00000cf9: PUSH1 0x04 00000cfb: DUP3 00000cfc: ADD 00000cfd: MSTORE 00000cfe: PUSH1 0x24 00000d00: ADD 00000d01: PUSH2 0x0591 00000d04: JUMP 00000d05: JUMPDEST 00000d06: PUSH1 0x05 00000d08: DUP1 00000d09: SLOAD 00000d0a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d1f: NOT 00000d20: DUP2 00000d21: AND 00000d22: CALLER 00000d23: OR 00000d24: SWAP1 00000d25: SWAP2 00000d26: SSTORE 00000d27: PUSH1 0x40 00000d29: DUP1 00000d2a: MLOAD 00000d2b: PUSH1 0x20 00000d2d: PUSH1 0x1f 00000d2f: DUP8 00000d30: ADD 00000d31: DUP2 00000d32: SWAP1 00000d33: DIV 00000d34: DUP2 00000d35: MUL 00000d36: DUP3 00000d37: ADD 00000d38: DUP2 00000d39: ADD 00000d3a: SWAP1 00000d3b: SWAP3 00000d3c: MSTORE 00000d3d: DUP6 00000d3e: DUP2 00000d3f: MSTORE 00000d40: PUSH1 0x01 00000d42: PUSH1 0x01 00000d44: PUSH1 0xa0 00000d46: SHL 00000d47: SUB 00000d48: SWAP1 00000d49: SWAP3 00000d4a: AND 00000d4b: SWAP2 00000d4c: PUSH2 0x0d73 00000d4f: SWAP2 00000d50: DUP10 00000d51: SWAP2 00000d52: DUP10 00000d53: SWAP2 00000d54: DUP10 00000d55: SWAP1 00000d56: DUP10 00000d57: SWAP1 00000d58: DUP2 00000d59: SWAP1 00000d5a: DUP5 00000d5b: ADD 00000d5c: DUP4 00000d5d: DUP3 00000d5e: DUP1 00000d5f: DUP3 00000d60: DUP5 00000d61: CALLDATACOPY 00000d62: PUSH1 0x00 00000d64: SWAP3 00000d65: ADD 00000d66: SWAP2 00000d67: SWAP1 00000d68: SWAP2 00000d69: MSTORE 00000d6a: POP 00000d6b: PUSH2 0x16ef 00000d6e: SWAP3 00000d6f: POP 00000d70: POP 00000d71: POP 00000d72: JUMP 00000d73: JUMPDEST 00000d74: PUSH1 0x05 00000d76: DUP1 00000d77: SLOAD 00000d78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d8d: NOT 00000d8e: AND 00000d8f: PUSH1 0x01 00000d91: PUSH1 0x01 00000d93: PUSH1 0xa0 00000d95: SHL 00000d96: SUB 00000d97: DUP6 00000d98: DUP2 00000d99: AND 00000d9a: SWAP2 00000d9b: SWAP1 00000d9c: SWAP2 00000d9d: OR 00000d9e: SWAP1 00000d9f: SWAP2 00000da0: SSTORE 00000da1: PUSH1 0x40 00000da3: MLOAD 00000da4: SWAP3 00000da5: SWAP6 00000da6: POP 00000da7: SWAP1 00000da8: SWAP4 00000da9: POP 00000daa: DUP9 00000dab: AND 00000dac: SWAP1 00000dad: CALLER 00000dae: SWAP1 00000daf: PUSH32 0x2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d466 00000dd0: SWAP1 00000dd1: PUSH2 0x0ddf 00000dd4: SWAP1 00000dd5: DUP11 00000dd6: SWAP1 00000dd7: DUP11 00000dd8: SWAP1 00000dd9: DUP11 00000dda: SWAP1 00000ddb: PUSH2 0x19e6 00000dde: JUMP 00000ddf: JUMPDEST 00000de0: PUSH1 0x40 00000de2: MLOAD 00000de3: DUP1 00000de4: SWAP2 00000de5: SUB 00000de6: SWAP1 00000de7: LOG3 00000de8: POP 00000de9: SWAP5 00000dea: POP 00000deb: SWAP5 00000dec: SWAP3 00000ded: POP 00000dee: POP 00000def: POP 00000df0: JUMP 00000df1: JUMPDEST 00000df2: PUSH1 0x05 00000df4: SLOAD 00000df5: PUSH1 0x00 00000df7: SWAP1 00000df8: PUSH1 0x01 00000dfa: PUSH1 0x01 00000dfc: PUSH1 0xa0 00000dfe: SHL 00000dff: SUB 00000e00: AND 00000e01: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000001 00000e22: DUP2 00000e23: ADD 00000e24: PUSH2 0x0e2f 00000e27: JUMPI 00000e28: PUSH1 0x00 00000e2a: SWAP2 00000e2b: POP 00000e2c: POP 00000e2d: SWAP1 00000e2e: JUMP 00000e2f: JUMPDEST 00000e30: SWAP2 00000e31: SWAP1 00000e32: POP 00000e33: JUMP 00000e34: JUMPDEST 00000e35: PUSH1 0x00 00000e37: SLOAD 00000e38: PUSH2 0x0100 00000e3b: SWAP1 00000e3c: DIV 00000e3d: PUSH1 0xff 00000e3f: AND 00000e40: ISZERO 00000e41: DUP1 00000e42: DUP1 00000e43: ISZERO 00000e44: PUSH2 0x0e54 00000e47: JUMPI 00000e48: POP 00000e49: PUSH1 0x00 00000e4b: SLOAD 00000e4c: PUSH1 0x01 00000e4e: PUSH1 0xff 00000e50: SWAP1 00000e51: SWAP2 00000e52: AND 00000e53: LT 00000e54: JUMPDEST 00000e55: DUP1 00000e56: PUSH2 0x0e6e 00000e59: JUMPI 00000e5a: POP 00000e5b: ADDRESS 00000e5c: EXTCODESIZE 00000e5d: ISZERO 00000e5e: DUP1 00000e5f: ISZERO 00000e60: PUSH2 0x0e6e 00000e63: JUMPI 00000e64: POP 00000e65: PUSH1 0x00 00000e67: SLOAD 00000e68: PUSH1 0xff 00000e6a: AND 00000e6b: PUSH1 0x01 00000e6d: EQ 00000e6e: JUMPDEST 00000e6f: PUSH2 0x0efa 00000e72: JUMPI 00000e73: PUSH1 0x40 00000e75: MLOAD 00000e76: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e97: DUP2 00000e98: MSTORE 00000e99: PUSH1 0x20 00000e9b: PUSH1 0x04 00000e9d: DUP3 00000e9e: ADD 00000e9f: MSTORE 00000ea0: PUSH1 0x2e 00000ea2: PUSH1 0x24 00000ea4: DUP3 00000ea5: ADD 00000ea6: MSTORE 00000ea7: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00000ec8: PUSH1 0x44 00000eca: DUP3 00000ecb: ADD 00000ecc: MSTORE 00000ecd: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000 00000eee: PUSH1 0x64 00000ef0: DUP3 00000ef1: ADD 00000ef2: MSTORE 00000ef3: PUSH1 0x84 00000ef5: ADD 00000ef6: PUSH2 0x0591 00000ef9: JUMP 00000efa: JUMPDEST 00000efb: PUSH1 0x00 00000efd: DUP1 00000efe: SLOAD 00000eff: PUSH1 0xff 00000f01: NOT 00000f02: AND 00000f03: PUSH1 0x01 00000f05: OR 00000f06: SWAP1 00000f07: SSTORE 00000f08: DUP1 00000f09: ISZERO 00000f0a: PUSH2 0x0f1d 00000f0d: JUMPI 00000f0e: PUSH1 0x00 00000f10: DUP1 00000f11: SLOAD 00000f12: PUSH2 0xff00 00000f15: NOT 00000f16: AND 00000f17: PUSH2 0x0100 00000f1a: OR 00000f1b: SWAP1 00000f1c: SSTORE 00000f1d: JUMPDEST 00000f1e: PUSH1 0x01 00000f20: PUSH1 0x01 00000f22: PUSH1 0xa0 00000f24: SHL 00000f25: SUB 00000f26: PUSH32 0x000000000000000000000000677ecf96dbfee1defbde8d2e905a39f73aa27b89 00000f47: AND 00000f48: ADDRESS 00000f49: SUB 00000f4a: PUSH2 0x0fd5 00000f4d: JUMPI 00000f4e: PUSH1 0x40 00000f50: MLOAD 00000f51: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f72: DUP2 00000f73: MSTORE 00000f74: PUSH1 0x20 00000f76: PUSH1 0x04 00000f78: DUP3 00000f79: ADD 00000f7a: MSTORE 00000f7b: PUSH1 0x2c 00000f7d: PUSH1 0x24 00000f7f: DUP3 00000f80: ADD 00000f81: MSTORE 00000f82: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00000fa3: PUSH1 0x44 00000fa5: DUP3 00000fa6: ADD 00000fa7: MSTORE 00000fa8: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000 00000fc9: PUSH1 0x64 00000fcb: DUP3 00000fcc: ADD 00000fcd: MSTORE 00000fce: PUSH1 0x84 00000fd0: ADD 00000fd1: PUSH2 0x0591 00000fd4: JUMP 00000fd5: JUMPDEST 00000fd6: PUSH1 0x05 00000fd8: DUP1 00000fd9: SLOAD 00000fda: PUSH1 0x01 00000fdc: PUSH1 0x01 00000fde: PUSH1 0xa0 00000fe0: SHL 00000fe1: SUB 00000fe2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ff7: NOT 00000ff8: SWAP2 00000ff9: DUP3 00000ffa: AND 00000ffb: DUP2 00000ffc: OR 00000ffd: SWAP1 00000ffe: SWAP3 00000fff: SSTORE 00001000: PUSH1 0x08 00001002: DUP1 00001003: SLOAD 00001004: SWAP1 00001005: SWAP2 00001006: AND 00001007: SWAP2 00001008: DUP5 00001009: AND 0000100a: SWAP2 0000100b: SWAP1 0000100c: SWAP2 0000100d: OR 0000100e: SWAP1 0000100f: SSTORE 00001010: DUP1 00001011: ISZERO 00001012: PUSH2 0x07cf 00001015: JUMPI 00001016: PUSH1 0x00 00001018: DUP1 00001019: SLOAD 0000101a: PUSH2 0xff00 0000101d: NOT 0000101e: AND 0000101f: SWAP1 00001020: SSTORE 00001021: PUSH1 0x40 00001023: MLOAD 00001024: PUSH1 0x01 00001026: DUP2 00001027: MSTORE 00001028: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 00001049: SWAP1 0000104a: PUSH1 0x20 0000104c: ADD 0000104d: PUSH1 0x40 0000104f: MLOAD 00001050: DUP1 00001051: SWAP2 00001052: SUB 00001053: SWAP1 00001054: LOG1 00001055: POP 00001056: POP 00001057: JUMP 00001058: JUMPDEST 00001059: PUSH1 0x08 0000105b: SLOAD 0000105c: PUSH1 0x01 0000105e: PUSH1 0x01 00001060: PUSH1 0xa0 00001062: SHL 00001063: SUB 00001064: AND 00001065: CALLER 00001066: EQ 00001067: PUSH2 0x1122 0000106a: JUMPI 0000106b: PUSH1 0x08 0000106d: SLOAD 0000106e: PUSH1 0x40 00001070: DUP1 00001071: MLOAD 00001072: PUSH4 0x8da5cb5b 00001077: PUSH1 0xe0 00001079: SHL 0000107a: DUP2 0000107b: MSTORE 0000107c: SWAP1 0000107d: MLOAD 0000107e: PUSH1 0x00 00001080: SWAP3 00001081: PUSH1 0x01 00001083: PUSH1 0x01 00001085: PUSH1 0xa0 00001087: SHL 00001088: SUB 00001089: AND 0000108a: SWAP2 0000108b: PUSH4 0x8da5cb5b 00001090: SWAP2 00001091: PUSH1 0x04 00001093: DUP1 00001094: DUP4 00001095: ADD 00001096: SWAP3 00001097: PUSH1 0x20 00001099: SWAP3 0000109a: SWAP2 0000109b: SWAP1 0000109c: DUP3 0000109d: SWAP1 0000109e: SUB 0000109f: ADD 000010a0: DUP2 000010a1: DUP7 000010a2: GAS 000010a3: STATICCALL 000010a4: ISZERO 000010a5: DUP1 000010a6: ISZERO 000010a7: PUSH2 0x10b4 000010aa: JUMPI 000010ab: RETURNDATASIZE 000010ac: PUSH1 0x00 000010ae: DUP1 000010af: RETURNDATACOPY 000010b0: RETURNDATASIZE 000010b1: PUSH1 0x00 000010b3: REVERT 000010b4: JUMPDEST 000010b5: POP 000010b6: POP 000010b7: POP 000010b8: POP 000010b9: PUSH1 0x40 000010bb: MLOAD 000010bc: RETURNDATASIZE 000010bd: PUSH1 0x1f 000010bf: NOT 000010c0: PUSH1 0x1f 000010c2: DUP3 000010c3: ADD 000010c4: AND 000010c5: DUP3 000010c6: ADD 000010c7: DUP1 000010c8: PUSH1 0x40 000010ca: MSTORE 000010cb: POP 000010cc: DUP2 000010cd: ADD 000010ce: SWAP1 000010cf: PUSH2 0x10d8 000010d2: SWAP2 000010d3: SWAP1 000010d4: PUSH2 0x197c 000010d7: JUMP 000010d8: JUMPDEST 000010d9: SWAP1 000010da: POP 000010db: CALLER 000010dc: PUSH1 0x01 000010de: PUSH1 0x01 000010e0: PUSH1 0xa0 000010e2: SHL 000010e3: SUB 000010e4: DUP3 000010e5: AND 000010e6: EQ 000010e7: PUSH2 0x1120 000010ea: JUMPI 000010eb: PUSH1 0x08 000010ed: SLOAD 000010ee: PUSH1 0x40 000010f0: MLOAD 000010f1: PUSH4 0x07396007 000010f6: PUSH1 0xe0 000010f8: SHL 000010f9: DUP2 000010fa: MSTORE 000010fb: CALLER 000010fc: PUSH1 0x04 000010fe: DUP3 000010ff: ADD 00001100: MSTORE 00001101: PUSH1 0x01 00001103: PUSH1 0x01 00001105: PUSH1 0xa0 00001107: SHL 00001108: SUB 00001109: SWAP2 0000110a: DUP3 0000110b: AND 0000110c: PUSH1 0x24 0000110e: DUP3 0000110f: ADD 00001110: MSTORE 00001111: SWAP1 00001112: DUP3 00001113: AND 00001114: PUSH1 0x44 00001116: DUP3 00001117: ADD 00001118: MSTORE 00001119: PUSH1 0x64 0000111b: ADD 0000111c: PUSH2 0x0591 0000111f: JUMP 00001120: JUMPDEST 00001121: POP 00001122: JUMPDEST 00001123: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000001 00001144: PUSH1 0x01 00001146: PUSH1 0x01 00001148: PUSH1 0xa0 0000114a: SHL 0000114b: SUB 0000114c: DUP4 0000114d: AND 0000114e: ADD 0000114f: PUSH2 0x118f 00001152: JUMPI 00001153: PUSH1 0x40 00001155: MLOAD 00001156: PUSH32 0x77abed1000000000000000000000000000000000000000000000000000000000 00001177: DUP2 00001178: MSTORE 00001179: PUSH1 0x01 0000117b: PUSH1 0x01 0000117d: PUSH1 0xa0 0000117f: SHL 00001180: SUB 00001181: DUP4 00001182: AND 00001183: PUSH1 0x04 00001185: DUP3 00001186: ADD 00001187: MSTORE 00001188: PUSH1 0x24 0000118a: ADD 0000118b: PUSH2 0x0591 0000118e: JUMP 0000118f: JUMPDEST 00001190: PUSH1 0x01 00001192: PUSH1 0x01 00001194: PUSH1 0xa0 00001196: SHL 00001197: SUB 00001198: DUP3 00001199: AND 0000119a: PUSH1 0x00 0000119c: DUP2 0000119d: DUP2 0000119e: MSTORE 0000119f: PUSH1 0x02 000011a1: PUSH1 0x20 000011a3: SWAP1 000011a4: DUP2 000011a5: MSTORE 000011a6: PUSH1 0x40 000011a8: SWAP2 000011a9: DUP3 000011aa: SWAP1 000011ab: KECCAK256 000011ac: PUSH1 0x01 000011ae: DUP2 000011af: ADD 000011b0: SLOAD 000011b1: SWAP3 000011b2: MLOAD 000011b3: DUP6 000011b4: ISZERO 000011b5: ISZERO 000011b6: DUP2 000011b7: MSTORE 000011b8: SWAP1 000011b9: SWAP4 000011ba: PUSH1 0xff 000011bc: SWAP1 000011bd: SWAP4 000011be: AND 000011bf: SWAP3 000011c0: SWAP2 000011c1: PUSH32 0x49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa 000011e2: SWAP2 000011e3: ADD 000011e4: PUSH1 0x40 000011e6: MLOAD 000011e7: DUP1 000011e8: SWAP2 000011e9: SUB 000011ea: SWAP1 000011eb: LOG2 000011ec: DUP3 000011ed: ISZERO 000011ee: ISZERO 000011ef: DUP2 000011f0: ISZERO 000011f1: ISZERO 000011f2: SUB 000011f3: PUSH2 0x11fc 000011f6: JUMPI 000011f7: POP 000011f8: POP 000011f9: POP 000011fa: POP 000011fb: JUMP 000011fc: JUMPDEST 000011fd: DUP3 000011fe: ISZERO 000011ff: PUSH2 0x1298 00001202: JUMPI 00001203: PUSH1 0x40 00001205: DUP1 00001206: MLOAD 00001207: DUP1 00001208: DUP3 00001209: ADD 0000120a: DUP3 0000120b: MSTORE 0000120c: PUSH1 0x04 0000120e: DUP1 0000120f: SLOAD 00001210: DUP3 00001211: MSTORE 00001212: PUSH1 0x01 00001214: PUSH1 0x20 00001216: DUP1 00001217: DUP5 00001218: ADD 00001219: DUP3 0000121a: DUP2 0000121b: MSTORE 0000121c: PUSH1 0x01 0000121e: PUSH1 0x01 00001220: PUSH1 0xa0 00001222: SHL 00001223: SUB 00001224: DUP11 00001225: AND 00001226: PUSH1 0x00 00001228: DUP2 00001229: DUP2 0000122a: MSTORE 0000122b: PUSH1 0x02 0000122d: SWAP1 0000122e: SWAP4 0000122f: MSTORE 00001230: SWAP6 00001231: DUP3 00001232: KECCAK256 00001233: SWAP5 00001234: MLOAD 00001235: DUP6 00001236: SSTORE 00001237: MLOAD 00001238: SWAP4 00001239: DUP3 0000123a: ADD 0000123b: DUP1 0000123c: SLOAD 0000123d: PUSH1 0xff 0000123f: NOT 00001240: AND 00001241: SWAP5 00001242: ISZERO 00001243: ISZERO 00001244: SWAP5 00001245: SWAP1 00001246: SWAP5 00001247: OR 00001248: SWAP1 00001249: SWAP4 0000124a: SSTORE 0000124b: DUP2 0000124c: SLOAD 0000124d: SWAP1 0000124e: DUP2 0000124f: ADD 00001250: DUP3 00001251: SSTORE 00001252: SWAP2 00001253: MSTORE 00001254: PUSH32 0x8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b 00001275: ADD 00001276: DUP1 00001277: SLOAD 00001278: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000128d: NOT 0000128e: AND 0000128f: SWAP1 00001290: SWAP2 00001291: OR 00001292: SWAP1 00001293: SSTORE 00001294: PUSH2 0x07cc 00001297: JUMP 00001298: JUMPDEST 00001299: PUSH1 0x04 0000129b: DUP1 0000129c: SLOAD 0000129d: PUSH2 0x12a8 000012a0: SWAP1 000012a1: PUSH1 0x01 000012a3: SWAP1 000012a4: PUSH2 0x1999 000012a7: JUMP 000012a8: JUMPDEST 000012a9: DUP2 000012aa: SLOAD 000012ab: DUP2 000012ac: LT 000012ad: PUSH2 0x12b8 000012b0: JUMPI 000012b1: PUSH2 0x12b8 000012b4: PUSH2 0x19ba 000012b7: JUMP 000012b8: JUMPDEST 000012b9: PUSH1 0x00 000012bb: SWAP2 000012bc: DUP3 000012bd: MSTORE 000012be: PUSH1 0x20 000012c0: SWAP1 000012c1: SWAP2 000012c2: KECCAK256 000012c3: ADD 000012c4: SLOAD 000012c5: DUP3 000012c6: SLOAD 000012c7: PUSH1 0x04 000012c9: DUP1 000012ca: SLOAD 000012cb: PUSH1 0x01 000012cd: PUSH1 0x01 000012cf: PUSH1 0xa0 000012d1: SHL 000012d2: SUB 000012d3: SWAP1 000012d4: SWAP4 000012d5: AND 000012d6: SWAP3 000012d7: SWAP1 000012d8: SWAP2 000012d9: SWAP1 000012da: DUP2 000012db: LT 000012dc: PUSH2 0x12e7 000012df: JUMPI 000012e0: PUSH2 0x12e7 000012e3: PUSH2 0x19ba 000012e6: JUMP 000012e7: JUMPDEST 000012e8: SWAP1 000012e9: PUSH1 0x00 000012eb: MSTORE 000012ec: PUSH1 0x20 000012ee: PUSH1 0x00 000012f0: KECCAK256 000012f1: ADD 000012f2: PUSH1 0x00 000012f4: PUSH2 0x0100 000012f7: EXP 000012f8: DUP2 000012f9: SLOAD 000012fa: DUP2 000012fb: PUSH1 0x01 000012fd: PUSH1 0x01 000012ff: PUSH1 0xa0 00001301: SHL 00001302: SUB 00001303: MUL 00001304: NOT 00001305: AND 00001306: SWAP1 00001307: DUP4 00001308: PUSH1 0x01 0000130a: PUSH1 0x01 0000130c: PUSH1 0xa0 0000130e: SHL 0000130f: SUB 00001310: AND 00001311: MUL 00001312: OR 00001313: SWAP1 00001314: SSTORE 00001315: POP 00001316: DUP2 00001317: PUSH1 0x00 00001319: ADD 0000131a: SLOAD 0000131b: PUSH1 0x02 0000131d: PUSH1 0x00 0000131f: PUSH1 0x04 00001321: DUP6 00001322: PUSH1 0x00 00001324: ADD 00001325: SLOAD 00001326: DUP2 00001327: SLOAD 00001328: DUP2 00001329: LT 0000132a: PUSH2 0x1335 0000132d: JUMPI 0000132e: PUSH2 0x1335 00001331: PUSH2 0x19ba 00001334: JUMP 00001335: JUMPDEST 00001336: PUSH1 0x00 00001338: SWAP2 00001339: DUP3 0000133a: MSTORE 0000133b: PUSH1 0x20 0000133d: DUP1 0000133e: DUP4 0000133f: KECCAK256 00001340: SWAP1 00001341: SWAP2 00001342: ADD 00001343: SLOAD 00001344: PUSH1 0x01 00001346: PUSH1 0x01 00001348: PUSH1 0xa0 0000134a: SHL 0000134b: SUB 0000134c: AND 0000134d: DUP4 0000134e: MSTORE 0000134f: DUP3 00001350: ADD 00001351: SWAP3 00001352: SWAP1 00001353: SWAP3 00001354: MSTORE 00001355: PUSH1 0x40 00001357: ADD 00001358: SWAP1 00001359: KECCAK256 0000135a: SSTORE 0000135b: PUSH1 0x04 0000135d: DUP1 0000135e: SLOAD 0000135f: DUP1 00001360: PUSH2 0x136b 00001363: JUMPI 00001364: PUSH2 0x136b 00001367: PUSH2 0x19d0 0000136a: JUMP 0000136b: JUMPDEST 0000136c: PUSH1 0x00 0000136e: DUP3 0000136f: DUP2 00001370: MSTORE 00001371: PUSH1 0x20 00001373: DUP1 00001374: DUP3 00001375: KECCAK256 00001376: DUP4 00001377: ADD 00001378: PUSH1 0x00 0000137a: NOT 0000137b: SWAP1 0000137c: DUP2 0000137d: ADD 0000137e: DUP1 0000137f: SLOAD 00001380: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001395: NOT 00001396: AND 00001397: SWAP1 00001398: SSTORE 00001399: SWAP1 0000139a: SWAP3 0000139b: ADD 0000139c: SWAP1 0000139d: SWAP3 0000139e: SSTORE 0000139f: PUSH1 0x01 000013a1: PUSH1 0x01 000013a3: PUSH1 0xa0 000013a5: SHL 000013a6: SUB 000013a7: DUP7 000013a8: AND 000013a9: DUP3 000013aa: MSTORE 000013ab: PUSH1 0x02 000013ad: SWAP1 000013ae: MSTORE 000013af: PUSH1 0x40 000013b1: DUP2 000013b2: KECCAK256 000013b3: SWAP1 000013b4: DUP2 000013b5: SSTORE 000013b6: PUSH1 0x01 000013b8: ADD 000013b9: DUP1 000013ba: SLOAD 000013bb: PUSH1 0xff 000013bd: NOT 000013be: AND 000013bf: SWAP1 000013c0: SSTORE 000013c1: POP 000013c2: POP 000013c3: POP 000013c4: POP 000013c5: JUMP 000013c6: JUMPDEST 000013c7: PUSH1 0x06 000013c9: DUP2 000013ca: DUP2 000013cb: SLOAD 000013cc: DUP2 000013cd: LT 000013ce: PUSH2 0x04bc 000013d1: JUMPI 000013d2: PUSH1 0x00 000013d4: DUP1 000013d5: REVERT 000013d6: JUMPDEST 000013d7: PUSH1 0x03 000013d9: DUP2 000013da: DUP2 000013db: SLOAD 000013dc: DUP2 000013dd: LT 000013de: PUSH2 0x0c41 000013e1: JUMPI 000013e2: PUSH1 0x00 000013e4: DUP1 000013e5: REVERT 000013e6: JUMPDEST 000013e7: PUSH1 0x08 000013e9: SLOAD 000013ea: PUSH1 0x01 000013ec: PUSH1 0x01 000013ee: PUSH1 0xa0 000013f0: SHL 000013f1: SUB 000013f2: AND 000013f3: CALLER 000013f4: EQ 000013f5: PUSH2 0x14b0 000013f8: JUMPI 000013f9: PUSH1 0x08 000013fb: SLOAD 000013fc: PUSH1 0x40 000013fe: DUP1 000013ff: MLOAD 00001400: PUSH4 0x8da5cb5b 00001405: PUSH1 0xe0 00001407: SHL 00001408: DUP2 00001409: MSTORE 0000140a: SWAP1 0000140b: MLOAD 0000140c: PUSH1 0x00 0000140e: SWAP3 0000140f: PUSH1 0x01 00001411: PUSH1 0x01 00001413: PUSH1 0xa0 00001415: SHL 00001416: SUB 00001417: AND 00001418: SWAP2 00001419: PUSH4 0x8da5cb5b 0000141e: SWAP2 0000141f: PUSH1 0x04 00001421: DUP1 00001422: DUP4 00001423: ADD 00001424: SWAP3 00001425: PUSH1 0x20 00001427: SWAP3 00001428: SWAP2 00001429: SWAP1 0000142a: DUP3 0000142b: SWAP1 0000142c: SUB 0000142d: ADD 0000142e: DUP2 0000142f: DUP7 00001430: GAS 00001431: STATICCALL 00001432: ISZERO 00001433: DUP1 00001434: ISZERO 00001435: PUSH2 0x1442 00001438: JUMPI 00001439: RETURNDATASIZE 0000143a: PUSH1 0x00 0000143c: DUP1 0000143d: RETURNDATACOPY 0000143e: RETURNDATASIZE 0000143f: PUSH1 0x00 00001441: REVERT 00001442: JUMPDEST 00001443: POP 00001444: POP 00001445: POP 00001446: POP 00001447: PUSH1 0x40 00001449: MLOAD 0000144a: RETURNDATASIZE 0000144b: PUSH1 0x1f 0000144d: NOT 0000144e: PUSH1 0x1f 00001450: DUP3 00001451: ADD 00001452: AND 00001453: DUP3 00001454: ADD 00001455: DUP1 00001456: PUSH1 0x40 00001458: MSTORE 00001459: POP 0000145a: DUP2 0000145b: ADD 0000145c: SWAP1 0000145d: PUSH2 0x1466 00001460: SWAP2 00001461: SWAP1 00001462: PUSH2 0x197c 00001465: JUMP 00001466: JUMPDEST 00001467: SWAP1 00001468: POP 00001469: CALLER 0000146a: PUSH1 0x01 0000146c: PUSH1 0x01 0000146e: PUSH1 0xa0 00001470: SHL 00001471: SUB 00001472: DUP3 00001473: AND 00001474: EQ 00001475: PUSH2 0x14ae 00001478: JUMPI 00001479: PUSH1 0x08 0000147b: SLOAD 0000147c: PUSH1 0x40 0000147e: MLOAD 0000147f: PUSH4 0x07396007 00001484: PUSH1 0xe0 00001486: SHL 00001487: DUP2 00001488: MSTORE 00001489: CALLER 0000148a: PUSH1 0x04 0000148c: DUP3 0000148d: ADD 0000148e: MSTORE 0000148f: PUSH1 0x01 00001491: PUSH1 0x01 00001493: PUSH1 0xa0 00001495: SHL 00001496: SUB 00001497: SWAP2 00001498: DUP3 00001499: AND 0000149a: PUSH1 0x24 0000149c: DUP3 0000149d: ADD 0000149e: MSTORE 0000149f: SWAP1 000014a0: DUP3 000014a1: AND 000014a2: PUSH1 0x44 000014a4: DUP3 000014a5: ADD 000014a6: MSTORE 000014a7: PUSH1 0x64 000014a9: ADD 000014aa: PUSH2 0x0591 000014ad: JUMP 000014ae: JUMPDEST 000014af: POP 000014b0: JUMPDEST 000014b1: PUSH1 0x0a 000014b3: SSTORE 000014b4: JUMP 000014b5: JUMPDEST 000014b6: PUSH1 0x06 000014b8: SLOAD 000014b9: PUSH1 0x40 000014bb: DUP1 000014bc: MLOAD 000014bd: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 000014de: PUSH1 0xf8 000014e0: DUP11 000014e1: SWAP1 000014e2: SHL 000014e3: AND 000014e4: PUSH1 0x20 000014e6: DUP1 000014e7: DUP4 000014e8: ADD 000014e9: SWAP2 000014ea: SWAP1 000014eb: SWAP2 000014ec: MSTORE 000014ed: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000 0000150e: PUSH1 0x60 00001510: DUP11 00001511: SWAP1 00001512: SHL 00001513: AND 00001514: PUSH1 0x21 00001516: DUP4 00001517: ADD 00001518: MSTORE 00001519: PUSH32 0xffffffffffffffff000000000000000000000000000000000000000000000000 0000153a: PUSH1 0xc0 0000153c: DUP10 0000153d: DUP2 0000153e: SHL 0000153f: DUP3 00001540: AND 00001541: PUSH1 0x35 00001543: DUP6 00001544: ADD 00001545: MSTORE 00001546: DUP9 00001547: SWAP1 00001548: SHL 00001549: AND 0000154a: PUSH1 0x3d 0000154c: DUP4 0000154d: ADD 0000154e: MSTORE 0000154f: PUSH1 0x45 00001551: DUP3 00001552: ADD 00001553: DUP5 00001554: SWAP1 00001555: MSTORE 00001556: PUSH1 0x65 00001558: DUP3 00001559: ADD 0000155a: DUP7 0000155b: SWAP1 0000155c: MSTORE 0000155d: PUSH1 0x85 0000155f: DUP1 00001560: DUP4 00001561: ADD 00001562: DUP7 00001563: SWAP1 00001564: MSTORE 00001565: DUP4 00001566: MLOAD 00001567: DUP1 00001568: DUP5 00001569: SUB 0000156a: SWAP1 0000156b: SWAP2 0000156c: ADD 0000156d: DUP2 0000156e: MSTORE 0000156f: PUSH1 0xa5 00001571: SWAP1 00001572: SWAP3 00001573: ADD 00001574: SWAP1 00001575: SWAP3 00001576: MSTORE 00001577: DUP1 00001578: MLOAD 00001579: SWAP2 0000157a: ADD 0000157b: KECCAK256 0000157c: PUSH1 0x00 0000157e: SWAP2 0000157f: SWAP1 00001580: PUSH1 0x00 00001582: DUP3 00001583: ISZERO 00001584: PUSH2 0x15b2 00001587: JUMPI 00001588: PUSH1 0x06 0000158a: PUSH2 0x1594 0000158d: PUSH1 0x01 0000158f: DUP6 00001590: PUSH2 0x1999 00001593: JUMP 00001594: JUMPDEST 00001595: DUP2 00001596: SLOAD 00001597: DUP2 00001598: LT 00001599: PUSH2 0x15a4 0000159c: JUMPI 0000159d: PUSH2 0x15a4 000015a0: PUSH2 0x19ba 000015a3: JUMP 000015a4: JUMPDEST 000015a5: SWAP1 000015a6: PUSH1 0x00 000015a8: MSTORE 000015a9: PUSH1 0x20 000015ab: PUSH1 0x00 000015ad: KECCAK256 000015ae: ADD 000015af: SLOAD 000015b0: SWAP1 000015b1: POP 000015b2: JUMPDEST 000015b3: PUSH1 0x40 000015b5: DUP1 000015b6: MLOAD 000015b7: PUSH1 0x20 000015b9: DUP1 000015ba: DUP3 000015bb: ADD 000015bc: DUP5 000015bd: SWAP1 000015be: MSTORE 000015bf: DUP2 000015c0: DUP4 000015c1: ADD 000015c2: DUP6 000015c3: SWAP1 000015c4: MSTORE 000015c5: DUP3 000015c6: MLOAD 000015c7: DUP1 000015c8: DUP4 000015c9: SUB 000015ca: DUP5 000015cb: ADD 000015cc: DUP2 000015cd: MSTORE 000015ce: PUSH1 0x60 000015d0: DUP4 000015d1: ADD 000015d2: DUP1 000015d3: DUP6 000015d4: MSTORE 000015d5: DUP2 000015d6: MLOAD 000015d7: SWAP2 000015d8: SWAP1 000015d9: SWAP3 000015da: ADD 000015db: KECCAK256 000015dc: PUSH1 0x06 000015de: DUP1 000015df: SLOAD 000015e0: PUSH1 0x01 000015e2: DUP2 000015e3: ADD 000015e4: DUP3 000015e5: SSTORE 000015e6: PUSH1 0x00 000015e8: SWAP2 000015e9: SWAP1 000015ea: SWAP2 000015eb: MSTORE 000015ec: PUSH32 0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f 0000160d: ADD 0000160e: SSTORE 0000160f: CALLER 00001610: SWAP1 00001611: MSTORE 00001612: PUSH1 0xff 00001614: DUP13 00001615: AND 00001616: PUSH1 0x80 00001618: DUP3 00001619: ADD 0000161a: MSTORE 0000161b: PUSH1 0x01 0000161d: PUSH1 0x01 0000161f: PUSH1 0xa0 00001621: SHL 00001622: SUB 00001623: DUP12 00001624: AND 00001625: PUSH1 0xa0 00001627: DUP3 00001628: ADD 00001629: MSTORE 0000162a: PUSH1 0xc0 0000162c: DUP2 0000162d: ADD 0000162e: DUP8 0000162f: SWAP1 00001630: MSTORE 00001631: PUSH1 0xe0 00001633: DUP2 00001634: ADD 00001635: DUP9 00001636: SWAP1 00001637: MSTORE 00001638: PUSH8 0xffffffffffffffff 00001641: DUP10 00001642: AND 00001643: PUSH2 0x0100 00001646: DUP3 00001647: ADD 00001648: MSTORE 00001649: SWAP1 0000164a: MLOAD 0000164b: DUP3 0000164c: SWAP2 0000164d: DUP6 0000164e: SWAP2 0000164f: PUSH32 0x5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1 00001670: SWAP2 00001671: DUP2 00001672: SWAP1 00001673: SUB 00001674: PUSH2 0x0120 00001677: ADD 00001678: SWAP1 00001679: LOG3 0000167a: POP 0000167b: SWAP1 0000167c: SWAP9 0000167d: SWAP8 0000167e: POP 0000167f: POP 00001680: POP 00001681: POP 00001682: POP 00001683: POP 00001684: POP 00001685: POP 00001686: JUMP 00001687: JUMPDEST 00001688: CALLER 00001689: PUSH1 0x00 0000168b: SWAP1 0000168c: DUP2 0000168d: MSTORE 0000168e: PUSH1 0x01 00001690: PUSH1 0x20 00001692: DUP2 00001693: SWAP1 00001694: MSTORE 00001695: PUSH1 0x40 00001697: DUP3 00001698: KECCAK256 00001699: ADD 0000169a: SLOAD 0000169b: PUSH1 0xff 0000169d: AND 0000169e: PUSH2 0x16d5 000016a1: JUMPI 000016a2: PUSH1 0x40 000016a4: MLOAD 000016a5: PUSH32 0xb6c60ea300000000000000000000000000000000000000000000000000000000 000016c6: DUP2 000016c7: MSTORE 000016c8: CALLER 000016c9: PUSH1 0x04 000016cb: DUP3 000016cc: ADD 000016cd: MSTORE 000016ce: PUSH1 0x24 000016d0: ADD 000016d1: PUSH2 0x0591 000016d4: JUMP 000016d5: JUMPDEST 000016d6: PUSH1 0x00 000016d8: PUSH2 0x16e5 000016db: DUP7 000016dc: DUP7 000016dd: NUMBER 000016de: TIMESTAMP 000016df: BASEFEE 000016e0: DUP10 000016e1: PUSH2 0x14b5 000016e4: JUMP 000016e5: JUMPDEST 000016e6: SWAP7 000016e7: SWAP6 000016e8: POP 000016e9: POP 000016ea: POP 000016eb: POP 000016ec: POP 000016ed: POP 000016ee: JUMP 000016ef: JUMPDEST 000016f0: PUSH1 0x00 000016f2: PUSH1 0x60 000016f4: DUP5 000016f5: PUSH1 0x01 000016f7: PUSH1 0x01 000016f9: PUSH1 0xa0 000016fb: SHL 000016fc: SUB 000016fd: AND 000016fe: DUP5 000016ff: DUP5 00001700: PUSH1 0x40 00001702: MLOAD 00001703: PUSH2 0x170c 00001706: SWAP2 00001707: SWAP1 00001708: PUSH2 0x1a1c 0000170b: JUMP 0000170c: JUMPDEST 0000170d: PUSH1 0x00 0000170f: PUSH1 0x40 00001711: MLOAD 00001712: DUP1 00001713: DUP4 00001714: SUB 00001715: DUP2 00001716: DUP6 00001717: DUP8 00001718: GAS 00001719: CALL 0000171a: SWAP3 0000171b: POP 0000171c: POP 0000171d: POP 0000171e: RETURNDATASIZE 0000171f: DUP1 00001720: PUSH1 0x00 00001722: DUP2 00001723: EQ 00001724: PUSH2 0x1749 00001727: JUMPI 00001728: PUSH1 0x40 0000172a: MLOAD 0000172b: SWAP2 0000172c: POP 0000172d: PUSH1 0x1f 0000172f: NOT 00001730: PUSH1 0x3f 00001732: RETURNDATASIZE 00001733: ADD 00001734: AND 00001735: DUP3 00001736: ADD 00001737: PUSH1 0x40 00001739: MSTORE 0000173a: RETURNDATASIZE 0000173b: DUP3 0000173c: MSTORE 0000173d: RETURNDATASIZE 0000173e: PUSH1 0x00 00001740: PUSH1 0x20 00001742: DUP5 00001743: ADD 00001744: RETURNDATACOPY 00001745: PUSH2 0x174e 00001748: JUMP 00001749: JUMPDEST 0000174a: PUSH1 0x60 0000174c: SWAP2 0000174d: POP 0000174e: JUMPDEST 0000174f: POP 00001750: SWAP1 00001751: SWAP7 00001752: SWAP1 00001753: SWAP6 00001754: POP 00001755: SWAP4 00001756: POP 00001757: POP 00001758: POP 00001759: POP 0000175a: JUMP 0000175b: JUMPDEST 0000175c: POP 0000175d: JUMP 0000175e: JUMPDEST 0000175f: PUSH1 0x00 00001761: PUSH1 0x20 00001763: DUP3 00001764: DUP5 00001765: SUB 00001766: SLT 00001767: ISZERO 00001768: PUSH2 0x1770 0000176b: JUMPI 0000176c: PUSH1 0x00 0000176e: DUP1 0000176f: REVERT 00001770: JUMPDEST 00001771: POP 00001772: CALLDATALOAD 00001773: SWAP2 00001774: SWAP1 00001775: POP 00001776: JUMP 00001777: JUMPDEST 00001778: PUSH1 0x01 0000177a: PUSH1 0x01 0000177c: PUSH1 0xa0 0000177e: SHL 0000177f: SUB 00001780: DUP2 00001781: AND 00001782: DUP2 00001783: EQ 00001784: PUSH2 0x175b 00001787: JUMPI 00001788: PUSH1 0x00 0000178a: DUP1 0000178b: REVERT 0000178c: JUMPDEST 0000178d: PUSH1 0x00 0000178f: PUSH1 0x20 00001791: DUP3 00001792: DUP5 00001793: SUB 00001794: SLT 00001795: ISZERO 00001796: PUSH2 0x179e 00001799: JUMPI 0000179a: PUSH1 0x00 0000179c: DUP1 0000179d: REVERT 0000179e: JUMPDEST 0000179f: DUP2 000017a0: CALLDATALOAD 000017a1: PUSH2 0x17a9 000017a4: DUP2 000017a5: PUSH2 0x1777 000017a8: JUMP 000017a9: JUMPDEST 000017aa: SWAP4 000017ab: SWAP3 000017ac: POP 000017ad: POP 000017ae: POP 000017af: JUMP 000017b0: JUMPDEST 000017b1: PUSH1 0x00 000017b3: DUP1 000017b4: PUSH1 0x40 000017b6: DUP4 000017b7: DUP6 000017b8: SUB 000017b9: SLT 000017ba: ISZERO 000017bb: PUSH2 0x17c3 000017be: JUMPI 000017bf: PUSH1 0x00 000017c1: DUP1 000017c2: REVERT 000017c3: JUMPDEST 000017c4: DUP3 000017c5: CALLDATALOAD 000017c6: PUSH2 0x17ce 000017c9: DUP2 000017ca: PUSH2 0x1777 000017cd: JUMP 000017ce: JUMPDEST 000017cf: SWAP2 000017d0: POP 000017d1: PUSH1 0x20 000017d3: DUP4 000017d4: ADD 000017d5: CALLDATALOAD 000017d6: DUP1 000017d7: ISZERO 000017d8: ISZERO 000017d9: DUP2 000017da: EQ 000017db: PUSH2 0x17e3 000017de: JUMPI 000017df: PUSH1 0x00 000017e1: DUP1 000017e2: REVERT 000017e3: JUMPDEST 000017e4: DUP1 000017e5: SWAP2 000017e6: POP 000017e7: POP 000017e8: SWAP3 000017e9: POP 000017ea: SWAP3 000017eb: SWAP1 000017ec: POP 000017ed: JUMP 000017ee: JUMPDEST 000017ef: PUSH1 0x00 000017f1: DUP1 000017f2: PUSH1 0x40 000017f4: DUP4 000017f5: DUP6 000017f6: SUB 000017f7: SLT 000017f8: ISZERO 000017f9: PUSH2 0x1801 000017fc: JUMPI 000017fd: PUSH1 0x00 000017ff: DUP1 00001800: REVERT 00001801: JUMPDEST 00001802: DUP3 00001803: CALLDATALOAD 00001804: PUSH2 0x180c 00001807: DUP2 00001808: PUSH2 0x1777 0000180b: JUMP 0000180c: JUMPDEST 0000180d: SWAP5 0000180e: PUSH1 0x20 00001810: SWAP4 00001811: SWAP1 00001812: SWAP4 00001813: ADD 00001814: CALLDATALOAD 00001815: SWAP4 00001816: POP 00001817: POP 00001818: POP 00001819: JUMP 0000181a: JUMPDEST 0000181b: PUSH1 0x00 0000181d: DUP1 0000181e: PUSH1 0x00 00001820: DUP1 00001821: PUSH1 0x80 00001823: DUP6 00001824: DUP8 00001825: SUB 00001826: SLT 00001827: ISZERO 00001828: PUSH2 0x1830 0000182b: JUMPI 0000182c: PUSH1 0x00 0000182e: DUP1 0000182f: REVERT 00001830: JUMPDEST 00001831: POP 00001832: POP 00001833: DUP3 00001834: CALLDATALOAD 00001835: SWAP5 00001836: PUSH1 0x20 00001838: DUP5 00001839: ADD 0000183a: CALLDATALOAD 0000183b: SWAP5 0000183c: POP 0000183d: PUSH1 0x40 0000183f: DUP5 00001840: ADD 00001841: CALLDATALOAD 00001842: SWAP4 00001843: PUSH1 0x60 00001845: ADD 00001846: CALLDATALOAD 00001847: SWAP3 00001848: POP 00001849: SWAP1 0000184a: POP 0000184b: JUMP 0000184c: JUMPDEST 0000184d: PUSH1 0x00 0000184f: DUP1 00001850: PUSH1 0x00 00001852: PUSH1 0x60 00001854: DUP5 00001855: DUP7 00001856: SUB 00001857: SLT 00001858: ISZERO 00001859: PUSH2 0x1861 0000185c: JUMPI 0000185d: PUSH1 0x00 0000185f: DUP1 00001860: REVERT 00001861: JUMPDEST 00001862: DUP4 00001863: CALLDATALOAD 00001864: PUSH1 0xff 00001866: DUP2 00001867: AND 00001868: DUP2 00001869: EQ 0000186a: PUSH2 0x1872 0000186d: JUMPI 0000186e: PUSH1 0x00 00001870: DUP1 00001871: REVERT 00001872: JUMPDEST 00001873: SWAP3 00001874: POP 00001875: PUSH1 0x20 00001877: DUP5 00001878: ADD 00001879: CALLDATALOAD 0000187a: PUSH2 0x1882 0000187d: DUP2 0000187e: PUSH2 0x1777 00001881: JUMP 00001882: JUMPDEST 00001883: SWAP3 00001884: SWAP6 00001885: SWAP3 00001886: SWAP5 00001887: POP 00001888: POP 00001889: POP 0000188a: PUSH1 0x40 0000188c: SWAP2 0000188d: SWAP1 0000188e: SWAP2 0000188f: ADD 00001890: CALLDATALOAD 00001891: SWAP1 00001892: JUMP 00001893: JUMPDEST 00001894: PUSH1 0x00 00001896: DUP1 00001897: PUSH1 0x00 00001899: DUP1 0000189a: PUSH1 0x60 0000189c: DUP6 0000189d: DUP8 0000189e: SUB 0000189f: SLT 000018a0: ISZERO 000018a1: PUSH2 0x18a9 000018a4: JUMPI 000018a5: PUSH1 0x00 000018a7: DUP1 000018a8: REVERT 000018a9: JUMPDEST 000018aa: DUP5 000018ab: CALLDATALOAD 000018ac: PUSH2 0x18b4 000018af: DUP2 000018b0: PUSH2 0x1777 000018b3: JUMP 000018b4: JUMPDEST 000018b5: SWAP4 000018b6: POP 000018b7: PUSH1 0x20 000018b9: DUP6 000018ba: ADD 000018bb: CALLDATALOAD 000018bc: SWAP3 000018bd: POP 000018be: PUSH1 0x40 000018c0: DUP6 000018c1: ADD 000018c2: CALLDATALOAD 000018c3: PUSH8 0xffffffffffffffff 000018cc: DUP1 000018cd: DUP3 000018ce: GT 000018cf: ISZERO 000018d0: PUSH2 0x18d8 000018d3: JUMPI 000018d4: PUSH1 0x00 000018d6: DUP1 000018d7: REVERT 000018d8: JUMPDEST 000018d9: DUP2 000018da: DUP8 000018db: ADD 000018dc: SWAP2 000018dd: POP 000018de: DUP8 000018df: PUSH1 0x1f 000018e1: DUP4 000018e2: ADD 000018e3: SLT 000018e4: PUSH2 0x18ec 000018e7: JUMPI 000018e8: PUSH1 0x00 000018ea: DUP1 000018eb: REVERT 000018ec: JUMPDEST 000018ed: DUP2 000018ee: CALLDATALOAD 000018ef: DUP2 000018f0: DUP2 000018f1: GT 000018f2: ISZERO 000018f3: PUSH2 0x18fb 000018f6: JUMPI 000018f7: PUSH1 0x00 000018f9: DUP1 000018fa: REVERT 000018fb: JUMPDEST 000018fc: DUP9 000018fd: PUSH1 0x20 000018ff: DUP3 00001900: DUP6 00001901: ADD 00001902: ADD 00001903: GT 00001904: ISZERO 00001905: PUSH2 0x190d 00001908: JUMPI 00001909: PUSH1 0x00 0000190b: DUP1 0000190c: REVERT 0000190d: JUMPDEST 0000190e: SWAP6 0000190f: SWAP9 00001910: SWAP5 00001911: SWAP8 00001912: POP 00001913: POP 00001914: PUSH1 0x20 00001916: ADD 00001917: SWAP5 00001918: POP 00001919: POP 0000191a: POP 0000191b: JUMP 0000191c: JUMPDEST 0000191d: PUSH1 0x00 0000191f: JUMPDEST 00001920: DUP4 00001921: DUP2 00001922: LT 00001923: ISZERO 00001924: PUSH2 0x1937 00001927: JUMPI 00001928: DUP2 00001929: DUP2 0000192a: ADD 0000192b: MLOAD 0000192c: DUP4 0000192d: DUP3 0000192e: ADD 0000192f: MSTORE 00001930: PUSH1 0x20 00001932: ADD 00001933: PUSH2 0x191f 00001936: JUMP 00001937: JUMPDEST 00001938: POP 00001939: POP 0000193a: PUSH1 0x00 0000193c: SWAP2 0000193d: ADD 0000193e: MSTORE 0000193f: JUMP 00001940: JUMPDEST 00001941: DUP3 00001942: ISZERO 00001943: ISZERO 00001944: DUP2 00001945: MSTORE 00001946: PUSH1 0x40 00001948: PUSH1 0x20 0000194a: DUP3 0000194b: ADD 0000194c: MSTORE 0000194d: PUSH1 0x00 0000194f: DUP3 00001950: MLOAD 00001951: DUP1 00001952: PUSH1 0x40 00001954: DUP5 00001955: ADD 00001956: MSTORE 00001957: PUSH2 0x1967 0000195a: DUP2 0000195b: PUSH1 0x60 0000195d: DUP6 0000195e: ADD 0000195f: PUSH1 0x20 00001961: DUP8 00001962: ADD 00001963: PUSH2 0x191c 00001966: JUMP 00001967: JUMPDEST 00001968: PUSH1 0x1f 0000196a: ADD 0000196b: PUSH1 0x1f 0000196d: NOT 0000196e: AND 0000196f: SWAP2 00001970: SWAP1 00001971: SWAP2 00001972: ADD 00001973: PUSH1 0x60 00001975: ADD 00001976: SWAP4 00001977: SWAP3 00001978: POP 00001979: POP 0000197a: POP 0000197b: JUMP 0000197c: JUMPDEST 0000197d: PUSH1 0x00 0000197f: PUSH1 0x20 00001981: DUP3 00001982: DUP5 00001983: SUB 00001984: SLT 00001985: ISZERO 00001986: PUSH2 0x198e 00001989: JUMPI 0000198a: PUSH1 0x00 0000198c: DUP1 0000198d: REVERT 0000198e: JUMPDEST 0000198f: DUP2 00001990: MLOAD 00001991: PUSH2 0x17a9 00001994: DUP2 00001995: PUSH2 0x1777 00001998: JUMP 00001999: JUMPDEST 0000199a: DUP2 0000199b: DUP2 0000199c: SUB 0000199d: DUP2 0000199e: DUP2 0000199f: GT 000019a0: ISZERO 000019a1: PUSH2 0x095a 000019a4: JUMPI 000019a5: PUSH4 0x4e487b71 000019aa: PUSH1 0xe0 000019ac: SHL 000019ad: PUSH1 0x00 000019af: MSTORE 000019b0: PUSH1 0x11 000019b2: PUSH1 0x04 000019b4: MSTORE 000019b5: PUSH1 0x24 000019b7: PUSH1 0x00 000019b9: REVERT 000019ba: JUMPDEST 000019bb: PUSH4 0x4e487b71 000019c0: PUSH1 0xe0 000019c2: SHL 000019c3: PUSH1 0x00 000019c5: MSTORE 000019c6: PUSH1 0x32 000019c8: PUSH1 0x04 000019ca: MSTORE 000019cb: PUSH1 0x24 000019cd: PUSH1 0x00 000019cf: REVERT 000019d0: JUMPDEST 000019d1: PUSH4 0x4e487b71 000019d6: PUSH1 0xe0 000019d8: SHL 000019d9: PUSH1 0x00 000019db: MSTORE 000019dc: PUSH1 0x31 000019de: PUSH1 0x04 000019e0: MSTORE 000019e1: PUSH1 0x24 000019e3: PUSH1 0x00 000019e5: REVERT 000019e6: JUMPDEST 000019e7: DUP4 000019e8: DUP2 000019e9: MSTORE 000019ea: PUSH1 0x40 000019ec: PUSH1 0x20 000019ee: DUP3 000019ef: ADD 000019f0: MSTORE 000019f1: DUP2 000019f2: PUSH1 0x40 000019f4: DUP3 000019f5: ADD 000019f6: MSTORE 000019f7: DUP2 000019f8: DUP4 000019f9: PUSH1 0x60 000019fb: DUP4 000019fc: ADD 000019fd: CALLDATACOPY 000019fe: PUSH1 0x00 00001a00: DUP2 00001a01: DUP4 00001a02: ADD 00001a03: PUSH1 0x60 00001a05: SWAP1 00001a06: DUP2 00001a07: ADD 00001a08: SWAP2 00001a09: SWAP1 00001a0a: SWAP2 00001a0b: MSTORE 00001a0c: PUSH1 0x1f 00001a0e: SWAP1 00001a0f: SWAP3 00001a10: ADD 00001a11: PUSH1 0x1f 00001a13: NOT 00001a14: AND 00001a15: ADD 00001a16: ADD 00001a17: SWAP3 00001a18: SWAP2 00001a19: POP 00001a1a: POP 00001a1b: JUMP 00001a1c: JUMPDEST 00001a1d: PUSH1 0x00 00001a1f: DUP3 00001a20: MLOAD 00001a21: PUSH2 0x1a2e 00001a24: DUP2 00001a25: DUP5 00001a26: PUSH1 0x20 00001a28: DUP8 00001a29: ADD 00001a2a: PUSH2 0x191c 00001a2d: JUMP 00001a2e: JUMPDEST 00001a2f: SWAP2 00001a30: SWAP1 00001a31: SWAP2 00001a32: ADD 00001a33: SWAP3 00001a34: SWAP2 00001a35: POP 00001a36: POP 00001a37: JUMP 00001a38: INVALID 00001a39: LOG2 00001a3a: PUSH5 0x6970667358 00001a40: UNKNOWN(0x22) 00001a41: SLT 00001a42: KECCAK256 00001a43: UNKNOWN(0xC8) 00001a44: UNKNOWN(0xA6) 00001a45: DUP2 00001a46: UNKNOWN(0xCD) 00001a47: SUB 00001a48: PUSH10 0xc07a070b6b477d8cffe9 00001a53: CALL 00001a54: SGT 00001a55: DUP15 00001a56: NOT 00001a57: SWAP4 00001a58: UNKNOWN(0x2A) 00001a59: BLOCKHASH 00001a5a: PUSH21
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | codex | Initializer is publicly callable, enabling proxy takeover if not initialized atomically | 90 | no | — |
viewevidence_json{
"evidence": "`initialize` is `external` and only gated by `initializer` and `onlyDelegated`, with no caller authentication.",
"locations": [
"src/bridge/Bridge.sol:22"
],
"recommendation": "Ensure `initialize` is executed atomically during proxy deployment (constructor `data` call) or add an access-control guard (e.g., `onlyProxyOwner`/admin) to `initialize`. Consider disabling initializers on the implementation to prevent misuse.",
"exploit_scenario": "If the proxy is deployed without calling `initialize` in the same transaction, any account can call `initialize(rollup_)` via the proxy and set `rollup` to a malicious contract that returns the attacker as owner. The attacker then controls `onlyRollupOrOwner` functions (e.g., setting outboxes/inboxes or updating rollup), enabling full system takeover and potential escrow drain via allowed outbox execution."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x82a98e6bffa2c0d5bbb7fa099a53e42f4773a98c5caff65ca15b82f4bef92316
call_targets:
0x677ecf96dbfee1defbde8d2e905a39f73aa27b89
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x82a98e6bffa2c0d5bbb7fa099a53e42f4773a98c5caff65ca15b82f4bef92316",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x677ecf96dbfee1defbde8d2e905a39f73aa27b89"
],
"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": "0xeca067ad",
"selector": "0xeca067ad",
"calldata_variants": [
"0xeca067ad",
"0xeca067ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee35f327",
"selector": "0xee35f327",
"calldata_variants": [
"0xee35f327",
"0xee35f3270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf81ff3b3",
"selector": "0xf81ff3b3",
"calldata_variants": [
"0xf81ff3b3",
"0xf81ff3b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd5719dc2",
"selector": "0xd5719dc2",
"calldata_variants": [
"0xd5719dc2",
"0xd5719dc20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe76f5c8d",
"selector": "0xe76f5c8d",
"calldata_variants": [
"0xe76f5c8d",
"0xe76f5c8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe77145f4",
"selector": "0xe77145f4",
"calldata_variants": [
"0xe77145f4",
"0xe77145f40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcb23bcb5",
"selector": "0xcb23bcb5",
"calldata_variants": [
"0xcb23bcb5",
"0xcb23bcb50000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5913,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6739,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x82a98e6bffa2c0d5bbb7fa099a53e42f4773a98c5caff65ca15b82f4bef92316
call_targets:
0x677ecf96dbfee1defbde8d2e905a39f73aa27b89
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x82a98e6bffa2c0d5bbb7fa099a53e42f4773a98c5caff65ca15b82f4bef92316",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x677ecf96dbfee1defbde8d2e905a39f73aa27b89"
],
"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": "0xeca067ad",
"selector": "0xeca067ad",
"calldata_variants": [
"0xeca067ad",
"0xeca067ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee35f327",
"selector": "0xee35f327",
"calldata_variants": [
"0xee35f327",
"0xee35f3270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf81ff3b3",
"selector": "0xf81ff3b3",
"calldata_variants": [
"0xf81ff3b3",
"0xf81ff3b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd5719dc2",
"selector": "0xd5719dc2",
"calldata_variants": [
"0xd5719dc2",
"0xd5719dc20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe76f5c8d",
"selector": "0xe76f5c8d",
"calldata_variants": [
"0xe76f5c8d",
"0xe76f5c8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe77145f4",
"selector": "0xe77145f4",
"calldata_variants": [
"0xe77145f4",
"0xe77145f40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcb23bcb5",
"selector": "0xcb23bcb5",
"calldata_variants": [
"0xcb23bcb5",
"0xcb23bcb50000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5913,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6739,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|