{"assessments":[],"deployments":[{"attestationHash":"3ddf8653dd7c68313202b0593bb6d63446f40a843eec79baf3ff0359ca586a3c","chainId":1,"contracts":[{"address":"0x613e06013439107c59c0263bf90d868d74a84d5d","blockNumber":26343060,"name":"MerkleDistributor","role":"distributor","txHash":"0xe03e7ba00711b498e442d4382f14f0bb79cb559899bb50d56ad781141c5ba457"},{"address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","blockNumber":26343060,"name":"PoolInitializationGuard","role":"hook","txHash":"0xe03e7ba00711b498e442d4382f14f0bb79cb559899bb50d56ad781141c5ba457"},{"address":"0x1fbf644110efe76184f9fd81cead18adef5e9420","blockNumber":26343060,"name":"Conditionals","role":"token","txHash":"0xe03e7ba00711b498e442d4382f14f0bb79cb559899bb50d56ad781141c5ba457"}],"id":"bee25289-1960-476f-a21a-eef0759db6b2","manifestHash":"7a29f12c650035bf513f8b2b16233d3a7031831adc20f86a61aba271ac3e0ad6","status":"live"}],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"730bfe3c-d982-4b53-a17e-1197304ce365","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"994e42e64117aee1f8a6a573d97c8f666678e07f25f0bf0e9da0857fdd60bd10","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"82a32061438c235666ecc3d01fed3275c4d047faf90de3303de95fe9e3858d69","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"6fe76d25ac3f8eccde91ebce19a38a8724e50a96c7a2d063f1baafc36c4c6b2a","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","subagents":4,"tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"3b8e22ea69a15cdf4282efaad52283a632c08f47b2bcbd82aa634601eb16a712","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"59a514c3eb8cbc459525f01fd56a0121e4bff8152be15c99cb38bab88cd68b97","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"4d5e9d9f7a01793bae1f86394845fd356508ff1e67ec3d29c6f358cfd56a3327","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"e7aba3886f178950e12d1ad9533fa7e3f21dd3b9f5bef5b0fd1dd63314abd291","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"77e1d9e6dc64f8639f2f2d95889a0070c582806581754ef96e8fc3cb23494a03","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: Conditionals (COND).\nToken name: Conditionals\nToken symbol: COND\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"4d900adfe9ef2614904386d7e92b8929749e12670623d1c293ca1e19a19322ab","previousHash":"652f602037f867dd1bc3a61363d944d5e4fce07732b7f302ce061b2680d20892","projectId":"730bfe3c-d982-4b53-a17e-1197304ce365","publication":{"commit":"e316fb40e6a64124621bd68e742aa0715adfba4d","deliveredAt":"2026-11-04T17:50:20.351Z","repoUrl":"https://github.com/identity-md-launches/launch-2978-conditionals"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"db059cac344a59f3d53d503ee2af0eaeba162621e80bd79eb87e0d2d139adc85","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"764cd99b4c628a47","findings":[],"hash":"3b8e22ea69a15cdf4282efaad52283a632c08f47b2bcbd82aa634601eb16a712","nodeId":"b1b89505-9ba7-4dda-b652-4d2abc74622f","outcome":"completed","summary":"The review is complete. The findings file is written and the tree is otherwise unchanged.\n\n**Result: no defects in the math, boundary or numerical-gap area.** The findings list is empty and all three entry points are marked as holding, with seven coverage rows in `.imd-findings.json`.\n\nWhat I checked:\n\n- **Source integrity.** The token is a 13-line wrapper over OpenZeppelin ERC20. The vendored ERC20 and Context files hash identically to the upstream v5.1.0 tag, so the arithmetic reviewed is the audited upstream code.\n- **Math Precision.** The token has no division, no downcast, no scale conversion and no unchecked block of its own. The supply constant evaluates at compile time to exactly 10^27, which I asserted against the plain decimal literal. The aderyn large-literal lead is cosmetic.\n- **Boundary.** Transfer at exactly the balance passes, balance plus one and max-uint revert with the ERC-6093 error. An allowance of max-uint is infinite, while max-uint minus one is finite and consumed exactly. Both zero-address arms of the internal update function are unreachable from the public entry points, so mint and burn cannot be triggered after construction. There are no external calls, payable paths or bytes decoding.\n- **Numerical Gap.** Conservation of supply holds exactly under any sequence, including self-transfers through an allowance, since every state change is an exact add or subtract of the same value. The project invariant suite and my own fuzz probe both confirmed it.\n\nThe existing suite passes with 33 tests. My scratch probes in test/scratch passed 8 of 8 after I fixed a prank-ordering mistake in my own test, and I deleted them since no finding carries a proof. Nothing outside the assigned area turned up as severe, so no out-of-area finding was reported.","treeHash":null,"usage":{"cachedInputTokens":476832,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":12077,"runtime":"claude","turns":24,"wallClockMs":176439}},{"artifacts":[],"attempt":1,"bundleHash":"25998329db2fa58272d5f6ea3ca0554b66aa2856bbd448515f65813e2431781b","device":"165e283901cb9619","findings":[],"hash":"4d5e9d9f7a01793bae1f86394845fd356508ff1e67ec3d29c6f358cfd56a3327","nodeId":"d86cf9c4-9c65-462f-aeb8-a9cbf8f9e9ef","outcome":"completed","summary":"Implemented Conditionals (COND): 1 billion tokens, 18 decimals, minted once to the deployer, with no administrative controls. Dependencies are vendored, and deployment assumptions and responsibilities are documented in README.md.\n\nVerified:\n- `forge build`\n- `forge test`: 33 passed using the supplied fuzz seed\n- `forge fmt --check`","treeHash":"b39c786885aeb80acefe601aa5e543763fb08b07","usage":{"cachedInputTokens":502016,"inputTokens":45455,"model":"gpt-6-astra","outputTokens":14643,"runtime":"codex","turns":5,"wallClockMs":478041}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a0f92fec784312b7","findings":[],"hash":"59a514c3eb8cbc459525f01fd56a0121e4bff8152be15c99cb38bab88cd68b97","nodeId":"fbadc4b3-9baf-476e-a408-51103deb0b63","outcome":"completed","summary":"Review complete. The findings file is written with no defects and a full coverage record.\n\n**Outcome:** the Conditionals token has no permission defect in the Access Control, Trust Gap or Asymmetry areas. The contract at `src/Conditionals.sol` is a 16-line subclass of the vendored OpenZeppelin v5.1.0 ERC-20. It adds only a constant and a constructor that mints the whole supply once to the deployer.\n\nWhat I checked, against each guide:\n\n- **Access Control.** The only state-changing entry points are approve, transfer and transferFrom. Each is scoped to the caller through Context's plain `msg.sender`, which is not overridden and has no meta-transaction forwarder. There is no owner, role, initializer, proxy, pause, blacklist, freeze, seize, burnFrom, receive or fallback. The mint and burn helpers are internal and unreachable after construction, so supply cannot grow and no privileged hand can move or freeze a holder's balance. The deployer gets no bypass: a factory calling transferFrom on a holder without approval reverts with an insufficient-allowance error.\n- **Trust Gap.** No privileged actor, setter, fee, price or recipient exists, so no access-times-economics or access-times-asymmetry seam is reachable.\n- **Asymmetry.** transfer and transferFrom share the same balance-update path and differ only by the allowance check. The missing Approval event on allowance consumption is standard OpenZeppelin v5 behaviour and is disclosed in the README. Zero-value transferFrom without allowance succeeds and emits a zero Transfer, which is standard and intentionally tested by the author, so I did not report it.\n- **Launch floor.** Supply is exactly 10^27 minted to the factory, decimals are 18, the contract name is 12 characters, the constructor takes no arguments, and the vendored library files match upstream line for line. The aderyn large-literal lead evaluates to the correct supply and is not a defect.\n\n**Limitation to note.** The bash sandbox failed to initialize on every attempt, so I could not run forge build, the existing unit, fuzz and invariant suite, the opcode-scan tests, or the SHA-256 check of the vendored files against the lock file. Every verdict rests on reading the source in full. That is recorded as an explicit unreached row in the coverage record so the judge can weigh it. No scratch tests were written because no critical or high finding was substantiated.","treeHash":null,"usage":{"cachedInputTokens":831442,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":11531,"runtime":"claude","turns":34,"wallClockMs":181105}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"74a99f640688d37b","findings":[],"hash":"6fe76d25ac3f8eccde91ebce19a38a8724e50a96c7a2d063f1baafc36c4c6b2a","nodeId":"9171f9b5-d3a6-4b31-8e75-86ed922372fb","outcome":"completed","summary":"The review is written to `.imd-findings.json` with no findings and a full coverage record.\n\n**Outcome.** The Conditionals token is a bare OpenZeppelin v5.1.0 ERC-20 with a parameterless constructor that mints the fixed supply to msg.sender. No specialist or the independent tester reported a finding, so there was nothing to reproduce or merge. My own pass over the three entry points, the constructor, the bytecode constraints and the manifest found no defect.\n\n**Coverage, all traced by reading the source:**\n- `approve` only writes the caller's own allowance, rejects a zero spender and returns true.\n- `transfer` moves the exact amount with no fee, burn or exemption, rejects a zero recipient and reverts on insufficient balance.\n- `transferFrom` consumes finite allowances, leaves the max sentinel alone, and reverts atomically so a failed transfer restores the allowance. The deployer has no special path.\n- The constructor mints exactly one billion tokens with 18 decimals, matching the manifest's supply, decimals and empty constructor arguments. There is no mint, burn, owner, pause, blacklist, fallback, receive, assembly, DELEGATECALL or SELFDESTRUCT anywhere in the contract or its vendored dependencies.\n- The manifest uses only schema keys with correct types, lowercase addresses, and a valid contract name.\n\n**One limitation to flag.** The Bash sandbox failed to initialize on every attempt in this session, so I could not run forge build or the test suite. Every verdict rests on reading the code, not on executing it. The verdict file records this. Given that the token adds no logic of its own on top of a pinned library, tracing is sufficient here, but the verifier's own run remains the executed confirmation.\n\nThe aderyn low about a large numeric literal is the intentional supply constant and is not a defect. The ERC-20 approve race is a standard property, documented in the README, and not a defect of this token.","treeHash":null,"usage":{"cachedInputTokens":378768,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":6424,"runtime":"claude","turns":25,"wallClockMs":115254}},{"artifacts":[],"attempt":1,"bundleHash":"ab6310d13d0b0e8e47434e30a82bfa86b597b8c23937e32bfa1b1291bfe24a85","device":"264c3bd81028b74a","findings":[],"hash":"77e1d9e6dc64f8639f2f2d95889a0070c582806581754ef96e8fc3cb23494a03","nodeId":"48bb4e43-7825-4a6d-bcd8-1faf46e7a070","outcome":"completed","summary":"Added 17 tests and expanded invariants to eleven randomized actions covering failure paths, allowance boundaries, rollback, and supply conservation.\n\n`forge build` and all 50 tests pass with the required seed, including 16,384 invariant calls. No defects reproduced. Changes are confined to `test/`.","treeHash":"cb845ff551064ab9e9773d8f5b6f0040a4e767b8","usage":{"cachedInputTokens":607872,"inputTokens":69641,"model":"gpt-6-astra","outputTokens":13401,"runtime":"codex","turns":6,"wallClockMs":452524}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a31e321b410aaa02","findings":[],"hash":"82a32061438c235666ecc3d01fed3275c4d047faf90de3303de95fe9e3858d69","nodeId":"f2dd008d-a4b8-4128-9bf1-611230982b48","outcome":"completed","summary":"Review complete. The findings file at `.imd-findings.json` holds an empty findings list and eight coverage rows, all `holds`.\n\n**What was reviewed.** The token is a 16-line contract that inherits the vendored OpenZeppelin v5.1.0 ERC20 and mints the full supply once to `msg.sender` in the constructor. It adds no overrides, no owner, no callbacks, no receive or fallback. I made the three control-flow passes against it and the inherited code:\n\n- **Execution Trace.** Traced approve, transfer and transferFrom from entry to final storage write. Zero-address sender, receiver and spender all revert before any state change. Debit and credit use the same value, so nothing leaks. The allowance decrement in transferFrom happens before the transfer, but any later revert unwinds it atomically. Self-transfer re-reads storage and leaves the balance unchanged. The mint and burn branches of the internal update function are unreachable after deployment.\n- **Periphery.** Read the five vendored OpenZeppelin files line by line against upstream v5.1.0. Logic, events, custom errors and selectors are unmodified.\n- **First Principles.** The constructor mints exactly 10^27 units, matching the manifest supply, to the immediate deployer, which is the factory under launchCustom. Decimals are the inherited 18. No path can grow supply. The protected floor's admin-selector probes hit no function and revert. Launch flows to the distributor, pool manager and traders move exact amounts with no exemptions needed.\n\n**What I could not do.** The Bash sandbox failed to initialise on every attempt in this session, so I could not run `forge build`, `forge test`, or recompute the SHA-256 values in `dependencies.lock.json`. Every conclusion above rests on reading the source, not on execution. The coverage rows say so where it matters.\n\n**Notes, not defects.** The standard ERC-20 approve replacement race and the non-decrementing infinite allowance are inherited OpenZeppelin behaviour and are documented in the README. Aderyn's large-numeric-literal lead is a style note on the supply constant, which is a compile-time checked expression equal to the manifest supply.","treeHash":null,"usage":{"cachedInputTokens":641008,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":10718,"runtime":"claude","turns":34,"wallClockMs":205125}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"93678b4d542094a9","findings":[],"hash":"96a601ca013d73dd2d6f31b86d941b8539b2d947762f1e4deb0dc8a8e04b5c72","nodeId":"d86cf9c4-9c65-462f-aeb8-a9cbf8f9e9ef","outcome":"failed","summary":"Selected model is at capacity. Please try a different model.","treeHash":null,"usage":{"cachedInputTokens":165248,"inputTokens":42166,"model":"gpt-6-astra","outputTokens":8264,"runtime":"codex","turns":2,"wallClockMs":205078}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"234a4a00ca903cb9","findings":[],"hash":"994e42e64117aee1f8a6a573d97c8f666678e07f25f0bf0e9da0857fdd60bd10","nodeId":"360e5da2-7b0a-489d-9330-589ba2dda8e5","outcome":"completed","summary":"## Economics audit of Conditionals (COND): no defects found, but no tests were run\n\nI found no defects by reading the code, and `.imd-findings.json` has an empty findings list. Nothing was executed, because every Bash call failed with `Sandbox is required but failed to initialize: Failed to create bridge sockets`. That sandbox setting is yours to change.\n\n**The code reviewed:** `src/Conditionals.sol` is a 16-line contract on top of OpenZeppelin (OZ) 5.1.0's ERC-20, with no overrides. Its constructor mints 10^27 units to `msg.sender` once. I read the vendored `ERC20.sol` and `Context.sol` in full, and the code behaves as OZ's ERC-20 should.\n\n### Coverage by guide\n\n| Guide | Checked | Result |\n|---|---|---|\n| **Economic Security** | Dependencies, token misbehaviour, atomic extraction, ERC-20 compliance, sentinel addresses, shared caps, features used against the token | The token has no external calls, oracles, fees, rebasing, hooks or caps. `address(0)` is rejected as recipient and spender. There is nothing to extract value from. |\n| **Invariant** | Conservation, state couplings, supply bounds, view against write, timers, emergency modes | The only `_mint` call is in the constructor and nothing calls `_burn`. `_update` moves equal amounts, and a failed `transferFrom` reverts the allowance spend too. The token has no timers or modes. |\n| **Flow Gap** | The four seams, and the flows to the distributor, the pool seed and swaps | Each transfer moves exactly the stated amount, with no callback partway through. The token never calls out, so I found no seam to exploit. |\n\n### Leads I checked and left out\n- **Aderyn's large numeric literal (line 10):** the value is correct at 10^27, so this is only style.\n- **Zero-value `transferFrom`:** anyone can emit `Transfer(victim, x, 0)` without an allowance, which can be used for address poisoning. No value moves, and ERC-20 requires zero transfers to be treated as normal.\n- **`approve` replacement race:** this is standard ERC-20 behaviour and the README already documents it.\n- **No `Approval` event on allowance spend:** ERC-20 doesn't require it, and the README documents it.\n\n### Not verified\n- **Test suites:** the project's unit, fuzz and invariant tests didn't run, and no scratch tests were compiled. The `holds` rows rest on reading the code, and each one says so.\n- **Protected tests:** they import `v4-core`, `LaunchLiquidity`, `PoolInitializationGuard`, `HookFlags` and `OwnerChecks`, none of which are in this tree, so they couldn't run here anyway.\n- **Live launch path:** the actual v4 seed and swaps, the factory and deployer price derivation are marked `unreached`. Nothing in the token should block them, but that is reasoning, not a test.\n- **`launch.json`:** it doesn't exist yet, which is expected this early, so there was no manifest to check.\n- **Dependency hashes:** I didn't check the vendored files against `dependencies.lock.json`, which needs a shell. The match to OZ 5.1.0 is from reading `ERC20.sol` and comparing it with what I know of that release, not from a byte comparison. I read only the first 30 lines of `IERC20.sol` and didn't open the other two OZ interface files.\n\nThe three listed entry points each have a row. Five more rows cover the invariants and economics I checked, including the `unreached` one. No helpers were used; I made all three passes myself. The empty findings list is not proof the code is defect-free, so I recommend running `forge test` and the lockfile hash check once the sandbox works.","treeHash":null,"usage":{"cachedInputTokens":372561,"inputTokens":13,"model":"claude-opus-5-5","outputTokens":8485,"runtime":"claude","turns":32,"wallClockMs":92161}},{"artifacts":[],"attempt":1,"bundleHash":"0376d86f89bbc4113b45cc9dd9598e2090995787b2a1b1fe07da12d25b60f3d9","device":"1c0fa8d0cf677236","findings":[],"hash":"e7aba3886f178950e12d1ad9533fa7e3f21dd3b9f5bef5b0fd1dd63314abd291","nodeId":"64f86029-e0d6-4399-bfcf-c8e6cc7c1e69","outcome":"completed","summary":"Created `launch.json` matching the accepted `Conditionals` contract, exact supply, empty constructor arguments, and required pool/economics values.\n\n`forge build` passed. All 33 tests passed with the supplied fuzz seed. Manifest checks passed; only `launch.json` is changed for submission.","treeHash":"16269da3b686d2a4bbca3e501f686f635f69e59c","usage":{"cachedInputTokens":166528,"inputTokens":32899,"model":"gpt-6-astra","outputTokens":2314,"runtime":"codex","turns":3,"wallClockMs":102782}}],"verification":[{"checks":[{"durationMs":1301,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.21s\nCompiler run successful!\n","passed":true},{"durationMs":1902,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/LaunchFlow.t.sol:LaunchFlowTest\n[PASS] test_Create2MintsWholeSupplyToImmediateFactory() (gas: 57712)\n[PASS] test_DistributionClaimsAndTradingTransfersArriveWhole() (gas: 449116)\n[PASS] test_DuplicateCreate2DeploymentRevertsWithoutChangingSupply() (gas: 56090)\n[PASS] test_RuntimeHasNoForbiddenReachableOpcodes() (gas: 2472741)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 28.60ms (6.46ms CPU time)\n\nRan 28 tests for test/Conditionals.t.sol:ConditionalsTest\n[PASS] testFuzz_DelegatedTransferAccounting(uint256,uint256) (runs: 1000, μ: 164612, ~: 165589)\nLogs:\n  Bound result 96\n  Bound result 100000000000000000000\n\n[PASS] testFuzz_InsufficientAllowanceReverts(uint256,uint256) (runs: 1000, μ: 123226, ~: 123726)\nLogs:\n  Bound result 22480\n  Bound result 999999999999999999999992996\n\n[PASS] testFuzz_OverdrawnTransferReverts(uint256) (runs: 1000, μ: 69066, ~: 69415)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1000, μ: 93007, ~: 93165)\nLogs:\n  Bound result 710738198216170407790391752\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 186796)\n[PASS] test_ApproveEmitsAndOnlyChangesCallersAllowance() (gas: 119097)\n[PASS] test_ApproveRejectsZeroSpender() (gas: 37573)\n[PASS] test_ConstructorEmitsExactlyOneMintToDeployer() (gas: 34778)\n[PASS] test_DeployerCannotSpendAnotherHoldersTokensWithoutApproval() (gas: 158254)\n[PASS] test_InfiniteAllowanceIsNotDecreased() (gas: 139603)\n[PASS] test_MetadataAndInitialSupply() (gas: 107671)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 1968371)\n[PASS] test_RejectsNativeEtherAndUnknownCalls() (gas: 64644)\n[PASS] test_SelfTransferDoesNotChangeBalance() (gas: 51507)\n[PASS] test_SelfTransferFromConsumesAllowanceWithoutChangingBalance() (gas: 115930)\n[PASS] test_SelfTransferStillRequiresSufficientBalance() (gas: 42887)\n[PASS] test_TransferEntireSupply() (gas: 84019)\n[PASS] test_TransferFromBalanceFailureRestoresAllowance() (gas: 179158)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 275297)\n[PASS] test_TransferFromRejectsInsufficientAllowanceAtomically() (gas: 116102)\n[PASS] test_TransferFromRejectsUnapprovedSpender() (gas: 118167)\n[PASS] test_TransferFromZeroRecipientRestoresAllowance() (gas: 114632)\n[PASS] test_TransferRejectsInsufficientBalanceWithoutChangingState() (gas: 120412)\n[PASS] test_TransferRejectsZeroRecipientEvenForZeroAmount() (gas: 71949)\n[PASS] test_TransferReturnsTrueAndEmitsExactAmount() (gas: 93506)\n[PASS] test_ZeroTransferFromEmptyAccountSucceedsAndEmits() (gas: 73321)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 81412)\n[PASS] test_ZeroTransferFromStillRejectsZeroAddresses() (gas: 64836)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 29.64ms (113.73ms CPU time)\n\nRan 1 test for test/Conditionals.invariant.t.sol:ConditionalsInvariantTest\n[PASS] invariant_SupplyBalancesAndAllowancesMatchModel() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 1991  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | overdraw     | 2085  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2014  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2102  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 117300738\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5015\n  Bound result 0\n  Bound result 93\n  Bound result 0\n  Bound result 3\n  Bound result 46\n  Bound result 0\n  Bound result 16\n  Bound result 0\n  Bound result 86\n  Bound result 8\n  Bound result 0\n  Bound result 11\n  Bound result 70\n  Bound result 1\n  Bound result 789\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1725540768\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.79s (1.79s CPU time)\n\nRan 3 test suites in 1.79s (1.85s CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":39,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Conditionals.approve(address,uint256)\",\"Conditionals.transfer(address,uint256)\",\"Conditionals.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":106,\"dependencies.lock.json\":56,\"foundry.toml\":21,\"remappings.txt\":2,\"src/Conditionals.sol\":16,\"test/Conditionals.invariant.t.sol\":106,\"test/Conditionals.t.sol\":353,\"test/LaunchFlow.t.sol\":125},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":643,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":336,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/Conditionals.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"4d5e9d9f7a01793bae1f86394845fd356508ff1e67ec3d29c6f358cfd56a3327","verifiedTreeHash":"b39c786885aeb80acefe601aa5e543763fb08b07","verifierVersion":"0.1.0+48c1bcfc"},{"checks":[{"durationMs":1622,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.52s\nCompiler run successful!\n","passed":true},{"durationMs":3848,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/LaunchFlow.t.sol:LaunchFlowTest\n[PASS] test_Create2MintsWholeSupplyToImmediateFactory() (gas: 57712)\n[PASS] test_DistributionClaimsAndTradingTransfersArriveWhole() (gas: 449116)\n[PASS] test_DuplicateCreate2DeploymentRevertsWithoutChangingSupply() (gas: 56090)\n[PASS] test_RuntimeHasNoForbiddenReachableOpcodes() (gas: 2472741)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 68.42ms (11.12ms CPU time)\n\nRan 17 tests for test/ConditionalsProperties.t.sol:ConditionalsPropertiesTest\n[PASS] testFuzz_AllowanceChangesAreIsolatedByOwnerAndSpender(uint256,uint256) (runs: 1000, μ: 365835, ~: 366756)\nLogs:\n  Bound result 91\n  Bound result 100000000000000000000\n\n[PASS] testFuzz_BalanceFailurePreservesApproval(uint256,uint256,bool,bool) (runs: 1000, μ: 205167, ~: 205297)\nLogs:\n  Bound result 3\n  Bound result 14524340035041831\n\n[PASS] testFuzz_DelegatedRoundTripConsumesBothApprovals(uint256) (runs: 1000, μ: 292744, ~: 293291)\nLogs:\n  Bound result 1000000000000000000000000000\n\n[PASS] testFuzz_DirectRoundTripRestoresBalances(uint256) (runs: 1000, μ: 148784, ~: 148636)\nLogs:\n  Bound result 123000000000000000000\n\n[PASS] testFuzz_InvalidRecipientPreservesApproval(uint256,bool) (runs: 1000, μ: 127207, ~: 126479)\nLogs:\n  Bound result 11\n\n[PASS] testFuzz_RepeatedSpendsCannotExceedCumulativeApproval(uint256,uint256) (runs: 1000, μ: 272515, ~: 275252)\nLogs:\n  Bound result 17\n  Bound result 2\n\n[PASS] testFuzz_SplitTransfersEqualOneTransfer(uint256,uint256) (runs: 1000, μ: 227472, ~: 229146)\nLogs:\n  Bound result 596827002478999247441893043\n  Bound result 5704788186417025789849621\n\n[PASS] test_ApprovalBeforeFundingSurvivesFailedSpend() (gas: 256533)\n[PASS] test_ApprovalsDoNotFollowTokensToANewHolder() (gas: 181600)\n[PASS] test_DelegatedSelfTransferStillNeedsBalanceAndRestoresAllowance() (gas: 174813)\n[PASS] test_DirectRoundTripAtZeroOneWeiAndFullSupply() (gas: 562012)\n[PASS] test_MaximumAmountCannotOverflowDirectOrDelegatedBalances() (gas: 156652)\n[PASS] test_MaximumMinusOneAllowanceIsFinite() (gas: 147946)\n[PASS] test_OwnerTransferFromRequiresExplicitSelfApproval() (gas: 221106)\n[PASS] test_UnlimitedApprovalCanBeReducedThenRevoked() (gas: 366847)\n[PASS] test_ZeroDelegatedTransfersPreserveFiniteAndInfiniteApproval() (gas: 249330)\n[PASS] test_ZeroSpenderApprovalRejectsAllBoundaryAmounts() (gas: 256315)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 95.07ms (627.90ms CPU time)\n\nRan 28 tests for test/Conditionals.t.sol:ConditionalsTest\n[PASS] testFuzz_DelegatedTransferAccounting(uint256,uint256) (runs: 1000, μ: 164671, ~: 165589)\nLogs:\n  Bound result 91\n  Bound result 100000000000000000000\n\n[PASS] testFuzz_InsufficientAllowanceReverts(uint256,uint256) (runs: 1000, μ: 123257, ~: 123727)\nLogs:\n  Bound result 100000000000000000000\n  Bound result 999999900000000000000000091\n\n[PASS] testFuzz_OverdrawnTransferReverts(uint256) (runs: 1000, μ: 69062, ~: 69415)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039580584007913129639935\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1000, μ: 93012, ~: 93165)\nLogs:\n  Bound result 1000000000000000000000000000\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 186796)\n[PASS] test_ApproveEmitsAndOnlyChangesCallersAllowance() (gas: 119097)\n[PASS] test_ApproveRejectsZeroSpender() (gas: 37573)\n[PASS] test_ConstructorEmitsExactlyOneMintToDeployer() (gas: 34778)\n[PASS] test_DeployerCannotSpendAnotherHoldersTokensWithoutApproval() (gas: 158254)\n[PASS] test_InfiniteAllowanceIsNotDecreased() (gas: 139603)\n[PASS] test_MetadataAndInitialSupply() (gas: 107671)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 1968371)\n[PASS] test_RejectsNativeEtherAndUnknownCalls() (gas: 64644)\n[PASS] test_SelfTransferDoesNotChangeBalance() (gas: 51507)\n[PASS] test_SelfTransferFromConsumesAllowanceWithoutChangingBalance() (gas: 115930)\n[PASS] test_SelfTransferStillRequiresSufficientBalance() (gas: 42887)\n[PASS] test_TransferEntireSupply() (gas: 84019)\n[PASS] test_TransferFromBalanceFailureRestoresAllowance() (gas: 179158)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 275297)\n[PASS] test_TransferFromRejectsInsufficientAllowanceAtomically() (gas: 116102)\n[PASS] test_TransferFromRejectsUnapprovedSpender() (gas: 118167)\n[PASS] test_TransferFromZeroRecipientRestoresAllowance() (gas: 114632)\n[PASS] test_TransferRejectsInsufficientBalanceWithoutChangingState() (gas: 120412)\n[PASS] test_TransferRejectsZeroRecipientEvenForZeroAmount() (gas: 71949)\n[PASS] test_TransferReturnsTrueAndEmitsExactAmount() (gas: 93506)\n[PASS] test_ZeroTransferFromEmptyAccountSucceedsAndEmits() (gas: 73321)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 81412)\n[PASS] test_ZeroTransferFromStillRejectsZeroAddresses() (gas: 64836)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 95.88ms (354.13ms CPU time)\n\nRan 1 test for test/Conditionals.invariant.t.sol:ConditionalsInvariantTest\n[PASS] invariant_SupplyBalancesAndAllowancesMatchModel() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+---------------------+-------+---------+----------╮\n| Contract     | Selector            | Calls | Reverts | Discards |\n+=================================================================+\n| TokenHandler | approve             | 1480  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | approveAndSpend     | 1516  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | approveBoundary     | 1489  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | overdraw            | 1489  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | overdrawDirect      | 1534  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | overspendAllowance  | 1539  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | rejectZeroRecipient | 1491  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | rejectZeroSpender   | 1450  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | transfer            | 1509  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | transferAll         | 1471  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| TokenHandler | transferFrom        | 1416  | 0       | 0        |\n╰--------------+---------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 9\n  Bound result 16\n  Bound result 0\n  Bound result 123000000000000000000\n  Bound result 0\n  Bound result 564\n  Bound result 254\n  Bound result 100000000000000000000\n  Bound result 102\n  Bound result 8418\n  Bound result 0\n  Bound result 0\n  Bound result 17\n  Bound result 0\n  Bound result 17\n  Bound result 0\n  Bound result 5\n  Bound result 9\n  Bound result 0\n  Bound result 0\n  Bound result 3612\n  Bound result 347647114546208772733344772\n  Bound result 2033862102923215\n  Bound result 0\n  Bound result 62\n  Bound result 5543\n  Bound result 4501\n  Bound result 992237\n  Bound result 0\n  Bound result 1\n  Bound result 155463954678116\n  Bound result 2033862102917608\n  Bound result 0\n  Bound result 3\n  Bound result 999999999997966137897082387\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.72s (3.72s CPU time)\n\nRan 4 test suites in 3.72s (3.98s CPU time): 50 tests passed, 0 failed, 0 skipped (50 total tests)\n","passed":true},{"durationMs":46,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Conditionals.approve(address,uint256)\",\"Conditionals.transfer(address,uint256)\",\"Conditionals.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":106,\"dependencies.lock.json\":56,\"foundry.toml\":21,\"remappings.txt\":2,\"src/Conditionals.sol\":16,\"test/Conditionals.invariant.t.sol\":237,\"test/Conditionals.t.sol\":353,\"test/ConditionalsProperties.t.sol\":296,\"test/LaunchFlow.t.sol\":125,\"test/TESTING.md\":47},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"77e1d9e6dc64f8639f2f2d95889a0070c582806581754ef96e8fc3cb23494a03","verifiedTreeHash":"cb845ff551064ab9e9773d8f5b6f0040a4e767b8","verifierVersion":"0.1.0+48c1bcfc"},{"checks":[{"durationMs":1357,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.28s\nCompiler run successful!\n","passed":true},{"durationMs":1924,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/LaunchFlow.t.sol:LaunchFlowTest\n[PASS] test_Create2MintsWholeSupplyToImmediateFactory() (gas: 57712)\n[PASS] test_DistributionClaimsAndTradingTransfersArriveWhole() (gas: 449116)\n[PASS] test_DuplicateCreate2DeploymentRevertsWithoutChangingSupply() (gas: 56090)\n[PASS] test_RuntimeHasNoForbiddenReachableOpcodes() (gas: 2472741)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 23.48ms (5.11ms CPU time)\n\nRan 28 tests for test/Conditionals.t.sol:ConditionalsTest\n[PASS] testFuzz_DelegatedTransferAccounting(uint256,uint256) (runs: 1000, μ: 164612, ~: 165589)\nLogs:\n  Bound result 2\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n\n[PASS] testFuzz_InsufficientAllowanceReverts(uint256,uint256) (runs: 1000, μ: 123226, ~: 123726)\nLogs:\n  Bound result 12\n  Bound result 21168\n\n[PASS] testFuzz_OverdrawnTransferReverts(uint256) (runs: 1000, μ: 69066, ~: 69415)\nLogs:\n  Bound result 3979400044375885912521183073646882066394306215410\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1000, μ: 93007, ~: 93165)\nLogs:\n  Bound result 60\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 186796)\n[PASS] test_ApproveEmitsAndOnlyChangesCallersAllowance() (gas: 119097)\n[PASS] test_ApproveRejectsZeroSpender() (gas: 37573)\n[PASS] test_ConstructorEmitsExactlyOneMintToDeployer() (gas: 34778)\n[PASS] test_DeployerCannotSpendAnotherHoldersTokensWithoutApproval() (gas: 158254)\n[PASS] test_InfiniteAllowanceIsNotDecreased() (gas: 139603)\n[PASS] test_MetadataAndInitialSupply() (gas: 107671)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 1968371)\n[PASS] test_RejectsNativeEtherAndUnknownCalls() (gas: 64644)\n[PASS] test_SelfTransferDoesNotChangeBalance() (gas: 51507)\n[PASS] test_SelfTransferFromConsumesAllowanceWithoutChangingBalance() (gas: 115930)\n[PASS] test_SelfTransferStillRequiresSufficientBalance() (gas: 42887)\n[PASS] test_TransferEntireSupply() (gas: 84019)\n[PASS] test_TransferFromBalanceFailureRestoresAllowance() (gas: 179158)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 275297)\n[PASS] test_TransferFromRejectsInsufficientAllowanceAtomically() (gas: 116102)\n[PASS] test_TransferFromRejectsUnapprovedSpender() (gas: 118167)\n[PASS] test_TransferFromZeroRecipientRestoresAllowance() (gas: 114632)\n[PASS] test_TransferRejectsInsufficientBalanceWithoutChangingState() (gas: 120412)\n[PASS] test_TransferRejectsZeroRecipientEvenForZeroAmount() (gas: 71949)\n[PASS] test_TransferReturnsTrueAndEmitsExactAmount() (gas: 93506)\n[PASS] test_ZeroTransferFromEmptyAccountSucceedsAndEmits() (gas: 73321)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 81412)\n[PASS] test_ZeroTransferFromStillRejectsZeroAddresses() (gas: 64836)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 29.42ms (106.74ms CPU time)\n\nRan 1 test for test/Conditionals.invariant.t.sol:ConditionalsInvariantTest\n[PASS] invariant_SupplyBalancesAndAllowancesMatchModel() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 1991  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | overdraw     | 2085  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2014  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2102  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 117300738\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5015\n  Bound result 0\n  Bound result 93\n  Bound result 0\n  Bound result 3\n  Bound result 46\n  Bound result 0\n  Bound result 16\n  Bound result 0\n  Bound result 86\n  Bound result 8\n  Bound result 0\n  Bound result 11\n  Bound result 70\n  Bound result 1\n  Bound result 789\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1725540768\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.82s (1.82s CPU time)\n\nRan 3 test suites in 1.82s (1.87s CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":41,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Conditionals.approve(address,uint256)\",\"Conditionals.transfer(address,uint256)\",\"Conditionals.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":106,\"dependencies.lock.json\":56,\"foundry.toml\":21,\"launch.json\":24,\"remappings.txt\":2,\"src/Conditionals.sol\":16,\"test/Conditionals.invariant.t.sol\":106,\"test/Conditionals.t.sol\":353,\"test/LaunchFlow.t.sol\":125},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e7aba3886f178950e12d1ad9533fa7e3f21dd3b9f5bef5b0fd1dd63314abd291","verifiedTreeHash":"16269da3b686d2a4bbca3e501f686f635f69e59c","verifierVersion":"0.1.0+48c1bcfc"}]}