TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

019d5666-722e-7090-ac76-01dc76d2ad3b

failed
Chain ID
1
Address
Block Number
Created
Sat, Apr 4, 2026 2:50 AM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Verified
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
42890 artifact.fetch complete 1 / 3 1 week ago
42891 proxy.resolve complete 1 / 3 1 week ago
42892 tool.cast_disasm complete 1 / 3 1 week ago
42893 analysis.bundle complete 1 / 3 1 week ago
42894 capability.graph complete 1 / 3 1 week ago
42895 detector.run complete 1 / 3 1 week ago
42896 validation.fork complete 1 / 3 1 week ago
42983 report.consolidate complete 1 / 6 1 week ago
42984 tool.slither failed 2 / 2 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither
Status
failed slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-d8zzzvm4) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-d8zzzvm4) Traceback (most recent call last): File "/var/www/tripwire/.venv/bin/slither", line 10, in <module> sys.exit(main()) ~~~~^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main main_impl(all_detector_classes=detectors, all_printer_classes=printers) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl ) = process_all(filename, args, detector_classes, printer_classes) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all compilations = compile_all(target, **vars(args)) File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all compilations.append(CryticCompile(target, **kwargs)) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__ self._compile(**kwargs) ~~~~~~~~~~~~~^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile self._platform.compile(self, **kwargs) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile hardhat_like_parsing( ~~~~~~~~~~~~~~~~~~~~^ crytic_compile, str(self._target), build_directory, str(self._project_root) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing raise InvalidCompilation(txt) crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command? /tmp/slither-d8zzzvm4/out/build-info is not a directory.
Attempts
2 / 2
Findings
0
Solc
View stderr
Traceback (most recent call last):
  File "/var/www/tripwire/worker/worker.py", line 198, in main
    payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
  File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
    return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
    stdout_text, stderr_text, result_json = _run_slither(
                                            ~~~~~~~~~~~~^
        workspace,
        ^^^^^^^^^^
    ...<4 lines>...
        target_path=target_path,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
    raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-d8zzzvm4)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-d8zzzvm4)
