upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--reveal/v5-000018/check.py319
-rw-r--r--reveal/v5-000018/manifest.txt28
-rw-r--r--reveal/v5-000018/manifest.txt.otsbin0 -> 619 bytes
-rw-r--r--reveal/v5-000018/r33562612.ctbin0 -> 16807 bytes
-rw-r--r--reveal/v5-000018/r33562612.nostr.json1
-rw-r--r--reveal/v5-000018/r33562612.tlock11
-rw-r--r--reveal/v5-000018/r33591412.ctbin0 -> 25572 bytes
-rw-r--r--reveal/v5-000018/r33591412.nostr.json1
-rw-r--r--reveal/v5-000018/r33591412.tlock11
-rw-r--r--reveal/v5-000018/r33677812.ctbin0 -> 6543 bytes
-rw-r--r--reveal/v5-000018/r33677812.nostr.json1
-rw-r--r--reveal/v5-000018/r33677812.tlock11
-rw-r--r--reveal/v5-000018/r33706612.ctbin0 -> 2601 bytes
-rw-r--r--reveal/v5-000018/r33706612.nostr.json1
-rw-r--r--reveal/v5-000018/r33706612.tlock11
-rw-r--r--reveal/v5-000018/r33764212.ctbin0 -> 1014 bytes
-rw-r--r--reveal/v5-000018/r33764212.nostr.json1
-rw-r--r--reveal/v5-000018/r33764212.tlock11
-rw-r--r--reveal/v5-000018/r33821812.ctbin0 -> 743 bytes
-rw-r--r--reveal/v5-000018/r33821812.nostr.json1
-rw-r--r--reveal/v5-000018/r33821812.tlock11
-rw-r--r--reveal/v5-000018/r34714612.ctbin0 -> 16607 bytes
-rw-r--r--reveal/v5-000018/r34714612.nostr.json1
-rw-r--r--reveal/v5-000018/r34714612.tlock11
-rw-r--r--reveal/v5-000018/r34743412.ctbin0 -> 25408 bytes
-rw-r--r--reveal/v5-000018/r34743412.nostr.json1
-rw-r--r--reveal/v5-000018/r34743412.tlock11
-rw-r--r--reveal/v5-000018/r34772212.ct3
-rw-r--r--reveal/v5-000018/r34772212.nostr.json1
-rw-r--r--reveal/v5-000018/r34772212.tlock11
-rw-r--r--reveal/v5-000018/r34829812.ctbin0 -> 6621 bytes
-rw-r--r--reveal/v5-000018/r34829812.nostr.json1
-rw-r--r--reveal/v5-000018/r34829812.tlock11
-rw-r--r--reveal/v5-000018/r34858612.ctbin0 -> 2930 bytes
-rw-r--r--reveal/v5-000018/r34858612.nostr.json1
-rw-r--r--reveal/v5-000018/r34858612.tlock11
-rw-r--r--reveal/v5-000018/r34916212.ctbin0 -> 1014 bytes
-rw-r--r--reveal/v5-000018/r34916212.nostr.json1
-rw-r--r--reveal/v5-000018/r34916212.tlock11
-rw-r--r--reveal/v5-000018/r34973812.ctbin0 -> 651 bytes
-rw-r--r--reveal/v5-000018/r34973812.nostr.json1
-rw-r--r--reveal/v5-000018/r34973812.tlock11
-rw-r--r--reveal/v5-000018/r35549812.ctbin0 -> 1015 bytes
-rw-r--r--reveal/v5-000018/r35549812.nostr.json1
-rw-r--r--reveal/v5-000018/r35549812.tlock11
-rw-r--r--reveal/v5-000018/r35722612.ctbin0 -> 7888 bytes
-rw-r--r--reveal/v5-000018/r35722612.nostr.json1
-rw-r--r--reveal/v5-000018/r35722612.tlock11
-rw-r--r--reveal/v5-000018/r35895412.ctbin0 -> 1425 bytes
-rw-r--r--reveal/v5-000018/r35895412.nostr.json1
-rw-r--r--reveal/v5-000018/r35895412.tlock11
-rw-r--r--reveal/v5-000018/r35981812.ct4
-rw-r--r--reveal/v5-000018/r35981812.nostr.json1
-rw-r--r--reveal/v5-000018/r35981812.tlock11
-rw-r--r--reveal/v5-000018/r36701812.ctbin0 -> 1012 bytes
-rw-r--r--reveal/v5-000018/r36701812.nostr.json1
-rw-r--r--reveal/v5-000018/r36701812.tlock11
-rw-r--r--reveal/v5-000018/r36817012.ctbin0 -> 1538 bytes
-rw-r--r--reveal/v5-000018/r36817012.nostr.json1
-rw-r--r--reveal/v5-000018/r36817012.tlock11
-rw-r--r--reveal/v5-000018/r36874612.ctbin0 -> 7944 bytes
-rw-r--r--reveal/v5-000018/r36874612.nostr.json1
-rw-r--r--reveal/v5-000018/r36874612.tlock11
-rw-r--r--reveal/v5-000018/r37047412.ctbin0 -> 1012 bytes
-rw-r--r--reveal/v5-000018/r37047412.nostr.json1
-rw-r--r--reveal/v5-000018/r37047412.tlock11
-rw-r--r--reveal/v5-000018/r37969012.ctbin0 -> 1711 bytes
-rw-r--r--reveal/v5-000018/r37969012.nostr.json1
-rw-r--r--reveal/v5-000018/r37969012.tlock11
-rw-r--r--reveal/v5-000018/seal.json43
70 files changed, 661 insertions, 0 deletions
diff --git a/reveal/v5-000018/check.py b/reveal/v5-000018/check.py
new file mode 100644
index 0000000..7f86b8d
--- /dev/null
+++ b/reveal/v5-000018/check.py
@@ -0,0 +1,319 @@
1#!/usr/bin/env python3
2"""
3Check Echo's self-revealing ledger seals (`sha256-live-v5`) without trusting Echo.
4
5 python3 check.py SEAL_DIR [SEAL_DIR ...] [--tle PATH] [--offline]
6
7Needs Python 3.11+, the `cryptography` package (ChaCha20-Poly1305) and drand's `tle` binary
8(`go install github.com/drand/tlock/cmd/tle@v1.2.0`). It imports nothing of Echo's: a checker that needs the thing it
9checks is not a checker, which is why it is copied, whole, into every seal directory.
10
11Each SEAL_DIR is one seal: `manifest.txt` (the exact text the seal's digest is the sha256 of), `seal.json`, and per
12reveal group `r<ROUND>.tlock` (the group's key, time-locked to that drand round) and `r<ROUND>.ct` (the group,
13encrypted under that key), and, once the group has been revealed, `r<ROUND>.held.json` (how many of its withheld
14lines Echo publishes no salt for, and why) and any number of `r<ROUND>.salts.<N>.json`: each the salts of withheld
15lines Echo decided to open and had not erased, each with its line. `manifest.txt.ots`, when present, is an
16OpenTimestamps proof over the manifest: `ots verify manifest.txt.ots` checks it against Bitcoin.
17
18What it checks, from the files alone and the beacon:
19 1. the manifest hashes to the seal's digest, and each seal names the one before it (when several are given);
20 2. each group's ciphertext and locked key hash to what the manifest commits, and the key is locked to the
21 manifest's round of the manifest's chain;
22 3. for every group whose round the beacon has signed: the round's signature as each relay serves it, the key
23 unlocked with it, the group decrypted, its bytes hashed to the committed digest, its lines and withheld lines
24 counted against the committed counts, its lines in id order, and every line's reveal day recomputed from its
25 own settling instant under the seal's named rule (`utc-day-after-close`: the first 00:00 UTC after
26 `settles_at`, else after the deadline);
27 4. for every opened group with releases: each names this seal, round and group and its own number; each released
28 salt and line hash to the withheld line's committed hash; no line is settled twice; and a hold, where there is
29 one, names the group and counts no more lines than are withheld;
30 5. once every group of every seal from the first is open and every withheld line released: the union of their v4
31 lines, sorted by id, rehashes to the v4 digest the last seal follows, so no sealed forecast was left out of a
32 reveal. Where a withheld line has no released salt (held, erased, or not yet released) that digest cannot be
33 rebuilt, and this says so and why: what is checked then is only that every forecast the v4 seal covers is in a
34 group, counted. A withheld line is never called verified.
35
36A group whose round is not yet signed, or whose withheld lines have no release yet, is reported as pending or held,
37not as a failure. Exit 0 when everything checkable passed, 1 when anything did not match.
38"""
39from __future__ import annotations
40
41import argparse
42import base64
43import hashlib
44import json
45import re
46import subprocess
47import sys
48import urllib.request
49import zlib
50from datetime import datetime, timedelta, timezone
51from pathlib import Path
52
53
54def sha(b: bytes) -> str:
55 return hashlib.sha256(b).hexdigest()
56
57
58def parse_manifest(text: str) -> dict:
59 lines = text.split("\n")
60 if lines[0] != "sha256-live-v5":
61 raise ValueError(f"not a v5 manifest: {lines[0]!r}")
62 m = {"groups": []}
63 for ln in lines[1:]:
64 word, _, rest = ln.partition(" ")
65 if word == "prev":
66 m["prev"] = None if rest == "-" else rest
67 elif word == "follows":
68 seq, digest, n = rest.split(" ")
69 m["follows"] = {"seq": int(seq), "digest": digest, "n": int(n)}
70 elif word == "covers":
71 m["covers"] = rest.split(" ")
72 elif word == "variant":
73 m["variant"] = json.loads(rest)
74 elif word == "counts":
75 m["n"], m["n_withheld"], m["n_groups"] = map(int, rest.split(" "))
76 elif word == "group":
77 r, at, n, w, digest, ct, key, late = rest.split(" ")
78 m["groups"].append({"round": int(r), "reveal_at": at, "n": int(n), "n_withheld": int(w),
79 "digest": digest, "ct": ct, "key": key, "late": late == "1"})
80 else:
81 raise ValueError(f"unknown manifest line {ln!r}")
82 return m
83
84
85def stanza(locked: str) -> tuple[int, str] | None:
86 body = "".join(ln for ln in locked.strip().splitlines() if not ln.startswith("-----"))
87 m = re.search(rb"-> tlock (\d+) ([0-9a-f]{64})", base64.b64decode(body))
88 return (int(m.group(1)), m.group(2).decode()) if m else None
89
90
91def round_at(beacon: dict, at: datetime) -> int:
92 t = at.timestamp()
93 whole = int(t) + (t != int(t))
94 if whole <= beacon["genesis_time"]:
95 return 1
96 return -(-(whole - beacon["genesis_time"]) // beacon["period"]) + 1
97
98
99def reveal_day(closes: datetime) -> datetime:
100 d = closes.astimezone(timezone.utc).date() + timedelta(days=1)
101 return datetime(d.year, d.month, d.day, tzinfo=timezone.utc)
102
103
104def parse_line(ln: str) -> dict:
105 """One line: `id|issued_at|deadline|forecaster|p|settlement|anchor<TAB>open:<v4>` or `...<TAB>withheld:<hex>`."""
106 numeric, tab, text = ln.partition("\t")
107 if not tab:
108 raise ValueError("a line without its text layer")
109 fid, issued, deadline, forecaster, p, rest = numeric.split("|", 5)
110 dec = json.JSONDecoder()
111 settle, end = dec.raw_decode(rest)
112 if rest[end] != "|":
113 raise ValueError("settlement not followed by the anchor")
114 anchor, end2 = dec.raw_decode(rest, end + 1)
115 if end2 != len(rest):
116 raise ValueError("trailing bytes after the anchor")
117 out = {"id": int(fid), "issued_at": issued, "deadline": deadline, "forecaster": forecaster, "p": float(p),
118 "settlement": settle, "anchor": anchor}
119 if text.startswith("open:"):
120 out["v4"] = text[5:]
121 if not out["v4"].startswith(f"{fid}|"):
122 raise ValueError("the text layer is another forecast's line")
123 elif re.fullmatch(r"withheld:[0-9a-f]{64}", text):
124 out["withheld"] = text[9:]
125 else:
126 raise ValueError(f"unknown text layer {text[:20]!r}")
127 return out
128
129
130def beacon_round(beacon: dict, rnd: int) -> dict:
131 """What each relay serves for the round: its signature, or why there is none."""
132 out = {}
133 for relay in beacon["relays"]:
134 url = f"{relay.rstrip('/')}/{beacon['chain_hash']}/public/{rnd}"
135 try:
136 with urllib.request.urlopen(url, timeout=20) as r: # noqa: S310 — the seal's own relays
137 out[relay] = json.loads(r.read()).get("signature")
138 except Exception as exc: # noqa: BLE001 — report, go on
139 out[relay] = f"unavailable ({type(exc).__name__})"
140 return out
141
142
143def unlock(tle: str, beacon: dict, locked: str) -> bytes | None:
144 """The key, or None while the round is unsigned. Each relay is tried in turn."""
145 errors = []
146 for relay in beacon["relays"]:
147 r = subprocess.run([tle, "-d", "-n", relay.rstrip("/") + "/", "-c", beacon["chain_hash"]],
148 input=locked.encode(), capture_output=True, timeout=120, check=False)
149 if r.returncode == 0:
150 return r.stdout
151 if b"too early" in r.stderr:
152 return None
153 errors.append(f"{relay}: {r.stderr.decode(errors='replace').strip()[-160:]}")
154 raise RuntimeError("; ".join(errors))
155
156
157def release(d: Path, seal_digest: str, g: dict, lines: list[dict], say) -> tuple[dict[int, str], int, str | None]:
158 """An opened group's releases and hold, checked against the group: (id -> the v4 line each released salt opens,
159 how many withheld lines were opened and found erased, and the hold's reason where Echo published one)."""
160 r = g["round"]
161 shut = {x["id"]: x["withheld"] for x in lines if "withheld" in x}
162 out, erased, seen, bad = {}, set(), set(), []
163 files = sorted(d.glob(f"r{r}.salts.*.json"), key=lambda p: int(p.name.split(".")[-2]))
164 for k, path in enumerate(files):
165 rel = json.loads(path.read_text())
166 say(rel.get("format") == "echo-reveal-salts/1" and rel.get("seal") == seal_digest
167 and rel.get("round") == r and rel.get("group") == g["digest"] and rel.get("n") == k
168 and path.name == f"r{r}.salts.{k}.json",
169 f"round {r}: release {k} names this seal, round and group, and follows the one before")
170 for x in rel.get("released", []):
171 i, line = x["id"], x["line"]
172 opens = (i in shut and i not in seen and line.startswith(f"{i}|")
173 and sha(bytes.fromhex(x["salt"]) + line.encode()) == shut[i])
174 if opens:
175 out[i] = line
176 else:
177 bad.append(i)
178 seen.add(i)
179 for i in rel.get("erased", []):
180 if i not in shut or i in seen:
181 bad.append(i)
182 erased.add(i)
183 seen.add(i)
184 if files:
185 say(not bad, f"round {r}: {len(out)} released lines open their committed hashes, {len(erased)} opened lines "
186 f"found erased, none settled twice" + (f" ({len(bad)} do not, e.g. {bad[:3]})" if bad else ""))
187 why = None
188 hold = d / f"r{r}.held.json"
189 if hold.exists():
190 h = json.loads(hold.read_text())
191 say(h.get("format") == "echo-reveal-held/1" and h.get("seal") == seal_digest and h.get("round") == r
192 and h.get("group") == g["digest"] and 0 <= h.get("held", -1) <= len(shut),
193 f"round {r}: the hold names this seal, round and group, and counts at most its withheld lines")
194 why = str(h.get("why") or "no reason given")
195 left = len(shut) - len(out) - len(erased)
196 if left:
197 print(f" .... round {r}: {left} withheld lines have no released salt: counted, not rehashed"
198 + (f" (Echo publishes none: {why})" if why else " (no release or hold published yet)"))
199 return out, len(erased), why
200
201
202def check(dirs: list[Path], tle: str = "tle", offline: bool = False) -> int:
203 from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305
204
205 failed, pending, withheld, held, erased, union = 0, 0, 0, 0, 0, {}
206 reasons: set[str] = set()
207 first_prev = "unset"
208
209 def say(ok: bool, what: str) -> None:
210 nonlocal failed
211 failed += not ok
212 print(f" {'PASS' if ok else 'FAIL'} {what}")
213
214 prev_digest = None
215 seals = []
216 for d in dirs:
217 text = (d / "manifest.txt").read_bytes()
218 row = json.loads((d / "seal.json").read_text())
219 seals.append((d, text, row, parse_manifest(text.decode())))
220 seals.sort(key=lambda s: s[2]["seq"])
221 last = None
222 for i, (d, text, row, m) in enumerate(seals):
223 print(f"v5 seal {row['seq']}: {m['n']} forecasts in {m['n_groups']} reveal groups, {m['n_withheld']} withheld, "
224 f"follows v4 seal {m['follows']['seq']}")
225 say(sha(text) == row["digest"], f"sha256(manifest.txt) is the seal's digest {row['digest'][:16]}…")
226 say(len(m["groups"]) == m["n_groups"] and sum(g["n"] for g in m["groups"]) == m["n"]
227 and sum(g["n_withheld"] for g in m["groups"]) == m["n_withheld"], "the manifest's counts add up")
228 if i == 0:
229 first_prev = m["prev"]
230 else:
231 say(m["prev"] == prev_digest, "it names the seal before it")
232 prev_digest, last = row["digest"], m
233 b = m["variant"]["beacon"]
234 for g in m["groups"]:
235 r = g["round"]
236 ct, locked = (d / f"r{r}.ct").read_bytes(), (d / f"r{r}.tlock").read_text()
237 say(sha(ct) == g["ct"] and sha(locked.encode()) == g["key"],
238 f"round {r}: the ciphertext and the locked key are the committed ones")
239 say(stanza(locked) == (r, b["chain_hash"]), f"round {r}: the key is locked to that round of that chain")
240 say(round_at(b, datetime.fromisoformat(g["reveal_at"])) == r, f"round {r} is signed at {g['reveal_at']}")
241 if not offline:
242 sigs = beacon_round(b, r)
243 good = {s for s in sigs.values() if s and not s.startswith("unavailable")}
244 print(f" .... round {r} signature from {len(sigs)} relays: "
245 + ("not yet signed" if not good else f"{len(good)} distinct: {min(good)[:24]}…"))
246 if len(good) > 1:
247 say(False, f"round {r}: relays disagree on its signature")
248 key = unlock(tle, b, locked)
249 if key is None:
250 pending += 1
251 print(f" .... round {r} ({g['reveal_at']}) not yet signed: {g['n']} forecasts stay locked")
252 continue
253 try:
254 plain = zlib.decompress(ChaCha20Poly1305(key).decrypt(b"\x00" * 12, ct, None))
255 except Exception as exc: # noqa: BLE001 — a finding, not a crash
256 say(False, f"round {r}: the ciphertext does not open under its key ({type(exc).__name__})")
257 continue
258 say(sha(plain) == g["digest"], f"round {r}: the opened group hashes to its committed digest")
259 lines = [parse_line(ln) for ln in plain.decode().split("\n")]
260 ids = [x["id"] for x in lines]
261 say(len(lines) == g["n"] and sum("withheld" in x for x in lines) == g["n_withheld"],
262 f"round {r}: {len(lines)} lines, {g['n_withheld']} withheld, as committed")
263 say(ids == sorted(set(ids)), f"round {r}: lines in id order, none twice")
264 due = datetime.fromisoformat(g["reveal_at"])
265 if m["variant"].get("reveal") == "utc-day-after-close":
266 wrong = [x["id"] for x in lines if reveal_day(datetime.fromisoformat(
267 (x["settlement"] or {}).get("settles_at") or x["deadline"])) != due]
268 say(not wrong, f"round {r}: every line belongs to this reveal day"
269 + (f" ({len(wrong)} do not, e.g. {wrong[:3]})" if wrong else ""))
270 else:
271 print(f" .... round {r}: reveal rule {m['variant'].get('reveal')!r} is not one this checker "
272 "recomputes; which lines belong to the day is unchecked")
273 opened, gone, why = release(d, row["digest"], g, lines, say)
274 for x in lines:
275 if x["id"] in union:
276 say(False, f"forecast {x['id']} is in two groups")
277 union[x["id"]] = x.get("v4") or opened.get(x["id"])
278 shut = sum(1 for x in lines if "withheld" in x and x["id"] not in opened) - gone
279 erased += gone
280 if why is None:
281 withheld += shut
282 else:
283 held += shut
284 reasons.add(why)
285 if last is not None:
286 if first_prev is not None:
287 print(" .... completeness: the first seal given is not the chain's first; give every seal from it")
288 elif pending:
289 print(f" .... completeness: {pending} groups still locked; it is checkable once all have opened")
290 elif withheld or held or erased:
291 told = [f"{withheld} withheld lines not yet released"] if withheld else []
292 told += ([f"{held} withheld lines held, for which Echo publishes no salt ({'; '.join(sorted(reasons))})"]
293 if held else [])
294 told += [f"{erased} erased stay hashes"] if erased else []
295 print(f" .... completeness: {', '.join(told)}: those lines can be counted but not rehashed, so the v4 "
296 f"lines cannot all be rebuilt and the v4 digest is NOT checked; {len(union)} forecasts against "
297 f"the v4 seal's {last['follows']['n']}")
298 say(len(union) == last["follows"]["n"], "every forecast the v4 seal covers is in a group, counted")
299 else:
300 got = sha("\n".join(union[k] for k in sorted(union)).encode())
301 say(got == last["follows"]["digest"] and len(union) == last["follows"]["n"],
302 f"the union of {len(union)} lines rehashes to v4 seal {last['follows']['seq']}'s digest")
303 print("\nNOT VERIFIED" if failed else f"\nVERIFIED{f' ({pending} groups not yet revealed)' if pending else ''}")
304 return 1 if failed else 0
305
306
307def main(argv: list[str]) -> int:
308 ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
309 ap.add_argument("dirs", nargs="*", default=[str(Path(__file__).resolve().parent)],
310 help="seal directories, any order (default: the one this script sits in)")
311 ap.add_argument("--tle", default="tle", help="the tle binary that unlocks a key once its round is signed")
312 ap.add_argument("--offline", action="store_true",
313 help="do not fetch each round's signature from the relays for display; tle still asks them")
314 args = ap.parse_args(argv)
315 return check([Path(d) for d in args.dirs], tle=args.tle, offline=args.offline)
316
317
318if __name__ == "__main__":
319 raise SystemExit(main(sys.argv[1:]))
diff --git a/reveal/v5-000018/manifest.txt b/reveal/v5-000018/manifest.txt
new file mode 100644
index 0000000..c65b35d
--- /dev/null
+++ b/reveal/v5-000018/manifest.txt
@@ -0,0 +1,28 @@
1sha256-live-v5
2prev 96bc56257175d4d0f443178387ce7d3af598dbb1c85dd7c226c21e38f4b270a0
3follows 48 b1bf70047c6e485d6140da6a998948602ac5ae5fa988576c9c4f71d97dbfa2db 55644
4covers 2026-10-10T00:40:08.667562Z 2026-10-10T21:24:24.282938Z
5variant {"beacon":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_time":1692803367,"period":3,"relays":["https://api.drand.sh","https://api2.drand.sh","https://api3.drand.sh","https://drand.cloudflare.com"],"scheme":"bls-unchained-g1-rfc9380"},"cipher":"chacha20poly1305-zlib6-nonce0","gate":{"default":"withheld: a kept salt can be released later; an opened text can never be withdrawn","opened":"none","why":"no decision by Echo yet"},"line":"numeric<TAB>open:<v4 line> | numeric<TAB>withheld:sha256(salt||v4 line)","reveal":"utc-day-after-close","salts":"key ring: one content a seal, one part a line","tool":{"name":"tle","sha256":"69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541","version":"tlock v1.2.0 -- github.com/drand/tlock"}}
6counts 2174 2174 22
7group 33562612 2026-11-01T00:00:00.000000Z 291 291 facd69d4104bd3c22cc988407e340710d532b60ecfb450490d277ad91475cf59 6bcf0087a3072363bb5f1576382063d6a2bf0167ff51ddb0fa32fe4682e01597 00fdcd0db34a8b97b56b6972d0ba3bbfcb0e80ff8d037ccd48e8ca255928612d 0
8group 33591412 2026-11-02T00:00:00.000000Z 444 444 b7b8a28aaa722273c52e85bd0ff54e0ff95f420ff54b728de6c01ba2764a83f1 f9cb8201ad77a224c5cfb4fb9107f1f015c344ab34c8186ca53856edd1500225 a88fde4f2994c27138f604841a6f7d5d7be6bc2958a63918acc538e31732137d 0
9group 33677812 2026-11-05T00:00:00.000000Z 108 108 eabf362ceb07a114670e2a84fc93f6d5c62924b9830899b45808e5fde2abae40 ad15b2174fe9aca36f62aadf7be56451fdeabd522010b7c818a815b07f487b81 2850e800469787c777e74a87c7cc447b021b9c7c7024abf68cf3173495b348cc 0
10group 33706612 2026-11-06T00:00:00.000000Z 39 39 bb416315db449fb21a276094787363af64e9621a6622dbfac85e714d6ff525b0 63ffce9ff50aba39c3b111a72fc7a84530542803ae9173930e900d41791a235a d42f6e1ea52a01537b678317b6bd5fa3c3a036321b48397d0fa09d8e6a68c292 0
11group 33764212 2026-11-08T00:00:00.000000Z 12 12 97cf58e32c03aa0af2c4d27a6880ab359247eb8c878e9570a3c17df0c20fcf17 a76ce52a80a9928c4a43520f9f3cc1201ca4ab8f1290fe05afae35cd1369002d c420868b61fdc3ca146b80aace351148951aac3f52f7463e5c6b457cd3ad8266 0
12group 33821812 2026-11-10T00:00:00.000000Z 8 8 cf53b0202c610abc05aa70219b1ae30b4c1a5ecadcf2f24f577f1a9948928016 f6c5686909b7482d553b94a711779821db7bba0e6773c3ab2e1e89aebbfe3c0f 7e6b2c0f06447e66aaf4c68919797b88ed9bae2802a4ee754bcea6220d6d78a7 0
13group 34714612 2026-12-11T00:00:00.000000Z 288 288 3e627cac2833beb3600036ef4a2447c93880579211dd1b5b432acf91935d2fa2 1eb4c270c8f9aac6c437b994af51df71bb6a05e75756862e86a7f870ad36d0ac cebd43c7318f64dae219398064307e8a626c3ca4740a38292cd85046eac9fd0e 0
14group 34743412 2026-12-12T00:00:00.000000Z 438 438 53d9f473acc297841b4440a652213834547b9e9ce0b9fe0a3a7e6894303ac1bd d209e3329e5d1e1d96af0e696969d248b26e967b585898e2b023bfa54c7bdf69 6b837ec79f2c6e4511106a01d73293dad5f4be3cfd7e7079d6459eda523406b6 0
15group 34772212 2026-12-13T00:00:00.000000Z 6 6 25425451d22f438d88f4fc96acb8db9bf9cccb8c6a36c81e9ed2073a73407516 c769387d40680949cd4b68ff377f20b56ad03093c525e0ea3fdec1dfacd56125 09d5893bc6225327e18388640bf0ebf50a2d277b6039afced72ae3b6f916a6b2 0
16group 34829812 2026-12-15T00:00:00.000000Z 108 108 e17600a6eb42c5df598d736c2ce2ad3d744d1de800d4f3bb49c5bf6e6dd6416f fab255375ac8f02cea12af9f86a7b4c0569c1fe61bb1126f54a488379f4ecedf b20f5904db44523ac72fa69d06edb1b60440fe8ce12f5bcd9b24ab063cebe6fc 0
17group 34858612 2026-12-16T00:00:00.000000Z 45 45 34fa3d3f3af334899e69fcbbe85f0cc3b7184f1a6c659198e37bd81fc25d5752 5981d734cb8078cc2c6c975b861c7ef582056bd6592b2200725870558e3b8434 e38bf032c99c86bf2e072b1592d8a6b46a86582290e9775c1e120c29dff1154d 0
18group 34916212 2026-12-18T00:00:00.000000Z 12 12 3d8f28b9edef726d86e0fe5dce278c8a4dbaf0b7feb7061d4154d65ff3450a94 82f6efc4047dbb4e2afe70910e94fc2af00e242ea4a1555853af3137aa9c4c96 9e5ced73d8aa2665e0b76321a0da45d33a843c744e8c28283978761e33ca6cb2 0
19group 34973812 2026-12-20T00:00:00.000000Z 6 6 4324db292023cc81aa2b16ca649ea228120a4e520900a135ada2a629fbd28170 f793fe74e4b20b7dc5f9846d8e75fa5d1c2647e30135f66e62ce20bfdf32baf4 fbd2f0aae6baad326e8d42457f7d0359ba646942bd3ec2b065df80ff4e0accbb 0
20group 35549812 2027-01-09T00:00:00.000000Z 12 12 a15a893e6dc19af29cde17e7837527acb2f532941734e792c7289cf36c32c71c 3252be91970848e2cc176eed262aadf50d0d87a52ffa93eb691bfc4a33be2710 373a27c61d243590e0c5f845f5a85bfeb2e839a84593750f03455aa496926ff0 0
21group 35722612 2027-01-15T00:00:00.000000Z 132 132 ad75bf2acdbf2a399be5a4ff0c5a38de1a21814e8d070f6cdf80364c8227a2e9 2a02b82e091ef1b5c31294c8032beaf9a19514523e524f2dc6a48b31be3fa947 2d4527c7f44f75dec25c3d32e49847e45eb2b95af753d9b70353295e5ebe6db3 0
22group 35895412 2027-01-21T00:00:00.000000Z 18 18 2d369ad6767365fea847261d601c68d11f4ca6eca05bef8b43374d429fbfcc2b 1cf0cac25676c327339b0760a69f2b60981d738bec8fbad04dc784c24aa7b653 71d04ccd680d178fd26991cff1f080f93017d8b7349c4bdb6e0ca18edcce4cc9 0
23group 35981812 2027-01-24T00:00:00.000000Z 6 6 aeb469431be6de7bdf5e9726bd96ac8aa69f5a70dcbc516e22600c52afcc46f5 1fef493252b43e48962012f4b1b2082d5a8f5baf17bfc3dc672bbc74d2ba7cde f1cdb8140d72e9ef7e0d1e62c53014fe02b77cdd4cd38592e8fb183bdb9edcf8 0
24group 36701812 2027-02-18T00:00:00.000000Z 12 12 43d4cf0ae1126c4c5914b52396aa4d12da821781f51146216f0ea9c621f32873 4e0b53a52cae12d816743d9f7414273c19824528b1ad9cff50a164078a691905 5195cd90be80e0f8f18dc1cac47bfcad25d7d0add9abe21315d82707360c4341 0
25group 36817012 2027-02-22T00:00:00.000000Z 21 21 e545deaefb9cd9348ebe560a0e5147d4bdfd57d6d4e36623816b7767e1e65775 f96576eac983b02817e41427d2a0919dd7caa31fa5e2d532cfa2e91f5c1eb353 dbebfa39ea5f6b32016874e889e9a8a8fd45d4d0f95167c47bc2fc51ea169c3f 0
26group 36874612 2027-02-24T00:00:00.000000Z 132 132 8fa7e26c4fd05c475f5c3a6cd202bb0df2087ccb76fed5c5154447de8c2be91f 28bb6be758b988fca4458f2d496ff5b474cc9ee01df7d433a11c8dfce817d6e6 bbee3548bf6785c240dedaf25476ecea6bd79d2fc9cba2310889411a5a56761f 0
27group 37047412 2027-03-02T00:00:00.000000Z 12 12 3f6b83791864bd2a4546f3725c9879138b0e961605bc0fa5f523a797673bef8b 01642f7132abc2c3a4a1ef60cfa703c701d4d97c1c0f26d76c8eea25fec3ae13 39212292eaf6c776065ff16bf621be709262c788451cce4b6d999e1dce8c444a 0
28group 37969012 2027-04-03T00:00:00.000000Z 24 24 6706bca0a56c8095f95571ff5ce3a66039f849d589485f2089c4dd8ff4eb85a2 c7ef0973aae9b7ded3e6317cfbfdf27b83810ceee60e9510ded9f3301a7aa2e9 bd94b1b18d60c4dd45883998411df59759ad2d846259a4bb4812df6236d9ba0f 0 \ No newline at end of file
diff --git a/reveal/v5-000018/manifest.txt.ots b/reveal/v5-000018/manifest.txt.ots
new file mode 100644
index 0000000..1fa3995
--- /dev/null
+++ b/reveal/v5-000018/manifest.txt.ots
Binary files differ
diff --git a/reveal/v5-000018/r33562612.ct b/reveal/v5-000018/r33562612.ct
new file mode 100644
index 0000000..c612ef2
--- /dev/null
+++ b/reveal/v5-000018/r33562612.ct
Binary files differ
diff --git a/reveal/v5-000018/r33562612.nostr.json b/reveal/v5-000018/r33562612.nostr.json
new file mode 100644
index 0000000..725f0f3
--- /dev/null
+++ b/reveal/v5-000018/r33562612.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKZ3czWGFwWmVDRktLNlFGUkwxdlUyS0dOODhpNmw0WUltdC9jSzE5\nUngxNnJtMGtTNkhUM1hsZFBnUEN5d2cyWgpBMnpjVE0xVlF2SG90ZHJMV1Bucmpn\nbG91OU9KL1czc01sY0ZmaDErR1JRUTB4WUMrVXZ1clFicXVVcTJSWUxFClFkZTA0\nUWJMK3JxVWdwd2N0aVNxUk9WUVpSZlRPOVhDMVR5MmpFazV5ZmcKLS0tIEZFZmtm\nZjNCRG0rQzJHckQ0am9JQ29UM09DVHM3RkhQb2pCOFVtbWdQdDgK7hSE0kdF+js4\nAKVEptzb87A/4YHik6wuBxSkQSN60kL/7UiUG+6QipQEELhFp+Ju+G65JjKljkD2\nb8SUhT0bdw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33562612"],["reveal_at","2026-11-01T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","facd69d4104bd3c22cc988407e340710d532b60ecfb450490d277ad91475cf59"],["ct","6bcf0087a3072363bb5f1576382063d6a2bf0167ff51ddb0fa32fe4682e01597"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r33562612.tlock b/reveal/v5-000018/r33562612.tlock
new file mode 100644
index 0000000..96c0ef4
--- /dev/null
+++ b/reveal/v5-000018/r33562612.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKZ3czWGFwWmVDRktLNlFGUkwxdlUyS0dOODhpNmw0WUltdC9jSzE5
5UngxNnJtMGtTNkhUM1hsZFBnUEN5d2cyWgpBMnpjVE0xVlF2SG90ZHJMV1Bucmpn
6bG91OU9KL1czc01sY0ZmaDErR1JRUTB4WUMrVXZ1clFicXVVcTJSWUxFClFkZTA0
7UWJMK3JxVWdwd2N0aVNxUk9WUVpSZlRPOVhDMVR5MmpFazV5ZmcKLS0tIEZFZmtm
8ZjNCRG0rQzJHckQ0am9JQ29UM09DVHM3RkhQb2pCOFVtbWdQdDgK7hSE0kdF+js4
9AKVEptzb87A/4YHik6wuBxSkQSN60kL/7UiUG+6QipQEELhFp+Ju+G65JjKljkD2
10b8SUhT0bdw==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r33591412.ct b/reveal/v5-000018/r33591412.ct
new file mode 100644
index 0000000..72a4357
--- /dev/null
+++ b/reveal/v5-000018/r33591412.ct
Binary files differ
diff --git a/reveal/v5-000018/r33591412.nostr.json b/reveal/v5-000018/r33591412.nostr.json
new file mode 100644
index 0000000..55aefa1
--- /dev/null
+++ b/reveal/v5-000018/r33591412.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTkxNDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaHk5MldFckNQOHBVQkpVYXAyWVBaYy9md2thT1NzNXBCV0J1dFAv\nSW1YdDVkRjE5TllnRWZJamoyNllYQ0FPRwpCalV0VW5aZVlpM2paVG1OR3JQSzdI\nTmRhR3Zoc0RXSlh2YXMrRWk0UjJiQWtXOXE1OVlsSXdBQkpubjBYb2dFCmJtdEQx\nNmY4NXF1b2lORkY4Mk5wSEQvZzgvRzZleVYwZXN3cnRpMWNVbXcKLS0tIHIwWFNY\ndjJ0VWRQS3I4WW5qMnh2WDJkeUpQdGs4ZVlYdkpsdFJBYWw2RlEKvFVhR+bo03vw\nOE7An9eXtmP/+apBJBn5KQR9IxumjerZTVXINA5ei67GIjmQha3zPhmUDAj9NoW2\nYzHt5Rm/PQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33591412"],["reveal_at","2026-11-02T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","b7b8a28aaa722273c52e85bd0ff54e0ff95f420ff54b728de6c01ba2764a83f1"],["ct","f9cb8201ad77a224c5cfb4fb9107f1f015c344ab34c8186ca53856edd1500225"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r33591412.tlock b/reveal/v5-000018/r33591412.tlock
new file mode 100644
index 0000000..1b3538a
--- /dev/null
+++ b/reveal/v5-000018/r33591412.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTkxNDEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKaHk5MldFckNQOHBVQkpVYXAyWVBaYy9md2thT1NzNXBCV0J1dFAv
5SW1YdDVkRjE5TllnRWZJamoyNllYQ0FPRwpCalV0VW5aZVlpM2paVG1OR3JQSzdI
6TmRhR3Zoc0RXSlh2YXMrRWk0UjJiQWtXOXE1OVlsSXdBQkpubjBYb2dFCmJtdEQx
7NmY4NXF1b2lORkY4Mk5wSEQvZzgvRzZleVYwZXN3cnRpMWNVbXcKLS0tIHIwWFNY
8djJ0VWRQS3I4WW5qMnh2WDJkeUpQdGs4ZVlYdkpsdFJBYWw2RlEKvFVhR+bo03vw
9OE7An9eXtmP/+apBJBn5KQR9IxumjerZTVXINA5ei67GIjmQha3zPhmUDAj9NoW2
10YzHt5Rm/PQ==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r33677812.ct b/reveal/v5-000018/r33677812.ct
new file mode 100644
index 0000000..fc9ad15
--- /dev/null
+++ b/reveal/v5-000018/r33677812.ct
Binary files differ
diff --git a/reveal/v5-000018/r33677812.nostr.json b/reveal/v5-000018/r33677812.nostr.json
new file mode 100644
index 0000000..dd5c3a1
--- /dev/null
+++ b/reveal/v5-000018/r33677812.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjc3ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaHoyZ2NaQ21jTnRPczBhSStCNEFUekhGRzQ4Q1JTUHJ0WjIyS3Az\nZ0IyL2ducW5xS1lLc2JWZHRIV1VMQ1Q4VwpDcGU5REh6OEloeUc4TEh5bWoxNExr\neDM2Q3YrOXVSV2oyRlZsQ2dNeExJZFZISExEMVV1aXlTWCszbVFlQXVpCkwxTTBP\nOEpWNEI3YnliOFVMWFErZkgzalFncXIrVTl0UHVMOHlvaUl1Y0EKLS0tIFgzNE9s\na2xGczF3cGwvWlE1WWVQRzZQU1pGYWVhTWMrMFVhVDEyNnk5OVUKTu95Q714p6la\nRnWX1CNRhMR6sNxjM4AjOT637k+jL4VyAMYQ8YZHzOu9yh3tc+P09aQNjiiZoXcL\ni/C77v2UJw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33677812"],["reveal_at","2026-11-05T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","eabf362ceb07a114670e2a84fc93f6d5c62924b9830899b45808e5fde2abae40"],["ct","ad15b2174fe9aca36f62aadf7be56451fdeabd522010b7c818a815b07f487b81"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r33677812.tlock b/reveal/v5-000018/r33677812.tlock
new file mode 100644
index 0000000..4737ece
--- /dev/null
+++ b/reveal/v5-000018/r33677812.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjc3ODEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKaHoyZ2NaQ21jTnRPczBhSStCNEFUekhGRzQ4Q1JTUHJ0WjIyS3Az
5Z0IyL2ducW5xS1lLc2JWZHRIV1VMQ1Q4VwpDcGU5REh6OEloeUc4TEh5bWoxNExr
6eDM2Q3YrOXVSV2oyRlZsQ2dNeExJZFZISExEMVV1aXlTWCszbVFlQXVpCkwxTTBP
7OEpWNEI3YnliOFVMWFErZkgzalFncXIrVTl0UHVMOHlvaUl1Y0EKLS0tIFgzNE9s
8a2xGczF3cGwvWlE1WWVQRzZQU1pGYWVhTWMrMFVhVDEyNnk5OVUKTu95Q714p6la
9RnWX1CNRhMR6sNxjM4AjOT637k+jL4VyAMYQ8YZHzOu9yh3tc+P09aQNjiiZoXcL
10i/C77v2UJw==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r33706612.ct b/reveal/v5-000018/r33706612.ct
new file mode 100644
index 0000000..521d7af
--- /dev/null
+++ b/reveal/v5-000018/r33706612.ct
Binary files differ
diff --git a/reveal/v5-000018/r33706612.nostr.json b/reveal/v5-000018/r33706612.nostr.json
new file mode 100644
index 0000000..059c723
--- /dev/null
+++ b/reveal/v5-000018/r33706612.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzA2NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcWRxUGRKQ0tOTFVRdFdWdmU2MjdRS2huR1NsRldWWCtzcjEyR0Jr\nY3o5M1AyeHREcUwrbm5UaUlLeDdLdFJsQwpES1ZYS1N3cnRsdUJJYjVZSE40M3F1\nSzdlbnA4REQ0R1FQcENoUkNhcWJFQVRCV0Jwek9abVVncXpCTFQ2YzMwCkdod1ZK\nb21Kb0xtanpzRTlMbExnRzJGWHMzWGdzRlJ5QWNJVVFhOGpQNWMKLS0tIFJhdGdB\nQ0QrT1lQV01XK3NMcUdoNlJaVk1TclVjNmJPZzhNaUhTNjJkWjAKzav6ufKFigS3\nvsYYfaO61e+pfBW93uHZtwfdXiDbrES04tZelkMqNwJYG1u8bQIfLe3kUpRwcTKd\nGWYFFB7F5Q==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33706612"],["reveal_at","2026-11-06T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","bb416315db449fb21a276094787363af64e9621a6622dbfac85e714d6ff525b0"],["ct","63ffce9ff50aba39c3b111a72fc7a84530542803ae9173930e900d41791a235a"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r33706612.tlock b/reveal/v5-000018/r33706612.tlock
new file mode 100644
index 0000000..370fbda
--- /dev/null
+++ b/reveal/v5-000018/r33706612.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzA2NjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKcWRxUGRKQ0tOTFVRdFdWdmU2MjdRS2huR1NsRldWWCtzcjEyR0Jr
5Y3o5M1AyeHREcUwrbm5UaUlLeDdLdFJsQwpES1ZYS1N3cnRsdUJJYjVZSE40M3F1
6SzdlbnA4REQ0R1FQcENoUkNhcWJFQVRCV0Jwek9abVVncXpCTFQ2YzMwCkdod1ZK
7b21Kb0xtanpzRTlMbExnRzJGWHMzWGdzRlJ5QWNJVVFhOGpQNWMKLS0tIFJhdGdB
8Q0QrT1lQV01XK3NMcUdoNlJaVk1TclVjNmJPZzhNaUhTNjJkWjAKzav6ufKFigS3
9vsYYfaO61e+pfBW93uHZtwfdXiDbrES04tZelkMqNwJYG1u8bQIfLe3kUpRwcTKd
10GWYFFB7F5Q==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r33764212.ct b/reveal/v5-000018/r33764212.ct
new file mode 100644
index 0000000..6462783
--- /dev/null
+++ b/reveal/v5-000018/r33764212.ct
Binary files differ
diff --git a/reveal/v5-000018/r33764212.nostr.json b/reveal/v5-000018/r33764212.nostr.json
new file mode 100644
index 0000000..a6c68cc
--- /dev/null
+++ b/reveal/v5-000018/r33764212.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzY0MjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKdUV1SnB4QU8yWVhFUWRWcHJiNTNZQzJJMExROG1yZGV3UFFHMWwv\nT1l6ems5VC9kOThNbXEwQ2tBR1kyZDZvdgpDVmVTWGJUbFlKRmZGSFRTQ3BkUjAx\nZGpxMGFsd2xaNFFWaXJFTEdwUkxVcXE4TkFpaW8rb2VCNWtwdEpmT2dsClFzWUlo\nRVhWMU5wSjZuOStEWWdFZzk2elVzVS83blg3dDk4WXJMRVpvL3MKLS0tIFI0R0hP\ncUV6SjZYbVp3cENZcy9zYmZ0M3BuL3dMQmVGTDl1UkV4VW9lK0kK2Pfm6ugSbYYL\nxHZp/pC6svwYdfeaJMZuOC4KrQQWnyKA70PpXBTQiSdicEB0kpS6v0b2GyE+EAz6\nUL0FMwNlYw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33764212"],["reveal_at","2026-11-08T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","97cf58e32c03aa0af2c4d27a6880ab359247eb8c878e9570a3c17df0c20fcf17"],["ct","a76ce52a80a9928c4a43520f9f3cc1201ca4ab8f1290fe05afae35cd1369002d"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r33764212.tlock b/reveal/v5-000018/r33764212.tlock
new file mode 100644
index 0000000..06b6761
--- /dev/null
+++ b/reveal/v5-000018/r33764212.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzY0MjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKdUV1SnB4QU8yWVhFUWRWcHJiNTNZQzJJMExROG1yZGV3UFFHMWwv
5T1l6ems5VC9kOThNbXEwQ2tBR1kyZDZvdgpDVmVTWGJUbFlKRmZGSFRTQ3BkUjAx
6ZGpxMGFsd2xaNFFWaXJFTEdwUkxVcXE4TkFpaW8rb2VCNWtwdEpmT2dsClFzWUlo
7RVhWMU5wSjZuOStEWWdFZzk2elVzVS83blg3dDk4WXJMRVpvL3MKLS0tIFI0R0hP
8cUV6SjZYbVp3cENZcy9zYmZ0M3BuL3dMQmVGTDl1UkV4VW9lK0kK2Pfm6ugSbYYL
9xHZp/pC6svwYdfeaJMZuOC4KrQQWnyKA70PpXBTQiSdicEB0kpS6v0b2GyE+EAz6
10UL0FMwNlYw==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r33821812.ct b/reveal/v5-000018/r33821812.ct
new file mode 100644
index 0000000..24f1d9b
--- /dev/null
+++ b/reveal/v5-000018/r33821812.ct
Binary files differ
diff --git a/reveal/v5-000018/r33821812.nostr.json b/reveal/v5-000018/r33821812.nostr.json
new file mode 100644
index 0000000..63ac6d7
--- /dev/null
+++ b/reveal/v5-000018/r33821812.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzODIxODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKb2lteTFWMkE0TW9FbklLSDZKZksvM1FiZzdCVzhIQXVvUUs5aThP\nSlpvMWdQV0srSW1zeTNCRGFRWEpuUHFtOApHVW8zMkJtL1RldWdRa0VpM1BrUzdp\nVS80b1EvN0RKczNOeSsxaGxwNE16TkZoaktablhhY05DUFA4OEI1STBCCi9mRVND\nb0s1RWIrRkJCemk0eGNpS0lneFVZRmFwbkp5djB6OS91Ym9jYUEKLS0tIFVNVDll\nZGRhK01lQ2J3WmJwajhGRy9UVzlVM3F6ZFlGZ0F4dVhzMzAvclkKYMsNu5FrgQFm\ngQW0Qu5+JK5Uhyt4+K4us9jVTezgOR8tjSU7rMMhh0/Y1geimTDgI/0GLNTDD/jz\n6J8doRcenA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33821812"],["reveal_at","2026-11-10T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","cf53b0202c610abc05aa70219b1ae30b4c1a5ecadcf2f24f577f1a9948928016"],["ct","f6c5686909b7482d553b94a711779821db7bba0e6773c3ab2e1e89aebbfe3c0f"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r33821812.tlock b/reveal/v5-000018/r33821812.tlock
new file mode 100644
index 0000000..0ac8234
--- /dev/null
+++ b/reveal/v5-000018/r33821812.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzODIxODEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKb2lteTFWMkE0TW9FbklLSDZKZksvM1FiZzdCVzhIQXVvUUs5aThP
5SlpvMWdQV0srSW1zeTNCRGFRWEpuUHFtOApHVW8zMkJtL1RldWdRa0VpM1BrUzdp
6VS80b1EvN0RKczNOeSsxaGxwNE16TkZoaktablhhY05DUFA4OEI1STBCCi9mRVND
7b0s1RWIrRkJCemk0eGNpS0lneFVZRmFwbkp5djB6OS91Ym9jYUEKLS0tIFVNVDll
8ZGRhK01lQ2J3WmJwajhGRy9UVzlVM3F6ZFlGZ0F4dVhzMzAvclkKYMsNu5FrgQFm
9gQW0Qu5+JK5Uhyt4+K4us9jVTezgOR8tjSU7rMMhh0/Y1geimTDgI/0GLNTDD/jz
106J8doRcenA==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r34714612.ct b/reveal/v5-000018/r34714612.ct
new file mode 100644
index 0000000..a040417
--- /dev/null
+++ b/reveal/v5-000018/r34714612.ct
Binary files differ
diff --git a/reveal/v5-000018/r34714612.nostr.json b/reveal/v5-000018/r34714612.nostr.json
new file mode 100644
index 0000000..57f07f0
--- /dev/null
+++ b/reveal/v5-000018/r34714612.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbWFkd2Y3anpmSmwzOUY0QzF6WG1PSlZGc2VOaWsxcE5RVDBmZmRt\nMmU4d0hlRkk4dU5VZG5yZXk5WGlXdGlkcQpFaU4zVUVHQ0ZzdDI0Skp0T1pXbXhS\nRGtUeGVPeGFobTFDOXhDaEp3L1RhdjRVVDR3dnpLbVZ3akpOcnZYenhCClRmeXJU\nb2d2ejlJeWtWTGtFTU94OEFvZ3grbFNLSmVlVWRZZlJsVUxub2cKLS0tIDZ0VmVm\nNlZZL25NU2JGNVR2L1ppSnFzeEllK1A4NDFhNU9kY29ZYmlrY0UKDAUotOt0GRcs\njbuDNJ2AA/Is0SmfPz6iV0mw1ok0u5ooRY5w3eDLHm9+m4hVm8nZrE/7st372BOA\nTH9IZx0PHg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34714612"],["reveal_at","2026-12-11T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","3e627cac2833beb3600036ef4a2447c93880579211dd1b5b432acf91935d2fa2"],["ct","1eb4c270c8f9aac6c437b994af51df71bb6a05e75756862e86a7f870ad36d0ac"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r34714612.tlock b/reveal/v5-000018/r34714612.tlock
new file mode 100644
index 0000000..21eaff8
--- /dev/null
+++ b/reveal/v5-000018/r34714612.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKbWFkd2Y3anpmSmwzOUY0QzF6WG1PSlZGc2VOaWsxcE5RVDBmZmRt
5MmU4d0hlRkk4dU5VZG5yZXk5WGlXdGlkcQpFaU4zVUVHQ0ZzdDI0Skp0T1pXbXhS
6RGtUeGVPeGFobTFDOXhDaEp3L1RhdjRVVDR3dnpLbVZ3akpOcnZYenhCClRmeXJU
7b2d2ejlJeWtWTGtFTU94OEFvZ3grbFNLSmVlVWRZZlJsVUxub2cKLS0tIDZ0VmVm
8NlZZL25NU2JGNVR2L1ppSnFzeEllK1A4NDFhNU9kY29ZYmlrY0UKDAUotOt0GRcs
9jbuDNJ2AA/Is0SmfPz6iV0mw1ok0u5ooRY5w3eDLHm9+m4hVm8nZrE/7st372BOA
10TH9IZx0PHg==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r34743412.ct b/reveal/v5-000018/r34743412.ct
new file mode 100644
index 0000000..dc86446
--- /dev/null
+++ b/reveal/v5-000018/r34743412.ct
Binary files differ
diff --git a/reveal/v5-000018/r34743412.nostr.json b/reveal/v5-000018/r34743412.nostr.json
new file mode 100644
index 0000000..666042f
--- /dev/null
+++ b/reveal/v5-000018/r34743412.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzQzNDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbGVHK3dQY0xkNjhkcnNqcC9NUTAzRk5abGt0dSsvS2RLaGo3NW96\nUlJEWjNETTcrZ01VQ0dJdlZzUEE1NEhXTQpBZndFOFY1VGdFRmF6ZHMwSmJXeTcz\nbmVYNDdiaW1BS213c0JXSUt1MEEwbi9WekRTRWRHRHFpM1BBQjRFZEdTCms1WE5D\nSk0yNzU3ZWR1VGhRa2pOS2dGWnBOUEhuM1R4Q1BNbDhrNXRhcGcKLS0tIE1FU3Jl\nczZETnpld3NXaWlOekUwUzBYdVBGZ0R4Um5yTElFWFNkOUhyUGsKAxh0u7FuCWYf\nUBDNM70JzMgDd7weDa6GPBU8fasMpjv8brOSdsK5h7R3e5EFn189AhsdUjrr4UMT\nlBvMPzBgbA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34743412"],["reveal_at","2026-12-12T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","53d9f473acc297841b4440a652213834547b9e9ce0b9fe0a3a7e6894303ac1bd"],["ct","d209e3329e5d1e1d96af0e696969d248b26e967b585898e2b023bfa54c7bdf69"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r34743412.tlock b/reveal/v5-000018/r34743412.tlock
new file mode 100644
index 0000000..2f47cf6
--- /dev/null
+++ b/reveal/v5-000018/r34743412.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzQzNDEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKbGVHK3dQY0xkNjhkcnNqcC9NUTAzRk5abGt0dSsvS2RLaGo3NW96
5UlJEWjNETTcrZ01VQ0dJdlZzUEE1NEhXTQpBZndFOFY1VGdFRmF6ZHMwSmJXeTcz
6bmVYNDdiaW1BS213c0JXSUt1MEEwbi9WekRTRWRHRHFpM1BBQjRFZEdTCms1WE5D
7Sk0yNzU3ZWR1VGhRa2pOS2dGWnBOUEhuM1R4Q1BNbDhrNXRhcGcKLS0tIE1FU3Jl
8czZETnpld3NXaWlOekUwUzBYdVBGZ0R4Um5yTElFWFNkOUhyUGsKAxh0u7FuCWYf
9UBDNM70JzMgDd7weDa6GPBU8fasMpjv8brOSdsK5h7R3e5EFn189AhsdUjrr4UMT
10lBvMPzBgbA==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r34772212.ct b/reveal/v5-000018/r34772212.ct
new file mode 100644
index 0000000..fd21086
--- /dev/null
+++ b/reveal/v5-000018/r34772212.ct
@@ -0,0 +1,3 @@
1òÆp-E[”œ§•ÿkgafàétú¨�#i†�H˲ä ö<¾!óO5bÖù®>>n%½Ú{ £ [˜hj¬ôLà8ɰøPÊûMŸ±€gÆHÔ
2ƒ:ÿ¿äÎ5;¿O(Ôg�@Þ^³½õqP¸æþºä—Ù³óššð¬ãå+Žß maIñýlPŒ‡Û– Î�ÉÒÂôB“ _@-TùÝÖê�„d �ÔÉ&ZÎÞ$ÓMgÐdi8}M÷{špaáÍÈI*½Û²÷Îs­Ùêë”§z•/XJµÝ¸.Ì·`,$é³Â¥Xf¶ð›¯©FÖù˜tv&B¶ú™öŒÝ~Ø ñ¾R”¸iñ„Z¹�¦(CèC2XD•÷µl© @›¸6¤ªì¢‹ÃýùY,3(åQG‹«@��º½�a==©AFh@Ó­¢Š²cÙÓ‰G¡ÕÅå·ÒÊgBÛ 'e”~žd¬;§É«îù|ØÝ®ÊÜØ³p †9lÁI.>‹@‹,w^8Àž��‰ÆZ˜1·!FÒÃ%Þ–ãg®�zÐõ³ešTÂÿ¶O>Í7w‡ãÞT±@œòÄY®Q×Mxpç¡ßë12W,™­ o:!ï@.�Õå,1�ÿ{ú¶‡¦)ôö«Ñæ%Ž×=º.ÿÆ3}™¢òxò‹µ"<ÃqÒî}MkgG°_¡˜Ú~Âd$ÙÍsQ_¿ÐÌ.*7¯�[‚`}¨@OCŸ‚Ú2 &£@—ë¶g¿Žùll%ðnk y«~R™ŽQP�‹cÝþZƒ·†{
3ÅËç?ÑÑOé PÑ!âHGæ²lï1Ù­—§ý,¹Wˇ^Šc)§�˜wá–gM¶ZAÁ/a¥Ë.™R)˜”ú± \ No newline at end of file
diff --git a/reveal/v5-000018/r34772212.nostr.json b/reveal/v5-000018/r34772212.nostr.json
new file mode 100644
index 0000000..4038f75
--- /dev/null
+++ b/reveal/v5-000018/r34772212.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzcyMjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKajZYd3B6WDVEczZxNTZKcXhlOXBqdVltUXJ6cDR0QU5xdGhBUko1\nNDZZSGR5aDZuWUZBS0hhZkYvRUJWK1RKTgpCU3Rod2RnKy9saWRySzUvQ0RlMzNX\nRitmVFBldTRrZTJGekNIWlhVSzJzTlJEUXhkZHc4TzFLL0xWWjcxMXowClJmZzNl\ndndOU01qelkvenYwMG9KNElUTW05SE5EZWorYUx5eWpvSUxMaW8KLS0tIEZEMUw0\nNjNKR3RISkNMWUNJT29VbzdZVkY4dWdkTFVDOFNRb3Z5cTBnVHcK0eAFyA5lNHQQ\ntGWOuk1WO74TOEN6/mx+xhx9UGoIBfswU8dLs1qisAGgwdSCi9M33vflx8/z+6E2\nUM2x3TAq8w==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34772212"],["reveal_at","2026-12-13T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","25425451d22f438d88f4fc96acb8db9bf9cccb8c6a36c81e9ed2073a73407516"],["ct","c769387d40680949cd4b68ff377f20b56ad03093c525e0ea3fdec1dfacd56125"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r34772212.tlock b/reveal/v5-000018/r34772212.tlock
new file mode 100644
index 0000000..b6a27f8
--- /dev/null
+++ b/reveal/v5-000018/r34772212.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzcyMjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKajZYd3B6WDVEczZxNTZKcXhlOXBqdVltUXJ6cDR0QU5xdGhBUko1
5NDZZSGR5aDZuWUZBS0hhZkYvRUJWK1RKTgpCU3Rod2RnKy9saWRySzUvQ0RlMzNX
6RitmVFBldTRrZTJGekNIWlhVSzJzTlJEUXhkZHc4TzFLL0xWWjcxMXowClJmZzNl
7dndOU01qelkvenYwMG9KNElUTW05SE5EZWorYUx5eWpvSUxMaW8KLS0tIEZEMUw0
8NjNKR3RISkNMWUNJT29VbzdZVkY4dWdkTFVDOFNRb3Z5cTBnVHcK0eAFyA5lNHQQ
9tGWOuk1WO74TOEN6/mx+xhx9UGoIBfswU8dLs1qisAGgwdSCi9M33vflx8/z+6E2
10UM2x3TAq8w==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r34829812.ct b/reveal/v5-000018/r34829812.ct
new file mode 100644
index 0000000..42d2745
--- /dev/null
+++ b/reveal/v5-000018/r34829812.ct
Binary files differ
diff --git a/reveal/v5-000018/r34829812.nostr.json b/reveal/v5-000018/r34829812.nostr.json
new file mode 100644
index 0000000..90a8446
--- /dev/null
+++ b/reveal/v5-000018/r34829812.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODI5ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbEk1SUZpeTBEcExIQVFmS2JaMldSQnN6a3BJUXgvRG5EOTlVVlEw\nSFl1d3pyUzFiMmM3NU0zWndtR0pVbXhLYwpDSktHeEVUTkxiL3I0QmRyeWVGejFG\nWWtxdCtpVEk5M0R5cHU0VkZGRHIzSXF5NHhVL2hMakdMbmVzcy9iQnR3Cnc0OGlN\nMDhuSVJCYnJyN3czQWNGUkh2NnFRRHhCWTVlTDhPNmhZWXh0bVEKLS0tIGpLN2Fi\nL09rZmRSK2hwaDR3OFNCQXlCdEdQMjhIc3pDZU9aU1d5b2ZPN2MKfujA33pU2VTC\n1VGoUuv3uT6p2GCoq0K5RCpnlasq0xrZJ/qdo5SEITNfKxwtooOjTrRgwHHng1/x\n+pyKYBCGrg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34829812"],["reveal_at","2026-12-15T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","e17600a6eb42c5df598d736c2ce2ad3d744d1de800d4f3bb49c5bf6e6dd6416f"],["ct","fab255375ac8f02cea12af9f86a7b4c0569c1fe61bb1126f54a488379f4ecedf"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r34829812.tlock b/reveal/v5-000018/r34829812.tlock
new file mode 100644
index 0000000..a9f89a3
--- /dev/null
+++ b/reveal/v5-000018/r34829812.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODI5ODEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKbEk1SUZpeTBEcExIQVFmS2JaMldSQnN6a3BJUXgvRG5EOTlVVlEw
5SFl1d3pyUzFiMmM3NU0zWndtR0pVbXhLYwpDSktHeEVUTkxiL3I0QmRyeWVGejFG
6WWtxdCtpVEk5M0R5cHU0VkZGRHIzSXF5NHhVL2hMakdMbmVzcy9iQnR3Cnc0OGlN
7MDhuSVJCYnJyN3czQWNGUkh2NnFRRHhCWTVlTDhPNmhZWXh0bVEKLS0tIGpLN2Fi
8L09rZmRSK2hwaDR3OFNCQXlCdEdQMjhIc3pDZU9aU1d5b2ZPN2MKfujA33pU2VTC
91VGoUuv3uT6p2GCoq0K5RCpnlasq0xrZJ/qdo5SEITNfKxwtooOjTrRgwHHng1/x
10+pyKYBCGrg==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r34858612.ct b/reveal/v5-000018/r34858612.ct
new file mode 100644
index 0000000..5a0078a
--- /dev/null
+++ b/reveal/v5-000018/r34858612.ct
Binary files differ
diff --git a/reveal/v5-000018/r34858612.nostr.json b/reveal/v5-000018/r34858612.nostr.json
new file mode 100644
index 0000000..498e404
--- /dev/null
+++ b/reveal/v5-000018/r34858612.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODU4NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaGs2V29EQUNjN3ZtekxQZW0yT1JGRVZPdFZjNWdrQzFXb24yUmVj\nQXJ6clRFTEpLMjZrcXJPMEZtNjVLZGJRUgpCbWVBS1ovSmJ5elV1UEFNWnhrOVhT\nS1hhUENFdm5lbnVDVEQ4d1B4NlB0dUxmVjlHbHB5VDFUMmhWSENOWldPCktWMUJk\ncXdKdHFDK3pnUWlPNWFxNGxqTlVlNkprWFJnbkNGdTJSN0I1eXcKLS0tIHhjMFpK\nUlROZjZBdWxPOVk2QWRtU1JVdWd5eU5USGI2SWYxZ0tsWU94a2MKVzLd1OE9tBad\n7JP9iSLYKo2exqsQAGaJD47qvEyPL2H/QxuFWlSw5YF177CUKR6B27lq1jusYLgJ\n9FKhlmJ50w==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34858612"],["reveal_at","2026-12-16T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","34fa3d3f3af334899e69fcbbe85f0cc3b7184f1a6c659198e37bd81fc25d5752"],["ct","5981d734cb8078cc2c6c975b861c7ef582056bd6592b2200725870558e3b8434"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r34858612.tlock b/reveal/v5-000018/r34858612.tlock
new file mode 100644
index 0000000..821f1bd
--- /dev/null
+++ b/reveal/v5-000018/r34858612.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODU4NjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKaGs2V29EQUNjN3ZtekxQZW0yT1JGRVZPdFZjNWdrQzFXb24yUmVj
5QXJ6clRFTEpLMjZrcXJPMEZtNjVLZGJRUgpCbWVBS1ovSmJ5elV1UEFNWnhrOVhT
6S1hhUENFdm5lbnVDVEQ4d1B4NlB0dUxmVjlHbHB5VDFUMmhWSENOWldPCktWMUJk
7cXdKdHFDK3pnUWlPNWFxNGxqTlVlNkprWFJnbkNGdTJSN0I1eXcKLS0tIHhjMFpK
8UlROZjZBdWxPOVk2QWRtU1JVdWd5eU5USGI2SWYxZ0tsWU94a2MKVzLd1OE9tBad
97JP9iSLYKo2exqsQAGaJD47qvEyPL2H/QxuFWlSw5YF177CUKR6B27lq1jusYLgJ
109FKhlmJ50w==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r34916212.ct b/reveal/v5-000018/r34916212.ct
new file mode 100644
index 0000000..e63ff58
--- /dev/null
+++ b/reveal/v5-000018/r34916212.ct
Binary files differ
diff --git a/reveal/v5-000018/r34916212.nostr.json b/reveal/v5-000018/r34916212.nostr.json
new file mode 100644
index 0000000..57c2306
--- /dev/null
+++ b/reveal/v5-000018/r34916212.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTE2MjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa2EwVU0zbk1zYUNhYUJLcFlaTzN6M2s2T01tOTBaWkIzb1ZRZGkr\nR1QxSmwwdkpNK2x4bUF2TUxIU1FmcGY4bwpDMVViVHpUQWt3ZVVPN0dMZm9VRS9X\nQ3RITWhNY3FBQUxiVUxVNXdBK2dqMDVBTW1pUUVubENrQUVUci9lZkdRCkwyalZx\nYXJEQksrMy9TVVVkRFVkTGtUUWhjYUlNVVpoU2w3Wjh1NUtwYXcKLS0tIDJVdSs2\ndEZmaVd5azdiQXR3WS8yenhSajdhbHdlRUIzUUVuUzhXTnFEWTgKIYRI5BCTw66J\nwgXCgw7twZzDexePbpJHSCV7KatoPmU219mCAn2CJTBa8Cxf5hrX7N+qlPlnACNz\n9FHClB8Ryg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34916212"],["reveal_at","2026-12-18T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","3d8f28b9edef726d86e0fe5dce278c8a4dbaf0b7feb7061d4154d65ff3450a94"],["ct","82f6efc4047dbb4e2afe70910e94fc2af00e242ea4a1555853af3137aa9c4c96"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r34916212.tlock b/reveal/v5-000018/r34916212.tlock
new file mode 100644
index 0000000..d3cd36c
--- /dev/null
+++ b/reveal/v5-000018/r34916212.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTE2MjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKa2EwVU0zbk1zYUNhYUJLcFlaTzN6M2s2T01tOTBaWkIzb1ZRZGkr
5R1QxSmwwdkpNK2x4bUF2TUxIU1FmcGY4bwpDMVViVHpUQWt3ZVVPN0dMZm9VRS9X
6Q3RITWhNY3FBQUxiVUxVNXdBK2dqMDVBTW1pUUVubENrQUVUci9lZkdRCkwyalZx
7YXJEQksrMy9TVVVkRFVkTGtUUWhjYUlNVVpoU2w3Wjh1NUtwYXcKLS0tIDJVdSs2
8dEZmaVd5azdiQXR3WS8yenhSajdhbHdlRUIzUUVuUzhXTnFEWTgKIYRI5BCTw66J
9wgXCgw7twZzDexePbpJHSCV7KatoPmU219mCAn2CJTBa8Cxf5hrX7N+qlPlnACNz
109FHClB8Ryg==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r34973812.ct b/reveal/v5-000018/r34973812.ct
new file mode 100644
index 0000000..8d80786
--- /dev/null
+++ b/reveal/v5-000018/r34973812.ct
Binary files differ
diff --git a/reveal/v5-000018/r34973812.nostr.json b/reveal/v5-000018/r34973812.nostr.json
new file mode 100644
index 0000000..ce2a6d8
--- /dev/null
+++ b/reveal/v5-000018/r34973812.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTczODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa1hVdDdpdGUxTURZejR2eTBsQ0lwQjZaaVVzRnIvRGVRNVZjcFBL\nNGE5UmRTZEMzb0FnaGdPZkxxMFBJdUVoTApEVEtxQS8rVGVLZXVZUHhUem5CRFVB\neUJUM3N0NDY1WndIN21ZYnVldDhSU1Bqd2FqS3hudTR6UWE1RUdSak9YCjhIUW5h\nMHhOK2hidURydVNWdVNFekxoM3RZNGpqRzlLYnNNemtHemtwQW8KLS0tIEwyMU9i\nVi9EM0tPMEVKdnFodFVPKytBWE1zNTAwQlF3dlRCd3VZQTRvK1kKxDwIfmtjjCnq\nNJq69LIjlGExvD4HtblfcJh3DHe3B9nufgOuVNxkOCV9Tg2/KGHivawMBtmuHhU9\nJHr0Z96c4Q==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34973812"],["reveal_at","2026-12-20T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","4324db292023cc81aa2b16ca649ea228120a4e520900a135ada2a629fbd28170"],["ct","f793fe74e4b20b7dc5f9846d8e75fa5d1c2647e30135f66e62ce20bfdf32baf4"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r34973812.tlock b/reveal/v5-000018/r34973812.tlock
new file mode 100644
index 0000000..dfd0376
--- /dev/null
+++ b/reveal/v5-000018/r34973812.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTczODEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKa1hVdDdpdGUxTURZejR2eTBsQ0lwQjZaaVVzRnIvRGVRNVZjcFBL
5NGE5UmRTZEMzb0FnaGdPZkxxMFBJdUVoTApEVEtxQS8rVGVLZXVZUHhUem5CRFVB
6eUJUM3N0NDY1WndIN21ZYnVldDhSU1Bqd2FqS3hudTR6UWE1RUdSak9YCjhIUW5h
7MHhOK2hidURydVNWdVNFekxoM3RZNGpqRzlLYnNNemtHemtwQW8KLS0tIEwyMU9i
8Vi9EM0tPMEVKdnFodFVPKytBWE1zNTAwQlF3dlRCd3VZQTRvK1kKxDwIfmtjjCnq
9NJq69LIjlGExvD4HtblfcJh3DHe3B9nufgOuVNxkOCV9Tg2/KGHivawMBtmuHhU9
10JHr0Z96c4Q==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r35549812.ct b/reveal/v5-000018/r35549812.ct
new file mode 100644
index 0000000..31cf7ce
--- /dev/null
+++ b/reveal/v5-000018/r35549812.ct
Binary files differ
diff --git a/reveal/v5-000018/r35549812.nostr.json b/reveal/v5-000018/r35549812.nostr.json
new file mode 100644
index 0000000..c64269a
--- /dev/null
+++ b/reveal/v5-000018/r35549812.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NTQ5ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKdGRveWdETUh3ZUVRS1NpeWRJYk8zYWs1UU5DamxUbzMwVldEN0Nh\nalZ4SEZ6bktieEdHWUtRNENvaDhVSnErbQpEeitOYWU5ekcxeld6c1dYbGpVT1dm\nb0E3Zit3KzdlV0hWb1FtMHVLZ1dmQ2VOdW1OckNkalFLUzE3aWp4b1cyCkx3Qnoz\naGlUZm9mWnFmbmxyc1crVkN3d2lXVmJpN0RlSjAraHE0N1owd28KLS0tIGI1Szln\ndzA3cXFzalJEYVNScW5XUUFxVy9KNTZreDcrQ3I3Y0loVlRHSTQKsIkpTHFEQ5gx\nA+MXknruTymAJqqqiMLlA4JdBO8Oxwqvuhp5kYbK3j/Zm3MNeUkLd6AIyVCBjNhC\nfV6nJl66OA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35549812"],["reveal_at","2027-01-09T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","a15a893e6dc19af29cde17e7837527acb2f532941734e792c7289cf36c32c71c"],["ct","3252be91970848e2cc176eed262aadf50d0d87a52ffa93eb691bfc4a33be2710"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r35549812.tlock b/reveal/v5-000018/r35549812.tlock
new file mode 100644
index 0000000..a7ab615
--- /dev/null
+++ b/reveal/v5-000018/r35549812.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NTQ5ODEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKdGRveWdETUh3ZUVRS1NpeWRJYk8zYWs1UU5DamxUbzMwVldEN0Nh
5alZ4SEZ6bktieEdHWUtRNENvaDhVSnErbQpEeitOYWU5ekcxeld6c1dYbGpVT1dm
6b0E3Zit3KzdlV0hWb1FtMHVLZ1dmQ2VOdW1OckNkalFLUzE3aWp4b1cyCkx3Qnoz
7aGlUZm9mWnFmbmxyc1crVkN3d2lXVmJpN0RlSjAraHE0N1owd28KLS0tIGI1Szln
8dzA3cXFzalJEYVNScW5XUUFxVy9KNTZreDcrQ3I3Y0loVlRHSTQKsIkpTHFEQ5gx
9A+MXknruTymAJqqqiMLlA4JdBO8Oxwqvuhp5kYbK3j/Zm3MNeUkLd6AIyVCBjNhC
10fV6nJl66OA==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r35722612.ct b/reveal/v5-000018/r35722612.ct
new file mode 100644
index 0000000..e2923b5
--- /dev/null
+++ b/reveal/v5-000018/r35722612.ct
Binary files differ
diff --git a/reveal/v5-000018/r35722612.nostr.json b/reveal/v5-000018/r35722612.nostr.json
new file mode 100644
index 0000000..bc518fb
--- /dev/null
+++ b/reveal/v5-000018/r35722612.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NzIyNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcEdoaythY1ZCcEdaRVREdUF3TjRMYnZXenhvSXNwY0RFODhSZ3ZG\nOFdzOVNHTml4b0VrdDdCZjVuS0t1eGVydwpFZjBpdFZuMnQzYklNN2t6L1BlZGwv\nRzFDSXV3SGwra1JkS3Rnclo1dTMva0NrOGZldi9ZT1lZc3ZpQlc3NDByCllxYXZO\nZnZvY1VicXFjUmZzc2lNOGVSdkdDcFBGaDEwcnVKVk9QamN2OG8KLS0tIGl3dmtM\nc3U3TXlmeFZnSXI2S1J1WkJZYnhvQ1FFd25uaW1RUVVwdEtZQnMK1mhJFZXyNLYS\nP9+phEa7v2b/Ccws42qmDHnwEaEyEfmm4NSLrZ8NjltbvAEijUnlggcY5rejqdSJ\noO7S4PJxBA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35722612"],["reveal_at","2027-01-15T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","ad75bf2acdbf2a399be5a4ff0c5a38de1a21814e8d070f6cdf80364c8227a2e9"],["ct","2a02b82e091ef1b5c31294c8032beaf9a19514523e524f2dc6a48b31be3fa947"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r35722612.tlock b/reveal/v5-000018/r35722612.tlock
new file mode 100644
index 0000000..3837cea
--- /dev/null
+++ b/reveal/v5-000018/r35722612.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NzIyNjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKcEdoaythY1ZCcEdaRVREdUF3TjRMYnZXenhvSXNwY0RFODhSZ3ZG
5OFdzOVNHTml4b0VrdDdCZjVuS0t1eGVydwpFZjBpdFZuMnQzYklNN2t6L1BlZGwv
6RzFDSXV3SGwra1JkS3Rnclo1dTMva0NrOGZldi9ZT1lZc3ZpQlc3NDByCllxYXZO
7ZnZvY1VicXFjUmZzc2lNOGVSdkdDcFBGaDEwcnVKVk9QamN2OG8KLS0tIGl3dmtM
8c3U3TXlmeFZnSXI2S1J1WkJZYnhvQ1FFd25uaW1RUVVwdEtZQnMK1mhJFZXyNLYS
9P9+phEa7v2b/Ccws42qmDHnwEaEyEfmm4NSLrZ8NjltbvAEijUnlggcY5rejqdSJ
10oO7S4PJxBA==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r35895412.ct b/reveal/v5-000018/r35895412.ct
new file mode 100644
index 0000000..8a6757a
--- /dev/null
+++ b/reveal/v5-000018/r35895412.ct
Binary files differ
diff --git a/reveal/v5-000018/r35895412.nostr.json b/reveal/v5-000018/r35895412.nostr.json
new file mode 100644
index 0000000..8758999
--- /dev/null
+++ b/reveal/v5-000018/r35895412.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1ODk1NDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa21naENocHRJZnZ6bjdFeGFHRGRsSTVDdFBqNlNCYkNKOWdldmNV\nbVhITXpPVEcvWmRaYkN1SE9rUGhuOE9mMwpBNkVUMHduLy9iLzZXNzBNMUR0WGZM\nRUlRS0crMy9OSU5XTVVlZEdGVkppZHEyZ0oxeEw1R0RXVEdmM3FqeDdpClRRdlFy\nbWJBNXBHdXYxRU1qMDB1RDZMOE85ZTdtQzJXZUNJRFI1MkJyNFkKLS0tIFI4Y3hj\nN285SitOUUk2RjlpTGJZMSt5V1ZPUWt5Wmt5MUhwbVZ5aDhETVEK3cCKck6x8Bry\nDzCQTt4XLXC4zQjwZ4xMz2HYEi7t2uGBDpaK5Exvp7L3KcQyci/ifLaHpkARjAUm\nsE+uerjVEA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35895412"],["reveal_at","2027-01-21T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","2d369ad6767365fea847261d601c68d11f4ca6eca05bef8b43374d429fbfcc2b"],["ct","1cf0cac25676c327339b0760a69f2b60981d738bec8fbad04dc784c24aa7b653"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r35895412.tlock b/reveal/v5-000018/r35895412.tlock
new file mode 100644
index 0000000..79db532
--- /dev/null
+++ b/reveal/v5-000018/r35895412.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1ODk1NDEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKa21naENocHRJZnZ6bjdFeGFHRGRsSTVDdFBqNlNCYkNKOWdldmNV
5bVhITXpPVEcvWmRaYkN1SE9rUGhuOE9mMwpBNkVUMHduLy9iLzZXNzBNMUR0WGZM
6RUlRS0crMy9OSU5XTVVlZEdGVkppZHEyZ0oxeEw1R0RXVEdmM3FqeDdpClRRdlFy
7bWJBNXBHdXYxRU1qMDB1RDZMOE85ZTdtQzJXZUNJRFI1MkJyNFkKLS0tIFI4Y3hj
8N285SitOUUk2RjlpTGJZMSt5V1ZPUWt5Wmt5MUhwbVZ5aDhETVEK3cCKck6x8Bry
9DzCQTt4XLXC4zQjwZ4xMz2HYEi7t2uGBDpaK5Exvp7L3KcQyci/ifLaHpkARjAUm
10sE+uerjVEA==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r35981812.ct b/reveal/v5-000018/r35981812.ct
new file mode 100644
index 0000000..69121df
--- /dev/null
+++ b/reveal/v5-000018/r35981812.ct
@@ -0,0 +1,4 @@
1í·)ÍS6¬8ùxAC¬jh­x*¼‰ÔÝ4"H­°É„øÞ>‹dÈʺó(ŒáS%÷K‰›ƒ–$ 7ù¿6›‰áµµV¨Øë¡Çëƒü:šz@(‰KáO©±¢“¼.e®ã¢p³J‚pßÓ[ú=‰’�D_:¿„}TzEéÌûœu—B8{´]ù0Ÿèú
2´Ü,&GõÉØ^†âÁ­½Õím}çøÃ‚~à7ÞM¶ªÎ¥hj=|­räRá{% äÉ¥+Œ1b™Ž¶ˆq2š
3mãŒêØxŠCs­žÝ'›ïå0H=ƒ¿‰“·¼P&ÐÞô>Þ|»Ê/ù¢ ¤A1¢‹ÑÛ—O 1:·äï÷ûÅú »sdÁCó.]‰ ’Q!q.¯ï(å¡@ŠM7™2ƒóG@ÐΑ©Áùë/¼GXq[Ë•(g†òDý"ÉA#Éô“k¿�Eñ8?NW‡aR8ð¢Ìßê¶È÷3Jª<� ˜#++cÍî‰PžõÞc’_€Æ…¶³aŒLföÍ|�çf\À+û‘dÐ7¤ÕóÁ$ÛY“x£¨c¾­aÓ„¶Óe9$Ôè‹[¶M%±}OP§F,A9ù=ŽªgËéšÙ=Ú° €Õ^ 0þĨNÆ_Ç­ü�)$Ûõ …·k©[q(½†Ý7-·mkãgˆ±ó¸Ec× ªð+[ák‡C63!PÌê˜ÝΈ׌G¤¸è1i‚/ÕÆ¨ BŒnv‘6bδ`ï?7)O[ȱg»%?ïöyøŽ•«R’’Б«�áB¨¯ûsM@›5ˆé& \kDž¸�iø�ïÂ}¼-Íâê
44.&Zo)Gìæîš \ No newline at end of file
diff --git a/reveal/v5-000018/r35981812.nostr.json b/reveal/v5-000018/r35981812.nostr.json
new file mode 100644
index 0000000..dfa266c
--- /dev/null
+++ b/reveal/v5-000018/r35981812.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1OTgxODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaWFIYWxEbHQxL3NRQXZTWUtMZVpvN2VnOWEwWGRlY3c4Rk1YRHlK\nSzM0YzNOS2M4cnU0dWNMTkRoVDl4U2JmQQpFZ1lueE92R2ZuaFFPMXA5WFBlNGkx\nWi9mUzhPVjh1R1Q0THlVM00vVFpwRDRjNGNFdXhYZFJYSWVGa2o5akpoCmp4dE9E\nelY4akNwVFN5cGtZQmtXSHV0dXYrZUFCdjBpd2RxT1BmM0hvak0KLS0tIDV3TUNr\nQlI5TTRYdUdlSitzQXFnbVp2UVAzQ2NIUDEvRkFUU3NmVXdzRHcKexiHQzsVa9Ib\n5AgsdF/Q/8c5qT6QXNJigSiSbHeZC891syMkryjkeVI3yBS2bXJfhH7CGmSiQgCs\nvYw8AaiwvQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35981812"],["reveal_at","2027-01-24T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","aeb469431be6de7bdf5e9726bd96ac8aa69f5a70dcbc516e22600c52afcc46f5"],["ct","1fef493252b43e48962012f4b1b2082d5a8f5baf17bfc3dc672bbc74d2ba7cde"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r35981812.tlock b/reveal/v5-000018/r35981812.tlock
new file mode 100644
index 0000000..85ccef5
--- /dev/null
+++ b/reveal/v5-000018/r35981812.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1OTgxODEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKaWFIYWxEbHQxL3NRQXZTWUtMZVpvN2VnOWEwWGRlY3c4Rk1YRHlK
5SzM0YzNOS2M4cnU0dWNMTkRoVDl4U2JmQQpFZ1lueE92R2ZuaFFPMXA5WFBlNGkx
6Wi9mUzhPVjh1R1Q0THlVM00vVFpwRDRjNGNFdXhYZFJYSWVGa2o5akpoCmp4dE9E
7elY4akNwVFN5cGtZQmtXSHV0dXYrZUFCdjBpd2RxT1BmM0hvak0KLS0tIDV3TUNr
8QlI5TTRYdUdlSitzQXFnbVp2UVAzQ2NIUDEvRkFUU3NmVXdzRHcKexiHQzsVa9Ib
95AgsdF/Q/8c5qT6QXNJigSiSbHeZC891syMkryjkeVI3yBS2bXJfhH7CGmSiQgCs
10vYw8AaiwvQ==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r36701812.ct b/reveal/v5-000018/r36701812.ct
new file mode 100644
index 0000000..a53fb38
--- /dev/null
+++ b/reveal/v5-000018/r36701812.ct
Binary files differ
diff --git a/reveal/v5-000018/r36701812.nostr.json b/reveal/v5-000018/r36701812.nostr.json
new file mode 100644
index 0000000..bdd83ac
--- /dev/null
+++ b/reveal/v5-000018/r36701812.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2NzAxODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKakZQdXRjQWF2cDZISzUvNm5BWXZvSDhzTHJXc3gvK3FiQ0RWQWd6\nYlpXUTJIRnNoclQwTFlsVnZOeC9aQXc0VApDRW5rV0wrRStQbitWSzhzdEJ4Mi95\nTjl0Q2thMG04YXlsMVhVRVZoeWxFalZkUm1JSCsyQm9qSnlyU3NwSkdmCmMxRUtN\nY1ZIR3RpZUc2ZmwzUnBObkdMQnZxbTJSNzE0OFVhUTl0NTFyR3MKLS0tIENHR3ox\nKzJDOGdNRm9pb09UVGtWNVVWaEh0Sk9Kd21KSS9EcGM4N0MzVFUKmVp/Rz4jdZdr\nrLKAvgxSXVji5qyS83k05F+99zR0CTuvFjmIQl+7qJxdwldIkMZ+bwSTKRwTElaS\nT5d1JHGdbg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36701812"],["reveal_at","2027-02-18T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","43d4cf0ae1126c4c5914b52396aa4d12da821781f51146216f0ea9c621f32873"],["ct","4e0b53a52cae12d816743d9f7414273c19824528b1ad9cff50a164078a691905"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r36701812.tlock b/reveal/v5-000018/r36701812.tlock
new file mode 100644
index 0000000..9381247
--- /dev/null
+++ b/reveal/v5-000018/r36701812.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2NzAxODEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKakZQdXRjQWF2cDZISzUvNm5BWXZvSDhzTHJXc3gvK3FiQ0RWQWd6
5YlpXUTJIRnNoclQwTFlsVnZOeC9aQXc0VApDRW5rV0wrRStQbitWSzhzdEJ4Mi95
6Tjl0Q2thMG04YXlsMVhVRVZoeWxFalZkUm1JSCsyQm9qSnlyU3NwSkdmCmMxRUtN
7Y1ZIR3RpZUc2ZmwzUnBObkdMQnZxbTJSNzE0OFVhUTl0NTFyR3MKLS0tIENHR3ox
8KzJDOGdNRm9pb09UVGtWNVVWaEh0Sk9Kd21KSS9EcGM4N0MzVFUKmVp/Rz4jdZdr
9rLKAvgxSXVji5qyS83k05F+99zR0CTuvFjmIQl+7qJxdwldIkMZ+bwSTKRwTElaS
10T5d1JHGdbg==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r36817012.ct b/reveal/v5-000018/r36817012.ct
new file mode 100644
index 0000000..7f01e1b
--- /dev/null
+++ b/reveal/v5-000018/r36817012.ct
Binary files differ
diff --git a/reveal/v5-000018/r36817012.nostr.json b/reveal/v5-000018/r36817012.nostr.json
new file mode 100644
index 0000000..f24431d
--- /dev/null
+++ b/reveal/v5-000018/r36817012.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODE3MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbUwreUY4VE9VcDlTRXBYeDJWZVJyUUhybUFsbDNBSFVrY3kreXJl\nQnJQMWFuSlRHTzdlNjN5NWV2aU4yZlFENQpBUmo4bzZjZFN5SVRuSWlITWxHUVpB\nUEc4YThhTU4wNU1KL2JuaHdybnNXQnkvN3ZjdnVRcTZQT25pcGFJZ2lZCjB3MVRL\nbFRHMDluSk5jV1VEclpEbGJVTHJlRW4yd1FaSGlkNC85MW1yb0UKLS0tIFFzaVZK\nb0xrV1VOZTlNd25GaEJGSjM0RjdUK3JFOGZXejQ2dWtzNDhBeDAKIG591lAOIaew\n6LoxLfPhz6JdisX1lp8IlPMdcMp0maFfrqLRgwjmlHlJlmvEm8naOsRAhtWRyDCM\n3GPX3AI1vQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36817012"],["reveal_at","2027-02-22T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","e545deaefb9cd9348ebe560a0e5147d4bdfd57d6d4e36623816b7767e1e65775"],["ct","f96576eac983b02817e41427d2a0919dd7caa31fa5e2d532cfa2e91f5c1eb353"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r36817012.tlock b/reveal/v5-000018/r36817012.tlock
new file mode 100644
index 0000000..546b58e
--- /dev/null
+++ b/reveal/v5-000018/r36817012.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODE3MDEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKbUwreUY4VE9VcDlTRXBYeDJWZVJyUUhybUFsbDNBSFVrY3kreXJl
5QnJQMWFuSlRHTzdlNjN5NWV2aU4yZlFENQpBUmo4bzZjZFN5SVRuSWlITWxHUVpB
6UEc4YThhTU4wNU1KL2JuaHdybnNXQnkvN3ZjdnVRcTZQT25pcGFJZ2lZCjB3MVRL
7bFRHMDluSk5jV1VEclpEbGJVTHJlRW4yd1FaSGlkNC85MW1yb0UKLS0tIFFzaVZK
8b0xrV1VOZTlNd25GaEJGSjM0RjdUK3JFOGZXejQ2dWtzNDhBeDAKIG591lAOIaew
96LoxLfPhz6JdisX1lp8IlPMdcMp0maFfrqLRgwjmlHlJlmvEm8naOsRAhtWRyDCM
103GPX3AI1vQ==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r36874612.ct b/reveal/v5-000018/r36874612.ct
new file mode 100644
index 0000000..7925aba
--- /dev/null
+++ b/reveal/v5-000018/r36874612.ct
Binary files differ
diff --git a/reveal/v5-000018/r36874612.nostr.json b/reveal/v5-000018/r36874612.nostr.json
new file mode 100644
index 0000000..87a6e10
--- /dev/null
+++ b/reveal/v5-000018/r36874612.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODc0NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKak9FREJUdVN1b25TR21DZU5hcFZycTQzWFhSSFNQd3h6MHd2Q2Rn\nWFJGL3ZidEQ4OGhiUk9YaFpzd1VQTWtiKwpBQ216Z2ppaUVtditlTEVxdTJpMTJm\nZ2ZtZG4zY2dHS21QOHJSY01KVzV6c21QMjhYbjU2MzBKSGcyTHB4b0FLCko4Mmgx\nOEhLakVXSVZJS1pnYUszekRmTzhXa0RhQUsvRnlHbWo4anRzbUkKLS0tIEp2OVlL\neVUwMlBmaXgzTVJyNmNqQk5pOVNJY3ZPZ2dLaEIzeHRBYlZ1NmcK6Qmaf1/hZ8+i\nRwVic6asEIr6E+xsseuODcZC+/yy5Eyj/EwfTIDZm8XtcCkoBt0DrbHzPLQr2bHY\nO/EwMaWRoA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36874612"],["reveal_at","2027-02-24T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","8fa7e26c4fd05c475f5c3a6cd202bb0df2087ccb76fed5c5154447de8c2be91f"],["ct","28bb6be758b988fca4458f2d496ff5b474cc9ee01df7d433a11c8dfce817d6e6"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r36874612.tlock b/reveal/v5-000018/r36874612.tlock
new file mode 100644
index 0000000..df08555
--- /dev/null
+++ b/reveal/v5-000018/r36874612.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODc0NjEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKak9FREJUdVN1b25TR21DZU5hcFZycTQzWFhSSFNQd3h6MHd2Q2Rn
5WFJGL3ZidEQ4OGhiUk9YaFpzd1VQTWtiKwpBQ216Z2ppaUVtditlTEVxdTJpMTJm
6Z2ZtZG4zY2dHS21QOHJSY01KVzV6c21QMjhYbjU2MzBKSGcyTHB4b0FLCko4Mmgx
7OEhLakVXSVZJS1pnYUszekRmTzhXa0RhQUsvRnlHbWo4anRzbUkKLS0tIEp2OVlL
8eVUwMlBmaXgzTVJyNmNqQk5pOVNJY3ZPZ2dLaEIzeHRBYlZ1NmcK6Qmaf1/hZ8+i
9RwVic6asEIr6E+xsseuODcZC+/yy5Eyj/EwfTIDZm8XtcCkoBt0DrbHzPLQr2bHY
10O/EwMaWRoA==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r37047412.ct b/reveal/v5-000018/r37047412.ct
new file mode 100644
index 0000000..8abbd48
--- /dev/null
+++ b/reveal/v5-000018/r37047412.ct
Binary files differ
diff --git a/reveal/v5-000018/r37047412.nostr.json b/reveal/v5-000018/r37047412.nostr.json
new file mode 100644
index 0000000..82c7c26
--- /dev/null
+++ b/reveal/v5-000018/r37047412.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3MDQ3NDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcnNUUE5zNDIrNmVFalN1cDB2SU9DNy9IaTE2a1RHaU1ZUjg3Szlu\nVExhdk1SWHFVR1l3ZkU5MzRURjFWem5uVwpFZzUzT2V1MzV5ZzRIMGNvcURXa3lT\nN2dIcjh3eHFydytNR25ZQUlya3E5TnRFWWNSWW5DUTRNOExMTHhhYkxQCkJnRXFO\nZTQva1JOaTBXYU9nTGFDRnVRUlNZTldBZ3ZVdndrdmNYRmxuZkUKLS0tIDQzd0pz\nc3dPOWVQR3R2dUpiK1V3ZHNCMWwrUG9FcWNCWlZqeWF2ZHBKclUKJKQ6bGbphaU0\nYGZB8UJH3B5CLDFxKRDSb9r8WNWkT+EueM/eRHj2lF1Ow/oii1uG/nOhrK/N3mv0\n8slt4tVTnQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","37047412"],["reveal_at","2027-03-02T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","3f6b83791864bd2a4546f3725c9879138b0e961605bc0fa5f523a797673bef8b"],["ct","01642f7132abc2c3a4a1ef60cfa703c701d4d97c1c0f26d76c8eea25fec3ae13"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r37047412.tlock b/reveal/v5-000018/r37047412.tlock
new file mode 100644
index 0000000..f42c4f0
--- /dev/null
+++ b/reveal/v5-000018/r37047412.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3MDQ3NDEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKcnNUUE5zNDIrNmVFalN1cDB2SU9DNy9IaTE2a1RHaU1ZUjg3Szlu
5VExhdk1SWHFVR1l3ZkU5MzRURjFWem5uVwpFZzUzT2V1MzV5ZzRIMGNvcURXa3lT
6N2dIcjh3eHFydytNR25ZQUlya3E5TnRFWWNSWW5DUTRNOExMTHhhYkxQCkJnRXFO
7ZTQva1JOaTBXYU9nTGFDRnVRUlNZTldBZ3ZVdndrdmNYRmxuZkUKLS0tIDQzd0pz
8c3dPOWVQR3R2dUpiK1V3ZHNCMWwrUG9FcWNCWlZqeWF2ZHBKclUKJKQ6bGbphaU0
9YGZB8UJH3B5CLDFxKRDSb9r8WNWkT+EueM/eRHj2lF1Ow/oii1uG/nOhrK/N3mv0
108slt4tVTnQ==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/r37969012.ct b/reveal/v5-000018/r37969012.ct
new file mode 100644
index 0000000..10e3b42
--- /dev/null
+++ b/reveal/v5-000018/r37969012.ct
Binary files differ
diff --git a/reveal/v5-000018/r37969012.nostr.json b/reveal/v5-000018/r37969012.nostr.json
new file mode 100644
index 0000000..45f2996
--- /dev/null
+++ b/reveal/v5-000018/r37969012.nostr.json
@@ -0,0 +1 @@
{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3OTY5MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa1FHSllCZHhCTFlLZTN6ak8wUE9YVUFrMC9jWWlhb2NDeUw1Z0lN\nWUJKdzBRRklXWUpHVFE2YnFTeWJFRkhENgpETGU1UEkwa2lEY0dFOHdubVlLaWor\nb0JvUkJmZEgvcUM3Tk1DdGlFRzVhVitWVnJUY2J6WWVWS2ZXZG93Y1RrCitUMG4y\nOGFveEtDZUhyOU13dThBbXlnUDVSUjFwOU45cWV2Vks1cmJLR1UKLS0tIExkQVFh\neE1JbG5Xa3lCazRWcERobFBMbUJZd0FoRUZZd1Zmd1VCaFZWRjQKfMlf2oH0KtMs\nRCa/CqkmaAuV5Iq3MEMQi/d8h7UnPHkGIr6YH5/fqqnFgsbGyD1kptQGhPXbHchp\nKOsUSBcPRg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","37969012"],["reveal_at","2027-04-03T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","6706bca0a56c8095f95571ff5ce3a66039f849d589485f2089c4dd8ff4eb85a2"],["ct","c7ef0973aae9b7ded3e6317cfbfdf27b83810ceee60e9510ded9f3301a7aa2e9"],["seal","a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0"]]}
diff --git a/reveal/v5-000018/r37969012.tlock b/reveal/v5-000018/r37969012.tlock
new file mode 100644
index 0000000..e984c96
--- /dev/null
+++ b/reveal/v5-000018/r37969012.tlock
@@ -0,0 +1,11 @@
1-----BEGIN AGE ENCRYPTED FILE-----
2YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3OTY5MDEyIDUyZGI5YmE3
3MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw
4MGM4NGU5NzEKa1FHSllCZHhCTFlLZTN6ak8wUE9YVUFrMC9jWWlhb2NDeUw1Z0lN
5WUJKdzBRRklXWUpHVFE2YnFTeWJFRkhENgpETGU1UEkwa2lEY0dFOHdubVlLaWor
6b0JvUkJmZEgvcUM3Tk1DdGlFRzVhVitWVnJUY2J6WWVWS2ZXZG93Y1RrCitUMG4y
7OGFveEtDZUhyOU13dThBbXlnUDVSUjFwOU45cWV2Vks1cmJLR1UKLS0tIExkQVFh
8eE1JbG5Xa3lCazRWcERobFBMbUJZd0FoRUZZd1Zmd1VCaFZWRjQKfMlf2oH0KtMs
9RCa/CqkmaAuV5Iq3MEMQi/d8h7UnPHkGIr6YH5/fqqnFgsbGyD1kptQGhPXbHchp
10KOsUSBcPRg==
11-----END AGE ENCRYPTED FILE-----
diff --git a/reveal/v5-000018/seal.json b/reveal/v5-000018/seal.json
new file mode 100644
index 0000000..6c306c1
--- /dev/null
+++ b/reveal/v5-000018/seal.json
@@ -0,0 +1,43 @@
1{
2 "algorithm": "sha256-live-v5",
3 "anchor_ref": "sha256:a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0",
4 "covers_after": "2026-10-10T00:40:08.667562Z",
5 "covers_through": "2026-10-10T21:24:24.282938Z",
6 "digest": "a4f3fd1e94554f8ade009a8120fac5c35d5394dd84d0676831c620c3392bdec0",
7 "follows_seq": 48,
8 "n_forecasts": 2174,
9 "n_groups": 22,
10 "n_withheld": 2174,
11 "prev_digest": "96bc56257175d4d0f443178387ce7d3af598dbb1c85dd7c226c21e38f4b270a0",
12 "prev_seq": 17,
13 "sealed_at": "2026-10-10T21:24:58.342574Z",
14 "seq": 18,
15 "variant": {
16 "beacon": {
17 "chain_hash": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",
18 "genesis_time": 1692803367,
19 "period": 3,
20 "relays": [
21 "https://api.drand.sh",
22 "https://api2.drand.sh",
23 "https://api3.drand.sh",
24 "https://drand.cloudflare.com"
25 ],
26 "scheme": "bls-unchained-g1-rfc9380"
27 },
28 "cipher": "chacha20poly1305-zlib6-nonce0",
29 "gate": {
30 "default": "withheld: a kept salt can be released later; an opened text can never be withdrawn",
31 "opened": "none",
32 "why": "no decision by Echo yet"
33 },
34 "line": "numeric<TAB>open:<v4 line> | numeric<TAB>withheld:sha256(salt||v4 line)",
35 "reveal": "utc-day-after-close",
36 "salts": "key ring: one content a seal, one part a line",
37 "tool": {
38 "name": "tle",
39 "sha256": "69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541",
40 "version": "tlock v1.2.0 -- github.com/drand/tlock"
41 }
42 }
43}