15de1a4b-412f-443d-88d9-6bfed3147c1b
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 |
|---|---|---|---|---|
| 30337 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 74206 | artifact.fetch | failed | 1 / 3 | 3 weeks ago |
| 74207 | tool.cast_disasm | complete | 1 / 3 | 3 weeks ago |
| 74208 | analysis.bundle | complete | 1 / 3 | 3 weeks ago |
| 74209 | capability.graph | complete | 1 / 3 | 3 weeks ago |
| 74210 | detector.run | complete | 1 / 3 | 3 weeks ago |
| 74211 | validation.fork | complete | 1 / 3 | 3 weeks ago |
No slither job recorded yet.
[codex:1222637] OpenAI Codex v0.77.0 (research preview)
[codex:1222637] --------
[codex:1222637] workdir: /tmp/codex-multi-6ear7szq
[codex:1222637] model: gpt-5.2-codex
[codex:1222637] provider: openai
[codex:1222637] approval: never
[codex:1222637] sandbox: read-only
[codex:1222637] reasoning effort: xhigh
[codex:1222637] reasoning summaries: auto
[codex:1222637] session id: 019b65f1-c349-7593-a410-4cb8ed49572a
[codex:1222637] --------
[codex:1222637] user
[codex:1222637] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1222637] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1222637] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1222637]
[codex:1222637] Scope rules:
[codex:1222637] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1222637] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1222637]
[codex:1222637] Output MUST be valid JSON matching the provided schema.
[codex:1222637] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1222637] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1222637]
[codex:1222637] Output constraints (IMPORTANT):
[codex:1222637] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1222637] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1222637] mcp startup: no servers
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Reading AUDIT_BUNDLE.txt via shell**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc ls in /tmp/codex-multi-6ear7szq succeeded in 5ms:
[codex:1222637] AUDIT_BUNDLE.txt
[codex:1222637] codex-output-schema.json
[codex:1222637] contracts
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Reading file**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1222637]
[codex:1222637] ================================================================================
[codex:1222637] FILE: contracts/lib/facet-sol/lib/solady/src/utils/LibRLP.sol
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.4;
[codex:1222637]
[codex:1222637] /// @notice Library for RLP encoding and CREATE address computation.
[codex:1222637] /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibRLP.sol)
[codex:1222637] /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibRLP.sol)
[codex:1222637] library LibRLP {
[codex:1222637] /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
[codex:1222637] /* STRUCTS */
[codex:1222637] /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
[codex:1222637]
[codex:1222637] /// @dev A pointer to a RLP item list in memory.
[codex:1222637] struct List {
[codex:1222637] // Do NOT modify the `_data` directly.
[codex:1222637] uint256 _data;
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Identifying first-party contracts**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "''^FILE:" AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] 4:FILE: contracts/lib/facet-sol/lib/solady/src/utils/LibRLP.sol
[codex:1222637] 399:FILE: contracts/lib/facet-sol/src/utils/LibFacet.sol
[codex:1222637] 490:FILE: contracts/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol
[codex:1222637] 632:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol
[codex:1222637] 1019:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol
[codex:1222637] 1105:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol
[codex:1222637] 1137:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol
[codex:1222637] 1201:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol
[codex:1222637] 1321:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol
[codex:1222637] 1547:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol
[codex:1222637] 1575:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol
[codex:1222637] 1702:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol
[codex:1222637] 1731:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/math/Math.sol
[codex:1222637] 1961:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol
[codex:1222637] 2008:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol
[codex:1222637] 2107:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol
[codex:1222637] 2249:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol
[codex:1222637] 2448:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol
[codex:1222637] 2489:FILE: contracts/lib/solady/src/utils/LibString.sol
[codex:1222637] 3687:FILE: contracts/lib/solmate/src/utils/FixedPointMathLib.sol
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Planning focus on first-party contracts audit**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "delegatecall" AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] 1513: (bool success, bytes memory returndata) = target.delegatecall(data);
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing bridging contract calls and reentrancy risks**
[codex:1222637]
[codex:1222637] I'm focusing on external call patterns like `.call(` and checking Optimism's StandardBridge for potential vulnerabilities. I want to verify access controls, state updates before external calls, and any replay attack surfaces around deposit hashes and replayable deposits. To dig deeper, I'll extract StandardBridge code for detailed analysis with Python parsing.
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] import re
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/universal/StandardBridge.sol'
[codex:1222637] end='FILE: '
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637]
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 40ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1222637] import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
[codex:1222637] import { Address } from "@openzeppelin/contracts/utils/Address.sol";
[codex:1222637] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1222637] import { SafeCall } from "src/libraries/SafeCall.sol";
[codex:1222637] import { IOptimismMintableERC20, ILegacyMintableERC20 } from "src/universal/IOptimismMintableERC20.sol";
[codex:1222637] import { CrossDomainMessenger } from "src/universal/CrossDomainMessenger.sol";
[codex:1222637] import { OptimismMintableERC20 } from "src/universal/OptimismMintableERC20.sol";
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { AddressAliasHelper } from "src/vendor/AddressAliasHelper.sol";
[codex:1222637]
[codex:1222637] import { LibFacet } from "lib/facet-sol/src/utils/LibFacet.sol";
[codex:1222637]
[codex:1222637]
[codex:1222637] /// @custom:upgradeable
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing StandardBridge and PausedL1StandardBridge**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] import re
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/PausedL1StandardBridge.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637]
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 23ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { StandardBridge } from "src/universal/StandardBridge.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { CrossDomainMessenger } from "src/universal/CrossDomainMessenger.sol";
[codex:1222637] import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
[codex:1222637] import { OptimismPortal } from "src/L1/OptimismPortal.sol";
[codex:1222637] import { SystemConfig } from "src/L1/SystemConfig.sol";
[codex:1222637]
[codex:1222637] import { IWETH } from "src/dispute/interfaces/IWETH.sol";
[codex:1222637]
[codex:1222637] interface Donateable {
[codex:1222637] function donateETH() external payable;
[codex:1222637] }
[codex:1222637]
[codex:1222637] /// @custom:proxied
[codex:1222637] /// @title L1StandardBridge
[codex:1222637] /// @notice The L1StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing PausedL1StandardBridge and access controls**
[codex:1222637]
[codex:1222637] I'm examining how PausedL1StandardBridge disables ERC20 bridging by overriding `_initiateBridgeERC20` to always revert and noticing it includes a privileged `adminWithdraw` that lets a fixed admin address withdraw WETH, highlighting centralization risks without typical Ownable governance. I'm also digging into replay protections on L1 deposits and the nuances of cross-domain message sender checks between L1 and L2, especially relating to aliasing and messenger contracts used in Optimism. This sets me up to verify if L2 StandardBridge contracts handle these conditions properly or if gaps exist.
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "L2StandardBridge" AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] 5156: /// be locked in the L2StandardBridge. ETH may be recoverable if the call can be
[codex:1222637] 7276: /// @notice Address of the L2StandardBridge predeploy.
[codex:1222637] 7351: if (_addr == L2_STANDARD_BRIDGE) return "L2StandardBridge";
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Checking bridge contract presence**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] import re
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/OptimismPortal.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637]
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 24ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { SafeCall } from "src/libraries/SafeCall.sol";
[codex:1222637] import { L2OutputOracle } from "src/L1/L2OutputOracle.sol";
[codex:1222637] import { SystemConfig } from "src/L1/SystemConfig.sol";
[codex:1222637] import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Hashing } from "src/libraries/Hashing.sol";
[codex:1222637] import { SecureMerkleTrie } from "src/libraries/trie/SecureMerkleTrie.sol";
[codex:1222637] import { AddressAliasHelper } from "src/vendor/AddressAliasHelper.sol";
[codex:1222637] import { ResourceMetering } from "src/L1/ResourceMetering.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1222637] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1222637] import { L1Block } from "src/L2/L1Block.sol";
[codex:1222637] import { Predeploys } from "src/libraries/Predeploys.sol";
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing transaction function behavior and reentrancy risks**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Constants.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 23ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637]
[codex:1222637] import { ResourceMetering } from "src/L1/ResourceMetering.sol";
[codex:1222637]
[codex:1222637] /// @title Constants
[codex:1222637] /// @notice Constants is a library for storing constants. Simple! Don't put everything in here, just
[codex:1222637] /// the stuff used in multiple contracts. Constants that only apply to a single contract
[codex:1222637] /// should be defined in that contract instead.
[codex:1222637] library Constants {
[codex:1222637] /// @notice Special address to be used as the tx origin for gas estimation calls in the
[codex:1222637] /// OptimismPortal and CrossDomainMessenger calls. You only need to use this address if
[codex:1222637] /// the minimum gas limit specified by the user is not actually enough to execute the
[codex:1222637] /// given message and you're attempting to estimate the actual necessary gas limit. We
[codex:1222637] /// use address(1) because it's the ecrecover precompile and therefore guaranteed to
[codex:1222637] /// never have any code on any EVM chain.
[codex:1222637] address internal constant ESTIMATION_ADDRESS = address(1);
[codex:1222637]
[codex:1222637] /// @notice Value used for the L2 sender storage slot in both the OptimismPortal and the
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing deposit disablement and LibFacet usage**
[codex:1222637]
[codex:1222637] I'm examining how deposit functionality is intentionally disabled in OptimismPortal by reverting in `depositTransaction` and related functions, replaced by LibFacet calls instead. I'm curious whether the fallback `receive()` reverts properly and if this might cause deposit issues or is intentional. I plan to review related contract files next to understand modifications and potential implications.
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/L2OutputOracle.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 19ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637]
[codex:1222637] /// @custom:proxied
[codex:1222637] /// @title L2OutputOracle
[codex:1222637] /// @notice The L2OutputOracle contains an array of L2 state outputs, where each output is a
[codex:1222637] /// commitment to the state of the L2 chain. Other contracts like the OptimismPortal use
[codex:1222637] /// these outputs to verify information about the state of L2.
[codex:1222637] contract L2OutputOracle is Initializable, ISemver {
[codex:1222637] /// @notice The number of the first L2 block recorded in this contract.
[codex:1222637] uint256 public startingBlockNumber;
[codex:1222637]
[codex:1222637] /// @notice The timestamp of the first L2 block recorded in this contract.
[codex:1222637] uint256 public startingTimestamp;
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Reviewing L2OutputOracle upgrade and access**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/SystemConfig.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 19ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { ResourceMetering } from "src/L1/ResourceMetering.sol";
[codex:1222637] import { Storage } from "src/libraries/Storage.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { OptimismPortal } from "src/L1/OptimismPortal.sol";
[codex:1222637] import { GasPayingToken, IGasToken } from "src/libraries/GasPayingToken.sol";
[codex:1222637] import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1222637]
[codex:1222637] /// @title SystemConfig
[codex:1222637] /// @notice The SystemConfig contract is used to manage configuration of an Optimism network.
[codex:1222637] /// All configuration is stored on L1 and picked up by L2 as part of the derviation of
[codex:1222637] /// the L2 chain.
[codex:1222637] contract SystemConfig is OwnableUpgradeable, ISemver, IGasToken {
[codex:1222637] /// @notice Enum representing different types of updates.
[codex:1222637] /// @custom:value BATCHER Represents an update to the batcher hash.
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Checking inheritance for SystemConfig**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/SuperchainConfig.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 21ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { Storage } from "src/libraries/Storage.sol";
[codex:1222637]
[codex:1222637] /// @custom:audit none This contracts is not yet audited.
[codex:1222637] /// @title SuperchainConfig
[codex:1222637] /// @notice The SuperchainConfig contract is used to manage configuration of global superchain values.
[codex:1222637] contract SuperchainConfig is Initializable, ISemver {
[codex:1222637] /// @notice Enum representing different types of updates.
[codex:1222637] /// @custom:value GUARDIAN Represents an update to the guardian.
[codex:1222637] enum UpdateType {
[codex:1222637] GUARDIAN
[codex:1222637] }
[codex:1222637]
[codex:1222637] /// @notice Whether or not the Superchain is paused.
[codex:1222637] bytes32 public constant PAUSED_SLOT = bytes32(uint256(keccak256("superchainConfig.paused")) - 1);
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Considering ResourceMetering in SuperchainConfig**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/ResourceMetering.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 20ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
[codex:1222637] import { Burn } from "src/libraries/Burn.sol";
[codex:1222637] import { Arithmetic } from "src/libraries/Arithmetic.sol";
[codex:1222637]
[codex:1222637] /// @custom:upgradeable
[codex:1222637] /// @title ResourceMetering
[codex:1222637] /// @notice ResourceMetering implements an EIP-1559 style resource metering system where pricing
[codex:1222637] /// updates automatically based on current demand.
[codex:1222637] abstract contract ResourceMetering is Initializable {
[codex:1222637] /// @notice Error returned when too much gas resource is consumed.
[codex:1222637] error OutOfGas();
[codex:1222637]
[codex:1222637] /// @notice Represents the various parameters that control the way in which resources are
[codex:1222637] /// metered. Corresponds to the EIP-1559 resource metering system.
[codex:1222637] /// @custom:field prevBaseFee Base fee from the previous block(s).
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Reviewing ResourceMetering and checking CrossDomainMessenger**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/universal/CrossDomainMessenger.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 20ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:1222637] import { SafeCall } from "src/libraries/SafeCall.sol";
[codex:1222637] import { Hashing } from "src/libraries/Hashing.sol";
[codex:1222637] import { Encoding } from "src/libraries/Encoding.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637]
[codex:1222637] /// @custom:legacy
[codex:1222637] /// @title CrossDomainMessengerLegacySpacer0
[codex:1222637] /// @notice Contract only exists to add a spacer to the CrossDomainMessenger where the
[codex:1222637] /// libAddressManager variable used to exist. Must be the first contract in the inheritance
[codex:1222637] /// tree of the CrossDomainMessenger.
[codex:1222637] contract CrossDomainMessengerLegacySpacer0 {
[codex:1222637] /// @custom:legacy
[codex:1222637] /// @custom:spacer libAddressManager
[codex:1222637] /// @notice Spacer for backwards compatibility.
[codex:1222637] address private spacer_0_0_20;
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Reviewing CrossDomainMessenger and Next Contract**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/universal/OptimismMintableERC20.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 20ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1222637] import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
[codex:1222637] import { ILegacyMintableERC20, IOptimismMintableERC20 } from "src/universal/IOptimismMintableERC20.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637]
[codex:1222637] /// @title OptimismMintableERC20
[codex:1222637] /// @notice OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed
[codex:1222637] /// to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to
[codex:1222637] /// use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.
[codex:1222637] /// Designed to be backwards compatible with the older StandardL2ERC20 token which was only
[codex:1222637] /// meant for use on L2.
[codex:1222637] contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20, ERC20, ISemver {
[codex:1222637] /// @notice Address of the corresponding version of this token on the remote chain.
[codex:1222637] address public immutable REMOTE_TOKEN;
[codex:1222637]
[codex:1222637] /// @notice Address of the StandardBridge on this network.
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Checking L1Block contract**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L2/L1Block.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { GasPayingToken, IGasToken } from "src/libraries/GasPayingToken.sol";
[codex:1222637] import "src/libraries/L1BlockErrors.sol";
[codex:1222637]
[codex:1222637] /// @custom:proxied
[codex:1222637] /// @custom:predeploy 0x4200000000000000000000000000000000000015
[codex:1222637] /// @title L1Block
[codex:1222637] /// @notice The L1Block predeploy gives users access to information about the last known L1 block.
[codex:1222637] /// Values within this contract are updated once per epoch (every L1 block) and can only be
[codex:1222637] /// set by the "depositor" account, a special system address. Depositor account transactions
[codex:1222637] /// are created by the protocol whenever we move to a new epoch.
[codex:1222637] contract L1Block is ISemver, IGasToken {
[codex:1222637] /// @notice Event emitted when the gas paying token is set.
[codex:1222637] event GasPayingTokenSet(address indexed token, uint8 indexed decimals, bytes32 name, bytes32 symbol);
[codex:1222637]
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing L1Block storage and calldata handling**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/GasPayingToken.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 21ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637]
[codex:1222637] import { Storage } from "src/libraries/Storage.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { LibString } from "@solady/utils/LibString.sol";
[codex:1222637]
[codex:1222637] /// @title IGasToken
[codex:1222637] /// @notice Implemented by contracts that are aware of the custom gas token used
[codex:1222637] /// by the L2 network.
[codex:1222637] interface IGasToken {
[codex:1222637] /// @notice Getter for the ERC20 token address that is used to pay for gas and its decimals.
[codex:1222637] function gasPayingToken() external view returns (address, uint8);
[codex:1222637] /// @notice Returns the gas token name.
[codex:1222637] function gasPayingTokenName() external view returns (string memory);
[codex:1222637] /// @notice Returns the gas token symbol.
[codex:1222637] function gasPayingTokenSymbol() external view returns (string memory);
[codex:1222637] /// @notice Returns true if the network uses a custom gas token.
[codex:1222637] function isCustomGasToken() external view returns (bool);
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing default token behavior impact**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/SafeCall.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 19ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637]
[codex:1222637] /// @title SafeCall
[codex:1222637] /// @notice Perform low level safe calls
[codex:1222637] library SafeCall {
[codex:1222637] /// @notice Performs a low level call without copying any returndata.
[codex:1222637] /// @dev Passes no calldata to the call context.
[codex:1222637] /// @param _target Address to call
[codex:1222637] /// @param _gas Amount of gas to pass to the call
[codex:1222637] /// @param _value Amount of value to pass to the call
[codex:1222637] function send(address _target, uint256 _gas, uint256 _value) internal returns (bool success_) {
[codex:1222637] assembly {
[codex:1222637] success_ :=
[codex:1222637] call(
[codex:1222637] _gas, // gas
[codex:1222637] _target, // recipient
[codex:1222637] _value, // ether value
[codex:1222637] 0, // inloc
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing cross-domain and access control risks**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Encoding.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637]
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Hashing } from "src/libraries/Hashing.sol";
[codex:1222637] import { RLPWriter } from "src/libraries/rlp/RLPWriter.sol";
[codex:1222637]
[codex:1222637] /// @title Encoding
[codex:1222637] /// @notice Encoding handles Optimism's various different encoding schemes.
[codex:1222637] library Encoding {
[codex:1222637] /// @notice RLP encodes the L2 transaction that would be generated when a given deposit is sent
[codex:1222637] /// to the L2 system. Useful for searching for a deposit in the L2 system. The
[codex:1222637] /// transaction is prefixed with 0x7e to identify its EIP-2718 type.
[codex:1222637] /// @param _tx User deposit transaction to encode.
[codex:1222637] /// @return RLP encoded L2 deposit transaction.
[codex:1222637] function encodeDepositTransaction(Types.UserDepositTransaction memory _tx) internal pure returns (bytes memory) {
[codex:1222637] bytes32 source = Hashing.hashDepositSource(_tx.l1BlockHash, _tx.logIndex);
[codex:1222637] bytes[] memory raw = new bytes[](8);
[codex:1222637] raw[0] = RLPWriter.writeBytes(abi.encodePacked(source));
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Checking potential vulnerability sources**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Hashing.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637]
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Encoding } from "src/libraries/Encoding.sol";
[codex:1222637]
[codex:1222637] /// @title Hashing
[codex:1222637] /// @notice Hashing handles Optimism's various different hashing schemes.
[codex:1222637] library Hashing {
[codex:1222637] /// @notice Computes the hash of the RLP encoded L2 transaction that would be generated when a
[codex:1222637] /// given deposit is sent to the L2 system. Useful for searching for a deposit in the L2
[codex:1222637] /// system.
[codex:1222637] /// @param _tx User deposit transaction to hash.
[codex:1222637] /// @return Hash of the RLP encoded L2 deposit transaction.
[codex:1222637] function hashDepositTransaction(Types.UserDepositTransaction memory _tx) internal pure returns (bytes32) {
[codex:1222637] return keccak256(Encoding.encodeDepositTransaction(_tx));
[codex:1222637] }
[codex:1222637]
[codex:1222637] /// @notice Computes the deposit transaction's "source hash", a value that guarantees the hash
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Reviewing contract functions for vulnerabilities**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/lib/facet-sol/src/utils/LibFacet.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637]
[codex:1222637] # print only relevant portion around sendFacetTransaction
[codex:1222637] text=''.join(lines)
[codex:1222637] # find sendFacetTransaction function definitions
[codex:1222637] import re
[codex:1222637] for m in re.finditer(r'function sendFacetTransaction', text):
[codex:1222637] start_idx = m.start()
[codex:1222637] snippet = text[start_idx:start_idx+1200]
[codex:1222637] print(snippet)
[codex:1222637] print('---')
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 23ms:
[codex:1222637] function sendFacetTransaction(
[codex:1222637] uint256 gasLimit,
[codex:1222637] bytes memory data
[codex:1222637] ) internal {
[codex:1222637] sendFacetTransaction({
[codex:1222637] to: bytes(''),
[codex:1222637] value: 0,
[codex:1222637] gasLimit: gasLimit,
[codex:1222637] data: data,
[codex:1222637] mineBoost: bytes('')
[codex:1222637] });
[codex:1222637] }
[codex:1222637]
[codex:1222637] function sendFacetTransaction(
[codex:1222637] address to,
[codex:1222637] uint256 gasLimit,
[codex:1222637] bytes memory data
[codex:1222637] ) internal {
[codex:1222637] sendFacetTransaction({
[codex:1222637] to: abi.encodePacked(to),
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing bridge and portal functions for vulnerabilities**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "TODO|FIXME|HACK|REENTRANCY|unsafe|BUG" contracts/src AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 12ms:
[codex:1222637] AUDIT_BUNDLE.txt:541: * /// @custom:oz-upgrades-unsafe-allow constructor
[codex:1222637] AUDIT_BUNDLE.txt:1337: * It is unsafe to assume that an address for which this function returns
[codex:1222637] AUDIT_BUNDLE.txt:1391: * plain `call` is an unsafe replacement for a function call: use this
[codex:1222637] AUDIT_BUNDLE.txt:2158: * /// @custom:oz-upgrades-unsafe-allow constructor
[codex:1222637] AUDIT_BUNDLE.txt:2265: * It is unsafe to assume that an address for which this function returns
[codex:1222637] AUDIT_BUNDLE.txt:2319: * plain `call` is an unsafe replacement for a function call: use this
[codex:1222637] AUDIT_BUNDLE.txt:4922: // upper limit on the size of unsafe blocks over the p2p network. 120kb is chosen to ensure
[codex:1222637] AUDIT_BUNDLE.txt:5721: /// @custom:value UNSAFE_BLOCK_SIGNER Represents an update to the signer key for unsafe
[codex:1222637] AUDIT_BUNDLE.txt:5746: /// @notice Storage slot that the unsafe block signer is stored at.
[codex:1222637] AUDIT_BUNDLE.txt:5754: bytes32 public constant UNSAFE_BLOCK_SIGNER_SLOT = keccak256("systemconfig.unsafeblocksigner");
[codex:1222637] AUDIT_BUNDLE.txt:5844: _unsafeBlockSigner: address(0),
[codex:1222637] AUDIT_BUNDLE.txt:5873: /// @param _unsafeBlockSigner Initial unsafe block signer address.
[codex:1222637] AUDIT_BUNDLE.txt:5884: address _unsafeBlockSigner,
[codex:1222637] AUDIT_BUNDLE.txt:5900: Storage.setAddress(UNSAFE_BLOCK_SIGNER_SLOT, _unsafeBlockSigner);
[codex:1222637] AUDIT_BUNDLE.txt:5934: /// @notice High level getter for the unsafe block signer address.
[codex:1222637] AUDIT_BUNDLE.txt:5937: /// @return addr_ Address of the unsafe block signer.
[codex:1222637] AUDIT_BUNDLE.txt:5938: function unsafeBlockSigner() public view returns (address addr_) {
[codex:1222637] AUDIT_BUNDLE.txt:6028: /// @notice Updates the unsafe block signer address. Can only be called by the owner.
[codex:1222637] AUDIT_BUNDLE.txt:6029: /// @param _unsafeBlockSigner New unsafe block signer address.
[codex:1222637] AUDIT_BUNDLE.txt:6030: function setUnsafeBlockSigner(address _unsafeBlockSigner) external onlyOwner {
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Checking Predeploys library for issues**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Predeploys.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637]
[codex:1222637] /// @title Predeploys
[codex:1222637] /// @notice Contains constant addresses for protocol contracts that are pre-deployed to the L2 system.
[codex:1222637] // This excludes the preinstalls (non-protocol contracts).
[codex:1222637] library Predeploys {
[codex:1222637] /// @notice Number of predeploy-namespace addresses reserved for protocol usage.
[codex:1222637] uint256 internal constant PREDEPLOY_COUNT = 2048;
[codex:1222637]
[codex:1222637] /// @custom:legacy
[codex:1222637] /// @notice Address of the LegacyMessagePasser predeploy. Deprecate. Use the updated
[codex:1222637] /// L2ToL1MessagePasser contract instead.
[codex:1222637] address internal constant LEGACY_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000;
[codex:1222637]
[codex:1222637] /// @custom:legacy
[codex:1222637] /// @notice Address of the L1MessageSender predeploy. Deprecated. Use L2CrossDomainMessenger
[codex:1222637] /// or access tx.origin (or msg.sender) in a L1 to L2 transaction instead.
[codex:1222637] /// Not embedded into new OP-Stack chains.
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Evaluating token handling and external call safety**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Burn.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637]
[codex:1222637] /// @title Burn
[codex:1222637] /// @notice Utilities for burning stuff.
[codex:1222637] library Burn {
[codex:1222637] /// @notice Burns a given amount of ETH.
[codex:1222637] /// @param _amount Amount of ETH to burn.
[codex:1222637] function eth(uint256 _amount) internal {
[codex:1222637] new Burner{ value: _amount }();
[codex:1222637] }
[codex:1222637]
[codex:1222637] /// @notice Burns a given amount of gas.
[codex:1222637] /// @param _amount Amount of gas to burn.
[codex:1222637] function gas(uint256 _amount) internal view {
[codex:1222637] uint256 i = 0;
[codex:1222637] uint256 initialGas = gasleft();
[codex:1222637] while (initialGas - gasleft() < _amount) {
[codex:1222637] ++i;
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Analyzing potential contract vulnerabilities**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Storage.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637] for line in f:
[codex:1222637] if line.startswith('FILE: '):
[codex:1222637] if collect and not line.startswith(start):
[codex:1222637] break
[codex:1222637] collect = line.startswith(start)
[codex:1222637] continue
[codex:1222637] if collect:
[codex:1222637] lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637]
[codex:1222637] /// @title Storage
[codex:1222637] /// @notice Storage handles reading and writing to arbitary storage locations
[codex:1222637] library Storage {
[codex:1222637] /// @notice Returns an address stored in an arbitrary storage slot.
[codex:1222637] /// These storage slots decouple the storage layout from
[codex:1222637] /// solc's automation.
[codex:1222637] /// @param _slot The storage slot to retrieve the address from.
[codex:1222637] function getAddress(bytes32 _slot) internal view returns (address addr_) {
[codex:1222637] assembly {
[codex:1222637] addr_ := sload(_slot)
[codex:1222637] }
[codex:1222637] }
[codex:1222637]
[codex:1222637] /// @notice Stores an address in an arbitrary storage slot, `_slot`.
[codex:1222637] /// @param _slot The storage slot to store the address in.
[codex:1222637] /// @param _address The protocol version to store
[codex:1222637]
[codex:1222637] thinking
[codex:1222637] **Evaluating bridge contracts for vulnerabilities**
[codex:1222637] codex
[codex:1222637] {"no_findings":true,"summary":"No exploitable vulnerabilities found in the first‑party Solidity code within the specified focus areas. Residual risk: security depends on correct off‑chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).","findings":[]}
[codex:1222637] tokens used
[codex:1222637] 153,110
[codex:1222637] {"no_findings":true,"summary":"No exploitable vulnerabilities found in the first‑party Solidity code within the specified focus areas. Residual risk: security depends on correct off‑chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).","findings":[]}
{
"codex": {
"ran_at": "2025-12-28T17:18:14.216067+00:00",
"returncode": 0
},
"summary": "No exploitable vulnerabilities found in the first\u2011party Solidity code within the specified focus areas. Residual risk: security depends on correct off\u2011chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).",
"raw_final": {
"summary": "No exploitable vulnerabilities found in the first\u2011party Solidity code within the specified focus areas. Residual risk: security depends on correct off\u2011chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x01e7 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x663558a7 00000019: GT 0000001a: PUSH2 0x0102 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x9a2ac6d5 00000024: GT 00000025: PUSH2 0x0095 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xc89701a2 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xc89701a2 0000003a: EQ 0000003b: PUSH2 0x05de 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe11013dd 00000045: EQ 00000046: PUSH2 0x060b 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf851a440 00000050: EQ 00000051: PUSH2 0x061e 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf8c8765e 0000005b: EQ 0000005c: PUSH2 0x0645 0000005f: JUMPI 00000060: PUSH1 0x00 00000062: DUP1 00000063: REVERT 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x9a2ac6d5 0000006b: EQ 0000006c: PUSH2 0x0578 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xa9f9e675 00000076: EQ 00000077: PUSH2 0x058b 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xb1a1a882 00000081: EQ 00000082: PUSH2 0x05ab 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xbc474889 0000008c: EQ 0000008d: PUSH2 0x05be 00000090: JUMPI 00000091: PUSH1 0x00 00000093: DUP1 00000094: REVERT 00000095: JUMPDEST 00000096: DUP1 00000097: PUSH4 0x87087623 0000009c: GT 0000009d: PUSH2 0x00d1 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x87087623 000000a7: EQ 000000a8: PUSH2 0x04f5 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x8f601f66 000000b2: EQ 000000b3: PUSH2 0x0515 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x91c49bf8 000000bd: EQ 000000be: PUSH2 0x04aa 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x927ede2d 000000c8: EQ 000000c9: PUSH2 0x054d 000000cc: JUMPI 000000cd: PUSH1 0x00 000000cf: DUP1 000000d0: REVERT 000000d1: JUMPDEST 000000d2: DUP1 000000d3: PUSH4 0x663558a7 000000d8: EQ 000000d9: PUSH2 0x043d 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x66d5403c 000000e3: EQ 000000e4: PUSH2 0x0497 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x7f46ddb2 000000ee: EQ 000000ef: PUSH2 0x04aa 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x838b2520 000000f9: EQ 000000fa: PUSH2 0x04d5 000000fd: JUMPI 000000fe: PUSH1 0x00 00000100: DUP1 00000101: REVERT 00000102: JUMPDEST 00000103: DUP1 00000104: PUSH4 0x3fc8cef3 00000109: GT 0000010a: PUSH2 0x017a 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x54fd4d50 00000114: GT 00000115: PUSH2 0x0149 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x54fd4d50 0000011f: EQ 00000120: PUSH2 0x0387 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x58a997f6 0000012a: EQ 0000012b: PUSH2 0x03dd 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0x5c975abb 00000135: EQ 00000136: PUSH2 0x03fd 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0x5db42fca 00000140: EQ 00000141: PUSH2 0x041d 00000144: JUMPI 00000145: PUSH1 0x00 00000147: DUP1 00000148: REVERT 00000149: JUMPDEST 0000014a: DUP1 0000014b: PUSH4 0x3fc8cef3 00000150: EQ 00000151: PUSH2 0x0312 00000154: JUMPI 00000155: DUP1 00000156: PUSH4 0x401d4482 0000015b: EQ 0000015c: PUSH2 0x0327 0000015f: JUMPI 00000160: DUP1 00000161: PUSH4 0x4df61554 00000166: EQ 00000167: PUSH2 0x0347 0000016a: JUMPI 0000016b: DUP1 0000016c: PUSH4 0x540abf73 00000171: EQ 00000172: PUSH2 0x0367 00000175: JUMPI 00000176: PUSH1 0x00 00000178: DUP1 00000179: REVERT 0000017a: JUMPDEST 0000017b: DUP1 0000017c: PUSH4 0x33d7e2bd 00000181: GT 00000182: PUSH2 0x01b6 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0x33d7e2bd 0000018c: EQ 0000018d: PUSH2 0x024e 00000190: JUMPI 00000191: DUP1 00000192: PUSH4 0x35e80ab3 00000197: EQ 00000198: PUSH2 0x02a5 0000019b: JUMPI 0000019c: DUP1 0000019d: PUSH4 0x3b5459ad 000001a2: EQ 000001a3: PUSH2 0x02d2 000001a6: JUMPI 000001a7: DUP1 000001a8: PUSH4 0x3cb747bf 000001ad: EQ 000001ae: PUSH2 0x02e5 000001b1: JUMPI 000001b2: PUSH1 0x00 000001b4: DUP1 000001b5: REVERT 000001b6: JUMPDEST 000001b7: DUP1 000001b8: PUSH4 0x0166a07a 000001bd: EQ 000001be: PUSH2 0x01f3 000001c1: JUMPI 000001c2: DUP1 000001c3: PUSH4 0x09fc8843 000001c8: EQ 000001c9: PUSH2 0x0215 000001cc: JUMPI 000001cd: DUP1 000001ce: PUSH4 0x1532ec34 000001d3: EQ 000001d4: PUSH2 0x0228 000001d7: JUMPI 000001d8: DUP1 000001d9: PUSH4 0x1635f5fd 000001de: EQ 000001df: PUSH2 0x023b 000001e2: JUMPI 000001e3: PUSH1 0x00 000001e5: DUP1 000001e6: REVERT 000001e7: JUMPDEST 000001e8: CALLDATASIZE 000001e9: PUSH2 0x01ee 000001ec: JUMPI 000001ed: STOP 000001ee: JUMPDEST 000001ef: PUSH1 0x00 000001f1: DUP1 000001f2: REVERT 000001f3: JUMPDEST 000001f4: CALLVALUE 000001f5: DUP1 000001f6: ISZERO 000001f7: PUSH2 0x01ff 000001fa: JUMPI 000001fb: PUSH1 0x00 000001fd: DUP1 000001fe: REVERT 000001ff: JUMPDEST 00000200: POP 00000201: PUSH2 0x0213 00000204: PUSH2 0x020e 00000207: CALLDATASIZE 00000208: PUSH1 0x04 0000020a: PUSH2 0x3057 0000020d: JUMP 0000020e: JUMPDEST 0000020f: PUSH2 0x0665 00000212: JUMP 00000213: JUMPDEST 00000214: STOP 00000215: JUMPDEST 00000216: PUSH2 0x0213 00000219: PUSH2 0x0223 0000021c: CALLDATASIZE 0000021d: PUSH1 0x04 0000021f: PUSH2 0x3103 00000222: JUMP 00000223: JUMPDEST 00000224: PUSH2 0x09ef 00000227: JUMP 00000228: JUMPDEST 00000229: PUSH2 0x0213 0000022c: PUSH2 0x0236 0000022f: CALLDATASIZE 00000230: PUSH1 0x04 00000232: PUSH2 0x3156 00000235: JUMP 00000236: JUMPDEST 00000237: PUSH2 0x0ac6 0000023a: JUMP 0000023b: JUMPDEST 0000023c: PUSH2 0x0213 0000023f: PUSH2 0x0249 00000242: CALLDATASIZE 00000243: PUSH1 0x04 00000245: PUSH2 0x3156 00000248: JUMP 00000249: JUMPDEST 0000024a: PUSH2 0x0ada 0000024d: JUMP 0000024e: JUMPDEST 0000024f: CALLVALUE 00000250: DUP1 00000251: ISZERO 00000252: PUSH2 0x025a 00000255: JUMPI 00000256: PUSH1 0x00 00000258: DUP1 00000259: REVERT 0000025a: JUMPDEST 0000025b: POP 0000025c: PUSH1 0x33 0000025e: SLOAD 0000025f: PUSH2 0x027b 00000262: SWAP1 00000263: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000278: AND 00000279: DUP2 0000027a: JUMP 0000027b: JUMPDEST 0000027c: PUSH1 0x40 0000027e: MLOAD 0000027f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000294: SWAP1 00000295: SWAP2 00000296: AND 00000297: DUP2 00000298: MSTORE 00000299: PUSH1 0x20 0000029b: ADD 0000029c: JUMPDEST 0000029d: PUSH1 0x40 0000029f: MLOAD 000002a0: DUP1 000002a1: SWAP2 000002a2: SUB 000002a3: SWAP1 000002a4: RETURN 000002a5: JUMPDEST 000002a6: CALLVALUE 000002a7: DUP1 000002a8: ISZERO 000002a9: PUSH2 0x02b1 000002ac: JUMPI 000002ad: PUSH1 0x00 000002af: DUP1 000002b0: REVERT 000002b1: JUMPDEST 000002b2: POP 000002b3: PUSH1 0x32 000002b5: SLOAD 000002b6: PUSH2 0x027b 000002b9: SWAP1 000002ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002cf: AND 000002d0: DUP2 000002d1: JUMP 000002d2: JUMPDEST 000002d3: PUSH2 0x0213 000002d6: PUSH2 0x02e0 000002d9: CALLDATASIZE 000002da: PUSH1 0x04 000002dc: PUSH2 0x31c9 000002df: JUMP 000002e0: JUMPDEST 000002e1: PUSH2 0x0fa3 000002e4: JUMP 000002e5: JUMPDEST 000002e6: CALLVALUE 000002e7: DUP1 000002e8: ISZERO 000002e9: PUSH2 0x02f1 000002ec: JUMPI 000002ed: PUSH1 0x00 000002ef: DUP1 000002f0: REVERT 000002f1: JUMPDEST 000002f2: POP 000002f3: PUSH1 0x03 000002f5: SLOAD 000002f6: PUSH2 0x027b 000002f9: SWAP1 000002fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000030f: AND 00000310: DUP2 00000311: JUMP 00000312: JUMPDEST 00000313: CALLVALUE 00000314: DUP1 00000315: ISZERO 00000316: PUSH2 0x031e 00000319: JUMPI 0000031a: PUSH1 0x00 0000031c: DUP1 0000031d: REVERT 0000031e: JUMPDEST 0000031f: POP 00000320: PUSH2 0x027b 00000323: PUSH2 0x1041 00000326: JUMP 00000327: JUMPDEST 00000328: CALLVALUE 00000329: DUP1 0000032a: ISZERO 0000032b: PUSH2 0x0333 0000032e: JUMPI 0000032f: PUSH1 0x00 00000331: DUP1 00000332: REVERT 00000333: JUMPDEST 00000334: POP 00000335: PUSH2 0x0213 00000338: PUSH2 0x0342 0000033b: CALLDATASIZE 0000033c: PUSH1 0x04 0000033e: PUSH2 0x324c 00000341: JUMP 00000342: JUMPDEST 00000343: PUSH2 0x10f3 00000346: JUMP 00000347: JUMPDEST 00000348: CALLVALUE 00000349: DUP1 0000034a: ISZERO 0000034b: PUSH2 0x0353 0000034e: JUMPI 0000034f: PUSH1 0x00 00000351: DUP1 00000352: REVERT 00000353: JUMPDEST 00000354: POP 00000355: PUSH2 0x0213 00000358: PUSH2 0x0362 0000035b: CALLDATASIZE 0000035c: PUSH1 0x04 0000035e: PUSH2 0x3278 00000361: JUMP 00000362: JUMPDEST 00000363: PUSH2 0x1266 00000366: JUMP 00000367: JUMPDEST 00000368: CALLVALUE 00000369: DUP1 0000036a: ISZERO 0000036b: PUSH2 0x0373 0000036e: JUMPI 0000036f: PUSH1 0x00 00000371: DUP1 00000372: REVERT 00000373: JUMPDEST 00000374: POP 00000375: PUSH2 0x0213 00000378: PUSH2 0x0382 0000037b: CALLDATASIZE 0000037c: PUSH1 0x04 0000037e: PUSH2 0x3319 00000381: JUMP 00000382: JUMPDEST 00000383: PUSH2 0x12ee 00000386: JUMP 00000387: JUMPDEST 00000388: CALLVALUE 00000389: DUP1 0000038a: ISZERO 0000038b: PUSH2 0x0393 0000038e: JUMPI 0000038f: PUSH1 0x00 00000391: DUP1 00000392: REVERT 00000393: JUMPDEST 00000394: POP 00000395: PUSH2 0x03d0 00000398: PUSH1 0x40 0000039a: MLOAD 0000039b: DUP1 0000039c: PUSH1 0x40 0000039e: ADD 0000039f: PUSH1 0x40 000003a1: MSTORE 000003a2: DUP1 000003a3: PUSH1 0x05 000003a5: DUP2 000003a6: MSTORE 000003a7: PUSH1 0x20 000003a9: ADD 000003aa: PUSH32 0x322e322e30000000000000000000000000000000000000000000000000000000 000003cb: DUP2 000003cc: MSTORE 000003cd: POP 000003ce: DUP2 000003cf: JUMP 000003d0: JUMPDEST 000003d1: PUSH1 0x40 000003d3: MLOAD 000003d4: PUSH2 0x029c 000003d7: SWAP2 000003d8: SWAP1 000003d9: PUSH2 0x3406 000003dc: JUMP 000003dd: JUMPDEST 000003de: CALLVALUE 000003df: DUP1 000003e0: ISZERO 000003e1: PUSH2 0x03e9 000003e4: JUMPI 000003e5: PUSH1 0x00 000003e7: DUP1 000003e8: REVERT 000003e9: JUMPDEST 000003ea: POP 000003eb: PUSH2 0x0213 000003ee: PUSH2 0x03f8 000003f1: CALLDATASIZE 000003f2: PUSH1 0x04 000003f4: PUSH2 0x31c9 000003f7: JUMP 000003f8: JUMPDEST 000003f9: PUSH2 0x1333 000003fc: JUMP 000003fd: JUMPDEST 000003fe: CALLVALUE 000003ff: DUP1 00000400: ISZERO 00000401: PUSH2 0x0409 00000404: JUMPI 00000405: PUSH1 0x00 00000407: DUP1 00000408: REVERT 00000409: JUMPDEST 0000040a: POP 0000040b: PUSH1 0x00 0000040d: JUMPDEST 0000040e: PUSH1 0x40 00000410: MLOAD 00000411: SWAP1 00000412: ISZERO 00000413: ISZERO 00000414: DUP2 00000415: MSTORE 00000416: PUSH1 0x20 00000418: ADD 00000419: PUSH2 0x029c 0000041c: JUMP 0000041d: JUMPDEST 0000041e: CALLVALUE 0000041f: DUP1 00000420: ISZERO 00000421: PUSH2 0x0429 00000424: JUMPI 00000425: PUSH1 0x00 00000427: DUP1 00000428: REVERT 00000429: JUMPDEST 0000042a: POP 0000042b: PUSH2 0x0213 0000042e: PUSH2 0x0438 00000431: CALLDATASIZE 00000432: PUSH1 0x04 00000434: PUSH2 0x3448 00000437: JUMP 00000438: JUMPDEST 00000439: PUSH2 0x1407 0000043c: JUMP 0000043d: JUMPDEST 0000043e: CALLVALUE 0000043f: DUP1 00000440: ISZERO 00000441: PUSH2 0x0449 00000444: JUMPI 00000445: PUSH1 0x00 00000447: DUP1 00000448: REVERT 00000449: JUMPDEST 0000044a: POP 0000044b: PUSH2 0x0489 0000044e: PUSH2 0x0458 00000451: CALLDATASIZE 00000452: PUSH1 0x04 00000454: PUSH2 0x3575 00000457: JUMP 00000458: JUMPDEST 00000459: PUSH1 0x00 0000045b: SWAP1 0000045c: DUP2 0000045d: MSTORE 0000045e: PUSH32 0x3e64741321ec6f8a63baec2e6c5b136599c80e9cc6e66533b1c796ebf0d947bb 0000047f: PUSH1 0x20 00000481: MSTORE 00000482: PUSH1 0x40 00000484: SWAP1 00000485: KECCAK256 00000486: SLOAD 00000487: SWAP1 00000488: JUMP 00000489: JUMPDEST 0000048a: PUSH1 0x40 0000048c: MLOAD 0000048d: SWAP1 0000048e: DUP2 0000048f: MSTORE 00000490: PUSH1 0x20 00000492: ADD 00000493: PUSH2 0x029c 00000496: JUMP 00000497: JUMPDEST 00000498: PUSH2 0x0213 0000049b: PUSH2 0x04a5 0000049e: CALLDATASIZE 0000049f: PUSH1 0x04 000004a1: PUSH2 0x3319 000004a4: JUMP 000004a5: JUMPDEST 000004a6: PUSH2 0x1418 000004a9: JUMP 000004aa: JUMPDEST 000004ab: CALLVALUE 000004ac: DUP1 000004ad: ISZERO 000004ae: PUSH2 0x04b6 000004b1: JUMPI 000004b2: PUSH1 0x00 000004b4: DUP1 000004b5: REVERT 000004b6: JUMPDEST 000004b7: POP 000004b8: PUSH1 0x04 000004ba: SLOAD 000004bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004d0: AND 000004d1: PUSH2 0x027b 000004d4: JUMP 000004d5: JUMPDEST 000004d6: CALLVALUE 000004d7: DUP1 000004d8: ISZERO 000004d9: PUSH2 0x04e1 000004dc: JUMPI 000004dd: PUSH1 0x00 000004df: DUP1 000004e0: REVERT 000004e1: JUMPDEST 000004e2: POP 000004e3: PUSH2 0x0213 000004e6: PUSH2 0x04f0 000004e9: CALLDATASIZE 000004ea: PUSH1 0x04 000004ec: PUSH2 0x3319 000004ef: JUMP 000004f0: JUMPDEST 000004f1: PUSH2 0x1594 000004f4: JUMP 000004f5: JUMPDEST 000004f6: CALLVALUE 000004f7: DUP1 000004f8: ISZERO 000004f9: PUSH2 0x0501 000004fc: JUMPI 000004fd: PUSH1 0x00 000004ff: DUP1 00000500: REVERT 00000501: JUMPDEST 00000502: POP 00000503: PUSH2 0x0213 00000506: PUSH2 0x0510 00000509: CALLDATASIZE 0000050a: PUSH1 0x04 0000050c: PUSH2 0x31c9 0000050f: JUMP 00000510: JUMPDEST 00000511: PUSH2 0x15d9 00000514: JUMP 00000515: JUMPDEST 00000516: CALLVALUE 00000517: DUP1 00000518: ISZERO 00000519: PUSH2 0x0521 0000051c: JUMPI 0000051d: PUSH1 0x00 0000051f: DUP1 00000520: REVERT 00000521: JUMPDEST 00000522: POP 00000523: PUSH2 0x0489 00000526: PUSH2 0x0530 00000529: CALLDATASIZE 0000052a: PUSH1 0x04 0000052c: PUSH2 0x358e 0000052f: JUMP 00000530: JUMPDEST 00000531: PUSH1 0x02 00000533: PUSH1 0x20 00000535: SWAP1 00000536: DUP2 00000537: MSTORE 00000538: PUSH1 0x00 0000053a: SWAP3 0000053b: DUP4 0000053c: MSTORE 0000053d: PUSH1 0x40 0000053f: DUP1 00000540: DUP5 00000541: KECCAK256 00000542: SWAP1 00000543: SWAP2 00000544: MSTORE 00000545: SWAP1 00000546: DUP3 00000547: MSTORE 00000548: SWAP1 00000549: KECCAK256 0000054a: SLOAD 0000054b: DUP2 0000054c: JUMP 0000054d: JUMPDEST 0000054e: CALLVALUE 0000054f: DUP1 00000550: ISZERO 00000551: PUSH2 0x0559 00000554: JUMPI 00000555: PUSH1 0x00 00000557: DUP1 00000558: REVERT 00000559: JUMPDEST 0000055a: POP 0000055b: PUSH1 0x03 0000055d: SLOAD 0000055e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000573: AND 00000574: PUSH2 0x027b 00000577: JUMP 00000578: JUMPDEST 00000579: PUSH2 0x0213 0000057c: PUSH2 0x0586 0000057f: CALLDATASIZE 00000580: PUSH1 0x04 00000582: PUSH2 0x35c7 00000585: JUMP 00000586: JUMPDEST 00000587: PUSH2 0x16ad 0000058a: JUMP 0000058b: JUMPDEST 0000058c: CALLVALUE 0000058d: DUP1 0000058e: ISZERO 0000058f: PUSH2 0x0597 00000592: JUMPI 00000593: PUSH1 0x00 00000595: DUP1 00000596: REVERT 00000597: JUMPDEST 00000598: POP 00000599: PUSH2 0x0213 0000059c: PUSH2 0x05a6 0000059f: CALLDATASIZE 000005a0: PUSH1 0x04 000005a2: PUSH2 0x3057 000005a5: JUMP 000005a6: JUMPDEST 000005a7: PUSH2 0x16f5 000005aa: JUMP 000005ab: JUMPDEST 000005ac: PUSH2 0x0213 000005af: PUSH2 0x05b9 000005b2: CALLDATASIZE 000005b3: PUSH1 0x04 000005b5: PUSH2 0x3103 000005b8: JUMP 000005b9: JUMPDEST 000005ba: PUSH2 0x1704 000005bd: JUMP 000005be: JUMPDEST 000005bf: CALLVALUE 000005c0: DUP1 000005c1: ISZERO 000005c2: PUSH2 0x05ca 000005c5: JUMPI 000005c6: PUSH1 0x00 000005c8: DUP1 000005c9: REVERT 000005ca: JUMPDEST 000005cb: POP 000005cc: PUSH2 0x040d 000005cf: PUSH2 0x05d9 000005d2: CALLDATASIZE 000005d3: PUSH1 0x04 000005d5: PUSH2 0x3575 000005d8: JUMP 000005d9: JUMPDEST 000005da: PUSH2 0x17d5 000005dd: JUMP 000005de: JUMPDEST 000005df: CALLVALUE 000005e0: DUP1 000005e1: ISZERO 000005e2: PUSH2 0x05ea 000005e5: JUMPI 000005e6: PUSH1 0x00 000005e8: DUP1 000005e9: REVERT 000005ea: JUMPDEST 000005eb: POP 000005ec: PUSH1 0x04 000005ee: SLOAD 000005ef: PUSH2 0x027b 000005f2: SWAP1 000005f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000608: AND 00000609: DUP2 0000060a: JUMP 0000060b: JUMPDEST 0000060c: PUSH2 0x0213 0000060f: PUSH2 0x0619 00000612: CALLDATASIZE 00000613: PUSH1 0x04 00000615: PUSH2 0x35c7 00000618: JUMP 00000619: JUMPDEST 0000061a: PUSH2 0x185f 0000061d: JUMP 0000061e: JUMPDEST 0000061f: CALLVALUE 00000620: DUP1 00000621: ISZERO 00000622: PUSH2 0x062a 00000625: JUMPI 00000626: PUSH1 0x00 00000628: DUP1 00000629: REVERT 0000062a: JUMPDEST 0000062b: POP 0000062c: PUSH20 0xb2b01decb6cd36e7396b78d3744482627f22c525 00000641: PUSH2 0x027b 00000644: JUMP 00000645: JUMPDEST 00000646: CALLVALUE 00000647: DUP1 00000648: ISZERO 00000649: PUSH2 0x0651 0000064c: JUMPI 0000064d: PUSH1 0x00 0000064f: DUP1 00000650: REVERT 00000651: JUMPDEST 00000652: POP 00000653: PUSH2 0x0213 00000656: PUSH2 0x0660 00000659: CALLDATASIZE 0000065a: PUSH1 0x04 0000065c: PUSH2 0x362a 0000065f: JUMP 00000660: JUMPDEST 00000661: PUSH2 0x18a2 00000664: JUMP 00000665: JUMPDEST 00000666: PUSH1 0x03 00000668: SLOAD 00000669: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000067e: AND 0000067f: CALLER 00000680: EQ 00000681: DUP1 00000682: ISZERO 00000683: PUSH2 0x0738 00000686: JUMPI 00000687: POP 00000688: PUSH1 0x04 0000068a: DUP1 0000068b: SLOAD 0000068c: PUSH1 0x03 0000068e: SLOAD 0000068f: PUSH1 0x40 00000691: DUP1 00000692: MLOAD 00000693: PUSH32 0x6e296e4500000000000000000000000000000000000000000000000000000000 000006b4: DUP2 000006b5: MSTORE 000006b6: SWAP1 000006b7: MLOAD 000006b8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006cd: SWAP4 000006ce: DUP5 000006cf: AND 000006d0: SWAP5 000006d1: SWAP4 000006d2: SWAP1 000006d3: SWAP3 000006d4: AND 000006d5: SWAP3 000006d6: PUSH4 0x6e296e45 000006db: SWAP3 000006dc: DUP3 000006dd: DUP3 000006de: ADD 000006df: SWAP3 000006e0: PUSH1 0x20 000006e2: SWAP3 000006e3: SWAP1 000006e4: DUP3 000006e5: SWAP1 000006e6: SUB 000006e7: ADD 000006e8: DUP2 000006e9: DUP7 000006ea: GAS 000006eb: STATICCALL 000006ec: ISZERO 000006ed: DUP1 000006ee: ISZERO 000006ef: PUSH2 0x06fc 000006f2: JUMPI 000006f3: RETURNDATASIZE 000006f4: PUSH1 0x00 000006f6: DUP1 000006f7: RETURNDATACOPY 000006f8: RETURNDATASIZE 000006f9: PUSH1 0x00 000006fb: REVERT 000006fc: JUMPDEST 000006fd: POP 000006fe: POP 000006ff: POP 00000700: POP 00000701: PUSH1 0x40 00000703: MLOAD 00000704: RETURNDATASIZE 00000705: PUSH1 0x1f 00000707: NOT 00000708: PUSH1 0x1f 0000070a: DUP3 0000070b: ADD 0000070c: AND 0000070d: DUP3 0000070e: ADD 0000070f: DUP1 00000710: PUSH1 0x40 00000712: MSTORE 00000713: POP 00000714: DUP2 00000715: ADD 00000716: SWAP1 00000717: PUSH2 0x0720 0000071a: SWAP2 0000071b: SWAP1 0000071c: PUSH2 0x3686 0000071f: JUMP 00000720: JUMPDEST 00000721: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000736: AND 00000737: EQ 00000738: JUMPDEST 00000739: PUSH2 0x07c9 0000073c: JUMPI 0000073d: PUSH1 0x40 0000073f: MLOAD 00000740: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000761: DUP2 00000762: MSTORE 00000763: PUSH1 0x20 00000765: PUSH1 0x04 00000767: DUP3 00000768: ADD 00000769: MSTORE 0000076a: PUSH1 0x3e 0000076c: PUSH1 0x24 0000076e: DUP3 0000076f: ADD 00000770: MSTORE 00000771: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 00000792: PUSH1 0x44 00000794: DUP3 00000795: ADD 00000796: MSTORE 00000797: PUSH32 0x792062652063616c6c65642066726f6d20746865204c32206272696467650000 000007b8: PUSH1 0x64 000007ba: DUP3 000007bb: ADD 000007bc: MSTORE 000007bd: PUSH1 0x84 000007bf: ADD 000007c0: JUMPDEST 000007c1: PUSH1 0x40 000007c3: MLOAD 000007c4: DUP1 000007c5: SWAP2 000007c6: SUB 000007c7: SWAP1 000007c8: REVERT 000007c9: JUMPDEST 000007ca: PUSH2 0x07d2 000007cd: DUP8 000007ce: PUSH2 0x1aaa 000007d1: JUMP 000007d2: JUMPDEST 000007d3: ISZERO 000007d4: PUSH2 0x0920 000007d7: JUMPI 000007d8: PUSH2 0x07e1 000007db: DUP8 000007dc: DUP8 000007dd: PUSH2 0x1b0c 000007e0: JUMP 000007e1: JUMPDEST 000007e2: PUSH2 0x0893 000007e5: JUMPI 000007e6: PUSH1 0x40 000007e8: MLOAD 000007e9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000080a: DUP2 0000080b: MSTORE 0000080c: PUSH1 0x20 0000080e: PUSH1 0x04 00000810: DUP3 00000811: ADD 00000812: MSTORE 00000813: PUSH1 0x4a 00000815: PUSH1 0x24 00000817: DUP3 00000818: ADD 00000819: MSTORE 0000081a: PUSH32 0x5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b 0000083b: PUSH1 0x44 0000083d: DUP3 0000083e: ADD 0000083f: MSTORE 00000840: PUSH32 0x656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c 00000861: PUSH1 0x64 00000863: DUP3 00000864: ADD 00000865: MSTORE 00000866: PUSH32 0x6f63616c20746f6b656e00000000000000000000000000000000000000000000 00000887: PUSH1 0x84 00000889: DUP3 0000088a: ADD 0000088b: MSTORE 0000088c: PUSH1 0xa4 0000088e: ADD 0000088f: PUSH2 0x07c0 00000892: JUMP 00000893: JUMPDEST 00000894: PUSH1 0x40 00000896: MLOAD 00000897: PUSH32 0x40c10f1900000000000000000000000000000000000000000000000000000000 000008b8: DUP2 000008b9: MSTORE 000008ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008cf: DUP6 000008d0: DUP2 000008d1: AND 000008d2: PUSH1 0x04 000008d4: DUP4 000008d5: ADD 000008d6: MSTORE 000008d7: PUSH1 0x24 000008d9: DUP3 000008da: ADD 000008db: DUP6 000008dc: SWAP1 000008dd: MSTORE 000008de: DUP9 000008df: AND 000008e0: SWAP1 000008e1: PUSH4 0x40c10f19 000008e6: SWAP1 000008e7: PUSH1 0x44 000008e9: ADD 000008ea: PUSH1 0x00 000008ec: PUSH1 0x40 000008ee: MLOAD 000008ef: DUP1 000008f0: DUP4 000008f1: SUB 000008f2: DUP2 000008f3: PUSH1 0x00 000008f5: DUP8 000008f6: DUP1 000008f7: EXTCODESIZE 000008f8: ISZERO 000008f9: DUP1 000008fa: ISZERO 000008fb: PUSH2 0x0903 000008fe: JUMPI 000008ff: PUSH1 0x00 00000901: DUP1 00000902: REVERT 00000903: JUMPDEST 00000904: POP 00000905: GAS 00000906: CALL 00000907: ISZERO 00000908: DUP1 00000909: ISZERO 0000090a: PUSH2 0x0917 0000090d: JUMPI 0000090e: RETURNDATASIZE 0000090f: PUSH1 0x00 00000911: DUP1 00000912: RETURNDATACOPY 00000913: RETURNDATASIZE 00000914: PUSH1 0x00 00000916: REVERT 00000917: JUMPDEST 00000918: POP 00000919: POP 0000091a: POP 0000091b: POP 0000091c: PUSH2 0x09a2 0000091f: JUMP 00000920: JUMPDEST 00000921: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000936: DUP1 00000937: DUP9 00000938: AND 00000939: PUSH1 0x00 0000093b: SWAP1 0000093c: DUP2 0000093d: MSTORE 0000093e: PUSH1 0x02 00000940: PUSH1 0x20 00000942: SWAP1 00000943: DUP2 00000944: MSTORE 00000945: PUSH1 0x40 00000947: DUP1 00000948: DUP4 00000949: KECCAK256 0000094a: SWAP4 0000094b: DUP11 0000094c: AND 0000094d: DUP4 0000094e: MSTORE 0000094f: SWAP3 00000950: SWAP1 00000951: MSTORE 00000952: KECCAK256 00000953: SLOAD 00000954: PUSH2 0x095e 00000957: SWAP1 00000958: DUP5 00000959: SWAP1 0000095a: PUSH2 0x36a3 0000095d: JUMP 0000095e: JUMPDEST 0000095f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000974: DUP1 00000975: DUP10 00000976: AND 00000977: PUSH1 0x00 00000979: DUP2 0000097a: DUP2 0000097b: MSTORE 0000097c: PUSH1 0x02 0000097e: PUSH1 0x20 00000980: SWAP1 00000981: DUP2 00000982: MSTORE 00000983: PUSH1 0x40 00000985: DUP1 00000986: DUP4 00000987: KECCAK256 00000988: SWAP5 00000989: DUP13 0000098a: AND 0000098b: DUP4 0000098c: MSTORE 0000098d: SWAP4 0000098e: SWAP1 0000098f: MSTORE 00000990: SWAP2 00000991: SWAP1 00000992: SWAP2 00000993: KECCAK256 00000994: SWAP2 00000995: SWAP1 00000996: SWAP2 00000997: SSTORE 00000998: PUSH2 0x09a2 0000099b: SWAP1 0000099c: DUP6 0000099d: DUP6 0000099e: PUSH2 0x1c2c 000009a1: JUMP 000009a2: JUMPDEST 000009a3: PUSH2 0x09e6 000009a6: DUP8 000009a7: DUP8 000009a8: DUP8 000009a9: DUP8 000009aa: DUP8 000009ab: DUP8 000009ac: DUP8 000009ad: DUP1 000009ae: DUP1 000009af: PUSH1 0x1f 000009b1: ADD 000009b2: PUSH1 0x20 000009b4: DUP1 000009b5: SWAP2 000009b6: DIV 000009b7: MUL 000009b8: PUSH1 0x20 000009ba: ADD 000009bb: PUSH1 0x40 000009bd: MLOAD 000009be: SWAP1 000009bf: DUP2 000009c0: ADD 000009c1: PUSH1 0x40 000009c3: MSTORE 000009c4: DUP1 000009c5: SWAP4 000009c6: SWAP3 000009c7: SWAP2 000009c8: SWAP1 000009c9: DUP2 000009ca: DUP2 000009cb: MSTORE 000009cc: PUSH1 0x20 000009ce: ADD 000009cf: DUP4 000009d0: DUP4 000009d1: DUP1 000009d2: DUP3 000009d3: DUP5 000009d4: CALLDATACOPY 000009d5: PUSH1 0x00 000009d7: SWAP3 000009d8: ADD 000009d9: SWAP2 000009da: SWAP1 000009db: SWAP2 000009dc: MSTORE 000009dd: POP 000009de: PUSH2 0x1cb9 000009e1: SWAP3 000009e2: POP 000009e3: POP 000009e4: POP 000009e5: JUMP 000009e6: JUMPDEST 000009e7: POP 000009e8: POP 000009e9: POP 000009ea: POP 000009eb: POP 000009ec: POP 000009ed: POP 000009ee: JUMP 000009ef: JUMPDEST 000009f0: CALLER 000009f1: EXTCODESIZE 000009f2: ISZERO 000009f3: PUSH2 0x0a7e 000009f6: JUMPI 000009f7: PUSH1 0x40 000009f9: MLOAD 000009fa: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a1b: DUP2 00000a1c: MSTORE 00000a1d: PUSH1 0x20 00000a1f: PUSH1 0x04 00000a21: DUP3 00000a22: ADD 00000a23: MSTORE 00000a24: PUSH1 0x37 00000a26: PUSH1 0x24 00000a28: DUP3 00000a29: ADD 00000a2a: MSTORE 00000a2b: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 00000a4c: PUSH1 0x44 00000a4e: DUP3 00000a4f: ADD 00000a50: MSTORE 00000a51: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000 00000a72: PUSH1 0x64 00000a74: DUP3 00000a75: ADD 00000a76: MSTORE 00000a77: PUSH1 0x84 00000a79: ADD 00000a7a: PUSH2 0x07c0 00000a7d: JUMP 00000a7e: JUMPDEST 00000a7f: PUSH2 0x0ac1 00000a82: CALLER 00000a83: CALLER 00000a84: CALLVALUE 00000a85: DUP7 00000a86: DUP7 00000a87: DUP7 00000a88: DUP1 00000a89: DUP1 00000a8a: PUSH1 0x1f 00000a8c: ADD 00000a8d: PUSH1 0x20 00000a8f: DUP1 00000a90: SWAP2 00000a91: DIV 00000a92: MUL 00000a93: PUSH1 0x20 00000a95: ADD 00000a96: PUSH1 0x40 00000a98: MLOAD 00000a99: SWAP1 00000a9a: DUP2 00000a9b: ADD 00000a9c: PUSH1 0x40 00000a9e: MSTORE 00000a9f: DUP1 00000aa0: SWAP4 00000aa1: SWAP3 00000aa2: SWAP2 00000aa3: SWAP1 00000aa4: DUP2 00000aa5: DUP2 00000aa6: MSTORE 00000aa7: PUSH1 0x20 00000aa9: ADD 00000aaa: DUP4 00000aab: DUP4 00000aac: DUP1 00000aad: DUP3 00000aae: DUP5 00000aaf: CALLDATACOPY 00000ab0: PUSH1 0x00 00000ab2: SWAP3 00000ab3: ADD 00000ab4: SWAP2 00000ab5: SWAP1 00000ab6: SWAP2 00000ab7: MSTORE 00000ab8: POP 00000ab9: PUSH2 0x1d47 00000abc: SWAP3 00000abd: POP 00000abe: POP 00000abf: POP 00000ac0: JUMP 00000ac1: JUMPDEST 00000ac2: POP 00000ac3: POP 00000ac4: POP 00000ac5: JUMP 00000ac6: JUMPDEST 00000ac7: PUSH2 0x0ad3 00000aca: DUP6 00000acb: DUP6 00000acc: DUP6 00000acd: DUP6 00000ace: DUP6 00000acf: PUSH2 0x0ada 00000ad2: JUMP 00000ad3: JUMPDEST 00000ad4: POP 00000ad5: POP 00000ad6: POP 00000ad7: POP 00000ad8: POP 00000ad9: JUMP 00000ada: JUMPDEST 00000adb: PUSH1 0x03 00000add: SLOAD 00000ade: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000af3: AND 00000af4: CALLER 00000af5: EQ 00000af6: DUP1 00000af7: ISZERO 00000af8: PUSH2 0x0bad 00000afb: JUMPI 00000afc: POP 00000afd: PUSH1 0x04 00000aff: DUP1 00000b00: SLOAD 00000b01: PUSH1 0x03 00000b03: SLOAD 00000b04: PUSH1 0x40 00000b06: DUP1 00000b07: MLOAD 00000b08: PUSH32 0x6e296e4500000000000000000000000000000000000000000000000000000000 00000b29: DUP2 00000b2a: MSTORE 00000b2b: SWAP1 00000b2c: MLOAD 00000b2d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b42: SWAP4 00000b43: DUP5 00000b44: AND 00000b45: SWAP5 00000b46: SWAP4 00000b47: SWAP1 00000b48: SWAP3 00000b49: AND 00000b4a: SWAP3 00000b4b: PUSH4 0x6e296e45 00000b50: SWAP3 00000b51: DUP3 00000b52: DUP3 00000b53: ADD 00000b54: SWAP3 00000b55: PUSH1 0x20 00000b57: SWAP3 00000b58: SWAP1 00000b59: DUP3 00000b5a: SWAP1 00000b5b: SUB 00000b5c: ADD 00000b5d: DUP2 00000b5e: DUP7 00000b5f: GAS 00000b60: STATICCALL 00000b61: ISZERO 00000b62: DUP1 00000b63: ISZERO 00000b64: PUSH2 0x0b71 00000b67: JUMPI 00000b68: RETURNDATASIZE 00000b69: PUSH1 0x00 00000b6b: DUP1 00000b6c: RETURNDATACOPY 00000b6d: RETURNDATASIZE 00000b6e: PUSH1 0x00 00000b70: REVERT 00000b71: JUMPDEST 00000b72: POP 00000b73: POP 00000b74: POP 00000b75: POP 00000b76: PUSH1 0x40 00000b78: MLOAD 00000b79: RETURNDATASIZE 00000b7a: PUSH1 0x1f 00000b7c: NOT 00000b7d: PUSH1 0x1f 00000b7f: DUP3 00000b80: ADD 00000b81: AND 00000b82: DUP3 00000b83: ADD 00000b84: DUP1 00000b85: PUSH1 0x40 00000b87: MSTORE 00000b88: POP 00000b89: DUP2 00000b8a: ADD 00000b8b: SWAP1 00000b8c: PUSH2 0x0b95 00000b8f: SWAP2 00000b90: SWAP1 00000b91: PUSH2 0x3686 00000b94: JUMP 00000b95: JUMPDEST 00000b96: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bab: AND 00000bac: EQ 00000bad: JUMPDEST 00000bae: PUSH2 0x0c39 00000bb1: JUMPI 00000bb2: PUSH1 0x40 00000bb4: MLOAD 00000bb5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000bd6: DUP2 00000bd7: MSTORE 00000bd8: PUSH1 0x20 00000bda: PUSH1 0x04 00000bdc: DUP3 00000bdd: ADD 00000bde: MSTORE 00000bdf: PUSH1 0x3e 00000be1: PUSH1 0x24 00000be3: DUP3 00000be4: ADD 00000be5: MSTORE 00000be6: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 00000c07: PUSH1 0x44 00000c09: DUP3 00000c0a: ADD 00000c0b: MSTORE 00000c0c: PUSH32 0x792062652063616c6c65642066726f6d20746865204c32206272696467650000 00000c2d: PUSH1 0x64 00000c2f: DUP3 00000c30: ADD 00000c31: MSTORE 00000c32: PUSH1 0x84 00000c34: ADD 00000c35: PUSH2 0x07c0 00000c38: JUMP 00000c39: JUMPDEST 00000c3a: PUSH2 0x0c41 00000c3d: PUSH2 0x1fa6 00000c40: JUMP 00000c41: JUMPDEST 00000c42: ISZERO 00000c43: PUSH2 0x0cce 00000c46: JUMPI 00000c47: PUSH1 0x40 00000c49: MLOAD 00000c4a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000c6b: DUP2 00000c6c: MSTORE 00000c6d: PUSH1 0x20 00000c6f: PUSH1 0x04 00000c71: DUP3 00000c72: ADD 00000c73: MSTORE 00000c74: PUSH1 0x37 00000c76: PUSH1 0x24 00000c78: DUP3 00000c79: ADD 00000c7a: MSTORE 00000c7b: PUSH32 0x5374616e646172644272696467653a2063616e6e6f7420627269646765204554 00000c9c: PUSH1 0x44 00000c9e: DUP3 00000c9f: ADD 00000ca0: MSTORE 00000ca1: PUSH32 0x48207769746820637573746f6d2067617320746f6b656e000000000000000000 00000cc2: PUSH1 0x64 00000cc4: DUP3 00000cc5: ADD 00000cc6: MSTORE 00000cc7: PUSH1 0x84 00000cc9: ADD 00000cca: PUSH2 0x07c0 00000ccd: JUMP 00000cce: JUMPDEST 00000ccf: DUP3 00000cd0: CALLVALUE 00000cd1: EQ 00000cd2: PUSH2 0x0d5d 00000cd5: JUMPI 00000cd6: PUSH1 0x40 00000cd8: MLOAD 00000cd9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000cfa: DUP2 00000cfb: MSTORE 00000cfc: PUSH1 0x20 00000cfe: PUSH1 0x04 00000d00: DUP3 00000d01: ADD 00000d02: MSTORE 00000d03: PUSH1 0x3a 00000d05: PUSH1 0x24 00000d07: DUP3 00000d08: ADD 00000d09: MSTORE 00000d0a: PUSH32 0x5374616e646172644272696467653a20616d6f756e742073656e7420646f6573 00000d2b: PUSH1 0x44 00000d2d: DUP3 00000d2e: ADD 00000d2f: MSTORE 00000d30: PUSH32 0x206e6f74206d6174636820616d6f756e74207265717569726564000000000000 00000d51: PUSH1 0x64 00000d53: DUP3 00000d54: ADD 00000d55: MSTORE 00000d56: PUSH1 0x84 00000d58: ADD 00000d59: PUSH2 0x07c0 00000d5c: JUMP 00000d5d: JUMPDEST 00000d5e: ADDRESS 00000d5f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d74: DUP6 00000d75: AND 00000d76: SUB 00000d77: PUSH2 0x0e02 00000d7a: JUMPI 00000d7b: PUSH1 0x40 00000d7d: MLOAD 00000d7e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000d9f: DUP2 00000da0: MSTORE 00000da1: PUSH1 0x20 00000da3: PUSH1 0x04 00000da5: DUP3 00000da6: ADD 00000da7: MSTORE 00000da8: PUSH1 0x23 00000daa: PUSH1 0x24 00000dac: DUP3 00000dad: ADD 00000dae: MSTORE 00000daf: PUSH32 0x5374616e646172644272696467653a2063616e6e6f742073656e6420746f2073 00000dd0: PUSH1 0x44 00000dd2: DUP3 00000dd3: ADD 00000dd4: MSTORE 00000dd5: PUSH32 0x656c660000000000000000000000000000000000000000000000000000000000 00000df6: PUSH1 0x64 00000df8: DUP3 00000df9: ADD 00000dfa: MSTORE 00000dfb: PUSH1 0x84 00000dfd: ADD 00000dfe: PUSH2 0x07c0 00000e01: JUMP 00000e02: JUMPDEST 00000e03: PUSH1 0x03 00000e05: SLOAD 00000e06: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e1b: SWAP1 00000e1c: DUP2 00000e1d: AND 00000e1e: SWAP1 00000e1f: DUP6 00000e20: AND 00000e21: SUB 00000e22: PUSH2 0x0ead 00000e25: JUMPI 00000e26: PUSH1 0x40 00000e28: MLOAD 00000e29: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e4a: DUP2 00000e4b: MSTORE 00000e4c: PUSH1 0x20 00000e4e: PUSH1 0x04 00000e50: DUP3 00000e51: ADD 00000e52: MSTORE 00000e53: PUSH1 0x28 00000e55: PUSH1 0x24 00000e57: DUP3 00000e58: ADD 00000e59: MSTORE 00000e5a: PUSH32 0x5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d 00000e7b: PUSH1 0x44 00000e7d: DUP3 00000e7e: ADD 00000e7f: MSTORE 00000e80: PUSH32 0x657373656e676572000000000000000000000000000000000000000000000000 00000ea1: PUSH1 0x64 00000ea3: DUP3 00000ea4: ADD 00000ea5: MSTORE 00000ea6: PUSH1 0x84 00000ea8: ADD 00000ea9: PUSH2 0x07c0 00000eac: JUMP 00000ead: JUMPDEST 00000eae: PUSH2 0x0eef 00000eb1: DUP6 00000eb2: DUP6 00000eb3: DUP6 00000eb4: DUP6 00000eb5: DUP6 00000eb6: DUP1 00000eb7: DUP1 00000eb8: PUSH1 0x1f 00000eba: ADD 00000ebb: PUSH1 0x20 00000ebd: DUP1 00000ebe: SWAP2 00000ebf: DIV 00000ec0: MUL 00000ec1: PUSH1 0x20 00000ec3: ADD 00000ec4: PUSH1 0x40 00000ec6: MLOAD 00000ec7: SWAP1 00000ec8: DUP2 00000ec9: ADD 00000eca: PUSH1 0x40 00000ecc: MSTORE 00000ecd: DUP1 00000ece: SWAP4 00000ecf: SWAP3 00000ed0: SWAP2 00000ed1: SWAP1 00000ed2: DUP2 00000ed3: DUP2 00000ed4: MSTORE 00000ed5: PUSH1 0x20 00000ed7: ADD 00000ed8: DUP4 00000ed9: DUP4 00000eda: DUP1 00000edb: DUP3 00000edc: DUP5 00000edd: CALLDATACOPY 00000ede: PUSH1 0x00 00000ee0: SWAP3 00000ee1: ADD 00000ee2: SWAP2 00000ee3: SWAP1 00000ee4: SWAP2 00000ee5: MSTORE 00000ee6: POP 00000ee7: PUSH2 0x1fe5 00000eea: SWAP3 00000eeb: POP 00000eec: POP 00000eed: POP 00000eee: JUMP 00000eef: JUMPDEST 00000ef0: PUSH1 0x00 00000ef2: PUSH2 0x0f0c 00000ef5: DUP6 00000ef6: GAS 00000ef7: DUP7 00000ef8: PUSH1 0x40 00000efa: MLOAD 00000efb: DUP1 00000efc: PUSH1 0x20 00000efe: ADD 00000eff: PUSH1 0x40 00000f01: MSTORE 00000f02: DUP1 00000f03: PUSH1 0x00 00000f05: DUP2 00000f06: MSTORE 00000f07: POP 00000f08: PUSH2 0x2058 00000f0b: JUMP 00000f0c: JUMPDEST 00000f0d: SWAP1 00000f0e: POP 00000f0f: DUP1 00000f10: PUSH2 0x0f9b 00000f13: JUMPI 00000f14: PUSH1 0x40 00000f16: MLOAD 00000f17: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f38: DUP2 00000f39: MSTORE 00000f3a: PUSH1 0x20 00000f3c: PUSH1 0x04 00000f3e: DUP3 00000f3f: ADD 00000f40: MSTORE 00000f41: PUSH1 0x23 00000f43: PUSH1 0x24 00000f45: DUP3 00000f46: ADD 00000f47: MSTORE 00000f48: PUSH32 0x5374616e646172644272696467653a20455448207472616e7366657220666169 00000f69: PUSH1 0x44 00000f6b: DUP3 00000f6c: ADD 00000f6d: MSTORE 00000f6e: PUSH32 0x6c65640000000000000000000000000000000000000000000000000000000000 00000f8f: PUSH1 0x64 00000f91: DUP3 00000f92: ADD 00000f93: MSTORE 00000f94: PUSH1 0x84 00000f96: ADD 00000f97: PUSH2 0x07c0 00000f9a: JUMP 00000f9b: JUMPDEST 00000f9c: POP 00000f9d: POP 00000f9e: POP 00000f9f: POP 00000fa0: POP 00000fa1: POP 00000fa2: JUMP 00000fa3: JUMPDEST 00000fa4: CALLER 00000fa5: EXTCODESIZE 00000fa6: ISZERO 00000fa7: PUSH2 0x1032 00000faa: JUMPI 00000fab: PUSH1 0x40 00000fad: MLOAD 00000fae: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000fcf: DUP2 00000fd0: MSTORE 00000fd1: PUSH1 0x20 00000fd3: PUSH1 0x04 00000fd5: DUP3 00000fd6: ADD 00000fd7: MSTORE 00000fd8: PUSH1 0x37 00000fda: PUSH1 0x24 00000fdc: DUP3 00000fdd: ADD 00000fde: MSTORE 00000fdf: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 00001000: PUSH1 0x44 00001002: DUP3 00001003: ADD 00001004: MSTORE 00001005: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000 00001026: PUSH1 0x64 00001028: DUP3 00001029: ADD 0000102a: MSTORE 0000102b: PUSH1 0x84 0000102d: ADD 0000102e: PUSH2 0x07c0 00001031: JUMP 00001032: JUMPDEST 00001033: PUSH2 0x0f9b 00001036: DUP7 00001037: DUP7 00001038: CALLER 00001039: DUP8 0000103a: DUP8 0000103b: DUP8 0000103c: DUP8 0000103d: PUSH2 0x1418 00001040: JUMP 00001041: JUMPDEST 00001042: PUSH1 0x00 00001044: DUP1 00001045: CHAINID 00001046: PUSH1 0x01 00001048: SUB 00001049: PUSH2 0x1067 0000104c: JUMPI 0000104d: POP 0000104e: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00001063: SWAP2 00001064: SWAP1 00001065: POP 00001066: JUMP 00001067: JUMPDEST 00001068: CHAINID 00001069: PUSH3 0xaa36a7 0000106d: SUB 0000106e: PUSH2 0x108c 00001071: JUMPI 00001072: POP 00001073: PUSH20 0x7b79995e5f793a07bc00c21412e50ecae098e7f9 00001088: SWAP2 00001089: SWAP1 0000108a: POP 0000108b: JUMP 0000108c: JUMPDEST 0000108d: PUSH1 0x40 0000108f: MLOAD 00001090: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000010b1: DUP2 000010b2: MSTORE 000010b3: PUSH1 0x20 000010b5: PUSH1 0x04 000010b7: DUP3 000010b8: ADD 000010b9: MSTORE 000010ba: PUSH1 0x11 000010bc: PUSH1 0x24 000010be: DUP3 000010bf: ADD 000010c0: MSTORE 000010c1: PUSH32 0x556e737570706f7274656420636861696e000000000000000000000000000000 000010e2: PUSH1 0x44 000010e4: DUP3 000010e5: ADD 000010e6: MSTORE 000010e7: PUSH1 0x64 000010e9: ADD 000010ea: PUSH2 0x07c0 000010ed: JUMP 000010ee: JUMPDEST 000010ef: SWAP2 000010f0: SWAP1 000010f1: POP 000010f2: JUMP 000010f3: JUMPDEST 000010f4: CALLER 000010f5: PUSH20 0xb2b01decb6cd36e7396b78d3744482627f22c525 0000110a: EQ 0000110b: PUSH2 0x1196 0000110e: JUMPI 0000110f: PUSH1 0x40 00001111: MLOAD 00001112: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001133: DUP2 00001134: MSTORE 00001135: PUSH1 0x20 00001137: PUSH1 0x04 00001139: DUP3 0000113a: ADD 0000113b: MSTORE 0000113c: PUSH1 0x21 0000113e: PUSH1 0x24 00001140: DUP3 00001141: ADD 00001142: MSTORE 00001143: PUSH32 0x4f6e6c792061646d696e2063616e2063616c6c20746869732066756e6374696f 00001164: PUSH1 0x44 00001166: DUP3 00001167: ADD 00001168: MSTORE 00001169: PUSH32 0x6e00000000000000000000000000000000000000000000000000000000000000 0000118a: PUSH1 0x64 0000118c: DUP3 0000118d: ADD 0000118e: MSTORE 0000118f: PUSH1 0x84 00001191: ADD 00001192: PUSH2 0x07c0 00001195: JUMP 00001196: JUMPDEST 00001197: PUSH2 0x119e 0000119a: PUSH2 0x1041 0000119d: JUMP 0000119e: JUMPDEST 0000119f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011b4: AND 000011b5: PUSH4 0x2e1a7d4d 000011ba: DUP3 000011bb: PUSH1 0x40 000011bd: MLOAD 000011be: DUP3 000011bf: PUSH4 0xffffffff 000011c4: AND 000011c5: PUSH1 0xe0 000011c7: SHL 000011c8: DUP2 000011c9: MSTORE 000011ca: PUSH1 0x04 000011cc: ADD 000011cd: PUSH2 0x11d8 000011d0: SWAP2 000011d1: DUP2 000011d2: MSTORE 000011d3: PUSH1 0x20 000011d5: ADD 000011d6: SWAP1 000011d7: JUMP 000011d8: JUMPDEST 000011d9: PUSH1 0x00 000011db: PUSH1 0x40 000011dd: MLOAD 000011de: DUP1 000011df: DUP4 000011e0: SUB 000011e1: DUP2 000011e2: PUSH1 0x00 000011e4: DUP8 000011e5: DUP1 000011e6: EXTCODESIZE 000011e7: ISZERO 000011e8: DUP1 000011e9: ISZERO 000011ea: PUSH2 0x11f2 000011ed: JUMPI 000011ee: PUSH1 0x00 000011f0: DUP1 000011f1: REVERT 000011f2: JUMPDEST 000011f3: POP 000011f4: GAS 000011f5: CALL 000011f6: ISZERO 000011f7: DUP1 000011f8: ISZERO 000011f9: PUSH2 0x1206 000011fc: JUMPI 000011fd: RETURNDATASIZE 000011fe: PUSH1 0x00 00001200: DUP1 00001201: RETURNDATACOPY 00001202: RETURNDATASIZE 00001203: PUSH1 0x00 00001205: REVERT 00001206: JUMPDEST 00001207: POP 00001208: POP 00001209: POP 0000120a: POP 0000120b: DUP2 0000120c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001221: AND 00001222: PUSH4 0x8b4c40b0 00001227: DUP3 00001228: PUSH1 0x40 0000122a: MLOAD 0000122b: DUP3 0000122c: PUSH4 0xffffffff 00001231: AND 00001232: PUSH1 0xe0 00001234: SHL 00001235: DUP2 00001236: MSTORE 00001237: PUSH1 0x04 00001239: ADD 0000123a: PUSH1 0x00 0000123c: PUSH1 0x40 0000123e: MLOAD 0000123f: DUP1 00001240: DUP4 00001241: SUB 00001242: DUP2 00001243: DUP6 00001244: DUP9 00001245: DUP1 00001246: EXTCODESIZE 00001247: ISZERO 00001248: DUP1 00001249: ISZERO 0000124a: PUSH2 0x1252 0000124d: JUMPI 0000124e: PUSH1 0x00 00001250: DUP1 00001251: REVERT 00001252: JUMPDEST 00001253: POP 00001254: GAS 00001255: CALL 00001256: ISZERO 00001257: DUP1 00001258: ISZERO 00001259: PUSH2 0x09e6 0000125c: JUMPI 0000125d: RETURNDATASIZE 0000125e: PUSH1 0x00 00001260: DUP1 00001261: RETURNDATACOPY 00001262: RETURNDATASIZE 00001263: PUSH1 0x00 00001265: REVERT 00001266: JUMPDEST 00001267: PUSH1 0x40 00001269: MLOAD 0000126a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000128b: DUP2 0000128c: MSTORE 0000128d: PUSH1 0x20 0000128f: PUSH1 0x04 00001291: DUP3 00001292: ADD 00001293: MSTORE 00001294: PUSH1 0x31 00001296: PUSH1 0x24 00001298: DUP3 00001299: ADD 0000129a: MSTORE 0000129b: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 000012bc: PUSH1 0x44 000012be: DUP3 000012bf: ADD 000012c0: MSTORE 000012c1: PUSH32 0x792062652063616c6c6564206f6e204c32000000000000000000000000000000 000012e2: PUSH1 0x64 000012e4: DUP3 000012e5: ADD 000012e6: MSTORE 000012e7: PUSH1 0x84 000012e9: ADD 000012ea: PUSH2 0x07c0 000012ed: JUMP 000012ee: JUMPDEST 000012ef: PUSH2 0x09e6 000012f2: DUP8 000012f3: DUP8 000012f4: CALLER 000012f5: DUP9 000012f6: DUP9 000012f7: DUP9 000012f8: DUP9 000012f9: DUP9 000012fa: DUP1 000012fb: DUP1 000012fc: PUSH1 0x1f 000012fe: ADD 000012ff: PUSH1 0x20 00001301: DUP1 00001302: SWAP2 00001303: DIV 00001304: MUL 00001305: PUSH1 0x20 00001307: ADD 00001308: PUSH1 0x40 0000130a: MLOAD 0000130b: SWAP1 0000130c: DUP2 0000130d: ADD 0000130e: PUSH1 0x40 00001310: MSTORE 00001311: DUP1 00001312: SWAP4 00001313: SWAP3 00001314: SWAP2 00001315: SWAP1 00001316: DUP2 00001317: DUP2 00001318: MSTORE 00001319: PUSH1 0x20 0000131b: ADD 0000131c: DUP4 0000131d: DUP4 0000131e: DUP1 0000131f: DUP3 00001320: DUP5 00001321: CALLDATACOPY 00001322: PUSH1 0x00 00001324: SWAP3 00001325: ADD 00001326: SWAP2 00001327: SWAP1 00001328: SWAP2 00001329: MSTORE 0000132a: POP 0000132b: PUSH2 0x2070 0000132e: SWAP3 0000132f: POP 00001330: POP 00001331: POP 00001332: JUMP 00001333: JUMPDEST 00001334: CALLER 00001335: EXTCODESIZE 00001336: ISZERO 00001337: PUSH2 0x13c2 0000133a: JUMPI 0000133b: PUSH1 0x40 0000133d: MLOAD 0000133e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000135f: DUP2 00001360: MSTORE 00001361: PUSH1 0x20 00001363: PUSH1 0x04 00001365: DUP3 00001366: ADD 00001367: MSTORE 00001368: PUSH1 0x37 0000136a: PUSH1 0x24 0000136c: DUP3 0000136d: ADD 0000136e: MSTORE 0000136f: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 00001390: PUSH1 0x44 00001392: DUP3 00001393: ADD 00001394: MSTORE 00001395: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000 000013b6: PUSH1 0x64 000013b8: DUP3 000013b9: ADD 000013ba: MSTORE 000013bb: PUSH1 0x84 000013bd: ADD 000013be: PUSH2 0x07c0 000013c1: JUMP 000013c2: JUMPDEST 000013c3: PUSH2 0x0f9b 000013c6: DUP7 000013c7: DUP7 000013c8: CALLER 000013c9: CALLER 000013ca: DUP9 000013cb: DUP9 000013cc: DUP9 000013cd: DUP9 000013ce: DUP1 000013cf: DUP1 000013d0: PUSH1 0x1f 000013d2: ADD 000013d3: PUSH1 0x20 000013d5: DUP1 000013d6: SWAP2 000013d7: DIV 000013d8: MUL 000013d9: PUSH1 0x20 000013db: ADD 000013dc: PUSH1 0x40 000013de: MLOAD 000013df: SWAP1 000013e0: DUP2 000013e1: ADD 000013e2: PUSH1 0x40 000013e4: MSTORE 000013e5: DUP1 000013e6: SWAP4 000013e7: SWAP3 000013e8: SWAP2 000013e9: SWAP1 000013ea: DUP2 000013eb: DUP2 000013ec: MSTORE 000013ed: PUSH1 0x20 000013ef: ADD 000013f0: DUP4 000013f1: DUP4 000013f2: DUP1 000013f3: DUP3 000013f4: DUP5 000013f5: CALLDATACOPY 000013f6: PUSH1 0x00 000013f8: SWAP3 000013f9: ADD 000013fa: SWAP2 000013fb: SWAP1 000013fc: SWAP2 000013fd: MSTORE 000013fe: POP 000013ff: PUSH2 0x2083 00001402: SWAP3 00001403: POP 00001404: POP 00001405: POP 00001406: JUMP 00001407: JUMPDEST 00001408: PUSH2 0x09e6 0000140b: DUP8 0000140c: DUP8 0000140d: DUP8 0000140e: DUP8 0000140f: DUP8 00001410: DUP8 00001411: DUP8 00001412: PUSH1 0x00 00001414: PUSH2 0x2092 00001417: JUMP 00001418: JUMPDEST 00001419: DUP4 0000141a: CALLVALUE 0000141b: EQ 0000141c: PUSH2 0x1481 0000141f: JUMPI 00001420: PUSH1 0x40 00001422: MLOAD 00001423: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001444: DUP2 00001445: MSTORE 00001446: PUSH1 0x20 00001448: PUSH1 0x04 0000144a: DUP3 0000144b: ADD 0000144c: MSTORE 0000144d: PUSH1 0x0e 0000144f: PUSH1 0x24 00001451: DUP3 00001452: ADD 00001453: MSTORE 00001454: PUSH32 0x496e76616c696420616d6f756e74000000000000000000000000000000000000 00001475: PUSH1 0x44 00001477: DUP3 00001478: ADD 00001479: MSTORE 0000147a: PUSH1 0x64 0000147c: ADD 0000147d: PUSH2 0x07c0 00001480: JUMP 00001481: JUMPDEST 00001482: PUSH1 0x00 00001484: CALLVALUE 00001485: GT 00001486: PUSH2 0x14eb 00001489: JUMPI 0000148a: PUSH1 0x40 0000148c: MLOAD 0000148d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000014ae: DUP2 000014af: MSTORE 000014b0: PUSH1 0x20 000014b2: PUSH1 0x04 000014b4: DUP3 000014b5: ADD 000014b6: MSTORE 000014b7: PUSH1 0x0e 000014b9: PUSH1 0x24 000014bb: DUP3 000014bc: ADD 000014bd: MSTORE 000014be: PUSH32 0x496e76616c696420616d6f756e74000000000000000000000000000000000000 000014df: PUSH1 0x44 000014e1: DUP3 000014e2: ADD 000014e3: MSTORE 000014e4: PUSH1 0x64 000014e6: ADD 000014e7: PUSH2 0x07c0 000014ea: JUMP 000014eb: JUMPDEST 000014ec: DUP7 000014ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001502: AND 00001503: PUSH4 0xd0e30db0 00001508: DUP6 00001509: PUSH1 0x40 0000150b: MLOAD 0000150c: DUP3 0000150d: PUSH4 0xffffffff 00001512: AND 00001513: PUSH1 0xe0 00001515: SHL 00001516: DUP2 00001517: MSTORE 00001518: PUSH1 0x04 0000151a: ADD 0000151b: PUSH1 0x00 0000151d: PUSH1 0x40 0000151f: MLOAD 00001520: DUP1 00001521: DUP4 00001522: SUB 00001523: DUP2 00001524: DUP6 00001525: DUP9 00001526: DUP1 00001527: EXTCODESIZE 00001528: ISZERO 00001529: DUP1 0000152a: ISZERO 0000152b: PUSH2 0x1533 0000152e: JUMPI 0000152f: PUSH1 0x00 00001531: DUP1 00001532: REVERT 00001533: JUMPDEST 00001534: POP 00001535: GAS 00001536: CALL 00001537: ISZERO 00001538: DUP1 00001539: ISZERO 0000153a: PUSH2 0x1547 0000153d: JUMPI 0000153e: RETURNDATASIZE 0000153f: PUSH1 0x00 00001541: DUP1 00001542: RETURNDATACOPY 00001543: RETURNDATASIZE 00001544: PUSH1 0x00 00001546: REVERT 00001547: JUMPDEST 00001548: POP 00001549: POP 0000154a: POP 0000154b: POP 0000154c: POP 0000154d: PUSH2 0x09e6 00001550: DUP8 00001551: DUP8 00001552: CALLER 00001553: DUP9 00001554: DUP9 00001555: DUP9 00001556: DUP9 00001557: DUP9 00001558: DUP1 00001559: DUP1 0000155a: PUSH1 0x1f 0000155c: ADD 0000155d: PUSH1 0x20 0000155f: DUP1 00001560: SWAP2 00001561: DIV 00001562: MUL 00001563: PUSH1 0x20 00001565: ADD 00001566: PUSH1 0x40 00001568: MLOAD 00001569: SWAP1 0000156a: DUP2 0000156b: ADD 0000156c: PUSH1 0x40 0000156e: MSTORE 0000156f: DUP1 00001570: SWAP4 00001571: SWAP3 00001572: SWAP2 00001573: SWAP1 00001574: DUP2 00001575: DUP2 00001576: MSTORE 00001577: PUSH1 0x20 00001579: ADD 0000157a: DUP4 0000157b: DUP4 0000157c: DUP1 0000157d: DUP3 0000157e: DUP5 0000157f: CALLDATACOPY 00001580: PUSH1 0x00 00001582: SWAP3 00001583: ADD 00001584: DUP3 00001585: SWAP1 00001586: MSTORE 00001587: POP 00001588: SWAP3 00001589: POP 0000158a: PUSH1 0x01 0000158c: SWAP2 0000158d: POP 0000158e: PUSH2 0x2323 00001591: SWAP1 00001592: POP 00001593: JUMP 00001594: JUMPDEST 00001595: PUSH2 0x09e6 00001598: DUP8 00001599: DUP8 0000159a: CALLER 0000159b: DUP9 0000159c: DUP9 0000159d: DUP9 0000159e: DUP9 0000159f: DUP9 000015a0: DUP1 000015a1: DUP1 000015a2: PUSH1 0x1f 000015a4: ADD 000015a5: PUSH1 0x20 000015a7: DUP1 000015a8: SWAP2 000015a9: DIV 000015aa: MUL 000015ab: PUSH1 0x20 000015ad: ADD 000015ae: PUSH1 0x40 000015b0: MLOAD 000015b1: SWAP1 000015b2: DUP2 000015b3: ADD 000015b4: PUSH1 0x40 000015b6: MSTORE 000015b7: DUP1 000015b8: SWAP4 000015b9: SWAP3 000015ba: SWAP2 000015bb: SWAP1 000015bc: DUP2 000015bd: DUP2 000015be: MSTORE 000015bf: PUSH1 0x20 000015c1: ADD 000015c2: DUP4 000015c3: DUP4 000015c4: DUP1 000015c5: DUP3 000015c6: DUP5 000015c7: CALLDATACOPY 000015c8: PUSH1 0x00 000015ca: SWAP3 000015cb: ADD 000015cc: SWAP2 000015cd: SWAP1 000015ce: SWAP2 000015cf: MSTORE 000015d0: POP 000015d1: PUSH2 0x2083 000015d4: SWAP3 000015d5: POP 000015d6: POP 000015d7: POP 000015d8: JUMP 000015d9: JUMPDEST 000015da: CALLER 000015db: EXTCODESIZE 000015dc: ISZERO 000015dd: PUSH2 0x1668 000015e0: JUMPI 000015e1: PUSH1 0x40 000015e3: MLOAD 000015e4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001605: DUP2 00001606: MSTORE 00001607: PUSH1 0x20 00001609: PUSH1 0x04 0000160b: DUP3 0000160c: ADD 0000160d: MSTORE 0000160e: PUSH1 0x37 00001610: PUSH1 0x24 00001612: DUP3 00001613: ADD 00001614: MSTORE 00001615: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 00001636: PUSH1 0x44 00001638: DUP3 00001639: ADD 0000163a: MSTORE 0000163b: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000 0000165c: PUSH1 0x64 0000165e: DUP3 0000165f: ADD 00001660: MSTORE 00001661: PUSH1 0x84 00001663: ADD 00001664: PUSH2 0x07c0 00001667: JUMP 00001668: JUMPDEST 00001669: PUSH2 0x0f9b 0000166c: DUP7 0000166d: DUP7 0000166e: CALLER 0000166f: CALLER 00001670: DUP9 00001671: DUP9 00001672: DUP9 00001673: DUP9 00001674: DUP1 00001675: DUP1 00001676: PUSH1 0x1f 00001678: ADD 00001679: PUSH1 0x20 0000167b: DUP1 0000167c: SWAP2 0000167d: DIV 0000167e: MUL 0000167f: PUSH1 0x20 00001681: ADD 00001682: PUSH1 0x40 00001684: MLOAD 00001685: SWAP1 00001686: DUP2 00001687: ADD 00001688: PUSH1 0x40 0000168a: MSTORE 0000168b: DUP1 0000168c: SWAP4 0000168d: SWAP3 0000168e: SWAP2 0000168f: SWAP1 00001690: DUP2 00001691: DUP2 00001692: MSTORE 00001693: PUSH1 0x20 00001695: ADD 00001696: DUP4 00001697: DUP4 00001698: DUP1 00001699: DUP3 0000169a: DUP5 0000169b: CALLDATACOPY 0000169c: PUSH1 0x00 0000169e: SWAP3 0000169f: ADD 000016a0: SWAP2 000016a1: SWAP1 000016a2: SWAP2 000016a3: MSTORE 000016a4: POP 000016a5: PUSH2 0x2070 000016a8: SWAP3 000016a9: POP 000016aa: POP 000016ab: POP 000016ac: JUMP 000016ad: JUMPDEST 000016ae: PUSH2 0x16ef 000016b1: CALLER 000016b2: DUP6 000016b3: DUP6 000016b4: DUP6 000016b5: DUP6 000016b6: DUP1 000016b7: DUP1 000016b8: PUSH1 0x1f 000016ba: ADD 000016bb: PUSH1 0x20 000016bd: DUP1 000016be: SWAP2 000016bf: DIV 000016c0: MUL 000016c1: PUSH1 0x20 000016c3: ADD 000016c4: PUSH1 0x40 000016c6: MLOAD 000016c7: SWAP1 000016c8: DUP2 000016c9: ADD 000016ca: PUSH1 0x40 000016cc: MSTORE 000016cd: DUP1 000016ce: SWAP4 000016cf: SWAP3 000016d0: SWAP2 000016d1: SWAP1 000016d2: DUP2 000016d3: DUP2 000016d4: MSTORE 000016d5: PUSH1 0x20 000016d7: ADD 000016d8: DUP4 000016d9: DUP4 000016da: DUP1 000016db: DUP3 000016dc: DUP5 000016dd: CALLDATACOPY 000016de: PUSH1 0x00 000016e0: SWAP3 000016e1: ADD 000016e2: SWAP2 000016e3: SWAP1 000016e4: SWAP2 000016e5: MSTORE 000016e6: POP 000016e7: PUSH2 0x2385 000016ea: SWAP3 000016eb: POP 000016ec: POP 000016ed: POP 000016ee: JUMP 000016ef: JUMPDEST 000016f0: POP 000016f1: POP 000016f2: POP 000016f3: POP 000016f4: JUMP 000016f5: JUMPDEST 000016f6: PUSH2 0x09e6 000016f9: DUP8 000016fa: DUP8 000016fb: DUP8 000016fc: DUP8 000016fd: DUP8 000016fe: DUP8 000016ff: DUP8 00001700: PUSH2 0x0665 00001703: JUMP 00001704: JUMPDEST 00001705: CALLER 00001706: EXTCODESIZE 00001707: ISZERO 00001708: PUSH2 0x1793 0000170b: JUMPI 0000170c: PUSH1 0x40 0000170e: MLOAD 0000170f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001730: DUP2 00001731: MSTORE 00001732: PUSH1 0x20 00001734: PUSH1 0x04 00001736: DUP3 00001737: ADD 00001738: MSTORE 00001739: PUSH1 0x37 0000173b: PUSH1 0x24 0000173d: DUP3 0000173e: ADD 0000173f: MSTORE 00001740: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 00001761: PUSH1 0x44 00001763: DUP3 00001764: ADD 00001765: MSTORE 00001766: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000 00001787: PUSH1 0x64 00001789: DUP3 0000178a: ADD 0000178b: MSTORE 0000178c: PUSH1 0x84 0000178e: ADD 0000178f: PUSH2 0x07c0 00001792: JUMP 00001793: JUMPDEST 00001794: PUSH2 0x0ac1 00001797: CALLER 00001798: CALLER 00001799: DUP6 0000179a: DUP6 0000179b: DUP6 0000179c: DUP1 0000179d: DUP1 0000179e: PUSH1 0x1f 000017a0: ADD 000017a1: PUSH1 0x20 000017a3: DUP1 000017a4: SWAP2 000017a5: DIV 000017a6: MUL 000017a7: PUSH1 0x20 000017a9: ADD 000017aa: PUSH1 0x40 000017ac: MLOAD 000017ad: SWAP1 000017ae: DUP2 000017af: ADD 000017b0: PUSH1 0x40 000017b2: MSTORE 000017b3: DUP1 000017b4: SWAP4 000017b5: SWAP3 000017b6: SWAP2 000017b7: SWAP1 000017b8: DUP2 000017b9: DUP2 000017ba: MSTORE 000017bb: PUSH1 0x20 000017bd: ADD 000017be: DUP4 000017bf: DUP4 000017c0: DUP1 000017c1: DUP3 000017c2: DUP5 000017c3: CALLDATACOPY 000017c4: PUSH1 0x00 000017c6: SWAP3 000017c7: ADD 000017c8: SWAP2 000017c9: SWAP1 000017ca: SWAP2 000017cb: MSTORE 000017cc: POP 000017cd: PUSH2 0x2385 000017d0: SWAP3 000017d1: POP 000017d2: POP 000017d3: POP 000017d4: JUMP 000017d5: JUMPDEST 000017d6: PUSH1 0x00 000017d8: PUSH1 0x40 000017da: MLOAD 000017db: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000017fc: DUP2 000017fd: MSTORE 000017fe: PUSH1 0x20 00001800: PUSH1 0x04 00001802: DUP3 00001803: ADD 00001804: MSTORE 00001805: PUSH1 0x31 00001807: PUSH1 0x24 00001809: DUP3 0000180a: ADD 0000180b: MSTORE 0000180c: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c 0000182d: PUSH1 0x44 0000182f: DUP3 00001830: ADD 00001831: MSTORE 00001832: PUSH32 0x792062652063616c6c6564206f6e204c32000000000000000000000000000000 00001853: PUSH1 0x64 00001855: DUP3 00001856: ADD 00001857: MSTORE 00001858: PUSH1 0x84 0000185a: ADD 0000185b: PUSH2 0x07c0 0000185e: JUMP 0000185f: JUMPDEST 00001860: PUSH2 0x16ef 00001863: CALLER 00001864: DUP6 00001865: CALLVALUE 00001866: DUP7 00001867: DUP7 00001868: DUP7 00001869: DUP1 0000186a: DUP1 0000186b: PUSH1 0x1f 0000186d: ADD 0000186e: PUSH1 0x20 00001870: DUP1 00001871: SWAP2 00001872: DIV 00001873: MUL 00001874: PUSH1 0x20 00001876: ADD 00001877: PUSH1 0x40 00001879: MLOAD 0000187a: SWAP1 0000187b: DUP2 0000187c: ADD 0000187d: PUSH1 0x40 0000187f: MSTORE 00001880: DUP1 00001881: SWAP4 00001882: SWAP3 00001883: SWAP2 00001884: SWAP1 00001885: DUP2 00001886: DUP2 00001887: MSTORE 00001888: PUSH1 0x20 0000188a: ADD 0000188b: DUP4 0000188c: DUP4 0000188d: DUP1 0000188e: DUP3 0000188f: DUP5 00001890: CALLDATACOPY 00001891: PUSH1 0x00 00001893: SWAP3 00001894: ADD 00001895: SWAP2 00001896: SWAP1 00001897: SWAP2 00001898: MSTORE 00001899: POP 0000189a: PUSH2 0x1d47 0000189d: SWAP3 0000189e: POP 0000189f: POP 000018a0: POP 000018a1: JUMP 000018a2: JUMPDEST 000018a3: PUSH1 0x00 000018a5: SLOAD 000018a6: PUSH2 0x0100 000018a9: SWAP1 000018aa: DIV 000018ab: PUSH1 0xff 000018ad: AND 000018ae: ISZERO 000018af: DUP1 000018b0: DUP1 000018b1: ISZERO 000018b2: PUSH2 0x18c2 000018b5: JUMPI 000018b6: POP 000018b7: PUSH1 0x00 000018b9: SLOAD 000018ba: PUSH1 0x01 000018bc: PUSH1 0xff 000018be: SWAP1 000018bf: SWAP2 000018c0: AND 000018c1: LT 000018c2: JUMPDEST 000018c3: DUP1 000018c4: PUSH2 0x18dc 000018c7: JUMPI 000018c8: POP 000018c9: ADDRESS 000018ca: EXTCODESIZE 000018cb: ISZERO 000018cc: DUP1 000018cd: ISZERO 000018ce: PUSH2 0x18dc 000018d1: JUMPI 000018d2: POP 000018d3: PUSH1 0x00 000018d5: SLOAD 000018d6: PUSH1 0xff 000018d8: AND 000018d9: PUSH1 0x01 000018db: EQ 000018dc: JUMPDEST 000018dd: PUSH2 0x1968 000018e0: JUMPI 000018e1: PUSH1 0x40 000018e3: MLOAD 000018e4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001905: DUP2 00001906: MSTORE 00001907: PUSH1 0x20 00001909: PUSH1 0x04 0000190b: DUP3 0000190c: ADD 0000190d: MSTORE 0000190e: PUSH1 0x2e 00001910: PUSH1 0x24 00001912: DUP3 00001913: ADD 00001914: MSTORE 00001915: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00001936: PUSH1 0x44 00001938: DUP3 00001939: ADD 0000193a: MSTORE 0000193b: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000 0000195c: PUSH1 0x64 0000195e: DUP3 0000195f: ADD 00001960: MSTORE 00001961: PUSH1 0x84 00001963: ADD 00001964: PUSH2 0x07c0 00001967: JUMP 00001968: JUMPDEST 00001969: PUSH1 0x00 0000196b: DUP1 0000196c: SLOAD 0000196d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000198e: AND 0000198f: PUSH1 0x01 00001991: OR 00001992: SWAP1 00001993: SSTORE 00001994: DUP1 00001995: ISZERO 00001996: PUSH2 0x19c6 00001999: JUMPI 0000199a: PUSH1 0x00 0000199c: DUP1 0000199d: SLOAD 0000199e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 000019bf: AND 000019c0: PUSH2 0x0100 000019c3: OR 000019c4: SWAP1 000019c5: SSTORE 000019c6: JUMPDEST 000019c7: PUSH1 0x32 000019c9: DUP1 000019ca: SLOAD 000019cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019e0: DUP1 000019e1: DUP8 000019e2: AND 000019e3: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001a04: SWAP3 00001a05: DUP4 00001a06: AND 00001a07: OR 00001a08: SWAP1 00001a09: SWAP3 00001a0a: SSTORE 00001a0b: PUSH1 0x33 00001a0d: DUP1 00001a0e: SLOAD 00001a0f: SWAP3 00001a10: DUP7 00001a11: AND 00001a12: SWAP3 00001a13: SWAP1 00001a14: SWAP2 00001a15: AND 00001a16: SWAP2 00001a17: SWAP1 00001a18: SWAP2 00001a19: OR 00001a1a: SWAP1 00001a1b: SSTORE 00001a1c: PUSH2 0x1a25 00001a1f: DUP6 00001a20: DUP4 00001a21: PUSH2 0x2392 00001a24: JUMP 00001a25: JUMPDEST 00001a26: DUP1 00001a27: ISZERO 00001a28: PUSH2 0x0ad3 00001a2b: JUMPI 00001a2c: PUSH1 0x00 00001a2e: DUP1 00001a2f: SLOAD 00001a30: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 00001a51: AND 00001a52: SWAP1 00001a53: SSTORE 00001a54: PUSH1 0x40 00001a56: MLOAD 00001a57: PUSH1 0x01 00001a59: DUP2 00001a5a: MSTORE 00001a5b: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 00001a7c: SWAP1 00001a7d: PUSH1 0x20 00001a7f: ADD 00001a80: PUSH1 0x40 00001a82: MLOAD 00001a83: DUP1 00001a84: SWAP2 00001a85: SUB 00001a86: SWAP1 00001a87: LOG1 00001a88: POP 00001a89: POP 00001a8a: POP 00001a8b: POP 00001a8c: POP 00001a8d: JUMP 00001a8e: JUMPDEST 00001a8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001aa4: AND 00001aa5: EXTCODESIZE 00001aa6: ISZERO 00001aa7: ISZERO 00001aa8: SWAP1 00001aa9: JUMP 00001aaa: JUMPDEST 00001aab: PUSH1 0x00 00001aad: PUSH2 0x1ad6 00001ab0: DUP3 00001ab1: PUSH32 0x1d1d8b6300000000000000000000000000000000000000000000000000000000 00001ad2: PUSH2 0x247c 00001ad5: JUMP 00001ad6: JUMPDEST 00001ad7: DUP1 00001ad8: PUSH2 0x1b06 00001adb: JUMPI 00001adc: POP 00001add: PUSH2 0x1b06 00001ae0: DUP3 00001ae1: PUSH32 0xec4fc8e300000000000000000000000000000000000000000000000000000000 00001b02: PUSH2 0x247c 00001b05: JUMP 00001b06: JUMPDEST 00001b07: SWAP3 00001b08: SWAP2 00001b09: POP 00001b0a: POP 00001b0b: JUMP 00001b0c: JUMPDEST 00001b0d: PUSH1 0x00 00001b0f: PUSH2 0x1b38 00001b12: DUP4 00001b13: PUSH32 0x1d1d8b6300000000000000000000000000000000000000000000000000000000 00001b34: PUSH2 0x247c 00001b37: JUMP 00001b38: JUMPDEST 00001b39: ISZERO 00001b3a: PUSH2 0x1be1 00001b3d: JUMPI 00001b3e: DUP3 00001b3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b54: AND 00001b55: PUSH4 0xc01e1bd6 00001b5a: PUSH1 0x40 00001b5c: MLOAD 00001b5d: DUP2 00001b5e: PUSH4 0xffffffff 00001b63: AND 00001b64: PUSH1 0xe0 00001b66: SHL 00001b67: DUP2 00001b68: MSTORE 00001b69: PUSH1 0x04 00001b6b: ADD 00001b6c: PUSH1 0x20 00001b6e: PUSH1 0x40 00001b70: MLOAD 00001b71: DUP1 00001b72: DUP4 00001b73: SUB 00001b74: DUP2 00001b75: DUP7 00001b76: GAS 00001b77: STATICCALL 00001b78: ISZERO 00001b79: DUP1 00001b7a: ISZERO 00001b7b: PUSH2 0x1b88 00001b7e: JUMPI 00001b7f: RETURNDATASIZE 00001b80: PUSH1 0x00 00001b82: DUP1 00001b83: RETURNDATACOPY 00001b84: RETURNDATASIZE 00001b85: PUSH1 0x00 00001b87: REVERT 00001b88: JUMPDEST 00001b89: POP 00001b8a: POP 00001b8b: POP 00001b8c: POP 00001b8d: PUSH1 0x40 00001b8f: MLOAD 00001b90: RETURNDATASIZE 00001b91: PUSH1 0x1f 00001b93: NOT 00001b94: PUSH1 0x1f 00001b96: DUP3 00001b97: ADD 00001b98: AND 00001b99: DUP3 00001b9a: ADD 00001b9b: DUP1 00001b9c: PUSH1 0x40 00001b9e: MSTORE 00001b9f: POP 00001ba0: DUP2 00001ba1: ADD 00001ba2: SWAP1 00001ba3: PUSH2 0x1bac 00001ba6: SWAP2 00001ba7: SWAP1 00001ba8: PUSH2 0x3686 00001bab: JUMP 00001bac: JUMPDEST 00001bad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bc2: AND 00001bc3: DUP3 00001bc4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bd9: AND 00001bda: EQ 00001bdb: SWAP1 00001bdc: POP 00001bdd: PUSH2 0x1b06 00001be0: JUMP 00001be1: JUMPDEST 00001be2: DUP3 00001be3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bf8: AND 00001bf9: PUSH4 0xd6c0b2c4 00001bfe: PUSH1 0x40 00001c00: MLOAD 00001c01: DUP2 00001c02: PUSH4 0xffffffff 00001c07: AND 00001c08: PUSH1 0xe0 00001c0a: SHL 00001c0b: DUP2 00001c0c: MSTORE 00001c0d: PUSH1 0x04 00001c0f: ADD 00001c10: PUSH1 0x20 00001c12: PUSH1 0x40 00001c14: MLOAD 00001c15: DUP1 00001c16: DUP4 00001c17: SUB 00001c18: DUP2 00001c19: DUP7 00001c1a: GAS 00001c1b: STATICCALL 00001c1c: ISZERO 00001c1d: DUP1 00001c1e: ISZERO 00001c1f: PUSH2 0x1b88 00001c22: JUMPI 00001c23: RETURNDATASIZE 00001c24: PUSH1 0x00 00001c26: DUP1 00001c27: RETURNDATACOPY 00001c28: RETURNDATASIZE 00001c29: PUSH1 0x00 00001c2b: REVERT 00001c2c: JUMPDEST 00001c2d: PUSH1 0x40 00001c2f: DUP1 00001c30: MLOAD 00001c31: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c46: DUP5 00001c47: AND 00001c48: PUSH1 0x24 00001c4a: DUP3 00001c4b: ADD 00001c4c: MSTORE 00001c4d: PUSH1 0x44 00001c4f: DUP1 00001c50: DUP3 00001c51: ADD 00001c52: DUP5 00001c53: SWAP1 00001c54: MSTORE 00001c55: DUP3 00001c56: MLOAD 00001c57: DUP1 00001c58: DUP4 00001c59: SUB 00001c5a: SWAP1 00001c5b: SWAP2 00001c5c: ADD 00001c5d: DUP2 00001c5e: MSTORE 00001c5f: PUSH1 0x64 00001c61: SWAP1 00001c62: SWAP2 00001c63: ADD 00001c64: SWAP1 00001c65: SWAP2 00001c66: MSTORE 00001c67: PUSH1 0x20 00001c69: DUP2 00001c6a: ADD 00001c6b: DUP1 00001c6c: MLOAD 00001c6d: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001c8a: AND 00001c8b: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001cac: OR 00001cad: SWAP1 00001cae: MSTORE 00001caf: PUSH2 0x0ac1 00001cb2: SWAP1 00001cb3: DUP5 00001cb4: SWAP1 00001cb5: PUSH2 0x249f 00001cb8: JUMP 00001cb9: JUMPDEST 00001cba: DUP4 00001cbb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001cd0: AND 00001cd1: DUP6 00001cd2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ce7: AND 00001ce8: DUP8 00001ce9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001cfe: AND 00001cff: PUSH32 0x3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3 00001d20: DUP7 00001d21: DUP7 00001d22: DUP7 00001d23: PUSH1 0x40 00001d25: MLOAD 00001d26: PUSH2 0x1d31 00001d29: SWAP4 00001d2a: SWAP3 00001d2b: SWAP2 00001d2c: SWAP1 00001d2d: PUSH2 0x36e1 00001d30: JUMP 00001d31: JUMPDEST 00001d32: PUSH1 0x40 00001d34: MLOAD 00001d35: DUP1 00001d36: SWAP2 00001d37: SUB 00001d38: SWAP1 00001d39: LOG4 00001d3a: PUSH2 0x0f9b 00001d3d: DUP7 00001d3e: DUP7 00001d3f: DUP7 00001d40: DUP7 00001d41: DUP7 00001d42: DUP7 00001d43: PUSH2 0x25ab 00001d46: JUMP 00001d47: JUMPDEST 00001d48: PUSH2 0x1d4f 00001d4b: PUSH2 0x1fa6 00001d4e: JUMP 00001d4f: JUMPDEST 00001d50: ISZERO 00001d51: PUSH2 0x1ddc 00001d54: JUMPI 00001d55: PUSH1 0x40 00001d57: MLOAD 00001d58: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001d79: DUP2 00001d7a: MSTORE 00001d7b: PUSH1 0x20 00001d7d: PUSH1 0x04 00001d7f: DUP3 00001d80: ADD 00001d81: MSTORE 00001d82: PUSH1 0x37 00001d84: PUSH1 0x24 00001d86: DUP3 00001d87: ADD 00001d88: MSTORE 00001d89: PUSH32 0x5374616e646172644272696467653a2063616e6e6f7420627269646765204554 00001daa: PUSH1 0x44 00001dac: DUP3 00001dad: ADD 00001dae: MSTORE 00001daf: PUSH32 0x48207769746820637573746f6d2067617320746f6b656e000000000000000000 00001dd0: PUSH1 0x64 00001dd2: DUP3 00001dd3: ADD 00001dd4: MSTORE 00001dd5: PUSH1 0x84 00001dd7: ADD 00001dd8: PUSH2 0x07c0 00001ddb: JUMP 00001ddc: JUMPDEST 00001ddd: DUP3 00001dde: CALLVALUE 00001ddf: EQ 00001de0: PUSH2 0x1e6b 00001de3: JUMPI 00001de4: PUSH1 0x40 00001de6: MLOAD 00001de7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001e08: DUP2 00001e09: MSTORE 00001e0a: PUSH1 0x20 00001e0c: PUSH1 0x04 00001e0e: DUP3 00001e0f: ADD 00001e10: MSTORE 00001e11: PUSH1 0x3e 00001e13: PUSH1 0x24 00001e15: DUP3 00001e16: ADD 00001e17: MSTORE 00001e18: PUSH32 0x5374616e646172644272696467653a206272696467696e6720455448206d7573 00001e39: PUSH1 0x44 00001e3b: DUP3 00001e3c: ADD 00001e3d: MSTORE 00001e3e: PUSH32 0x7420696e636c7564652073756666696369656e74204554482076616c75650000 00001e5f: PUSH1 0x64 00001e61: DUP3 00001e62: ADD 00001e63: MSTORE 00001e64: PUSH1 0x84 00001e66: ADD 00001e67: PUSH2 0x07c0 00001e6a: JUMP 00001e6b: JUMPDEST 00001e6c: PUSH2 0x1e77 00001e6f: DUP6 00001e70: DUP6 00001e71: DUP6 00001e72: DUP5 00001e73: PUSH2 0x2633 00001e76: JUMP 00001e77: JUMPDEST 00001e78: PUSH1 0x03 00001e7a: SLOAD 00001e7b: PUSH1 0x04 00001e7d: SLOAD 00001e7e: PUSH1 0x40 00001e80: MLOAD 00001e81: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e96: SWAP3 00001e97: DUP4 00001e98: AND 00001e99: SWAP3 00001e9a: PUSH4 0x3dbb202b 00001e9f: SWAP3 00001ea0: DUP8 00001ea1: SWAP3 00001ea2: SWAP2 00001ea3: AND 00001ea4: SWAP1 00001ea5: PUSH32 0x1635f5fd00000000000000000000000000000000000000000000000000000000 00001ec6: SWAP1 00001ec7: PUSH2 0x1eda 00001eca: SWAP1 00001ecb: DUP12 00001ecc: SWAP1 00001ecd: DUP12 00001ece: SWAP1 00001ecf: DUP7 00001ed0: SWAP1 00001ed1: DUP11 00001ed2: SWAP1 00001ed3: PUSH1 0x24 00001ed5: ADD 00001ed6: PUSH2 0x371f 00001ed9: JUMP 00001eda: JUMPDEST 00001edb: PUSH1 0x40 00001edd: DUP1 00001ede: MLOAD 00001edf: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00001f00: DUP2 00001f01: DUP5 00001f02: SUB 00001f03: ADD 00001f04: DUP2 00001f05: MSTORE 00001f06: SWAP2 00001f07: DUP2 00001f08: MSTORE 00001f09: PUSH1 0x20 00001f0b: DUP3 00001f0c: ADD 00001f0d: DUP1 00001f0e: MLOAD 00001f0f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001f2c: AND 00001f2d: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00001f4e: SWAP5 00001f4f: DUP6 00001f50: AND 00001f51: OR 00001f52: SWAP1 00001f53: MSTORE 00001f54: MLOAD 00001f55: PUSH1 0xe0 00001f57: DUP7 00001f58: SWAP1 00001f59: SHL 00001f5a: SWAP1 00001f5b: SWAP3 00001f5c: AND 00001f5d: DUP3 00001f5e: MSTORE 00001f5f: PUSH2 0x1f6d 00001f62: SWAP3 00001f63: SWAP2 00001f64: DUP9 00001f65: SWAP1 00001f66: PUSH1 0x04 00001f68: ADD 00001f69: PUSH2 0x3768 00001f6c: JUMP 00001f6d: JUMPDEST 00001f6e: PUSH1 0x00 00001f70: PUSH1 0x40 00001f72: MLOAD 00001f73: DUP1 00001f74: DUP4 00001f75: SUB 00001f76: DUP2 00001f77: DUP6 00001f78: DUP9 00001f79: DUP1 00001f7a: EXTCODESIZE 00001f7b: ISZERO 00001f7c: DUP1 00001f7d: ISZERO 00001f7e: PUSH2 0x1f86 00001f81: JUMPI 00001f82: PUSH1 0x00 00001f84: DUP1 00001f85: REVERT 00001f86: JUMPDEST 00001f87: POP 00001f88: GAS 00001f89: CALL 00001f8a: ISZERO 00001f8b: DUP1 00001f8c: ISZERO 00001f8d: PUSH2 0x1f9a 00001f90: JUMPI 00001f91: RETURNDATASIZE 00001f92: PUSH1 0x00 00001f94: DUP1 00001f95: RETURNDATACOPY 00001f96: RETURNDATASIZE 00001f97: PUSH1 0x00 00001f99: REVERT 00001f9a: JUMPDEST 00001f9b: POP 00001f9c: POP 00001f9d: POP 00001f9e: POP 00001f9f: POP 00001fa0: POP 00001fa1: POP 00001fa2: POP 00001fa3: POP 00001fa4: POP 00001fa5: JUMP 00001fa6: JUMPDEST 00001fa7: PUSH1 0x00 00001fa9: DUP1 00001faa: PUSH2 0x1fb1 00001fad: PUSH2 0x26a6 00001fb0: JUMP 00001fb1: JUMPDEST 00001fb2: POP 00001fb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fc8: AND 00001fc9: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 00001fde: EQ 00001fdf: ISZERO 00001fe0: SWAP3 00001fe1: SWAP2 00001fe2: POP 00001fe3: POP 00001fe4: JUMP 00001fe5: JUMPDEST 00001fe6: DUP3 00001fe7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ffc: AND 00001ffd: DUP5 00001ffe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002013: AND 00002014: PUSH32 0x2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e631 00002035: DUP5 00002036: DUP5 00002037: PUSH1 0x40 00002039: MLOAD 0000203a: PUSH2 0x2044 0000203d: SWAP3 0000203e: SWAP2 0000203f: SWAP1 00002040: PUSH2 0x37ad 00002043: JUMP 00002044: JUMPDEST 00002045: PUSH1 0x40 00002047: MLOAD 00002048: DUP1 00002049: SWAP2 0000204a: SUB 0000204b: SWAP1 0000204c: LOG3 0000204d: PUSH2 0x16ef 00002050: DUP5 00002051: DUP5 00002052: DUP5 00002053: DUP5 00002054: PUSH2 0x2743 00002057: JUMP 00002058: JUMPDEST 00002059: PUSH1 0x00 0000205b: DUP1 0000205c: PUSH1 0x00 0000205e: DUP4 0000205f: MLOAD 00002060: PUSH1 0x20 00002062: DUP6 00002063: ADD 00002064: DUP7 00002065: DUP10 00002066: DUP10 00002067: CALL 00002068: SWAP6 00002069: SWAP5 0000206a: POP 0000206b: POP 0000206c: POP 0000206d: POP 0000206e: POP 0000206f: JUMP 00002070: JUMPDEST 00002071: PUSH2 0x09e6 00002074: DUP8 00002075: DUP8 00002076: DUP8 00002077: DUP8 00002078: DUP8 00002079: DUP8 0000207a: DUP8 0000207b: PUSH1 0x01 0000207d: PUSH1 0x00 0000207f: PUSH2 0x2323 00002082: JUMP 00002083: JUMPDEST 00002084: PUSH2 0x09e6 00002087: DUP8 00002088: DUP8 00002089: DUP8 0000208a: DUP8 0000208b: DUP8 0000208c: DUP8 0000208d: DUP8 0000208e: PUSH2 0x2070 00002091: JUMP 00002092: JUMPDEST 00002093: PUSH1 0x00 00002095: DUP7 00002096: DUP9 00002097: DUP8 00002098: DUP8 00002099: DUP8 0000209a: DUP8 0000209b: PUSH1 0x40 0000209d: MLOAD 0000209e: PUSH1 0x20 000020a0: ADD 000020a1: PUSH2 0x20af 000020a4: SWAP7 000020a5: SWAP6 000020a6: SWAP5 000020a7: SWAP4 000020a8: SWAP3 000020a9: SWAP2 000020aa: SWAP1 000020ab: PUSH2 0x37c6 000020ae: JUMP 000020af: JUMPDEST 000020b0: PUSH1 0x40 000020b2: MLOAD 000020b3: PUSH1 0x20 000020b5: DUP2 000020b6: DUP4 000020b7: SUB 000020b8: SUB 000020b9: DUP2 000020ba: MSTORE 000020bb: SWAP1 000020bc: PUSH1 0x40 000020be: MSTORE 000020bf: SWAP1 000020c0: POP 000020c1: DUP2 000020c2: ISZERO 000020c3: PUSH2 0x2103 000020c6: JUMPI 000020c7: DUP1 000020c8: MLOAD 000020c9: PUSH1 0x20 000020cb: DUP3 000020cc: ADD 000020cd: KECCAK256 000020ce: PUSH32 0x3e64741321ec6f8a63baec2e6c5b136599c80e9cc6e66533b1c796ebf0d947bb 000020ef: PUSH1 0x00 000020f1: DUP12 000020f2: DUP2 000020f3: MSTORE 000020f4: PUSH1 0x20 000020f6: SWAP2 000020f7: SWAP1 000020f8: SWAP2 000020f9: MSTORE 000020fa: PUSH1 0x40 000020fc: SWAP1 000020fd: KECCAK256 000020fe: SSTORE 000020ff: PUSH2 0x21c8 00002102: JUMP 00002103: JUMPDEST 00002104: DUP1 00002105: MLOAD 00002106: PUSH1 0x20 00002108: DUP3 00002109: ADD 0000210a: KECCAK256 0000210b: PUSH32 0x3e64741321ec6f8a63baec2e6c5b136599c80e9cc6e66533b1c796ebf0d947bb 0000212c: PUSH1 0x00 0000212e: DUP12 0000212f: DUP2 00002130: MSTORE 00002131: PUSH1 0x20 00002133: SWAP2 00002134: SWAP1 00002135: SWAP2 00002136: MSTORE 00002137: PUSH1 0x40 00002139: SWAP1 0000213a: KECCAK256 0000213b: SLOAD 0000213c: EQ 0000213d: PUSH2 0x21c8 00002140: JUMPI 00002141: PUSH1 0x40 00002143: MLOAD 00002144: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002165: DUP2 00002166: MSTORE 00002167: PUSH1 0x20 00002169: PUSH1 0x04 0000216b: DUP3 0000216c: ADD 0000216d: MSTORE 0000216e: PUSH1 0x2a 00002170: PUSH1 0x24 00002172: DUP3 00002173: ADD 00002174: MSTORE 00002175: PUSH32 0x5374616e646172644272696467653a20696e76616c6964206465706f73697420 00002196: PUSH1 0x44 00002198: DUP3 00002199: ADD 0000219a: MSTORE 0000219b: PUSH32 0x706172616d657465727300000000000000000000000000000000000000000000 000021bc: PUSH1 0x64 000021be: DUP3 000021bf: ADD 000021c0: MSTORE 000021c1: PUSH1 0x84 000021c3: ADD 000021c4: PUSH2 0x07c0 000021c7: JUMP 000021c8: JUMPDEST 000021c9: PUSH1 0x04 000021cb: SLOAD 000021cc: PUSH1 0x40 000021ce: MLOAD 000021cf: PUSH2 0x22ac 000021d2: SWAP2 000021d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021e8: AND 000021e9: SWAP1 000021ea: PUSH3 0x07a120 000021ee: SWAP1 000021ef: PUSH32 0x4df6155400000000000000000000000000000000000000000000000000000000 00002210: SWAP1 00002211: PUSH2 0x222a 00002214: SWAP1 00002215: DUP15 00002216: SWAP1 00002217: DUP14 00002218: SWAP1 00002219: DUP16 0000221a: SWAP1 0000221b: DUP15 0000221c: SWAP1 0000221d: DUP15 0000221e: SWAP1 0000221f: DUP15 00002220: SWAP1 00002221: DUP15 00002222: SWAP1 00002223: PUSH1 0x24 00002225: ADD 00002226: PUSH2 0x3821 00002229: JUMP 0000222a: JUMPDEST 0000222b: PUSH1 0x40 0000222d: DUP1 0000222e: MLOAD 0000222f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002250: DUP2 00002251: DUP5 00002252: SUB 00002253: ADD 00002254: DUP2 00002255: MSTORE 00002256: SWAP2 00002257: SWAP1 00002258: MSTORE 00002259: PUSH1 0x20 0000225b: DUP2 0000225c: ADD 0000225d: DUP1 0000225e: MLOAD 0000225f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000227c: AND 0000227d: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 0000229e: SWAP1 0000229f: SWAP4 000022a0: AND 000022a1: SWAP3 000022a2: SWAP1 000022a3: SWAP3 000022a4: OR 000022a5: SWAP1 000022a6: SWAP2 000022a7: MSTORE 000022a8: PUSH2 0x27b0 000022ab: JUMP 000022ac: JUMPDEST 000022ad: DUP7 000022ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022c3: AND 000022c4: DUP9 000022c5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022da: AND 000022db: DUP11 000022dc: PUSH32 0x8edee904eb373dd162c240b52a6016884524d3cf7661a9edfc510f2a43c24c18 000022fd: DUP10 000022fe: DUP10 000022ff: DUP10 00002300: DUP10 00002301: PUSH1 0x40 00002303: MLOAD 00002304: PUSH2 0x2310 00002307: SWAP5 00002308: SWAP4 00002309: SWAP3 0000230a: SWAP2 0000230b: SWAP1 0000230c: PUSH2 0x371f 0000230f: JUMP 00002310: JUMPDEST 00002311: PUSH1 0x40 00002313: MLOAD 00002314: DUP1 00002315: SWAP2 00002316: SUB 00002317: SWAP1 00002318: LOG4 00002319: POP 0000231a: POP 0000231b: POP 0000231c: POP 0000231d: POP 0000231e: POP 0000231f: POP 00002320: POP 00002321: POP 00002322: JUMP 00002323: JUMPDEST 00002324: PUSH1 0x40 00002326: MLOAD 00002327: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002348: DUP2 00002349: MSTORE 0000234a: PUSH1 0x20 0000234c: PUSH1 0x04 0000234e: DUP3 0000234f: ADD 00002350: MSTORE 00002351: PUSH1 0x13 00002353: PUSH1 0x24 00002355: DUP3 00002356: ADD 00002357: MSTORE 00002358: PUSH32 0x5573652074686520666173742062726964676500000000000000000000000000 00002379: PUSH1 0x44 0000237b: DUP3 0000237c: ADD 0000237d: MSTORE 0000237e: PUSH1 0x64 00002380: ADD 00002381: PUSH2 0x07c0 00002384: JUMP 00002385: JUMPDEST 00002386: PUSH2 0x16ef 00002389: DUP5 0000238a: DUP5 0000238b: CALLVALUE 0000238c: DUP6 0000238d: DUP6 0000238e: PUSH2 0x1d47 00002391: JUMP 00002392: JUMPDEST 00002393: PUSH1 0x00 00002395: SLOAD 00002396: PUSH2 0x0100 00002399: SWAP1 0000239a: DIV 0000239b: PUSH1 0xff 0000239d: AND 0000239e: PUSH2 0x2429 000023a1: JUMPI 000023a2: PUSH1 0x40 000023a4: MLOAD 000023a5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000023c6: DUP2 000023c7: MSTORE 000023c8: PUSH1 0x20 000023ca: PUSH1 0x04 000023cc: DUP3 000023cd: ADD 000023ce: MSTORE 000023cf: PUSH1 0x2b 000023d1: PUSH1 0x24 000023d3: DUP3 000023d4: ADD 000023d5: MSTORE 000023d6: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 000023f7: PUSH1 0x44 000023f9: DUP3 000023fa: ADD 000023fb: MSTORE 000023fc: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000 0000241d: PUSH1 0x64 0000241f: DUP3 00002420: ADD 00002421: MSTORE 00002422: PUSH1 0x84 00002424: ADD 00002425: PUSH2 0x07c0 00002428: JUMP 00002429: JUMPDEST 0000242a: PUSH1 0x03 0000242c: DUP1 0000242d: SLOAD 0000242e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002443: SWAP4 00002444: DUP5 00002445: AND 00002446: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00002467: SWAP2 00002468: DUP3 00002469: AND 0000246a: OR 0000246b: SWAP1 0000246c: SWAP2 0000246d: SSTORE 0000246e: PUSH1 0x04 00002470: DUP1 00002471: SLOAD 00002472: SWAP3 00002473: SWAP1 00002474: SWAP4 00002475: AND 00002476: SWAP2 00002477: AND 00002478: OR 00002479: SWAP1 0000247a: SSTORE 0000247b: JUMP 0000247c: JUMPDEST 0000247d: PUSH1 0x00 0000247f: PUSH2 0x2487 00002482: DUP4 00002483: PUSH2 0x2828 00002486: JUMP 00002487: JUMPDEST 00002488: DUP1 00002489: ISZERO 0000248a: PUSH2 0x2498 0000248d: JUMPI 0000248e: POP 0000248f: PUSH2 0x2498 00002492: DUP4 00002493: DUP4 00002494: PUSH2 0x288c 00002497: JUMP 00002498: JUMPDEST 00002499: SWAP4 0000249a: SWAP3 0000249b: POP 0000249c: POP 0000249d: POP 0000249e: JUMP 0000249f: JUMPDEST 000024a0: PUSH1 0x00 000024a2: PUSH2 0x2501 000024a5: DUP3 000024a6: PUSH1 0x40 000024a8: MLOAD 000024a9: DUP1 000024aa: PUSH1 0x40 000024ac: ADD 000024ad: PUSH1 0x40 000024af: MSTORE 000024b0: DUP1 000024b1: PUSH1 0x20 000024b3: DUP2 000024b4: MSTORE 000024b5: PUSH1 0x20 000024b7: ADD 000024b8: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 000024d9: DUP2 000024da: MSTORE 000024db: POP 000024dc: DUP6 000024dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024f2: AND 000024f3: PUSH2 0x295b 000024f6: SWAP1 000024f7: SWAP3 000024f8: SWAP2 000024f9: SWAP1 000024fa: PUSH4 0xffffffff 000024ff: AND 00002500: JUMP 00002501: JUMPDEST 00002502: DUP1 00002503: MLOAD 00002504: SWAP1 00002505: SWAP2 00002506: POP 00002507: ISZERO 00002508: PUSH2 0x0ac1 0000250b: JUMPI 0000250c: DUP1 0000250d: DUP1 0000250e: PUSH1 0x20 00002510: ADD 00002511: SWAP1 00002512: MLOAD 00002513: DUP2 00002514: ADD 00002515: SWAP1 00002516: PUSH2 0x251f 00002519: SWAP2 0000251a: SWAP1 0000251b: PUSH2 0x3883 0000251e: JUMP 0000251f: JUMPDEST 00002520: PUSH2 0x0ac1 00002523: JUMPI 00002524: PUSH1 0x40 00002526: MLOAD 00002527: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002548: DUP2 00002549: MSTORE 0000254a: PUSH1 0x20 0000254c: PUSH1 0x04 0000254e: DUP3 0000254f: ADD 00002550: MSTORE 00002551: PUSH1 0x2a 00002553: PUSH1 0x24 00002555: DUP3 00002556: ADD 00002557: MSTORE 00002558: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00002579: PUSH1 0x44 0000257b: DUP3 0000257c: ADD 0000257d: MSTORE 0000257e: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 0000259f: PUSH1 0x64 000025a1: DUP3 000025a2: ADD 000025a3: MSTORE 000025a4: PUSH1 0x84 000025a6: ADD 000025a7: PUSH2 0x07c0 000025aa: JUMP 000025ab: JUMPDEST 000025ac: DUP4 000025ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025c2: AND 000025c3: DUP6 000025c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025d9: AND 000025da: DUP8 000025db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025f0: AND 000025f1: PUSH32 0xd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd 00002612: DUP7 00002613: DUP7 00002614: DUP7 00002615: PUSH1 0x40 00002617: MLOAD 00002618: PUSH2 0x2623 0000261b: SWAP4 0000261c: SWAP3 0000261d: SWAP2 0000261e: SWAP1 0000261f: PUSH2 0x36e1 00002622: JUMP 00002623: JUMPDEST 00002624: PUSH1 0x40 00002626: MLOAD 00002627: DUP1 00002628: SWAP2 00002629: SUB 0000262a: SWAP1 0000262b: LOG4 0000262c: POP 0000262d: POP 0000262e: POP 0000262f: POP 00002630: POP 00002631: POP 00002632: JUMP 00002633: JUMPDEST 00002634: DUP3 00002635: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000264a: AND 0000264b: DUP5 0000264c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002661: AND 00002662: PUSH32 0x35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23 00002683: DUP5 00002684: DUP5 00002685: PUSH1 0x40 00002687: MLOAD 00002688: PUSH2 0x2692 0000268b: SWAP3 0000268c: SWAP2 0000268d: SWAP1 0000268e: PUSH2 0x37ad 00002691: JUMP 00002692: JUMPDEST 00002693: PUSH1 0x40 00002695: MLOAD 00002696: DUP1 00002697: SWAP2 00002698: SUB 00002699: SWAP1 0000269a: LOG3 0000269b: PUSH2 0x16ef 0000269e: DUP5 0000269f: DUP5 000026a0: DUP5 000026a1: DUP5 000026a2: PUSH2 0x2972 000026a5: JUMP 000026a6: JUMPDEST 000026a7: PUSH1 0x33 000026a9: SLOAD 000026aa: PUSH1 0x40 000026ac: DUP1 000026ad: MLOAD 000026ae: PUSH32 0x4397dfef00000000000000000000000000000000000000000000000000000000 000026cf: DUP2 000026d0: MSTORE 000026d1: DUP2 000026d2: MLOAD 000026d3: PUSH1 0x00 000026d5: SWAP4 000026d6: DUP5 000026d7: SWAP4 000026d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000026ed: SWAP1 000026ee: SWAP2 000026ef: AND 000026f0: SWAP3 000026f1: PUSH4 0x4397dfef 000026f6: SWAP3 000026f7: PUSH1 0x04 000026f9: DUP1 000026fa: DUP4 000026fb: ADD 000026fc: SWAP4 000026fd: SWAP3 000026fe: DUP3 000026ff: SWAP1 00002700: SUB 00002701: ADD 00002702: DUP2 00002703: DUP7 00002704: GAS 00002705: STATICCALL 00002706: ISZERO 00002707: DUP1 00002708: ISZERO 00002709: PUSH2 0x2716 0000270c: JUMPI 0000270d: RETURNDATASIZE 0000270e: PUSH1 0x00 00002710: DUP1 00002711: RETURNDATACOPY 00002712: RETURNDATASIZE 00002713: PUSH1 0x00 00002715: REVERT 00002716: JUMPDEST 00002717: POP 00002718: POP 00002719: POP 0000271a: POP 0000271b: PUSH1 0x40 0000271d: MLOAD 0000271e: RETURNDATASIZE 0000271f: PUSH1 0x1f 00002721: NOT 00002722: PUSH1 0x1f 00002724: DUP3 00002725: ADD 00002726: AND 00002727: DUP3 00002728: ADD 00002729: DUP1 0000272a: PUSH1 0x40 0000272c: MSTORE 0000272d: POP 0000272e: DUP2 0000272f: ADD 00002730: SWAP1 00002731: PUSH2 0x273a 00002734: SWAP2 00002735: SWAP1 00002736: PUSH2 0x38a5 00002739: JUMP 0000273a: JUMPDEST 0000273b: SWAP1 0000273c: SWAP4 0000273d: SWAP1 0000273e: SWAP3 0000273f: POP 00002740: SWAP1 00002741: POP 00002742: JUMP 00002743: JUMPDEST 00002744: DUP3 00002745: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000275a: AND 0000275b: DUP5 0000275c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002771: AND 00002772: PUSH32 0x31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d 00002793: DUP5 00002794: DUP5 00002795: PUSH1 0x40 00002797: MLOAD 00002798: PUSH2 0x27a2 0000279b: SWAP3 0000279c: SWAP2 0000279d: SWAP1 0000279e: PUSH2 0x37ad 000027a1: JUMP 000027a2: JUMPDEST 000027a3: PUSH1 0x40 000027a5: MLOAD 000027a6: DUP1 000027a7: SWAP2 000027a8: SUB 000027a9: SWAP1 000027aa: LOG3 000027ab: POP 000027ac: POP 000027ad: POP 000027ae: POP 000027af: JUMP 000027b0: JUMPDEST 000027b1: PUSH1 0x40 000027b3: MLOAD 000027b4: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000 000027d5: PUSH1 0x60 000027d7: DUP6 000027d8: SWAP1 000027d9: SHL 000027da: AND 000027db: PUSH1 0x20 000027dd: DUP3 000027de: ADD 000027df: MSTORE 000027e0: PUSH2 0x0ac1 000027e3: SWAP1 000027e4: PUSH1 0x34 000027e6: ADD 000027e7: PUSH1 0x40 000027e9: DUP1 000027ea: MLOAD 000027eb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 0000280c: DUP2 0000280d: DUP5 0000280e: SUB 0000280f: ADD 00002810: DUP2 00002811: MSTORE 00002812: PUSH1 0x20 00002814: DUP4 00002815: ADD 00002816: SWAP1 00002817: SWAP2 00002818: MSTORE 00002819: PUSH1 0x00 0000281b: DUP1 0000281c: DUP4 0000281d: MSTORE 0000281e: SWAP1 0000281f: SWAP2 00002820: DUP6 00002821: SWAP1 00002822: DUP6 00002823: SWAP1 00002824: PUSH2 0x29d1 00002827: JUMP 00002828: JUMPDEST 00002829: PUSH1 0x00 0000282b: PUSH2 0x2854 0000282e: DUP3 0000282f: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 00002850: PUSH2 0x288c 00002853: JUMP 00002854: JUMPDEST 00002855: DUP1 00002856: ISZERO 00002857: PUSH2 0x1b06 0000285a: JUMPI 0000285b: POP 0000285c: PUSH2 0x2885 0000285f: DUP3 00002860: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00002881: PUSH2 0x288c 00002884: JUMP 00002885: JUMPDEST 00002886: ISZERO 00002887: SWAP3 00002888: SWAP2 00002889: POP 0000288a: POP 0000288b: JUMP 0000288c: JUMPDEST 0000288d: PUSH1 0x40 0000288f: DUP1 00002890: MLOAD 00002891: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000028b2: DUP4 000028b3: AND 000028b4: PUSH1 0x24 000028b6: DUP1 000028b7: DUP4 000028b8: ADD 000028b9: SWAP2 000028ba: SWAP1 000028bb: SWAP2 000028bc: MSTORE 000028bd: DUP3 000028be: MLOAD 000028bf: DUP1 000028c0: DUP4 000028c1: SUB 000028c2: SWAP1 000028c3: SWAP2 000028c4: ADD 000028c5: DUP2 000028c6: MSTORE 000028c7: PUSH1 0x44 000028c9: SWAP1 000028ca: SWAP2 000028cb: ADD 000028cc: SWAP1 000028cd: SWAP2 000028ce: MSTORE 000028cf: PUSH1 0x20 000028d1: DUP1 000028d2: DUP3 000028d3: ADD 000028d4: DUP1 000028d5: MLOAD 000028d6: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000028f3: AND 000028f4: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 00002915: OR 00002916: DUP2 00002917: MSTORE 00002918: DUP3 00002919: MLOAD 0000291a: PUSH1 0x00 0000291c: SWAP4 0000291d: SWAP3 0000291e: DUP5 0000291f: SWAP3 00002920: DUP4 00002921: SWAP3 00002922: DUP4 00002923: SWAP3 00002924: SWAP2 00002925: DUP4 00002926: SWAP2 00002927: SWAP1 00002928: DUP11 00002929: PUSH2 0x7530 0000292c: STATICCALL 0000292d: SWAP3 0000292e: POP 0000292f: RETURNDATASIZE 00002930: SWAP2 00002931: POP 00002932: PUSH1 0x00 00002934: MLOAD 00002935: SWAP1 00002936: POP 00002937: DUP3 00002938: DUP1 00002939: ISZERO 0000293a: PUSH2 0x2944 0000293d: JUMPI 0000293e: POP 0000293f: PUSH1 0x20 00002941: DUP3 00002942: LT 00002943: ISZERO 00002944: JUMPDEST 00002945: DUP1 00002946: ISZERO 00002947: PUSH2 0x2950 0000294a: JUMPI 0000294b: POP 0000294c: PUSH1 0x00 0000294e: DUP2 0000294f: GT 00002950: JUMPDEST 00002951: SWAP8 00002952: SWAP7 00002953: POP 00002954: POP 00002955: POP 00002956: POP 00002957: POP 00002958: POP 00002959: POP 0000295a: JUMP 0000295b: JUMPDEST 0000295c: PUSH1 0x60 0000295e: PUSH2 0x296a 00002961: DUP5 00002962: DUP5 00002963: PUSH1 0x00 00002965: DUP6 00002966: PUSH2 0x29f5 00002969: JUMP 0000296a: JUMPDEST 0000296b: SWAP5 0000296c: SWAP4 0000296d: POP 0000296e: POP 0000296f: POP 00002970: POP 00002971: JUMP 00002972: JUMPDEST 00002973: DUP3 00002974: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002989: AND 0000298a: DUP5 0000298b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000029a0: AND 000029a1: PUSH32 0x2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af5 000029c2: DUP5 000029c3: DUP5 000029c4: PUSH1 0x40 000029c6: MLOAD 000029c7: PUSH2 0x27a2 000029ca: SWAP3 000029cb: SWAP2 000029cc: SWAP1 000029cd: PUSH2 0x37ad 000029d0: JUMP 000029d1: JUMPDEST 000029d2: PUSH1 0x00 000029d4: PUSH2 0x29e0 000029d7: DUP7 000029d8: DUP7 000029d9: DUP7 000029da: DUP7 000029db: DUP7 000029dc: PUSH2 0x2b80 000029df: JUMP 000029e0: JUMPDEST 000029e1: SWAP1 000029e2: POP 000029e3: PUSH3 0x0face7 000029e7: DUP2 000029e8: MLOAD 000029e9: PUSH1 0x20 000029eb: DUP4 000029ec: ADD 000029ed: LOG1 000029ee: POP 000029ef: POP 000029f0: POP 000029f1: POP 000029f2: POP 000029f3: POP 000029f4: JUMP 000029f5: JUMPDEST 000029f6: PUSH1 0x60 000029f8: DUP3 000029f9: SELFBALANCE 000029fa: LT 000029fb: ISZERO 000029fc: PUSH2 0x2a87 000029ff: JUMPI 00002a00: PUSH1 0x40 00002a02: MLOAD 00002a03: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002a24: DUP2 00002a25: MSTORE 00002a26: PUSH1 0x20 00002a28: PUSH1 0x04 00002a2a: DUP3 00002a2b: ADD 00002a2c: MSTORE 00002a2d: PUSH1 0x26 00002a2f: PUSH1 0x24 00002a31: DUP3 00002a32: ADD 00002a33: MSTORE 00002a34: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00002a55: PUSH1 0x44 00002a57: DUP3 00002a58: ADD 00002a59: MSTORE 00002a5a: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 00002a7b: PUSH1 0x64 00002a7d: DUP3 00002a7e: ADD 00002a7f: MSTORE 00002a80: PUSH1 0x84 00002a82: ADD 00002a83: PUSH2 0x07c0 00002a86: JUMP 00002a87: JUMPDEST 00002a88: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002a9d: DUP6 00002a9e: AND 00002a9f: EXTCODESIZE 00002aa0: PUSH2 0x2b05 00002aa3: JUMPI 00002aa4: PUSH1 0x40 00002aa6: MLOAD 00002aa7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002ac8: DUP2 00002ac9: MSTORE 00002aca: PUSH1 0x20 00002acc: PUSH1 0x04 00002ace: DUP3 00002acf: ADD 00002ad0: MSTORE 00002ad1: PUSH1 0x1d 00002ad3: PUSH1 0x24 00002ad5: DUP3 00002ad6: ADD 00002ad7: MSTORE 00002ad8: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00002af9: PUSH1 0x44 00002afb: DUP3 00002afc: ADD 00002afd: MSTORE 00002afe: PUSH1 0x64 00002b00: ADD 00002b01: PUSH2 0x07c0 00002b04: JUMP 00002b05: JUMPDEST 00002b06: PUSH1 0x00 00002b08: DUP1 00002b09: DUP7 00002b0a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b1f: AND 00002b20: DUP6 00002b21: DUP8 00002b22: PUSH1 0x40 00002b24: MLOAD 00002b25: PUSH2 0x2b2e 00002b28: SWAP2 00002b29: SWAP1 00002b2a: PUSH2 0x38da 00002b2d: JUMP 00002b2e: JUMPDEST 00002b2f: PUSH1 0x00 00002b31: PUSH1 0x40 00002b33: MLOAD 00002b34: DUP1 00002b35: DUP4 00002b36: SUB 00002b37: DUP2 00002b38: DUP6 00002b39: DUP8 00002b3a: GAS 00002b3b: CALL 00002b3c: SWAP3 00002b3d: POP 00002b3e: POP 00002b3f: POP 00002b40: RETURNDATASIZE 00002b41: DUP1 00002b42: PUSH1 0x00 00002b44: DUP2 00002b45: EQ 00002b46: PUSH2 0x2b6b 00002b49: JUMPI 00002b4a: PUSH1 0x40 00002b4c: MLOAD 00002b4d: SWAP2 00002b4e: POP 00002b4f: PUSH1 0x1f 00002b51: NOT 00002b52: PUSH1 0x3f 00002b54: RETURNDATASIZE 00002b55: ADD 00002b56: AND 00002b57: DUP3 00002b58: ADD 00002b59: PUSH1 0x40 00002b5b: MSTORE 00002b5c: RETURNDATASIZE 00002b5d: DUP3 00002b5e: MSTORE 00002b5f: RETURNDATASIZE 00002b60: PUSH1 0x00 00002b62: PUSH1 0x20 00002b64: DUP5 00002b65: ADD 00002b66: RETURNDATACOPY 00002b67: PUSH2 0x2b70 00002b6a: JUMP 00002b6b: JUMPDEST 00002b6c: PUSH1 0x60 00002b6e: SWAP2 00002b6f: POP 00002b70: JUMPDEST 00002b71: POP 00002b72: SWAP2 00002b73: POP 00002b74: SWAP2 00002b75: POP 00002b76: PUSH2 0x2950 00002b79: DUP3 00002b7a: DUP3 00002b7b: DUP7 00002b7c: PUSH2 0x2c95 00002b7f: JUMP 00002b80: JUMPDEST 00002b81: PUSH1 0x60 00002b83: PUSH1 0x00 00002b85: CHAINID 00002b86: PUSH1 0x01 00002b88: SUB 00002b89: PUSH2 0x2b96 00002b8c: JUMPI 00002b8d: POP 00002b8e: PUSH3 0x0face7 00002b92: PUSH2 0x2c0c 00002b95: JUMP 00002b96: JUMPDEST 00002b97: CHAINID 00002b98: PUSH3 0xaa36a7 00002b9c: SUB 00002b9d: PUSH2 0x2baa 00002ba0: JUMPI 00002ba1: POP 00002ba2: PUSH3 0xface7a 00002ba6: PUSH2 0x2c0c 00002ba9: JUMP 00002baa: JUMPDEST 00002bab: PUSH1 0x40 00002bad: MLOAD 00002bae: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002bcf: DUP2 00002bd0: MSTORE 00002bd1: PUSH1 0x20 00002bd3: PUSH1 0x04 00002bd5: DUP3 00002bd6: ADD 00002bd7: MSTORE 00002bd8: PUSH1 0x13 00002bda: PUSH1 0x24 00002bdc: DUP3 00002bdd: ADD 00002bde: MSTORE 00002bdf: PUSH32 0x556e737570706f7274656420636861696e496400000000000000000000000000 00002c00: PUSH1 0x44 00002c02: DUP3 00002c03: ADD 00002c04: MSTORE 00002c05: PUSH1 0x64 00002c07: ADD 00002c08: PUSH2 0x07c0 00002c0b: JUMP 00002c0c: JUMPDEST 00002c0d: PUSH1 0x40 00002c0f: DUP1 00002c10: MLOAD 00002c11: PUSH1 0x20 00002c13: DUP2 00002c14: ADD 00002c15: SWAP1 00002c16: SWAP2 00002c17: MSTORE 00002c18: PUSH1 0x00 00002c1a: DUP2 00002c1b: MSTORE 00002c1c: PUSH2 0x2c25 00002c1f: DUP2 00002c20: DUP4 00002c21: PUSH2 0x2ce8 00002c24: JUMP 00002c25: JUMPDEST 00002c26: POP 00002c27: PUSH2 0x2c30 00002c2a: DUP2 00002c2b: DUP10 00002c2c: PUSH2 0x2d41 00002c2f: JUMP 00002c30: JUMPDEST 00002c31: POP 00002c32: PUSH2 0x2c3b 00002c35: DUP2 00002c36: DUP9 00002c37: PUSH2 0x2ce8 00002c3a: JUMP 00002c3b: JUMPDEST 00002c3c: POP 00002c3d: PUSH2 0x2c46 00002c40: DUP2 00002c41: DUP8 00002c42: PUSH2 0x2ce8 00002c45: JUMP 00002c46: JUMPDEST 00002c47: POP 00002c48: PUSH2 0x2c51 00002c4b: DUP2 00002c4c: DUP7 00002c4d: PUSH2 0x2d41 00002c50: JUMP 00002c51: JUMPDEST 00002c52: POP 00002c53: PUSH2 0x2c5c 00002c56: DUP2 00002c57: DUP6 00002c58: PUSH2 0x2d41 00002c5b: JUMP 00002c5c: JUMPDEST 00002c5d: POP 00002c5e: PUSH1 0x46 00002c60: PUSH2 0x2c68 00002c63: DUP3 00002c64: PUSH2 0x2d78 00002c67: JUMP 00002c68: JUMPDEST 00002c69: PUSH1 0x40 00002c6b: MLOAD 00002c6c: PUSH1 0x20 00002c6e: ADD 00002c6f: PUSH2 0x2c79 00002c72: SWAP3 00002c73: SWAP2 00002c74: SWAP1 00002c75: PUSH2 0x38f6 00002c78: JUMP 00002c79: JUMPDEST 00002c7a: PUSH1 0x40 00002c7c: MLOAD 00002c7d: PUSH1 0x20 00002c7f: DUP2 00002c80: DUP4 00002c81: SUB 00002c82: SUB 00002c83: DUP2 00002c84: MSTORE 00002c85: SWAP1 00002c86: PUSH1 0x40 00002c88: MSTORE 00002c89: SWAP3 00002c8a: POP 00002c8b: POP 00002c8c: POP 00002c8d: SWAP6 00002c8e: SWAP5 00002c8f: POP 00002c90: POP 00002c91: POP 00002c92: POP 00002c93: POP 00002c94: JUMP 00002c95: JUMPDEST 00002c96: PUSH1 0x60 00002c98: DUP4 00002c99: ISZERO 00002c9a: PUSH2 0x2ca4 00002c9d: JUMPI 00002c9e: POP 00002c9f: DUP2 00002ca0: PUSH2 0x2498 00002ca3: JUMP 00002ca4: JUMPDEST 00002ca5: DUP3 00002ca6: MLOAD 00002ca7: ISZERO 00002ca8: PUSH2 0x2cb4 00002cab: JUMPI 00002cac: DUP3 00002cad: MLOAD 00002cae: DUP1 00002caf: DUP5 00002cb0: PUSH1 0x20 00002cb2: ADD 00002cb3: REVERT 00002cb4: JUMPDEST 00002cb5: DUP2 00002cb6: PUSH1 0x40 00002cb8: MLOAD 00002cb9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002cda: DUP2 00002cdb: MSTORE 00002cdc: PUSH1 0x04 00002cde: ADD 00002cdf: PUSH2 0x07c0 00002ce2: SWAP2 00002ce3: SWAP1 00002ce4: PUSH2 0x3406 00002ce7: JUMP 00002ce8: JUMPDEST 00002ce9: PUSH1 0x40 00002ceb: DUP1 00002cec: MLOAD 00002ced: PUSH1 0x20 00002cef: DUP2 00002cf0: ADD 00002cf1: SWAP1 00002cf2: SWAP2 00002cf3: MSTORE 00002cf4: PUSH1 0x30 00002cf6: DUP3 00002cf7: SWAP1 00002cf8: SHL 00002cf9: DUP2 00002cfa: MSTORE 00002cfb: DUP3 00002cfc: MLOAD 00002cfd: DUP2 00002cfe: DUP2 00002cff: SHR 00002d00: OR 00002d01: PUSH1 0x28 00002d03: DUP2 00002d04: DUP2 00002d05: SHR 00002d06: DUP1 00002d07: DUP5 00002d08: XOR 00002d09: SWAP1 00002d0a: SWAP2 00002d0b: SHL 00002d0c: SWAP1 00002d0d: SWAP2 00002d0e: XOR 00002d0f: DUP5 00002d10: MSTORE 00002d11: DUP1 00002d12: MLOAD 00002d13: DUP3 00002d14: OR 00002d15: SWAP1 00002d16: MSTORE 00002d17: DUP2 00002d18: PUSH1 0xd0 00002d1a: SHR 00002d1b: ISZERO 00002d1c: PUSH2 0x2d3a 00002d1f: JUMPI 00002d20: PUSH1 0x40 00002d22: MLOAD 00002d23: DUP3 00002d24: DUP2 00002d25: MSTORE 00002d26: PUSH1 0x20 00002d28: DUP2 00002d29: ADD 00002d2a: PUSH1 0x40 00002d2c: MSTORE 00002d2d: DUP1 00002d2e: PUSH1 0x08 00002d30: SHL 00002d31: PUSH1 0x01 00002d33: OR 00002d34: PUSH1 0x28 00002d36: SHL 00002d37: DUP3 00002d38: MSTORE 00002d39: POP 00002d3a: JUMPDEST 00002d3b: POP 00002d3c: SWAP1 00002d3d: SWAP2 00002d3e: SWAP1 00002d3f: POP 00002d40: JUMP 00002d41: JUMPDEST 00002d42: PUSH1 0x40 00002d44: DUP1 00002d45: MLOAD 00002d46: PUSH1 0x20 00002d48: DUP2 00002d49: ADD 00002d4a: SWAP1 00002d4b: SWAP2 00002d4c: MSTORE 00002d4d: PUSH1 0x08 00002d4f: DUP3 00002d50: SWAP1 00002d51: SHL 00002d52: PUSH1 0x02 00002d54: OR 00002d55: PUSH1 0x28 00002d57: SWAP1 00002d58: DUP2 00002d59: SHL 00002d5a: DUP3 00002d5b: MSTORE 00002d5c: DUP4 00002d5d: MLOAD 00002d5e: DUP3 00002d5f: DUP2 00002d60: SHR 00002d61: OR 00002d62: DUP1 00002d63: DUP3 00002d64: SHR 00002d65: DUP1 00002d66: DUP5 00002d67: XOR 00002d68: SWAP1 00002d69: SWAP3 00002d6a: SHL 00002d6b: XOR 00002d6c: DUP5 00002d6d: MSTORE 00002d6e: DUP1 00002d6f: MLOAD 00002d70: DUP3 00002d71: OR 00002d72: SWAP1 00002d73: MSTORE 00002d74: PUSH2 0x2d3a 00002d77: JUMP 00002d78: JUMPDEST 00002d79: PUSH1 0x60 00002d7b: PUSH2 0x2fc3 00002d7e: JUMP 00002d7f: JUMPDEST 00002d80: PUSH1 0x01 00002d82: DUP3 00002d83: ADD 00002d84: PUSH1 0x7f 00002d86: DUP3 00002d87: GT 00002d88: PUSH2 0x2d99 00002d8b: JUMPI 00002d8c: DUP2 00002d8d: DUP3 00002d8e: ISZERO 00002d8f: PUSH1 0x07 00002d91: SHL 00002d92: OR 00002d93: DUP4 00002d94: MSTORE8 00002d95: PUSH2 0x1b06 00002d98: JUMP 00002d99: JUMPDEST 00002d9a: PUSH16 0xffffffffffffffffffffffffffffffff 00002dab: DUP3 00002dac: GT 00002dad: PUSH1 0x07 00002daf: SHL 00002db0: DUP3 00002db1: DUP2 00002db2: SHR 00002db3: PUSH8 0xffffffffffffffff 00002dbc: LT 00002dbd: PUSH1 0x06 00002dbf: SHL 00002dc0: OR 00002dc1: DUP3 00002dc2: DUP2 00002dc3: SHR 00002dc4: PUSH4 0xffffffff 00002dc9: LT 00002dca: PUSH1 0x05 00002dcc: SHL 00002dcd: OR 00002dce: DUP3 00002dcf: DUP2 00002dd0: SHR 00002dd1: PUSH2 0xffff 00002dd4: LT 00002dd5: PUSH1 0x04 00002dd7: SHL 00002dd8: OR 00002dd9: PUSH1 0x03 00002ddb: DUP2 00002ddc: SWAP1 00002ddd: SHR 00002dde: SWAP1 00002ddf: DUP4 00002de0: SWAP1 00002de1: SHR 00002de2: PUSH1 0xff 00002de4: LT 00002de5: OR 00002de6: PUSH1 0x81 00002de8: DUP2 00002de9: ADD 00002dea: DUP5 00002deb: MSTORE8 00002dec: PUSH1 0x00 00002dee: DUP4 00002def: SWAP1 00002df0: MSTORE 00002df1: PUSH1 0x1f 00002df3: DUP2 00002df4: XOR 00002df5: MLOAD 00002df6: DUP3 00002df7: MSTORE 00002df8: ADD 00002df9: PUSH1 0x01 00002dfb: ADD 00002dfc: SWAP3 00002dfd: SWAP2 00002dfe: POP 00002dff: POP 00002e00: JUMP 00002e01: JUMPDEST 00002e02: PUSH1 0x58 00002e04: DUP2 00002e05: SWAP1 00002e06: SHL 00002e07: DUP3 00002e08: MSTORE 00002e09: PUSH1 0x15 00002e0b: DUP3 00002e0c: ADD 00002e0d: PUSH1 0x94 00002e0f: DUP4 00002e10: MSTORE8 00002e11: SWAP3 00002e12: SWAP2 00002e13: POP 00002e14: POP 00002e15: JUMP 00002e16: JUMPDEST 00002e17: DUP1 00002e18: MLOAD 00002e19: PUSH1 0x01 00002e1b: DUP4 00002e1c: ADD 00002e1d: SWAP1 00002e1e: PUSH1 0x37 00002e20: DUP2 00002e21: GT 00002e22: PUSH2 0x2e59 00002e25: JUMPI 00002e26: DUP3 00002e27: PUSH1 0x20 00002e29: ADD 00002e2a: MLOAD 00002e2b: PUSH1 0x80 00002e2d: DUP2 00002e2e: PUSH1 0x00 00002e30: BYTE 00002e31: LT 00002e32: DUP3 00002e33: PUSH1 0x01 00002e35: EQ 00002e36: AND 00002e37: PUSH2 0x2e51 00002e3a: JUMPI 00002e3b: DUP6 00002e3c: DUP3 00002e3d: ADD 00002e3e: DUP6 00002e3f: MSTORE8 00002e40: PUSH1 0x40 00002e42: DUP5 00002e43: ADD 00002e44: MLOAD 00002e45: PUSH1 0x21 00002e47: DUP7 00002e48: ADD 00002e49: MSTORE 00002e4a: DUP3 00002e4b: MSTORE 00002e4c: ADD 00002e4d: PUSH2 0x2498 00002e50: JUMP 00002e51: JUMPDEST 00002e52: DUP5 00002e53: MSTORE 00002e54: POP 00002e55: PUSH2 0x2498 00002e58: JUMP 00002e59: JUMPDEST 00002e5a: DUP1 00002e5b: PUSH1 0x20 00002e5d: SHR 00002e5e: RETURNDATASIZE 00002e5f: RETURNDATASIZE 00002e60: RETURNDATACOPY 00002e61: DUP1 00002e62: PUSH3 0xffffff 00002e66: LT 00002e67: DUP2 00002e68: PUSH2 0xffff 00002e6b: LT 00002e6c: ADD 00002e6d: DUP2 00002e6e: PUSH1 0xff 00002e70: LT 00002e71: ADD 00002e72: PUSH1 0x01 00002e74: ADD 00002e75: PUSH1 0x37 00002e77: DUP7 00002e78: ADD 00002e79: DUP2 00002e7a: ADD 00002e7b: PUSH1 0xf8 00002e7d: SHL 00002e7e: DUP6 00002e7f: MSTORE 00002e80: DUP3 00002e81: DUP2 00002e82: ADD 00002e83: DUP3 00002e84: DUP2 00002e85: ADD 00002e86: SWAP4 00002e87: POP 00002e88: DUP1 00002e89: DUP6 00002e8a: PUSH1 0x20 00002e8c: ADD 00002e8d: SUB 00002e8e: JUMPDEST 00002e8f: DUP2 00002e90: DUP2 00002e91: ADD 00002e92: MLOAD 00002e93: DUP3 00002e94: MSTORE 00002e95: PUSH1 0x20 00002e97: DUP3 00002e98: ADD 00002e99: SWAP2 00002e9a: POP 00002e9b: DUP5 00002e9c: DUP3 00002e9d: LT 00002e9e: PUSH2 0x2e8e 00002ea1: JUMPI 00002ea2: POP 00002ea3: POP 00002ea4: DUP2 00002ea5: DUP2 00002ea6: PUSH1 0x03 00002ea8: SHL 00002ea9: PUSH1 0xf8 00002eab: SUB 00002eac: SHL 00002ead: DUP6 00002eae: MLOAD 00002eaf: OR 00002eb0: DUP6 00002eb1: MSTORE 00002eb2: POP 00002eb3: POP 00002eb4: SWAP4 00002eb5: SWAP3 00002eb6: POP 00002eb7: POP 00002eb8: POP 00002eb9: JUMP 00002eba: JUMPDEST 00002ebb: PUSH1 0x00 00002ebd: DUP2 00002ebe: MLOAD 00002ebf: PUSH2 0x2ed0 00002ec2: JUMPI 00002ec3: PUSH1 0xc0 00002ec5: DUP4 00002ec6: MSTORE8 00002ec7: POP 00002ec8: PUSH1 0x01 00002eca: DUP3 00002ecb: ADD 00002ecc: PUSH2 0x1b06 00002ecf: JUMP 00002ed0: JUMPDEST 00002ed1: PUSH1 0x20 00002ed3: DUP4 00002ed4: ADD 00002ed5: DUP3 00002ed6: JUMPDEST 00002ed7: MLOAD 00002ed8: PUSH5 0xffffffffff 00002ede: AND 00002edf: DUP1 00002ee0: ISZERO 00002ee1: PUSH2 0x2f5f 00002ee4: JUMPI 00002ee5: DUP1 00002ee6: MLOAD 00002ee7: PUSH1 0x1a 00002ee9: BYTE 00002eea: PUSH1 0x01 00002eec: DUP2 00002eed: GT 00002eee: PUSH2 0x2f1b 00002ef1: JUMPI 00002ef2: DUP1 00002ef3: PUSH2 0x2f0c 00002ef6: JUMPI 00002ef7: PUSH2 0x2f04 00002efa: DUP4 00002efb: DUP4 00002efc: MLOAD 00002efd: PUSH1 0x30 00002eff: SHR 00002f00: PUSH2 0x2d7f 00002f03: JUMP 00002f04: JUMPDEST 00002f05: SWAP3 00002f06: POP 00002f07: POP 00002f08: PUSH2 0x2ed6 00002f0b: JUMP 00002f0c: JUMPDEST 00002f0d: PUSH2 0x2f04 00002f10: DUP4 00002f11: DUP4 00002f12: MLOAD 00002f13: PUSH1 0x30 00002f15: SHR 00002f16: MLOAD 00002f17: PUSH2 0x2d7f 00002f1a: JUMP 00002f1b: JUMPDEST 00002f1c: PUSH1 0x02 00002f1e: DUP2 00002f1f: SUB 00002f20: PUSH2 0x2f33 00002f23: JUMPI 00002f24: PUSH2 0x2f04 00002f27: PUSH1 0x80 00002f29: DUP5 00002f2a: DUP5 00002f2b: MLOAD 00002f2c: PUSH1 0x30 00002f2e: SHR 00002f2f: PUSH2 0x2e16 00002f32: JUMP 00002f33: JUMPDEST 00002f34: PUSH1 0x03 00002f36: DUP2 00002f37: SUB 00002f38: PUSH2 0x2f49 00002f3b: JUMPI 00002f3c: PUSH2 0x2f04 00002f3f: DUP4 00002f40: DUP4 00002f41: MLOAD 00002f42: PUSH1 0x30 00002f44: SHR 00002f45: PUSH2 0x2eba 00002f48: JUMP 00002f49: JUMPDEST 00002f4a: POP 00002f4b: PUSH2 0x2f58 00002f4e: DUP3 00002f4f: DUP3 00002f50: MLOAD 00002f51: PUSH1 0x30 00002f53: SHR 00002f54: PUSH2 0x2e01 00002f57: JUMP 00002f58: JUMPDEST 00002f59: SWAP2 00002f5a: POP 00002f5b: PUSH2 0x2ed6 00002f5e: JUMP 00002f5f: JUMPDEST 00002f60: POP 00002f61: DUP4 00002f62: SWAP1 00002f63: SUB 00002f64: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002f85: ADD 00002f86: PUSH1 0x37 00002f88: DUP2 00002f89: GT 00002f8a: PUSH2 0x2fb5 00002f8d: JUMPI 00002f8e: PUSH1 0xc0 00002f90: DUP2 00002f91: ADD 00002f92: DUP5 00002f93: MSTORE8 00002f94: DUP4 00002f95: PUSH1 0x20 00002f97: ADD 00002f98: MLOAD 00002f99: DUP5 00002f9a: PUSH1 0x01 00002f9c: ADD 00002f9d: MSTORE 00002f9e: DUP4 00002f9f: PUSH1 0x40 00002fa1: ADD 00002fa2: MLOAD 00002fa3: DUP5 00002fa4: PUSH1 0x21 00002fa6: ADD 00002fa7: MSTORE 00002fa8: DUP4 00002fa9: PUSH1 0x01 00002fab: ADD 00002fac: DUP2 00002fad: ADD 00002fae: SWAP2 00002faf: POP 00002fb0: POP 00002fb1: PUSH2 0x1b06 00002fb4: JUMP 00002fb5: JUMPDEST 00002fb6: DUP4 00002fb7: MSTORE 00002fb8: PUSH2 0x2498 00002fbb: PUSH1 0xc0 00002fbd: DUP5 00002fbe: DUP1 00002fbf: PUSH2 0x2e16 00002fc2: JUMP 00002fc3: JUMPDEST 00002fc4: POP 00002fc5: PUSH1 0x40 00002fc7: MLOAD 00002fc8: PUSH1 0x20 00002fca: DUP2 00002fcb: ADD 00002fcc: PUSH2 0x2fd5 00002fcf: DUP2 00002fd0: DUP5 00002fd1: PUSH2 0x2eba 00002fd4: JUMP 00002fd5: JUMPDEST 00002fd6: SWAP1 00002fd7: DUP2 00002fd8: SUB 00002fd9: DUP3 00002fda: MSTORE 00002fdb: PUSH1 0x00 00002fdd: DUP2 00002fde: MSTORE 00002fdf: PUSH1 0x20 00002fe1: ADD 00002fe2: PUSH1 0x40 00002fe4: MSTORE 00002fe5: SWAP2 00002fe6: SWAP1 00002fe7: POP 00002fe8: JUMP 00002fe9: JUMPDEST 00002fea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002fff: DUP2 00003000: AND 00003001: DUP2 00003002: EQ 00003003: PUSH2 0x300b 00003006: JUMPI 00003007: PUSH1 0x00 00003009: DUP1 0000300a: REVERT 0000300b: JUMPDEST 0000300c: POP 0000300d: JUMP 0000300e: JUMPDEST 0000300f: PUSH1 0x00 00003011: DUP1 00003012: DUP4 00003013: PUSH1 0x1f 00003015: DUP5 00003016: ADD 00003017: SLT 00003018: PUSH2 0x3020 0000301b: JUMPI 0000301c: PUSH1 0x00 0000301e: DUP1 0000301f: REVERT 00003020: JUMPDEST 00003021: POP 00003022: DUP2 00003023: CALLDATALOAD 00003024: PUSH8 0xffffffffffffffff 0000302d: DUP2 0000302e: GT 0000302f: ISZERO 00003030: PUSH2 0x3038 00003033: JUMPI 00003034: PUSH1 0x00 00003036: DUP1 00003037: REVERT 00003038: JUMPDEST 00003039: PUSH1 0x20 0000303b: DUP4 0000303c: ADD 0000303d: SWAP2 0000303e: POP 0000303f: DUP4 00003040: PUSH1 0x20 00003042: DUP3 00003043: DUP6 00003044: ADD 00003045: ADD 00003046: GT 00003047: ISZERO 00003048: PUSH2 0x3050 0000304b: JUMPI 0000304c: PUSH1 0x00 0000304e: DUP1 0000304f: REVERT 00003050: JUMPDEST 00003051: SWAP3 00003052: POP 00003053: SWAP3 00003054: SWAP1 00003055: POP 00003056: JUMP 00003057: JUMPDEST 00003058: PUSH1 0x00 0000305a: DUP1 0000305b: PUSH1 0x00 0000305d: DUP1 0000305e: PUSH1 0x00 00003060: DUP1 00003061: PUSH1 0x00 00003063: PUSH1 0xc0 00003065: DUP9 00003066: DUP11 00003067: SUB 00003068: SLT 00003069: ISZERO 0000306a: PUSH2 0x3072 0000306d: JUMPI 0000306e: PUSH1 0x00 00003070: DUP1 00003071: REVERT 00003072: JUMPDEST 00003073: DUP8 00003074: CALLDATALOAD 00003075: PUSH2 0x307d 00003078: DUP2 00003079: PUSH2 0x2fe9 0000307c: JUMP 0000307d: JUMPDEST 0000307e: SWAP7 0000307f: POP 00003080: PUSH1 0x20 00003082: DUP9 00003083: ADD 00003084: CALLDATALOAD 00003085: PUSH2 0x308d 00003088: DUP2 00003089: PUSH2 0x2fe9 0000308c: JUMP 0000308d: JUMPDEST 0000308e: SWAP6 0000308f: POP 00003090: PUSH1 0x40 00003092: DUP9 00003093: ADD 00003094: CALLDATALOAD 00003095: PUSH2 0x309d 00003098: DUP2 00003099: PUSH2 0x2fe9 0000309c: JUMP 0000309d: JUMPDEST 0000309e: SWAP5 0000309f: POP 000030a0: PUSH1 0x60 000030a2: DUP9 000030a3: ADD 000030a4: CALLDATALOAD 000030a5: PUSH2 0x30ad 000030a8: DUP2 000030a9: PUSH2 0x2fe9 000030ac: JUMP 000030ad: JUMPDEST 000030ae: SWAP4 000030af: POP 000030b0: PUSH1 0x80 000030b2: DUP9 000030b3: ADD 000030b4: CALLDATALOAD 000030b5: SWAP3 000030b6: POP 000030b7: PUSH1 0xa0 000030b9: DUP9 000030ba: ADD 000030bb: CALLDATALOAD 000030bc: PUSH8 0xffffffffffffffff 000030c5: DUP2 000030c6: GT 000030c7: ISZERO 000030c8: PUSH2 0x30d0 000030cb: JUMPI 000030cc: PUSH1 0x00 000030ce: DUP1 000030cf: REVERT 000030d0: JUMPDEST 000030d1: PUSH2 0x30dc 000030d4: DUP11 000030d5: DUP3 000030d6: DUP12 000030d7: ADD 000030d8: PUSH2 0x300e 000030db: JUMP 000030dc: JUMPDEST 000030dd: SWAP9 000030de: SWAP12 000030df: SWAP8 000030e0: SWAP11 000030e1: POP 000030e2: SWAP6 000030e3: SWAP9 000030e4: POP 000030e5: SWAP4 000030e6: SWAP7 000030e7: SWAP3 000030e8: SWAP6 000030e9: SWAP3 000030ea: SWAP4 000030eb: POP 000030ec: POP 000030ed: POP 000030ee: JUMP 000030ef: JUMPDEST 000030f0: DUP1 000030f1: CALLDATALOAD 000030f2: PUSH4 0xffffffff 000030f7: DUP2 000030f8: AND 000030f9: DUP2 000030fa: EQ 000030fb: PUSH2 0x10ee 000030fe: JUMPI 000030ff: PUSH1 0x00 00003101: DUP1 00003102: REVERT 00003103: JUMPDEST 00003104: PUSH1 0x00 00003106: DUP1 00003107: PUSH1 0x00 00003109: PUSH1 0x40 0000310b: DUP5 0000310c: DUP7 0000310d: SUB 0000310e: SLT 0000310f: ISZERO 00003110: PUSH2 0x3118 00003113: JUMPI 00003114: PUSH1 0x00 00003116: DUP1 00003117: REVERT 00003118: JUMPDEST 00003119: PUSH2 0x3121 0000311c: DUP5 0000311d: PUSH2 0x30ef 00003120: JUMP 00003121: JUMPDEST 00003122: SWAP3 00003123: POP 00003124: PUSH1 0x20 00003126: DUP5 00003127: ADD 00003128: CALLDATALOAD 00003129: PUSH8 0xffffffffffffffff 00003132: DUP2 00003133: GT 00003134: ISZERO 00003135: PUSH2 0x313d 00003138: JUMPI 00003139: PUSH1 0x00 0000313b: DUP1 0000313c: REVERT 0000313d: JUMPDEST 0000313e: PUSH2 0x3149 00003141: DUP7 00003142: DUP3 00003143: DUP8 00003144: ADD 00003145: PUSH2 0x300e 00003148: JUMP 00003149: JUMPDEST 0000314a: SWAP5 0000314b: SWAP8 0000314c: SWAP1 0000314d: SWAP7 0000314e: POP 0000314f: SWAP4 00003150: SWAP5 00003151: POP 00003152: POP 00003153: POP 00003154: POP 00003155: JUMP 00003156: JUMPDEST 00003157: PUSH1 0x00 00003159: DUP1 0000315a: PUSH1 0x00 0000315c: DUP1 0000315d: PUSH1 0x00 0000315f: PUSH1 0x80 00003161: DUP7 00003162: DUP9 00003163: SUB 00003164: SLT 00003165: ISZERO 00003166: PUSH2 0x316e 00003169: JUMPI 0000316a: PUSH1 0x00 0000316c: DUP1 0000316d: REVERT 0000316e: JUMPDEST 0000316f: DUP6 00003170: CALLDATALOAD 00003171: PUSH2 0x3179 00003174: DUP2 00003175: PUSH2 0x2fe9 00003178: JUMP 00003179: JUMPDEST 0000317a: SWAP5 0000317b: POP 0000317c: PUSH1 0x20 0000317e: DUP7 0000317f: ADD 00003180: CALLDATALOAD 00003181: PUSH2 0x3189 00003184: DUP2 00003185: PUSH2 0x2fe9 00003188: JUMP 00003189: JUMPDEST 0000318a: SWAP4 0000318b: POP 0000318c: PUSH1 0x40 0000318e: DUP7 0000318f: ADD 00003190: CALLDATALOAD 00003191: SWAP3 00003192: POP 00003193: PUSH1 0x60 00003195: DUP7 00003196: ADD 00003197: CALLDATALOAD 00003198: PUSH8 0xffffffffffffffff 000031a1: DUP2 000031a2: GT 000031a3: ISZERO 000031a4: PUSH2 0x31ac 000031a7: JUMPI 000031a8: PUSH1 0x00 000031aa: DUP1 000031ab: REVERT 000031ac: JUMPDEST 000031ad: PUSH2 0x31b8 000031b0: DUP9 000031b1: DUP3 000031b2: DUP10 000031b3: ADD 000031b4: PUSH2 0x300e 000031b7: JUMP 000031b8: JUMPDEST 000031b9: SWAP7 000031ba: SWAP10 000031bb: SWAP6 000031bc: SWAP9 000031bd: POP 000031be: SWAP4 000031bf: SWAP7 000031c0: POP 000031c1: SWAP3 000031c2: SWAP5 000031c3: SWAP4 000031c4: SWAP3 000031c5: POP 000031c6: POP 000031c7: POP 000031c8: JUMP 000031c9: JUMPDEST 000031ca: PUSH1 0x00 000031cc: DUP1 000031cd: PUSH1 0x00 000031cf: DUP1 000031d0: PUSH1 0x00 000031d2: DUP1 000031d3: PUSH1 0xa0 000031d5: DUP8 000031d6: DUP10 000031d7: SUB 000031d8: SLT 000031d9: ISZERO 000031da: PUSH2 0x31e2 000031dd: JUMPI 000031de: PUSH1 0x00 000031e0: DUP1 000031e1: REVERT 000031e2: JUMPDEST 000031e3: DUP7 000031e4: CALLDATALOAD 000031e5: PUSH2 0x31ed 000031e8: DUP2 000031e9: PUSH2 0x2fe9 000031ec: JUMP 000031ed: JUMPDEST 000031ee: SWAP6 000031ef: POP 000031f0: PUSH1 0x20 000031f2: DUP8 000031f3: ADD 000031f4: CALLDATALOAD 000031f5: PUSH2 0x31fd 000031f8: DUP2 000031f9: PUSH2 0x2fe9 000031fc: JUMP 000031fd: JUMPDEST 000031fe: SWAP5 000031ff: POP 00003200: PUSH1 0x40 00003202: DUP8 00003203: ADD 00003204: CALLDATALOAD 00003205: SWAP4 00003206: POP 00003207: PUSH2 0x3212 0000320a: PUSH1 0x60 0000320c: DUP9 0000320d: ADD 0000320e: PUSH2 0x30ef 00003211: JUMP 00003212: JUMPDEST 00003213: SWAP3 00003214: POP 00003215: PUSH1 0x80 00003217: DUP8 00003218: ADD 00003219: CALLDATALOAD 0000321a: PUSH8 0xffffffffffffffff 00003223: DUP2 00003224: GT 00003225: ISZERO 00003226: PUSH2 0x322e 00003229: JUMPI 0000322a: PUSH1 0x00 0000322c: DUP1 0000322d: REVERT 0000322e: JUMPDEST 0000322f: PUSH2 0x323a 00003232: DUP10 00003233: DUP3 00003234: DUP11 00003235: ADD 00003236: PUSH2 0x300e 00003239: JUMP 0000323a: JUMPDEST 0000323b: SWAP8 0000323c: SWAP11 0000323d: SWAP7 0000323e: SWAP10 0000323f: POP 00003240: SWAP5 00003241: SWAP8 00003242: POP 00003243: SWAP3 00003244: SWAP6 00003245: SWAP4 00003246: SWAP5 00003247: SWAP3 00003248: POP 00003249: POP 0000324a: POP 0000324b: JUMP 0000324c: JUMPDEST 0000324d: PUSH1 0x00 0000324f: DUP1 00003250: PUSH1 0x40 00003252: DUP4 00003253: DUP6 00003254: SUB 00003255: SLT 00003256: ISZERO 00003257: PUSH2 0x325f 0000325a: JUMPI 0000325b: PUSH1 0x00 0000325d: DUP1 0000325e: REVERT 0000325f: JUMPDEST 00003260: DUP3 00003261: CALLDATALOAD 00003262: PUSH2 0x326a 00003265: DUP2 00003266: PUSH2 0x2fe9 00003269: JUMP 0000326a: JUMPDEST 0000326b: SWAP5 0000326c: PUSH1 0x20 0000326e: SWAP4 0000326f: SWAP1 00003270: SWAP4 00003271: ADD 00003272: CALLDATALOAD 00003273: SWAP4 00003274: POP 00003275: POP 00003276: POP 00003277: JUMP 00003278: JUMPDEST 00003279: PUSH1 0x00 0000327b: DUP1 0000327c: PUSH1 0x00 0000327e: DUP1 0000327f: PUSH1 0x00 00003281: DUP1 00003282: PUSH1 0x00 00003284: DUP1 00003285: PUSH1 0xe0 00003287: DUP10 00003288: DUP12 00003289: SUB 0000328a: SLT 0000328b: ISZERO 0000328c: PUSH2 0x3294 0000328f: JUMPI 00003290: PUSH1 0x00 00003292: DUP1 00003293: REVERT 00003294: JUMPDEST 00003295: DUP9 00003296: CALLDATALOAD 00003297: SWAP8 00003298: POP 00003299: PUSH1 0x20 0000329b: DUP10 0000329c: ADD 0000329d: CALLDATALOAD 0000329e: PUSH2 0x32a6 000032a1: DUP2 000032a2: PUSH2 0x2fe9 000032a5: JUMP 000032a6: JUMPDEST 000032a7: SWAP7 000032a8: POP 000032a9: PUSH1 0x40 000032ab: DUP10 000032ac: ADD 000032ad: CALLDATALOAD 000032ae: PUSH2 0x32b6 000032b1: DUP2 000032b2: PUSH2 0x2fe9 000032b5: JUMP 000032b6: JUMPDEST 000032b7: SWAP6 000032b8: POP 000032b9: PUSH1 0x60 000032bb: DUP10 000032bc: ADD 000032bd: CALLDATALOAD 000032be: PUSH2 0x32c6 000032c1: DUP2 000032c2: PUSH2 0x2fe9 000032c5: JUMP 000032c6: JUMPDEST 000032c7: SWAP5 000032c8: POP 000032c9: PUSH1 0x80 000032cb: DUP10 000032cc: ADD 000032cd: CALLDATALOAD 000032ce: PUSH2 0x32d6 000032d1: DUP2 000032d2: PUSH2 0x2fe9 000032d5: JUMP 000032d6: JUMPDEST 000032d7: SWAP4 000032d8: POP 000032d9: PUSH1 0xa0 000032db: DUP10 000032dc: ADD 000032dd: CALLDATALOAD 000032de: SWAP3 000032df: POP 000032e0: PUSH1 0xc0 000032e2: DUP10 000032e3: ADD 000032e4: CALLDATALOAD 000032e5: PUSH8 0xffffffffffffffff 000032ee: DUP2 000032ef: GT 000032f0: ISZERO 000032f1: PUSH2 0x32f9 000032f4: JUMPI 000032f5: PUSH1 0x00 000032f7: DUP1 000032f8: REVERT 000032f9: JUMPDEST 000032fa: PUSH2 0x3305 000032fd: DUP12 000032fe: DUP3 000032ff: DUP13 00003300: ADD 00003301: PUSH2 0x300e 00003304: JUMP 00003305: JUMPDEST 00003306: SWAP10 00003307: SWAP13 00003308: SWAP9 00003309: SWAP12 0000330a: POP 0000330b: SWAP7 0000330c: SWAP10 0000330d: POP 0000330e: SWAP5 0000330f: SWAP8 00003310: SWAP4 00003311: SWAP7 00003312: SWAP3 00003313: SWAP6 00003314: SWAP5 00003315: POP 00003316: POP 00003317: POP 00003318: JUMP 00003319: JUMPDEST 0000331a: PUSH1 0x00 0000331c: DUP1 0000331d: PUSH1 0x00 0000331f: DUP1 00003320: PUSH1 0x00 00003322: DUP1 00003323: PUSH1 0x00 00003325: PUSH1 0xc0 00003327: DUP9 00003328: DUP11 00003329: SUB 0000332a: SLT 0000332b: ISZERO 0000332c: PUSH2 0x3334 0000332f: JUMPI 00003330: PUSH1 0x00 00003332: DUP1 00003333: REVERT 00003334: JUMPDEST 00003335: DUP8 00003336: CALLDATALOAD 00003337: PUSH2 0x333f 0000333a: DUP2 0000333b: PUSH2 0x2fe9 0000333e: JUMP 0000333f: JUMPDEST 00003340: SWAP7 00003341: POP 00003342: PUSH1 0x20 00003344: DUP9 00003345: ADD 00003346: CALLDATALOAD 00003347: PUSH2 0x334f 0000334a: DUP2 0000334b: PUSH2 0x2fe9 0000334e: JUMP 0000334f: JUMPDEST 00003350: SWAP6 00003351: POP 00003352: PUSH1 0x40 00003354: DUP9 00003355: ADD 00003356: CALLDATALOAD 00003357: PUSH2 0x335f 0000335a: DUP2 0000335b: PUSH2 0x2fe9 0000335e: JUMP 0000335f: JUMPDEST 00003360: SWAP5 00003361: POP 00003362: PUSH1 0x60 00003364: DUP9 00003365: ADD 00003366: CALLDATALOAD 00003367: SWAP4 00003368: POP 00003369: PUSH2 0x3374 0000336c: PUSH1 0x80 0000336e: DUP10 0000336f: ADD 00003370: PUSH2 0x30ef 00003373: JUMP 00003374: JUMPDEST 00003375: SWAP3 00003376: POP 00003377: PUSH1 0xa0 00003379: DUP9 0000337a: ADD 0000337b: CALLDATALOAD 0000337c: PUSH8 0xffffffffffffffff 00003385: DUP2 00003386: GT 00003387: ISZERO 00003388: PUSH2 0x30d0 0000338b: JUMPI 0000338c: PUSH1 0x00 0000338e: DUP1 0000338f: REVERT 00003390: JUMPDEST 00003391: PUSH1 0x00 00003393: JUMPDEST 00003394: DUP4 00003395: DUP2 00003396: LT 00003397: ISZERO 00003398: PUSH2 0x33ab 0000339b: JUMPI 0000339c: DUP2 0000339d: DUP2 0000339e: ADD 0000339f: MLOAD 000033a0: DUP4 000033a1: DUP3 000033a2: ADD 000033a3: MSTORE 000033a4: PUSH1 0x20 000033a6: ADD 000033a7: PUSH2 0x3393 000033aa: JUMP 000033ab: JUMPDEST 000033ac: DUP4 000033ad: DUP2 000033ae: GT 000033af: ISZERO 000033b0: PUSH2 0x16ef 000033b3: JUMPI 000033b4: POP 000033b5: POP 000033b6: PUSH1 0x00 000033b8: SWAP2 000033b9: ADD 000033ba: MSTORE 000033bb: JUMP 000033bc: JUMPDEST 000033bd: PUSH1 0x00 000033bf: DUP2 000033c0: MLOAD 000033c1: DUP1 000033c2: DUP5 000033c3: MSTORE 000033c4: PUSH2 0x33d4 000033c7: DUP2 000033c8: PUSH1 0x20 000033ca: DUP7 000033cb: ADD 000033cc: PUSH1 0x20 000033ce: DUP7 000033cf: ADD 000033d0: PUSH2 0x3390 000033d3: JUMP 000033d4: JUMPDEST 000033d5: PUSH1 0x1f 000033d7: ADD 000033d8: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 000033f9: AND 000033fa: SWAP3 000033fb: SWAP1 000033fc: SWAP3 000033fd: ADD 000033fe: PUSH1 0x20 00003400: ADD 00003401: SWAP3 00003402: SWAP2 00003403: POP 00003404: POP 00003405: JUMP 00003406: JUMPDEST 00003407: PUSH1 0x20 00003409: DUP2 0000340a: MSTORE 0000340b: PUSH1 0x00 0000340d: PUSH2 0x2498 00003410: PUSH1 0x20 00003412: DUP4 00003413: ADD 00003414: DUP5 00003415: PUSH2 0x33bc 00003418: JUMP 00003419: JUMPDEST 0000341a: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000343b: PUSH1 0x00 0000343d: MSTORE 0000343e: PUSH1 0x41 00003440: PUSH1 0x04 00003442: MSTORE 00003443: PUSH1 0x24 00003445: PUSH1 0x00 00003447: REVERT 00003448: JUMPDEST 00003449: PUSH1 0x00 0000344b: DUP1 0000344c: PUSH1 0x00 0000344e: DUP1 0000344f: PUSH1 0x00 00003451: DUP1 00003452: PUSH1 0x00 00003454: PUSH1 0xe0 00003456: DUP9 00003457: DUP11 00003458: SUB 00003459: SLT 0000345a: ISZERO 0000345b: PUSH2 0x3463 0000345e: JUMPI 0000345f: PUSH1 0x00 00003461: DUP1 00003462: REVERT 00003463: JUMPDEST 00003464: DUP8 00003465: CALLDATALOAD 00003466: SWAP7 00003467: POP 00003468: PUSH1 0x20 0000346a: DUP9 0000346b: ADD 0000346c: CALLDATALOAD 0000346d: PUSH2 0x3475 00003470: DUP2 00003471: PUSH2 0x2fe9 00003474: JUMP 00003475: JUMPDEST 00003476: SWAP6 00003477: POP 00003478: PUSH1 0x40 0000347a: DUP9 0000347b: ADD 0000347c: CALLDATALOAD 0000347d: PUSH2 0x3485 00003480: DUP2 00003481: PUSH2 0x2fe9 00003484: JUMP 00003485: JUMPDEST 00003486: SWAP5 00003487: POP 00003488: PUSH1 0x60 0000348a: DUP9 0000348b: ADD 0000348c: CALLDATALOAD 0000348d: PUSH2 0x3495 00003490: DUP2 00003491: PUSH2 0x2fe9 00003494: JUMP 00003495: JUMPDEST 00003496: SWAP4 00003497: POP 00003498: PUSH1 0x80 0000349a: DUP9 0000349b: ADD 0000349c: CALLDATALOAD 0000349d: PUSH2 0x34a5 000034a0: DUP2 000034a1: PUSH2 0x2fe9 000034a4: JUMP 000034a5: JUMPDEST 000034a6: SWAP3 000034a7: POP 000034a8: PUSH1 0xa0 000034aa: DUP9 000034ab: ADD 000034ac: CALLDATALOAD 000034ad: SWAP2 000034ae: POP 000034af: PUSH1 0xc0 000034b1: DUP9 000034b2: ADD 000034b3: CALLDATALOAD 000034b4: PUSH8 0xffffffffffffffff 000034bd: DUP1 000034be: DUP3 000034bf: GT 000034c0: ISZERO 000034c1: PUSH2 0x34c9 000034c4: JUMPI 000034c5: PUSH1 0x00 000034c7: DUP1 000034c8: REVERT 000034c9: JUMPDEST 000034ca: DUP2 000034cb: DUP11 000034cc: ADD 000034cd: SWAP2 000034ce: POP 000034cf: DUP11 000034d0: PUSH1 0x1f 000034d2: DUP4 000034d3: ADD 000034d4: SLT 000034d5: PUSH2 0x34dd 000034d8: JUMPI 000034d9: PUSH1 0x00 000034db: DUP1 000034dc: REVERT 000034dd: JUMPDEST 000034de: DUP2 000034df: CALLDATALOAD 000034e0: DUP2 000034e1: DUP2 000034e2: GT 000034e3: ISZERO 000034e4: PUSH2 0x34ef 000034e7: JUMPI 000034e8: PUSH2 0x34ef 000034eb: PUSH2 0x3419 000034ee: JUMP 000034ef: JUMPDEST 000034f0: PUSH1 0x40 000034f2: MLOAD 000034f3: PUSH1 0x1f 000034f5: DUP3 000034f6: ADD 000034f7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00003518: SWAP1 00003519: DUP2 0000351a: AND 0000351b: PUSH1 0x3f 0000351d: ADD 0000351e: AND 0000351f: DUP2 00003520: ADD 00003521: SWAP1 00003522: DUP4 00003523: DUP3 00003524: GT 00003525: DUP2 00003526: DUP4 00003527: LT 00003528: OR 00003529: ISZERO 0000352a: PUSH2 0x3535 0000352d: JUMPI 0000352e: PUSH2 0x3535 00003531: PUSH2 0x3419 00003534: JUMP 00003535: JUMPDEST 00003536: DUP2 00003537: PUSH1 0x40 00003539: MSTORE 0000353a: DUP3 0000353b: DUP2 0000353c: MSTORE 0000353d: DUP14 0000353e: PUSH1 0x20 00003540: DUP5 00003541: DUP8 00003542: ADD 00003543: ADD 00003544: GT 00003545: ISZERO 00003546: PUSH2 0x354e 00003549: JUMPI 0000354a: PUSH1 0x00 0000354c: DUP1 0000354d: REVERT 0000354e: JUMPDEST 0000354f: DUP3 00003550: PUSH1 0x20 00003552: DUP7 00003553: ADD 00003554: PUSH1 0x20 00003556: DUP4 00003557: ADD 00003558: CALLDATACOPY 00003559: PUSH1 0x00 0000355b: PUSH1 0x20 0000355d: DUP5 0000355e: DUP4 0000355f: ADD 00003560: ADD 00003561: MSTORE 00003562: DUP1 00003563: SWAP6 00003564: POP 00003565: POP 00003566: POP 00003567: POP 00003568: POP 00003569: POP 0000356a: SWAP3 0000356b: SWAP6 0000356c: SWAP9 0000356d: SWAP2 0000356e: SWAP5 0000356f: SWAP8 00003570: POP 00003571: SWAP3 00003572: SWAP6 00003573: POP 00003574: JUMP 00003575: JUMPDEST 00003576: PUSH1 0x00 00003578: PUSH1 0x20 0000357a: DUP3 0000357b: DUP5 0000357c: SUB 0000357d: SLT 0000357e: ISZERO 0000357f: PUSH2 0x3587 00003582: JUMPI 00003583: PUSH1 0x00 00003585: DUP1 00003586: REVERT 00003587: JUMPDEST 00003588: POP 00003589: CALLDATALOAD 0000358a: SWAP2 0000358b: SWAP1 0000358c: POP 0000358d: JUMP 0000358e: JUMPDEST 0000358f: PUSH1 0x00 00003591: DUP1 00003592: PUSH1 0x40 00003594: DUP4 00003595: DUP6 00003596: SUB 00003597: SLT 00003598: ISZERO 00003599: PUSH2 0x35a1 0000359c: JUMPI 0000359d: PUSH1 0x00 0000359f: DUP1 000035a0: REVERT 000035a1: JUMPDEST 000035a2: DUP3 000035a3: CALLDATALOAD 000035a4: PUSH2 0x35ac 000035a7: DUP2 000035a8: PUSH2 0x2fe9 000035ab: JUMP 000035ac: JUMPDEST 000035ad: SWAP2 000035ae: POP 000035af: PUSH1 0x20 000035b1: DUP4 000035b2: ADD 000035b3: CALLDATALOAD 000035b4: PUSH2 0x35bc 000035b7: DUP2 000035b8: PUSH2 0x2fe9 000035bb: JUMP 000035bc: JUMPDEST 000035bd: DUP1 000035be: SWAP2 000035bf: POP 000035c0: POP 000035c1: SWAP3 000035c2: POP 000035c3: SWAP3 000035c4: SWAP1 000035c5: POP 000035c6: JUMP 000035c7: JUMPDEST 000035c8: PUSH1 0x00 000035ca: DUP1 000035cb: PUSH1 0x00 000035cd: DUP1 000035ce: PUSH1 0x60 000035d0: DUP6 000035d1: DUP8 000035d2: SUB 000035d3: SLT 000035d4: ISZERO 000035d5: PUSH2 0x35dd 000035d8: JUMPI 000035d9: PUSH1 0x00 000035db: DUP1 000035dc: REVERT 000035dd: JUMPDEST 000035de: DUP5 000035df: CALLDATALOAD 000035e0: PUSH2 0x35e8 000035e3: DUP2 000035e4: PUSH2 0x2fe9 000035e7: JUMP 000035e8: JUMPDEST 000035e9: SWAP4 000035ea: POP 000035eb: PUSH2 0x35f6 000035ee: PUSH1 0x20 000035f0: DUP7 000035f1: ADD 000035f2: PUSH2 0x30ef 000035f5: JUMP 000035f6: JUMPDEST 000035f7: SWAP3 000035f8: POP 000035f9: PUSH1 0x40 000035fb: DUP6 000035fc: ADD 000035fd: CALLDATALOAD 000035fe: PUSH8 0xffffffffffffffff 00003607: DUP2 00003608: GT 00003609: ISZERO 0000360a: PUSH2 0x3612 0000360d: JUMPI 0000360e: PUSH1 0x00 00003610: DUP1 00003611: REVERT 00003612: JUMPDEST 00003613: PUSH2 0x361e 00003616: DUP8 00003617: DUP3 00003618: DUP9 00003619: ADD 0000361a: PUSH2 0x300e 0000361d: JUMP 0000361e: JUMPDEST 0000361f: SWAP6 00003620: SWAP9 00003621: SWAP5 00003622: SWAP8 00003623: POP 00003624: SWAP6 00003625: POP 00003626: POP 00003627: POP 00003628: POP 00003629: JUMP 0000362a: JUMPDEST 0000362b: PUSH1 0x00 0000362d: DUP1 0000362e: PUSH1 0x00 00003630: DUP1 00003631: PUSH1 0x80 00003633: DUP6 00003634: DUP8 00003635: SUB 00003636: SLT 00003637: ISZERO 00003638: PUSH2 0x3640 0000363b: JUMPI 0000363c: PUSH1 0x00 0000363e: DUP1 0000363f: REVERT 00003640: JUMPDEST 00003641: DUP5 00003642: CALLDATALOAD 00003643: PUSH2 0x364b 00003646: DUP2 00003647: PUSH2 0x2fe9 0000364a: JUMP 0000364b: JUMPDEST 0000364c: SWAP4 0000364d: POP 0000364e: PUSH1 0x20 00003650: DUP6 00003651: ADD 00003652: CALLDATALOAD 00003653: PUSH2 0x365b 00003656: DUP2 00003657: PUSH2 0x2fe9 0000365a: JUMP 0000365b: JUMPDEST 0000365c: SWAP3 0000365d: POP 0000365e: PUSH1 0x40 00003660: DUP6 00003661: ADD 00003662: CALLDATALOAD 00003663: PUSH2 0x366b 00003666: DUP2 00003667: PUSH2 0x2fe9 0000366a: JUMP 0000366b: JUMPDEST 0000366c: SWAP2 0000366d: POP 0000366e: PUSH1 0x60 00003670: DUP6 00003671: ADD 00003672: CALLDATALOAD 00003673: PUSH2 0x367b 00003676: DUP2 00003677: PUSH2 0x2fe9 0000367a: JUMP 0000367b: JUMPDEST 0000367c: SWAP4 0000367d: SWAP7 0000367e: SWAP3 0000367f: SWAP6 00003680: POP 00003681: SWAP1 00003682: SWAP4 00003683: POP 00003684: POP 00003685: JUMP 00003686: JUMPDEST 00003687: PUSH1 0x00 00003689: PUSH1 0x20 0000368b: DUP3 0000368c: DUP5 0000368d: SUB 0000368e: SLT 0000368f: ISZERO 00003690: PUSH2 0x3698 00003693: JUMPI 00003694: PUSH1 0x00 00003696: DUP1 00003697: REVERT 00003698: JUMPDEST 00003699: DUP2 0000369a: MLOAD 0000369b: PUSH2 0x2498 0000369e: DUP2 0000369f: PUSH2 0x2fe9 000036a2: JUMP 000036a3: JUMPDEST 000036a4: PUSH1 0x00 000036a6: DUP3 000036a7: DUP3 000036a8: LT 000036a9: ISZERO 000036aa: PUSH2 0x36dc 000036ad: JUMPI 000036ae: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000036cf: PUSH1 0x00 000036d1: MSTORE 000036d2: PUSH1 0x11 000036d4: PUSH1 0x04 000036d6: MSTORE 000036d7: PUSH1 0x24 000036d9: PUSH1 0x00 000036db: REVERT 000036dc: JUMPDEST 000036dd: POP 000036de: SUB 000036df: SWAP1 000036e0: JUMP 000036e1: JUMPDEST 000036e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000036f7: DUP5 000036f8: AND 000036f9: DUP2 000036fa: MSTORE 000036fb: DUP3 000036fc: PUSH1 0x20 000036fe: DUP3 000036ff: ADD 00003700: MSTORE 00003701: PUSH1 0x60 00003703: PUSH1 0x40 00003705: DUP3 00003706: ADD 00003707: MSTORE 00003708: PUSH1 0x00 0000370a: PUSH2 0x3716 0000370d: PUSH1 0x60 0000370f: DUP4 00003710: ADD 00003711: DUP5 00003712: PUSH2 0x33bc 00003715: JUMP 00003716: JUMPDEST 00003717: SWAP6 00003718: SWAP5 00003719: POP 0000371a: POP 0000371b: POP 0000371c: POP 0000371d: POP 0000371e: JUMP 0000371f: JUMPDEST 00003720: PUSH1 0x00 00003722: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003737: DUP1 00003738: DUP8 00003739: AND 0000373a: DUP4 0000373b: MSTORE 0000373c: DUP1 0000373d: DUP7 0000373e: AND 0000373f: PUSH1 0x20 00003741: DUP5 00003742: ADD 00003743: MSTORE 00003744: POP 00003745: DUP4 00003746: PUSH1 0x40 00003748: DUP4 00003749: ADD 0000374a: MSTORE 0000374b: PUSH1 0x80 0000374d: PUSH1 0x60 0000374f: DUP4 00003750: ADD 00003751: MSTORE 00003752: PUSH2 0x375e 00003755: PUSH1 0x80 00003757: DUP4 00003758: ADD 00003759: DUP5 0000375a: PUSH2 0x33bc 0000375d: JUMP 0000375e: JUMPDEST 0000375f: SWAP7 00003760: SWAP6 00003761: POP 00003762: POP 00003763: POP 00003764: POP 00003765: POP 00003766: POP 00003767: JUMP 00003768: JUMPDEST 00003769: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000377e: DUP5 0000377f: AND 00003780: DUP2 00003781: MSTORE 00003782: PUSH1 0x60 00003784: PUSH1 0x20 00003786: DUP3 00003787: ADD 00003788: MSTORE 00003789: PUSH1 0x00 0000378b: PUSH2 0x3797 0000378e: PUSH1 0x60 00003790: DUP4 00003791: ADD 00003792: DUP6 00003793: PUSH2 0x33bc 00003796: JUMP 00003797: JUMPDEST 00003798: SWAP1 00003799: POP 0000379a: PUSH4 0xffffffff 0000379f: DUP4 000037a0: AND 000037a1: PUSH1 0x40 000037a3: DUP4 000037a4: ADD 000037a5: MSTORE 000037a6: SWAP5 000037a7: SWAP4 000037a8: POP 000037a9: POP 000037aa: POP 000037ab: POP 000037ac: JUMP 000037ad: JUMPDEST 000037ae: DUP3 000037af: DUP2 000037b0: MSTORE 000037b1: PUSH1 0x40 000037b3: PUSH1 0x20 000037b5: DUP3 000037b6: ADD 000037b7: MSTORE 000037b8: PUSH1 0x00 000037ba: PUSH2 0x296a 000037bd: PUSH1 0x40 000037bf: DUP4 000037c0: ADD 000037c1: DUP5 000037c2: PUSH2 0x33bc 000037c5: JUMP 000037c6: JUMPDEST 000037c7: PUSH1 0x00 000037c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000037de: DUP1 000037df: DUP10 000037e0: AND 000037e1: DUP4 000037e2: MSTORE 000037e3: DUP1 000037e4: DUP9 000037e5: AND 000037e6: PUSH1 0x20 000037e8: DUP5 000037e9: ADD 000037ea: MSTORE 000037eb: DUP1 000037ec: DUP8 000037ed: AND 000037ee: PUSH1 0x40 000037f0: DUP5 000037f1: ADD 000037f2: MSTORE 000037f3: DUP1 000037f4: DUP7 000037f5: AND 000037f6: PUSH1 0x60 000037f8: DUP5 000037f9: ADD 000037fa: MSTORE 000037fb: POP 000037fc: DUP4 000037fd: PUSH1 0x80 000037ff: DUP4 00003800: ADD 00003801: MSTORE 00003802: PUSH1 0xc0 00003804: PUSH1 0xa0 00003806: DUP4 00003807: ADD 00003808: MSTORE 00003809: PUSH2 0x3815 0000380c: PUSH1 0xc0 0000380e: DUP4 0000380f: ADD 00003810: DUP5 00003811: PUSH2 0x33bc 00003814: JUMP 00003815: JUMPDEST 00003816: SWAP9 00003817: SWAP8 00003818: POP 00003819: POP 0000381a: POP 0000381b: POP 0000381c: POP 0000381d: POP 0000381e: POP 0000381f: POP 00003820: JUMP 00003821: JUMPDEST 00003822: DUP8 00003823: DUP2 00003824: MSTORE 00003825: PUSH1 0x00 00003827: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000383c: DUP1 0000383d: DUP10 0000383e: AND 0000383f: PUSH1 0x20 00003841: DUP5 00003842: ADD 00003843: MSTORE 00003844: DUP1 00003845: DUP9 00003846: AND 00003847: PUSH1 0x40 00003849: DUP5 0000384a: ADD 0000384b: MSTORE 0000384c: DUP1 0000384d: DUP8 0000384e: AND 0000384f: PUSH1 0x60 00003851: DUP5 00003852: ADD 00003853: MSTORE 00003854: DUP1 00003855: DUP7 00003856: AND 00003857: PUSH1 0x80 00003859: DUP5 0000385a: ADD 0000385b: MSTORE 0000385c: POP 0000385d: DUP4 0000385e: PUSH1 0xa0 00003860: DUP4 00003861: ADD 00003862: MSTORE 00003863: PUSH1 0xe0 00003865: PUSH1 0xc0 00003867: DUP4 00003868: ADD 00003869: MSTORE 0000386a: PUSH2 0x3876 0000386d: PUSH1 0xe0 0000386f: DUP4 00003870: ADD 00003871: DUP5 00003872: PUSH2 0x33bc 00003875: JUMP 00003876: JUMPDEST 00003877: SWAP10 00003878: SWAP9 00003879: POP 0000387a: POP 0000387b: POP 0000387c: POP 0000387d: POP 0000387e: POP 0000387f: POP 00003880: POP 00003881: POP 00003882: JUMP 00003883: JUMPDEST 00003884: PUSH1 0x00 00003886: PUSH1 0x20 00003888: DUP3 00003889: DUP5 0000388a: SUB 0000388b: SLT 0000388c: ISZERO 0000388d: PUSH2 0x3895 00003890: JUMPI 00003891: PUSH1 0x00 00003893: DUP1 00003894: REVERT 00003895: JUMPDEST 00003896: DUP2 00003897: MLOAD 00003898: DUP1 00003899: ISZERO 0000389a: ISZERO 0000389b: DUP2 0000389c: EQ 0000389d: PUSH2 0x2498 000038a0: JUMPI 000038a1: PUSH1 0x00 000038a3: DUP1 000038a4: REVERT 000038a5: JUMPDEST 000038a6: PUSH1 0x00 000038a8: DUP1 000038a9: PUSH1 0x40 000038ab: DUP4 000038ac: DUP6 000038ad: SUB 000038ae: SLT 000038af: ISZERO 000038b0: PUSH2 0x38b8 000038b3: JUMPI 000038b4: PUSH1 0x00 000038b6: DUP1 000038b7: REVERT 000038b8: JUMPDEST 000038b9: DUP3 000038ba: MLOAD 000038bb: PUSH2 0x38c3 000038be: DUP2 000038bf: PUSH2 0x2fe9 000038c2: JUMP 000038c3: JUMPDEST 000038c4: PUSH1 0x20 000038c6: DUP5 000038c7: ADD 000038c8: MLOAD 000038c9: SWAP1 000038ca: SWAP3 000038cb: POP 000038cc: PUSH1 0xff 000038ce: DUP2 000038cf: AND 000038d0: DUP2 000038d1: EQ 000038d2: PUSH2 0x35bc 000038d5: JUMPI 000038d6: PUSH1 0x00 000038d8: DUP1 000038d9: REVERT 000038da: JUMPDEST 000038db: PUSH1 0x00 000038dd: DUP3 000038de: MLOAD 000038df: PUSH2 0x38ec 000038e2: DUP2 000038e3: DUP5 000038e4: PUSH1 0x20 000038e6: DUP8 000038e7: ADD 000038e8: PUSH2 0x3390 000038eb: JUMP 000038ec: JUMPDEST 000038ed: SWAP2 000038ee: SWAP1 000038ef: SWAP2 000038f0: ADD 000038f1: SWAP3 000038f2: SWAP2 000038f3: POP 000038f4: POP 000038f5: JUMP 000038f6: JUMPDEST 000038f7: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 00003918: DUP4 00003919: PUSH1 0xf8 0000391b: SHL 0000391c: AND 0000391d: DUP2 0000391e: MSTORE 0000391f: PUSH1 0x00 00003921: DUP3 00003922: MLOAD 00003923: PUSH2 0x3933 00003926: DUP2 00003927: PUSH1 0x01 00003929: DUP6 0000392a: ADD 0000392b: PUSH1 0x20 0000392d: DUP8 0000392e: ADD 0000392f: PUSH2 0x3390 00003932: JUMP 00003933: JUMPDEST 00003934: SWAP2 00003935: SWAP1 00003936: SWAP2 00003937: ADD 00003938: PUSH1 0x01 0000393a: ADD 0000393b: SWAP4 0000393c: SWAP3 0000393d: POP 0000393e: POP 0000393f: POP 00003940: JUMP 00003941: INVALID 00003942: LOG1 00003943: PUSH5 0x736f6c6343 00003949: STOP 0000394a: ADDMOD 0000394b: UNKNOWN(0x0F) 0000394c: STOP 0000394d: EXP
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518
call_targets:
0x77764bdf2b52c4b2635a73927945541b65df74e9
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x77764bdf2b52c4b2635a73927945541b65df74e9"
],
"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": "0xc89701a2",
"selector": "0xc89701a2",
"calldata_variants": [
"0xc89701a2",
"0xc89701a20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe11013dd",
"selector": "0xe11013dd",
"calldata_variants": [
"0xe11013dd",
"0xe11013dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf851a440",
"selector": "0xf851a440",
"calldata_variants": [
"0xf851a440",
"0xf851a4400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8c8765e",
"selector": "0xf8c8765e",
"calldata_variants": [
"0xf8c8765e",
"0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a2ac6d5",
"selector": "0x9a2ac6d5",
"calldata_variants": [
"0x9a2ac6d5",
"0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9f9e675",
"selector": "0xa9f9e675",
"calldata_variants": [
"0xa9f9e675",
"0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1a1a882",
"selector": "0xb1a1a882",
"calldata_variants": [
"0xb1a1a882",
"0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc474889",
"selector": "0xbc474889",
"calldata_variants": [
"0xbc474889",
"0xbc4748890000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2310,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4597,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4693,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [
{
"pc": 4362,
"type": "msg_sender_eq_const",
"value": 1.0201278951675005e+48
},
{
"pc": 4340,
"type": "msg_sender_eq_const",
"value": "0xb2b01decb6cd36e7396b78d3744482627f22c525"
}
],
"untrusted_call_count": 7
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518
call_targets:
0x77764bdf2b52c4b2635a73927945541b65df74e9
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x77764bdf2b52c4b2635a73927945541b65df74e9"
],
"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": "0xc89701a2",
"selector": "0xc89701a2",
"calldata_variants": [
"0xc89701a2",
"0xc89701a20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe11013dd",
"selector": "0xe11013dd",
"calldata_variants": [
"0xe11013dd",
"0xe11013dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf851a440",
"selector": "0xf851a440",
"calldata_variants": [
"0xf851a440",
"0xf851a4400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8c8765e",
"selector": "0xf8c8765e",
"calldata_variants": [
"0xf8c8765e",
"0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a2ac6d5",
"selector": "0x9a2ac6d5",
"calldata_variants": [
"0x9a2ac6d5",
"0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9f9e675",
"selector": "0xa9f9e675",
"calldata_variants": [
"0xa9f9e675",
"0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1a1a882",
"selector": "0xb1a1a882",
"calldata_variants": [
"0xb1a1a882",
"0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc474889",
"selector": "0xbc474889",
"calldata_variants": [
"0xbc474889",
"0xbc4748890000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2310,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4597,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4693,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": [
{
"pc": 4362,
"type": "msg_sender_eq_const",
"value": 1.0201278951675005e+48
},
{
"pc": 4340,
"type": "msg_sender_eq_const",
"value": "0xb2b01decb6cd36e7396b78d3744482627f22c525"
}
]
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 13
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 13
}
|