Traceback (most recent call last):
  File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
    main_impl(all_detector_classes=detectors, all_printer_classes=printers)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
    compilations = compile_all(target, **vars(args))
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
    compilations.append(CryticCompile(target, **kwargs))
                        ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
    self._compile(**kwargs)
    ~~~~~~~~~~~~~^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
    self._platform.compile(self, **kwargs)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
    hardhat_like_parsing(
    ~~~~~~~~~~~~~~~~~~~~^
        crytic_compile, str(self._target), build_directory, str(self._project_root)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
    raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-d8zzzvm4/out/build-info is not a directory.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
0
No findings?
yes
Summary
Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.
View stdout
{"no_findings":true,"summary":"Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.","findings":[]}
View stderr
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-x0fjpb7d
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d56a2-fa71-7420-afd3-fe80aade690d
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc "pwd && ls -la && printf '\\n--- AUDIT_BUNDLE head ---\\n' && wc -l AUDIT_BUNDLE.txt && sed -n '1,220p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
/tmp/codex-x0fjpb7d
total 144
drwx------   2 noahkuhn noahkuhn  4096 Apr  4 03:56 .
drwxrwxrwt 254 nobody   nogroup  24576 Apr  4 03:56 ..
-rw-rw-r--   1 noahkuhn noahkuhn 49855 Apr  4 03:56 AUDIT_BUNDLE.txt
-rw-rw-r--   1 noahkuhn noahkuhn   815 Apr  4 03:56 codex-output-schema.json
-rw-rw-r--   1 noahkuhn noahkuhn  9309 Apr  4 03:56 CryptoZinjaTorii.sol
-rw-rw-r--   1 noahkuhn noahkuhn 41310 Apr  4 03:56 OpenzeppelinERC721.sol

--- AUDIT_BUNDLE head ---
1323 AUDIT_BUNDLE.txt
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: CryptoZinjaTorii.sol
================================================================================
pragma solidity >=0.8.10 <=0.8.10;

import "./OpenzeppelinERC721.sol";


// =========== =========== =========== =========== =========== 
//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
// =========== =========== =========== =========== =========== 
//   |     |     |     |     |     |     |     |     |     |   
//   |     |     |     |     |     |     |     |     |     |   


// =========== =========== =========== =========== =========== 
//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
// =========== =========== =========== =========== =========== 
//   |     |     |     |     |     |     |     |     |     |   
//   |     |     |     |     |     |     |     |     |     |   



//ZZZZZZZZZZZZZZZZZZZ  iiii                    jjjj                   
//Z:::::::::::::::::Z i::::i                  j::::j                  
//Z:::::::::::::::::Z  iiii                    jjjj                   
//Z:::ZZZZZZZZ:::::Z                                                  
//ZZZZZ     Z:::::Z  iiiiiiinnnn  nnnnnnnn   jjjjjjj  aaaaaaaaaaaaa   
//        Z:::::Z    i:::::in:::nn::::::::nn j:::::j  a::::::::::::a  
//       Z:::::Z      i::::in::::::::::::::nn j::::j  aaaaaaaaa:::::a 
//      Z:::::Z       i::::inn:::::::::::::::nj::::j           a::::a 
//     Z:::::Z        i::::i  n:::::nnnn:::::nj::::j    aaaaaaa:::::a 
//    Z:::::Z         i::::i  n::::n    n::::nj::::j  aa::::::::::::a 
//   Z:::::Z          i::::i  n::::n    n::::nj::::j a::::aaaa::::::a 
//ZZZ:::::Z     ZZZZZ i::::i  n::::n    n::::nj::::ja::::a    a:::::a 
//Z::::::ZZZZZZZZ:::Zi::::::i n::::n    n::::nj::::ja::::a    a:::::a 
//Z:::::::::::::::::Zi::::::i n::::n    n::::nj::::ja:::::aaaa::::::a 
//Z:::::::::::::::::Zi::::::i n::::n    n::::nj::::j a::::::::::aa:::a
//ZZZZZZZZZZZZZZZZZZZiiiiiiii nnnnnn    nnnnnnj::::j  aaaaaaaaaa  aaaa
//                                            j::::j                  
//                                  jjjj      j::::j                  
//                                 j::::jj   j:::::j                  
//                                 j::::::jjj::::::j                  
//                                  jj::::::::::::j                   
//                                    jjj::::::jjj                    
//                                       jjjjjj                       



// =========== =========== =========== =========== =========== 
//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
// =========== =========== =========== =========== =========== 
//   |     |     |     |     |     |     |     |     |     |   
//   |     |     |     |     |     |     |     |     |     |   


// =========== =========== =========== =========== =========== 
//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
// =========== =========== =========== =========== =========== 
//   |     |     |     |     |     |     |     |     |     |   
//   |     |     |     |     |     |     |     |     |     |   



contract Torii is  ERC721URIStorage , ERC721Enumerable{

    address public owner;
    uint public nftid = 0;
    mapping(uint => string) toriiMessage;

    //zinja metadata
    string[5] z;

    //O-torii metadata
    string[4] o;

    //senbon-torii metadata
    string[4] s;

    mapping(uint=>string) builtyear;

    function multiMint(uint qty) public {
        require( _msgSender() == owner );
        uint target = nftid - 1 + qty;
        for (uint i = nftid; i <= target; i++ ){
            _safeMint( owner , nftid);
            builtyear[nftid] = calcYear();
            nftid++;
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 tokenId)
        internal
        override(ERC721,ERC721Enumerable)
    {
        super._beforeTokenTransfer(from, to, tokenId);
    }

    function _burn(uint256 tokenId) internal override(ERC721,ERC721URIStorage) {
        super._burn(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721,ERC721URIStorage)
        returns (string memory)
    {
        if(tokenId == 0){
            string memory Otorii = string(abi.encodePacked(z[0],o[0],Strings.toString(tokenId),o[1],z[1],o[2],z[2],o[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
            return Otorii;
        }
        string memory json = string(abi.encodePacked(z[0],s[0],Strings.toString(tokenId),s[1],z[1],s[2],z[2],s[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
        return json;
    }

    function setToriiMessage(uint _tokenId , string memory _toriiMessage ) public {
        require(_msgSender() == ownerOf(_tokenId));
        toriiMessage[_tokenId] = _toriiMessage;
    }

    function readToriiMessage(uint _tokenId ) public view returns(string memory){
        if(keccak256(abi.encodePacked(toriiMessage[_tokenId])) == keccak256(abi.encodePacked("")) ){
            return "no name";
        }
        return toriiMessage[_tokenId];
    }

    function calcYear() public view returns (string memory){
        return Strings.toString(calcYearLogic(block.timestamp));
    }

    function calcYearLogic(uint _unixtime) public pure returns (uint){
        return 1970 + _unixtime/((31536000 * 3 + 31622400)/4);
    }


    function supportsInterface(bytes4 interfaceId)
        public
        view
        override(ERC721,ERC721Enumerable)
        returns (bool)
    {
        return super.supportsInterface(interfaceId);
    }



    constructor() ERC721("torii" , "TORII" ) {

        z[0] = "data:application/json;utf8,{\"name\":\"";
        s[0] = "\u3010\u5343\u672c\u9ce5\u5c45\u3011Engrave name on the Senbon-Torii #";
        o[0] = "\u3010\u5275\u5efa\u8a18\u5ff5 \u5927\u9ce5\u5c45\u3011Engrave name on the O-Torii";
        s[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306b\u5b58\u5728\u3059\u308b\u5343\u672c\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5171\u306b\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
        o[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306e\u4e2d\u592e\u306b\u5b58\u5728\u3059\u308b\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u8a18\u5ff5\u3059\u3079\u304d\u5275\u5efa\u8a18\u5ff5\u306e\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5927\u304d\u304f\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
        z[1] = "Crypto Zinja\u306e\u6b63\u5f0f\u30aa\u30fc\u30d7\u30f3\u3068\u5171\u306b\u3053\u3061\u3089\u306e\u30da\u30fc\u30b8\u304b\u3089\u540d\u524d\u3092\u523b\u3080\u4e8b\u304c\u51fa\u6765\u307e\u3059\u3002 https://conata.world/zinja \u3000\u523b\u3080\u540d\u524d\u306b\u95a2\u3057\u3066\u306f\u304a\u540d\u524d\u3001\u4f01\u696d\u540d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306a\u3069\u597d\u304d\u306a\u6587\u5b57\u3092\u523b\u3093\u3067\u9802\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Crypto Zinja\u306f\u65e5\u672c\u53e4\u6765\u306e\u6587\u5316\u3092\u984c\u6750\u306b\u73fe\u5b9f\u7a7a\u9593\u3092\u5dfb\u304d\u8fbc\u307f\u62e1\u5f35\u3057\u3066\u3044\u304f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u3053\u306e\u7a7a\u9593\u3092\u5171\u306b\u80b2\u3066\u3066\u304f\u3060\u3055\u308b\u3042\u306a\u305f\u306b\u611f\u8b1d\u3092\u8fbc\u3081\u3066\u3002  \\n  \\nThis is an NFT for the right to have your name engraved on the ";
        s[2] = "Senbon";
        o[2] = "O";
        z[2] = "-Torii gate of Crypto Zinja, which will be built in Metaverse. You can inscribe your name on this page when Crypto Zinja is officially opened: https://conata.world/zinja You can inscribe your name, company name, project name, etc. Crypto Zinja is a project to involve and expand the real space based on the ancient Japanese culture. I would like to express our gratitude to you who will nurture this space with us.\",\"animation_url\":\"";
        s[3] = "https://arweave.net/NsU6pqKl04X6m0E7_fEKut3j5kBYQ1421cf1NW9gtGY\",\"image\":\"https://arweave.net/7FdbwyAuZ80xjZMm71Fz7ssCovFd1wtmKhGTqEvu-7U\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"Senbon-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
        o[3] = "https://arweave.net/ioEuPnHgNSwwP1lrh4t6JKl0tTE-lkymCHAnDBLaCF4\",\"image\":\"https://arweave.net/Fl6pX4mF5RvldLIlVq5FFlWw9MGaV7GdxSfuO2hpXFw\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"O-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
        z[3] = "\"},{\"trait_type\": \"Dedication Name\", \"value\": \"";
        z[4] = "\"}]}";
        owner = _msgSender();
        _safeMint( owner , nftid);


        builtyear[0] = "2021";
        nftid++;
    } 
}

================================================================================
FILE: OpenzeppelinERC721.sol
================================================================================
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}






/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */

exec
/bin/bash -lc "sed -n '221,440p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
      * @dev Safely transfers `tokenId` token from `from` to `to`.
      *
      * Requirements:
      *
      * - `from` cannot be the zero address.
      * - `to` cannot be the zero address.
      * - `tokenId` token must exist and be owned by `from`.
      * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
      * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
      *
      * Emits a {Transfer} event.
      */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}




/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}









/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}







/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {

    /**
     * @dev Returns the token collection name.
     */

exec
/bin/bash -lc "sed -n '441,660p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}





/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}





/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;

exec
/bin/bash -lc "sed -n '661,880p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}








/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping (uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping (address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping (uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping (address => mapping (address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC721).interfaceId
            || interfaceId == type(IERC721Metadata).interfaceId
            || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0
            ? string(abi.encodePacked(baseURI, tokenId.toString()))
            : '';
    }

    /**
     * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
     * in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");

exec
/bin/bash -lc "sed -n '881,1100p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        private returns (bool)
    {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}















/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {

    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);

exec
/bin/bash -lc "sed -n '1101,1323p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
}


/**
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId
            || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}







/**
 * @dev ERC721 token with storage based token URI management.
 */
abstract contract ERC721URIStorage is ERC721 {
    using Strings for uint256;

    // Optional mapping for token URIs
    mapping (uint256 => string) private _tokenURIs;

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token");

        string memory _tokenURI = _tokenURIs[tokenId];
        string memory base = _baseURI();

        // If there is no base URI, return the token URI.
        if (bytes(base).length == 0) {
            return _tokenURI;
        }
        // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
        if (bytes(_tokenURI).length > 0) {
            return string(abi.encodePacked(base, _tokenURI));
        }

        return super.tokenURI(tokenId);
    }

    /**
     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
        require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token");
        _tokenURIs[tokenId] = _tokenURI;
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual override {
        super._burn(tokenId);

        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }
    }
}


exec
/bin/bash -lc "nl -ba CryptoZinjaTorii.sol | sed -n '1,220p'" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
     1	pragma solidity >=0.8.10 <=0.8.10;
     2	
     3	import "./OpenzeppelinERC721.sol";
     4	
     5	
     6	// =========== =========== =========== =========== =========== 
     7	//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
     8	// =========== =========== =========== =========== =========== 
     9	//   |     |     |     |     |     |     |     |     |     |   
    10	//   |     |     |     |     |     |     |     |     |     |   
    11	
    12	
    13	// =========== =========== =========== =========== =========== 
    14	//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
    15	// =========== =========== =========== =========== =========== 
    16	//   |     |     |     |     |     |     |     |     |     |   
    17	//   |     |     |     |     |     |     |     |     |     |   
    18	
    19	
    20	
    21	//ZZZZZZZZZZZZZZZZZZZ  iiii                    jjjj                   
    22	//Z:::::::::::::::::Z i::::i                  j::::j                  
    23	//Z:::::::::::::::::Z  iiii                    jjjj                   
    24	//Z:::ZZZZZZZZ:::::Z                                                  
    25	//ZZZZZ     Z:::::Z  iiiiiiinnnn  nnnnnnnn   jjjjjjj  aaaaaaaaaaaaa   
    26	//        Z:::::Z    i:::::in:::nn::::::::nn j:::::j  a::::::::::::a  
    27	//       Z:::::Z      i::::in::::::::::::::nn j::::j  aaaaaaaaa:::::a 
    28	//      Z:::::Z       i::::inn:::::::::::::::nj::::j           a::::a 
    29	//     Z:::::Z        i::::i  n:::::nnnn:::::nj::::j    aaaaaaa:::::a 
    30	//    Z:::::Z         i::::i  n::::n    n::::nj::::j  aa::::::::::::a 
    31	//   Z:::::Z          i::::i  n::::n    n::::nj::::j a::::aaaa::::::a 
    32	//ZZZ:::::Z     ZZZZZ i::::i  n::::n    n::::nj::::ja::::a    a:::::a 
    33	//Z::::::ZZZZZZZZ:::Zi::::::i n::::n    n::::nj::::ja::::a    a:::::a 
    34	//Z:::::::::::::::::Zi::::::i n::::n    n::::nj::::ja:::::aaaa::::::a 
    35	//Z:::::::::::::::::Zi::::::i n::::n    n::::nj::::j a::::::::::aa:::a
    36	//ZZZZZZZZZZZZZZZZZZZiiiiiiii nnnnnn    nnnnnnj::::j  aaaaaaaaaa  aaaa
    37	//                                            j::::j                  
    38	//                                  jjjj      j::::j                  
    39	//                                 j::::jj   j:::::j                  
    40	//                                 j::::::jjj::::::j                  
    41	//                                  jj::::::::::::j                   
    42	//                                    jjj::::::jjj                    
    43	//                                       jjjjjj                       
    44	
    45	
    46	
    47	// =========== =========== =========== =========== =========== 
    48	//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
    49	// =========== =========== =========== =========== =========== 
    50	//   |     |     |     |     |     |     |     |     |     |   
    51	//   |     |     |     |     |     |     |     |     |     |   
    52	
    53	
    54	// =========== =========== =========== =========== =========== 
    55	//   |  |  |     |  |  |     |  |  |     |  |  |     |  |  |   
    56	// =========== =========== =========== =========== =========== 
    57	//   |     |     |     |     |     |     |     |     |     |   
    58	//   |     |     |     |     |     |     |     |     |     |   
    59	
    60	
    61	
    62	contract Torii is  ERC721URIStorage , ERC721Enumerable{
    63	
    64	    address public owner;
    65	    uint public nftid = 0;
    66	    mapping(uint => string) toriiMessage;
    67	
    68	    //zinja metadata
    69	    string[5] z;
    70	
    71	    //O-torii metadata
    72	    string[4] o;
    73	
    74	    //senbon-torii metadata
    75	    string[4] s;
    76	
    77	    mapping(uint=>string) builtyear;
    78	
    79	    function multiMint(uint qty) public {
    80	        require( _msgSender() == owner );
    81	        uint target = nftid - 1 + qty;
    82	        for (uint i = nftid; i <= target; i++ ){
    83	            _safeMint( owner , nftid);
    84	            builtyear[nftid] = calcYear();
    85	            nftid++;
    86	        }
    87	    }
    88	
    89	    function _beforeTokenTransfer(address from, address to, uint256 tokenId)
    90	        internal
    91	        override(ERC721,ERC721Enumerable)
    92	    {
    93	        super._beforeTokenTransfer(from, to, tokenId);
    94	    }
    95	
    96	    function _burn(uint256 tokenId) internal override(ERC721,ERC721URIStorage) {
    97	        super._burn(tokenId);
    98	    }
    99	
   100	    function tokenURI(uint256 tokenId)
   101	        public
   102	        view
   103	        override(ERC721,ERC721URIStorage)
   104	        returns (string memory)
   105	    {
   106	        if(tokenId == 0){
   107	            string memory Otorii = string(abi.encodePacked(z[0],o[0],Strings.toString(tokenId),o[1],z[1],o[2],z[2],o[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
   108	            return Otorii;
   109	        }
   110	        string memory json = string(abi.encodePacked(z[0],s[0],Strings.toString(tokenId),s[1],z[1],s[2],z[2],s[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
   111	        return json;
   112	    }
   113	
   114	    function setToriiMessage(uint _tokenId , string memory _toriiMessage ) public {
   115	        require(_msgSender() == ownerOf(_tokenId));
   116	        toriiMessage[_tokenId] = _toriiMessage;
   117	    }
   118	
   119	    function readToriiMessage(uint _tokenId ) public view returns(string memory){
   120	        if(keccak256(abi.encodePacked(toriiMessage[_tokenId])) == keccak256(abi.encodePacked("")) ){
   121	            return "no name";
   122	        }
   123	        return toriiMessage[_tokenId];
   124	    }
   125	
   126	    function calcYear() public view returns (string memory){
   127	        return Strings.toString(calcYearLogic(block.timestamp));
   128	    }
   129	
   130	    function calcYearLogic(uint _unixtime) public pure returns (uint){
   131	        return 1970 + _unixtime/((31536000 * 3 + 31622400)/4);
   132	    }
   133	
   134	
   135	    function supportsInterface(bytes4 interfaceId)
   136	        public
   137	        view
   138	        override(ERC721,ERC721Enumerable)
   139	        returns (bool)
   140	    {
   141	        return super.supportsInterface(interfaceId);
   142	    }
   143	
   144	
   145	
   146	    constructor() ERC721("torii" , "TORII" ) {
   147	
   148	        z[0] = "data:application/json;utf8,{\"name\":\"";
   149	        s[0] = "\u3010\u5343\u672c\u9ce5\u5c45\u3011Engrave name on the Senbon-Torii #";
   150	        o[0] = "\u3010\u5275\u5efa\u8a18\u5ff5 \u5927\u9ce5\u5c45\u3011Engrave name on the O-Torii";
   151	        s[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306b\u5b58\u5728\u3059\u308b\u5343\u672c\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5171\u306b\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
   152	        o[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306e\u4e2d\u592e\u306b\u5b58\u5728\u3059\u308b\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u8a18\u5ff5\u3059\u3079\u304d\u5275\u5efa\u8a18\u5ff5\u306e\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5927\u304d\u304f\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
   153	        z[1] = "Crypto Zinja\u306e\u6b63\u5f0f\u30aa\u30fc\u30d7\u30f3\u3068\u5171\u306b\u3053\u3061\u3089\u306e\u30da\u30fc\u30b8\u304b\u3089\u540d\u524d\u3092\u523b\u3080\u4e8b\u304c\u51fa\u6765\u307e\u3059\u3002 https://conata.world/zinja \u3000\u523b\u3080\u540d\u524d\u306b\u95a2\u3057\u3066\u306f\u304a\u540d\u524d\u3001\u4f01\u696d\u540d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306a\u3069\u597d\u304d\u306a\u6587\u5b57\u3092\u523b\u3093\u3067\u9802\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Crypto Zinja\u306f\u65e5\u672c\u53e4\u6765\u306e\u6587\u5316\u3092\u984c\u6750\u306b\u73fe\u5b9f\u7a7a\u9593\u3092\u5dfb\u304d\u8fbc\u307f\u62e1\u5f35\u3057\u3066\u3044\u304f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u3053\u306e\u7a7a\u9593\u3092\u5171\u306b\u80b2\u3066\u3066\u304f\u3060\u3055\u308b\u3042\u306a\u305f\u306b\u611f\u8b1d\u3092\u8fbc\u3081\u3066\u3002  \\n  \\nThis is an NFT for the right to have your name engraved on the ";
   154	        s[2] = "Senbon";
   155	        o[2] = "O";
   156	        z[2] = "-Torii gate of Crypto Zinja, which will be built in Metaverse. You can inscribe your name on this page when Crypto Zinja is officially opened: https://conata.world/zinja You can inscribe your name, company name, project name, etc. Crypto Zinja is a project to involve and expand the real space based on the ancient Japanese culture. I would like to express our gratitude to you who will nurture this space with us.\",\"animation_url\":\"";
   157	        s[3] = "https://arweave.net/NsU6pqKl04X6m0E7_fEKut3j5kBYQ1421cf1NW9gtGY\",\"image\":\"https://arweave.net/7FdbwyAuZ80xjZMm71Fz7ssCovFd1wtmKhGTqEvu-7U\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"Senbon-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
   158	        o[3] = "https://arweave.net/ioEuPnHgNSwwP1lrh4t6JKl0tTE-lkymCHAnDBLaCF4\",\"image\":\"https://arweave.net/Fl6pX4mF5RvldLIlVq5FFlWw9MGaV7GdxSfuO2hpXFw\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"O-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
   159	        z[3] = "\"},{\"trait_type\": \"Dedication Name\", \"value\": \"";
   160	        z[4] = "\"}]}";
   161	        owner = _msgSender();
   162	        _safeMint( owner , nftid);
   163	
   164	
   165	        builtyear[0] = "2021";
   166	        nftid++;
   167	    } 
   168	}

exec
/bin/bash -lc "nl -ba OpenzeppelinERC721.sol | sed -n '1,260p'" in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
     1	// SPDX-License-Identifier: MIT
     2	
     3	pragma solidity ^0.8.0;
     4	
     5	/**
     6	 * @dev Interface of the ERC165 standard, as defined in the
     7	 * https://eips.ethereum.org/EIPS/eip-165[EIP].
     8	 *
     9	 * Implementers can declare support of contract interfaces, which can then be
    10	 * queried by others ({ERC165Checker}).
    11	 *
    12	 * For an implementation, see {ERC165}.
    13	 */
    14	interface IERC165 {
    15	    /**
    16	     * @dev Returns true if this contract implements the interface defined by
    17	     * `interfaceId`. See the corresponding
    18	     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
    19	     * to learn more about how these ids are created.
    20	     *
    21	     * This function call must use less than 30 000 gas.
    22	     */
    23	    function supportsInterface(bytes4 interfaceId) external view returns (bool);
    24	}
    25	
    26	
    27	
    28	
    29	
    30	
    31	/**
    32	 * @dev Required interface of an ERC721 compliant contract.
    33	 */
    34	interface IERC721 is IERC165 {
    35	    /**
    36	     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
    37	     */
    38	    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    39	
    40	    /**
    41	     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
    42	     */
    43	    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    44	
    45	    /**
    46	     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
    47	     */
    48	    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    49	
    50	    /**
    51	     * @dev Returns the number of tokens in ``owner``'s account.
    52	     */
    53	    function balanceOf(address owner) external view returns (uint256 balance);
    54	
    55	    /**
    56	     * @dev Returns the owner of the `tokenId` token.
    57	     *
    58	     * Requirements:
    59	     *
    60	     * - `tokenId` must exist.
    61	     */
    62	    function ownerOf(uint256 tokenId) external view returns (address owner);
    63	
    64	    /**
    65	     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
    66	     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
    67	     *
    68	     * Requirements:
    69	     *
    70	     * - `from` cannot be the zero address.
    71	     * - `to` cannot be the zero address.
    72	     * - `tokenId` token must exist and be owned by `from`.
    73	     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
    74	     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
    75	     *
    76	     * Emits a {Transfer} event.
    77	     */
    78	    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    79	
    80	    /**
    81	     * @dev Transfers `tokenId` token from `from` to `to`.
    82	     *
    83	     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
    84	     *
    85	     * Requirements:
    86	     *
    87	     * - `from` cannot be the zero address.
    88	     * - `to` cannot be the zero address.
    89	     * - `tokenId` token must be owned by `from`.
    90	     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
    91	     *
    92	     * Emits a {Transfer} event.
    93	     */
    94	    function transferFrom(address from, address to, uint256 tokenId) external;
    95	
    96	    /**
    97	     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
    98	     * The approval is cleared when the token is transferred.
    99	     *
   100	     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
   101	     *
   102	     * Requirements:
   103	     *
   104	     * - The caller must own the token or be an approved operator.
   105	     * - `tokenId` must exist.
   106	     *
   107	     * Emits an {Approval} event.
   108	     */
   109	    function approve(address to, uint256 tokenId) external;
   110	
   111	    /**
   112	     * @dev Returns the account approved for `tokenId` token.
   113	     *
   114	     * Requirements:
   115	     *
   116	     * - `tokenId` must exist.
   117	     */
   118	    function getApproved(uint256 tokenId) external view returns (address operator);
   119	
   120	    /**
   121	     * @dev Approve or remove `operator` as an operator for the caller.
   122	     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
   123	     *
   124	     * Requirements:
   125	     *
   126	     * - The `operator` cannot be the caller.
   127	     *
   128	     * Emits an {ApprovalForAll} event.
   129	     */
   130	    function setApprovalForAll(address operator, bool _approved) external;
   131	
   132	    /**
   133	     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
   134	     *
   135	     * See {setApprovalForAll}
   136	     */
   137	    function isApprovedForAll(address owner, address operator) external view returns (bool);
   138	
   139	    /**
   140	      * @dev Safely transfers `tokenId` token from `from` to `to`.
   141	      *
   142	      * Requirements:
   143	      *
   144	      * - `from` cannot be the zero address.
   145	      * - `to` cannot be the zero address.
   146	      * - `tokenId` token must exist and be owned by `from`.
   147	      * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
   148	      * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
   149	      *
   150	      * Emits a {Transfer} event.
   151	      */
   152	    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
   153	}
   154	
   155	
   156	
   157	
   158	/**
   159	 * @dev String operations.
   160	 */
   161	library Strings {
   162	    bytes16 private constant alphabet = "0123456789abcdef";
   163	
   164	    /**
   165	     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
   166	     */
   167	    function toString(uint256 value) internal pure returns (string memory) {
   168	        // Inspired by OraclizeAPI's implementation - MIT licence
   169	        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
   170	
   171	        if (value == 0) {
   172	            return "0";
   173	        }
   174	        uint256 temp = value;
   175	        uint256 digits;
   176	        while (temp != 0) {
   177	            digits++;
   178	            temp /= 10;
   179	        }
   180	        bytes memory buffer = new bytes(digits);
   181	        while (value != 0) {
   182	            digits -= 1;
   183	            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
   184	            value /= 10;
   185	        }
   186	        return string(buffer);
   187	    }
   188	
   189	    /**
   190	     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
   191	     */
   192	    function toHexString(uint256 value) internal pure returns (string memory) {
   193	        if (value == 0) {
   194	            return "0x00";
   195	        }
   196	        uint256 temp = value;
   197	        uint256 length = 0;
   198	        while (temp != 0) {
   199	            length++;
   200	            temp >>= 8;
   201	        }
   202	        return toHexString(value, length);
   203	    }
   204	
   205	    /**
   206	     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
   207	     */
   208	    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
   209	        bytes memory buffer = new bytes(2 * length + 2);
   210	        buffer[0] = "0";
   211	        buffer[1] = "x";
   212	        for (uint256 i = 2 * length + 1; i > 1; --i) {
   213	            buffer[i] = alphabet[value & 0xf];
   214	            value >>= 4;
   215	        }
   216	        require(value == 0, "Strings: hex length insufficient");
   217	        return string(buffer);
   218	    }
   219	
   220	}
   221	
   222	
   223	
   224	
   225	
   226	
   227	
   228	
   229	
   230	/**
   231	 * @title ERC721 token receiver interface
   232	 * @dev Interface for any contract that wants to support safeTransfers
   233	 * from ERC721 asset contracts.
   234	 */
   235	interface IERC721Receiver {
   236	    /**
   237	     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
   238	     * by `operator` from `from`, this function is called.
   239	     *
   240	     * It must return its Solidity selector to confirm the token transfer.
   241	     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
   242	     *
   243	     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
   244	     */
   245	    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
   246	}
   247	
   248	
   249	
   250	
   251	
   252	
   253	
   254	/**
   255	 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
   256	 * @dev See https://eips.ethereum.org/EIPS/eip-721
   257	 */
   258	interface IERC721Metadata is IERC721 {
   259	
   260	    /**

exec
/bin/bash -lc "rg --files -g '*.sol' -g '"'!lib/**'"' -g '"'!@openzeppelin/**'"' ." in /tmp/codex-x0fjpb7d
 succeeded in 0ms:
./CryptoZinjaTorii.sol
./OpenzeppelinERC721.sol

codex
{"no_findings":true,"summary":"Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.","findings":[]}
tokens used
46,975
Metadata
{
    "codex": {
        "ran_at": "2026-04-04T03:58:04.628397+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 2,
        "import_count": 1,
        "first_party_contracts_count": 2
    },
    "summary": "Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.",
    "raw_final": {
        "summary": "Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
1
Total opcodes
7253
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x014d
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x6352211e
00000026: GT
00000027: PUSH2 0x00c3
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0x95d89b41
00000031: GT
00000032: PUSH2 0x007c
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0x95d89b41
0000003c: EQ
0000003d: PUSH2 0x03d8
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xa22cb465
00000047: EQ
00000048: PUSH2 0x03f6
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xab00492f
00000052: EQ
00000053: PUSH2 0x0412
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xb88d4fde
0000005d: EQ
0000005e: PUSH2 0x042e
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xc87b56dd
00000068: EQ
00000069: PUSH2 0x044a
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0xe985e9c5
00000073: EQ
00000074: PUSH2 0x047a
00000077: JUMPI
00000078: PUSH2 0x014d
0000007b: JUMP
0000007c: JUMPDEST
0000007d: DUP1
0000007e: PUSH4 0x6352211e
00000083: EQ
00000084: PUSH2 0x0302
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0x6a2a0696
0000008e: EQ
0000008f: PUSH2 0x0332
00000092: JUMPI
00000093: DUP1
00000094: PUSH4 0x6fd976bc
00000099: EQ
0000009a: PUSH2 0x034e
0000009d: JUMPI
0000009e: DUP1
0000009f: PUSH4 0x70a08231
000000a4: EQ
000000a5: PUSH2 0x036c
000000a8: JUMPI
000000a9: DUP1
000000aa: PUSH4 0x74222b84
000000af: EQ
000000b0: PUSH2 0x039c
000000b3: JUMPI
000000b4: DUP1
000000b5: PUSH4 0x8da5cb5b
000000ba: EQ
000000bb: PUSH2 0x03ba
000000be: JUMPI
000000bf: PUSH2 0x014d
000000c2: JUMP
000000c3: JUMPDEST
000000c4: DUP1
000000c5: PUSH4 0x23b872dd
000000ca: GT
000000cb: PUSH2 0x0115
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0x23b872dd
000000d5: EQ
000000d6: PUSH2 0x020a
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0x2f745c59
000000e0: EQ
000000e1: PUSH2 0x0226
000000e4: JUMPI
000000e5: DUP1
000000e6: PUSH4 0x33c93012
000000eb: EQ
000000ec: PUSH2 0x0256
000000ef: JUMPI
000000f0: DUP1
000000f1: PUSH4 0x3cabd8ac
000000f6: EQ
000000f7: PUSH2 0x0286
000000fa: JUMPI
000000fb: DUP1
000000fc: PUSH4 0x42842e0e
00000101: EQ
00000102: PUSH2 0x02b6
00000105: JUMPI
00000106: DUP1
00000107: PUSH4 0x4f6ccce7
0000010c: EQ
0000010d: PUSH2 0x02d2
00000110: JUMPI
00000111: PUSH2 0x014d
00000114: JUMP
00000115: JUMPDEST
00000116: DUP1
00000117: PUSH4 0x01ffc9a7
0000011c: EQ
0000011d: PUSH2 0x0152
00000120: JUMPI
00000121: DUP1
00000122: PUSH4 0x06fdde03
00000127: EQ
00000128: PUSH2 0x0182
0000012b: JUMPI
0000012c: DUP1
0000012d: PUSH4 0x081812fc
00000132: EQ
00000133: PUSH2 0x01a0
00000136: JUMPI
00000137: DUP1
00000138: PUSH4 0x095ea7b3
0000013d: EQ
0000013e: PUSH2 0x01d0
00000141: JUMPI
00000142: DUP1
00000143: PUSH4 0x18160ddd
00000148: EQ
00000149: PUSH2 0x01ec
0000014c: JUMPI
0000014d: JUMPDEST
0000014e: PUSH1 0x00
00000150: DUP1
00000151: REVERT
00000152: JUMPDEST
00000153: PUSH2 0x016c
00000156: PUSH1 0x04
00000158: DUP1
00000159: CALLDATASIZE
0000015a: SUB
0000015b: DUP2
0000015c: ADD
0000015d: SWAP1
0000015e: PUSH2 0x0167
00000161: SWAP2
00000162: SWAP1
00000163: PUSH2 0x239c
00000166: JUMP
00000167: JUMPDEST
00000168: PUSH2 0x04aa
0000016b: JUMP
0000016c: JUMPDEST
0000016d: PUSH1 0x40
0000016f: MLOAD
00000170: PUSH2 0x0179
00000173: SWAP2
00000174: SWAP1
00000175: PUSH2 0x23e4
00000178: JUMP
00000179: JUMPDEST
0000017a: PUSH1 0x40
0000017c: MLOAD
0000017d: DUP1
0000017e: SWAP2
0000017f: SUB
00000180: SWAP1
00000181: RETURN
00000182: JUMPDEST
00000183: PUSH2 0x018a
00000186: PUSH2 0x04bc
00000189: JUMP
0000018a: JUMPDEST
0000018b: PUSH1 0x40
0000018d: MLOAD
0000018e: PUSH2 0x0197
00000191: SWAP2
00000192: SWAP1
00000193: PUSH2 0x2498
00000196: JUMP
00000197: JUMPDEST
00000198: PUSH1 0x40
0000019a: MLOAD
0000019b: DUP1
0000019c: SWAP2
0000019d: SUB
0000019e: SWAP1
0000019f: RETURN
000001a0: JUMPDEST
000001a1: PUSH2 0x01ba
000001a4: PUSH1 0x04
000001a6: DUP1
000001a7: CALLDATASIZE
000001a8: SUB
000001a9: DUP2
000001aa: ADD
000001ab: SWAP1
000001ac: PUSH2 0x01b5
000001af: SWAP2
000001b0: SWAP1
000001b1: PUSH2 0x24f0
000001b4: JUMP
000001b5: JUMPDEST
000001b6: PUSH2 0x054e
000001b9: JUMP
000001ba: JUMPDEST
000001bb: PUSH1 0x40
000001bd: MLOAD
000001be: PUSH2 0x01c7
000001c1: SWAP2
000001c2: SWAP1
000001c3: PUSH2 0x255e
000001c6: JUMP
000001c7: JUMPDEST
000001c8: PUSH1 0x40
000001ca: MLOAD
000001cb: DUP1
000001cc: SWAP2
000001cd: SUB
000001ce: SWAP1
000001cf: RETURN
000001d0: JUMPDEST
000001d1: PUSH2 0x01ea
000001d4: PUSH1 0x04
000001d6: DUP1
000001d7: CALLDATASIZE
000001d8: SUB
000001d9: DUP2
000001da: ADD
000001db: SWAP1
000001dc: PUSH2 0x01e5
000001df: SWAP2
000001e0: SWAP1
000001e1: PUSH2 0x25a5
000001e4: JUMP
000001e5: JUMPDEST
000001e6: PUSH2 0x05d3
000001e9: JUMP
000001ea: JUMPDEST
000001eb: STOP
000001ec: JUMPDEST
000001ed: PUSH2 0x01f4
000001f0: PUSH2 0x06eb
000001f3: JUMP
000001f4: JUMPDEST
000001f5: PUSH1 0x40
000001f7: MLOAD
000001f8: PUSH2 0x0201
000001fb: SWAP2
000001fc: SWAP1
000001fd: PUSH2 0x25f4
00000200: JUMP
00000201: JUMPDEST
00000202: PUSH1 0x40
00000204: MLOAD
00000205: DUP1
00000206: SWAP2
00000207: SUB
00000208: SWAP1
00000209: RETURN
0000020a: JUMPDEST
0000020b: PUSH2 0x0224
0000020e: PUSH1 0x04
00000210: DUP1
00000211: CALLDATASIZE
00000212: SUB
00000213: DUP2
00000214: ADD
00000215: SWAP1
00000216: PUSH2 0x021f
00000219: SWAP2
0000021a: SWAP1
0000021b: PUSH2 0x260f
0000021e: JUMP
0000021f: JUMPDEST
00000220: PUSH2 0x06f8
00000223: JUMP
00000224: JUMPDEST
00000225: STOP
00000226: JUMPDEST
00000227: PUSH2 0x0240
0000022a: PUSH1 0x04
0000022c: DUP1
0000022d: CALLDATASIZE
0000022e: SUB
0000022f: DUP2
00000230: ADD
00000231: SWAP1
00000232: PUSH2 0x023b
00000235: SWAP2
00000236: SWAP1
00000237: PUSH2 0x25a5
0000023a: JUMP
0000023b: JUMPDEST
0000023c: PUSH2 0x0758
0000023f: JUMP
00000240: JUMPDEST
00000241: PUSH1 0x40
00000243: MLOAD
00000244: PUSH2 0x024d
00000247: SWAP2
00000248: SWAP1
00000249: PUSH2 0x25f4
0000024c: JUMP
0000024d: JUMPDEST
0000024e: PUSH1 0x40
00000250: MLOAD
00000251: DUP1
00000252: SWAP2
00000253: SUB
00000254: SWAP1
00000255: RETURN
00000256: JUMPDEST
00000257: PUSH2 0x0270
0000025a: PUSH1 0x04
0000025c: DUP1
0000025d: CALLDATASIZE
0000025e: SUB
0000025f: DUP2
00000260: ADD
00000261: SWAP1
00000262: PUSH2 0x026b
00000265: SWAP2
00000266: SWAP1
00000267: PUSH2 0x24f0
0000026a: JUMP
0000026b: JUMPDEST
0000026c: PUSH2 0x07fd
0000026f: JUMP
00000270: JUMPDEST
00000271: PUSH1 0x40
00000273: MLOAD
00000274: PUSH2 0x027d
00000277: SWAP2
00000278: SWAP1
00000279: PUSH2 0x25f4
0000027c: JUMP
0000027d: JUMPDEST
0000027e: PUSH1 0x40
00000280: MLOAD
00000281: DUP1
00000282: SWAP2
00000283: SUB
00000284: SWAP1
00000285: RETURN
00000286: JUMPDEST
00000287: PUSH2 0x02a0
0000028a: PUSH1 0x04
0000028c: DUP1
0000028d: CALLDATASIZE
0000028e: SUB
0000028f: DUP2
00000290: ADD
00000291: SWAP1
00000292: PUSH2 0x029b
00000295: SWAP2
00000296: SWAP1
00000297: PUSH2 0x24f0
0000029a: JUMP
0000029b: JUMPDEST
0000029c: PUSH2 0x0823
0000029f: JUMP
000002a0: JUMPDEST
000002a1: PUSH1 0x40
000002a3: MLOAD
000002a4: PUSH2 0x02ad
000002a7: SWAP2
000002a8: SWAP1
000002a9: PUSH2 0x2498
000002ac: JUMP
000002ad: JUMPDEST
000002ae: PUSH1 0x40
000002b0: MLOAD
000002b1: DUP1
000002b2: SWAP2
000002b3: SUB
000002b4: SWAP1
000002b5: RETURN
000002b6: JUMPDEST
000002b7: PUSH2 0x02d0
000002ba: PUSH1 0x04
000002bc: DUP1
000002bd: CALLDATASIZE
000002be: SUB
000002bf: DUP2
000002c0: ADD
000002c1: SWAP1
000002c2: PUSH2 0x02cb
000002c5: SWAP2
000002c6: SWAP1
000002c7: PUSH2 0x260f
000002ca: JUMP
000002cb: JUMPDEST
000002cc: PUSH2 0x096a
000002cf: JUMP
000002d0: JUMPDEST
000002d1: STOP
000002d2: JUMPDEST
000002d3: PUSH2 0x02ec
000002d6: PUSH1 0x04
000002d8: DUP1
000002d9: CALLDATASIZE
000002da: SUB
000002db: DUP2
000002dc: ADD
000002dd: SWAP1
000002de: PUSH2 0x02e7
000002e1: SWAP2
000002e2: SWAP1
000002e3: PUSH2 0x24f0
000002e6: JUMP
000002e7: JUMPDEST
000002e8: PUSH2 0x098a
000002eb: JUMP
000002ec: JUMPDEST
000002ed: PUSH1 0x40
000002ef: MLOAD
000002f0: PUSH2 0x02f9
000002f3: SWAP2
000002f4: SWAP1
000002f5: PUSH2 0x25f4
000002f8: JUMP
000002f9: JUMPDEST
000002fa: PUSH1 0x40
000002fc: MLOAD
000002fd: DUP1
000002fe: SWAP2
000002ff: SUB
00000300: SWAP1
00000301: RETURN
00000302: JUMPDEST
00000303: PUSH2 0x031c
00000306: PUSH1 0x04
00000308: DUP1
00000309: CALLDATASIZE
0000030a: SUB
0000030b: DUP2
0000030c: ADD
0000030d: SWAP1
0000030e: PUSH2 0x0317
00000311: SWAP2
00000312: SWAP1
00000313: PUSH2 0x24f0
00000316: JUMP
00000317: JUMPDEST
00000318: PUSH2 0x09fb
0000031b: JUMP
0000031c: JUMPDEST
0000031d: PUSH1 0x40
0000031f: MLOAD
00000320: PUSH2 0x0329
00000323: SWAP2
00000324: SWAP1
00000325: PUSH2 0x255e
00000328: JUMP
00000329: JUMPDEST
0000032a: PUSH1 0x40
0000032c: MLOAD
0000032d: DUP1
0000032e: SWAP2
0000032f: SUB
00000330: SWAP1
00000331: RETURN
00000332: JUMPDEST
00000333: PUSH2 0x034c
00000336: PUSH1 0x04
00000338: DUP1
00000339: CALLDATASIZE
0000033a: SUB
0000033b: DUP2
0000033c: ADD
0000033d: SWAP1
0000033e: PUSH2 0x0347
00000341: SWAP2
00000342: SWAP1
00000343: PUSH2 0x2797
00000346: JUMP
00000347: JUMPDEST
00000348: PUSH2 0x0aad
0000034b: JUMP
0000034c: JUMPDEST
0000034d: STOP
0000034e: JUMPDEST
0000034f: PUSH2 0x0356
00000352: PUSH2 0x0b20
00000355: JUMP
00000356: JUMPDEST
00000357: PUSH1 0x40
00000359: MLOAD
0000035a: PUSH2 0x0363
0000035d: SWAP2
0000035e: SWAP1
0000035f: PUSH2 0x25f4
00000362: JUMP
00000363: JUMPDEST
00000364: PUSH1 0x40
00000366: MLOAD
00000367: DUP1
00000368: SWAP2
00000369: SUB
0000036a: SWAP1
0000036b: RETURN
0000036c: JUMPDEST
0000036d: PUSH2 0x0386
00000370: PUSH1 0x04
00000372: DUP1
00000373: CALLDATASIZE
00000374: SUB
00000375: DUP2
00000376: ADD
00000377: SWAP1
00000378: PUSH2 0x0381
0000037b: SWAP2
0000037c: SWAP1
0000037d: PUSH2 0x27f3
00000380: JUMP
00000381: JUMPDEST
00000382: PUSH2 0x0b26
00000385: JUMP
00000386: JUMPDEST
00000387: PUSH1 0x40
00000389: MLOAD
0000038a: PUSH2 0x0393
0000038d: SWAP2
0000038e: SWAP1
0000038f: PUSH2 0x25f4
00000392: JUMP
00000393: JUMPDEST
00000394: PUSH1 0x40
00000396: MLOAD
00000397: DUP1
00000398: SWAP2
00000399: SUB
0000039a: SWAP1
0000039b: RETURN
0000039c: JUMPDEST
0000039d: PUSH2 0x03a4
000003a0: PUSH2 0x0bde
000003a3: JUMP
000003a4: JUMPDEST
000003a5: PUSH1 0x40
000003a7: MLOAD
000003a8: PUSH2 0x03b1
000003ab: SWAP2
000003ac: SWAP1
000003ad: PUSH2 0x2498
000003b0: JUMP
000003b1: JUMPDEST
000003b2: PUSH1 0x40
000003b4: MLOAD
000003b5: DUP1
000003b6: SWAP2
000003b7: SUB
000003b8: SWAP1
000003b9: RETURN
000003ba: JUMPDEST
000003bb: PUSH2 0x03c2
000003be: PUSH2 0x0bf6
000003c1: JUMP
000003c2: JUMPDEST
000003c3: PUSH1 0x40
000003c5: MLOAD
000003c6: PUSH2 0x03cf
000003c9: SWAP2
000003ca: SWAP1
000003cb: PUSH2 0x255e
000003ce: JUMP
000003cf: JUMPDEST
000003d0: PUSH1 0x40
000003d2: MLOAD
000003d3: DUP1
000003d4: SWAP2
000003d5: SUB
000003d6: SWAP1
000003d7: RETURN
000003d8: JUMPDEST
000003d9: PUSH2 0x03e0
000003dc: PUSH2 0x0c1c
000003df: JUMP
000003e0: JUMPDEST
000003e1: PUSH1 0x40
000003e3: MLOAD
000003e4: PUSH2 0x03ed
000003e7: SWAP2
000003e8: SWAP1
000003e9: PUSH2 0x2498
000003ec: JUMP
000003ed: JUMPDEST
000003ee: PUSH1 0x40
000003f0: MLOAD
000003f1: DUP1
000003f2: SWAP2
000003f3: SUB
000003f4: SWAP1
000003f5: RETURN
000003f6: JUMPDEST
000003f7: PUSH2 0x0410
000003fa: PUSH1 0x04
000003fc: DUP1
000003fd: CALLDATASIZE
000003fe: SUB
000003ff: DUP2
00000400: ADD
00000401: SWAP1
00000402: PUSH2 0x040b
00000405: SWAP2
00000406: SWAP1
00000407: PUSH2 0x284c
0000040a: JUMP
0000040b: JUMPDEST
0000040c: PUSH2 0x0cae
0000040f: JUMP
00000410: JUMPDEST
00000411: STOP
00000412: JUMPDEST
00000413: PUSH2 0x042c
00000416: PUSH1 0x04
00000418: DUP1
00000419: CALLDATASIZE
0000041a: SUB
0000041b: DUP2
0000041c: ADD
0000041d: SWAP1
0000041e: PUSH2 0x0427
00000421: SWAP2
00000422: SWAP1
00000423: PUSH2 0x24f0
00000426: JUMP
00000427: JUMPDEST
00000428: PUSH2 0x0e2f
0000042b: JUMP
0000042c: JUMPDEST
0000042d: STOP
0000042e: JUMPDEST
0000042f: PUSH2 0x0448
00000432: PUSH1 0x04
00000434: DUP1
00000435: CALLDATASIZE
00000436: SUB
00000437: DUP2
00000438: ADD
00000439: SWAP1
0000043a: PUSH2 0x0443
0000043d: SWAP2
0000043e: SWAP1
0000043f: PUSH2 0x292d
00000442: JUMP
00000443: JUMPDEST
00000444: PUSH2 0x0f4c
00000447: JUMP
00000448: JUMPDEST
00000449: STOP
0000044a: JUMPDEST
0000044b: PUSH2 0x0464
0000044e: PUSH1 0x04
00000450: DUP1
00000451: CALLDATASIZE
00000452: SUB
00000453: DUP2
00000454: ADD
00000455: SWAP1
00000456: PUSH2 0x045f
00000459: SWAP2
0000045a: SWAP1
0000045b: PUSH2 0x24f0
0000045e: JUMP
0000045f: JUMPDEST
00000460: PUSH2 0x0fae
00000463: JUMP
00000464: JUMPDEST
00000465: PUSH1 0x40
00000467: MLOAD
00000468: PUSH2 0x0471
0000046b: SWAP2
0000046c: SWAP1
0000046d: PUSH2 0x2498
00000470: JUMP
00000471: JUMPDEST
00000472: PUSH1 0x40
00000474: MLOAD
00000475: DUP1
00000476: SWAP2
00000477: SUB
00000478: SWAP1
00000479: RETURN
0000047a: JUMPDEST
0000047b: PUSH2 0x0494
0000047e: PUSH1 0x04
00000480: DUP1
00000481: CALLDATASIZE
00000482: SUB
00000483: DUP2
00000484: ADD
00000485: SWAP1
00000486: PUSH2 0x048f
00000489: SWAP2
0000048a: SWAP1
0000048b: PUSH2 0x29b0
0000048e: JUMP
0000048f: JUMPDEST
00000490: PUSH2 0x11fe
00000493: JUMP
00000494: JUMPDEST
00000495: PUSH1 0x40
00000497: MLOAD
00000498: PUSH2 0x04a1
0000049b: SWAP2
0000049c: SWAP1
0000049d: PUSH2 0x23e4
000004a0: JUMP
000004a1: JUMPDEST
000004a2: PUSH1 0x40
000004a4: MLOAD
000004a5: DUP1
000004a6: SWAP2
000004a7: SUB
000004a8: SWAP1
000004a9: RETURN
000004aa: JUMPDEST
000004ab: PUSH1 0x00
000004ad: PUSH2 0x04b5
000004b0: DUP3
000004b1: PUSH2 0x13be
000004b4: JUMP
000004b5: JUMPDEST
000004b6: SWAP1
000004b7: POP
000004b8: SWAP2
000004b9: SWAP1
000004ba: POP
000004bb: JUMP
000004bc: JUMPDEST
000004bd: PUSH1 0x60
000004bf: PUSH1 0x00
000004c1: DUP1
000004c2: SLOAD
000004c3: PUSH2 0x04cb
000004c6: SWAP1
000004c7: PUSH2 0x2a1f
000004ca: JUMP
000004cb: JUMPDEST
000004cc: DUP1
000004cd: PUSH1 0x1f
000004cf: ADD
000004d0: PUSH1 0x20
000004d2: DUP1
000004d3: SWAP2
000004d4: DIV
000004d5: MUL
000004d6: PUSH1 0x20
000004d8: ADD
000004d9: PUSH1 0x40
000004db: MLOAD
000004dc: SWAP1
000004dd: DUP2
000004de: ADD
000004df: PUSH1 0x40
000004e1: MSTORE
000004e2: DUP1
000004e3: SWAP3
000004e4: SWAP2
000004e5: SWAP1
000004e6: DUP2
000004e7: DUP2
000004e8: MSTORE
000004e9: PUSH1 0x20
000004eb: ADD
000004ec: DUP3
000004ed: DUP1
000004ee: SLOAD
000004ef: PUSH2 0x04f7
000004f2: SWAP1
000004f3: PUSH2 0x2a1f
000004f6: JUMP
000004f7: JUMPDEST
000004f8: DUP1
000004f9: ISZERO
000004fa: PUSH2 0x0544
000004fd: JUMPI
000004fe: DUP1
000004ff: PUSH1 0x1f
00000501: LT
00000502: PUSH2 0x0519
00000505: JUMPI
00000506: PUSH2 0x0100
00000509: DUP1
0000050a: DUP4
0000050b: SLOAD
0000050c: DIV
0000050d: MUL
0000050e: DUP4
0000050f: MSTORE
00000510: SWAP2
00000511: PUSH1 0x20
00000513: ADD
00000514: SWAP2
00000515: PUSH2 0x0544
00000518: JUMP
00000519: JUMPDEST
0000051a: DUP3
0000051b: ADD
0000051c: SWAP2
0000051d: SWAP1
0000051e: PUSH1 0x00
00000520: MSTORE
00000521: PUSH1 0x20
00000523: PUSH1 0x00
00000525: KECCAK256
00000526: SWAP1
00000527: JUMPDEST
00000528: DUP2
00000529: SLOAD
0000052a: DUP2
0000052b: MSTORE
0000052c: SWAP1
0000052d: PUSH1 0x01
0000052f: ADD
00000530: SWAP1
00000531: PUSH1 0x20
00000533: ADD
00000534: DUP1
00000535: DUP4
00000536: GT
00000537: PUSH2 0x0527
0000053a: JUMPI
0000053b: DUP3
0000053c: SWAP1
0000053d: SUB
0000053e: PUSH1 0x1f
00000540: AND
00000541: DUP3
00000542: ADD
00000543: SWAP2
00000544: JUMPDEST
00000545: POP
00000546: POP
00000547: POP
00000548: POP
00000549: POP
0000054a: SWAP1
0000054b: POP
0000054c: SWAP1
0000054d: JUMP
0000054e: JUMPDEST
0000054f: PUSH1 0x00
00000551: PUSH2 0x0559
00000554: DUP3
00000555: PUSH2 0x1438
00000558: JUMP
00000559: JUMPDEST
0000055a: PUSH2 0x0598
0000055d: JUMPI
0000055e: PUSH1 0x40
00000560: MLOAD
00000561: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000582: DUP2
00000583: MSTORE
00000584: PUSH1 0x04
00000586: ADD
00000587: PUSH2 0x058f
0000058a: SWAP1
0000058b: PUSH2 0x2ac3
0000058e: JUMP
0000058f: JUMPDEST
00000590: PUSH1 0x40
00000592: MLOAD
00000593: DUP1
00000594: SWAP2
00000595: SUB
00000596: SWAP1
00000597: REVERT
00000598: JUMPDEST
00000599: PUSH1 0x04
0000059b: PUSH1 0x00
0000059d: DUP4
0000059e: DUP2
0000059f: MSTORE
000005a0: PUSH1 0x20
000005a2: ADD
000005a3: SWAP1
000005a4: DUP2
000005a5: MSTORE
000005a6: PUSH1 0x20
000005a8: ADD
000005a9: PUSH1 0x00
000005ab: KECCAK256
000005ac: PUSH1 0x00
000005ae: SWAP1
000005af: SLOAD
000005b0: SWAP1
000005b1: PUSH2 0x0100
000005b4: EXP
000005b5: SWAP1
000005b6: DIV
000005b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005cc: AND
000005cd: SWAP1
000005ce: POP
000005cf: SWAP2
000005d0: SWAP1
000005d1: POP
000005d2: JUMP
000005d3: JUMPDEST
000005d4: PUSH1 0x00
000005d6: PUSH2 0x05de
000005d9: DUP3
000005da: PUSH2 0x09fb
000005dd: JUMP
000005de: JUMPDEST
000005df: SWAP1
000005e0: POP
000005e1: DUP1
000005e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005f7: AND
000005f8: DUP4
000005f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000060e: AND
0000060f: EQ
00000610: ISZERO
00000611: PUSH2 0x064f
00000614: JUMPI
00000615: PUSH1 0x40
00000617: MLOAD
00000618: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000639: DUP2
0000063a: MSTORE
0000063b: PUSH1 0x04
0000063d: ADD
0000063e: PUSH2 0x0646
00000641: SWAP1
00000642: PUSH2 0x2b55
00000645: JUMP
00000646: JUMPDEST
00000647: PUSH1 0x40
00000649: MLOAD
0000064a: DUP1
0000064b: SWAP2
0000064c: SUB
0000064d: SWAP1
0000064e: REVERT
0000064f: JUMPDEST
00000650: DUP1
00000651: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000666: AND
00000667: PUSH2 0x066e
0000066a: PUSH2 0x14a4
0000066d: JUMP
0000066e: JUMPDEST
0000066f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000684: AND
00000685: EQ
00000686: DUP1
00000687: PUSH2 0x069d
0000068a: JUMPI
0000068b: POP
0000068c: PUSH2 0x069c
0000068f: DUP2
00000690: PUSH2 0x0697
00000693: PUSH2 0x14a4
00000696: JUMP
00000697: JUMPDEST
00000698: PUSH2 0x11fe
0000069b: JUMP
0000069c: JUMPDEST
0000069d: JUMPDEST
0000069e: PUSH2 0x06dc
000006a1: JUMPI
000006a2: PUSH1 0x40
000006a4: MLOAD
000006a5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000006c6: DUP2
000006c7: MSTORE
000006c8: PUSH1 0x04
000006ca: ADD
000006cb: PUSH2 0x06d3
000006ce: SWAP1
000006cf: PUSH2 0x2be7
000006d2: JUMP
000006d3: JUMPDEST
000006d4: PUSH1 0x40
000006d6: MLOAD
000006d7: DUP1
000006d8: SWAP2
000006d9: SUB
000006da: SWAP1
000006db: REVERT
000006dc: JUMPDEST
000006dd: PUSH2 0x06e6
000006e0: DUP4
000006e1: DUP4
000006e2: PUSH2 0x14ac
000006e5: JUMP
000006e6: JUMPDEST
000006e7: POP
000006e8: POP
000006e9: POP
000006ea: JUMP
000006eb: JUMPDEST
000006ec: PUSH1 0x00
000006ee: PUSH1 0x09
000006f0: DUP1
000006f1: SLOAD
000006f2: SWAP1
000006f3: POP
000006f4: SWAP1
000006f5: POP
000006f6: SWAP1
000006f7: JUMP
000006f8: JUMPDEST
000006f9: PUSH2 0x0709
000006fc: PUSH2 0x0703
000006ff: PUSH2 0x14a4
00000702: JUMP
00000703: JUMPDEST
00000704: DUP3
00000705: PUSH2 0x1565
00000708: JUMP
00000709: JUMPDEST
0000070a: PUSH2 0x0748
0000070d: JUMPI
0000070e: PUSH1 0x40
00000710: MLOAD
00000711: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000732: DUP2
00000733: MSTORE
00000734: PUSH1 0x04
00000736: ADD
00000737: PUSH2 0x073f
0000073a: SWAP1
0000073b: PUSH2 0x2c79
0000073e: JUMP
0000073f: JUMPDEST
00000740: PUSH1 0x40
00000742: MLOAD
00000743: DUP1
00000744: SWAP2
00000745: SUB
00000746: SWAP1
00000747: REVERT
00000748: JUMPDEST
00000749: PUSH2 0x0753
0000074c: DUP4
0000074d: DUP4
0000074e: DUP4
0000074f: PUSH2 0x1643
00000752: JUMP
00000753: JUMPDEST
00000754: POP
00000755: POP
00000756: POP
00000757: JUMP
00000758: JUMPDEST
00000759: PUSH1 0x00
0000075b: PUSH2 0x0763
0000075e: DUP4
0000075f: PUSH2 0x0b26
00000762: JUMP
00000763: JUMPDEST
00000764: DUP3
00000765: LT
00000766: PUSH2 0x07a4
00000769: JUMPI
0000076a: PUSH1 0x40
0000076c: MLOAD
0000076d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000078e: DUP2
0000078f: MSTORE
00000790: PUSH1 0x04
00000792: ADD
00000793: PUSH2 0x079b
00000796: SWAP1
00000797: PUSH2 0x2d0b
0000079a: JUMP
0000079b: JUMPDEST
0000079c: PUSH1 0x40
0000079e: MLOAD
0000079f: DUP1
000007a0: SWAP2
000007a1: SUB
000007a2: SWAP1
000007a3: REVERT
000007a4: JUMPDEST
000007a5: PUSH1 0x07
000007a7: PUSH1 0x00
000007a9: DUP5
000007aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007bf: AND
000007c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007d5: AND
000007d6: DUP2
000007d7: MSTORE
000007d8: PUSH1 0x20
000007da: ADD
000007db: SWAP1
000007dc: DUP2
000007dd: MSTORE
000007de: PUSH1 0x20
000007e0: ADD
000007e1: PUSH1 0x00
000007e3: KECCAK256
000007e4: PUSH1 0x00
000007e6: DUP4
000007e7: DUP2
000007e8: MSTORE
000007e9: PUSH1 0x20
000007eb: ADD
000007ec: SWAP1
000007ed: DUP2
000007ee: MSTORE
000007ef: PUSH1 0x20
000007f1: ADD
000007f2: PUSH1 0x00
000007f4: KECCAK256
000007f5: SLOAD
000007f6: SWAP1
000007f7: POP
000007f8: SWAP3
000007f9: SWAP2
000007fa: POP
000007fb: POP
000007fc: JUMP
000007fd: JUMPDEST
000007fe: PUSH1 0x00
00000800: PUSH4 0x01e187e0
00000805: DUP3
00000806: PUSH2 0x080f
00000809: SWAP2
0000080a: SWAP1
0000080b: PUSH2 0x2d89
0000080e: JUMP
0000080f: JUMPDEST
00000810: PUSH2 0x07b2
00000813: PUSH2 0x081c
00000816: SWAP2
00000817: SWAP1
00000818: PUSH2 0x2dba
0000081b: JUMP
0000081c: JUMPDEST
0000081d: SWAP1
0000081e: POP
0000081f: SWAP2
00000820: SWAP1
00000821: POP
00000822: JUMP
00000823: JUMPDEST
00000824: PUSH1 0x60
00000826: PUSH1 0x40
00000828: MLOAD
00000829: PUSH1 0x20
0000082b: ADD
0000082c: PUSH2 0x0834
0000082f: SWAP1
00000830: PUSH2 0x2e41
00000833: JUMP
00000834: JUMPDEST
00000835: PUSH1 0x40
00000837: MLOAD
00000838: PUSH1 0x20
0000083a: DUP2
0000083b: DUP4
0000083c: SUB
0000083d: SUB
0000083e: DUP2
0000083f: MSTORE
00000840: SWAP1
00000841: PUSH1 0x40
00000843: MSTORE
00000844: DUP1
00000845: MLOAD
00000846: SWAP1
00000847: PUSH1 0x20
00000849: ADD
0000084a: KECCAK256
0000084b: PUSH1 0x0d
0000084d: PUSH1 0x00
0000084f: DUP5
00000850: DUP2
00000851: MSTORE
00000852: PUSH1 0x20
00000854: ADD
00000855: SWAP1
00000856: DUP2
00000857: MSTORE
00000858: PUSH1 0x20
0000085a: ADD
0000085b: PUSH1 0x00
0000085d: KECCAK256
0000085e: PUSH1 0x40
00000860: MLOAD
00000861: PUSH1 0x20
00000863: ADD
00000864: PUSH2 0x086d
00000867: SWAP2
00000868: SWAP1
00000869: PUSH2 0x2eea
0000086c: JUMP
0000086d: JUMPDEST
0000086e: PUSH1 0x40
00000870: MLOAD
00000871: PUSH1 0x20
00000873: DUP2
00000874: DUP4
00000875: SUB
00000876: SUB
00000877: DUP2
00000878: MSTORE
00000879: SWAP1
0000087a: PUSH1 0x40
0000087c: MSTORE
0000087d: DUP1
0000087e: MLOAD
0000087f: SWAP1
00000880: PUSH1 0x20
00000882: ADD
00000883: KECCAK256
00000884: EQ
00000885: ISZERO
00000886: PUSH2 0x08c6
00000889: JUMPI
0000088a: PUSH1 0x40
0000088c: MLOAD
0000088d: DUP1
0000088e: PUSH1 0x40
00000890: ADD
00000891: PUSH1 0x40
00000893: MSTORE
00000894: DUP1
00000895: PUSH1 0x07
00000897: DUP2
00000898: MSTORE
00000899: PUSH1 0x20
0000089b: ADD
0000089c: PUSH32 0x6e6f206e616d6500000000000000000000000000000000000000000000000000
000008bd: DUP2
000008be: MSTORE
000008bf: POP
000008c0: SWAP1
000008c1: POP
000008c2: PUSH2 0x0965
000008c5: JUMP
000008c6: JUMPDEST
000008c7: PUSH1 0x0d
000008c9: PUSH1 0x00
000008cb: DUP4
000008cc: DUP2
000008cd: MSTORE
000008ce: PUSH1 0x20
000008d0: ADD
000008d1: SWAP1
000008d2: DUP2
000008d3: MSTORE
000008d4: PUSH1 0x20
000008d6: ADD
000008d7: PUSH1 0x00
000008d9: KECCAK256
000008da: DUP1
000008db: SLOAD
000008dc: PUSH2 0x08e4
000008df: SWAP1
000008e0: PUSH2 0x2a1f
000008e3: JUMP
000008e4: JUMPDEST
000008e5: DUP1
000008e6: PUSH1 0x1f
000008e8: ADD
000008e9: PUSH1 0x20
000008eb: DUP1
000008ec: SWAP2
000008ed: DIV
000008ee: MUL
000008ef: PUSH1 0x20
000008f1: ADD
000008f2: PUSH1 0x40
000008f4: MLOAD
000008f5: SWAP1
000008f6: DUP2
000008f7: ADD
000008f8: PUSH1 0x40
000008fa: MSTORE
000008fb: DUP1
000008fc: SWAP3
000008fd: SWAP2
000008fe: SWAP1
000008ff: DUP2
00000900: DUP2
00000901: MSTORE
00000902: PUSH1 0x20
00000904: ADD
00000905: DUP3
00000906: DUP1
00000907: SLOAD
00000908: PUSH2 0x0910
0000090b: SWAP1
0000090c: PUSH2 0x2a1f
0000090f: JUMP
00000910: JUMPDEST
00000911: DUP1
00000912: ISZERO
00000913: PUSH2 0x095d
00000916: JUMPI
00000917: DUP1
00000918: PUSH1 0x1f
0000091a: LT
0000091b: PUSH2 0x0932
0000091e: JUMPI
0000091f: PUSH2 0x0100
00000922: DUP1
00000923: DUP4
00000924: SLOAD
00000925: DIV
00000926: MUL
00000927: DUP4
00000928: MSTORE
00000929: SWAP2
0000092a: PUSH1 0x20
0000092c: ADD
0000092d: SWAP2
0000092e: PUSH2 0x095d
00000931: JUMP
00000932: JUMPDEST
00000933: DUP3
00000934: ADD
00000935: SWAP2
00000936: SWAP1
00000937: PUSH1 0x00
00000939: MSTORE
0000093a: PUSH1 0x20
0000093c: PUSH1 0x00
0000093e: KECCAK256
0000093f: SWAP1
00000940: JUMPDEST
00000941: DUP2
00000942: SLOAD
00000943: DUP2
00000944: MSTORE
00000945: SWAP1
00000946: PUSH1 0x01
00000948: ADD
00000949: SWAP1
0000094a: PUSH1 0x20
0000094c: ADD
0000094d: DUP1
0000094e: DUP4
0000094f: GT
00000950: PUSH2 0x0940
00000953: JUMPI
00000954: DUP3
00000955: SWAP1
00000956: SUB
00000957: PUSH1 0x1f
00000959: AND
0000095a: DUP3
0000095b: ADD
0000095c: SWAP2
0000095d: JUMPDEST
0000095e: POP
0000095f: POP
00000960: POP
00000961: POP
00000962: POP
00000963: SWAP1
00000964: POP
00000965: JUMPDEST
00000966: SWAP2
00000967: SWAP1
00000968: POP
00000969: JUMP
0000096a: JUMPDEST
0000096b: PUSH2 0x0985
0000096e: DUP4
0000096f: DUP4
00000970: DUP4
00000971: PUSH1 0x40
00000973: MLOAD
00000974: DUP1
00000975: PUSH1 0x20
00000977: ADD
00000978: PUSH1 0x40
0000097a: MSTORE
0000097b: DUP1
0000097c: PUSH1 0x00
0000097e: DUP2
0000097f: MSTORE
00000980: POP
00000981: PUSH2 0x0f4c
00000984: JUMP
00000985: JUMPDEST
00000986: POP
00000987: POP
00000988: POP
00000989: JUMP
0000098a: JUMPDEST
0000098b: PUSH1 0x00
0000098d: PUSH2 0x0994
00000990: PUSH2 0x06eb
00000993: JUMP
00000994: JUMPDEST
00000995: DUP3
00000996: LT
00000997: PUSH2 0x09d5
0000099a: JUMPI
0000099b: PUSH1 0x40
0000099d: MLOAD
0000099e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000009bf: DUP2
000009c0: MSTORE
000009c1: PUSH1 0x04
000009c3: ADD
000009c4: PUSH2 0x09cc
000009c7: SWAP1
000009c8: PUSH2 0x2f73
000009cb: JUMP
000009cc: JUMPDEST
000009cd: PUSH1 0x40
000009cf: MLOAD
000009d0: DUP1
000009d1: SWAP2
000009d2: SUB
000009d3: SWAP1
000009d4: REVERT
000009d5: JUMPDEST
000009d6: PUSH1 0x09
000009d8: DUP3
000009d9: DUP2
000009da: SLOAD
000009db: DUP2
000009dc: LT
000009dd: PUSH2 0x09e9
000009e0: JUMPI
000009e1: PUSH2 0x09e8
000009e4: PUSH2 0x2f93
000009e7: JUMP
000009e8: JUMPDEST
000009e9: JUMPDEST
000009ea: SWAP1
000009eb: PUSH1 0x00
000009ed: MSTORE
000009ee: PUSH1 0x20
000009f0: PUSH1 0x00
000009f2: KECCAK256
000009f3: ADD
000009f4: SLOAD
000009f5: SWAP1
000009f6: POP
000009f7: SWAP2
000009f8: SWAP1
000009f9: POP
000009fa: JUMP
000009fb: JUMPDEST
000009fc: PUSH1 0x00
000009fe: DUP1
000009ff: PUSH1 0x02
00000a01: PUSH1 0x00
00000a03: DUP5
00000a04: DUP2
00000a05: MSTORE
00000a06: PUSH1 0x20
00000a08: ADD
00000a09: SWAP1
00000a0a: DUP2
00000a0b: MSTORE
00000a0c: PUSH1 0x20
00000a0e: ADD
00000a0f: PUSH1 0x00
00000a11: KECCAK256
00000a12: PUSH1 0x00
00000a14: SWAP1
00000a15: SLOAD
00000a16: SWAP1
00000a17: PUSH2 0x0100
00000a1a: EXP
00000a1b: SWAP1
00000a1c: DIV
00000a1d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a32: AND
00000a33: SWAP1
00000a34: POP
00000a35: PUSH1 0x00
00000a37: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a4c: AND
00000a4d: DUP2
00000a4e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a63: AND
00000a64: EQ
00000a65: ISZERO
00000a66: PUSH2 0x0aa4
00000a69: JUMPI
00000a6a: PUSH1 0x40
00000a6c: MLOAD
00000a6d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a8e: DUP2
00000a8f: MSTORE
00000a90: PUSH1 0x04
00000a92: ADD
00000a93: PUSH2 0x0a9b
00000a96: SWAP1
00000a97: PUSH2 0x3034
00000a9a: JUMP
00000a9b: JUMPDEST
00000a9c: PUSH1 0x40
00000a9e: MLOAD
00000a9f: DUP1
00000aa0: SWAP2
00000aa1: SUB
00000aa2: SWAP1
00000aa3: REVERT
00000aa4: JUMPDEST
00000aa5: DUP1
00000aa6: SWAP2
00000aa7: POP
00000aa8: POP
00000aa9: SWAP2
00000aaa: SWAP1
00000aab: POP
00000aac: JUMP
00000aad: JUMPDEST
00000aae: PUSH2 0x0ab6
00000ab1: DUP3
00000ab2: PUSH2 0x09fb
00000ab5: JUMP
00000ab6: JUMPDEST
00000ab7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000acc: AND
00000acd: PUSH2 0x0ad4
00000ad0: PUSH2 0x14a4
00000ad3: JUMP
00000ad4: JUMPDEST
00000ad5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aea: AND
00000aeb: EQ
00000aec: PUSH2 0x0af4
00000aef: JUMPI
00000af0: PUSH1 0x00
00000af2: DUP1
00000af3: REVERT
00000af4: JUMPDEST
00000af5: DUP1
00000af6: PUSH1 0x0d
00000af8: PUSH1 0x00
00000afa: DUP5
00000afb: DUP2
00000afc: MSTORE
00000afd: PUSH1 0x20
00000aff: ADD
00000b00: SWAP1
00000b01: DUP2
00000b02: MSTORE
00000b03: PUSH1 0x20
00000b05: ADD
00000b06: PUSH1 0x00
00000b08: KECCAK256
00000b09: SWAP1
00000b0a: DUP1
00000b0b: MLOAD
00000b0c: SWAP1
00000b0d: PUSH1 0x20
00000b0f: ADD
00000b10: SWAP1
00000b11: PUSH2 0x0b1b
00000b14: SWAP3
00000b15: SWAP2
00000b16: SWAP1
00000b17: PUSH2 0x228d
00000b1a: JUMP
00000b1b: JUMPDEST
00000b1c: POP
00000b1d: POP
00000b1e: POP
00000b1f: JUMP
00000b20: JUMPDEST
00000b21: PUSH1 0x0c
00000b23: SLOAD
00000b24: DUP2
00000b25: JUMP
00000b26: JUMPDEST
00000b27: PUSH1 0x00
00000b29: DUP1
00000b2a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b3f: AND
00000b40: DUP3
00000b41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b56: AND
00000b57: EQ
00000b58: ISZERO
00000b59: PUSH2 0x0b97
00000b5c: JUMPI
00000b5d: PUSH1 0x40
00000b5f: MLOAD
00000b60: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000b81: DUP2
00000b82: MSTORE
00000b83: PUSH1 0x04
00000b85: ADD
00000b86: PUSH2 0x0b8e
00000b89: SWAP1
00000b8a: PUSH2 0x30c6
00000b8d: JUMP
00000b8e: JUMPDEST
00000b8f: PUSH1 0x40
00000b91: MLOAD
00000b92: DUP1
00000b93: SWAP2
00000b94: SUB
00000b95: SWAP1
00000b96: REVERT
00000b97: JUMPDEST
00000b98: PUSH1 0x03
00000b9a: PUSH1 0x00
00000b9c: DUP4
00000b9d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bb2: AND
00000bb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bc8: AND
00000bc9: DUP2
00000bca: MSTORE
00000bcb: PUSH1 0x20
00000bcd: ADD
00000bce: SWAP1
00000bcf: DUP2
00000bd0: MSTORE
00000bd1: PUSH1 0x20
00000bd3: ADD
00000bd4: PUSH1 0x00
00000bd6: KECCAK256
00000bd7: SLOAD
00000bd8: SWAP1
00000bd9: POP
00000bda: SWAP2
00000bdb: SWAP1
00000bdc: POP
00000bdd: JUMP
00000bde: JUMPDEST
00000bdf: PUSH1 0x60
00000be1: PUSH2 0x0bf1
00000be4: PUSH2 0x0bec
00000be7: TIMESTAMP
00000be8: PUSH2 0x07fd
00000beb: JUMP
00000bec: JUMPDEST
00000bed: PUSH2 0x189f
00000bf0: JUMP
00000bf1: JUMPDEST
00000bf2: SWAP1
00000bf3: POP
00000bf4: SWAP1
00000bf5: JUMP
00000bf6: JUMPDEST
00000bf7: PUSH1 0x0b
00000bf9: PUSH1 0x00
00000bfb: SWAP1
00000bfc: SLOAD
00000bfd: SWAP1
00000bfe: PUSH2 0x0100
00000c01: EXP
00000c02: SWAP1
00000c03: DIV
00000c04: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c19: AND
00000c1a: DUP2
00000c1b: JUMP
00000c1c: JUMPDEST
00000c1d: PUSH1 0x60
00000c1f: PUSH1 0x01
00000c21: DUP1
00000c22: SLOAD
00000c23: PUSH2 0x0c2b
00000c26: SWAP1
00000c27: PUSH2 0x2a1f
00000c2a: JUMP
00000c2b: JUMPDEST
00000c2c: DUP1
00000c2d: PUSH1 0x1f
00000c2f: ADD
00000c30: PUSH1 0x20
00000c32: DUP1
00000c33: SWAP2
00000c34: DIV
00000c35: MUL
00000c36: PUSH1 0x20
00000c38: ADD
00000c39: PUSH1 0x40
00000c3b: MLOAD
00000c3c: SWAP1
00000c3d: DUP2
00000c3e: ADD
00000c3f: PUSH1 0x40
00000c41: MSTORE
00000c42: DUP1
00000c43: SWAP3
00000c44: SWAP2
00000c45: SWAP1
00000c46: DUP2
00000c47: DUP2
00000c48: MSTORE
00000c49: PUSH1 0x20
00000c4b: ADD
00000c4c: DUP3
00000c4d: DUP1
00000c4e: SLOAD
00000c4f: PUSH2 0x0c57
00000c52: SWAP1
00000c53: PUSH2 0x2a1f
00000c56: JUMP
00000c57: JUMPDEST
00000c58: DUP1
00000c59: ISZERO
00000c5a: PUSH2 0x0ca4
00000c5d: JUMPI
00000c5e: DUP1
00000c5f: PUSH1 0x1f
00000c61: LT
00000c62: PUSH2 0x0c79
00000c65: JUMPI
00000c66: PUSH2 0x0100
00000c69: DUP1
00000c6a: DUP4
00000c6b: SLOAD
00000c6c: DIV
00000c6d: MUL
00000c6e: DUP4
00000c6f: MSTORE
00000c70: SWAP2
00000c71: PUSH1 0x20
00000c73: ADD
00000c74: SWAP2
00000c75: PUSH2 0x0ca4
00000c78: JUMP
00000c79: JUMPDEST
00000c7a: DUP3
00000c7b: ADD
00000c7c: SWAP2
00000c7d: SWAP1
00000c7e: PUSH1 0x00
00000c80: MSTORE
00000c81: PUSH1 0x20
00000c83: PUSH1 0x00
00000c85: KECCAK256
00000c86: SWAP1
00000c87: JUMPDEST
00000c88: DUP2
00000c89: SLOAD
00000c8a: DUP2
00000c8b: MSTORE
00000c8c: SWAP1
00000c8d: PUSH1 0x01
00000c8f: ADD
00000c90: SWAP1
00000c91: PUSH1 0x20
00000c93: ADD
00000c94: DUP1
00000c95: DUP4
00000c96: GT
00000c97: PUSH2 0x0c87
00000c9a: JUMPI
00000c9b: DUP3
00000c9c: SWAP1
00000c9d: SUB
00000c9e: PUSH1 0x1f
00000ca0: AND
00000ca1: DUP3
00000ca2: ADD
00000ca3: SWAP2
00000ca4: JUMPDEST
00000ca5: POP
00000ca6: POP
00000ca7: POP
00000ca8: POP
00000ca9: POP
00000caa: SWAP1
00000cab: POP
00000cac: SWAP1
00000cad: JUMP
00000cae: JUMPDEST
00000caf: PUSH2 0x0cb6
00000cb2: PUSH2 0x14a4
00000cb5: JUMP
00000cb6: JUMPDEST
00000cb7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ccc: AND
00000ccd: DUP3
00000cce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ce3: AND
00000ce4: EQ
00000ce5: ISZERO
00000ce6: PUSH2 0x0d24
00000ce9: JUMPI
00000cea: PUSH1 0x40
00000cec: MLOAD
00000ced: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000d0e: DUP2
00000d0f: MSTORE
00000d10: PUSH1 0x04
00000d12: ADD
00000d13: PUSH2 0x0d1b
00000d16: SWAP1
00000d17: PUSH2 0x3132
00000d1a: JUMP
00000d1b: JUMPDEST
00000d1c: PUSH1 0x40
00000d1e: MLOAD
00000d1f: DUP1
00000d20: SWAP2
00000d21: SUB
00000d22: SWAP1
00000d23: REVERT
00000d24: JUMPDEST
00000d25: DUP1
00000d26: PUSH1 0x05
00000d28: PUSH1 0x00
00000d2a: PUSH2 0x0d31
00000d2d: PUSH2 0x14a4
00000d30: JUMP
00000d31: JUMPDEST
00000d32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d47: AND
00000d48: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d5d: AND
00000d5e: DUP2
00000d5f: MSTORE
00000d60: PUSH1 0x20
00000d62: ADD
00000d63: SWAP1
00000d64: DUP2
00000d65: MSTORE
00000d66: PUSH1 0x20
00000d68: ADD
00000d69: PUSH1 0x00
00000d6b: KECCAK256
00000d6c: PUSH1 0x00
00000d6e: DUP5
00000d6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d84: AND
00000d85: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d9a: AND
00000d9b: DUP2
00000d9c: MSTORE
00000d9d: PUSH1 0x20
00000d9f: ADD
00000da0: SWAP1
00000da1: DUP2
00000da2: MSTORE
00000da3: PUSH1 0x20
00000da5: ADD
00000da6: PUSH1 0x00
00000da8: KECCAK256
00000da9: PUSH1 0x00
00000dab: PUSH2 0x0100
00000dae: EXP
00000daf: DUP2
00000db0: SLOAD
00000db1: DUP2
00000db2: PUSH1 0xff
00000db4: MUL
00000db5: NOT
00000db6: AND
00000db7: SWAP1
00000db8: DUP4
00000db9: ISZERO
00000dba: ISZERO
00000dbb: MUL
00000dbc: OR
00000dbd: SWAP1
00000dbe: SSTORE
00000dbf: POP
00000dc0: DUP2
00000dc1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dd6: AND
00000dd7: PUSH2 0x0dde
00000dda: PUSH2 0x14a4
00000ddd: JUMP
00000dde: JUMPDEST
00000ddf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000df4: AND
00000df5: PUSH32 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31
00000e16: DUP4
00000e17: PUSH1 0x40
00000e19: MLOAD
00000e1a: PUSH2 0x0e23
00000e1d: SWAP2
00000e1e: SWAP1
00000e1f: PUSH2 0x23e4
00000e22: JUMP
00000e23: JUMPDEST
00000e24: PUSH1 0x40
00000e26: MLOAD
00000e27: DUP1
00000e28: SWAP2
00000e29: SUB
00000e2a: SWAP1
00000e2b: LOG3
00000e2c: POP
00000e2d: POP
00000e2e: JUMP
00000e2f: JUMPDEST
00000e30: PUSH1 0x0b
00000e32: PUSH1 0x00
00000e34: SWAP1
00000e35: SLOAD
00000e36: SWAP1
00000e37: PUSH2 0x0100
00000e3a: EXP
00000e3b: SWAP1
00000e3c: DIV
00000e3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e52: AND
00000e53: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e68: AND
00000e69: PUSH2 0x0e70
00000e6c: PUSH2 0x14a4
00000e6f: JUMP
00000e70: JUMPDEST
00000e71: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e86: AND
00000e87: EQ
00000e88: PUSH2 0x0e90
00000e8b: JUMPI
00000e8c: PUSH1 0x00
00000e8e: DUP1
00000e8f: REVERT
00000e90: JUMPDEST
00000e91: PUSH1 0x00
00000e93: DUP2
00000e94: PUSH1 0x01
00000e96: PUSH1 0x0c
00000e98: SLOAD
00000e99: PUSH2 0x0ea2
00000e9c: SWAP2
00000e9d: SWAP1
00000e9e: PUSH2 0x3152
00000ea1: JUMP
00000ea2: JUMPDEST
00000ea3: PUSH2 0x0eac
00000ea6: SWAP2
00000ea7: SWAP1
00000ea8: PUSH2 0x2dba
00000eab: JUMP
00000eac: JUMPDEST
00000ead: SWAP1
00000eae: POP
00000eaf: PUSH1 0x00
00000eb1: PUSH1 0x0c
00000eb3: SLOAD
00000eb4: SWAP1
00000eb5: POP
00000eb6: JUMPDEST
00000eb7: DUP2
00000eb8: DUP2
00000eb9: GT
00000eba: PUSH2 0x0f47
00000ebd: JUMPI
00000ebe: PUSH2 0x0eeb
00000ec1: PUSH1 0x0b
00000ec3: PUSH1 0x00
00000ec5: SWAP1
00000ec6: SLOAD
00000ec7: SWAP1
00000ec8: PUSH2 0x0100
00000ecb: EXP
00000ecc: SWAP1
00000ecd: DIV
00000ece: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ee3: AND
00000ee4: PUSH1 0x0c
00000ee6: SLOAD
00000ee7: PUSH2 0x1a00
00000eea: JUMP
00000eeb: JUMPDEST
00000eec: PUSH2 0x0ef3
00000eef: PUSH2 0x0bde
00000ef2: JUMP
00000ef3: JUMPDEST
00000ef4: PUSH1 0x1b
00000ef6: PUSH1 0x00
00000ef8: PUSH1 0x0c
00000efa: SLOAD
00000efb: DUP2
00000efc: MSTORE
00000efd: PUSH1 0x20
00000eff: ADD
00000f00: SWAP1
00000f01: DUP2
00000f02: MSTORE
00000f03: PUSH1 0x20
00000f05: ADD
00000f06: PUSH1 0x00
00000f08: KECCAK256
00000f09: SWAP1
00000f0a: DUP1
00000f0b: MLOAD
00000f0c: SWAP1
00000f0d: PUSH1 0x20
00000f0f: ADD
00000f10: SWAP1
00000f11: PUSH2 0x0f1b
00000f14: SWAP3
00000f15: SWAP2
00000f16: SWAP1
00000f17: PUSH2 0x228d
00000f1a: JUMP
00000f1b: JUMPDEST
00000f1c: POP
00000f1d: PUSH1 0x0c
00000f1f: PUSH1 0x00
00000f21: DUP2
00000f22: SLOAD
00000f23: DUP1
00000f24: SWAP3
00000f25: SWAP2
00000f26: SWAP1
00000f27: PUSH2 0x0f2f
00000f2a: SWAP1
00000f2b: PUSH2 0x3186
00000f2e: JUMP
00000f2f: JUMPDEST
00000f30: SWAP2
00000f31: SWAP1
00000f32: POP
00000f33: SSTORE
00000f34: POP
00000f35: DUP1
00000f36: DUP1
00000f37: PUSH2 0x0f3f
00000f3a: SWAP1
00000f3b: PUSH2 0x3186
00000f3e: JUMP
00000f3f: JUMPDEST
00000f40: SWAP2
00000f41: POP
00000f42: POP
00000f43: PUSH2 0x0eb6
00000f46: JUMP
00000f47: JUMPDEST
00000f48: POP
00000f49: POP
00000f4a: POP
00000f4b: JUMP
00000f4c: JUMPDEST
00000f4d: PUSH2 0x0f5d
00000f50: PUSH2 0x0f57
00000f53: PUSH2 0x14a4
00000f56: JUMP
00000f57: JUMPDEST
00000f58: DUP4
00000f59: PUSH2 0x1565
00000f5c: JUMP
00000f5d: JUMPDEST
00000f5e: PUSH2 0x0f9c
00000f61: JUMPI
00000f62: PUSH1 0x40
00000f64: MLOAD
00000f65: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000f86: DUP2
00000f87: MSTORE
00000f88: PUSH1 0x04
00000f8a: ADD
00000f8b: PUSH2 0x0f93
00000f8e: SWAP1
00000f8f: PUSH2 0x2c79
00000f92: JUMP
00000f93: JUMPDEST
00000f94: PUSH1 0x40
00000f96: MLOAD
00000f97: DUP1
00000f98: SWAP2
00000f99: SUB
00000f9a: SWAP1
00000f9b: REVERT
00000f9c: JUMPDEST
00000f9d: PUSH2 0x0fa8
00000fa0: DUP5
00000fa1: DUP5
00000fa2: DUP5
00000fa3: DUP5
00000fa4: PUSH2 0x1a1e
00000fa7: JUMP
00000fa8: JUMPDEST
00000fa9: POP
00000faa: POP
00000fab: POP
00000fac: POP
00000fad: JUMP
00000fae: JUMPDEST
00000faf: PUSH1 0x60
00000fb1: PUSH1 0x00
00000fb3: DUP3
00000fb4: EQ
00000fb5: ISZERO
00000fb6: PUSH2 0x10db
00000fb9: JUMPI
00000fba: PUSH1 0x00
00000fbc: PUSH1 0x0e
00000fbe: PUSH1 0x00
00000fc0: PUSH1 0x05
00000fc2: DUP2
00000fc3: LT
00000fc4: PUSH2 0x0fd0
00000fc7: JUMPI
00000fc8: PUSH2 0x0fcf
00000fcb: PUSH2 0x2f93
00000fce: JUMP
00000fcf: JUMPDEST
00000fd0: JUMPDEST
00000fd1: ADD
00000fd2: PUSH1 0x13
00000fd4: PUSH1 0x00
00000fd6: PUSH1 0x04
00000fd8: DUP2
00000fd9: LT
00000fda: PUSH2 0x0fe6
00000fdd: JUMPI
00000fde: PUSH2 0x0fe5
00000fe1: PUSH2 0x2f93
00000fe4: JUMP
00000fe5: JUMPDEST
00000fe6: JUMPDEST
00000fe7: ADD
00000fe8: PUSH2 0x0ff0
00000feb: DUP6
00000fec: PUSH2 0x189f
00000fef: JUMP
00000ff0: JUMPDEST
00000ff1: PUSH1 0x13
00000ff3: PUSH1 0x01
00000ff5: PUSH1 0x04
00000ff7: DUP2
00000ff8: LT
00000ff9: PUSH2 0x1005
00000ffc: JUMPI
00000ffd: PUSH2 0x1004
00001000: PUSH2 0x2f93
00001003: JUMP
00001004: JUMPDEST
00001005: JUMPDEST
00001006: ADD
00001007: PUSH1 0x0e
00001009: PUSH1 0x01
0000100b: PUSH1 0x05
0000100d: DUP2
0000100e: LT
0000100f: PUSH2 0x101b
00001012: JUMPI
00001013: PUSH2 0x101a
00001016: PUSH2 0x2f93
00001019: JUMP
0000101a: JUMPDEST
0000101b: JUMPDEST
0000101c: ADD
0000101d: PUSH1 0x13
0000101f: PUSH1 0x02
00001021: PUSH1 0x04
00001023: DUP2
00001024: LT
00001025: PUSH2 0x1031
00001028: JUMPI
00001029: PUSH2 0x1030
0000102c: PUSH2 0x2f93
0000102f: JUMP
00001030: JUMPDEST
00001031: JUMPDEST
00001032: ADD
00001033: PUSH1 0x0e
00001035: PUSH1 0x02
00001037: PUSH1 0x05
00001039: DUP2
0000103a: LT
0000103b: PUSH2 0x1047
0000103e: JUMPI
0000103f: PUSH2 0x1046
00001042: PUSH2 0x2f93
00001045: JUMP
00001046: JUMPDEST
00001047: JUMPDEST
00001048: ADD
00001049: PUSH1 0x13
0000104b: PUSH1 0x03
0000104d: PUSH1 0x04
0000104f: DUP2
00001050: LT
00001051: PUSH2 0x105d
00001054: JUMPI
00001055: PUSH2 0x105c
00001058: PUSH2 0x2f93
0000105b: JUMP
0000105c: JUMPDEST
0000105d: JUMPDEST
0000105e: ADD
0000105f: PUSH1 0x1b
00001061: PUSH1 0x00
00001063: DUP13
00001064: DUP2
00001065: MSTORE
00001066: PUSH1 0x20
00001068: ADD
00001069: SWAP1
0000106a: DUP2
0000106b: MSTORE
0000106c: PUSH1 0x20
0000106e: ADD
0000106f: PUSH1 0x00
00001071: KECCAK256
00001072: PUSH1 0x0e
00001074: PUSH1 0x03
00001076: PUSH1 0x05
00001078: DUP2
00001079: LT
0000107a: PUSH2 0x1086
0000107d: JUMPI
0000107e: PUSH2 0x1085
00001081: PUSH2 0x2f93
00001084: JUMP
00001085: JUMPDEST
00001086: JUMPDEST
00001087: ADD
00001088: PUSH2 0x1090
0000108b: DUP14
0000108c: PUSH2 0x0823
0000108f: JUMP
00001090: JUMPDEST
00001091: PUSH1 0x0e
00001093: PUSH1 0x04
00001095: PUSH1 0x05
00001097: DUP2
00001098: LT
00001099: PUSH2 0x10a5
0000109c: JUMPI
0000109d: PUSH2 0x10a4
000010a0: PUSH2 0x2f93
000010a3: JUMP
000010a4: JUMPDEST
000010a5: JUMPDEST
000010a6: ADD
000010a7: PUSH1 0x40
000010a9: MLOAD
000010aa: PUSH1 0x20
000010ac: ADD
000010ad: PUSH2 0x10c1
000010b0: SWAP13
000010b1: SWAP12
000010b2: SWAP11
000010b3: SWAP10
000010b4: SWAP9
000010b5: SWAP8
000010b6: SWAP7
000010b7: SWAP6
000010b8: SWAP5
000010b9: SWAP4
000010ba: SWAP3
000010bb: SWAP2
000010bc: SWAP1
000010bd: PUSH2 0x3200
000010c0: JUMP
000010c1: JUMPDEST
000010c2: PUSH1 0x40
000010c4: MLOAD
000010c5: PUSH1 0x20
000010c7: DUP2
000010c8: DUP4
000010c9: SUB
000010ca: SUB
000010cb: DUP2
000010cc: MSTORE
000010cd: SWAP1
000010ce: PUSH1 0x40
000010d0: MSTORE
000010d1: SWAP1
000010d2: POP
000010d3: DUP1
000010d4: SWAP2
000010d5: POP
000010d6: POP
000010d7: PUSH2 0x11f9
000010da: JUMP
000010db: JUMPDEST
000010dc: PUSH1 0x00
000010de: PUSH1 0x0e
000010e0: PUSH1 0x00
000010e2: PUSH1 0x05
000010e4: DUP2
000010e5: LT
000010e6: PUSH2 0x10f2
000010e9: JUMPI
000010ea: PUSH2 0x10f1
000010ed: PUSH2 0x2f93
000010f0: JUMP
000010f1: JUMPDEST
000010f2: JUMPDEST
000010f3: ADD
000010f4: PUSH1 0x17
000010f6: PUSH1 0x00
000010f8: PUSH1 0x04
000010fa: DUP2
000010fb: LT
000010fc: PUSH2 0x1108
000010ff: JUMPI
00001100: PUSH2 0x1107
00001103: PUSH2 0x2f93
00001106: JUMP
00001107: JUMPDEST
00001108: JUMPDEST
00001109: ADD
0000110a: PUSH2 0x1112
0000110d: DUP6
0000110e: PUSH2 0x189f
00001111: JUMP
00001112: JUMPDEST
00001113: PUSH1 0x17
00001115: PUSH1 0x01
00001117: PUSH1 0x04
00001119: DUP2
0000111a: LT
0000111b: PUSH2 0x1127
0000111e: JUMPI
0000111f: PUSH2 0x1126
00001122: PUSH2 0x2f93
00001125: JUMP
00001126: JUMPDEST
00001127: JUMPDEST
00001128: ADD
00001129: PUSH1 0x0e
0000112b: PUSH1 0x01
0000112d: PUSH1 0x05
0000112f: DUP2
00001130: LT
00001131: PUSH2 0x113d
00001134: JUMPI
00001135: PUSH2 0x113c
00001138: PUSH2 0x2f93
0000113b: JUMP
0000113c: JUMPDEST
0000113d: JUMPDEST
0000113e: ADD
0000113f: PUSH1 0x17
00001141: PUSH1 0x02
00001143: PUSH1 0x04
00001145: DUP2
00001146: LT
00001147: PUSH2 0x1153
0000114a: JUMPI
0000114b: PUSH2 0x1152
0000114e: PUSH2 0x2f93
00001151: JUMP
00001152: JUMPDEST
00001153: JUMPDEST
00001154: ADD
00001155: PUSH1 0x0e
00001157: PUSH1 0x02
00001159: PUSH1 0x05
0000115b: DUP2
0000115c: LT
0000115d: PUSH2 0x1169
00001160: JUMPI
00001161: PUSH2 0x1168
00001164: PUSH2 0x2f93
00001167: JUMP
00001168: JUMPDEST
00001169: JUMPDEST
0000116a: ADD
0000116b: PUSH1 0x17
0000116d: PUSH1 0x03
0000116f: PUSH1 0x04
00001171: DUP2
00001172: LT
00001173: PUSH2 0x117f
00001176: JUMPI
00001177: PUSH2 0x117e
0000117a: PUSH2 0x2f93
0000117d: JUMP
0000117e: JUMPDEST
0000117f: JUMPDEST
00001180: ADD
00001181: PUSH1 0x1b
00001183: PUSH1 0x00
00001185: DUP13
00001186: DUP2
00001187: MSTORE
00001188: PUSH1 0x20
0000118a: ADD
0000118b: SWAP1
0000118c: DUP2
0000118d: MSTORE
0000118e: PUSH1 0x20
00001190: ADD
00001191: PUSH1 0x00
00001193: KECCAK256
00001194: PUSH1 0x0e
00001196: PUSH1 0x03
00001198: PUSH1 0x05
0000119a: DUP2
0000119b: LT
0000119c: PUSH2 0x11a8
0000119f: JUMPI
000011a0: PUSH2 0x11a7
000011a3: PUSH2 0x2f93
000011a6: JUMP
000011a7: JUMPDEST
000011a8: JUMPDEST
000011a9: ADD
000011aa: PUSH2 0x11b2
000011ad: DUP14
000011ae: PUSH2 0x0823
000011b1: JUMP
000011b2: JUMPDEST
000011b3: PUSH1 0x0e
000011b5: PUSH1 0x04
000011b7: PUSH1 0x05
000011b9: DUP2
000011ba: LT
000011bb: PUSH2 0x11c7
000011be: JUMPI
000011bf: PUSH2 0x11c6
000011c2: PUSH2 0x2f93
000011c5: JUMP
000011c6: JUMPDEST
000011c7: JUMPDEST
000011c8: ADD
000011c9: PUSH1 0x40
000011cb: MLOAD
000011cc: PUSH1 0x20
000011ce: ADD
000011cf: PUSH2 0x11e3
000011d2: SWAP13
000011d3: SWAP12
000011d4: SWAP11
000011d5: SWAP10
000011d6: SWAP9
000011d7: SWAP8
000011d8: SWAP7
000011d9: SWAP6
000011da: SWAP5
000011db: SWAP4
000011dc: SWAP3
000011dd: SWAP2
000011de: SWAP1
000011df: PUSH2 0x3200
000011e2: JUMP
000011e3: JUMPDEST
000011e4: PUSH1 0x40
000011e6: MLOAD
000011e7: PUSH1 0x20
000011e9: DUP2
000011ea: DUP4
000011eb: SUB
000011ec: SUB
000011ed: DUP2
000011ee: MSTORE
000011ef: SWAP1
000011f0: PUSH1 0x40
000011f2: MSTORE
000011f3: SWAP1
000011f4: POP
000011f5: DUP1
000011f6: SWAP2
000011f7: POP
000011f8: POP
000011f9: JUMPDEST
000011fa: SWAP2
000011fb: SWAP1
000011fc: POP
000011fd: JUMP
000011fe: JUMPDEST
000011ff: PUSH1 0x00
00001201: PUSH1 0x05
00001203: PUSH1 0x00
00001205: DUP5
00001206: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000121b: AND
0000121c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001231: AND
00001232: DUP2
00001233: MSTORE
00001234: PUSH1 0x20
00001236: ADD
00001237: SWAP1
00001238: DUP2
00001239: MSTORE
0000123a: PUSH1 0x20
0000123c: ADD
0000123d: PUSH1 0x00
0000123f: KECCAK256
00001240: PUSH1 0x00
00001242: DUP4
00001243: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001258: AND
00001259: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000126e: AND
0000126f: DUP2
00001270: MSTORE
00001271: PUSH1 0x20
00001273: ADD
00001274: SWAP1
00001275: DUP2
00001276: MSTORE
00001277: PUSH1 0x20
00001279: ADD
0000127a: PUSH1 0x00
0000127c: KECCAK256
0000127d: PUSH1 0x00
0000127f: SWAP1
00001280: SLOAD
00001281: SWAP1
00001282: PUSH2 0x0100
00001285: EXP
00001286: SWAP1
00001287: DIV
00001288: PUSH1 0xff
0000128a: AND
0000128b: SWAP1
0000128c: POP
0000128d: SWAP3
0000128e: SWAP2
0000128f: POP
00001290: POP
00001291: JUMP
00001292: JUMPDEST
00001293: PUSH1 0x00
00001295: DUP1
00001296: DUP3
00001297: EXTCODESIZE
00001298: SWAP1
00001299: POP
0000129a: PUSH1 0x00
0000129c: DUP2
0000129d: GT
0000129e: SWAP2
0000129f: POP
000012a0: POP
000012a1: SWAP2
000012a2: SWAP1
000012a3: POP
000012a4: JUMP
000012a5: JUMPDEST
000012a6: PUSH2 0x12b0
000012a9: DUP4
000012aa: DUP4
000012ab: DUP4
000012ac: PUSH2 0x13b9
000012af: JUMP
000012b0: JUMPDEST
000012b1: PUSH1 0x00
000012b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012c8: AND
000012c9: DUP4
000012ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012df: AND
000012e0: EQ
000012e1: ISZERO
000012e2: PUSH2 0x12f3
000012e5: JUMPI
000012e6: PUSH2 0x12ee
000012e9: DUP2
000012ea: PUSH2 0x1a7a
000012ed: JUMP
000012ee: JUMPDEST
000012ef: PUSH2 0x1332
000012f2: JUMP
000012f3: JUMPDEST
000012f4: DUP2
000012f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000130a: AND
0000130b: DUP4
0000130c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001321: AND
00001322: EQ
00001323: PUSH2 0x1331
00001326: JUMPI
00001327: PUSH2 0x1330
0000132a: DUP4
0000132b: DUP3
0000132c: PUSH2 0x1ac3
0000132f: JUMP
00001330: JUMPDEST
00001331: JUMPDEST
00001332: JUMPDEST
00001333: PUSH1 0x00
00001335: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000134a: AND
0000134b: DUP3
0000134c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001361: AND
00001362: EQ
00001363: ISZERO
00001364: PUSH2 0x1375
00001367: JUMPI
00001368: PUSH2 0x1370
0000136b: DUP2
0000136c: PUSH2 0x1c30
0000136f: JUMP
00001370: JUMPDEST
00001371: PUSH2 0x13b4
00001374: JUMP
00001375: JUMPDEST
00001376: DUP3
00001377: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000138c: AND
0000138d: DUP3
0000138e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013a3: AND
000013a4: EQ
000013a5: PUSH2 0x13b3
000013a8: JUMPI
000013a9: PUSH2 0x13b2
000013ac: DUP3
000013ad: DUP3
000013ae: PUSH2 0x1d01
000013b1: JUMP
000013b2: JUMPDEST
000013b3: JUMPDEST
000013b4: JUMPDEST
000013b5: POP
000013b6: POP
000013b7: POP
000013b8: JUMP
000013b9: JUMPDEST
000013ba: POP
000013bb: POP
000013bc: POP
000013bd: JUMP
000013be: JUMPDEST
000013bf: PUSH1 0x00
000013c1: PUSH32 0x780e9d6300000000000000000000000000000000000000000000000000000000
000013e2: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000013ff: NOT
00001400: AND
00001401: DUP3
00001402: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000141f: NOT
00001420: AND
00001421: EQ
00001422: DUP1
00001423: PUSH2 0x1431
00001426: JUMPI
00001427: POP
00001428: PUSH2 0x1430
0000142b: DUP3
0000142c: PUSH2 0x1d80
0000142f: JUMP
00001430: JUMPDEST
00001431: JUMPDEST
00001432: SWAP1
00001433: POP
00001434: SWAP2
00001435: SWAP1
00001436: POP
00001437: JUMP
00001438: JUMPDEST
00001439: PUSH1 0x00
0000143b: DUP1
0000143c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001451: AND
00001452: PUSH1 0x02
00001454: PUSH1 0x00
00001456: DUP5
00001457: DUP2
00001458: MSTORE
00001459: PUSH1 0x20
0000145b: ADD
0000145c: SWAP1
0000145d: DUP2
0000145e: MSTORE
0000145f: PUSH1 0x20
00001461: ADD
00001462: PUSH1 0x00
00001464: KECCAK256
00001465: PUSH1 0x00
00001467: SWAP1
00001468: SLOAD
00001469: SWAP1
0000146a: PUSH2 0x0100
0000146d: EXP
0000146e: SWAP1
0000146f: DIV
00001470: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001485: AND
00001486: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000149b: AND
0000149c: EQ
0000149d: ISZERO
0000149e: SWAP1
0000149f: POP
000014a0: SWAP2
000014a1: SWAP1
000014a2: POP
000014a3: JUMP
000014a4: JUMPDEST
000014a5: PUSH1 0x00
000014a7: CALLER
000014a8: SWAP1
000014a9: POP
000014aa: SWAP1
000014ab: JUMP
000014ac: JUMPDEST
000014ad: DUP2
000014ae: PUSH1 0x04
000014b0: PUSH1 0x00
000014b2: DUP4
000014b3: DUP2
000014b4: MSTORE
000014b5: PUSH1 0x20
000014b7: ADD
000014b8: SWAP1
000014b9: DUP2
000014ba: MSTORE
000014bb: PUSH1 0x20
000014bd: ADD
000014be: PUSH1 0x00
000014c0: KECCAK256
000014c1: PUSH1 0x00
000014c3: PUSH2 0x0100
000014c6: EXP
000014c7: DUP2
000014c8: SLOAD
000014c9: DUP2
000014ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014df: MUL
000014e0: NOT
000014e1: AND
000014e2: SWAP1
000014e3: DUP4
000014e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014f9: AND
000014fa: MUL
000014fb: OR
000014fc: SWAP1
000014fd: SSTORE
000014fe: POP
000014ff: DUP1
00001500: DUP3
00001501: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001516: AND
00001517: PUSH2 0x151f
0000151a: DUP4
0000151b: PUSH2 0x09fb
0000151e: JUMP
0000151f: JUMPDEST
00001520: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001535: AND
00001536: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
00001557: PUSH1 0x40
00001559: MLOAD
0000155a: PUSH1 0x40
0000155c: MLOAD
0000155d: DUP1
0000155e: SWAP2
0000155f: SUB
00001560: SWAP1
00001561: LOG4
00001562: POP
00001563: POP
00001564: JUMP
00001565: JUMPDEST
00001566: PUSH1 0x00
00001568: PUSH2 0x1570
0000156b: DUP3
0000156c: PUSH2 0x1438
0000156f: JUMP
00001570: JUMPDEST
00001571: PUSH2 0x15af
00001574: JUMPI
00001575: PUSH1 0x40
00001577: MLOAD
00001578: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001599: DUP2
0000159a: MSTORE
0000159b: PUSH1 0x04
0000159d: ADD
0000159e: PUSH2 0x15a6
000015a1: SWAP1
000015a2: PUSH2 0x3318
000015a5: JUMP
000015a6: JUMPDEST
000015a7: PUSH1 0x40
000015a9: MLOAD
000015aa: DUP1
000015ab: SWAP2
000015ac: SUB
000015ad: SWAP1
000015ae: REVERT
000015af: JUMPDEST
000015b0: PUSH1 0x00
000015b2: PUSH2 0x15ba
000015b5: DUP4
000015b6: PUSH2 0x09fb
000015b9: JUMP
000015ba: JUMPDEST
000015bb: SWAP1
000015bc: POP
000015bd: DUP1
000015be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015d3: AND
000015d4: DUP5
000015d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015ea: AND
000015eb: EQ
000015ec: DUP1
000015ed: PUSH2 0x1629
000015f0: JUMPI
000015f1: POP
000015f2: DUP4
000015f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001608: AND
00001609: PUSH2 0x1611
0000160c: DUP5
0000160d: PUSH2 0x054e
00001610: JUMP
00001611: JUMPDEST
00001612: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001627: AND
00001628: EQ
00001629: JUMPDEST
0000162a: DUP1
0000162b: PUSH2 0x163a
0000162e: JUMPI
0000162f: POP
00001630: PUSH2 0x1639
00001633: DUP2
00001634: DUP6
00001635: PUSH2 0x11fe
00001638: JUMP
00001639: JUMPDEST
0000163a: JUMPDEST
0000163b: SWAP2
0000163c: POP
0000163d: POP
0000163e: SWAP3
0000163f: SWAP2
00001640: POP
00001641: POP
00001642: JUMP
00001643: JUMPDEST
00001644: DUP3
00001645: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000165a: AND
0000165b: PUSH2 0x1663
0000165e: DUP3
0000165f: PUSH2 0x09fb
00001662: JUMP
00001663: JUMPDEST
00001664: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001679: AND
0000167a: EQ
0000167b: PUSH2 0x16b9
0000167e: JUMPI
0000167f: PUSH1 0x40
00001681: MLOAD
00001682: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000016a3: DUP2
000016a4: MSTORE
000016a5: PUSH1 0x04
000016a7: ADD
000016a8: PUSH2 0x16b0
000016ab: SWAP1
000016ac: PUSH2 0x33aa
000016af: JUMP
000016b0: JUMPDEST
000016b1: PUSH1 0x40
000016b3: MLOAD
000016b4: DUP1
000016b5: SWAP2
000016b6: SUB
000016b7: SWAP1
000016b8: REVERT
000016b9: JUMPDEST
000016ba: PUSH1 0x00
000016bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016d1: AND
000016d2: DUP3
000016d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016e8: AND
000016e9: EQ
000016ea: ISZERO
000016eb: PUSH2 0x1729
000016ee: JUMPI
000016ef: PUSH1 0x40
000016f1: MLOAD
000016f2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001713: DUP2
00001714: MSTORE
00001715: PUSH1 0x04
00001717: ADD
00001718: PUSH2 0x1720
0000171b: SWAP1
0000171c: PUSH2 0x343c
0000171f: JUMP
00001720: JUMPDEST
00001721: PUSH1 0x40
00001723: MLOAD
00001724: DUP1
00001725: SWAP2
00001726: SUB
00001727: SWAP1
00001728: REVERT
00001729: JUMPDEST
0000172a: PUSH2 0x1734
0000172d: DUP4
0000172e: DUP4
0000172f: DUP4
00001730: PUSH2 0x1e62
00001733: JUMP
00001734: JUMPDEST
00001735: PUSH2 0x173f
00001738: PUSH1 0x00
0000173a: DUP3
0000173b: PUSH2 0x14ac
0000173e: JUMP
0000173f: JUMPDEST
00001740: PUSH1 0x01
00001742: PUSH1 0x03
00001744: PUSH1 0x00
00001746: DUP6
00001747: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000175c: AND
0000175d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001772: AND
00001773: DUP2
00001774: MSTORE
00001775: PUSH1 0x20
00001777: ADD
00001778: SWAP1
00001779: DUP2
0000177a: MSTORE
0000177b: PUSH1 0x20
0000177d: ADD
0000177e: PUSH1 0x00
00001780: KECCAK256
00001781: PUSH1 0x00
00001783: DUP3
00001784: DUP3
00001785: SLOAD
00001786: PUSH2 0x178f
00001789: SWAP2
0000178a: SWAP1
0000178b: PUSH2 0x3152
0000178e: JUMP
0000178f: JUMPDEST
00001790: SWAP3
00001791: POP
00001792: POP
00001793: DUP2
00001794: SWAP1
00001795: SSTORE
00001796: POP
00001797: PUSH1 0x01
00001799: PUSH1 0x03
0000179b: PUSH1 0x00
0000179d: DUP5
0000179e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017b3: AND
000017b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017c9: AND
000017ca: DUP2
000017cb: MSTORE
000017cc: PUSH1 0x20
000017ce: ADD
000017cf: SWAP1
000017d0: DUP2
000017d1: MSTORE
000017d2: PUSH1 0x20
000017d4: ADD
000017d5: PUSH1 0x00
000017d7: KECCAK256
000017d8: PUSH1 0x00
000017da: DUP3
000017db: DUP3
000017dc: SLOAD
000017dd: PUSH2 0x17e6
000017e0: SWAP2
000017e1: SWAP1
000017e2: PUSH2 0x2dba
000017e5: JUMP
000017e6: JUMPDEST
000017e7: SWAP3
000017e8: POP
000017e9: POP
000017ea: DUP2
000017eb: SWAP1
000017ec: SSTORE
000017ed: POP
000017ee: DUP2
000017ef: PUSH1 0x02
000017f1: PUSH1 0x00
000017f3: DUP4
000017f4: DUP2
000017f5: MSTORE
000017f6: PUSH1 0x20
000017f8: ADD
000017f9: SWAP1
000017fa: DUP2
000017fb: MSTORE
000017fc: PUSH1 0x20
000017fe: ADD
000017ff: PUSH1 0x00
00001801: KECCAK256
00001802: PUSH1 0x00
00001804: PUSH2 0x0100
00001807: EXP
00001808: DUP2
00001809: SLOAD
0000180a: DUP2
0000180b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001820: MUL
00001821: NOT
00001822: AND
00001823: SWAP1
00001824: DUP4
00001825: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000183a: AND
0000183b: MUL
0000183c: OR
0000183d: SWAP1
0000183e: SSTORE
0000183f: POP
00001840: DUP1
00001841: DUP3
00001842: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001857: AND
00001858: DUP5
00001859: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000186e: AND
0000186f: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00001890: PUSH1 0x40
00001892: MLOAD
00001893: PUSH1 0x40
00001895: MLOAD
00001896: DUP1
00001897: SWAP2
00001898: SUB
00001899: SWAP1
0000189a: LOG4
0000189b: POP
0000189c: POP
0000189d: POP
0000189e: JUMP
0000189f: JUMPDEST
000018a0: PUSH1 0x60
000018a2: PUSH1 0x00
000018a4: DUP3
000018a5: EQ
000018a6: ISZERO
000018a7: PUSH2 0x18e7
000018aa: JUMPI
000018ab: PUSH1 0x40
000018ad: MLOAD
000018ae: DUP1
000018af: PUSH1 0x40
000018b1: ADD
000018b2: PUSH1 0x40
000018b4: MSTORE
000018b5: DUP1
000018b6: PUSH1 0x01
000018b8: DUP2
000018b9: MSTORE
000018ba: PUSH1 0x20
000018bc: ADD
000018bd: PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000
000018de: DUP2
000018df: MSTORE
000018e0: POP
000018e1: SWAP1
000018e2: POP
000018e3: PUSH2 0x19fb
000018e6: JUMP
000018e7: JUMPDEST
000018e8: PUSH1 0x00
000018ea: DUP3
000018eb: SWAP1
000018ec: POP
000018ed: PUSH1 0x00
000018ef: JUMPDEST
000018f0: PUSH1 0x00
000018f2: DUP3
000018f3: EQ
000018f4: PUSH2 0x1919
000018f7: JUMPI
000018f8: DUP1
000018f9: DUP1
000018fa: PUSH2 0x1902
000018fd: SWAP1
000018fe: PUSH2 0x3186
00001901: JUMP
00001902: JUMPDEST
00001903: SWAP2
00001904: POP
00001905: POP
00001906: PUSH1 0x0a
00001908: DUP3
00001909: PUSH2 0x1912
0000190c: SWAP2
0000190d: SWAP1
0000190e: PUSH2 0x2d89
00001911: JUMP
00001912: JUMPDEST
00001913: SWAP2
00001914: POP
00001915: PUSH2 0x18ef
00001918: JUMP
00001919: JUMPDEST
0000191a: PUSH1 0x00
0000191c: DUP2
0000191d: PUSH8 0xffffffffffffffff
00001926: DUP2
00001927: GT
00001928: ISZERO
00001929: PUSH2 0x1935
0000192c: JUMPI
0000192d: PUSH2 0x1934
00001930: PUSH2 0x266c
00001933: JUMP
00001934: JUMPDEST
00001935: JUMPDEST
00001936: PUSH1 0x40
00001938: MLOAD
00001939: SWAP1
0000193a: DUP1
0000193b: DUP3
0000193c: MSTORE
0000193d: DUP1
0000193e: PUSH1 0x1f
00001940: ADD
00001941: PUSH1 0x1f
00001943: NOT
00001944: AND
00001945: PUSH1 0x20
00001947: ADD
00001948: DUP3
00001949: ADD
0000194a: PUSH1 0x40
0000194c: MSTORE
0000194d: DUP1
0000194e: ISZERO
0000194f: PUSH2 0x1967
00001952: JUMPI
00001953: DUP2
00001954: PUSH1 0x20
00001956: ADD
00001957: PUSH1 0x01
00001959: DUP3
0000195a: MUL
0000195b: DUP1
0000195c: CALLDATASIZE
0000195d: DUP4
0000195e: CALLDATACOPY
0000195f: DUP1
00001960: DUP3
00001961: ADD
00001962: SWAP2
00001963: POP
00001964: POP
00001965: SWAP1
00001966: POP
00001967: JUMPDEST
00001968: POP
00001969: SWAP1
0000196a: POP
0000196b: JUMPDEST
0000196c: PUSH1 0x00
0000196e: DUP6
0000196f: EQ
00001970: PUSH2 0x19f4
00001973: JUMPI
00001974: PUSH1 0x01
00001976: DUP3
00001977: PUSH2 0x1980
0000197a: SWAP2
0000197b: SWAP1
0000197c: PUSH2 0x3152
0000197f: JUMP
00001980: JUMPDEST
00001981: SWAP2
00001982: POP
00001983: PUSH1 0x0a
00001985: DUP6
00001986: PUSH2 0x198f
00001989: SWAP2
0000198a: SWAP1
0000198b: PUSH2 0x345c
0000198e: JUMP
0000198f: JUMPDEST
00001990: PUSH1 0x30
00001992: PUSH2 0x199b
00001995: SWAP2
00001996: SWAP1
00001997: PUSH2 0x2dba
0000199a: JUMP
0000199b: JUMPDEST
0000199c: PUSH1 0xf8
0000199e: SHL
0000199f: DUP2
000019a0: DUP4
000019a1: DUP2
000019a2: MLOAD
000019a3: DUP2
000019a4: LT
000019a5: PUSH2 0x19b1
000019a8: JUMPI
000019a9: PUSH2 0x19b0
000019ac: PUSH2 0x2f93
000019af: JUMP
000019b0: JUMPDEST
000019b1: JUMPDEST
000019b2: PUSH1 0x20
000019b4: ADD
000019b5: ADD
000019b6: SWAP1
000019b7: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000019d7: NOT
000019d8: AND
000019d9: SWAP1
000019da: DUP2
000019db: PUSH1 0x00
000019dd: BYTE
000019de: SWAP1
000019df: MSTORE8
000019e0: POP
000019e1: PUSH1 0x0a
000019e3: DUP6
000019e4: PUSH2 0x19ed
000019e7: SWAP2
000019e8: SWAP1
000019e9: PUSH2 0x2d89
000019ec: JUMP
000019ed: JUMPDEST
000019ee: SWAP5
000019ef: POP
000019f0: PUSH2 0x196b
000019f3: JUMP
000019f4: JUMPDEST
000019f5: DUP1
000019f6: SWAP4
000019f7: POP
000019f8: POP
000019f9: POP
000019fa: POP
000019fb: JUMPDEST
000019fc: SWAP2
000019fd: SWAP1
000019fe: POP
000019ff: JUMP
00001a00: JUMPDEST
00001a01: PUSH2 0x1a1a
00001a04: DUP3
00001a05: DUP3
00001a06: PUSH1 0x40
00001a08: MLOAD
00001a09: DUP1
00001a0a: PUSH1 0x20
00001a0c: ADD
00001a0d: PUSH1 0x40
00001a0f: MSTORE
00001a10: DUP1
00001a11: PUSH1 0x00
00001a13: DUP2
00001a14: MSTORE
00001a15: POP
00001a16: PUSH2 0x1e72
00001a19: JUMP
00001a1a: JUMPDEST
00001a1b: POP
00001a1c: POP
00001a1d: JUMP
00001a1e: JUMPDEST
00001a1f: PUSH2 0x1a29
00001a22: DUP5
00001a23: DUP5
00001a24: DUP5
00001a25: PUSH2 0x1643
00001a28: JUMP
00001a29: JUMPDEST
00001a2a: PUSH2 0x1a35
00001a2d: DUP5
00001a2e: DUP5
00001a2f: DUP5
00001a30: DUP5
00001a31: PUSH2 0x1ecd
00001a34: JUMP
00001a35: JUMPDEST
00001a36: PUSH2 0x1a74
00001a39: JUMPI
00001a3a: PUSH1 0x40
00001a3c: MLOAD
00001a3d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001a5e: DUP2
00001a5f: MSTORE
00001a60: PUSH1 0x04
00001a62: ADD
00001a63: PUSH2 0x1a6b
00001a66: SWAP1
00001a67: PUSH2 0x34ff
00001a6a: JUMP
00001a6b: JUMPDEST
00001a6c: PUSH1 0x40
00001a6e: MLOAD
00001a6f: DUP1
00001a70: SWAP2
00001a71: SUB
00001a72: SWAP1
00001a73: REVERT
00001a74: JUMPDEST
00001a75: POP
00001a76: POP
00001a77: POP
00001a78: POP
00001a79: JUMP
00001a7a: JUMPDEST
00001a7b: PUSH1 0x09
00001a7d: DUP1
00001a7e: SLOAD
00001a7f: SWAP1
00001a80: POP
00001a81: PUSH1 0x0a
00001a83: PUSH1 0x00
00001a85: DUP4
00001a86: DUP2
00001a87: MSTORE
00001a88: PUSH1 0x20
00001a8a: ADD
00001a8b: SWAP1
00001a8c: DUP2
00001a8d: MSTORE
00001a8e: PUSH1 0x20
00001a90: ADD
00001a91: PUSH1 0x00
00001a93: KECCAK256
00001a94: DUP2
00001a95: SWAP1
00001a96: SSTORE
00001a97: POP
00001a98: PUSH1 0x09
00001a9a: DUP2
00001a9b: SWAP1
00001a9c: DUP1
00001a9d: PUSH1 0x01
00001a9f: DUP2
00001aa0: SLOAD
00001aa1: ADD
00001aa2: DUP1
00001aa3: DUP3
00001aa4: SSTORE
00001aa5: DUP1
00001aa6: SWAP2
00001aa7: POP
00001aa8: POP
00001aa9: PUSH1 0x01
00001aab: SWAP1
00001aac: SUB
00001aad: SWAP1
00001aae: PUSH1 0x00
00001ab0: MSTORE
00001ab1: PUSH1 0x20
00001ab3: PUSH1 0x00
00001ab5: KECCAK256
00001ab6: ADD
00001ab7: PUSH1 0x00
00001ab9: SWAP1
00001aba: SWAP2
00001abb: SWAP1
00001abc: SWAP2
00001abd: SWAP1
00001abe: SWAP2
00001abf: POP
00001ac0: SSTORE
00001ac1: POP
00001ac2: JUMP
00001ac3: JUMPDEST
00001ac4: PUSH1 0x00
00001ac6: PUSH1 0x01
00001ac8: PUSH2 0x1ad0
00001acb: DUP5
00001acc: PUSH2 0x0b26
00001acf: JUMP
00001ad0: JUMPDEST
00001ad1: PUSH2 0x1ada
00001ad4: SWAP2
00001ad5: SWAP1
00001ad6: PUSH2 0x3152
00001ad9: JUMP
00001ada: JUMPDEST
00001adb: SWAP1
00001adc: POP
00001add: PUSH1 0x00
00001adf: PUSH1 0x08
00001ae1: PUSH1 0x00
00001ae3: DUP5
00001ae4: DUP2
00001ae5: MSTORE
00001ae6: PUSH1 0x20
00001ae8: ADD
00001ae9: SWAP1
00001aea: DUP2
00001aeb: MSTORE
00001aec: PUSH1 0x20
00001aee: ADD
00001aef: PUSH1 0x00
00001af1: KECCAK256
00001af2: SLOAD
00001af3: SWAP1
00001af4: POP
00001af5: DUP2
00001af6: DUP2
00001af7: EQ
00001af8: PUSH2 0x1bbf
00001afb: JUMPI
00001afc: PUSH1 0x00
00001afe: PUSH1 0x07
00001b00: PUSH1 0x00
00001b02: DUP7
00001b03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b18: AND
00001b19: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b2e: AND
00001b2f: DUP2
00001b30: MSTORE
00001b31: PUSH1 0x20
00001b33: ADD
00001b34: SWAP1
00001b35: DUP2
00001b36: MSTORE
00001b37: PUSH1 0x20
00001b39: ADD
00001b3a: PUSH1 0x00
00001b3c: KECCAK256
00001b3d: PUSH1 0x00
00001b3f: DUP5
00001b40: DUP2
00001b41: MSTORE
00001b42: PUSH1 0x20
00001b44: ADD
00001b45: SWAP1
00001b46: DUP2
00001b47: MSTORE
00001b48: PUSH1 0x20
00001b4a: ADD
00001b4b: PUSH1 0x00
00001b4d: KECCAK256
00001b4e: SLOAD
00001b4f: SWAP1
00001b50: POP
00001b51: DUP1
00001b52: PUSH1 0x07
00001b54: PUSH1 0x00
00001b56: DUP8
00001b57: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b6c: AND
00001b6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b82: AND
00001b83: DUP2
00001b84: MSTORE
00001b85: PUSH1 0x20
00001b87: ADD
00001b88: SWAP1
00001b89: DUP2
00001b8a: MSTORE
00001b8b: PUSH1 0x20
00001b8d: ADD
00001b8e: PUSH1 0x00
00001b90: KECCAK256
00001b91: PUSH1 0x00
00001b93: DUP5
00001b94: DUP2
00001b95: MSTORE
00001b96: PUSH1 0x20
00001b98: ADD
00001b99: SWAP1
00001b9a: DUP2
00001b9b: MSTORE
00001b9c: PUSH1 0x20
00001b9e: ADD
00001b9f: PUSH1 0x00
00001ba1: KECCAK256
00001ba2: DUP2
00001ba3: SWAP1
00001ba4: SSTORE
00001ba5: POP
00001ba6: DUP2
00001ba7: PUSH1 0x08
00001ba9: PUSH1 0x00
00001bab: DUP4
00001bac: DUP2
00001bad: MSTORE
00001bae: PUSH1 0x20
00001bb0: ADD
00001bb1: SWAP1
00001bb2: DUP2
00001bb3: MSTORE
00001bb4: PUSH1 0x20
00001bb6: ADD
00001bb7: PUSH1 0x00
00001bb9: KECCAK256
00001bba: DUP2
00001bbb: SWAP1
00001bbc: SSTORE
00001bbd: POP
00001bbe: POP
00001bbf: JUMPDEST
00001bc0: PUSH1 0x08
00001bc2: PUSH1 0x00
00001bc4: DUP5
00001bc5: DUP2
00001bc6: MSTORE
00001bc7: PUSH1 0x20
00001bc9: ADD
00001bca: SWAP1
00001bcb: DUP2
00001bcc: MSTORE
00001bcd: PUSH1 0x20
00001bcf: ADD
00001bd0: PUSH1 0x00
00001bd2: KECCAK256
00001bd3: PUSH1 0x00
00001bd5: SWAP1
00001bd6: SSTORE
00001bd7: PUSH1 0x07
00001bd9: PUSH1 0x00
00001bdb: DUP6
00001bdc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bf1: AND
00001bf2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c07: AND
00001c08: DUP2
00001c09: MSTORE
00001c0a: PUSH1 0x20
00001c0c: ADD
00001c0d: SWAP1
00001c0e: DUP2
00001c0f: MSTORE
00001c10: PUSH1 0x20
00001c12: ADD
00001c13: PUSH1 0x00
00001c15: KECCAK256
00001c16: PUSH1 0x00
00001c18: DUP4
00001c19: DUP2
00001c1a: MSTORE
00001c1b: PUSH1 0x20
00001c1d: ADD
00001c1e: SWAP1
00001c1f: DUP2
00001c20: MSTORE
00001c21: PUSH1 0x20
00001c23: ADD
00001c24: PUSH1 0x00
00001c26: KECCAK256
00001c27: PUSH1 0x00
00001c29: SWAP1
00001c2a: SSTORE
00001c2b: POP
00001c2c: POP
00001c2d: POP
00001c2e: POP
00001c2f: JUMP
00001c30: JUMPDEST
00001c31: PUSH1 0x00
00001c33: PUSH1 0x01
00001c35: PUSH1 0x09
00001c37: DUP1
00001c38: SLOAD
00001c39: SWAP1
00001c3a: POP
00001c3b: PUSH2 0x1c44
00001c3e: SWAP2
00001c3f: SWAP1
00001c40: PUSH2 0x3152
00001c43: JUMP
00001c44: JUMPDEST
00001c45: SWAP1
00001c46: POP
00001c47: PUSH1 0x00
00001c49: PUSH1 0x0a
00001c4b: PUSH1 0x00
00001c4d: DUP5
00001c4e: DUP2
00001c4f: MSTORE
00001c50: PUSH1 0x20
00001c52: ADD
00001c53: SWAP1
00001c54: DUP2
00001c55: MSTORE
00001c56: PUSH1 0x20
00001c58: ADD
00001c59: PUSH1 0x00
00001c5b: KECCAK256
00001c5c: SLOAD
00001c5d: SWAP1
00001c5e: POP
00001c5f: PUSH1 0x00
00001c61: PUSH1 0x09
00001c63: DUP4
00001c64: DUP2
00001c65: SLOAD
00001c66: DUP2
00001c67: LT
00001c68: PUSH2 0x1c74
00001c6b: JUMPI
00001c6c: PUSH2 0x1c73
00001c6f: PUSH2 0x2f93
00001c72: JUMP
00001c73: JUMPDEST
00001c74: JUMPDEST
00001c75: SWAP1
00001c76: PUSH1 0x00
00001c78: MSTORE
00001c79: PUSH1 0x20
00001c7b: PUSH1 0x00
00001c7d: KECCAK256
00001c7e: ADD
00001c7f: SLOAD
00001c80: SWAP1
00001c81: POP
00001c82: DUP1
00001c83: PUSH1 0x09
00001c85: DUP4
00001c86: DUP2
00001c87: SLOAD
00001c88: DUP2
00001c89: LT
00001c8a: PUSH2 0x1c96
00001c8d: JUMPI
00001c8e: PUSH2 0x1c95
00001c91: PUSH2 0x2f93
00001c94: JUMP
00001c95: JUMPDEST
00001c96: JUMPDEST
00001c97: SWAP1
00001c98: PUSH1 0x00
00001c9a: MSTORE
00001c9b: PUSH1 0x20
00001c9d: PUSH1 0x00
00001c9f: KECCAK256
00001ca0: ADD
00001ca1: DUP2
00001ca2: SWAP1
00001ca3: SSTORE
00001ca4: POP
00001ca5: DUP2
00001ca6: PUSH1 0x0a
00001ca8: PUSH1 0x00
00001caa: DUP4
00001cab: DUP2
00001cac: MSTORE
00001cad: PUSH1 0x20
00001caf: ADD
00001cb0: SWAP1
00001cb1: DUP2
00001cb2: MSTORE
00001cb3: PUSH1 0x20
00001cb5: ADD
00001cb6: PUSH1 0x00
00001cb8: KECCAK256
00001cb9: DUP2
00001cba: SWAP1
00001cbb: SSTORE
00001cbc: POP
00001cbd: PUSH1 0x0a
00001cbf: PUSH1 0x00
00001cc1: DUP6
00001cc2: DUP2
00001cc3: MSTORE
00001cc4: PUSH1 0x20
00001cc6: ADD
00001cc7: SWAP1
00001cc8: DUP2
00001cc9: MSTORE
00001cca: PUSH1 0x20
00001ccc: ADD
00001ccd: PUSH1 0x00
00001ccf: KECCAK256
00001cd0: PUSH1 0x00
00001cd2: SWAP1
00001cd3: SSTORE
00001cd4: PUSH1 0x09
00001cd6: DUP1
00001cd7: SLOAD
00001cd8: DUP1
00001cd9: PUSH2 0x1ce5
00001cdc: JUMPI
00001cdd: PUSH2 0x1ce4
00001ce0: PUSH2 0x351f
00001ce3: JUMP
00001ce4: JUMPDEST
00001ce5: JUMPDEST
00001ce6: PUSH1 0x01
00001ce8: SWAP1
00001ce9: SUB
00001cea: DUP2
00001ceb: DUP2
00001cec: SWAP1
00001ced: PUSH1 0x00
00001cef: MSTORE
00001cf0: PUSH1 0x20
00001cf2: PUSH1 0x00
00001cf4: KECCAK256
00001cf5: ADD
00001cf6: PUSH1 0x00
00001cf8: SWAP1
00001cf9: SSTORE
00001cfa: SWAP1
00001cfb: SSTORE
00001cfc: POP
00001cfd: POP
00001cfe: POP
00001cff: POP
00001d00: JUMP
00001d01: JUMPDEST
00001d02: PUSH1 0x00
00001d04: PUSH2 0x1d0c
00001d07: DUP4
00001d08: PUSH2 0x0b26
00001d0b: JUMP
00001d0c: JUMPDEST
00001d0d: SWAP1
00001d0e: POP
00001d0f: DUP2
00001d10: PUSH1 0x07
00001d12: PUSH1 0x00
00001d14: DUP6
00001d15: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d2a: AND
00001d2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d40: AND
00001d41: DUP2
00001d42: MSTORE
00001d43: PUSH1 0x20
00001d45: ADD
00001d46: SWAP1
00001d47: DUP2
00001d48: MSTORE
00001d49: PUSH1 0x20
00001d4b: ADD
00001d4c: PUSH1 0x00
00001d4e: KECCAK256
00001d4f: PUSH1 0x00
00001d51: DUP4
00001d52: DUP2
00001d53: MSTORE
00001d54: PUSH1 0x20
00001d56: ADD
00001d57: SWAP1
00001d58: DUP2
00001d59: MSTORE
00001d5a: PUSH1 0x20
00001d5c: ADD
00001d5d: PUSH1 0x00
00001d5f: KECCAK256
00001d60: DUP2
00001d61: SWAP1
00001d62: SSTORE
00001d63: POP
00001d64: DUP1
00001d65: PUSH1 0x08
00001d67: PUSH1 0x00
00001d69: DUP5
00001d6a: DUP2
00001d6b: MSTORE
00001d6c: PUSH1 0x20
00001d6e: ADD
00001d6f: SWAP1
00001d70: DUP2
00001d71: MSTORE
00001d72: PUSH1 0x20
00001d74: ADD
00001d75: PUSH1 0x00
00001d77: KECCAK256
00001d78: DUP2
00001d79: SWAP1
00001d7a: SSTORE
00001d7b: POP
00001d7c: POP
00001d7d: POP
00001d7e: POP
00001d7f: JUMP
00001d80: JUMPDEST
00001d81: PUSH1 0x00
00001d83: PUSH32 0x80ac58cd00000000000000000000000000000000000000000000000000000000
00001da4: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001dc1: NOT
00001dc2: AND
00001dc3: DUP3
00001dc4: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001de1: NOT
00001de2: AND
00001de3: EQ
00001de4: DUP1
00001de5: PUSH2 0x1e4b
00001de8: JUMPI
00001de9: POP
00001dea: PUSH32 0x5b5e139f00000000000000000000000000000000000000000000000000000000
00001e0b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001e28: NOT
00001e29: AND
00001e2a: DUP3
00001e2b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001e48: NOT
00001e49: AND
00001e4a: EQ
00001e4b: JUMPDEST
00001e4c: DUP1
00001e4d: PUSH2 0x1e5b
00001e50: JUMPI
00001e51: POP
00001e52: PUSH2 0x1e5a
00001e55: DUP3
00001e56: PUSH2 0x2055
00001e59: JUMP
00001e5a: JUMPDEST
00001e5b: JUMPDEST
00001e5c: SWAP1
00001e5d: POP
00001e5e: SWAP2
00001e5f: SWAP1
00001e60: POP
00001e61: JUMP
00001e62: JUMPDEST
00001e63: PUSH2 0x1e6d
00001e66: DUP4
00001e67: DUP4
00001e68: DUP4
00001e69: PUSH2 0x12a5
00001e6c: JUMP
00001e6d: JUMPDEST
00001e6e: POP
00001e6f: POP
00001e70: POP
00001e71: JUMP
00001e72: JUMPDEST
00001e73: PUSH2 0x1e7c
00001e76: DUP4
00001e77: DUP4
00001e78: PUSH2 0x20bf
00001e7b: JUMP
00001e7c: JUMPDEST
00001e7d: PUSH2 0x1e89
00001e80: PUSH1 0x00
00001e82: DUP5
00001e83: DUP5
00001e84: DUP5
00001e85: PUSH2 0x1ecd
00001e88: JUMP
00001e89: JUMPDEST
00001e8a: PUSH2 0x1ec8
00001e8d: JUMPI
00001e8e: PUSH1 0x40
00001e90: MLOAD
00001e91: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001eb2: DUP2
00001eb3: MSTORE
00001eb4: PUSH1 0x04
00001eb6: ADD
00001eb7: PUSH2 0x1ebf
00001eba: SWAP1
00001ebb: PUSH2 0x34ff
00001ebe: JUMP
00001ebf: JUMPDEST
00001ec0: PUSH1 0x40
00001ec2: MLOAD
00001ec3: DUP1
00001ec4: SWAP2
00001ec5: SUB
00001ec6: SWAP1
00001ec7: REVERT
00001ec8: JUMPDEST
00001ec9: POP
00001eca: POP
00001ecb: POP
00001ecc: JUMP
00001ecd: JUMPDEST
00001ece: PUSH1 0x00
00001ed0: PUSH2 0x1eee
00001ed3: DUP5
00001ed4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ee9: AND
00001eea: PUSH2 0x1292
00001eed: JUMP
00001eee: JUMPDEST
00001eef: ISZERO
00001ef0: PUSH2 0x2048
00001ef3: JUMPI
00001ef4: DUP4
00001ef5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f0a: AND
00001f0b: PUSH4 0x150b7a02
00001f10: PUSH2 0x1f17
00001f13: PUSH2 0x14a4
00001f16: JUMP
00001f17: JUMPDEST
00001f18: DUP8
00001f19: DUP7
00001f1a: DUP7
00001f1b: PUSH1 0x40
00001f1d: MLOAD
00001f1e: DUP6
00001f1f: PUSH4 0xffffffff
00001f24: AND
00001f25: PUSH1 0xe0
00001f27: SHL
00001f28: DUP2
00001f29: MSTORE
00001f2a: PUSH1 0x04
00001f2c: ADD
00001f2d: PUSH2 0x1f39
00001f30: SWAP5
00001f31: SWAP4
00001f32: SWAP3
00001f33: SWAP2
00001f34: SWAP1
00001f35: PUSH2 0x35a3
00001f38: JUMP
00001f39: JUMPDEST
00001f3a: PUSH1 0x20
00001f3c: PUSH1 0x40
00001f3e: MLOAD
00001f3f: DUP1
00001f40: DUP4
00001f41: SUB
00001f42: DUP2
00001f43: PUSH1 0x00
00001f45: DUP8
00001f46: GAS
00001f47: CALL
00001f48: SWAP3
00001f49: POP
00001f4a: POP
00001f4b: POP
00001f4c: DUP1
00001f4d: ISZERO
00001f4e: PUSH2 0x1f75
00001f51: JUMPI
00001f52: POP
00001f53: PUSH1 0x40
00001f55: MLOAD
00001f56: RETURNDATASIZE
00001f57: PUSH1 0x1f
00001f59: NOT
00001f5a: PUSH1 0x1f
00001f5c: DUP3
00001f5d: ADD
00001f5e: AND
00001f5f: DUP3
00001f60: ADD
00001f61: DUP1
00001f62: PUSH1 0x40
00001f64: MSTORE
00001f65: POP
00001f66: DUP2
00001f67: ADD
00001f68: SWAP1
00001f69: PUSH2 0x1f72
00001f6c: SWAP2
00001f6d: SWAP1
00001f6e: PUSH2 0x3604
00001f71: JUMP
00001f72: JUMPDEST
00001f73: PUSH1 0x01
00001f75: JUMPDEST
00001f76: PUSH2 0x1ff8
00001f79: JUMPI
00001f7a: RETURNDATASIZE
00001f7b: DUP1
00001f7c: PUSH1 0x00
00001f7e: DUP2
00001f7f: EQ
00001f80: PUSH2 0x1fa5
00001f83: JUMPI
00001f84: PUSH1 0x40
00001f86: MLOAD
00001f87: SWAP2
00001f88: POP
00001f89: PUSH1 0x1f
00001f8b: NOT
00001f8c: PUSH1 0x3f
00001f8e: RETURNDATASIZE
00001f8f: ADD
00001f90: AND
00001f91: DUP3
00001f92: ADD
00001f93: PUSH1 0x40
00001f95: MSTORE
00001f96: RETURNDATASIZE
00001f97: DUP3
00001f98: MSTORE
00001f99: RETURNDATASIZE
00001f9a: PUSH1 0x00
00001f9c: PUSH1 0x20
00001f9e: DUP5
00001f9f: ADD
00001fa0: RETURNDATACOPY
00001fa1: PUSH2 0x1faa
00001fa4: JUMP
00001fa5: JUMPDEST
00001fa6: PUSH1 0x60
00001fa8: SWAP2
00001fa9: POP
00001faa: JUMPDEST
00001fab: POP
00001fac: PUSH1 0x00
00001fae: DUP2
00001faf: MLOAD
00001fb0: EQ
00001fb1: ISZERO
00001fb2: PUSH2 0x1ff0
00001fb5: JUMPI
00001fb6: PUSH1 0x40
00001fb8: MLOAD
00001fb9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001fda: DUP2
00001fdb: MSTORE
00001fdc: PUSH1 0x04
00001fde: ADD
00001fdf: PUSH2 0x1fe7
00001fe2: SWAP1
00001fe3: PUSH2 0x34ff
00001fe6: JUMP
00001fe7: JUMPDEST
00001fe8: PUSH1 0x40
00001fea: MLOAD
00001feb: DUP1
00001fec: SWAP2
00001fed: SUB
00001fee: SWAP1
00001fef: REVERT
00001ff0: JUMPDEST
00001ff1: DUP1
00001ff2: MLOAD
00001ff3: DUP2
00001ff4: PUSH1 0x20
00001ff6: ADD
00001ff7: REVERT
00001ff8: JUMPDEST
00001ff9: PUSH4 0x150b7a02
00001ffe: PUSH1 0xe0
00002000: SHL
00002001: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000201e: NOT
0000201f: AND
00002020: DUP2
00002021: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000203e: NOT
0000203f: AND
00002040: EQ
00002041: SWAP2
00002042: POP
00002043: POP
00002044: PUSH2 0x204d
00002047: JUMP
00002048: JUMPDEST
00002049: PUSH1 0x01
0000204b: SWAP1
0000204c: POP
0000204d: JUMPDEST
0000204e: SWAP5
0000204f: SWAP4
00002050: POP
00002051: POP
00002052: POP
00002053: POP
00002054: JUMP
00002055: JUMPDEST
00002056: PUSH1 0x00
00002058: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000
00002079: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002096: NOT
00002097: AND
00002098: DUP3
00002099: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000020b6: NOT
000020b7: AND
000020b8: EQ
000020b9: SWAP1
000020ba: POP
000020bb: SWAP2
000020bc: SWAP1
000020bd: POP
000020be: JUMP
000020bf: JUMPDEST
000020c0: PUSH1 0x00
000020c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020d7: AND
000020d8: DUP3
000020d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020ee: AND
000020ef: EQ
000020f0: ISZERO
000020f1: PUSH2 0x212f
000020f4: JUMPI
000020f5: PUSH1 0x40
000020f7: MLOAD
000020f8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002119: DUP2
0000211a: MSTORE
0000211b: PUSH1 0x04
0000211d: ADD
0000211e: PUSH2 0x2126
00002121: SWAP1
00002122: PUSH2 0x367d
00002125: JUMP
00002126: JUMPDEST
00002127: PUSH1 0x40
00002129: MLOAD
0000212a: DUP1
0000212b: SWAP2
0000212c: SUB
0000212d: SWAP1
0000212e: REVERT
0000212f: JUMPDEST
00002130: PUSH2 0x2138
00002133: DUP2
00002134: PUSH2 0x1438
00002137: JUMP
00002138: JUMPDEST
00002139: ISZERO
0000213a: PUSH2 0x2178
0000213d: JUMPI
0000213e: PUSH1 0x40
00002140: MLOAD
00002141: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002162: DUP2
00002163: MSTORE
00002164: PUSH1 0x04
00002166: ADD
00002167: PUSH2 0x216f
0000216a: SWAP1
0000216b: PUSH2 0x36e9
0000216e: JUMP
0000216f: JUMPDEST
00002170: PUSH1 0x40
00002172: MLOAD
00002173: DUP1
00002174: SWAP2
00002175: SUB
00002176: SWAP1
00002177: REVERT
00002178: JUMPDEST
00002179: PUSH2 0x2184
0000217c: PUSH1 0x00
0000217e: DUP4
0000217f: DUP4
00002180: PUSH2 0x1e62
00002183: JUMP
00002184: JUMPDEST
00002185: PUSH1 0x01
00002187: PUSH1 0x03
00002189: PUSH1 0x00
0000218b: DUP5
0000218c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021a1: AND
000021a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021b7: AND
000021b8: DUP2
000021b9: MSTORE
000021ba: PUSH1 0x20
000021bc: ADD
000021bd: SWAP1
000021be: DUP2
000021bf: MSTORE
000021c0: PUSH1 0x20
000021c2: ADD
000021c3: PUSH1 0x00
000021c5: KECCAK256
000021c6: PUSH1 0x00
000021c8: DUP3
000021c9: DUP3
000021ca: SLOAD
000021cb: PUSH2 0x21d4
000021ce: SWAP2
000021cf: SWAP1
000021d0: PUSH2 0x2dba
000021d3: JUMP
000021d4: JUMPDEST
000021d5: SWAP3
000021d6: POP
000021d7: POP
000021d8: DUP2
000021d9: SWAP1
000021da: SSTORE
000021db: POP
000021dc: DUP2
000021dd: PUSH1 0x02
000021df: PUSH1 0x00
000021e1: DUP4
000021e2: DUP2
000021e3: MSTORE
000021e4: PUSH1 0x20
000021e6: ADD
000021e7: SWAP1
000021e8: DUP2
000021e9: MSTORE
000021ea: PUSH1 0x20
000021ec: ADD
000021ed: PUSH1 0x00
000021ef: KECCAK256
000021f0: PUSH1 0x00
000021f2: PUSH2 0x0100
000021f5: EXP
000021f6: DUP2
000021f7: SLOAD
000021f8: DUP2
000021f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000220e: MUL
0000220f: NOT
00002210: AND
00002211: SWAP1
00002212: DUP4
00002213: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002228: AND
00002229: MUL
0000222a: OR
0000222b: SWAP1
0000222c: SSTORE
0000222d: POP
0000222e: DUP1
0000222f: DUP3
00002230: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002245: AND
00002246: PUSH1 0x00
00002248: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000225d: AND
0000225e: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0000227f: PUSH1 0x40
00002281: MLOAD
00002282: PUSH1 0x40
00002284: MLOAD
00002285: DUP1
00002286: SWAP2
00002287: SUB
00002288: SWAP1
00002289: LOG4
0000228a: POP
0000228b: POP
0000228c: JUMP
0000228d: JUMPDEST
0000228e: DUP3
0000228f: DUP1
00002290: SLOAD
00002291: PUSH2 0x2299
00002294: SWAP1
00002295: PUSH2 0x2a1f
00002298: JUMP
00002299: JUMPDEST
0000229a: SWAP1
0000229b: PUSH1 0x00
0000229d: MSTORE
0000229e: PUSH1 0x20
000022a0: PUSH1 0x00
000022a2: KECCAK256
000022a3: SWAP1
000022a4: PUSH1 0x1f
000022a6: ADD
000022a7: PUSH1 0x20
000022a9: SWAP1
000022aa: DIV
000022ab: DUP2
000022ac: ADD
000022ad: SWAP3
000022ae: DUP3
000022af: PUSH2 0x22bb
000022b2: JUMPI
000022b3: PUSH1 0x00
000022b5: DUP6
000022b6: SSTORE
000022b7: PUSH2 0x2302
000022ba: JUMP
000022bb: JUMPDEST
000022bc: DUP3
000022bd: PUSH1 0x1f
000022bf: LT
000022c0: PUSH2 0x22d4
000022c3: JUMPI
000022c4: DUP1
000022c5: MLOAD
000022c6: PUSH1 0xff
000022c8: NOT
000022c9: AND
000022ca: DUP4
000022cb: DUP1
000022cc: ADD
000022cd: OR
000022ce: DUP6
000022cf: SSTORE
000022d0: PUSH2 0x2302
000022d3: JUMP
000022d4: JUMPDEST
000022d5: DUP3
000022d6: DUP1
000022d7: ADD
000022d8: PUSH1 0x01
000022da: ADD
000022db: DUP6
000022dc: SSTORE
000022dd: DUP3
000022de: ISZERO
000022df: PUSH2 0x2302
000022e2: JUMPI
000022e3: SWAP2
000022e4: DUP3
000022e5: ADD
000022e6: JUMPDEST
000022e7: DUP3
000022e8: DUP2
000022e9: GT
000022ea: ISZERO
000022eb: PUSH2 0x2301
000022ee: JUMPI
000022ef: DUP3
000022f0: MLOAD
000022f1: DUP3
000022f2: SSTORE
000022f3: SWAP2
000022f4: PUSH1 0x20
000022f6: ADD
000022f7: SWAP2
000022f8: SWAP1
000022f9: PUSH1 0x01
000022fb: ADD
000022fc: SWAP1
000022fd: PUSH2 0x22e6
00002300: JUMP
00002301: JUMPDEST
00002302: JUMPDEST
00002303: POP
00002304: SWAP1
00002305: POP
00002306: PUSH2 0x230f
00002309: SWAP2
0000230a: SWAP1
0000230b: PUSH2 0x2313
0000230e: JUMP
0000230f: JUMPDEST
00002310: POP
00002311: SWAP1
00002312: JUMP
00002313: JUMPDEST
00002314: JUMPDEST
00002315: DUP1
00002316: DUP3
00002317: GT
00002318: ISZERO
00002319: PUSH2 0x232c
0000231c: JUMPI
0000231d: PUSH1 0x00
0000231f: DUP2
00002320: PUSH1 0x00
00002322: SWAP1
00002323: SSTORE
00002324: POP
00002325: PUSH1 0x01
00002327: ADD
00002328: PUSH2 0x2314
0000232b: JUMP
0000232c: JUMPDEST
0000232d: POP
0000232e: SWAP1
0000232f: JUMP
00002330: JUMPDEST
00002331: PUSH1 0x00
00002333: PUSH1 0x40
00002335: MLOAD
00002336: SWAP1
00002337: POP
00002338: SWAP1
00002339: JUMP
0000233a: JUMPDEST
0000233b: PUSH1 0x00
0000233d: DUP1
0000233e: REVERT
0000233f: JUMPDEST
00002340: PUSH1 0x00
00002342: DUP1
00002343: REVERT
00002344: JUMPDEST
00002345: PUSH1 0x00
00002347: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00002368: DUP3
00002369: AND
0000236a: SWAP1
0000236b: POP
0000236c: SWAP2
0000236d: SWAP1
0000236e: POP
0000236f: JUMP
00002370: JUMPDEST
00002371: PUSH2 0x2379
00002374: DUP2
00002375: PUSH2 0x2344
00002378: JUMP
00002379: JUMPDEST
0000237a: DUP2
0000237b: EQ
0000237c: PUSH2 0x2384
0000237f: JUMPI
00002380: PUSH1 0x00
00002382: DUP1
00002383: REVERT
00002384: JUMPDEST
00002385: POP
00002386: JUMP
00002387: JUMPDEST
00002388: PUSH1 0x00
0000238a: DUP2
0000238b: CALLDATALOAD
0000238c: SWAP1
0000238d: POP
0000238e: PUSH2 0x2396
00002391: DUP2
00002392: PUSH2 0x2370
00002395: JUMP
00002396: JUMPDEST
00002397: SWAP3
00002398: SWAP2
00002399: POP
0000239a: POP
0000239b: JUMP
0000239c: JUMPDEST
0000239d: PUSH1 0x00
0000239f: PUSH1 0x20
000023a1: DUP3
000023a2: DUP5
000023a3: SUB
000023a4: SLT
000023a5: ISZERO
000023a6: PUSH2 0x23b2
000023a9: JUMPI
000023aa: PUSH2 0x23b1
000023ad: PUSH2 0x233a
000023b0: JUMP
000023b1: JUMPDEST
000023b2: JUMPDEST
000023b3: PUSH1 0x00
000023b5: PUSH2 0x23c0
000023b8: DUP5
000023b9: DUP3
000023ba: DUP6
000023bb: ADD
000023bc: PUSH2 0x2387
000023bf: JUMP
000023c0: JUMPDEST
000023c1: SWAP2
000023c2: POP
000023c3: POP
000023c4: SWAP3
000023c5: SWAP2
000023c6: POP
000023c7: POP
000023c8: JUMP
000023c9: JUMPDEST
000023ca: PUSH1 0x00
000023cc: DUP2
000023cd: ISZERO
000023ce: ISZERO
000023cf: SWAP1
000023d0: POP
000023d1: SWAP2
000023d2: SWAP1
000023d3: POP
000023d4: JUMP
000023d5: JUMPDEST
000023d6: PUSH2 0x23de
000023d9: DUP2
000023da: PUSH2 0x23c9
000023dd: JUMP
000023de: JUMPDEST
000023df: DUP3
000023e0: MSTORE
000023e1: POP
000023e2: POP
000023e3: JUMP
000023e4: JUMPDEST
000023e5: PUSH1 0x00
000023e7: PUSH1 0x20
000023e9: DUP3
000023ea: ADD
000023eb: SWAP1
000023ec: POP
000023ed: PUSH2 0x23f9
000023f0: PUSH1 0x00
000023f2: DUP4
000023f3: ADD
000023f4: DUP5
000023f5: PUSH2 0x23d5
000023f8: JUMP
000023f9: JUMPDEST
000023fa: SWAP3
000023fb: SWAP2
000023fc: POP
000023fd: POP
000023fe: JUMP
000023ff: JUMPDEST
00002400: PUSH1 0x00
00002402: DUP2
00002403: MLOAD
00002404: SWAP1
00002405: POP
00002406: SWAP2
00002407: SWAP1
00002408: POP
00002409: JUMP
0000240a: JUMPDEST
0000240b: PUSH1 0x00
0000240d: DUP3
0000240e: DUP3
0000240f: MSTORE
00002410: PUSH1 0x20
00002412: DUP3
00002413: ADD
00002414: SWAP1
00002415: POP
00002416: SWAP3
00002417: SWAP2
00002418: POP
00002419: POP
0000241a: JUMP
0000241b: JUMPDEST
0000241c: PUSH1 0x00
0000241e: JUMPDEST
0000241f: DUP4
00002420: DUP2
00002421: LT
00002422: ISZERO
00002423: PUSH2 0x2439
00002426: JUMPI
00002427: DUP1
00002428: DUP3
00002429: ADD
0000242a: MLOAD
0000242b: DUP2
0000242c: DUP5
0000242d: ADD
0000242e: MSTORE
0000242f: PUSH1 0x20
00002431: DUP2
00002432: ADD
00002433: SWAP1
00002434: POP
00002435: PUSH2 0x241e
00002438: JUMP
00002439: JUMPDEST
0000243a: DUP4
0000243b: DUP2
0000243c: GT
0000243d: ISZERO
0000243e: PUSH2 0x2448
00002441: JUMPI
00002442: PUSH1 0x00
00002444: DUP5
00002445: DUP5
00002446: ADD
00002447: MSTORE
00002448: JUMPDEST
00002449: POP
0000244a: POP
0000244b: POP
0000244c: POP
0000244d: JUMP
0000244e: JUMPDEST
0000244f: PUSH1 0x00
00002451: PUSH1 0x1f
00002453: NOT
00002454: PUSH1 0x1f
00002456: DUP4
00002457: ADD
00002458: AND
00002459: SWAP1
0000245a: POP
0000245b: SWAP2
0000245c: SWAP1
0000245d: POP
0000245e: JUMP
0000245f: JUMPDEST
00002460: PUSH1 0x00
00002462: PUSH2 0x246a
00002465: DUP3
00002466: PUSH2 0x23ff
00002469: JUMP
0000246a: JUMPDEST
0000246b: PUSH2 0x2474
0000246e: DUP2
0000246f: DUP6
00002470: PUSH2 0x240a
00002473: JUMP
00002474: JUMPDEST
00002475: SWAP4
00002476: POP
00002477: PUSH2 0x2484
0000247a: DUP2
0000247b: DUP6
0000247c: PUSH1 0x20
0000247e: DUP7
0000247f: ADD
00002480: PUSH2 0x241b
00002483: JUMP
00002484: JUMPDEST
00002485: PUSH2 0x248d
00002488: DUP2
00002489: PUSH2 0x244e
0000248c: JUMP
0000248d: JUMPDEST
0000248e: DUP5
0000248f: ADD
00002490: SWAP2
00002491: POP
00002492: POP
00002493: SWAP3
00002494: SWAP2
00002495: POP
00002496: POP
00002497: JUMP
00002498: JUMPDEST
00002499: PUSH1 0x00
0000249b: PUSH1 0x20
0000249d: DUP3
0000249e: ADD
0000249f: SWAP1
000024a0: POP
000024a1: DUP2
000024a2: DUP2
000024a3: SUB
000024a4: PUSH1 0x00
000024a6: DUP4
000024a7: ADD
000024a8: MSTORE
000024a9: PUSH2 0x24b2
000024ac: DUP2
000024ad: DUP5
000024ae: PUSH2 0x245f
000024b1: JUMP
000024b2: JUMPDEST
000024b3: SWAP1
000024b4: POP
000024b5: SWAP3
000024b6: SWAP2
000024b7: POP
000024b8: POP
000024b9: JUMP
000024ba: JUMPDEST
000024bb: PUSH1 0x00
000024bd: DUP2
000024be: SWAP1
000024bf: POP
000024c0: SWAP2
000024c1: SWAP1
000024c2: POP
000024c3: JUMP
000024c4: JUMPDEST
000024c5: PUSH2 0x24cd
000024c8: DUP2
000024c9: PUSH2 0x24ba
000024cc: JUMP
000024cd: JUMPDEST
000024ce: DUP2
000024cf: EQ
000024d0: PUSH2 0x24d8
000024d3: JUMPI
000024d4: PUSH1 0x00
000024d6: DUP1
000024d7: REVERT
000024d8: JUMPDEST
000024d9: POP
000024da: JUMP
000024db: JUMPDEST
000024dc: PUSH1 0x00
000024de: DUP2
000024df: CALLDATALOAD
000024e0: SWAP1
000024e1: POP
000024e2: PUSH2 0x24ea
000024e5: DUP2
000024e6: PUSH2 0x24c4
000024e9: JUMP
000024ea: JUMPDEST
000024eb: SWAP3
000024ec: SWAP2
000024ed: POP
000024ee: POP
000024ef: JUMP
000024f0: JUMPDEST
000024f1: PUSH1 0x00
000024f3: PUSH1 0x20
000024f5: DUP3
000024f6: DUP5
000024f7: SUB
000024f8: SLT
000024f9: ISZERO
000024fa: PUSH2 0x2506
000024fd: JUMPI
000024fe: PUSH2 0x2505
00002501: PUSH2 0x233a
00002504: JUMP
00002505: JUMPDEST
00002506: JUMPDEST
00002507: PUSH1 0x00
00002509: PUSH2 0x2514
0000250c: DUP5
0000250d: DUP3
0000250e: DUP6
0000250f: ADD
00002510: PUSH2 0x24db
00002513: JUMP
00002514: JUMPDEST
00002515: SWAP2
00002516: POP
00002517: POP
00002518: SWAP3
00002519: SWAP2
0000251a: POP
0000251b: POP
0000251c: JUMP
0000251d: JUMPDEST
0000251e: PUSH1 0x00
00002520: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002535: DUP3
00002536: AND
00002537: SWAP1
00002538: POP
00002539: SWAP2
0000253a: SWAP1
0000253b: POP
0000253c: JUMP
0000253d: JUMPDEST
0000253e: PUSH1 0x00
00002540: PUSH2 0x2548
00002543: DUP3
00002544: PUSH2 0x251d
00002547: JUMP
00002548: JUMPDEST
00002549: SWAP1
0000254a: POP
0000254b: SWAP2
0000254c: SWAP1
0000254d: POP
0000254e: JUMP
0000254f: JUMPDEST
00002550: PUSH2 0x2558
00002553: DUP2
00002554: PUSH2 0x253d
00002557: JUMP
00002558: JUMPDEST
00002559: DUP3
0000255a: MSTORE
0000255b: POP
0000255c: POP
0000255d: JUMP
0000255e: JUMPDEST
0000255f: PUSH1 0x00
00002561: PUSH1 0x20
00002563: DUP3
00002564: ADD
00002565: SWAP1
00002566: POP
00002567: PUSH2 0x2573
0000256a: PUSH1 0x00
0000256c: DUP4
0000256d: ADD
0000256e: DUP5
0000256f: PUSH2 0x254f
00002572: JUMP
00002573: JUMPDEST
00002574: SWAP3
00002575: SWAP2
00002576: POP
00002577: POP
00002578: JUMP
00002579: JUMPDEST
0000257a: PUSH2 0x2582
0000257d: DUP2
0000257e: PUSH2 0x253d
00002581: JUMP
00002582: JUMPDEST
00002583: DUP2
00002584: EQ
00002585: PUSH2 0x258d
00002588: JUMPI
00002589: PUSH1 0x00
0000258b: DUP1
0000258c: REVERT
0000258d: JUMPDEST
0000258e: POP
0000258f: JUMP
00002590: JUMPDEST
00002591: PUSH1 0x00
00002593: DUP2
00002594: CALLDATALOAD
00002595: SWAP1
00002596: POP
00002597: PUSH2 0x259f
0000259a: DUP2
0000259b: PUSH2 0x2579
0000259e: JUMP
0000259f: JUMPDEST
000025a0: SWAP3
000025a1: SWAP2
000025a2: POP
000025a3: POP
000025a4: JUMP
000025a5: JUMPDEST
000025a6: PUSH1 0x00
000025a8: DUP1
000025a9: PUSH1 0x40
000025ab: DUP4
000025ac: DUP6
000025ad: SUB
000025ae: SLT
000025af: ISZERO
000025b0: PUSH2 0x25bc
000025b3: JUMPI
000025b4: PUSH2 0x25bb
000025b7: PUSH2 0x233a
000025ba: JUMP
000025bb: JUMPDEST
000025bc: JUMPDEST
000025bd: PUSH1 0x00
000025bf: PUSH2 0x25ca
000025c2: DUP6
000025c3: DUP3
000025c4: DUP7
000025c5: ADD
000025c6: PUSH2 0x2590
000025c9: JUMP
000025ca: JUMPDEST
000025cb: SWAP3
000025cc: POP
000025cd: POP
000025ce: PUSH1 0x20
000025d0: PUSH2 0x25db
000025d3: DUP6
000025d4: DUP3
000025d5: DUP7
000025d6: ADD
000025d7: PUSH2 0x24db
000025da: JUMP
000025db: JUMPDEST
000025dc: SWAP2
000025dd: POP
000025de: POP
000025df: SWAP3
000025e0: POP
000025e1: SWAP3
000025e2: SWAP1
000025e3: POP
000025e4: JUMP
000025e5: JUMPDEST
000025e6: PUSH2 0x25ee
000025e9: DUP2
000025ea: PUSH2 0x24ba
000025ed: JUMP
000025ee: JUMPDEST
000025ef: DUP3
000025f0: MSTORE
000025f1: POP
000025f2: POP
000025f3: JUMP
000025f4: JUMPDEST
000025f5: PUSH1 0x00
000025f7: PUSH1 0x20
000025f9: DUP3
000025fa: ADD
000025fb: SWAP1
000025fc: POP
000025fd: PUSH2 0x2609
00002600: PUSH1 0x00
00002602: DUP4
00002603: ADD
00002604: DUP5
00002605: PUSH2 0x25e5
00002608: JUMP
00002609: JUMPDEST
0000260a: SWAP3
0000260b: SWAP2
0000260c: POP
0000260d: POP
0000260e: JUMP
0000260f: JUMPDEST
00002610: PUSH1 0x00
00002612: DUP1
00002613: PUSH1 0x00
00002615: PUSH1 0x60
00002617: DUP5
00002618: DUP7
00002619: SUB
0000261a: SLT
0000261b: ISZERO
0000261c: PUSH2 0x2628
0000261f: JUMPI
00002620: PUSH2 0x2627
00002623: PUSH2 0x233a
00002626: JUMP
00002627: JUMPDEST
00002628: JUMPDEST
00002629: PUSH1 0x00
0000262b: PUSH2 0x2636
0000262e: DUP7
0000262f: DUP3
00002630: DUP8
00002631: ADD
00002632: PUSH2 0x2590
00002635: JUMP
00002636: JUMPDEST
00002637: SWAP4
00002638: POP
00002639: POP
0000263a: PUSH1 0x20
0000263c: PUSH2 0x2647
0000263f: DUP7
00002640: DUP3
00002641: DUP8
00002642: ADD
00002643: PUSH2 0x2590
00002646: JUMP
00002647: JUMPDEST
00002648: SWAP3
00002649: POP
0000264a: POP
0000264b: PUSH1 0x40
0000264d: PUSH2 0x2658
00002650: DUP7
00002651: DUP3
00002652: DUP8
00002653: ADD
00002654: PUSH2 0x24db
00002657: JUMP
00002658: JUMPDEST
00002659: SWAP2
0000265a: POP
0000265b: POP
0000265c: SWAP3
0000265d: POP
0000265e: SWAP3
0000265f: POP
00002660: SWAP3
00002661: JUMP
00002662: JUMPDEST
00002663: PUSH1 0x00
00002665: DUP1
00002666: REVERT
00002667: JUMPDEST
00002668: PUSH1 0x00
0000266a: DUP1
0000266b: REVERT
0000266c: JUMPDEST
0000266d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000268e: PUSH1 0x00
00002690: MSTORE
00002691: PUSH1 0x41
00002693: PUSH1 0x04
00002695: MSTORE
00002696: PUSH1 0x24
00002698: PUSH1 0x00
0000269a: REVERT
0000269b: JUMPDEST
0000269c: PUSH2 0x26a4
0000269f: DUP3
000026a0: PUSH2 0x244e
000026a3: JUMP
000026a4: JUMPDEST
000026a5: DUP2
000026a6: ADD
000026a7: DUP2
000026a8: DUP2
000026a9: LT
000026aa: PUSH8 0xffffffffffffffff
000026b3: DUP3
000026b4: GT
000026b5: OR
000026b6: ISZERO
000026b7: PUSH2 0x26c3
000026ba: JUMPI
000026bb: PUSH2 0x26c2
000026be: PUSH2 0x266c
000026c1: JUMP
000026c2: JUMPDEST
000026c3: JUMPDEST
000026c4: DUP1
000026c5: PUSH1 0x40
000026c7: MSTORE
000026c8: POP
000026c9: POP
000026ca: POP
000026cb: JUMP
000026cc: JUMPDEST
000026cd: PUSH1 0x00
000026cf: PUSH2 0x26d6
000026d2: PUSH2 0x2330
000026d5: JUMP
000026d6: JUMPDEST
000026d7: SWAP1
000026d8: POP
000026d9: PUSH2 0x26e2
000026dc: DUP3
000026dd: DUP3
000026de: PUSH2 0x269b
000026e1: JUMP
000026e2: JUMPDEST
000026e3: SWAP2
000026e4: SWAP1
000026e5: POP
000026e6: JUMP
000026e7: JUMPDEST
000026e8: PUSH1 0x00
000026ea: PUSH8 0xffffffffffffffff
000026f3: DUP3
000026f4: GT
000026f5: ISZERO
000026f6: PUSH2 0x2702
000026f9: JUMPI
000026fa: PUSH2 0x2701
000026fd: PUSH2 0x266c
00002700: JUMP
00002701: JUMPDEST
00002702: JUMPDEST
00002703: PUSH2 0x270b
00002706: DUP3
00002707: PUSH2 0x244e
0000270a: JUMP
0000270b: JUMPDEST
0000270c: SWAP1
0000270d: POP
0000270e: PUSH1 0x20
00002710: DUP2
00002711: ADD
00002712: SWAP1
00002713: POP
00002714: SWAP2
00002715: SWAP1
00002716: POP
00002717: JUMP
00002718: JUMPDEST
00002719: DUP3
0000271a: DUP2
0000271b: DUP4
0000271c: CALLDATACOPY
0000271d: PUSH1 0x00
0000271f: DUP4
00002720: DUP4
00002721: ADD
00002722: MSTORE
00002723: POP
00002724: POP
00002725: POP
00002726: JUMP
00002727: JUMPDEST
00002728: PUSH1 0x00
0000272a: PUSH2 0x273a
0000272d: PUSH2 0x2735
00002730: DUP5
00002731: PUSH2 0x26e7
00002734: JUMP
00002735: JUMPDEST
00002736: PUSH2 0x26cc
00002739: JUMP
0000273a: JUMPDEST
0000273b: SWAP1
0000273c: POP
0000273d: DUP3
0000273e: DUP2
0000273f: MSTORE
00002740: PUSH1 0x20
00002742: DUP2
00002743: ADD
00002744: DUP5
00002745: DUP5
00002746: DUP5
00002747: ADD
00002748: GT
00002749: ISZERO
0000274a: PUSH2 0x2756
0000274d: JUMPI
0000274e: PUSH2 0x2755
00002751: PUSH2 0x2667
00002754: JUMP
00002755: JUMPDEST
00002756: JUMPDEST
00002757: PUSH2 0x2761
0000275a: DUP5
0000275b: DUP3
0000275c: DUP6
0000275d: PUSH2 0x2718
00002760: JUMP
00002761: JUMPDEST
00002762: POP
00002763: SWAP4
00002764: SWAP3
00002765: POP
00002766: POP
00002767: POP
00002768: JUMP
00002769: JUMPDEST
0000276a: PUSH1 0x00
0000276c: DUP3
0000276d: PUSH1 0x1f
0000276f: DUP4
00002770: ADD
00002771: SLT
00002772: PUSH2 0x277e
00002775: JUMPI
00002776: PUSH2 0x277d
00002779: PUSH2 0x2662
0000277c: JUMP
0000277d: JUMPDEST
0000277e: JUMPDEST
0000277f: DUP2
00002780: CALLDATALOAD
00002781: PUSH2 0x278e
00002784: DUP5
00002785: DUP3
00002786: PUSH1 0x20
00002788: DUP7
00002789: ADD
0000278a: PUSH2 0x2727
0000278d: JUMP
0000278e: JUMPDEST
0000278f: SWAP2
00002790: POP
00002791: POP
00002792: SWAP3
00002793: SWAP2
00002794: POP
00002795: POP
00002796: JUMP
00002797: JUMPDEST
00002798: PUSH1 0x00
0000279a: DUP1
0000279b: PUSH1 0x40
0000279d: DUP4
0000279e: DUP6
0000279f: SUB
000027a0: SLT
000027a1: ISZERO
000027a2: PUSH2 0x27ae
000027a5: JUMPI
000027a6: PUSH2 0x27ad
000027a9: PUSH2 0x233a
000027ac: JUMP
000027ad: JUMPDEST
000027ae: JUMPDEST
000027af: PUSH1 0x00
000027b1: PUSH2 0x27bc
000027b4: DUP6
000027b5: DUP3
000027b6: DUP7
000027b7: ADD
000027b8: PUSH2 0x24db
000027bb: JUMP
000027bc: JUMPDEST
000027bd: SWAP3
000027be: POP
000027bf: POP
000027c0: PUSH1 0x20
000027c2: DUP4
000027c3: ADD
000027c4: CALLDATALOAD
000027c5: PUSH8 0xffffffffffffffff
000027ce: DUP2
000027cf: GT
000027d0: ISZERO
000027d1: PUSH2 0x27dd
000027d4: JUMPI
000027d5: PUSH2 0x27dc
000027d8: PUSH2 0x233f
000027db: JUMP
000027dc: JUMPDEST
000027dd: JUMPDEST
000027de: PUSH2 0x27e9
000027e1: DUP6
000027e2: DUP3
000027e3: DUP7
000027e4: ADD
000027e5: PUSH2 0x2769
000027e8: JUMP
000027e9: JUMPDEST
000027ea: SWAP2
000027eb: POP
000027ec: POP
000027ed: SWAP3
000027ee: POP
000027ef: SWAP3
000027f0: SWAP1
000027f1: POP
000027f2: JUMP
000027f3: JUMPDEST
000027f4: PUSH1 0x00
000027f6: PUSH1 0x20
000027f8: DUP3
000027f9: DUP5
000027fa: SUB
000027fb: SLT
000027fc: ISZERO
000027fd: PUSH2 0x2809
00002800: JUMPI
00002801: PUSH2 0x2808
00002804: PUSH2 0x233a
00002807: JUMP
00002808: JUMPDEST
00002809: JUMPDEST
0000280a: PUSH1 0x00
0000280c: PUSH2 0x2817
0000280f: DUP5
00002810: DUP3
00002811: DUP6
00002812: ADD
00002813: PUSH2 0x2590
00002816: JUMP
00002817: JUMPDEST
00002818: SWAP2
00002819: POP
0000281a: POP
0000281b: SWAP3
0000281c: SWAP2
0000281d: POP
0000281e: POP
0000281f: JUMP
00002820: JUMPDEST
00002821: PUSH2 0x2829
00002824: DUP2
00002825: PUSH2 0x23c9
00002828: JUMP
00002829: JUMPDEST
0000282a: DUP2
0000282b: EQ
0000282c: PUSH2 0x2834
0000282f: JUMPI
00002830: PUSH1 0x00
00002832: DUP1
00002833: REVERT
00002834: JUMPDEST
00002835: POP
00002836: JUMP
00002837: JUMPDEST
00002838: PUSH1 0x00
0000283a: DUP2
0000283b: CALLDATALOAD
0000283c: SWAP1
0000283d: POP
0000283e: PUSH2 0x2846
00002841: DUP2
00002842: PUSH2 0x2820
00002845: JUMP
00002846: JUMPDEST
00002847: SWAP3
00002848: SWAP2
00002849: POP
0000284a: POP
0000284b: JUMP
0000284c: JUMPDEST
0000284d: PUSH1 0x00
0000284f: DUP1
00002850: PUSH1 0x40
00002852: DUP4
00002853: DUP6
00002854: SUB
00002855: SLT
00002856: ISZERO
00002857: PUSH2 0x2863
0000285a: JUMPI
0000285b: PUSH2 0x2862
0000285e: PUSH2 0x233a
00002861: JUMP
00002862: JUMPDEST
00002863: JUMPDEST
00002864: PUSH1 0x00
00002866: PUSH2 0x2871
00002869: DUP6
0000286a: DUP3
0000286b: DUP7
0000286c: ADD
0000286d: PUSH2 0x2590
00002870: JUMP
00002871: JUMPDEST
00002872: SWAP3
00002873: POP
00002874: POP
00002875: PUSH1 0x20
00002877: PUSH2 0x2882
0000287a: DUP6
0000287b: DUP3
0000287c: DUP7
0000287d: ADD
0000287e: PUSH2 0x2837
00002881: JUMP
00002882: JUMPDEST
00002883: SWAP2
00002884: POP
00002885: POP
00002886: SWAP3
00002887: POP
00002888: SWAP3
00002889: SWAP1
0000288a: POP
0000288b: JUMP
0000288c: JUMPDEST
0000288d: PUSH1 0x00
0000288f: PUSH8 0xffffffffffffffff
00002898: DUP3
00002899: GT
0000289a: ISZERO
0000289b: PUSH2 0x28a7
0000289e: JUMPI
0000289f: PUSH2 0x28a6
000028a2: PUSH2 0x266c
000028a5: JUMP
000028a6: JUMPDEST
000028a7: JUMPDEST
000028a8: PUSH2 0x28b0
000028ab: DUP3
000028ac: PUSH2 0x244e
000028af: JUMP
000028b0: JUMPDEST
000028b1: SWAP1
000028b2: POP
000028b3: PUSH1 0x20
000028b5: DUP2
000028b6: ADD
000028b7: SWAP1
000028b8: POP
000028b9: SWAP2
000028ba: SWAP1
000028bb: POP
000028bc: JUMP
000028bd: JUMPDEST
000028be: PUSH1 0x00
000028c0: PUSH2 0x28d0
000028c3: PUSH2 0x28cb
000028c6: DUP5
000028c7: PUSH2 0x288c
000028ca: JUMP
000028cb: JUMPDEST
000028cc: PUSH2 0x26cc
000028cf: JUMP
000028d0: JUMPDEST
000028d1: SWAP1
000028d2: POP
000028d3: DUP3
000028d4: DUP2
000028d5: MSTORE
000028d6: PUSH1 0x20
000028d8: DUP2
000028d9: ADD
000028da: DUP5
000028db: DUP5
000028dc: DUP5
000028dd: ADD
000028de: GT
000028df: ISZERO
000028e0: PUSH2 0x28ec
000028e3: JUMPI
000028e4: PUSH2 0x28eb
000028e7: PUSH2 0x2667
000028ea: JUMP
000028eb: JUMPDEST
000028ec: JUMPDEST
000028ed: PUSH2 0x28f7
000028f0: DUP5
000028f1: DUP3
000028f2: DUP6
000028f3: PUSH2 0x2718
000028f6: JUMP
000028f7: JUMPDEST
000028f8: POP
000028f9: SWAP4
000028fa: SWAP3
000028fb: POP
000028fc: POP
000028fd: POP
000028fe: JUMP
000028ff: JUMPDEST
00002900: PUSH1 0x00
00002902: DUP3
00002903: PUSH1 0x1f
00002905: DUP4
00002906: ADD
00002907: SLT
00002908: PUSH2 0x2914
0000290b: JUMPI
0000290c: PUSH2 0x2913
0000290f: PUSH2 0x2662
00002912: JUMP
00002913: JUMPDEST
00002914: JUMPDEST
00002915: DUP2
00002916: CALLDATALOAD
00002917: PUSH2 0x2924
0000291a: DUP5
0000291b: DUP3
0000291c: PUSH1 0x20
0000291e: DUP7
0000291f: ADD
00002920: PUSH2 0x28bd
00002923: JUMP
00002924: JUMPDEST
00002925: SWAP2
00002926: POP
00002927: POP
00002928: SWAP3
00002929: SWAP2
0000292a: POP
0000292b: POP
0000292c: JUMP
0000292d: JUMPDEST
0000292e: PUSH1 0x00
00002930: DUP1
00002931: PUSH1 0x00
00002933: DUP1
00002934: PUSH1 0x80
00002936: DUP6
00002937: DUP8
00002938: SUB
00002939: SLT
0000293a: ISZERO
0000293b: PUSH2 0x2947
0000293e: JUMPI
0000293f: PUSH2 0x2946
00002942: PUSH2 0x233a
00002945: JUMP
00002946: JUMPDEST
00002947: JUMPDEST
00002948: PUSH1 0x00
0000294a: PUSH2 0x2955
0000294d: DUP8
0000294e: DUP3
0000294f: DUP9
00002950: ADD
00002951: PUSH2 0x2590
00002954: JUMP
00002955: JUMPDEST
00002956: SWAP5
00002957: POP
00002958: POP
00002959: PUSH1 0x20
0000295b: PUSH2 0x2966
0000295e: DUP8
0000295f: DUP3
00002960: DUP9
00002961: ADD
00002962: PUSH2 0x2590
00002965: JUMP
00002966: JUMPDEST
00002967: SWAP4
00002968: POP
00002969: POP
0000296a: PUSH1 0x40
0000296c: PUSH2 0x2977
0000296f: DUP8
00002970: DUP3
00002971: DUP9
00002972: ADD
00002973: PUSH2 0x24db
00002976: JUMP
00002977: JUMPDEST
00002978: SWAP3
00002979: POP
0000297a: POP
0000297b: PUSH1 0x60
0000297d: DUP6
0000297e: ADD
0000297f: CALLDATALOAD
00002980: PUSH8 0xffffffffffffffff
00002989: DUP2
0000298a: GT
0000298b: ISZERO
0000298c: PUSH2 0x2998
0000298f: JUMPI
00002990: PUSH2 0x2997
00002993: PUSH2 0x233f
00002996: JUMP
00002997: JUMPDEST
00002998: JUMPDEST
00002999: PUSH2 0x29a4
0000299c: DUP8
0000299d: DUP3
0000299e: DUP9
0000299f: ADD
000029a0: PUSH2 0x28ff
000029a3: JUMP
000029a4: JUMPDEST
000029a5: SWAP2
000029a6: POP
000029a7: POP
000029a8: SWAP3
000029a9: SWAP6
000029aa: SWAP2
000029ab: SWAP5
000029ac: POP
000029ad: SWAP3
000029ae: POP
000029af: JUMP
000029b0: JUMPDEST
000029b1: PUSH1 0x00
000029b3: DUP1
000029b4: PUSH1 0x40
000029b6: DUP4
000029b7: DUP6
000029b8: SUB
000029b9: SLT
000029ba: ISZERO
000029bb: PUSH2 0x29c7
000029be: JUMPI
000029bf: PUSH2 0x29c6
000029c2: PUSH2 0x233a
000029c5: JUMP
000029c6: JUMPDEST
000029c7: JUMPDEST
000029c8: PUSH1 0x00
000029ca: PUSH2 0x29d5
000029cd: DUP6
000029ce: DUP3
000029cf: DUP7
000029d0: ADD
000029d1: PUSH2 0x2590
000029d4: JUMP
000029d5: JUMPDEST
000029d6: SWAP3
000029d7: POP
000029d8: POP
000029d9: PUSH1 0x20
000029db: PUSH2 0x29e6
000029de: DUP6
000029df: DUP3
000029e0: DUP7
000029e1: ADD
000029e2: PUSH2 0x2590
000029e5: JUMP
000029e6: JUMPDEST
000029e7: SWAP2
000029e8: POP
000029e9: POP
000029ea: SWAP3
000029eb: POP
000029ec: SWAP3
000029ed: SWAP1
000029ee: POP
000029ef: JUMP
000029f0: JUMPDEST
000029f1: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002a12: PUSH1 0x00
00002a14: MSTORE
00002a15: PUSH1 0x22
00002a17: PUSH1 0x04
00002a19: MSTORE
00002a1a: PUSH1 0x24
00002a1c: PUSH1 0x00
00002a1e: REVERT
00002a1f: JUMPDEST
00002a20: PUSH1 0x00
00002a22: PUSH1 0x02
00002a24: DUP3
00002a25: DIV
00002a26: SWAP1
00002a27: POP
00002a28: PUSH1 0x01
00002a2a: DUP3
00002a2b: AND
00002a2c: DUP1
00002a2d: PUSH2 0x2a37
00002a30: JUMPI
00002a31: PUSH1 0x7f
00002a33: DUP3
00002a34: AND
00002a35: SWAP2
00002a36: POP
00002a37: JUMPDEST
00002a38: PUSH1 0x20
00002a3a: DUP3
00002a3b: LT
00002a3c: DUP2
00002a3d: EQ
00002a3e: ISZERO
00002a3f: PUSH2 0x2a4b
00002a42: JUMPI
00002a43: PUSH2 0x2a4a
00002a46: PUSH2 0x29f0
00002a49: JUMP
00002a4a: JUMPDEST
00002a4b: JUMPDEST
00002a4c: POP
00002a4d: SWAP2
00002a4e: SWAP1
00002a4f: POP
00002a50: JUMP
00002a51: JUMPDEST
00002a52: PUSH32 0x4552433732313a20617070726f76656420717565727920666f72206e6f6e6578
00002a73: PUSH1 0x00
00002a75: DUP3
00002a76: ADD
00002a77: MSTORE
00002a78: PUSH32 0x697374656e7420746f6b656e0000000000000000000000000000000000000000
00002a99: PUSH1 0x20
00002a9b: DUP3
00002a9c: ADD
00002a9d: MSTORE
00002a9e: POP
00002a9f: JUMP
00002aa0: JUMPDEST
00002aa1: PUSH1 0x00
00002aa3: PUSH2 0x2aad
00002aa6: PUSH1 0x2c
00002aa8: DUP4
00002aa9: PUSH2 0x240a
00002aac: JUMP
00002aad: JUMPDEST
00002aae: SWAP2
00002aaf: POP
00002ab0: PUSH2 0x2ab8
00002ab3: DUP3
00002ab4: PUSH2 0x2a51
00002ab7: JUMP
00002ab8: JUMPDEST
00002ab9: PUSH1 0x40
00002abb: DUP3
00002abc: ADD
00002abd: SWAP1
00002abe: POP
00002abf: SWAP2
00002ac0: SWAP1
00002ac1: POP
00002ac2: JUMP
00002ac3: JUMPDEST
00002ac4: PUSH1 0x00
00002ac6: PUSH1 0x20
00002ac8: DUP3
00002ac9: ADD
00002aca: SWAP1
00002acb: POP
00002acc: DUP2
00002acd: DUP2
00002ace: SUB
00002acf: PUSH1 0x00
00002ad1: DUP4
00002ad2: ADD
00002ad3: MSTORE
00002ad4: PUSH2 0x2adc
00002ad7: DUP2
00002ad8: PUSH2 0x2aa0
00002adb: JUMP
00002adc: JUMPDEST
00002add: SWAP1
00002ade: POP
00002adf: SWAP2
00002ae0: SWAP1
00002ae1: POP
00002ae2: JUMP
00002ae3: JUMPDEST
00002ae4: PUSH32 0x4552433732313a20617070726f76616c20746f2063757272656e74206f776e65
00002b05: PUSH1 0x00
00002b07: DUP3
00002b08: ADD
00002b09: MSTORE
00002b0a: PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000
00002b2b: PUSH1 0x20
00002b2d: DUP3
00002b2e: ADD
00002b2f: MSTORE
00002b30: POP
00002b31: JUMP
00002b32: JUMPDEST
00002b33: PUSH1 0x00
00002b35: PUSH2 0x2b3f
00002b38: PUSH1 0x21
00002b3a: DUP4
00002b3b: PUSH2 0x240a
00002b3e: JUMP
00002b3f: JUMPDEST
00002b40: SWAP2
00002b41: POP
00002b42: PUSH2 0x2b4a
00002b45: DUP3
00002b46: PUSH2 0x2ae3
00002b49: JUMP
00002b4a: JUMPDEST
00002b4b: PUSH1 0x40
00002b4d: DUP3
00002b4e: ADD
00002b4f: SWAP1
00002b50: POP
00002b51: SWAP2
00002b52: SWAP1
00002b53: POP
00002b54: JUMP
00002b55: JUMPDEST
00002b56: PUSH1 0x00
00002b58: PUSH1 0x20
00002b5a: DUP3
00002b5b: ADD
00002b5c: SWAP1
00002b5d: POP
00002b5e: DUP2
00002b5f: DUP2
00002b60: SUB
00002b61: PUSH1 0x00
00002b63: DUP4
00002b64: ADD
00002b65: MSTORE
00002b66: PUSH2 0x2b6e
00002b69: DUP2
00002b6a: PUSH2 0x2b32
00002b6d: JUMP
00002b6e: JUMPDEST
00002b6f: SWAP1
00002b70: POP
00002b71: SWAP2
00002b72: SWAP1
00002b73: POP
00002b74: JUMP
00002b75: JUMPDEST
00002b76: PUSH32 0x4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77
00002b97: PUSH1 0x00
00002b99: DUP3
00002b9a: ADD
00002b9b: MSTORE
00002b9c: PUSH32 0x6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000
00002bbd: PUSH1 0x20
00002bbf: DUP3
00002bc0: ADD
00002bc1: MSTORE
00002bc2: POP
00002bc3: JUMP
00002bc4: JUMPDEST
00002bc5: PUSH1 0x00
00002bc7: PUSH2 0x2bd1
00002bca: PUSH1 0x38
00002bcc: DUP4
00002bcd: PUSH2 0x240a
00002bd0: JUMP
00002bd1: JUMPDEST
00002bd2: SWAP2
00002bd3: POP
00002bd4: PUSH2 0x2bdc
00002bd7: DUP3
00002bd8: PUSH2 0x2b75
00002bdb: JUMP
00002bdc: JUMPDEST
00002bdd: PUSH1 0x40
00002bdf: DUP3
00002be0: ADD
00002be1: SWAP1
00002be2: POP
00002be3: SWAP2
00002be4: SWAP1
00002be5: POP
00002be6: JUMP
00002be7: JUMPDEST
00002be8: PUSH1 0x00
00002bea: PUSH1 0x20
00002bec: DUP3
00002bed: ADD
00002bee: SWAP1
00002bef: POP
00002bf0: DUP2
00002bf1: DUP2
00002bf2: SUB
00002bf3: PUSH1 0x00
00002bf5: DUP4
00002bf6: ADD
00002bf7: MSTORE
00002bf8: PUSH2 0x2c00
00002bfb: DUP2
00002bfc: PUSH2 0x2bc4
00002bff: JUMP
00002c00: JUMPDEST
00002c01: SWAP1
00002c02: POP
00002c03: SWAP2
00002c04: SWAP1
00002c05: POP
00002c06: JUMP
00002c07: JUMPDEST
00002c08: PUSH32 0x4552433732313a207472616e736665722063616c6c6572206973206e6f74206f
00002c29: PUSH1 0x00
00002c2b: DUP3
00002c2c: ADD
00002c2d: MSTORE
00002c2e: PUSH32 0x776e6572206e6f7220617070726f766564000000000000000000000000000000
00002c4f: PUSH1 0x20
00002c51: DUP3
00002c52: ADD
00002c53: MSTORE
00002c54: POP
00002c55: JUMP
00002c56: JUMPDEST
00002c57: PUSH1 0x00
00002c59: PUSH2 0x2c63
00002c5c: PUSH1 0x31
00002c5e: DUP4
00002c5f: PUSH2 0x240a
00002c62: JUMP
00002c63: JUMPDEST
00002c64: SWAP2
00002c65: POP
00002c66: PUSH2 0x2c6e
00002c69: DUP3
00002c6a: PUSH2 0x2c07
00002c6d: JUMP
00002c6e: JUMPDEST
00002c6f: PUSH1 0x40
00002c71: DUP3
00002c72: ADD
00002c73: SWAP1
00002c74: POP
00002c75: SWAP2
00002c76: SWAP1
00002c77: POP
00002c78: JUMP
00002c79: JUMPDEST
00002c7a: PUSH1 0x00
00002c7c: PUSH1 0x20
00002c7e: DUP3
00002c7f: ADD
00002c80: SWAP1
00002c81: POP
00002c82: DUP2
00002c83: DUP2
00002c84: SUB
00002c85: PUSH1 0x00
00002c87: DUP4
00002c88: ADD
00002c89: MSTORE
00002c8a: PUSH2 0x2c92
00002c8d: DUP2
00002c8e: PUSH2 0x2c56
00002c91: JUMP
00002c92: JUMPDEST
00002c93: SWAP1
00002c94: POP
00002c95: SWAP2
00002c96: SWAP1
00002c97: POP
00002c98: JUMP
00002c99: JUMPDEST
00002c9a: PUSH32 0x455243373231456e756d657261626c653a206f776e657220696e646578206f75
00002cbb: PUSH1 0x00
00002cbd: DUP3
00002cbe: ADD
00002cbf: MSTORE
00002cc0: PUSH32 0x74206f6620626f756e6473000000000000000000000000000000000000000000
00002ce1: PUSH1 0x20
00002ce3: DUP3
00002ce4: ADD
00002ce5: MSTORE
00002ce6: POP
00002ce7: JUMP
00002ce8: JUMPDEST
00002ce9: PUSH1 0x00
00002ceb: PUSH2 0x2cf5
00002cee: PUSH1 0x2b
00002cf0: DUP4
00002cf1: PUSH2 0x240a
00002cf4: JUMP
00002cf5: JUMPDEST
00002cf6: SWAP2
00002cf7: POP
00002cf8: PUSH2 0x2d00
00002cfb: DUP3
00002cfc: PUSH2 0x2c99
00002cff: JUMP
00002d00: JUMPDEST
00002d01: PUSH1 0x40
00002d03: DUP3
00002d04: ADD
00002d05: SWAP1
00002d06: POP
00002d07: SWAP2
00002d08: SWAP1
00002d09: POP
00002d0a: JUMP
00002d0b: JUMPDEST
00002d0c: PUSH1 0x00
00002d0e: PUSH1 0x20
00002d10: DUP3
00002d11: ADD
00002d12: SWAP1
00002d13: POP
00002d14: DUP2
00002d15: DUP2
00002d16: SUB
00002d17: PUSH1 0x00
00002d19: DUP4
00002d1a: ADD
00002d1b: MSTORE
00002d1c: PUSH2 0x2d24
00002d1f: DUP2
00002d20: PUSH2 0x2ce8
00002d23: JUMP
00002d24: JUMPDEST
00002d25: SWAP1
00002d26: POP
00002d27: SWAP2
00002d28: SWAP1
00002d29: POP
00002d2a: JUMP
00002d2b: JUMPDEST
00002d2c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002d4d: PUSH1 0x00
00002d4f: MSTORE
00002d50: PUSH1 0x12
00002d52: PUSH1 0x04
00002d54: MSTORE
00002d55: PUSH1 0x24
00002d57: PUSH1 0x00
00002d59: REVERT
00002d5a: JUMPDEST
00002d5b: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002d7c: PUSH1 0x00
00002d7e: MSTORE
00002d7f: PUSH1 0x11
00002d81: PUSH1 0x04
00002d83: MSTORE
00002d84: PUSH1 0x24
00002d86: PUSH1 0x00
00002d88: REVERT
00002d89: JUMPDEST
00002d8a: PUSH1 0x00
00002d8c: PUSH2 0x2d94
00002d8f: DUP3
00002d90: PUSH2 0x24ba
00002d93: JUMP
00002d94: JUMPDEST
00002d95: SWAP2
00002d96: POP
00002d97: PUSH2 0x2d9f
00002d9a: DUP4
00002d9b: PUSH2 0x24ba
00002d9e: JUMP
00002d9f: JUMPDEST
00002da0: SWAP3
00002da1: POP
00002da2: DUP3
00002da3: PUSH2 0x2daf
00002da6: JUMPI
00002da7: PUSH2 0x2dae
00002daa: PUSH2 0x2d2b
00002dad: JUMP
00002dae: JUMPDEST
00002daf: JUMPDEST
00002db0: DUP3
00002db1: DUP3
00002db2: DIV
00002db3: SWAP1
00002db4: POP
00002db5: SWAP3
00002db6: SWAP2
00002db7: POP
00002db8: POP
00002db9: JUMP
00002dba: JUMPDEST
00002dbb: PUSH1 0x00
00002dbd: PUSH2 0x2dc5
00002dc0: DUP3
00002dc1: PUSH2 0x24ba
00002dc4: JUMP
00002dc5: JUMPDEST
00002dc6: SWAP2
00002dc7: POP
00002dc8: PUSH2 0x2dd0
00002dcb: DUP4
00002dcc: PUSH2 0x24ba
00002dcf: JUMP
00002dd0: JUMPDEST
00002dd1: SWAP3
00002dd2: POP
00002dd3: DUP3
00002dd4: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002df5: SUB
00002df6: DUP3
00002df7: GT
00002df8: ISZERO
00002df9: PUSH2 0x2e05
00002dfc: JUMPI
00002dfd: PUSH2 0x2e04
00002e00: PUSH2 0x2d5a
00002e03: JUMP
00002e04: JUMPDEST
00002e05: JUMPDEST
00002e06: DUP3
00002e07: DUP3
00002e08: ADD
00002e09: SWAP1
00002e0a: POP
00002e0b: SWAP3
00002e0c: SWAP2
00002e0d: POP
00002e0e: POP
00002e0f: JUMP
00002e10: JUMPDEST
00002e11: PUSH1 0x00
00002e13: DUP2
00002e14: SWAP1
00002e15: POP
00002e16: SWAP3
00002e17: SWAP2
00002e18: POP
00002e19: POP
00002e1a: JUMP
00002e1b: JUMPDEST
00002e1c: POP
00002e1d: JUMP
00002e1e: JUMPDEST
00002e1f: PUSH1 0x00
00002e21: PUSH2 0x2e2b
00002e24: PUSH1 0x00
00002e26: DUP4
00002e27: PUSH2 0x2e10
00002e2a: JUMP
00002e2b: JUMPDEST
00002e2c: SWAP2
00002e2d: POP
00002e2e: PUSH2 0x2e36
00002e31: DUP3
00002e32: PUSH2 0x2e1b
00002e35: JUMP
00002e36: JUMPDEST
00002e37: PUSH1 0x00
00002e39: DUP3
00002e3a: ADD
00002e3b: SWAP1
00002e3c: POP
00002e3d: SWAP2
00002e3e: SWAP1
00002e3f: POP
00002e40: JUMP
00002e41: JUMPDEST
00002e42: PUSH1 0x00
00002e44: PUSH2 0x2e4c
00002e47: DUP3
00002e48: PUSH2 0x2e1e
00002e4b: JUMP
00002e4c: JUMPDEST
00002e4d: SWAP2
00002e4e: POP
00002e4f: DUP2
00002e50: SWAP1
00002e51: POP
00002e52: SWAP2
00002e53: SWAP1
00002e54: POP
00002e55: JUMP
00002e56: JUMPDEST
00002e57: PUSH1 0x00
00002e59: DUP2
00002e5a: SWAP1
00002e5b: POP
00002e5c: DUP2
00002e5d: PUSH1 0x00
00002e5f: MSTORE
00002e60: PUSH1 0x20
00002e62: PUSH1 0x00
00002e64: KECCAK256
00002e65: SWAP1
00002e66: POP
00002e67: SWAP2
00002e68: SWAP1
00002e69: POP
00002e6a: JUMP
00002e6b: JUMPDEST
00002e6c: PUSH1 0x00
00002e6e: DUP2
00002e6f: SLOAD
00002e70: PUSH2 0x2e78
00002e73: DUP2
00002e74: PUSH2 0x2a1f
00002e77: JUMP
00002e78: JUMPDEST
00002e79: PUSH2 0x2e82
00002e7c: DUP2
00002e7d: DUP7
00002e7e: PUSH2 0x2e10
00002e81: JUMP
00002e82: JUMPDEST
00002e83: SWAP5
00002e84: POP
00002e85: PUSH1 0x01
00002e87: DUP3
00002e88: AND
00002e89: PUSH1 0x00
00002e8b: DUP2
00002e8c: EQ
00002e8d: PUSH2 0x2e9d
00002e90: JUMPI
00002e91: PUSH1 0x01
00002e93: DUP2
00002e94: EQ
00002e95: PUSH2 0x2eae
00002e98: JUMPI
00002e99: PUSH2 0x2ee1
00002e9c: JUMP
00002e9d: JUMPDEST
00002e9e: PUSH1 0xff
00002ea0: NOT
00002ea1: DUP4
00002ea2: AND
00002ea3: DUP7
00002ea4: MSTORE
00002ea5: DUP2
00002ea6: DUP7
00002ea7: ADD
00002ea8: SWAP4
00002ea9: POP
00002eaa: PUSH2 0x2ee1
00002ead: JUMP
00002eae: JUMPDEST
00002eaf: PUSH2 0x2eb7
00002eb2: DUP6
00002eb3: PUSH2 0x2e56
00002eb6: JUMP
00002eb7: JUMPDEST
00002eb8: PUSH1 0x00
00002eba: JUMPDEST
00002ebb: DUP4
00002ebc: DUP2
00002ebd: LT
00002ebe: ISZERO
00002ebf: PUSH2 0x2ed9
00002ec2: JUMPI
00002ec3: DUP2
00002ec4: SLOAD
00002ec5: DUP2
00002ec6: DUP10
00002ec7: ADD
00002ec8: MSTORE
00002ec9: PUSH1 0x01
00002ecb: DUP3
00002ecc: ADD
00002ecd: SWAP2
00002ece: POP
00002ecf: PUSH1 0x20
00002ed1: DUP2
00002ed2: ADD
00002ed3: SWAP1
00002ed4: POP
00002ed5: PUSH2 0x2eba
00002ed8: JUMP
00002ed9: JUMPDEST
00002eda: DUP4
00002edb: DUP9
00002edc: ADD
00002edd: SWAP6
00002ede: POP
00002edf: POP
00002ee0: POP
00002ee1: JUMPDEST
00002ee2: POP
00002ee3: POP
00002ee4: POP
00002ee5: SWAP3
00002ee6: SWAP2
00002ee7: POP
00002ee8: POP
00002ee9: JUMP
00002eea: JUMPDEST
00002eeb: PUSH1 0x00
00002eed: PUSH2 0x2ef6
00002ef0: DUP3
00002ef1: DUP5
00002ef2: PUSH2 0x2e6b
00002ef5: JUMP
00002ef6: JUMPDEST
00002ef7: SWAP2
00002ef8: POP
00002ef9: DUP2
00002efa: SWAP1
00002efb: POP
00002efc: SWAP3
00002efd: SWAP2
00002efe: POP
00002eff: POP
00002f00: JUMP
00002f01: JUMPDEST
00002f02: PUSH32 0x455243373231456e756d657261626c653a20676c6f62616c20696e646578206f
00002f23: PUSH1 0x00
00002f25: DUP3
00002f26: ADD
00002f27: MSTORE
00002f28: PUSH32 0x7574206f6620626f756e64730000000000000000000000000000000000000000
00002f49: PUSH1 0x20
00002f4b: DUP3
00002f4c: ADD
00002f4d: MSTORE
00002f4e: POP
00002f4f: JUMP
00002f50: JUMPDEST
00002f51: PUSH1 0x00
00002f53: PUSH2 0x2f5d
00002f56: PUSH1 0x2c
00002f58: DUP4
00002f59: PUSH2 0x240a
00002f5c: JUMP
00002f5d: JUMPDEST
00002f5e: SWAP2
00002f5f: POP
00002f60: PUSH2 0x2f68
00002f63: DUP3
00002f64: PUSH2 0x2f01
00002f67: JUMP
00002f68: JUMPDEST
00002f69: PUSH1 0x40
00002f6b: DUP3
00002f6c: ADD
00002f6d: SWAP1
00002f6e: POP
00002f6f: SWAP2
00002f70: SWAP1
00002f71: POP
00002f72: JUMP
00002f73: JUMPDEST
00002f74: PUSH1 0x00
00002f76: PUSH1 0x20
00002f78: DUP3
00002f79: ADD
00002f7a: SWAP1
00002f7b: POP
00002f7c: DUP2
00002f7d: DUP2
00002f7e: SUB
00002f7f: PUSH1 0x00
00002f81: DUP4
00002f82: ADD
00002f83: MSTORE
00002f84: PUSH2 0x2f8c
00002f87: DUP2
00002f88: PUSH2 0x2f50
00002f8b: JUMP
00002f8c: JUMPDEST
00002f8d: SWAP1
00002f8e: POP
00002f8f: SWAP2
00002f90: SWAP1
00002f91: POP
00002f92: JUMP
00002f93: JUMPDEST
00002f94: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002fb5: PUSH1 0x00
00002fb7: MSTORE
00002fb8: PUSH1 0x32
00002fba: PUSH1 0x04
00002fbc: MSTORE
00002fbd: PUSH1 0x24
00002fbf: PUSH1 0x00
00002fc1: REVERT
00002fc2: JUMPDEST
00002fc3: PUSH32 0x4552433732313a206f776e657220717565727920666f72206e6f6e6578697374
00002fe4: PUSH1 0x00
00002fe6: DUP3
00002fe7: ADD
00002fe8: MSTORE
00002fe9: PUSH32 0x656e7420746f6b656e0000000000000000000000000000000000000000000000
0000300a: PUSH1 0x20
0000300c: DUP3
0000300d: ADD
0000300e: MSTORE
0000300f: POP
00003010: JUMP
00003011: JUMPDEST
00003012: PUSH1 0x00
00003014: PUSH2 0x301e
00003017: PUSH1 0x29
00003019: DUP4
0000301a: PUSH2 0x240a
0000301d: JUMP
0000301e: JUMPDEST
0000301f: SWAP2
00003020: POP
00003021: PUSH2 0x3029
00003024: DUP3
00003025: PUSH2 0x2fc2
00003028: JUMP
00003029: JUMPDEST
0000302a: PUSH1 0x40
0000302c: DUP3
0000302d: ADD
0000302e: SWAP1
0000302f: POP
00003030: SWAP2
00003031: SWAP1
00003032: POP
00003033: JUMP
00003034: JUMPDEST
00003035: PUSH1 0x00
00003037: PUSH1 0x20
00003039: DUP3
0000303a: ADD
0000303b: SWAP1
0000303c: POP
0000303d: DUP2
0000303e: DUP2
0000303f: SUB
00003040: PUSH1 0x00
00003042: DUP4
00003043: ADD
00003044: MSTORE
00003045: PUSH2 0x304d
00003048: DUP2
00003049: PUSH2 0x3011
0000304c: JUMP
0000304d: JUMPDEST
0000304e: SWAP1
0000304f: POP
00003050: SWAP2
00003051: SWAP1
00003052: POP
00003053: JUMP
00003054: JUMPDEST
00003055: PUSH32 0x4552433732313a2062616c616e636520717565727920666f7220746865207a65
00003076: PUSH1 0x00
00003078: DUP3
00003079: ADD
0000307a: MSTORE
0000307b: PUSH32 0x726f206164647265737300000000000000000000000000000000000000000000
0000309c: PUSH1 0x20
0000309e: DUP3
0000309f: ADD
000030a0: MSTORE
000030a1: POP
000030a2: JUMP
000030a3: JUMPDEST
000030a4: PUSH1 0x00
000030a6: PUSH2 0x30b0
000030a9: PUSH1 0x2a
000030ab: DUP4
000030ac: PUSH2 0x240a
000030af: JUMP
000030b0: JUMPDEST
000030b1: SWAP2
000030b2: POP
000030b3: PUSH2 0x30bb
000030b6: DUP3
000030b7: PUSH2 0x3054
000030ba: JUMP
000030bb: JUMPDEST
000030bc: PUSH1 0x40
000030be: DUP3
000030bf: ADD
000030c0: SWAP1
000030c1: POP
000030c2: SWAP2
000030c3: SWAP1
000030c4: POP
000030c5: JUMP
000030c6: JUMPDEST
000030c7: PUSH1 0x00
000030c9: PUSH1 0x20
000030cb: DUP3
000030cc: ADD
000030cd: SWAP1
000030ce: POP
000030cf: DUP2
000030d0: DUP2
000030d1: SUB
000030d2: PUSH1 0x00
000030d4: DUP4
000030d5: ADD
000030d6: MSTORE
000030d7: PUSH2 0x30df
000030da: DUP2
000030db: PUSH2 0x30a3
000030de: JUMP
000030df: JUMPDEST
000030e0: SWAP1
000030e1: POP
000030e2: SWAP2
000030e3: SWAP1
000030e4: POP
000030e5: JUMP
000030e6: JUMPDEST
000030e7: PUSH32 0x4552433732313a20617070726f766520746f2063616c6c657200000000000000
00003108: PUSH1 0x00
0000310a: DUP3
0000310b: ADD
0000310c: MSTORE
0000310d: POP
0000310e: JUMP
0000310f: JUMPDEST
00003110: PUSH1 0x00
00003112: PUSH2 0x311c
00003115: PUSH1 0x19
00003117: DUP4
00003118: PUSH2 0x240a
0000311b: JUMP
0000311c: JUMPDEST
0000311d: SWAP2
0000311e: POP
0000311f: PUSH2 0x3127
00003122: DUP3
00003123: PUSH2 0x30e6
00003126: JUMP
00003127: JUMPDEST
00003128: PUSH1 0x20
0000312a: DUP3
0000312b: ADD
0000312c: SWAP1
0000312d: POP
0000312e: SWAP2
0000312f: SWAP1
00003130: POP
00003131: JUMP
00003132: JUMPDEST
00003133: PUSH1 0x00
00003135: PUSH1 0x20
00003137: DUP3
00003138: ADD
00003139: SWAP1
0000313a: POP
0000313b: DUP2
0000313c: DUP2
0000313d: SUB
0000313e: PUSH1 0x00
00003140: DUP4
00003141: ADD
00003142: MSTORE
00003143: PUSH2 0x314b
00003146: DUP2
00003147: PUSH2 0x310f
0000314a: JUMP
0000314b: JUMPDEST
0000314c: SWAP1
0000314d: POP
0000314e: SWAP2
0000314f: SWAP1
00003150: POP
00003151: JUMP
00003152: JUMPDEST
00003153: PUSH1 0x00
00003155: PUSH2 0x315d
00003158: DUP3
00003159: PUSH2 0x24ba
0000315c: JUMP
0000315d: JUMPDEST
0000315e: SWAP2
0000315f: POP
00003160: PUSH2 0x3168
00003163: DUP4
00003164: PUSH2 0x24ba
00003167: JUMP
00003168: JUMPDEST
00003169: SWAP3
0000316a: POP
0000316b: DUP3
0000316c: DUP3
0000316d: LT
0000316e: ISZERO
0000316f: PUSH2 0x317b
00003172: JUMPI
00003173: PUSH2 0x317a
00003176: PUSH2 0x2d5a
00003179: JUMP
0000317a: JUMPDEST
0000317b: JUMPDEST
0000317c: DUP3
0000317d: DUP3
0000317e: SUB
0000317f: SWAP1
00003180: POP
00003181: SWAP3
00003182: SWAP2
00003183: POP
00003184: POP
00003185: JUMP
00003186: JUMPDEST
00003187: PUSH1 0x00
00003189: PUSH2 0x3191
0000318c: DUP3
0000318d: PUSH2 0x24ba
00003190: JUMP
00003191: JUMPDEST
00003192: SWAP2
00003193: POP
00003194: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000031b5: DUP3
000031b6: EQ
000031b7: ISZERO
000031b8: PUSH2 0x31c4
000031bb: JUMPI
000031bc: PUSH2 0x31c3
000031bf: PUSH2 0x2d5a
000031c2: JUMP
000031c3: JUMPDEST
000031c4: JUMPDEST
000031c5: PUSH1 0x01
000031c7: DUP3
000031c8: ADD
000031c9: SWAP1
000031ca: POP
000031cb: SWAP2
000031cc: SWAP1
000031cd: POP
000031ce: JUMP
000031cf: JUMPDEST
000031d0: PUSH1 0x00
000031d2: PUSH2 0x31da
000031d5: DUP3
000031d6: PUSH2 0x23ff
000031d9: JUMP
000031da: JUMPDEST
000031db: PUSH2 0x31e4
000031de: DUP2
000031df: DUP6
000031e0: PUSH2 0x2e10
000031e3: JUMP
000031e4: JUMPDEST
000031e5: SWAP4
000031e6: POP
000031e7: PUSH2 0x31f4
000031ea: DUP2
000031eb: DUP6
000031ec: PUSH1 0x20
000031ee: DUP7
000031ef: ADD
000031f0: PUSH2 0x241b
000031f3: JUMP
000031f4: JUMPDEST
000031f5: DUP1
000031f6: DUP5
000031f7: ADD
000031f8: SWAP2
000031f9: POP
000031fa: POP
000031fb: SWAP3
000031fc: SWAP2
000031fd: POP
000031fe: POP
000031ff: JUMP
00003200: JUMPDEST
00003201: PUSH1 0x00
00003203: PUSH2 0x320c
00003206: DUP3
00003207: DUP16
00003208: PUSH2 0x2e6b
0000320b: JUMP
0000320c: JUMPDEST
0000320d: SWAP2
0000320e: POP
0000320f: PUSH2 0x3218
00003212: DUP3
00003213: DUP15
00003214: PUSH2 0x2e6b
00003217: JUMP
00003218: JUMPDEST
00003219: SWAP2
0000321a: POP
0000321b: PUSH2 0x3224
0000321e: DUP3
0000321f: DUP14
00003220: PUSH2 0x31cf
00003223: JUMP
00003224: JUMPDEST
00003225: SWAP2
00003226: POP
00003227: PUSH2 0x3230
0000322a: DUP3
0000322b: DUP13
0000322c: PUSH2 0x2e6b
0000322f: JUMP
00003230: JUMPDEST
00003231: SWAP2
00003232: POP
00003233: PUSH2 0x323c
00003236: DUP3
00003237: DUP12
00003238: PUSH2 0x2e6b
0000323b: JUMP
0000323c: JUMPDEST
0000323d: SWAP2
0000323e: POP
0000323f: PUSH2 0x3248
00003242: DUP3
00003243: DUP11
00003244: PUSH2 0x2e6b
00003247: JUMP
00003248: JUMPDEST
00003249: SWAP2
0000324a: POP
0000324b: PUSH2 0x3254
0000324e: DUP3
0000324f: DUP10
00003250: PUSH2 0x2e6b
00003253: JUMP
00003254: JUMPDEST
00003255: SWAP2
00003256: POP
00003257: PUSH2 0x3260
0000325a: DUP3
0000325b: DUP9
0000325c: PUSH2 0x2e6b
0000325f: JUMP
00003260: JUMPDEST
00003261: SWAP2
00003262: POP
00003263: PUSH2 0x326c
00003266: DUP3
00003267: DUP8
00003268: PUSH2 0x2e6b
0000326b: JUMP
0000326c: JUMPDEST
0000326d: SWAP2
0000326e: POP
0000326f: PUSH2 0x3278
00003272: DUP3
00003273: DUP7
00003274: PUSH2 0x2e6b
00003277: JUMP
00003278: JUMPDEST
00003279: SWAP2
0000327a: POP
0000327b: PUSH2 0x3284
0000327e: DUP3
0000327f: DUP6
00003280: PUSH2 0x31cf
00003283: JUMP
00003284: JUMPDEST
00003285: SWAP2
00003286: POP
00003287: PUSH2 0x3290
0000328a: DUP3
0000328b: DUP5
0000328c: PUSH2 0x2e6b
0000328f: JUMP
00003290: JUMPDEST
00003291: SWAP2
00003292: POP
00003293: DUP2
00003294: SWAP1
00003295: POP
00003296: SWAP14
00003297: SWAP13
00003298: POP
00003299: POP
0000329a: POP
0000329b: POP
0000329c: POP
0000329d: POP
0000329e: POP
0000329f: POP
000032a0: POP
000032a1: POP
000032a2: POP
000032a3: POP
000032a4: POP
000032a5: JUMP
000032a6: JUMPDEST
000032a7: PUSH32 0x4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578
000032c8: PUSH1 0x00
000032ca: DUP3
000032cb: ADD
000032cc: MSTORE
000032cd: PUSH32 0x697374656e7420746f6b656e0000000000000000000000000000000000000000
000032ee: PUSH1 0x20
000032f0: DUP3
000032f1: ADD
000032f2: MSTORE
000032f3: POP
000032f4: JUMP
000032f5: JUMPDEST
000032f6: PUSH1 0x00
000032f8: PUSH2 0x3302
000032fb: PUSH1 0x2c
000032fd: DUP4
000032fe: PUSH2 0x240a
00003301: JUMP
00003302: JUMPDEST
00003303: SWAP2
00003304: POP
00003305: PUSH2 0x330d
00003308: DUP3
00003309: PUSH2 0x32a6
0000330c: JUMP
0000330d: JUMPDEST
0000330e: PUSH1 0x40
00003310: DUP3
00003311: ADD
00003312: SWAP1
00003313: POP
00003314: SWAP2
00003315: SWAP1
00003316: POP
00003317: JUMP
00003318: JUMPDEST
00003319: PUSH1 0x00
0000331b: PUSH1 0x20
0000331d: DUP3
0000331e: ADD
0000331f: SWAP1
00003320: POP
00003321: DUP2
00003322: DUP2
00003323: SUB
00003324: PUSH1 0x00
00003326: DUP4
00003327: ADD
00003328: MSTORE
00003329: PUSH2 0x3331
0000332c: DUP2
0000332d: PUSH2 0x32f5
00003330: JUMP
00003331: JUMPDEST
00003332: SWAP1
00003333: POP
00003334: SWAP2
00003335: SWAP1
00003336: POP
00003337: JUMP
00003338: JUMPDEST
00003339: PUSH32 0x4552433732313a207472616e73666572206f6620746f6b656e20746861742069
0000335a: PUSH1 0x00
0000335c: DUP3
0000335d: ADD
0000335e: MSTORE
0000335f: PUSH32 0x73206e6f74206f776e0000000000000000000000000000000000000000000000
00003380: PUSH1 0x20
00003382: DUP3
00003383: ADD
00003384: MSTORE
00003385: POP
00003386: JUMP
00003387: JUMPDEST
00003388: PUSH1 0x00
0000338a: PUSH2 0x3394
0000338d: PUSH1 0x29
0000338f: DUP4
00003390: PUSH2 0x240a
00003393: JUMP
00003394: JUMPDEST
00003395: SWAP2
00003396: POP
00003397: PUSH2 0x339f
0000339a: DUP3
0000339b: PUSH2 0x3338
0000339e: JUMP
0000339f: JUMPDEST
000033a0: PUSH1 0x40
000033a2: DUP3
000033a3: ADD
000033a4: SWAP1
000033a5: POP
000033a6: SWAP2
000033a7: SWAP1
000033a8: POP
000033a9: JUMP
000033aa: JUMPDEST
000033ab: PUSH1 0x00
000033ad: PUSH1 0x20
000033af: DUP3
000033b0: ADD
000033b1: SWAP1
000033b2: POP
000033b3: DUP2
000033b4: DUP2
000033b5: SUB
000033b6: PUSH1 0x00
000033b8: DUP4
000033b9: ADD
000033ba: MSTORE
000033bb: PUSH2 0x33c3
000033be: DUP2
000033bf: PUSH2 0x3387
000033c2: JUMP
000033c3: JUMPDEST
000033c4: SWAP1
000033c5: POP
000033c6: SWAP2
000033c7: SWAP1
000033c8: POP
000033c9: JUMP
000033ca: JUMPDEST
000033cb: PUSH32 0x4552433732313a207472616e7366657220746f20746865207a65726f20616464
000033ec: PUSH1 0x00
000033ee: DUP3
000033ef: ADD
000033f0: MSTORE
000033f1: PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000
00003412: PUSH1 0x20
00003414: DUP3
00003415: ADD
00003416: MSTORE
00003417: POP
00003418: JUMP
00003419: JUMPDEST
0000341a: PUSH1 0x00
0000341c: PUSH2 0x3426
0000341f: PUSH1 0x24
00003421: DUP4
00003422: PUSH2 0x240a
00003425: JUMP
00003426: JUMPDEST
00003427: SWAP2
00003428: POP
00003429: PUSH2 0x3431
0000342c: DUP3
0000342d: PUSH2 0x33ca
00003430: JUMP
00003431: JUMPDEST
00003432: PUSH1 0x40
00003434: DUP3
00003435: ADD
00003436: SWAP1
00003437: POP
00003438: SWAP2
00003439: SWAP1
0000343a: POP
0000343b: JUMP
0000343c: JUMPDEST
0000343d: PUSH1 0x00
0000343f: PUSH1 0x20
00003441: DUP3
00003442: ADD
00003443: SWAP1
00003444: POP
00003445: DUP2
00003446: DUP2
00003447: SUB
00003448: PUSH1 0x00
0000344a: DUP4
0000344b: ADD
0000344c: MSTORE
0000344d: PUSH2 0x3455
00003450: DUP2
00003451: PUSH2 0x3419
00003454: JUMP
00003455: JUMPDEST
00003456: SWAP1
00003457: POP
00003458: SWAP2
00003459: SWAP1
0000345a: POP
0000345b: JUMP
0000345c: JUMPDEST
0000345d: PUSH1 0x00
0000345f: PUSH2 0x3467
00003462: DUP3
00003463: PUSH2 0x24ba
00003466: JUMP
00003467: JUMPDEST
00003468: SWAP2
00003469: POP
0000346a: PUSH2 0x3472
0000346d: DUP4
0000346e: PUSH2 0x24ba
00003471: JUMP
00003472: JUMPDEST
00003473: SWAP3
00003474: POP
00003475: DUP3
00003476: PUSH2 0x3482
00003479: JUMPI
0000347a: PUSH2 0x3481
0000347d: PUSH2 0x2d2b
00003480: JUMP
00003481: JUMPDEST
00003482: JUMPDEST
00003483: DUP3
00003484: DUP3
00003485: MOD
00003486: SWAP1
00003487: POP
00003488: SWAP3
00003489: SWAP2
0000348a: POP
0000348b: POP
0000348c: JUMP
0000348d: JUMPDEST
0000348e: PUSH32 0x4552433732313a207472616e7366657220746f206e6f6e204552433732315265
000034af: PUSH1 0x00
000034b1: DUP3
000034b2: ADD
000034b3: MSTORE
000034b4: PUSH32 0x63656976657220696d706c656d656e7465720000000000000000000000000000
000034d5: PUSH1 0x20
000034d7: DUP3
000034d8: ADD
000034d9: MSTORE
000034da: POP
000034db: JUMP
000034dc: JUMPDEST
000034dd: PUSH1 0x00
000034df: PUSH2 0x34e9
000034e2: PUSH1 0x32
000034e4: DUP4
000034e5: PUSH2 0x240a
000034e8: JUMP
000034e9: JUMPDEST
000034ea: SWAP2
000034eb: POP
000034ec: PUSH2 0x34f4
000034ef: DUP3
000034f0: PUSH2 0x348d
000034f3: JUMP
000034f4: JUMPDEST
000034f5: PUSH1 0x40
000034f7: DUP3
000034f8: ADD
000034f9: SWAP1
000034fa: POP
000034fb: SWAP2
000034fc: SWAP1
000034fd: POP
000034fe: JUMP
000034ff: JUMPDEST
00003500: PUSH1 0x00
00003502: PUSH1 0x20
00003504: DUP3
00003505: ADD
00003506: SWAP1
00003507: POP
00003508: DUP2
00003509: DUP2
0000350a: SUB
0000350b: PUSH1 0x00
0000350d: DUP4
0000350e: ADD
0000350f: MSTORE
00003510: PUSH2 0x3518
00003513: DUP2
00003514: PUSH2 0x34dc
00003517: JUMP
00003518: JUMPDEST
00003519: SWAP1
0000351a: POP
0000351b: SWAP2
0000351c: SWAP1
0000351d: POP
0000351e: JUMP
0000351f: JUMPDEST
00003520: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003541: PUSH1 0x00
00003543: MSTORE
00003544: PUSH1 0x31
00003546: PUSH1 0x04
00003548: MSTORE
00003549: PUSH1 0x24
0000354b: PUSH1 0x00
0000354d: REVERT
0000354e: JUMPDEST
0000354f: PUSH1 0x00
00003551: DUP2
00003552: MLOAD
00003553: SWAP1
00003554: POP
00003555: SWAP2
00003556: SWAP1
00003557: POP
00003558: JUMP
00003559: JUMPDEST
0000355a: PUSH1 0x00
0000355c: DUP3
0000355d: DUP3
0000355e: MSTORE
0000355f: PUSH1 0x20
00003561: DUP3
00003562: ADD
00003563: SWAP1
00003564: POP
00003565: SWAP3
00003566: SWAP2
00003567: POP
00003568: POP
00003569: JUMP
0000356a: JUMPDEST
0000356b: PUSH1 0x00
0000356d: PUSH2 0x3575
00003570: DUP3
00003571: PUSH2 0x354e
00003574: JUMP
00003575: JUMPDEST
00003576: PUSH2 0x357f
00003579: DUP2
0000357a: DUP6
0000357b: PUSH2 0x3559
0000357e: JUMP
0000357f: JUMPDEST
00003580: SWAP4
00003581: POP
00003582: PUSH2 0x358f
00003585: DUP2
00003586: DUP6
00003587: PUSH1 0x20
00003589: DUP7
0000358a: ADD
0000358b: PUSH2 0x241b
0000358e: JUMP
0000358f: JUMPDEST
00003590: PUSH2 0x3598
00003593: DUP2
00003594: PUSH2 0x244e
00003597: JUMP
00003598: JUMPDEST
00003599: DUP5
0000359a: ADD
0000359b: SWAP2
0000359c: POP
0000359d: POP
0000359e: SWAP3
0000359f: SWAP2
000035a0: POP
000035a1: POP
000035a2: JUMP
000035a3: JUMPDEST
000035a4: PUSH1 0x00
000035a6: PUSH1 0x80
000035a8: DUP3
000035a9: ADD
000035aa: SWAP1
000035ab: POP
000035ac: PUSH2 0x35b8
000035af: PUSH1 0x00
000035b1: DUP4
000035b2: ADD
000035b3: DUP8
000035b4: PUSH2 0x254f
000035b7: JUMP
000035b8: JUMPDEST
000035b9: PUSH2 0x35c5
000035bc: PUSH1 0x20
000035be: DUP4
000035bf: ADD
000035c0: DUP7
000035c1: PUSH2 0x254f
000035c4: JUMP
000035c5: JUMPDEST
000035c6: PUSH2 0x35d2
000035c9: PUSH1 0x40
000035cb: DUP4
000035cc: ADD
000035cd: DUP6
000035ce: PUSH2 0x25e5
000035d1: JUMP
000035d2: JUMPDEST
000035d3: DUP2
000035d4: DUP2
000035d5: SUB
000035d6: PUSH1 0x60
000035d8: DUP4
000035d9: ADD
000035da: MSTORE
000035db: PUSH2 0x35e4
000035de: DUP2
000035df: DUP5
000035e0: PUSH2 0x356a
000035e3: JUMP
000035e4: JUMPDEST
000035e5: SWAP1
000035e6: POP
000035e7: SWAP6
000035e8: SWAP5
000035e9: POP
000035ea: POP
000035eb: POP
000035ec: POP
000035ed: POP
000035ee: JUMP
000035ef: JUMPDEST
000035f0: PUSH1 0x00
000035f2: DUP2
000035f3: MLOAD
000035f4: SWAP1
000035f5: POP
000035f6: PUSH2 0x35fe
000035f9: DUP2
000035fa: PUSH2 0x2370
000035fd: JUMP
000035fe: JUMPDEST
000035ff: SWAP3
00003600: SWAP2
00003601: POP
00003602: POP
00003603: JUMP
00003604: JUMPDEST
00003605: PUSH1 0x00
00003607: PUSH1 0x20
00003609: DUP3
0000360a: DUP5
0000360b: SUB
0000360c: SLT
0000360d: ISZERO
0000360e: PUSH2 0x361a
00003611: JUMPI
00003612: PUSH2 0x3619
00003615: PUSH2 0x233a
00003618: JUMP
00003619: JUMPDEST
0000361a: JUMPDEST
0000361b: PUSH1 0x00
0000361d: PUSH2 0x3628
00003620: DUP5
00003621: DUP3
00003622: DUP6
00003623: ADD
00003624: PUSH2 0x35ef
00003627: JUMP
00003628: JUMPDEST
00003629: SWAP2
0000362a: POP
0000362b: POP
0000362c: SWAP3
0000362d: SWAP2
0000362e: POP
0000362f: POP
00003630: JUMP
00003631: JUMPDEST
00003632: PUSH32 0x4552433732313a206d696e7420746f20746865207a65726f2061646472657373
00003653: PUSH1 0x00
00003655: DUP3
00003656: ADD
00003657: MSTORE
00003658: POP
00003659: JUMP
0000365a: JUMPDEST
0000365b: PUSH1 0x00
0000365d: PUSH2 0x3667
00003660: PUSH1 0x20
00003662: DUP4
00003663: PUSH2 0x240a
00003666: JUMP
00003667: JUMPDEST
00003668: SWAP2
00003669: POP
0000366a: PUSH2 0x3672
0000366d: DUP3
0000366e: PUSH2 0x3631
00003671: JUMP
00003672: JUMPDEST
00003673: PUSH1 0x20
00003675: DUP3
00003676: ADD
00003677: SWAP1
00003678: POP
00003679: SWAP2
0000367a: SWAP1
0000367b: POP
0000367c: JUMP
0000367d: JUMPDEST
0000367e: PUSH1 0x00
00003680: PUSH1 0x20
00003682: DUP3
00003683: ADD
00003684: SWAP1
00003685: POP
00003686: DUP2
00003687: DUP2
00003688: SUB
00003689: PUSH1 0x00
0000368b: DUP4
0000368c: ADD
0000368d: MSTORE
0000368e: PUSH2 0x3696
00003691: DUP2
00003692: PUSH2 0x365a
00003695: JUMP
00003696: JUMPDEST
00003697: SWAP1
00003698: POP
00003699: SWAP2
0000369a: SWAP1
0000369b: POP
0000369c: JUMP
0000369d: JUMPDEST
0000369e: PUSH32 0x4552433732313a20746f6b656e20616c7265616479206d696e74656400000000
000036bf: PUSH1 0x00
000036c1: DUP3
000036c2: ADD
000036c3: MSTORE
000036c4: POP
000036c5: JUMP
000036c6: JUMPDEST
000036c7: PUSH1 0x00
000036c9: PUSH2 0x36d3
000036cc: PUSH1 0x1c
000036ce: DUP4
000036cf: PUSH2 0x240a
000036d2: JUMP
000036d3: JUMPDEST
000036d4: SWAP2
000036d5: POP
000036d6: PUSH2 0x36de
000036d9: DUP3
000036da: PUSH2 0x369d
000036dd: JUMP
000036de: JUMPDEST
000036df: PUSH1 0x20
000036e1: DUP3
000036e2: ADD
000036e3: SWAP1
000036e4: POP
000036e5: SWAP2
000036e6: SWAP1
000036e7: POP
000036e8: JUMP
000036e9: JUMPDEST
000036ea: PUSH1 0x00
000036ec: PUSH1 0x20
000036ee: DUP3
000036ef: ADD
000036f0: SWAP1
000036f1: POP
000036f2: DUP2
000036f3: DUP2
000036f4: SUB
000036f5: PUSH1 0x00
000036f7: DUP4
000036f8: ADD
000036f9: MSTORE
000036fa: PUSH2 0x3702
000036fd: DUP2
000036fe: PUSH2 0x36c6
00003701: JUMP
00003702: JUMPDEST
00003703: SWAP1
00003704: POP
00003705: SWAP2
00003706: SWAP1
00003707: POP
00003708: JUMP
00003709: INVALID
0000370a: LOG2
0000370b: PUSH5 0x6970667358
00003711: UNKNOWN(0x22)
00003712: SLT
00003713: KECCAK256
00003714: CALLER
00003715: SUB
00003716: UNKNOWN(0xCE)
00003717: INVALID
00003718: UNKNOWN(0xE8)
00003719: UNKNOWN(0xCB)
0000371a: SWAP1
0000371b: UNKNOWN(0xCD)
0000371c: ADDMOD
0000371d: CALLER
0000371e: UNKNOWN(0xAB)
0000371f: UNKNOWN(0xDA)
00003720: ADDMOD
00003721: UNKNOWN(0xD9)
00003722: PUSH32

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5
call_targets: 0x503052972547189fcf3e30d96b3457b0a70856a9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x503052972547189fcf3e30d96b3457b0a70856a9"
    ],
    "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": "0x95d89b41",
            "selector": "0x95d89b41",
            "calldata_variants": [
                "0x95d89b41",
                "0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa22cb465",
            "selector": "0xa22cb465",
            "calldata_variants": [
                "0xa22cb465",
                "0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xab00492f",
            "selector": "0xab00492f",
            "calldata_variants": [
                "0xab00492f",
                "0xab00492f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb88d4fde",
            "selector": "0xb88d4fde",
            "calldata_variants": [
                "0xb88d4fde",
                "0xb88d4fde0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc87b56dd",
            "selector": "0xc87b56dd",
            "calldata_variants": [
                "0xc87b56dd",
                "0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe985e9c5",
            "selector": "0xe985e9c5",
            "calldata_variants": [
                "0xe985e9c5",
                "0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6352211e",
            "selector": "0x6352211e",
            "calldata_variants": [
                "0x6352211e",
                "0x6352211e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6a2a0696",
            "selector": "0x6a2a0696",
            "calldata_variants": [
                "0x6a2a0696",
                "0x6a2a06960000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 8007,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [],
    "untrusted_call_count": 1
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5
call_targets: 0x503052972547189fcf3e30d96b3457b0a70856a9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x503052972547189fcf3e30d96b3457b0a70856a9"
    ],
    "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": "0x95d89b41",
            "selector": "0x95d89b41",
            "calldata_variants": [
                "0x95d89b41",
                "0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa22cb465",
            "selector": "0xa22cb465",
            "calldata_variants": [
                "0xa22cb465",
                "0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xab00492f",
            "selector": "0xab00492f",
            "calldata_variants": [
                "0xab00492f",
                "0xab00492f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb88d4fde",
            "selector": "0xb88d4fde",
            "calldata_variants": [
                "0xb88d4fde",
                "0xb88d4fde0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc87b56dd",
            "selector": "0xc87b56dd",
            "calldata_variants": [
                "0xc87b56dd",
                "0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe985e9c5",
            "selector": "0xe985e9c5",
            "calldata_variants": [
                "0xe985e9c5",
                "0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6352211e",
            "selector": "0x6352211e",
            "calldata_variants": [
                "0x6352211e",
                "0x6352211e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6a2a0696",
            "selector": "0x6a2a0696",
            "calldata_variants": [
                "0x6a2a0696",
                "0x6a2a06960000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 8007,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}