From 40d589a093f6964e1cddd6394da50ea5caa7ae37 Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Mon, 26 Oct 2026 06:45:53 -0300 Subject: [PATCH] test: sample Mongo recovery within the original phase deadline Refs #341. --- .github/workflows/build.yml | 4 + docs/qualification/portable-state-worker.md | 42 + .../portable-state-mongo-sampling.ts | 106 + .../portable-state-worker-mongo.ts | 115 +- .../qualification/portable-state-worker.ts | 31 +- .../portable-state-worker/mongo-1244.json | 6075 +++++++++++++++++ .../portable-state-worker/mongo-1244.md | 18 + .../portable-state-mongo-admission-red.mjs | 72 + .../portable-state-mongo-sampling-fixture.mjs | 100 + tests/unit/portable-state-mongo-sampling.mjs | 304 + 10 files changed, 6836 insertions(+), 31 deletions(-) create mode 100644 scripts/qualification/portable-state-mongo-sampling.ts create mode 100644 tests/fixtures/portable-state-worker/mongo-1244.json create mode 100644 tests/fixtures/portable-state-worker/mongo-1244.md create mode 100644 tests/unit/portable-state-mongo-admission-red.mjs create mode 100644 tests/unit/portable-state-mongo-sampling-fixture.mjs create mode 100644 tests/unit/portable-state-mongo-sampling.mjs diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ec22f2b4..950b0d1c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,6 +44,10 @@ jobs: run: bun check -p scripts/qualification/tsconfig.json - name: Check retained Wire source and replay credits with native Node run: node --experimental-strip-types scripts/qualification/check-wire-replay-fixture.mjs + - name: Check coherent Mongo qualification sampling with native Node + run: | + node --experimental-strip-types tests/unit/portable-state-mongo-sampling.mjs + node --experimental-strip-types tests/unit/portable-state-mongo-admission-red.mjs characterize - name: Check portable state source and fixture ownership guards run: python3 tests/fixtures/portable-state-worker/test_helpers.py - name: Verify published native Wire CPU evidence diff --git a/docs/qualification/portable-state-worker.md b/docs/qualification/portable-state-worker.md index 774be962..b58481c0 100644 --- a/docs/qualification/portable-state-worker.md +++ b/docs/qualification/portable-state-worker.md @@ -696,3 +696,45 @@ foreign process records do not count as the held original's terminal state. The native controlled-record regression exercises both pre-inspection and post-snapshot guards without Docker or service actions. It establishes no source, end or restart authority. + +## Coherent logical/API/physical Mongo sampling (#341) + +At physical barriers, the driver carries the deadline returned by the original invalid-mapping +isolation phase into the complete logical/API/physical sample. It never starts a fresh physical +window or resets the phase on a retry. A qualification-only recovery adapter caps its read timeout +to the remaining phase budget; API requests and every supported native read use that same remainder. +The original worker liveness, diagnostic-error, source hold and exact replica ownership guards still +run. A read stays awaited through settlement; completion or capture/fsync after expiration cannot +pass the phase. + +Each sample obtains a fresh detached recovery view and an actual unavailable API response before +the strict physical inspection. Rows, keys/values, receipts, bindings/generations, source/digest, +checkpoint, storage version, namespace/read consistency and server identity remain strict. An exact +same-source generic admission reason, or the corresponding reason-only change between snapshots, +is classified only after the complete physical checks. Every other mismatch is fatal. A later +required-field-error sample must pass using its own logical/API observations. Earlier views cannot +satisfy it, and permanent admission-pending still fails within the inherited deadline. + +`mongo-physical-samples/NNN-physical-mongo.json` retains every attempted physical sample, including +rejected samples, completed bounded server/namespace/metadata/snapshot/row observations, timeout +bounds and original errors/causes. Early fatal failures retain the partial observations and mark +the inspection incomplete. `report.mongoPhysicalSamples` records attempt/rejection/coherent-sample +counts, file bytes/hashes and explicit capture failures. Records are exclusive and synced; none is +silently dropped or overwritten. Diagnostic capture allows 64 records, 8 MiB per record and 64 MiB +in total; exhaustion/serialization/write failure is fatal. The original physical read bounds +(9 projections, 256 rows, 4,096 receipts, 1 MiB per document, 4 MiB total, at most 5 seconds per +operation) remain unchanged. A coherent-sample count is not a phase or run acceptance verdict. + +```sh +node --experimental-strip-types tests/unit/portable-state-mongo-sampling.mjs +node --experimental-strip-types tests/unit/portable-state-mongo-admission-red.mjs characterize +``` + +The second command preserves the original red-capable 1243/1244 controller/runtime/adapter/auditor +loop; use `red` instead of `characterize` for its intentional nonzero assertion. The first also +uses the real Fastify query handler and tests transient/snapshot settlement, permanent pending, +expired/held/timed-out reads, each independent invariant, and capture limits/failures on native +Node 24/26. Mongo transport is controlled; the tests return no source proofs or successful +revalidation. They establish no real-server durability or historical transaction ordering. +The original failed Linux run remains failed. Focused real Mongo checks and a fresh full +`1..1480` worker replay, strict shutdown and physical cleanup remain separate qualification gates. diff --git a/scripts/qualification/portable-state-mongo-sampling.ts b/scripts/qualification/portable-state-mongo-sampling.ts new file mode 100644 index 00000000..f2f29270 --- /dev/null +++ b/scripts/qualification/portable-state-mongo-sampling.ts @@ -0,0 +1,106 @@ +/** Qualification-only coherent Mongo sampling. Never changes adapter or serving semantics. */ +import assert from 'node:assert/strict'; +import {createHash} from 'node:crypto'; +import {openSync, writeFileSync, fsyncSync, closeSync, mkdirSync} from 'node:fs'; +import {join} from 'node:path'; +import {BSON} from 'mongodb'; +import {setTimeout as pause} from 'node:timers/promises'; +import type {ProjectionRecoveryView} from '@eosrio/hyperion-sdk/projection'; +import {auditPortablePhysicalMongo, isPortableMongoAdmissionTransition, portableMongoAdmissionReason, portableMongoError, + type PortableMongoAuditInput, type PortableMongoPhysicalSample} from './portable-state-worker-mongo.ts'; + +export const portableMongoSamplingLimits = Object.freeze({maximumRecords: 64, maximumRecordBytes: 8 * 1024 * 1024, + maximumCapturedBytes: 64 * 1024 * 1024}); +const stable = (value: any): string => Array.isArray(value) ? '[' + value.map(stable).join(',') + ']' + : value && typeof value === 'object' ? '{' + Object.keys(value).sort().map(key => JSON.stringify(key) + ':' + stable(value[key])).join(',') + '}' : JSON.stringify(value); +const same = (actual: unknown, expected: unknown, label: string) => assert.equal(stable(actual), stable(expected), label); +const withoutReason = (value: ProjectionRecoveryView) => ({binding: value.binding, checkpoint: value.checkpoint, + initialized: value.initialized, gap: value.gap, pending: value.pending && {...value.pending, reason: null}}); +export interface PortableMongoIsolationSample { + schemaVersion: number; attempt: number; through: number; deadline: number; started: number; completed?: number; + logical?: ProjectionRecoveryView; api?: any; physical?: PortableMongoPhysicalSample; + outcome: string; retryable: boolean; error?: unknown; +} +/** Exclusive complete records; exhaustion/serialization/write failures stop qualification visibly. */ +export function createPortableMongoSamples(directory: string) { + mkdirSync(directory, {recursive: true}); + const evidence = {schemaVersion: 1, limits: portableMongoSamplingLimits, attempts: 0, capturedBytes: 0, + rejected: 0, accepted: 0, failedCaptures: 0, captureError: undefined as unknown, + records: [] as {attempt: number; file: string; bytes: number; sha256: string; outcome: string}[]}; + return {evidence, record(sample: PortableMongoIsolationSample) { + const attempt = ++evidence.attempts; + try { + assert.ok(attempt <= portableMongoSamplingLimits.maximumRecords, 'physical Mongo sample record budget exhausted'); + const bytes = Buffer.from(JSON.stringify(BSON.EJSON.serialize({...sample, captureAttempt: attempt})) + '\n'); + assert.ok(bytes.length <= portableMongoSamplingLimits.maximumRecordBytes, 'physical Mongo sample record byte budget exhausted'); + assert.ok(evidence.capturedBytes + bytes.length <= portableMongoSamplingLimits.maximumCapturedBytes, + 'physical Mongo sample total byte budget exhausted'); + const file = `${String(attempt).padStart(3, '0')}-physical-mongo.json`, fd = openSync(join(directory, file), 'wx'); + try {writeFileSync(fd, bytes); fsyncSync(fd);} finally {closeSync(fd);} + evidence.capturedBytes += bytes.length; + sample.outcome === 'passed' ? evidence.accepted++ : evidence.rejected++; + evidence.records.push({attempt, file, bytes: bytes.length, sha256: createHash('sha256').update(bytes).digest('hex'), outcome: sample.outcome}); + } catch (error) {evidence.failedCaptures++; evidence.captureError = portableMongoError(error); throw error;} + }}; +} + +/** Only the original isolation phase supplies this deadline; no per-sample timeout window is created. */ +export async function samplePortableMongoIsolation(options: {input: PortableMongoAuditInput; budget: {readonly deadline: number}; + recovery: (operationTimeoutMS: number) => Promise; query: (budget: {readonly deadline: number}) => Promise; + capture: (sample: PortableMongoIsolationSample) => void; guard: () => void; + now?: () => number; sleep?: (milliseconds: number) => Promise}) { + const now = options.now ?? (() => performance.now()), sleep = options.sleep ?? pause; + const {input, budget} = options; + assert.ok(Number.isFinite(budget.deadline), 'physical Mongo sampling requires the original isolation deadline'); + const failed = input.expectations.filter(value => value.failedBlock); assert.equal(failed.length, 1); + const expected = failed[0]; + const remaining = () => {const value = Math.floor(budget.deadline - now()); + assert.ok(value > 0, 'physical Mongo inherited isolation deadline exceeded'); return value;}; + let attempt = 0; + for (;;) { + remaining(); + const sample: PortableMongoIsolationSample = {schemaVersion: 1, attempt: ++attempt, through: input.through, + deadline: budget.deadline, started: now(), outcome: 'started', retryable: false}; + let result: Awaited> | undefined, failure: unknown, rejected = false; + try { + options.guard(); + const recovery = await options.recovery(Math.min(5000, remaining())); sample.logical = structuredClone(recovery); remaining(); + same(recovery.binding, expected.binding, 'logical Mongo binding/generation differs'); + same(recovery.checkpoint, expected.checkpoint, 'logical Mongo checkpoint differs'); + assert.equal(recovery.initialized, true); assert.equal(recovery.gap, null); + same(recovery.pending?.block, expected.failedBlock, 'logical Mongo failed source differs'); + assert.equal(recovery.pending?.digest, null); assert.equal(typeof recovery.pending?.reason, 'string'); + assert.ok(Buffer.byteLength(recovery.pending!.reason!) <= 4096); + const reason = recovery.pending!.reason!; + if (reason !== portableMongoAdmissionReason) assert.match(reason, /Required source field is missing/); + sample.api = await options.query(budget); remaining(); + assert.equal(sample.api.status, 503); assert.equal(sample.api.body.retryable, true); + assert.equal(sample.api.headers['retry-after'], '1'); + for (const field of ['hyperion-state-block-num', 'hyperion-state-block-id', 'hyperion-state-last-valid']) assert.equal(sample.api.headers[field], undefined); + assert.equal(sample.api.body.view, undefined); assert.equal(sample.api.body.rows, undefined); + let physicalError: unknown, physicalRejected = false; + try {result = await auditPortablePhysicalMongo(input, {budget, now, capture: value => {sample.physical = value;}});} + catch (error) {physicalRejected = true; physicalError = error;} + options.guard(); remaining(); + if (physicalRejected && !isPortableMongoAdmissionTransition(physicalError, sample.physical)) throw physicalError; + assert.equal(sample.physical?.complete, true); + const stored = sample.physical!.observations.metadataSnapshot.find((value: any) => value.binding.projectionId === expected.binding.projectionId); + assert.ok(stored); + same(withoutReason(recovery), withoutReason(stored), 'logical/physical Mongo source or invariant differs'); + const physicalReason = stored.pending.reason; + const reasonTransition = reason === portableMongoAdmissionReason || physicalReason === portableMongoAdmissionReason || physicalRejected; + if (!reasonTransition) same(reason, physicalReason, 'logical/physical Mongo reason changed outside admission transition'); + if (reasonTransition) { + sample.outcome = 'admission-transition'; sample.retryable = true; + sample.error = physicalRejected ? portableMongoError(physicalError) : {message: 'Exact same-source logical/physical admission reason transition'}; + } else {assert.ok(result); sample.outcome = 'passed';} + } catch (error) {rejected = true; failure = error; sample.outcome = 'fatal'; sample.error = portableMongoError(error);} + sample.completed = now(); + options.capture(sample); // An incomplete capture is fatal, even when the physical predicate was transient. + if (rejected) throw failure; + remaining(); + if (sample.outcome === 'passed') return {physical: result!, isolation: {through: input.through, recovery: sample.logical!, api: sample.api}}; + assert.equal(sample.retryable, true); + await sleep(Math.min(100, remaining())); + } +} diff --git a/scripts/qualification/portable-state-worker-mongo.ts b/scripts/qualification/portable-state-worker-mongo.ts index 2fc7dedd..8e9c1c37 100644 --- a/scripts/qualification/portable-state-worker-mongo.ts +++ b/scripts/qualification/portable-state-worker-mongo.ts @@ -27,8 +27,48 @@ export interface PortableMongoAuditInput { readonly source: readonly ProjectionCheckpoint[]; readonly expectations: readonly PortableMongoExpectation[]; } +export interface PortableMongoAuditOptions { + readonly budget?: {readonly deadline: number}; + readonly now?: () => number; + readonly capture?: (sample: PortableMongoPhysicalSample) => void; +} +export interface PortableMongoPhysicalSample { + schemaVersion: number; through: number; complete: boolean; outcome: string; + bytes: number; documents: number; observations: Record; error?: unknown; +} +export const portableMongoAdmissionReason = 'Canonical projection source admitted; durable application is pending'; +const admissionTransitions = new WeakMap(); +/** Only the complete strict audit may issue this retry classification. Copied errors do not qualify. */ +export const isPortableMongoAdmissionTransition = (error: unknown, sample?: PortableMongoPhysicalSample) => + typeof error === 'object' && error !== null && admissionTransitions.has(error) && (!sample || admissionTransitions.get(error) === sample); +export function portableMongoError(error: any, seen = new Set(), depth = 0): unknown { + if (!(error instanceof Error)) return {thrown: error}; + if (seen.has(error) || depth >= 8) return {incompleteCause: true, reason: seen.has(error) ? 'circular cause' : 'cause depth bound'}; + seen.add(error); const native = error as any; + return {name: error.name, message: error.message, stack: error.stack, code: native.code, errorResponse: native.errorResponse, + ...(native.cause === undefined ? {} : {cause: portableMongoError(native.cause, seen, depth + 1)})}; +} + /** Exact namespace/binding validation precedes every native database operation. */ -export async function auditPortablePhysicalMongo(input: PortableMongoAuditInput) { +export async function auditPortablePhysicalMongo(input: PortableMongoAuditInput, options: PortableMongoAuditOptions = {}) { + const sample: PortableMongoPhysicalSample = {schemaVersion: 1, through: input.through, complete: false, + outcome: 'started', bytes: 0, documents: 0, observations: {timeouts: []}}; + try { + const result = await inspectPortablePhysicalMongo(input, options, sample); sample.outcome = 'passed'; return result; + } catch (error) { + sample.outcome = isPortableMongoAdmissionTransition(error, sample) ? 'admission-transition' : 'fatal'; + sample.error = portableMongoError(error); throw error; + } finally {options.capture?.(sample);} +} +async function inspectPortablePhysicalMongo(input: PortableMongoAuditInput, options: PortableMongoAuditOptions, sample: PortableMongoPhysicalSample) { + + const now = options.now ?? (() => performance.now()); + const timeout = (operation: string, cleanup = false) => { + const remaining = options.budget ? Math.floor(options.budget.deadline - now()) : portableMongoAuditLimits.timeoutMS; + if (!cleanup) assert.ok(remaining > 0, 'physical Mongo inherited isolation deadline exceeded'); + const timeoutMS = Math.max(1, Math.min(portableMongoAuditLimits.timeoutMS, remaining)); + sample.observations.timeouts.push({operation, timeoutMS, remainingMs: remaining}); return timeoutMS; + }; const {client, database, backendId, chainId, replicaSet, version, through, source, expectations} = input; assert.match(database, /^h45_p191_[0-9a-f]{12}$/); assert.equal(backendId, 'p191-' + database.slice(-12)); assert.match(chainId, /^[0-9a-f]{64}$/); assert.match(replicaSet, /^h45rs_[0-9a-f]{32}$/); assert.equal(version, '8.0.34'); @@ -57,15 +97,19 @@ export async function auditPortablePhysicalMongo(input: PortableMongoAuditInput) assert.equal(client.options.hosts.length, 1); assert.equal(typeof client.options.hosts[0].host, 'string'); assert.ok(['127.0.0.1', 'localhost', '::1'].includes(client.options.hosts[0].host!)); assert.ok(client.options.hosts[0].port! > 1024 && client.options.hosts[0].port! < 65536); + timeout('start'); const db = client.db(database, {readPreference: 'primary', readConcern: new ReadConcern('majority')}); let totalBytes = 0; const admit = (value: T): T => { - const bytes = BSON.calculateObjectSize(value); assert.ok(bytes <= portableMongoAuditLimits.documentBytes, 'physical Mongo document exceeds audit bound'); + const bytes = BSON.calculateObjectSize(value); sample.documents++; sample.bytes += bytes; assert.ok(bytes <= portableMongoAuditLimits.documentBytes, 'physical Mongo document exceeds audit bound'); totalBytes += bytes; assert.ok(totalBytes <= portableMongoAuditLimits.totalBytes, 'physical Mongo audit byte budget exhausted'); return value; }; - const identity = async () => { - const hello = admit(await db.admin().command({hello: 1}, {timeoutMS: 5000, readPreference: 'primary'})); - const build = admit(await db.admin().command({buildInfo: 1}, {timeoutMS: 5000, readPreference: 'primary'})); + const identity = async (phase: string) => { + const raw: Document = {}; sample.observations[phase] = raw; + const hello = admit(await db.admin().command({hello: 1}, {timeoutMS: timeout(phase + '.hello'), readPreference: 'primary'})); + raw.hello = BSON.EJSON.serialize(hello); + const build = admit(await db.admin().command({buildInfo: 1}, {timeoutMS: timeout(phase + '.buildInfo'), readPreference: 'primary'})); + raw.buildInfo = BSON.EJSON.serialize(build); assert.equal(hello.setName, replicaSet); assert.equal(hello.isWritablePrimary, true); assert.equal(build.version, version); assert.equal(typeof hello.me, 'string'); assert.ok(hello.topologyVersion?.processId); return {setName: hello.setName, me: hello.me, primary: hello.primary, maxWireVersion: hello.maxWireVersion, @@ -73,29 +117,30 @@ export async function auditPortablePhysicalMongo(input: PortableMongoAuditInput) }; const names = expectations.map(value => `${prefix}_r_${hash(value.binding)}`); const expectedNames = [`${prefix}_metadata`, ...names].sort(); - const collections = async () => { - const cursor = db.listCollections({}, {nameOnly: false, batchSize: expectedNames.length + 1, timeoutMS: 5000}); - const result: Document[] = []; - try {for await (const item of cursor) {assert.ok(result.length < expectedNames.length, 'unplanned physical Mongo namespace'); result.push(admit(item));}} + const collections = async (phase: string) => { + const result: Document[] = []; sample.observations[phase] = result; + const cursor = db.listCollections({}, {nameOnly: false, batchSize: expectedNames.length + 1, timeoutMS: timeout(phase)}); + try {for await (const item of cursor) {result.push(admit(item)); assert.ok(result.length <= expectedNames.length, 'unplanned physical Mongo namespace');}} finally {await cursor.close();} assert.deepEqual(result.map(item => item.name).sort(), expectedNames, 'physical Mongo namespace inventory differs'); for (const item of result) {assert.equal(item.type, 'collection'); assert.equal(item.options?.collation?.locale ?? 'simple', 'simple'); assert.ok(!item.options?.capped && !item.options?.viewOn);} return result.sort((a, b) => a.name < b.name ? -1 : 1).map(value => BSON.EJSON.serialize(value)); }; - const metadata = async (session?: ClientSession) => { + const metadata = async (phase: string, session?: ClientSession) => { + const rows: Document[] = []; sample.observations[phase] = rows; const cursor = db.collection(`${prefix}_metadata`).find({}, {session, collation: {locale: 'simple'}, batchSize: 16, - timeoutMS: 5000, ...(session ? {} : {readPreference: 'primary', readConcern: {level: 'majority'}})}).sort({_id: 1}).limit(expectations.length + 1); - try {const rows: Document[] = []; for await (const row of cursor) {rows.push(admit(row)); assert.ok(rows.length <= expectations.length, 'unplanned physical Mongo binding');} + timeoutMS: timeout(phase), ...(session ? {} : {readPreference: 'primary', readConcern: {level: 'majority'}})}).sort({_id: 1}).limit(expectations.length + 1); + try {for await (const row of cursor) {rows.push(admit(row)); assert.ok(rows.length <= expectations.length, 'unplanned physical Mongo binding');} assert.equal(rows.length, expectations.length); return rows;} finally {await cursor.close();} }; - const serverBefore = await identity(), collectionsBefore = await collections(), before = await metadata(); + const serverBefore = await identity('serverBefore'), collectionsBefore = await collections('collectionsBefore'), before = await metadata('metadataBefore'); const session = client.startSession({causalConsistency: false}); - const projections: Document[] = []; let snapshot: Document[]; + const projections: Document[] = []; sample.observations.projections = projections; let snapshot: Document[]; try { session.startTransaction({readConcern: {level: 'snapshot'}, readPreference: 'primary'}); - snapshot = await metadata(session); same(snapshot, before, 'physical Mongo metadata changed before snapshot'); + snapshot = await metadata('metadataSnapshot', session); for (const [index, expected] of expectations.entries()) { const slot = hash({chainId, projectionId: expected.binding.projectionId}), stored = snapshot.find(value => value._id === slot); assert.ok(stored, 'expected physical Mongo binding slot is absent'); @@ -104,7 +149,7 @@ export async function auditPortablePhysicalMongo(input: PortableMongoAuditInput) same(stored.definition, expected.definition, 'physical Mongo definition differs'); same(stored.binding, expected.binding, 'physical Mongo immutable binding/generation differs'); same(stored.checkpoint, expected.checkpoint, 'physical Mongo checkpoint differs'); assert.equal(stored.initialized, true); assert.equal(stored.gap, null); if (expected.failedBlock) {fields(stored.pending, ['block', 'digest', 'reason']); same(stored.pending.block, expected.failedBlock, 'physical failed source differs'); - assert.equal(stored.pending.digest, null); assert.match(stored.pending.reason, /Required source field is missing/); assert.ok(Buffer.byteLength(stored.pending.reason) <= 4096);} + assert.equal(stored.pending.digest, null); assert.equal(typeof stored.pending.reason, 'string'); assert.ok(Buffer.byteLength(stored.pending.reason) <= 4096);} else assert.equal(stored.pending, null); assert.ok(Array.isArray(stored.receipts) && stored.receipts.length > 0 && stored.receipts.length <= portableMongoAuditLimits.receipts); let prior = 0; @@ -113,23 +158,45 @@ export async function auditPortablePhysicalMongo(input: PortableMongoAuditInput) assert.match(receipt.digest, /^[0-9a-f]{64}$/); prior = receipt.blockNum;} const last = stored.receipts.at(-1); same({blockNum: last.blockNum, blockId: last.blockId}, expected.checkpoint, 'physical receipt does not end at checkpoint'); const records = db.collection(names[index]); - const count = await records.countDocuments({}, {session, collation: {locale: 'simple'}, limit: portableMongoAuditLimits.rows + 1, timeoutMS: 5000}); - assert.equal(count, expected.rows.length, 'physical Mongo row count differs from independent source oracle'); - const cursor = records.find({}, {session, collation: {locale: 'simple'}, batchSize: 16, timeoutMS: 5000}).sort({_id: 1}).limit(expected.rows.length + 1); + const count = await records.countDocuments({}, {session, collation: {locale: 'simple'}, limit: portableMongoAuditLimits.rows + 1, timeoutMS: timeout('rows.count')}); const documents: Document[] = []; + const projection = {projectionId: expected.binding.projectionId, collection: names[index], metadataSlot: slot, + binding: stored.binding, checkpoint: stored.checkpoint, count, documents, sha256: '', metadataSha256: hash(stored)}; + projections.push(projection); + assert.equal(count, expected.rows.length, 'physical Mongo row count differs from independent source oracle'); + const cursor = records.find({}, {session, collation: {locale: 'simple'}, batchSize: 16, timeoutMS: timeout('rows.find')}).sort({_id: 1}).limit(expected.rows.length + 1); try {for await (const document of cursor) {documents.push(admit(document)); assert.ok(documents.length <= expected.rows.length, 'extra physical Mongo row'); fields(document, ['_id', 'value']);}} finally {await cursor.close();} const expectedDocuments = expected.rows.map(row => ({_id: row.key, value: row.value})).sort((a, b) => Buffer.compare(Buffer.from(a._id), Buffer.from(b._id))); same(documents, expectedDocuments, 'physical Mongo keys/values differ from independent source oracle'); - projections.push({projectionId: expected.binding.projectionId, collection: names[index], metadataSlot: slot, - binding: stored.binding, checkpoint: stored.checkpoint, count, documents, sha256: hash(documents), metadataSha256: hash(stored)}); + projection.sha256 = hash(documents); } - } finally {try {await session.abortTransaction();} finally {await session.endSession();}} - const after = await metadata(), collectionsAfter = await collections(), serverAfter = await identity(); - same(after, before, 'physical Mongo binding/checkpoint changed during held audit'); + } finally {try {await session.abortTransaction({timeoutMS: timeout('abortTransaction', true)});} finally {await session.endSession();}} + const after = await metadata('metadataAfter'), collectionsAfter = await collections('collectionsAfter'), serverAfter = await identity('serverAfter'); + sample.complete = true; + timeout('completed'); + const reasons = new Map(); + const withoutFailedReasons = (rows: Document[]) => rows.map(row => { + const expected = expectations.find(value => value.failedBlock && row._id === hash({chainId, projectionId: value.binding.projectionId})); + if (!expected) return row; + assert.equal(typeof row.pending?.reason, 'string'); assert.ok(Buffer.byteLength(row.pending.reason) <= 4096); + const reason = row.pending.reason; + if (reason !== portableMongoAdmissionReason) assert.match(reason, /Required source field is missing/); + const values = reasons.get(row._id) ?? []; values.push(reason); reasons.set(row._id, values); return {...row, pending: {...row.pending, reason: null}}; + }); + const beforeInvariant = withoutFailedReasons(before), snapshotInvariant = withoutFailedReasons(snapshot), afterInvariant = withoutFailedReasons(after); + same(snapshotInvariant, beforeInvariant, 'physical Mongo metadata changed before snapshot'); + same(afterInvariant, beforeInvariant, 'physical Mongo binding/checkpoint changed during held audit'); same(collectionsAfter, collectionsBefore, 'physical Mongo collections changed during held audit'); same(serverAfter, serverBefore, 'physical Mongo server identity changed during audit'); + for (const values of reasons.values()) if (new Set(values).size > 1) + assert.ok(values.includes(portableMongoAdmissionReason) && values.some(value => /Required source field is missing/.test(value)), + 'physical Mongo reason changed outside the exact admission transition'); + if ([...reasons.values()].some(values => values.includes(portableMongoAdmissionReason))) { + const error = new assert.AssertionError({actual: portableMongoAdmissionReason, expected: /Required source field is missing/, operator: 'match'}); + admissionTransitions.set(error, sample); throw error; + } return {schemaVersion: 1, through, database, backendId, chainId, storageVersion, readOnly: true, expectationOrigin: 'independent original source/official-clio plan rows', serverBefore, serverAfter, collections: collectionsBefore, metadataBefore: before, metadataSnapshot: snapshot, metadataAfter: after, diff --git a/scripts/qualification/portable-state-worker.ts b/scripts/qualification/portable-state-worker.ts index 68c30fc7..9b82721d 100644 --- a/scripts/qualification/portable-state-worker.ts +++ b/scripts/qualification/portable-state-worker.ts @@ -27,7 +27,7 @@ import {auditPortableWorkerSource, boundedPortableFile, ordinaryPortablePath, po import {assertPortableWorkerOracle, portableWorkerAbiAvailability} from './portable-state-worker-oracle.ts'; import {auditPortableNativeOracle, createPortableNativeQualification, nativePortableHolds, portableLegacyProfile, portableNativeProfile, type PortableNativePhaseBudget} from './portable-state-worker-native.ts'; -import {auditPortablePhysicalMongo} from './portable-state-worker-mongo.ts'; +import {createPortableMongoSamples, samplePortableMongoIsolation} from './portable-state-mongo-sampling.ts'; import {auditPortableWorkerProfiles, portableWorkerProfileEnvironment, portableWorkerProfileLimits} from './portable-state-worker-profiles.ts'; import {createWireRecoveryControl, readWireRecoveryEvidence, auditWireAttemptRecovery, wireRecoveryShutdownRows} from './portable-state-worker-recovery.mjs'; import {createWireMasterRestartControl, inspectWireMasterCheckpoint, crashWireMaster, describeWireMasterCrash, @@ -451,6 +451,8 @@ export async function runPortableStateWorker(stateFile: string, planFile: string prefixes: [], cleanup: [], errors: [], limits: {releaseQualified: false, forkRecoveryQualified: false, rustQualified: false, processCrashRecoveryQualified: false, writeFailureIsolationQualified: false, note: 'Actual Node worker/Mongo/HTTP tracer; no AtomicAssets, full release, fork or Bun qualification.'}}; + const mongoSamples = createPortableMongoSamples(join(output, 'mongo-physical-samples')); + report.mongoPhysicalSamples = mongoSamples.evidence; const historyDiagnostics = options.native ? createPortableHistoryDiagnostics(join(output, 'history-diagnostics'), report.errors) : undefined; const chain = `hyp-p191-${state.run}`, database = `h45_p191_${state.run}`; const invalidDefinition = portableWorkerFaultDefinition(plan), faultThrough = plan.barriers[0].through; @@ -614,9 +616,11 @@ export async function runPortableStateWorker(stateFile: string, planFile: string description: 'Fixture-only missing required source field; healthy definitions and independent expected rows are unchanged.', observations: []}; master = await spawnOwned('build/indexer/launcher.js', configFile); report.masterPid = master.pid; api = await spawnOwned('build/api/server.js', configFile); report.apiPid = api.pid; - const query = async (projection: string, value: ProjectionQuery = {filter: [], limit: 256, count: {upTo: 1000}}) => { + const query = async (projection: string, value: ProjectionQuery = {filter: [], limit: 256, count: {upTo: 1000}}, budget?: PortableNativePhaseBudget) => { + const available = Math.min(5000, remaining(), budget ? Math.floor(budget.deadline - performance.now()) : Infinity); + assert.ok(available > 0, 'portable query inherited isolation deadline exceeded'); const response = await fetch(`http://127.0.0.1:${apiPort}/v2/state/query`, {method: 'POST', headers: {'content-type': 'application/json'}, - body: JSON.stringify({projection, query: value}), signal: AbortSignal.timeout(Math.min(5000, remaining()))}); + body: JSON.stringify({projection, query: value}), signal: AbortSignal.timeout(available)}); return {status: response.status, headers: response.headers, body: await boundedResponse(response)}; }; const responseReceipt = (response: Awaited>) => @@ -751,8 +755,8 @@ export async function runPortableStateWorker(stateFile: string, planFile: string replay!.assertThrough(through); report.lastRecovery = recoveries; }); } - let isolation: any; - if (through >= faultThrough) await wait(`invalid mapping remains durably isolated at${through}`, async () => { + let isolation: any, isolationBudget: PortableNativePhaseBudget | undefined; + if (through >= faultThrough) isolationBudget = await wait(`invalid mapping remains durably isolated at${through}`, async () => { const recovery = await invalidAdapter.recovery(invalidBinding); assertPortablePending(recovery, invalidBinding, {blockNum: faultThrough - 1, blockId: source.records[faultThrough - 2].blockId}, @@ -799,14 +803,25 @@ export async function runPortableStateWorker(stateFile: string, planFile: string let physicalMongo; if (plan.barriers.some(value => value.through === through)) { replay.assertThrough(through); mongoFixture.ownedContainer('replica'); - physicalMongo = await auditPortablePhysicalMongo({client: mongo, database, backendId: config.features.portable_state.backend.id, + assert.ok(isolationBudget, 'physical Mongo barrier requires the original isolation phase budget'); + const sampled = await samplePortableMongoIsolation({input: {client: mongo, database, backendId: config.features.portable_state.backend.id, chainId: source.chainId, replicaSet: mongoFixture.replicaSet, version: MONGODB_VERSION, through, source: source.records, expectations: [...plan.definitions.map((definition, index) => ({definition, binding: bindings[index], checkpoint: {blockNum: through, blockId: block.blockId}, rows: barrier.rows[definition.id]})), {definition: invalidDefinition, binding: invalidBinding, rows: [], checkpoint: {blockNum: faultThrough - 1, blockId: source.records[faultThrough - 2].blockId}, failedBlock: {blockNum: faultThrough, blockId: source.records[faultThrough - 1].blockId, - previousBlockId: source.records[faultThrough - 2].blockId}}]}); + previousBlockId: source.records[faultThrough - 2].blockId}}]}, budget: isolationBudget, + recovery: operationTimeoutMS => backendModule.createMongoDbProjectionAdapter({client: mongo, databaseName: database, + backendId: config.features.portable_state.backend.id, operationTimeoutMS}).recovery(invalidBinding), + query: async budget => responseReceipt(await query(invalidDefinition.id, undefined, budget)), + capture: sample => mongoSamples.record(sample), + guard: () => { + for (const child of [master, api]) if (child) assert.ok(child.exitCode === null && child.signalCode === null, 'physical Mongo sampling: actual child exited'); + assert.deepEqual(report.errors, []); replay!.assertThrough(through); mongoFixture.ownedContainer('replica'); + }}); + physicalMongo = sampled.physical; isolation = sampled.isolation; + report.contractFailure.observations.push({...isolation, phase: 'coherent-physical'}); replay.assertThrough(through); mongoFixture.ownedContainer('replica'); } if (native) {await refreshActions(through, 'scheduled-prefix'); const observed = await native.hold(through); @@ -1066,6 +1081,7 @@ export async function runPortableStateWorker(stateFile: string, planFile: string if (recoveryControl) assert.equal(report.attemptRecovery.status, 'observed'); if (masterControl) assert.equal(report.masterRestart.status, 'observed'); if (readerControl) assert.equal(report.readerRecovery.status, 'observed'); + assert.equal(mongoSamples.evidence.failedCaptures, 0, 'physical Mongo sample capture incomplete'); if (historyDiagnostics) assert.deepEqual(report.errors, []); report.limits.writeFailureIsolationQualified = true; report.status = 'passed'; @@ -1143,6 +1159,7 @@ export async function runPortableStateWorker(stateFile: string, planFile: string } catch (error) {report.status = 'failed'; report.cleanup.push({name, ok: false, error: describeError(error)});} } if (ledger) report.bulkCapture = {...ledger.limits, recordedRequests: ledger.receipts.length}; + if (mongoSamples.evidence.failedCaptures > 0) report.status = 'failed'; if (historyDiagnostics && (historyDiagnostics.evidence.failedCaptures > 0 || report.errors.length > 0)) report.status = 'failed'; if (brokerControl) { try {report.brokerRecovery.terminalEvidence = readWireBrokerRecoveryEvidence(brokerControl.control);} diff --git a/tests/fixtures/portable-state-worker/mongo-1244.json b/tests/fixtures/portable-state-worker/mongo-1244.json new file mode 100644 index 00000000..1c6e8e12 --- /dev/null +++ b/tests/fixtures/portable-state-worker/mongo-1244.json @@ -0,0 +1,6075 @@ +{ + "archiveSha256": "9bb31565ee7dcf39df1db8f12e8525663ae9f6f6b180c32ef48d6e5f39e692a2", + "head": "29057aaa33e541d5378913cda2e40cf61259d6c8", + "tree": "cdc5ba9df246199e0b4b2d449e418d5156358c82", + "verifiedFiles": [ + { + "path": "case/run/report.json", + "sha256": "dcfba5f59fd9405c823b7b41daed2ba8fad7684a431178c9c9ab92242c0903a1", + "bytes": 2224043 + }, + { + "path": "inputs/plan.json", + "sha256": "b42cfe181468e0c32caf75edc1d52e62d397a9d0571476b6ccf94dffead3a5ea", + "bytes": 6045 + }, + { + "path": "inputs/source/receipt.json", + "sha256": "40740fa53af8c53142dadbfc63e1336a3f33e79ea9c2ae256cc5e9c9d7ff84dc", + "bytes": 3806620 + }, + { + "path": "inputs/source/official-oracle.json", + "sha256": "dfd01e79c8eafaa641fef03a2b3e241b6c90d8d675818ddea52a52a0d37940e9", + "bytes": 118491 + } + ], + "actualError": "AssertionError [ERR_ASSERTION]: The input did not match the regular expression /Required source field is missing/. Input:\n\n'Canonical projection source admitted; durable application is pending'\n\n at auditPortablePhysicalMongo (file:///opt/hapi329/repo-29057aaa/scripts/qualification/portable-state-worker-mongo.ts:107:67)\n at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n at async runPortableStateWorker (file:///opt/hapi329/repo-29057aaa/scripts/qualification/portable-state-worker.ts:802:33)\n at async file:///opt/hapi329/repo-29057aaa/scripts/qualification/portable-state-worker.ts:1159:20", + "actualBarrier": 1244, + "recordedEarlierInvalidRecovery": { + "binding": { + "chainId": "9ccd94e823fda51363bd4265ad618a909c4985c445078c79f8d030fe9697b71d", + "backendId": "p191-e01603ac3524", + "projectionId": "qualification-invalid-65a2a1cd21a06f0b", + "mappingRevision": "d0309654b6ff8757419da4632063ffe292156b4355a4372104c682c773feb75a", + "abiDeployment": "000000de77fe7cb815625de908087f303e890cb1510e086889079a24b65401f9:sysio.msgch:5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "abiSha256": "5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "generation": "978825f61db888d947ff4f526bc82735083ce7d829d6a71fcbac4043bf83c376" + }, + "checkpoint": { + "blockNum": 1243, + "blockId": "000004db125e7699dd83225a0d167fe47d1b292fbf0a685232d50e7ae8b4c7bb" + }, + "initialized": true, + "pending": { + "block": { + "blockId": "000004dcf4b10972816b2b1734552c35f33eb68d1834f0bc8fca102876f3d02d", + "blockNum": 1244, + "previousBlockId": "000004db125e7699dd83225a0d167fe47d1b292fbf0a685232d50e7ae8b4c7bb" + }, + "digest": null, + "reason": "/source/__hyperion_qualification_missing_required_v1__: Required source field is missing" + }, + "gap": null + }, + "recordedHealthyRecovery": [ + { + "binding": { + "chainId": "9ccd94e823fda51363bd4265ad618a909c4985c445078c79f8d030fe9697b71d", + "backendId": "p191-e01603ac3524", + "projectionId": "sysio-msgch-attseq", + "mappingRevision": "22ff7d7f90f243582d34129eebe3b875bd7ac0a3af75b23fc24fb7668ffe6cdb", + "abiDeployment": "000000de77fe7cb815625de908087f303e890cb1510e086889079a24b65401f9:sysio.msgch:5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "abiSha256": "5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "generation": "e4bddb9bf55e2a48cacb1b0195aad09511b21fd42e28f055468835cbbaa6012a" + }, + "checkpoint": { + "blockNum": 1244, + "blockId": "000004dcf4b10972816b2b1734552c35f33eb68d1834f0bc8fca102876f3d02d" + }, + "initialized": true, + "pending": null, + "gap": null + }, + { + "binding": { + "chainId": "9ccd94e823fda51363bd4265ad618a909c4985c445078c79f8d030fe9697b71d", + "backendId": "p191-e01603ac3524", + "projectionId": "sysio-msgch-outenvelopes", + "mappingRevision": "c1615f461d998645e9da1f724a91538bbc539262d97045f0c112b26f92c97f29", + "abiDeployment": "000000de77fe7cb815625de908087f303e890cb1510e086889079a24b65401f9:sysio.msgch:5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "abiSha256": "5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "generation": "bfe0e9c9c13b238e08ce45c90eb50c44926213d1a8708b68e21acfb5efd1add8" + }, + "checkpoint": { + "blockNum": 1244, + "blockId": "000004dcf4b10972816b2b1734552c35f33eb68d1834f0bc8fca102876f3d02d" + }, + "initialized": true, + "pending": null, + "gap": null + } + ], + "definition": { + "schemaVersion": 1, + "id": "qualification-invalid-65a2a1cd21a06f0b", + "source": { + "contract": "sysio.msgch", + "table": "attseq", + "abiDeployment": "000000de77fe7cb815625de908087f303e890cb1510e086889079a24b65401f9:sysio.msgch:5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "abiSha256": "5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b" + }, + "fields": [ + { + "name": "qualification_missing_required", + "path": [ + "__hyperion_qualification_missing_required_v1__" + ], + "type": "string" + } + ], + "initialization": { + "kind": "genesis" + }, + "mappingRevision": "d0309654b6ff8757419da4632063ffe292156b4355a4372104c682c773feb75a" + }, + "binding": { + "chainId": "9ccd94e823fda51363bd4265ad618a909c4985c445078c79f8d030fe9697b71d", + "backendId": "p191-e01603ac3524", + "projectionId": "qualification-invalid-65a2a1cd21a06f0b", + "mappingRevision": "d0309654b6ff8757419da4632063ffe292156b4355a4372104c682c773feb75a", + "abiDeployment": "000000de77fe7cb815625de908087f303e890cb1510e086889079a24b65401f9:sysio.msgch:5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "abiSha256": "5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "generation": "978825f61db888d947ff4f526bc82735083ce7d829d6a71fcbac4043bf83c376" + }, + "backend": { + "kind": "mongodb", + "id": "p191-e01603ac3524", + "database": "h45_p191_e01603ac3524" + }, + "source": [ + { + "blockNum": 1, + "blockId": "000000012fdf78889e4c7210b63f56607f294a9b9d90058c053a218103192187" + }, + { + "blockNum": 2, + "blockId": "000000028614067823d55b9058cdf0fa023b2de5b0eb0657c9b0a3b318bbf923" + }, + { + "blockNum": 3, + "blockId": "00000003f2bebaa8d2ad1b044b68f3e9b8d4510fe6ef8636a3fd5065f8d54b98" + }, + { + "blockNum": 4, + "blockId": "00000004bcb7cbcf1a2711bce48f1de0f278158aa7d1f50015188356a51ad23b" + }, + { + "blockNum": 5, + "blockId": "00000005f0c50d02e1a3826f1199e913c7c457686ae6bbc42f76478f45b24ab9" + }, + { + "blockNum": 6, + "blockId": "0000000618c8856ce325f4a8805851d2a165310ee29e2fdab1dd9ddea68b488c" + }, + { + "blockNum": 7, + "blockId": "000000071d0060feee5dae718e4adf64baf95ecbf618cb30eec1cf036ec21a2d" + }, + { + "blockNum": 8, + "blockId": "00000008ca64cfd17426b087497034ee788fe40c991408a24cbd51ab571036a3" + }, + { + "blockNum": 9, + "blockId": "0000000980309bead6be18b0d1937d2f4cf7bc5f110c054436c2fbba2e479913" + }, + { + "blockNum": 10, + "blockId": "0000000a4eb292419d0d6ffa1faad9d9acdfffa928ff99e5cb6962d13840a4b7" + }, + { + "blockNum": 11, + "blockId": "0000000bb5d5e58301d03e11d62aab99985a2c8f08425036a9056b0d500749d6" + }, + { + "blockNum": 12, + "blockId": "0000000c414c42fe0f8257c690918f701c2c31d2fbacb927998c6a07f9623c40" + }, + { + "blockNum": 13, + "blockId": "0000000d8788477e39b354ecbd8aa240b139b3c8f180283f2cefb83772063f1d" + }, + { + "blockNum": 14, + "blockId": "0000000e1e4eae28e392fb0b744ebbc5aff402e96749bb800085da375b4dce46" + }, + { + "blockNum": 15, + "blockId": "0000000fa5019d9afb95dd465c3fe8d8a333ae793ba1da5cb411c5b6cfadf3bc" + }, + { + "blockNum": 16, + "blockId": "000000106708d9ab35694610534c4bee07db64a1b626d7c480ab26e6987276e0" + }, + { + "blockNum": 17, + "blockId": "00000011338bdaa9cbcdcddf905b2b9edc93302e276e0e8fdaafb8cd01428e79" + }, + { + "blockNum": 18, + "blockId": "00000012244432389baade91f4df1268d6cf1627d7e0f5cb12bc0c8d76e63402" + }, + { + "blockNum": 19, + "blockId": "000000130cc72a82bae9fdb666270a388a904dcda445ccb111cd5406beeb48ea" + }, + { + "blockNum": 20, + "blockId": "000000143f2c9efd58bd7d9e99848ad5325195c6921b66a84311286f50f0ef32" + }, + { + "blockNum": 21, + "blockId": "00000015a36d73f89df786369dfbaedcfc0eda122074bc6a6b685d497bc45f58" + }, + { + "blockNum": 22, + "blockId": "00000016eb35485c005574500d2c183929a9901183edd8bcdaddb2d352e7ad35" + }, + { + "blockNum": 23, + "blockId": "000000178d8bd9cf3ba43b2bb300354ab448da64b8aedc6c29dc2739b2a4ba09" + }, + { + "blockNum": 24, + "blockId": "00000018ed44aa01e2a9a93e08ee0b6631eac54095c66f1d268a63a1153b7265" + }, + { + "blockNum": 25, + "blockId": "00000019dbf7355d9861a14cb2252b4d2dd7a0e4ca21a6a045d7dd358d3df991" + }, + { + "blockNum": 26, + "blockId": "0000001ad4a3caa9257b63acf80140b589086d4d59e232698f439fa1eccccfc7" + }, + { + "blockNum": 27, + "blockId": "0000001bcd033cb9ef55d37f402c7df9650af26bbba5b3d18f4447d2a346c748" + }, + { + "blockNum": 28, + "blockId": "0000001c94ab14b36188e401187a525e241fc7124406c90ee28abd1bc4ae0a26" + }, + { + "blockNum": 29, + "blockId": "0000001d088076e50190d90603c433cf6ea6a4970b97e3c76c7ab53f41281e41" + }, + { + "blockNum": 30, + "blockId": "0000001e8dff7aacdff513a5b28ed14a0224116f1576a2ded0c74d19ee065e92" + }, + { + "blockNum": 31, + "blockId": "0000001fe2c1f3d2f01fc5c42cb0b3253cd0f3282dad838bdb1be9d0e8750be3" + }, + { + "blockNum": 32, + "blockId": "00000020e9099dd5340b7533da31d92e988303b76869a085633d1fec0a6177e6" + }, + { + "blockNum": 33, + "blockId": "000000211b7e773b53576a30619f893252a2a47e23da7b25c090dbe8b0de7655" + }, + { + "blockNum": 34, + "blockId": "00000022a1d720933fa35764060d280dbea092bd1c62aa1b9a307b83da430c46" + }, + { + "blockNum": 35, + "blockId": "00000023174cc9eb70c9cc4e048337fcda47cab8b5388ba93dbb9592698aee4b" + }, + { + "blockNum": 36, + "blockId": "000000249c4303ea78f8810ad5e8b46b20921682436a7246d1a07ee25847a8a9" + }, + { + "blockNum": 37, + "blockId": "0000002580ab1d8cf4d681ccf3ec208719755f2180f4141cefe302fe83068d98" + }, + { + "blockNum": 38, + "blockId": "00000026e3da677bb78988a491a506778dd4898d42b41021e650ce7bb2029b5d" + }, + { + "blockNum": 39, + "blockId": "0000002720717e2bdacaeadfc1edcd6a386aaa4c38ac52d0ba4ffbd80e017f24" + }, + { + "blockNum": 40, + "blockId": "00000028f01605b2e8b8c0fda8fb906296d9547cbc9c54c9ebe993b3298e8df1" + }, + { + "blockNum": 41, + "blockId": "00000029e69f6f57751b38887939dafef55d40d44a0a4efac7f72b981fb0ecc0" + }, + { + "blockNum": 42, + "blockId": "0000002a7e77f82bd45ac22016c9c3321bdabdfce935029e22e9b33bfac06e8d" + }, + { + "blockNum": 43, + "blockId": "0000002b254ef5675b00400a0993ccfdec60de278847a718621411c89ad11cb9" + }, + { + "blockNum": 44, + "blockId": "0000002c20ff08353121d06ba64a5f6805fe7a9c3f0303880ced057e76578fb6" + }, + { + "blockNum": 45, + "blockId": "0000002dff0423e9d27a834170cd3fd830ba343b28a3755f9baee7d3a0d736fb" + }, + { + "blockNum": 46, + "blockId": "0000002e65f3d7f0190e8ae79de4dd4e2ce87fe2849bda784db1525c0913bffc" + }, + { + "blockNum": 47, + "blockId": "0000002f9bca44c5a06ce2f126511193ca4ec2a706265a1066cfc665fa90c366" + }, + { + "blockNum": 48, + "blockId": "000000306a6b7fdae955e967e3927ae25642dbe373096765169fdbf3d37ef57f" + }, + { + "blockNum": 49, + "blockId": "00000031748d1716c38ade5ad8b6fdb10b02332d2df4c21c7239e0f83c509e5b" + }, + { + "blockNum": 50, + "blockId": "0000003296e6df1e145da2058a7b4da1978d050ab6be55669a72f25cc67ada29" + }, + { + "blockNum": 51, + "blockId": "00000033a7d523325158eeaa76565ce4940770a97a127ed8f947e3460f3366fb" + }, + { + "blockNum": 52, + "blockId": "00000034aadce78b5bb2f285f7848687f072f33985ae1b4c5b995a7525aef020" + }, + { + "blockNum": 53, + "blockId": "00000035b0f1215d704d0207efeb467c6ae4fdafcc9918b762ab3a887135273b" + }, + { + "blockNum": 54, + "blockId": "0000003638656a78540a585832544526a739b9caa7bc17b6b93c90731a7aea1e" + }, + { + "blockNum": 55, + "blockId": "000000378006d8e1577fa52a6d0b98741e6d027e57647263cb87fb24632f4fde" + }, + { + "blockNum": 56, + "blockId": "00000038939a1a6b5d7ea4dd899a5da4761aea996b674a16b8c8a6544ce15b16" + }, + { + "blockNum": 57, + "blockId": "000000398744b8822c641aae0add3f235a84dc4ede6b4a8da717f552ee6c5bfa" + }, + { + "blockNum": 58, + "blockId": "0000003a44c35070da194240cdc2ba4b326324fcb8e20f068ee69fefb7116474" + }, + { + "blockNum": 59, + "blockId": "0000003b09e7df5d37977459fbf1351644ccb396c76469a47af52133f2a9ea62" + }, + { + "blockNum": 60, + "blockId": "0000003cea51e57501a3b6e2c1f171d077b6e7e7f90ee4cace0c08abcee6d97c" + }, + { + "blockNum": 61, + "blockId": "0000003dbaef57d19e2ca836ed472450ff17486bd11d8b8b72ebeca0f27a9184" + }, + { + "blockNum": 62, + "blockId": "0000003ee90755f8afacecc03f61647c73202ca840cee6f946c54f39ced2b545" + }, + { + "blockNum": 63, + "blockId": "0000003f930032b41032ae9b9c21672ac65dc6768655acf59007034fc62c84e4" + }, + { + "blockNum": 64, + "blockId": "00000040e2a8c07ea5a480aeb522e5caf875ff382a5447a167753c844b0ef470" + }, + { + "blockNum": 65, + "blockId": "0000004184181322bb21e339917030b8dfc450072f926746d3e460b035c4da47" + }, + { + "blockNum": 66, + "blockId": "00000042dd41469ce9c198c1d6b2dbda192b075874a94226b347c8da6f8ab8e0" + }, + { + "blockNum": 67, + "blockId": "00000043f016f3a2910a3ef346162730173a284a4e189abb2c8279221e4b9238" + }, + { + "blockNum": 68, + "blockId": "0000004466db31e84c67d7b201abda8034a4611d6827928c0d59fef975c45731" + }, + { + "blockNum": 69, + "blockId": "00000045b0b307dac5634fedef3e62e35a06ed2c907fc36ce652f70f1dbc32a6" + }, + { + "blockNum": 70, + "blockId": "00000046f515d2b8104d5811d1d9d8769b5655c1e7ee9e52a9bf4ea7088dbd5b" + }, + { + "blockNum": 71, + "blockId": "000000472045ece9daa625acc8beb6bbfd233522919d1a80f69a34b43b6e6012" + }, + { + "blockNum": 72, + "blockId": "000000487c223a770b695456162eb0862cb68e7dea2aebfe3d3e93dd38c823f3" + }, + { + "blockNum": 73, + "blockId": "00000049f9399763b0c8d81565aba79d72fb4cf3df2a185b967d29a630bf3055" + }, + { + "blockNum": 74, + "blockId": "0000004a01e07eb6ebb88b0c0cee3aab6950989b5d34dcb4b0f8b3b9cd64e7c5" + }, + { + "blockNum": 75, + "blockId": "0000004bc4f5e31ff10e9f94fdb419350d4f72b0469670470b21b5d17198e625" + }, + { + "blockNum": 76, + "blockId": "0000004c129bf1d0a98ce1a5ebd0ff2964b7bbf2ffd515a54c32cf896f73f65a" + }, + { + "blockNum": 77, + "blockId": "0000004d6e8aa5f9c3660ccdc2d85e7050c24ea76e8f88d6601259aab397282d" + }, + { + "blockNum": 78, + "blockId": "0000004ebee751390822aded5a97fff93eaa7e0538961089f3aaa7c9d7404fd2" + }, + { + "blockNum": 79, + "blockId": "0000004f46ca2e0a2478fd9c6f110a40e4fd42f46ac1bb08cef8b69a7976dcd4" + }, + { + "blockNum": 80, + "blockId": "0000005016426de3d0fe31e221e0349f45253ecabd4f74a25b170ae472755537" + }, + { + "blockNum": 81, + "blockId": "00000051e4c2c91462a9f0697da525dd053ea6fcce5856495d33447946072a57" + }, + { + "blockNum": 82, + "blockId": "000000526c80e1aca3997019fa14e05f08e7224e61b65a625854d2de12bfe46c" + }, + { + "blockNum": 83, + "blockId": "00000053657835f27c6a5daa3741e683880c19ac933b6030b4415574c9254dec" + }, + { + "blockNum": 84, + "blockId": "0000005472f5b833c229d5b37f17489f4a95604e705ec79cb91e18673813e0cf" + }, + { + "blockNum": 85, + "blockId": "00000055fb61053679d7ad2b04eb88e7dfb16c729d8e237425fcdaaac6c35d70" + }, + { + "blockNum": 86, + "blockId": "00000056c3642045bfabd0a34e8528c2146f18796eb258b69526a1c9494a2a1c" + }, + { + "blockNum": 87, + "blockId": "0000005778387ca51c052fe5fa1343217fc7626ae4e31c23c22bd2170e72a8b0" + }, + { + "blockNum": 88, + "blockId": "000000588697726afbf0dcb15f18659e3972743d6936b6418e4602404e064186" + }, + { + "blockNum": 89, + "blockId": "00000059c1833a0a40dae5b868bb0fca71b0412b352dfe6017314aa998ea71c4" + }, + { + "blockNum": 90, + "blockId": "0000005ab6d9cb3dea567983309a0d5e42d06890acb7fbd46dcd6fa7df48decf" + }, + { + "blockNum": 91, + "blockId": "0000005b90b57a3768afe7ad6af95d56ee5d3fbfad7adfe936aa2efe43e805a5" + }, + { + "blockNum": 92, + "blockId": "0000005c4f95ef019d5ebcbf8044d034f2187a5b1311d29f4c58f0f1aefae6f5" + }, + { + "blockNum": 93, + "blockId": "0000005daa3be7a965fbc540716017cb6f3f62360e237a007df09c5b1be94ab1" + }, + { + "blockNum": 94, + "blockId": "0000005e578e5ccaa38af4ec23bf9309d8b1cd9cf203dfa7844a09c88a8c5de7" + }, + { + "blockNum": 95, + "blockId": "0000005f0b3042e68c839cc7c815e7e7fd99dd31939afa736bfd5443fcf17b90" + }, + { + "blockNum": 96, + "blockId": "00000060c733e2d0bb28a3ff4c17cbba7ae619870e17d6a0e1b1b03fca8ca22a" + }, + { + "blockNum": 97, + "blockId": "00000061340de23e0cd2cd4c6ff49cc83f234fda14ed1581e1a0a7e55ed67714" + }, + { + "blockNum": 98, + "blockId": "00000062c52473d0b74af39325aa1670476f9fa3de5e227a2260bbc1f5da4731" + }, + { + "blockNum": 99, + "blockId": "0000006398cf5333938cfbea2bc5be67006d58b83d2ed4dd2ba3a9a407dc512f" + }, + { + "blockNum": 100, + "blockId": "00000064f6528f0ecde6b77568ae06d804bbb5d7f0ca50ba3c8818f81c6aec81" + }, + { + "blockNum": 101, + "blockId": "000000658323732c9522f7e8b8416b549a423135cc8e4d9247394d8f493bb698" + }, + { + "blockNum": 102, + "blockId": "00000066f6fa21f5f8228034c9871f66960713f6f18a86b1511a6574e0464ecc" + }, + { + "blockNum": 103, + "blockId": "00000067e205ff1ba949897e3fb196c6409e67cab9fec3f243b29549364dc503" + }, + { + "blockNum": 104, + "blockId": "00000068e80cf5d70afe07414736251120019aaeae256c9cf135ec1bf526fccb" + }, + { + "blockNum": 105, + "blockId": "000000690ff70da7384a08a9ad7d1987d54c8a86ef3482809ec48b9d96865c3e" + }, + { + "blockNum": 106, + "blockId": "0000006a93edc7a4bf2912b10163c773a245fd27c9baa5d41f6e2f3d8bb5e2ff" + }, + { + "blockNum": 107, + "blockId": "0000006b823f0e6be3e85f4358d093bb351704e126ac78175f1534595cc4389e" + }, + { + "blockNum": 108, + "blockId": "0000006c604ebcaa9098fda8cfb986925e2e5ce244ef84d8cae448cc6f24794c" + }, + { + "blockNum": 109, + "blockId": "0000006d2049be3397f5a9a997403296f632adad87930340e50958b00f3b6c72" + }, + { + "blockNum": 110, + "blockId": "0000006e230b6e79abe2749953e2646489890f8b793832584f2d4d82298c9012" + }, + { + "blockNum": 111, + "blockId": "0000006f4584adee61c8474829bf2e868ec352a18e8f6fe0122b92692895117d" + }, + { + "blockNum": 112, + "blockId": "000000700e728cacd565fe38c8bdf35038773f701ac12df2820a36f51581d3fa" + }, + { + "blockNum": 113, + "blockId": "0000007192abac80f6e708203824b6edfdad9b4f6d160aaf63c7b08d1b8f4fcc" + }, + { + "blockNum": 114, + "blockId": "00000072d91c28504e8afb372ad07ad2aee5ea3f7151f6f59ea42ec4ee097057" + }, + { + "blockNum": 115, + "blockId": "00000073a8dfdda84f370c2e81fd8a0bf1aa2e7d1ee8054d4fe4d382f89cb149" + }, + { + "blockNum": 116, + "blockId": "000000742e6002de7387f45537b6ede176d1b1cc9b0674953cd5c0259c76e9c0" + }, + { + "blockNum": 117, + "blockId": "0000007569bdd2f637ea25455a111577b4ba79f6e9f10c1d933d7a5d13acbbe7" + }, + { + "blockNum": 118, + "blockId": "00000076bd0f2f8e5e35c2535d3e5f4e0ac547c35caf8c37e5cd80134e325355" + }, + { + "blockNum": 119, + "blockId": "000000770b3005da764f3c6ea783029d572fef9e550da689a791b9a4da80162b" + }, + { + "blockNum": 120, + "blockId": "00000078890a71a4a94d59b01cdadf02d794ab7a9b18196b010b8c3e73ee0024" + }, + { + "blockNum": 121, + "blockId": "00000079e3ee9d0a98a69858c70cd0dc18c95fcf406faccbc2b8a4b46511d9c2" + }, + { + "blockNum": 122, + "blockId": "0000007a5dfd9db9416b37ca2df6c67e428daa80d372f39a85bf19eab1efafe5" + }, + { + "blockNum": 123, + "blockId": "0000007bb075591bc0d84c850c7ad85802f3ee2d30b713589b88c76847d50c45" + }, + { + "blockNum": 124, + "blockId": "0000007c2380b3f578d37c6667b7969624d24926f4385e4a6125259b4cafdb2f" + }, + { + "blockNum": 125, + "blockId": "0000007d409896d643c1fdb92c6dd9fb785ed811a1e295173d24964d13fa58b0" + }, + { + "blockNum": 126, + "blockId": "0000007ea2280353beb4830d94a90cb554716f4093517f507075727fc4a04d80" + }, + { + "blockNum": 127, + "blockId": "0000007ff4147e4683965fb660404e44d1e93161dbb7bb43c2ac05ed42731847" + }, + { + "blockNum": 128, + "blockId": "00000080070c2ff15c4d32761283b1e585eab6ca1e581a3a12d72c942466e3b6" + }, + { + "blockNum": 129, + "blockId": "000000814b483607734c0e9ae31fbd1b97709dfd44e30b7e648e6d2144fbd945" + }, + { + "blockNum": 130, + "blockId": "000000823bf10791692e9321986809b415703e28bb4a1d4a6b2a22e99d4d6346" + }, + { + "blockNum": 131, + "blockId": "00000083622fe4c41e3536e5a0f97c64f27b33a863a466a89818bd870b31e20f" + }, + { + "blockNum": 132, + "blockId": "00000084b7a68fb3f71c836e4c8f0743a053d753e6461305849cc680a8ada3ea" + }, + { + "blockNum": 133, + "blockId": "00000085a10bfa77b14c7f44babc7fb38965a1d05fa33ee7dedb293dbb3940d3" + }, + { + "blockNum": 134, + "blockId": "000000869a463aabd8e14c38b48c5b8b8c19db76b6cda882f38f99257836c2ec" + }, + { + "blockNum": 135, + "blockId": "000000879b462e784eb19aa5b6abb8c68cca7a2a6c64bfcb8ab29a538a07700e" + }, + { + "blockNum": 136, + "blockId": "000000883aa096dda5a87b8b73980c423e8b5dace7fc4caa7fc3b0f13e024fd3" + }, + { + "blockNum": 137, + "blockId": "00000089998131bef2ac8eacb0d42fc289380b24ecd618bfbd6633120cf32ac1" + }, + { + "blockNum": 138, + "blockId": "0000008a254f6ec87c2d4e4db4a442e2c11cbd13d79f4f3c16bb8098fac1ac9f" + }, + { + "blockNum": 139, + "blockId": "0000008bcc0f650a141faa69856bdfd4b032854474f88ef6321056693b994dbe" + }, + { + "blockNum": 140, + "blockId": "0000008c431baed0a307919dfdc8a61de8dd85f155ef2175fae53fedf2bf5703" + }, + { + "blockNum": 141, + "blockId": "0000008de1d49e0a1f480d1d6003b4164d1639ba2d1f6bea0569539099b6b5f7" + }, + { + "blockNum": 142, + "blockId": "0000008eb020e258b030e5b00a6f25fab294ae0c48f93044e924ef6f97be3072" + }, + { + "blockNum": 143, + "blockId": "0000008f063e258af8328748c01ee86c8664611db82f47d051a88d56f17bbee0" + }, + { + "blockNum": 144, + "blockId": "00000090122b66d6f924af74d0e099b4195f889ab2b3559981258cccb5df33b2" + }, + { + "blockNum": 145, + "blockId": "000000910b84faaa62a555499c694b45815b4b11e7f4c9072dad943107ffe9f0" + }, + { + "blockNum": 146, + "blockId": "00000092b047dee51122223b52c3436e3430e82d03f3772f2a692182076c9059" + }, + { + "blockNum": 147, + "blockId": "00000093e0b1023eb351d8fce814238668e4996375bba5afe355bf2b0d9faa0c" + }, + { + "blockNum": 148, + "blockId": "00000094c9488a417d2a2fef3a214b8e7114e08f586fa0a4212da5a6ee4cd3b7" + }, + { + "blockNum": 149, + "blockId": "0000009516ede566c064e01dcfda5767e9201f4def00cd4d69b1c3702d980d05" + }, + { + "blockNum": 150, + "blockId": "00000096af76cb720de3d072ae4f70d1aea1d410e0bc98b9b0ed800a5a0fadb5" + }, + { + "blockNum": 151, + "blockId": "0000009713805313fa9b894cbb86d2b6e5bc2f666ffe006d62b64b220b8a6139" + }, + { + "blockNum": 152, + "blockId": "00000098c35f3cfe295a8a5d48e87012885b65d5f0577e138f7df845d72d418a" + }, + { + "blockNum": 153, + "blockId": "00000099b789899cfb11b3348781a59222065baa71c936a197c57712d3d5737d" + }, + { + "blockNum": 154, + "blockId": "0000009ae1a722b46686eef58e296b34ac67ebcc3a2dabbb193dbc193d7d0f33" + }, + { + "blockNum": 155, + "blockId": "0000009b976c0a051846bd07e79ab6c2660f322d64b7395f54fc1cf62d954d5d" + }, + { + "blockNum": 156, + "blockId": "0000009c1246cb0276b58e55c18b64332cfd60fa3a3867d551f099536917fe60" + }, + { + "blockNum": 157, + "blockId": "0000009d68ef0b9c04b069ab4eae02dfb6af6d57388d7840890d29a91c7ea49f" + }, + { + "blockNum": 158, + "blockId": "0000009eed5c064f5ea25df5a32971cbecc8e7621d77b5b19ccfecd6a4badca4" + }, + { + "blockNum": 159, + "blockId": "0000009f5b44b9760096fb80e03c743c6a37290712cdcc9ef2e8342318a9e5cc" + }, + { + "blockNum": 160, + "blockId": "000000a09bd5ae9b1601333b50b8d72e3e6620955022bf293d808717b894db9e" + }, + { + "blockNum": 161, + "blockId": "000000a1e91f8a356040c83aa3a9267b926d40fd7061d4aaf3059e2b57637227" + }, + { + "blockNum": 162, + "blockId": "000000a203a6778aa87120d118a1859a82c18fe70c4e97f0984561446a1dd2fd" + }, + { + "blockNum": 163, + "blockId": "000000a317bcf07b3b0dfb020e4781b715938416d52537caa83f27998e2f3bf7" + }, + { + "blockNum": 164, + "blockId": "000000a45c8f657baf5f9b2e7071c1a60bd64c49fe213341e3028bfa060a3ea0" + }, + { + "blockNum": 165, + "blockId": "000000a5c073c971db4692d508bff3e6f78322c234f6e2b98b80ee05daf08102" + }, + { + "blockNum": 166, + "blockId": "000000a6722f698dc447535a402d60749a4044dbc21cd590d82c5ecf51853237" + }, + { + "blockNum": 167, + "blockId": "000000a72e2892b4356c097b53909fee68ff985e00cb8d701cb3d0d8e6fd8436" + }, + { + "blockNum": 168, + "blockId": "000000a83e426261e521c47b105cb3e6e36d56b58711b99fd640015ce295e039" + }, + { + "blockNum": 169, + "blockId": "000000a9652a7d2d11dd0bba3f01754eb0ba123e367cd230a30ffcc15918ea48" + }, + { + "blockNum": 170, + "blockId": "000000aada97a952f861dbb951e3ec4cbd453587d26d1878cc2cb0703c0582af" + }, + { + "blockNum": 171, + "blockId": "000000ab5629e035b042ed5280627fe65f463a3e8a0c5422d0e5f593ed077be8" + }, + { + "blockNum": 172, + "blockId": "000000acf40f168912ad1f290ab42cebce4d52e3df0e5e8512cef85b517cfadf" + }, + { + "blockNum": 173, + "blockId": "000000ad06e3bdd19a198dc3691ce42cb4be6378a07ebf19f6f2f947ab08f532" + }, + { + "blockNum": 174, + "blockId": "000000aed56166b678ebd6100b709f9d4ca30322e3734c6c56987501434314e5" + }, + { + "blockNum": 175, + "blockId": "000000af5a57663e65149e7891e5a7d6495f5b39d0d36211430fdf8689bb6f59" + }, + { + "blockNum": 176, + "blockId": "000000b0043df497caa2fec222548fab97fcaa23f98c3f46e6597fc49ef2e124" + }, + { + "blockNum": 177, + "blockId": "000000b14c79f615ec3c12dbce2357ba4d127b335bd3bd202299295513afa943" + }, + { + "blockNum": 178, + "blockId": "000000b2ec1686a8bdbf7af7768802b9b30c3c6f43fe09dbce73d913f0293e42" + }, + { + "blockNum": 179, + "blockId": "000000b3216437f6f207cbfe3dd91371580302a3abb99d0071c47f76e2069c55" + }, + { + "blockNum": 180, + "blockId": "000000b4a9b5789990b5fdf2f12fab280c90b005afb9a1979cf5599c2d9023f5" + }, + { + "blockNum": 181, + "blockId": "000000b597916cd0313f213ac35fd438e2e2030c7579a784be5797a1203b81a4" + }, + { + "blockNum": 182, + "blockId": "000000b60b1c741f49445cad73008bd56aca88bf8f4affb5b5b384ecc0639b5e" + }, + { + "blockNum": 183, + "blockId": "000000b7115e3bb604c5ff3026eec36ea2b2f1d4a0aa3008368b0403c52ac40d" + }, + { + "blockNum": 184, + "blockId": "000000b81c0a9a7b402ff0ee5e8d373ccecaa561aea1c38a945253f0c60e765f" + }, + { + "blockNum": 185, + "blockId": "000000b9c5b60a0d3f73f81678ed4f29dca10723918285bf08a7b2fdb6bd98b6" + }, + { + "blockNum": 186, + "blockId": "000000ba4b5f7d9e93eb4d0826b7eeb0a5f2dc915da430e12901bc1989ed36db" + }, + { + "blockNum": 187, + "blockId": "000000bbf2e27bb4894a2378e54f053f4f4cc7effdce506efd7d1c2b70dad9d3" + }, + { + "blockNum": 188, + "blockId": "000000bc21ed4430dfbe5b8d48343ec91ff62fdf7d1f76a38d13c08fd774a86a" + }, + { + "blockNum": 189, + "blockId": "000000bd4dba85af1962f3c9864266c6feb3fa3d3a84354a59c3560a9bfe658e" + }, + { + "blockNum": 190, + "blockId": "000000be54fa313bcffb69216a22a697ad3aa92acfc85713aa4b622239283991" + }, + { + "blockNum": 191, + "blockId": "000000bf4db7f2b186a33ebf9980b2a450febe1aabc2cfa046f8f9cfb6e82553" + }, + { + "blockNum": 192, + "blockId": "000000c0362fbce16ee3de843b23839452647d4902a3db311e0f1c857f7c4143" + }, + { + "blockNum": 193, + "blockId": "000000c18fa4162f935671f22bedbb6c31ce8abaadd2bf342a5306442bd0b6e3" + }, + { + "blockNum": 194, + "blockId": "000000c23ab8598d69aa69f864f2b92d4bcee7992bb4ea932b2cac75b4ec36c8" + }, + { + "blockNum": 195, + "blockId": "000000c370f46c85d570f0b1b45982b072ed8b6ef611ea04e10d752d5e8e424b" + }, + { + "blockNum": 196, + "blockId": "000000c42278baf097661be1f73b0a983c937d7ac69fe760deb93e05473af6f8" + }, + { + "blockNum": 197, + "blockId": "000000c58cfe6938f6e63292d39ebb880cd12ec5494a5253fec18a0bcbb95092" + }, + { + "blockNum": 198, + "blockId": "000000c6b36984778a94e1bc6ad8e34c5720fe49a3f12e5f45a80f55f4bc5ba3" + }, + { + "blockNum": 199, + "blockId": "000000c7cf106ba9d980bdeb8ee94f44d3419c33867e89d5c889b8e7c658b444" + }, + { + "blockNum": 200, + "blockId": "000000c859f5459cd14c60f6c24241bb3b8c34ccc9779ccb6961ec6e93013c57" + }, + { + "blockNum": 201, + "blockId": "000000c9525e630d0f8361b1a3e20596da8654f65ae9b253fb31b250bdb496a9" + }, + { + "blockNum": 202, + "blockId": "000000ca16997e9c6eb88dd117f8be81bd4eded6e54bf7af848c9d5817ffb4ac" + }, + { + "blockNum": 203, + "blockId": "000000cb67e47b7f1cacdf6668a38f786e97e8b3a7208277041b36ac8be9da6d" + }, + { + "blockNum": 204, + "blockId": "000000cc9166cb11b5dde959ff17af776e68efc8f92b6b418b12d81caf1df068" + }, + { + "blockNum": 205, + "blockId": "000000cd3fdb0776b2c2c51828d65394b6f20387e1ec2041064970fb41b0bda7" + }, + { + "blockNum": 206, + "blockId": "000000ce5f71d8e6b8257641433d277f3fc017456384765be356a3dfea0dca80" + }, + { + "blockNum": 207, + "blockId": "000000cf1643533d7778c6afa501776d6915bf2641cd1de1e0182e440a4e0021" + }, + { + "blockNum": 208, + "blockId": "000000d0404c610dc631869fcb4b6d8c469bfbecd10b407b2896b2c2acb6de2a" + }, + { + "blockNum": 209, + "blockId": "000000d1f908484af052b0b71196b2cd9960afecffdd6857c06f9ae9cb0c29d3" + }, + { + "blockNum": 210, + "blockId": "000000d208a4ff210906f19405b90ddd951e03faea8fa224aa7c88b34739bfdc" + }, + { + "blockNum": 211, + "blockId": "000000d32215d934f144e5d28e1508ff5c59190713a3b5dd22288467f7e580a9" + }, + { + "blockNum": 212, + "blockId": "000000d435c21023ae06f41b113196c7d0af6fd115028816d4063296c753f3da" + }, + { + "blockNum": 213, + "blockId": "000000d5ad4cc617309da54b75e00426c7ebc9f0a2dc57b7452714cf236446e0" + }, + { + "blockNum": 214, + "blockId": "000000d618de3944f20325046c77610ac665fe8e5938796d8b2c840ea708d107" + }, + { + "blockNum": 215, + "blockId": "000000d74db2f4ceac4effda05b42efaaffaa5c40ab069521bc11d9cf38074c7" + }, + { + "blockNum": 216, + "blockId": "000000d879ef1c07fbe50ccf335f9e843e5f97a51f29a7723e16a575467c5fa9" + }, + { + "blockNum": 217, + "blockId": "000000d96c103ba8bc57446381a6dab54ad896f52b3f6beac4862aea45dd2509" + }, + { + "blockNum": 218, + "blockId": "000000da560dd3dbe06542629fd74d9f9a5f43d8a0e25000d25d6468d055f2c9" + }, + { + "blockNum": 219, + "blockId": "000000dbcd01ff8e4e08123295095c26209906475d5642e33d790fa7b8a65acd" + }, + { + "blockNum": 220, + "blockId": "000000dc626f5fcc4fc52dc670abce82ad31f072bd616c1ef7dd05e4518f0230" + }, + { + "blockNum": 221, + "blockId": "000000dd446851806cc48741ebe88afa285295ed3de44381c19a736ab5d7027a" + }, + { + "blockNum": 222, + "blockId": "000000de77fe7cb815625de908087f303e890cb1510e086889079a24b65401f9" + }, + { + "blockNum": 223, + "blockId": "000000dfff9a19dde1ed0f4b2f856c6515990534b3aa7bb6f142d40f61a9166d" + }, + { + "blockNum": 224, + "blockId": "000000e021b6549019737699ed9d6c672f37687f47443ad951d90126c09be659" + }, + { + "blockNum": 225, + "blockId": "000000e11fa5fcaeb2292809f633568fddc4c15dc4357ea2ffd1d2d1c387f4b8" + }, + { + "blockNum": 226, + "blockId": "000000e27331f61b021e60a65279c669c5101ceb8dc75c8a87ffefb9cf6e5b5a" + }, + { + "blockNum": 227, + "blockId": "000000e379946109ebd300918e25b185c12ad7e31c26bfd448fccc733b7ba903" + }, + { + "blockNum": 228, + "blockId": "000000e4aea83fc62b17d15512899eb60ce9215c86391e013b082e2ae8204127" + }, + { + "blockNum": 229, + "blockId": "000000e5f057a92c08c9e5942e654b588bbfa4712ba998f59596e43c3557fd68" + }, + { + "blockNum": 230, + "blockId": "000000e6ac57b422a49fd215f7e7765faa40995b64893a8f50b9af837b9b0811" + }, + { + "blockNum": 231, + "blockId": "000000e7008e9b658b1ec686f0a4ccad80a6a10bd7755a983f6625614962ebdb" + }, + { + "blockNum": 232, + "blockId": "000000e8a8c0feec3a5602917ef2798565ff12cb97c8e5f66129126bce223e46" + }, + { + "blockNum": 233, + "blockId": "000000e9d0457555ece029778af705ae2dc6aec6f388a231facf0e2894ad6d31" + }, + { + "blockNum": 234, + "blockId": "000000eaeda750bd17f57f4d0536ee983fafe2c354697b1ed57f7b4184a23486" + }, + { + "blockNum": 235, + "blockId": "000000eb67815260040621bde576745461c49de3c4e7db0b3cde8f653ac89025" + }, + { + "blockNum": 236, + "blockId": "000000ecb8d6f0f110e6e9e0b90db86962e069a4345e172f0bbbee481f7a4236" + }, + { + "blockNum": 237, + "blockId": "000000edf4721a07b18b23df183ab7c26f4aeeb813b6963b14887eac6c289e22" + }, + { + "blockNum": 238, + "blockId": "000000ee9b09d186a5e1cdd5faa2879207f2f7b16608b95a8609f52965f7e8ba" + }, + { + "blockNum": 239, + "blockId": "000000ef38636698b165591ea15f6ba1ec545f4e4a386e1ffcbc2cd3071868e6" + }, + { + "blockNum": 240, + "blockId": "000000f070685f7d4527f5dbcdac231bf3652213fdbf11315b3ae8645bbd0942" + }, + { + "blockNum": 241, + "blockId": "000000f1a755d5493c005629e910d2dec5d2263a08f7e18015d3c92bb083e2a9" + }, + { + "blockNum": 242, + "blockId": "000000f2e1f3ecb149964115e1bf6f11029cec64c197b3f65cdb015a475b2b37" + }, + { + "blockNum": 243, + "blockId": "000000f33b205700d78bd042501738f634302f09a7736705a5112d17aa1359d1" + }, + { + "blockNum": 244, + "blockId": "000000f4293cbf769b49a386b191d7403647d07df64ed87b354931d4f4f366f9" + }, + { + "blockNum": 245, + "blockId": "000000f5dd2d35dc6aeff2e5948fe83b648876f6f436fe70ec6744f6dd87acc9" + }, + { + "blockNum": 246, + "blockId": "000000f6f0c0f8f532d4a8522e290e7f7431f7e5a5ce7feab1e662c49f9d9d0d" + }, + { + "blockNum": 247, + "blockId": "000000f77785190ba62cc5c25eed3fe12240a0293595e0a1cba75ff4ffa853b2" + }, + { + "blockNum": 248, + "blockId": "000000f832205d2a6f7c45af828db2fd3038a567368ca2e2deab48001c19d5e4" + }, + { + "blockNum": 249, + "blockId": "000000f9a10a681e5c1776bb097536bccf57264e4e0f23e38e01be37df81a5c3" + }, + { + "blockNum": 250, + "blockId": "000000faa8e6b70d7e7a6d3ede4eb741c28e59136e22868de8258969cb429221" + }, + { + "blockNum": 251, + "blockId": "000000fb1fa0bec044c656751ed8e763750abd6e866e9c92a327e3e18c57857e" + }, + { + "blockNum": 252, + "blockId": "000000fc68735d1351bdc40bbdab000273f6cea39c670e8705c78079090523d0" + }, + { + "blockNum": 253, + "blockId": "000000fde0644f0649338dae3cd276551c9b4d79b97a408c64ef1394ad7c5054" + }, + { + "blockNum": 254, + "blockId": "000000fe7b71f64704b6735498b4a945cabb5c35b12f0fa248b5ad06ac699d4e" + }, + { + "blockNum": 255, + "blockId": "000000ff30a9d5a6bb25ad791463ae4fa8a258656ce480604cb52199e2193e35" + }, + { + "blockNum": 256, + "blockId": "000001005bc2c6ac3f3247bd9259fe8a9623413527e2f7ae1d8a1a61ec5889b9" + }, + { + "blockNum": 257, + "blockId": "000001016a3b447052c1a1b6b592d60f0ed688a94c04312b65907a9311e9fe20" + }, + { + "blockNum": 258, + "blockId": "00000102416d20c8c41824e5cea30aa8475a7c2c51be70445100ea85cc556b27" + }, + { + "blockNum": 259, + "blockId": "000001039e94e0d5f3a87c1e56b1c3cd1e7cbceaf168e7a73e57100de7b30ef3" + }, + { + "blockNum": 260, + "blockId": "00000104026d7c67060081e24a953e625106eaae62e257fc24e1e4ccc210bc96" + }, + { + "blockNum": 261, + "blockId": "000001056e978fee120950184d2ed15757ca86cf62a285e3f4e01c84b10b6e38" + }, + { + "blockNum": 262, + "blockId": "0000010605481985419b4712fcd142ecf520c63e861221f54a7ffe3d2661559a" + }, + { + "blockNum": 263, + "blockId": "00000107bdd7f6a370b8939e8ad6e7c8f4bfd794833096e24baf648074ba47e0" + }, + { + "blockNum": 264, + "blockId": "000001087639e3c4aba91b5fc6e17862634a2994d78f9cc4d2858919491bfdb7" + }, + { + "blockNum": 265, + "blockId": "00000109f7960929889eb5fb5f89ad0af8c72bd88a349ba8a3347e68c3b76423" + }, + { + "blockNum": 266, + "blockId": "0000010a48e5ea0765985b24085cac645fb53e8caf7e23e9c600851727bb35d3" + }, + { + "blockNum": 267, + "blockId": "0000010b7a8708ab0cf7bd58ffa632439a42b623cd82c26581d8a3d87a350072" + }, + { + "blockNum": 268, + "blockId": "0000010c0549834527c5aaa1d5b2d6cc7661fac9dd48b00fd75606858b23294c" + }, + { + "blockNum": 269, + "blockId": "0000010dd7b1990018225ffdf1f02025543e7b0f8b5458cc9f2399fd56b96fa3" + }, + { + "blockNum": 270, + "blockId": "0000010eb23afdd75aee5dfbce17218d0bab709d8d6efcb1281723d3a2b0d3ba" + }, + { + "blockNum": 271, + "blockId": "0000010f0b9da9d508df20517ee835b6badfaa1686e8db68e651f39f4cc4d086" + }, + { + "blockNum": 272, + "blockId": "00000110ae24851a34f3addf6f21db152cfb08ef785a0deec027f09ddf9ad9ae" + }, + { + "blockNum": 273, + "blockId": "00000111aa299d956c977efdadbd613564e1819f041310f18c99e0b0aeb8d435" + }, + { + "blockNum": 274, + "blockId": "00000112326875e5f17e1bfd7382777fb60e47c76230cb47913c287f3c946303" + }, + { + "blockNum": 275, + "blockId": "00000113dc292811771a14f34b35394dd3b1eedd089863bed9752c86d7550cf8" + }, + { + "blockNum": 276, + "blockId": "0000011423bd734ceabb8101a800f7f7deea72bbfbc3fbc00ab37a6547691560" + }, + { + "blockNum": 277, + "blockId": "00000115d280681d9afa80fb29d91bfff2256d848801e919054decf4db9f9576" + }, + { + "blockNum": 278, + "blockId": "0000011637ad204a003b914fc494683cc8f2a76d5a9abb2a1bf2673b670c2902" + }, + { + "blockNum": 279, + "blockId": "00000117f2da7673483f170b967fd50a37fd0e4b246af9fd3957e319c37eb81c" + }, + { + "blockNum": 280, + "blockId": "0000011888aae374e31a78e85fefeb7ff3d8b8c129f827220c3cb8f8b7f19b2a" + }, + { + "blockNum": 281, + "blockId": "000001191fe1a396d73e43e4b5db1c13b9438c74639d0c6df9a4ea229aa2a565" + }, + { + "blockNum": 282, + "blockId": "0000011aa28fa03f153fc4695a0c503c1818fd1ad87f5c3bc55f21306afecf00" + }, + { + "blockNum": 283, + "blockId": "0000011bd25a34bffde3475bb9c09bbf41bb1f1cf1bb2633a9bcaa6a39e2e690" + }, + { + "blockNum": 284, + "blockId": "0000011cc74fb98f9c0bb429129690f938f768f16d37f6c4a7fccdf1630be2a3" + }, + { + "blockNum": 285, + "blockId": "0000011d62750e2263b0e2833502c6fbd701ecd0cc72751d3c7b7d5a1f35c89c" + }, + { + "blockNum": 286, + "blockId": "0000011e271b82d5b93dbfd143c42ab2d84297c68d10275ee91e9d8765fafb91" + }, + { + "blockNum": 287, + "blockId": "0000011fd02b4e7c9ce7eaa7f5676edad050814490b8958e701013b18bcfedb2" + }, + { + "blockNum": 288, + "blockId": "0000012031c10959618b967b737582f1c1d93bcaaf5cff5c4b47c68c6723d1e7" + }, + { + "blockNum": 289, + "blockId": "000001215981ce2d77026ada90f361010cd5bfdfeca70eb79f27881b3d717663" + }, + { + "blockNum": 290, + "blockId": "00000122e1b02605d2e2748ebdd03da59e1d8ccda55c659e4cbafcfa7c85f26b" + }, + { + "blockNum": 291, + "blockId": "00000123d9c4a4e238670d64496d63c5582821278288dac025738c4e1ac0e68c" + }, + { + "blockNum": 292, + "blockId": "00000124603b5604d49fd2f52962e6f29698fd96fb0ca7c673f33ebf91a88710" + }, + { + "blockNum": 293, + "blockId": "000001258681e3dd053d4b9cd5856964985a3ea148eabae9ac14a524fb28b57b" + }, + { + "blockNum": 294, + "blockId": "000001267b44527ef56434f8f62471a9cf52859ade941e9bcb615eec9c7baa36" + }, + { + "blockNum": 295, + "blockId": "000001271cd8c353d0b207b71be1012de8749fd4df4820e6b13d56c899bbf28a" + }, + { + "blockNum": 296, + "blockId": "00000128906dd44c9489ddf49a6d3f89240310d0c5f27cfe6bd0a01ff5a8019e" + }, + { + "blockNum": 297, + "blockId": "00000129b3f6dfe873d5134fd0d452adac7ed22b2ee4ea361c490526579bc6af" + }, + { + "blockNum": 298, + "blockId": "0000012a3f41c0a02e785acfa13c00d4b5c73441b49148f3b432ee1d263ca466" + }, + { + "blockNum": 299, + "blockId": "0000012bc33d611a89c560405327fd66c2ff28cd7eda9c8bd8b6b0796f669c76" + }, + { + "blockNum": 300, + "blockId": "0000012c23e05b455e3c4de7427e478f22d44caab7e4e746a6c7fa3ab3f3cc87" + }, + { + "blockNum": 301, + "blockId": "0000012dddae7de7ff83b88ebf1287c145b89c4ae05cfe32c7141990cbe19f0a" + }, + { + "blockNum": 302, + "blockId": "0000012ec7673e054c59ec39025ab5d004bdc8cd2148c5067bfc21509051ad5c" + }, + { + "blockNum": 303, + "blockId": "0000012f426491aff5423fff50094d1fac519fb379935dc43d7933d5e8dc9a6c" + }, + { + "blockNum": 304, + "blockId": "00000130196e08f51425289ca31bb0998f373b50598f5f856402eb773771aac6" + }, + { + "blockNum": 305, + "blockId": "000001312936b2800ea06d5f41c196a8adb3e5d23c862f32477ba0990b8de770" + }, + { + "blockNum": 306, + "blockId": "00000132cdce06b4ab3fd930fff2dc72e5ee4b1295c7d2e59e0512206064b193" + }, + { + "blockNum": 307, + "blockId": "00000133f5c63650eeebb0eb9c49686946ef450e3d0963b8b54ce49a148ae2b7" + }, + { + "blockNum": 308, + "blockId": "00000134d1c062c5cfc70c264a2f93a0f8ca4c8e7c0983769b39de3b1b62c55e" + }, + { + "blockNum": 309, + "blockId": "00000135d0526cb794398514bd9692f098dfb74b29abf82fc48250b82d75d4b4" + }, + { + "blockNum": 310, + "blockId": "00000136a947f813f789d1f5a598f115f16e2a58daf02170c091e46d251da798" + }, + { + "blockNum": 311, + "blockId": "0000013775b30c2ea4cf7d616be05110a93a3462db4945d1638f0e5d3dde979e" + }, + { + "blockNum": 312, + "blockId": "000001381bf9978eaeaa63289ff3851a164404c2a7cd0096e0c5862b2696c9e1" + }, + { + "blockNum": 313, + "blockId": "00000139bf3001d04e3e14e2ff8b82e47f4d3812d59b7313083cffc1d6915419" + }, + { + "blockNum": 314, + "blockId": "0000013a9ef8dd9fc18f9f8929524a5cd9782fd65bd1e8287f5a42eaa51e1bc2" + }, + { + "blockNum": 315, + "blockId": "0000013b476d53e74827bd3cba4bb7d495adf4fc558b0106c9d53ce7099d6069" + }, + { + "blockNum": 316, + "blockId": "0000013ccafa7401cbf63e78f40f92b7c20d2d4df705de6986ebc9ad0c6a3e1b" + }, + { + "blockNum": 317, + "blockId": "0000013dc9b19c6d2ca403f786d057345d3da91fae139ff67d86e41f54a557e7" + }, + { + "blockNum": 318, + "blockId": "0000013eaef0b9db6a57f916f4a02124fce79b9e25be3e91347934f714f084e5" + }, + { + "blockNum": 319, + "blockId": "0000013f357813887712fbe0ebe831b8d7ca4dd7f4ff23847196b5cacc64c4b1" + }, + { + "blockNum": 320, + "blockId": "00000140ed558d501cde3e2da7ff4682ba6c89e8cb4b3e85165d177f060e4873" + }, + { + "blockNum": 321, + "blockId": "00000141bdc0ec7a1bc6d268dd46017fe9fe3a1a13647a23839c1d87d5f44dc2" + }, + { + "blockNum": 322, + "blockId": "000001428ec15b8c52dba150566e4d669accf01d82b57b7daaff671b146af631" + }, + { + "blockNum": 323, + "blockId": "000001439b72b4448bcceaa42e0d440ee51faa7f05cd18a1432bd4b98b0ceea8" + }, + { + "blockNum": 324, + "blockId": "00000144ef6bac7779448d8cb85c74eca449b49a4c50ec441b9b28f69545a558" + }, + { + "blockNum": 325, + "blockId": "0000014559f56f73aee515c52fe9a2dabd65e69e70f130404db67d8451df6051" + }, + { + "blockNum": 326, + "blockId": "00000146eadc8a59436af3bd38f8deb5c0ee69235683a500aecf983ef1b077a6" + }, + { + "blockNum": 327, + "blockId": "00000147c18f51667f9f289308f03a4576c1f6ea8a38b3c0ae8bd0b30e006307" + }, + { + "blockNum": 328, + "blockId": "00000148877ea947a8ebb486fc755a7e0c8d4cecd8548fdaeb0a8f1c93d5fbbd" + }, + { + "blockNum": 329, + "blockId": "0000014946c32899f791c1a1b9debe85242184637d0b05dc052d41531d459d45" + }, + { + "blockNum": 330, + "blockId": "0000014a2eb67ae484123cd86451f38457767d320b7cbf02826f992b2ba32422" + }, + { + "blockNum": 331, + "blockId": "0000014b89c64fb8a0582f1c317e9375a3ce39aec60173403e1dbe5ef0ef1864" + }, + { + "blockNum": 332, + "blockId": "0000014ce8abcb25e61e83ac3558a70c573c5ddbc3689b74bde734fe2f307aeb" + }, + { + "blockNum": 333, + "blockId": "0000014dd1f07399f358cc1050e21e6b2040c31c317d3656340fc0b560253cea" + }, + { + "blockNum": 334, + "blockId": "0000014ee567f6023d5cecdc641ba2020af5f2b13dedec14b066656dd3fadd2a" + }, + { + "blockNum": 335, + "blockId": "0000014f9dfc7ba4624790c56f8e2cf312b8f013128fafc6b39d7bba5248efa7" + }, + { + "blockNum": 336, + "blockId": "00000150724c39f5e320ea7c47f64cd7aaa4c9cd7d8aaeac93bfc61d7182966a" + }, + { + "blockNum": 337, + "blockId": "00000151d4025adff5053ed9c876b4f3e518e0de16d885757c16e7633fa8db1c" + }, + { + "blockNum": 338, + "blockId": "00000152a207a29ee9bc512518b081dba405f204c1ff19f91ceb3235786201fa" + }, + { + "blockNum": 339, + "blockId": "000001530e9c64d5b02481a2b0d11f2b46d411698853bd0d4f3e8c307846fdba" + }, + { + "blockNum": 340, + "blockId": "000001543e953fc73f643914bbc5f8ad0aecc1b38e39a3ee42610dcfa6a29781" + }, + { + "blockNum": 341, + "blockId": "00000155f49d645d67559d466fbe45a5dca27b6d891ed19c46d9b2e9296f4bc7" + }, + { + "blockNum": 342, + "blockId": "000001564a329bb27f86ab98ccc3a84f530d020b9a24384f0ae222661fbfc299" + }, + { + "blockNum": 343, + "blockId": "0000015770e4403ace731d8ea39f9c7fe056386ed673677395e6055dd593af66" + }, + { + "blockNum": 344, + "blockId": "000001589fd00091aec0cd41d59c6f02a94575e61b378653594c8879099872e9" + }, + { + "blockNum": 345, + "blockId": "000001596dac17de186b3e2ed3b0ab1761eaacfe1e1f0dc46cdafc28292c32c3" + }, + { + "blockNum": 346, + "blockId": "0000015ae68e150fcd5cdbcc5487afc3ceac0ee3343379ecd2e348b9856ca354" + }, + { + "blockNum": 347, + "blockId": "0000015b29d56fc15f896e78bb225c110236adeba878af1453049abaf7d75dc3" + }, + { + "blockNum": 348, + "blockId": "0000015c32dc94983324b4b163c4a624110e7e9f23d8170756c88b1f75d78a62" + }, + { + "blockNum": 349, + "blockId": "0000015df37ce3a294a75e687fa05a5888a5484440beb5fb87f8090d6ed5e18c" + }, + { + "blockNum": 350, + "blockId": "0000015e7863363395e69c4d2dff601b3663c40deeeeb8fc2a80b7863a6f9964" + }, + { + "blockNum": 351, + "blockId": "0000015f452911f1b690727f55f02072296507061064957fcea660ca27727e7e" + }, + { + "blockNum": 352, + "blockId": "000001609f2b3a7596ed51cd8a34af47f5b9c8c76130db6aa4c5d07a3f1e9a79" + }, + { + "blockNum": 353, + "blockId": "000001615de5f0f61f74f25cb46ccd9b25a2fbd8c41174b3e84791ee94c99885" + }, + { + "blockNum": 354, + "blockId": "0000016270fadc6afe364ec573491d9e1aae1c9f43ddb95b567311b2b140225f" + }, + { + "blockNum": 355, + "blockId": "000001638ed4254226faf587d2645a149db244f5dbe3e723b723fb66d66e39eb" + }, + { + "blockNum": 356, + "blockId": "00000164192f271dc4afb9bcc5d2e9fbf833a9e168d7390b8d60125fad761f62" + }, + { + "blockNum": 357, + "blockId": "00000165fc483b94dd733a7a6968d078eab225976c0634539c5af192daadf526" + }, + { + "blockNum": 358, + "blockId": "00000166561ca00e3cb3aafe5e9a2c0e2e0ef0eb421dbbd1f1a512daf028dd8c" + }, + { + "blockNum": 359, + "blockId": "00000167676319399ee28c48806255d1f450c134bbaa0533053d367ede3bd69f" + }, + { + "blockNum": 360, + "blockId": "000001687ca80eb2b4c102d50e7eb708b9afb5bdd33f162c0522c5a2ba73a6b9" + }, + { + "blockNum": 361, + "blockId": "00000169563fdec91cd6cfec70a5f9430cc5457d287d5b9f86b6ed6eb3d33cc3" + }, + { + "blockNum": 362, + "blockId": "0000016a37b3b3b058d18d1abaeee52c6348b32cf1aae5821e2b3d4cb34b1c23" + }, + { + "blockNum": 363, + "blockId": "0000016b80fc1ea064dff67f4f30393f531b2b51dcc55880e5550117761b0dcf" + }, + { + "blockNum": 364, + "blockId": "0000016c9e3d507de187cac05aef1705cd4b3eb593f2795eb33094547cb0eae3" + }, + { + "blockNum": 365, + "blockId": "0000016d2aca3875efb596452cb798ed33320a18f5b010447ccdc57517b4637d" + }, + { + "blockNum": 366, + "blockId": "0000016e64291a04aafe8ef9e075b5e45c8721129d0b24892216960f9b0e3a94" + }, + { + "blockNum": 367, + "blockId": "0000016f73acda2f19a1b7e7d4a76368faca868e54da913fcece54e14c5a54b0" + }, + { + "blockNum": 368, + "blockId": "000001705bc2b9d6151cf27dd627c06721c7ad5315ac2ea5e4350a9ffe79c8cb" + }, + { + "blockNum": 369, + "blockId": "000001717640245c4e2b1c47af648941485da2858bc9ae00fa365a0488cab53e" + }, + { + "blockNum": 370, + "blockId": "00000172ed4cf4c569ad54f96179e138bff2df4d1fb590e4640cbb4e51491774" + }, + { + "blockNum": 371, + "blockId": "000001733f5f4ec3837d35369aea7be9f246911e2be7f14ac9c7a2b680a8964b" + }, + { + "blockNum": 372, + "blockId": "00000174f2de5f7251dc636a856363970cd9e6648c923c71dde474deaeb01985" + }, + { + "blockNum": 373, + "blockId": "000001756fe3f5a2b907f31b0ea2bdd48fd88a4836f3c3224523c5bc51bae292" + }, + { + "blockNum": 374, + "blockId": "00000176e54dc04eb1dd11cd483f896f0aa7e4b8f1627a11ee840ffe8c934113" + }, + { + "blockNum": 375, + "blockId": "000001778c2de80496c6b35cfcc81617e854c37e6aa6a6e10837f20917befcf9" + }, + { + "blockNum": 376, + "blockId": "000001784c9de8f686a9c6393094b3e0e17d3c05a7a65faa3ed2be149abed21a" + }, + { + "blockNum": 377, + "blockId": "00000179fe41ea75532def302731c7b503fa9dc74f156501640edae62435b273" + }, + { + "blockNum": 378, + "blockId": "0000017a9997dcf4b1f8a09f673c3036f064636ef4ef152a4ee24ee25fad8f7d" + }, + { + "blockNum": 379, + "blockId": "0000017b5cd7974e496585fa0559ab7c0b22706d8e02b7b0174f2e01939ec817" + }, + { + "blockNum": 380, + "blockId": "0000017cce22a6b8da53171d084f48965bd2aaf10423437e4e3f2963db89b2cd" + }, + { + "blockNum": 381, + "blockId": "0000017df622af220adb7af9c262a11c81e1c92c5d06cd4f265a96cef5a0d07b" + }, + { + "blockNum": 382, + "blockId": "0000017e8a8e36396a93613e0bd73450cfd0981525c17eba5a69435fa5ca5e47" + }, + { + "blockNum": 383, + "blockId": "0000017fadd0986328ebd0c26fc35d9c2478babe2f511841134deb25acf73a63" + }, + { + "blockNum": 384, + "blockId": "000001808177e6fa98171c9ee884d0b48bc27ef4f273f57e182bfbf5c3af1037" + }, + { + "blockNum": 385, + "blockId": "00000181df100b6ce1427b57c2c7decb0f4e98baf7a2d3f603547001ddc99872" + }, + { + "blockNum": 386, + "blockId": "00000182a57b61218e6a68a49043aaeac800df9ea8f86857d1aff279deb1dac7" + }, + { + "blockNum": 387, + "blockId": "000001831c21b616b076687f76b1768f3bd3df598df6f41e818917e392ef729c" + }, + { + "blockNum": 388, + "blockId": "00000184e14209e7882b718a5b5a69d07bf349ccb4ab49698bcd87989c41d3da" + }, + { + "blockNum": 389, + "blockId": "00000185293b3f1a33ca8a0dc2f5808f0384d6d07e4abe0cb506f3209c5d02b5" + }, + { + "blockNum": 390, + "blockId": "00000186259c935540c70da94e73016abb553e9042df7925bbb8880988f8696a" + }, + { + "blockNum": 391, + "blockId": "00000187554b80a177a16477dd108335eb09937966f058f83255a39191b488fb" + }, + { + "blockNum": 392, + "blockId": "000001881a43906376476e96db030f08106b340d6fcf59415601333f3246edc7" + }, + { + "blockNum": 393, + "blockId": "0000018928da2e4fe738a72b0c19348f4122ca65f2a9c34ff6af0fac5c62a666" + }, + { + "blockNum": 394, + "blockId": "0000018a5cc2593144a17c97e479b84f51f87f456835a692f7fac617a8f9e347" + }, + { + "blockNum": 395, + "blockId": "0000018b04631bb2db8ad81c0910084f06693caa35ee38668a61c8c4761f8c82" + }, + { + "blockNum": 396, + "blockId": "0000018c908f6674dfcbfba343364967965408967d761a13dfae51a30b5cd7e7" + }, + { + "blockNum": 397, + "blockId": "0000018df60c1c7a93ca2d2a41dee19729509596ba10081d85073eed35a827d3" + }, + { + "blockNum": 398, + "blockId": "0000018e4d256355b6beb1ee0678cc443e91b1e5b3a5a4cf9f135669d86ea0d3" + }, + { + "blockNum": 399, + "blockId": "0000018fe7c7f345fef04ef100cafae9027ac073acbd972124d77b4b0f1fbc9b" + }, + { + "blockNum": 400, + "blockId": "00000190055cb12630ae7084fd8b1156602b9a70f08a5e09cefcca551a3dd0bf" + }, + { + "blockNum": 401, + "blockId": "000001919a25ed5ec93569697192b1deaee5be540f2e20983dd8a6d422f95174" + }, + { + "blockNum": 402, + "blockId": "00000192b59d4ede7bbc837b9e4594b0847e6877f2a9bba8f55ebb309b3b1bd2" + }, + { + "blockNum": 403, + "blockId": "000001937d66ad1a919322e52682406901db260eac2bba142c3f84f8c1710e35" + }, + { + "blockNum": 404, + "blockId": "0000019405c696bfb2057eb9c4864422503852b9791103116918131ca7e1f019" + }, + { + "blockNum": 405, + "blockId": "0000019544d9f869c8a0965c71d956adc74fbce3468464b02981f0993d4f16fb" + }, + { + "blockNum": 406, + "blockId": "0000019610b0fd7ff3d3e3d044bf78abaac0e920ef64c7097c076369111f9934" + }, + { + "blockNum": 407, + "blockId": "000001977a568f32d9caba56e5c0b927ed5670f0852c586d6b2a5e93c345ac23" + }, + { + "blockNum": 408, + "blockId": "0000019819a874be8415b0a5c876e7a58fc0260060aec7f106c50408cc69b123" + }, + { + "blockNum": 409, + "blockId": "00000199227f020182c9e9f0c133d6e06c6e7cb258045a4b09eee563937d440d" + }, + { + "blockNum": 410, + "blockId": "0000019ac9fb0c9c2da66785d106ee6d887c155a066f9b09e462900d29c7a9b8" + }, + { + "blockNum": 411, + "blockId": "0000019b066978be3b9224d8f4cf23edf6069149945d7a3656f9a6fe29af413a" + }, + { + "blockNum": 412, + "blockId": "0000019ca638a6ba1597b74032ae644bc1bef16b3bd53d57f97208a4ce2f2674" + }, + { + "blockNum": 413, + "blockId": "0000019d374afd1448fb1f9bccac787f5ac467cec2b29483021b4b451545e11c" + }, + { + "blockNum": 414, + "blockId": "0000019e5b75244d0a339bddf5300c9085a26ddbb6930c7a4e08b9f0781df923" + }, + { + "blockNum": 415, + "blockId": "0000019f6ada14c394bf663fa9a91e0dcbc271b046d5606067d919de47409251" + }, + { + "blockNum": 416, + "blockId": "000001a04fc86b6177bfe857f9113bc538419d812fc797fa06ff1c2dafb51826" + }, + { + "blockNum": 417, + "blockId": "000001a194924a5f8056f56bb8c76bf766267d8d10da737281ea805a16a1daff" + }, + { + "blockNum": 418, + "blockId": "000001a2ecd1c7ff89017b12178fe5b6b88139e170ae064a0f1e97bed72417d8" + }, + { + "blockNum": 419, + "blockId": "000001a3a7796797db456b01592a4580feb7aa5fd699ec8e077b2ab6b38cb51e" + }, + { + "blockNum": 420, + "blockId": "000001a4bc8e139ea336d7d8189d17fab335253905b4ca344ffb5948f97a5df7" + }, + { + "blockNum": 421, + "blockId": "000001a55ab8e415555d961713378410fddf289f4ffaf1a211ef3385a77e1e64" + }, + { + "blockNum": 422, + "blockId": "000001a6b298a83318233caeea4cc7645863c397c52c71f9270256ae3a183d7f" + }, + { + "blockNum": 423, + "blockId": "000001a72df38028709f8dcf749eb4adf239dd62b47bc90977a046d210784f34" + }, + { + "blockNum": 424, + "blockId": "000001a8caee6177a76f7a7cb25410c5e7b0d5da9371196d933597dcfdb40330" + }, + { + "blockNum": 425, + "blockId": "000001a91b8b9583eaf761624fc97cad6885e4f66968d59ef73ffc13979e208c" + }, + { + "blockNum": 426, + "blockId": "000001aa83d83b72251152a28befcc0997ebd0be76c59a00c648911c565352b0" + }, + { + "blockNum": 427, + "blockId": "000001abc297974812368e037263011e43d1bfc7d9303f5440bfadd5c8a0898e" + }, + { + "blockNum": 428, + "blockId": "000001ac8bb3b60c8c5a9a403e3dbce78b329202c5780abb66efb8e6e31cb0c7" + }, + { + "blockNum": 429, + "blockId": "000001ad07cc5d3ed2568156a028f34a64a50d05aea74b9bc3cf485b5642b5cf" + }, + { + "blockNum": 430, + "blockId": "000001ae692256245ec935fc6f280b15cafa60c264ba1ecb15dec3839b97dba3" + }, + { + "blockNum": 431, + "blockId": "000001af68001c88ddda6c22f029b1ba80666f186970c86745875e66b0e226d9" + }, + { + "blockNum": 432, + "blockId": "000001b0676ec492931138bb19789918cdddfaeffe7c32760c575247daef9b4d" + }, + { + "blockNum": 433, + "blockId": "000001b1d07e59ba4ada2b22f622b7a6e396cf83f7abf271b87092a1fd3ef5ae" + }, + { + "blockNum": 434, + "blockId": "000001b2e8432d19acdfeb7f6ac94d684cd33b3ab3dfb7d8cd82267afd7e535c" + }, + { + "blockNum": 435, + "blockId": "000001b38f6b849371f22f1e445be1ce7bea94df410cbdbdb97aa58b5aed9c90" + }, + { + "blockNum": 436, + "blockId": "000001b46a5e79cc21d7271b1480381b621dce730f5c611754b73643a007ab7b" + }, + { + "blockNum": 437, + "blockId": "000001b526ffe92de24fdba9a0876be99ec347a2c425fccc58dcdaf952d9d215" + }, + { + "blockNum": 438, + "blockId": "000001b6172b0affde144932ea408be46f9be7cad518e9c37cc55c4064be339c" + }, + { + "blockNum": 439, + "blockId": "000001b76f425eb9ad65e90f2a2b3dbac834eef5989fc1f43e595e4a1e8b8a99" + }, + { + "blockNum": 440, + "blockId": "000001b8cb7c40c27121ff8adc8534353e2520be55c3c3d49762bb73c7093383" + }, + { + "blockNum": 441, + "blockId": "000001b98f13f62ef859d8f1c58ec55510925f0538ba63bf8ccf979c316f8ef4" + }, + { + "blockNum": 442, + "blockId": "000001bad20023a15a3bb025a97563bdf24e4098626d8514f9ea2327557fc2cd" + }, + { + "blockNum": 443, + "blockId": "000001bb674dbe5a9d01417de452a1a5ce594c661bc21447a99493568551c0b1" + }, + { + "blockNum": 444, + "blockId": "000001bcd98296b4fd1a9e0d79c442e91252a86e000753a8634a905ba66a4023" + }, + { + "blockNum": 445, + "blockId": "000001bde0a70b41db356a249272f76707b7a127cadc898b9186b637d529dcd6" + }, + { + "blockNum": 446, + "blockId": "000001be642650a68b3b3305d4a83e9c56eca6b884c6553c08293f00f656c8ee" + }, + { + "blockNum": 447, + "blockId": "000001bf96512803a5c191381a5828dee2ca0cc49d1681d9928e8008ac988f6f" + }, + { + "blockNum": 448, + "blockId": "000001c0c7dff1483f1981a00016d1dfb637be3f909e1e1fb67f4eadd6586ce3" + }, + { + "blockNum": 449, + "blockId": "000001c1d3743cf2cf57c291ecfb55b45479df7a25758ca572787df311da2cdf" + }, + { + "blockNum": 450, + "blockId": "000001c277a9c873e12ab1309bc7f0654a822957097572c10b76b8339f7c09ab" + }, + { + "blockNum": 451, + "blockId": "000001c311be57be416200109e3316ec7105e81636ddc914b77cee27f76f031a" + }, + { + "blockNum": 452, + "blockId": "000001c4d177d65e12c3bbd6f96fdfcc4a4a8e5ea9c83e5a02314f966f7e792d" + }, + { + "blockNum": 453, + "blockId": "000001c5da1c0873f92fede8083516273d7c45c8eed78de4e6c620a1e9a7d49a" + }, + { + "blockNum": 454, + "blockId": "000001c64965b27b4bafd57cdf23a05ad65bb401269d0049d3b373d28b22bd21" + }, + { + "blockNum": 455, + "blockId": "000001c7ae7315ea79ee1ef945b479f66112fc740ca2eb9986ccdc5477ecd305" + }, + { + "blockNum": 456, + "blockId": "000001c85145c2a7587491324ecf899a9451f62eb8ae360fa2a0c12caf89461b" + }, + { + "blockNum": 457, + "blockId": "000001c9647cbe7659268a9b497ee5a7b38a49475508133bb4783da7dce991ab" + }, + { + "blockNum": 458, + "blockId": "000001ca75dfdd9263919c5e4a54b725edf95917961c3fa4847392983428c05d" + }, + { + "blockNum": 459, + "blockId": "000001cb5596a27b3eea55b9f539e78fee885a85035923dc33f5a81cba3bfcd5" + }, + { + "blockNum": 460, + "blockId": "000001ccc0148596760393ab883913ea27e045624f4e48738c636c09984e51e8" + }, + { + "blockNum": 461, + "blockId": "000001cd21169e1002711d025bc65a9d89ac0e2bd4ab5af0cce0c14088d46b70" + }, + { + "blockNum": 462, + "blockId": "000001ce103402d02109c5993489a45d930e0fe99a1b6f8253d2519a4d75af69" + }, + { + "blockNum": 463, + "blockId": "000001cf17ee7e9633bda2d512584c896207ee17e77ca9b276909078d817d21d" + }, + { + "blockNum": 464, + "blockId": "000001d03b2cfb0fdde00c60de5854af3a2e4e21166110db18d8691a732cc121" + }, + { + "blockNum": 465, + "blockId": "000001d1aedf92c0df1db2a56d686de8b31b594ebd6ac8ca0d0e0df5bc486b57" + }, + { + "blockNum": 466, + "blockId": "000001d2b60f73a46957c89e462a6c8afe5e2e2385f94cbeb260a4d8d671b87b" + }, + { + "blockNum": 467, + "blockId": "000001d3bd96becb8cb63ce8270464ca72f21a1a8eea49112cdf84c0d4ae868b" + }, + { + "blockNum": 468, + "blockId": "000001d45f6a60aa2187c462f03eda1a26174a3d3c163f0ed0963281c16f833f" + }, + { + "blockNum": 469, + "blockId": "000001d58cfe03eb49dfd55afbd6ff19f78609a90859dec8845aa073e252f8e2" + }, + { + "blockNum": 470, + "blockId": "000001d6ab82629d0b198b6df5fd3025418073b579b31c16f56c123f57570dc5" + }, + { + "blockNum": 471, + "blockId": "000001d7831feb35cb9f4b9da7e89921a84f33455c67f2d2079002205281c1d5" + }, + { + "blockNum": 472, + "blockId": "000001d8fd8525ff93375e3f15061753ab1d9b99245fc3b707304d9a98d72fea" + }, + { + "blockNum": 473, + "blockId": "000001d99d89c1c9c9d952f8e6b008c92bc081bf0b2e95b6f8bfefcbddf42a59" + }, + { + "blockNum": 474, + "blockId": "000001dac144ef1fd66d6bc254bf8c841a13c77094c997310af25d2f4c5a9579" + }, + { + "blockNum": 475, + "blockId": "000001dbc13a2273a4f3fbe00dca5e67279d29850334428f34733c26461b662b" + }, + { + "blockNum": 476, + "blockId": "000001dcfd0b780a7c62d3d796c1e38dc65270cc4e67db02ba879c9ce6e40ca9" + }, + { + "blockNum": 477, + "blockId": "000001dd52b5722f603a04a0d74c836ffb1fc9903ee46d4dcefbdc191789163d" + }, + { + "blockNum": 478, + "blockId": "000001de8cc7eb980f98340e68be97bdef3337d8c1e5ae93147952cffdc1d59a" + }, + { + "blockNum": 479, + "blockId": "000001df699e2243dc2abf9b07d95908813c9c6a2575df655e35a8947465186e" + }, + { + "blockNum": 480, + "blockId": "000001e08d49a0eae89b20773a41e509a0d191f6fc83d4a0b0cb60254e79468a" + }, + { + "blockNum": 481, + "blockId": "000001e1a7ee7142d53a0dfb594df9aa4269f50827a12a6b303ca634cedd5fb0" + }, + { + "blockNum": 482, + "blockId": "000001e204b1aeca63eadae7d31d6bf58b99f5032a9922eb169f5d64426ef81e" + }, + { + "blockNum": 483, + "blockId": "000001e3ed6e51aabf1b939d0c004b44f4f162606758581ea2b906386535fa8e" + }, + { + "blockNum": 484, + "blockId": "000001e4def854760e790b240d46816da676dad79ad18f14f33101406c6afff3" + }, + { + "blockNum": 485, + "blockId": "000001e5dd11dc8b1c1ad3913b8d5c7c06d78f729a7ee27c8bc68ae8f8a217f0" + }, + { + "blockNum": 486, + "blockId": "000001e65621d8af1fc5f013101f7cacfd62cdf01fe1453336208315b07be15e" + }, + { + "blockNum": 487, + "blockId": "000001e76bd538e9a58bd778f9b586ce7168e5e0652d30b317301842d97a1ba6" + }, + { + "blockNum": 488, + "blockId": "000001e809f6687dcb1262eec59c3f657a1d9a4c7c6d4f524512843f3d5eb22e" + }, + { + "blockNum": 489, + "blockId": "000001e9b512f9f41521d4f3050cd6277c705b6f01afcdcb54cd3d911ec454be" + }, + { + "blockNum": 490, + "blockId": "000001ea1be25f23d66e94bbe9d747de43d3b40f60e5c09121de45d926585cf6" + }, + { + "blockNum": 491, + "blockId": "000001eb166b85896d526c61a8e668723dd5d912ec6b4de13882020d7496b54a" + }, + { + "blockNum": 492, + "blockId": "000001ecc20f977e27c414ac5d4adcee5e880e1d8f86ddcea3f9be808de583a5" + }, + { + "blockNum": 493, + "blockId": "000001ed9c1e24dd0569c606c89b4cf03b7a6f9acd0f9a28cc2888f1bcc62043" + }, + { + "blockNum": 494, + "blockId": "000001ee099d3cc70ead9443692afc53293c9d03aa98967ef193ac5836bc0056" + }, + { + "blockNum": 495, + "blockId": "000001ef6cb8a82ba5baeed6f20489981ef1002a4307dde5b41ab486b6e1f786" + }, + { + "blockNum": 496, + "blockId": "000001f04eeae4e54ea819d26654d88b9ce9be3f7c064633730991d194126438" + }, + { + "blockNum": 497, + "blockId": "000001f1b50a690e20b17153d3b8f7706ea1693049798efd880fdce55fdfa903" + }, + { + "blockNum": 498, + "blockId": "000001f23ab2c1aa58201d83a10520c30a8efe33bb6159228efb61bbce83042b" + }, + { + "blockNum": 499, + "blockId": "000001f3cba07e450ef7ccac56dd41819dca806dfae7daf7d377ddcc8deb5bcc" + }, + { + "blockNum": 500, + "blockId": "000001f4abe17cfe4a8bd236a60787c80c2dc07c733cbed8913e6872f212fdb3" + }, + { + "blockNum": 501, + "blockId": "000001f50b30394b28f017d6eb05c65e181f8ede47bcc1ff8b39618bd5ccb050" + }, + { + "blockNum": 502, + "blockId": "000001f614bdd66cc23bba5a8c0d5ad1272cb1ef3d2492deaf60d8587e034a4a" + }, + { + "blockNum": 503, + "blockId": "000001f72aeadf06aef25ac1220f1c9e4ffee63a30bb058aa81c627adc28d41e" + }, + { + "blockNum": 504, + "blockId": "000001f850dc7f648e22049a6a6fc39c26713919278b941200431b431f1b4a99" + }, + { + "blockNum": 505, + "blockId": "000001f94e97982c200274582e03aa8670f498cebdb12e0490010c2002f68adb" + }, + { + "blockNum": 506, + "blockId": "000001face4ce7949e0a7c5172e7fb3952d4d7f63c579caab22d96fe5460c681" + }, + { + "blockNum": 507, + "blockId": "000001fbe37844a8b5905122f82b6e98e6fa16d350a23b93ff6caa7f364b9b78" + }, + { + "blockNum": 508, + "blockId": "000001fcb7d17989ebe22e0329da1a7af9f3b8234af0d6eac2b2d7c45371f980" + }, + { + "blockNum": 509, + "blockId": "000001fd810d7ca909b12a4b898f53d1bca04936f3d858c9c1eb13a6318c9ba4" + }, + { + "blockNum": 510, + "blockId": "000001feeab89c71123e5861dced83f6523bf7be5ae0eff549fdfce4e9c854ee" + }, + { + "blockNum": 511, + "blockId": "000001fff754682bd0f27e3da45123c5a9d17fa339293eeffb715a0e4bfebbcc" + }, + { + "blockNum": 512, + "blockId": "0000020026bfe5e682532c6baf0911bb483cd5bf1e55a767fb6776e1bc804398" + }, + { + "blockNum": 513, + "blockId": "0000020124ec15bfbc8fd9719efc162964f84e5daf61bdfca4ee192623691c9a" + }, + { + "blockNum": 514, + "blockId": "000002029a2b48469c172b832b72fc0a239fda916ccdeafca757d72645ce9502" + }, + { + "blockNum": 515, + "blockId": "0000020363ddb17a73ea593fcc5bcba8144882dbaa757d84840af126e22708e4" + }, + { + "blockNum": 516, + "blockId": "00000204d7369a0a1353402e2cbcb67ec8759d5dea68b1bc69824332bedcc38b" + }, + { + "blockNum": 517, + "blockId": "000002050d33277e6f5545bf9f46041aa69a0a90eef9f0abaeb8a3eb540dd4c2" + }, + { + "blockNum": 518, + "blockId": "000002063ab5528370f71df52e2aebb8312eb3a627d1f10fad1ced0b4505be6a" + }, + { + "blockNum": 519, + "blockId": "00000207ae0715d4433b4975474fb78543093fcf19a94e7acfa512986d42fbaf" + }, + { + "blockNum": 520, + "blockId": "00000208e26418261eb36f0a3289f5efb05a72c7ab79c2f52fe74df27e5e4bb2" + }, + { + "blockNum": 521, + "blockId": "00000209d500923560381b4ce1cccecb431116023b8cc749be5ea2efa1f1a877" + }, + { + "blockNum": 522, + "blockId": "0000020a26ae6f77ffd572bcdd2d389fa03047748d151f7b01537b146f6ca478" + }, + { + "blockNum": 523, + "blockId": "0000020b189ad9994b4cffb9572fdcf594dc59bb57b1d34572b4a08eea4ee9d4" + }, + { + "blockNum": 524, + "blockId": "0000020c83a00b07e9cdb8d10b0898e5e5e4ac09ce5c963a41a578ec33e78dea" + }, + { + "blockNum": 525, + "blockId": "0000020db83828c0dd0721fb8e0fd01ba56b5c547dd9ce68a1bbc2fbad7a8765" + }, + { + "blockNum": 526, + "blockId": "0000020ef35d9b838b6de4c692dda67b93aa96b62eacb925a68e79674c8c3680" + }, + { + "blockNum": 527, + "blockId": "0000020f89fe6bb97dae93799471fd423af7777bdaf8c990845b77ae48b16453" + }, + { + "blockNum": 528, + "blockId": "00000210cdd48fdb7341c29b5bae4a899e2ef64d1be7f0c89da81c81acd39df3" + }, + { + "blockNum": 529, + "blockId": "00000211e6a004f0739275077ba0ebc7527296020578dc80b77383f73fdd4390" + }, + { + "blockNum": 530, + "blockId": "00000212a5de8fa0e6bcb3141dbe1a702c624dcdee082f63b21c8cf6186d002f" + }, + { + "blockNum": 531, + "blockId": "00000213bb97a67b7478103a70110fbeb5df9689a28a21ac0f4d67f6aeea0fde" + }, + { + "blockNum": 532, + "blockId": "00000214f1643e057699cfacec6546475d4e47ed636664633996dde42a142307" + }, + { + "blockNum": 533, + "blockId": "00000215b011d3ab4a3fd1795bf141de9eb873a83d3173d6c7c8b6d94b0074fe" + }, + { + "blockNum": 534, + "blockId": "000002167ae3591ccfbfacbdf114b51e4d8ef9caec5eb5acc1fe88a2c717f843" + }, + { + "blockNum": 535, + "blockId": "00000217072360f78fae8cbf145aa6558706dd2031bee58a23ad528cb7396e15" + }, + { + "blockNum": 536, + "blockId": "000002182bb3300834d64600808b80c07717729667724677baf740cb67421715" + }, + { + "blockNum": 537, + "blockId": "00000219fb10a2660a5cb994e979f277e5260214f2e609d555cd4cf88d2a9625" + }, + { + "blockNum": 538, + "blockId": "0000021a5f634f0270ccc918311214fe79c6d128207d5ca3455692edbb477096" + }, + { + "blockNum": 539, + "blockId": "0000021b02af67ce84919faccc21afa56c0b4fbd2bfca8497d8fc8394f60e6da" + }, + { + "blockNum": 540, + "blockId": "0000021c435759cee4bba0d81df74e3ead465fa53141c70e2d23d2000d7f0c66" + }, + { + "blockNum": 541, + "blockId": "0000021d879b8c8ca7b3b79303f0ed7cf92b0626ebae1e062f115ae3c20317ac" + }, + { + "blockNum": 542, + "blockId": "0000021ec48586c7e1d3b63fc7d60c7b910c67a17b6ed8f789c3f46cba4503a0" + }, + { + "blockNum": 543, + "blockId": "0000021f1ae569385de046266e7abe99bac763d4646b9dc7094ebefba4000bea" + }, + { + "blockNum": 544, + "blockId": "000002207fb7b69d392df6ef8129938a58cc358500c314a3a251d8e691cf0081" + }, + { + "blockNum": 545, + "blockId": "00000221573ec0bb3aa8bd761efcff6ce75e9410fbd6d3bf30e71b88b0ffceb6" + }, + { + "blockNum": 546, + "blockId": "000002225e262a888a72ddd2255a9f065ba54c42433354672d76272c5b89ebbc" + }, + { + "blockNum": 547, + "blockId": "00000223afa9079a28a5e97aa795474a0dff8ddbb1db874c6e50ac8f127bbe2b" + }, + { + "blockNum": 548, + "blockId": "00000224f03bcd57e6b20bde08690fc08f73602aa264adebc837f2a042b09fe2" + }, + { + "blockNum": 549, + "blockId": "00000225f6ff5620a23333b2300514dc337e290c9ae683641990a70e3591a681" + }, + { + "blockNum": 550, + "blockId": "00000226311f9bd9da1eabd8898a4a9d846b1159ed5276c10f6344acb18538ac" + }, + { + "blockNum": 551, + "blockId": "000002275b2aef3a7cbfee2d0541a45a384813cf6bf0317495942127030209e5" + }, + { + "blockNum": 552, + "blockId": "0000022848ef282d4c3574b7c9101eeee2eff806ac3505b2e0444193e8c956d4" + }, + { + "blockNum": 553, + "blockId": "000002290f1499cc6e5a56c0ca2c4076a388e21c309eb191817ead87d95c1663" + }, + { + "blockNum": 554, + "blockId": "0000022a3ee826b52365b05fac412f6d1daa9f9a5aad31677f3b17906d83c796" + }, + { + "blockNum": 555, + "blockId": "0000022b223ebcccaafb4125374a483e1eecbcb0da99ad0359c8dcac3fedb8a1" + }, + { + "blockNum": 556, + "blockId": "0000022c38ec4931444b0dc6e500309146707615ee657dd40f8bf1c185407b84" + }, + { + "blockNum": 557, + "blockId": "0000022de7c7de75b139bb5a9b36c1c5afa7a054e46d13c3e605c299b1db40e3" + }, + { + "blockNum": 558, + "blockId": "0000022ecbc0f56d2771c4c190498c6b1fdc6d3dd507cb6310105d9c05b0725f" + }, + { + "blockNum": 559, + "blockId": "0000022f06feeb5de5c6a88523866d4f2954a7b96e19794dae66c1c2ea2703bb" + }, + { + "blockNum": 560, + "blockId": "0000023086699033cf0697842b03830525c0f535736ab760847232d59de7b212" + }, + { + "blockNum": 561, + "blockId": "00000231c631dca3790ca8584f5bbaa5d9349cec966aff7cf682f5d8bbf7152a" + }, + { + "blockNum": 562, + "blockId": "0000023253f8a102a4118b36514fb0ed575a89ede77aa2bac936017d3d387279" + }, + { + "blockNum": 563, + "blockId": "0000023310e2f8159d1fcce4a6d2e06d1d50eb5706318b8864d3c4379fa3528c" + }, + { + "blockNum": 564, + "blockId": "00000234dcaf8e7c8b6235ecef9f37bde5b29943449b8442dc9a9dbd597db680" + }, + { + "blockNum": 565, + "blockId": "0000023504db29ef85cc9e6fa34629e828f308f162e2cde964ec1dc15cb1530b" + }, + { + "blockNum": 566, + "blockId": "000002369f8f82daf86773643ac7ae845109eb0e58a380ae5cda3a65c2b7c320" + }, + { + "blockNum": 567, + "blockId": "00000237331895937e9dddb2f2e4108c7fe87b034e70a09ed10abc9d78e044e3" + }, + { + "blockNum": 568, + "blockId": "0000023876f419082cbcc5812411b6da77c07f40d07e4cf19fc21cd22ffc3d01" + }, + { + "blockNum": 569, + "blockId": "0000023921a51ef73188e2ebfc0f34641bd1bd9c4e179acba4cca3cb55b6c6f2" + }, + { + "blockNum": 570, + "blockId": "0000023a57c4ae09fb47192a949c41b21f92a8c9f6dea5e17da0ccc8becffa7b" + }, + { + "blockNum": 571, + "blockId": "0000023bec191a1d3d76c1f0d62c05d8522cd9b9a1c85eb92791d2bc74437f7a" + }, + { + "blockNum": 572, + "blockId": "0000023ca32e8a4be9259abf6d33efe503c35ce39e7eb68d3810a625d579b688" + }, + { + "blockNum": 573, + "blockId": "0000023dba3c3d4cca4213238e9df2feb2085b5be2f6d57b339e669967c6befa" + }, + { + "blockNum": 574, + "blockId": "0000023e5527c06d51afd4489844a1fa58a1e670856b45f7c8df94d4e698e089" + }, + { + "blockNum": 575, + "blockId": "0000023fe0026598d1025cb900b2cf151c4eecd0999c8b5724b7c3febb6e45ca" + }, + { + "blockNum": 576, + "blockId": "0000024057e4ef71f24d4f73fc8bf56415772739a926af229f09813f0a4318d5" + }, + { + "blockNum": 577, + "blockId": "000002410e38948f12127cb71dcbebd468f80dc942a8311a83c73dbb274d83ff" + }, + { + "blockNum": 578, + "blockId": "0000024254fd4ecae393a7496d9947007125f91b059f272bd75be66d9d6cfefb" + }, + { + "blockNum": 579, + "blockId": "00000243cd830598c03d28098b14f105466985d74307a20c550620cfe31f8b02" + }, + { + "blockNum": 580, + "blockId": "00000244f752673d9f00cd915b1c095d722441b4982749a4188d5cf14c507b3c" + }, + { + "blockNum": 581, + "blockId": "00000245f218923707c025d08b15a24ca489d17c2d1dfaa83e3ae10acb55aedd" + }, + { + "blockNum": 582, + "blockId": "00000246d8c2e3494fc3534700fa2210a7cd513d464524c2a55793180988bb03" + }, + { + "blockNum": 583, + "blockId": "000002472db0653d7151affebf4eb0ef2f9cf8792b4e9fa3c3c1e50745d1976c" + }, + { + "blockNum": 584, + "blockId": "00000248a115bca6158f8aa8933bd18dc0fc433766b898eeadbac759e6b8cf56" + }, + { + "blockNum": 585, + "blockId": "000002493d4ba69ca070a3667fdb5fb73b41e7e167b8fc9332ac746d0e267af9" + }, + { + "blockNum": 586, + "blockId": "0000024a850394402d4b8a43f172641fd34fae1a70c28491facc97e619cebacb" + }, + { + "blockNum": 587, + "blockId": "0000024bccf777571c8367a8aa1d0e330da668143c77823c15321bc1b3dd2af1" + }, + { + "blockNum": 588, + "blockId": "0000024c260eed8cd96c3bb591765f7b65e8b317b3068395c0a4b586c5f8c8df" + }, + { + "blockNum": 589, + "blockId": "0000024dd7e3f4e50052ea07ab338d0c8c3559cff4984394d97ac2988a2b6a53" + }, + { + "blockNum": 590, + "blockId": "0000024eaf48acc1230af1314aad7e3e807dc29971a415b03008a6a36e05bf1b" + }, + { + "blockNum": 591, + "blockId": "0000024f485094f33a1d2bec47f4be11aaffa539c0c1933df2c8a66b41e70bb9" + }, + { + "blockNum": 592, + "blockId": "00000250a1f0ecc1b8e50524642aae2195be6538dbe8547433272fe2b573936f" + }, + { + "blockNum": 593, + "blockId": "00000251517ab5b5546001dc4b171181c363ec02cc15edd79d2033104cb8edee" + }, + { + "blockNum": 594, + "blockId": "000002521e4b79977416b32712d49cf9a37d26c594446812c2ec6782f342db74" + }, + { + "blockNum": 595, + "blockId": "000002536727d214c73995190750dd7bfda654789c361dae214140aa949b7366" + }, + { + "blockNum": 596, + "blockId": "0000025464a41e532cdfa875c7de9d89f5a70fb0222732103f30a48cfbe75af6" + }, + { + "blockNum": 597, + "blockId": "00000255aec1e24427330d1f8a7050ac19cdcf6a529ad2921d7d546520847d47" + }, + { + "blockNum": 598, + "blockId": "0000025698b4a5b5ef851aa1e9fe62aff0eb343d41156d3610fdc9e07e4e83d6" + }, + { + "blockNum": 599, + "blockId": "000002579666c1a5c452d67e255cdd03752fd299f5730ee9e55daca3e6fffdda" + }, + { + "blockNum": 600, + "blockId": "000002589e3d5f368a39e25b90cefcc8edb293bd00b0eaf2739eddfdfe5f61cc" + }, + { + "blockNum": 601, + "blockId": "0000025998e7a7d85084a8b480fdb37af2125115b04f445d9cd2d5f9a8a6d9e0" + }, + { + "blockNum": 602, + "blockId": "0000025a6d21831cd5c5a4e6c80d35301062712c7bc464bc02b368f0c3bc785d" + }, + { + "blockNum": 603, + "blockId": "0000025b2fc1325be89ba169a62eec969b7e973e9404f0ad3ee95da8ba3022d9" + }, + { + "blockNum": 604, + "blockId": "0000025c1c949e6d20cb6906942e1bf4f5f1c199c32705c9c4d8197f2a096cf9" + }, + { + "blockNum": 605, + "blockId": "0000025d150be449d8f6eb35d10335b0851f021e280e8a41f4f62727a22d49eb" + }, + { + "blockNum": 606, + "blockId": "0000025e773edd828a2f93a72c1df04519abee4b99dbd5b89b3bcc90eec218a7" + }, + { + "blockNum": 607, + "blockId": "0000025fc5711688398a3b21da67b8fd1d12d1430ee5d8fd66709b0e4940ebec" + }, + { + "blockNum": 608, + "blockId": "00000260b1109d16266ee7de13f096c61ea2500c18e30938ebbde7e8d844ad59" + }, + { + "blockNum": 609, + "blockId": "000002613e02cb95d25eb30c45c4085b5b253fdb33b4627959f873aabd95cb01" + }, + { + "blockNum": 610, + "blockId": "0000026218fbd5458861cd05a41f81946b551e6376e3b8b939bc4839f6c8e271" + }, + { + "blockNum": 611, + "blockId": "00000263ed78ca224d5f3fb909432cbf78fecbfa5673651b94572bf9c9443a61" + }, + { + "blockNum": 612, + "blockId": "00000264ea433737e8a52fe72be7ac30f087f2c661b0de203cd9a2ca64ad2562" + }, + { + "blockNum": 613, + "blockId": "000002651827ee2eb338405d1d1eb21094b771b7f64c1520b7cb7e018779e3e7" + }, + { + "blockNum": 614, + "blockId": "0000026642270a03a7482cdd37b3ba6a20cd624a84865e63ca7e95f413ab34f1" + }, + { + "blockNum": 615, + "blockId": "00000267e0b6cb84604cacba8b91f4731693d539681a4210709ab1ace387fc84" + }, + { + "blockNum": 616, + "blockId": "00000268680e81fa5b90577a116362e1d6f8b4e864b34e4889e0c3750cca5b9d" + }, + { + "blockNum": 617, + "blockId": "00000269d1512d01c72791ad0ad14e876af4b3d8306932e7f1bcc42ffb521235" + }, + { + "blockNum": 618, + "blockId": "0000026a698cfe678e5a8b4c2fab6d009de3d1bd8c953288975a4026ce8e281b" + }, + { + "blockNum": 619, + "blockId": "0000026b8470c253386bda4685138ec9152275aabd74281749bec1103d824a37" + }, + { + "blockNum": 620, + "blockId": "0000026c29e320f820ccbba4a9af709193adc9fde9be49bd7b591050f9c2d1be" + }, + { + "blockNum": 621, + "blockId": "0000026d8527db894fb2e23058336c3869ebbc5ff7939ea55c97555b25ce42d2" + }, + { + "blockNum": 622, + "blockId": "0000026e794698243492d76810593a4b4c9d0d237610d4ad29104a7fc5b60106" + }, + { + "blockNum": 623, + "blockId": "0000026f75af56c01f61b665ba92ea8a595da16cb9dc0a9a8920106b7ec504ab" + }, + { + "blockNum": 624, + "blockId": "00000270bc1bddcb0025e81218b295b470306279222d766e0708d29078fce96a" + }, + { + "blockNum": 625, + "blockId": "000002710a47613bea9d9ac8a3e908565b640245b8e5be4cc81217b430ec7030" + }, + { + "blockNum": 626, + "blockId": "000002729eb83f4f5f31a888ab7d1f2fa20641f607770b92baf74177db20ec13" + }, + { + "blockNum": 627, + "blockId": "000002733666a1b1906a82d33f11ba669ffd0db6eb36a43005e34d29f5bbc616" + }, + { + "blockNum": 628, + "blockId": "000002740882ad951b5a3238b3cde98183c60b1687c22e54998a12d9b92ef904" + }, + { + "blockNum": 629, + "blockId": "00000275b4ab6b6fa23c2fd47e8a8484728df3aaddc0228f8557a8ef350cd457" + }, + { + "blockNum": 630, + "blockId": "00000276c11034f8c218755bfdf69a1bd8dbdcd12e0f5ef7f0ebf2ed3f613ebb" + }, + { + "blockNum": 631, + "blockId": "00000277b75deb9ade9d93e6e878df3dbc7bc847f6d6824301873ca8f48e0e7d" + }, + { + "blockNum": 632, + "blockId": "000002782663ac53e7ff032d04495c7c59772b7f1c0ab88e8de66f1cb8a51817" + }, + { + "blockNum": 633, + "blockId": "00000279b476bb2fe4152f8f56e809385ee28529caf1066bd7851a239a01bf43" + }, + { + "blockNum": 634, + "blockId": "0000027a25f5fcc101ec869302843da14871f1e4833daae403f6cc8392daaf49" + }, + { + "blockNum": 635, + "blockId": "0000027bb4ad1c320f28932f66636478581e8c7b00d98c6213a8c0fb304a1c77" + }, + { + "blockNum": 636, + "blockId": "0000027c0f74eb79cbca65b10f6fa291336f0db2db505f7b89ffbd1c0a2b683b" + }, + { + "blockNum": 637, + "blockId": "0000027dcc2be03e01af336aa96a4ee7133834b000569de259118d22a37f9afe" + }, + { + "blockNum": 638, + "blockId": "0000027e0cb789f1afaa3c16cd42a90c0e990d946148a6e7c30c059c3a561b23" + }, + { + "blockNum": 639, + "blockId": "0000027fa1b1ebad722cb57d17af96e4cfc1c8e8782d367c990ed471307249d9" + }, + { + "blockNum": 640, + "blockId": "00000280450538f4fe74b6abf3d8311cc125e0cd89e14aa21c760870a9cbad31" + }, + { + "blockNum": 641, + "blockId": "00000281720c587a6ced02550bcec9e1fb2ebabf6fedd2dcea30dd9bc14af03f" + }, + { + "blockNum": 642, + "blockId": "0000028274192b1927a9afe4b323d4d72ed8b4c5e569f7662192fa8b6b4e7566" + }, + { + "blockNum": 643, + "blockId": "00000283b891c78783458864b5c8080592d79d3592fd7aecd0fa5997e5b6fddd" + }, + { + "blockNum": 644, + "blockId": "00000284026b5e51ff55c5dba69e1ef598fb78e65e7396f3ac262ab630ba01a6" + }, + { + "blockNum": 645, + "blockId": "0000028577aa70688f205c83c3a847814082efd492ba874c620af431f6abddd9" + }, + { + "blockNum": 646, + "blockId": "00000286ceb97deb7d5ed601a83c07260a1985c4d722b365710f1a89bd16e86f" + }, + { + "blockNum": 647, + "blockId": "00000287a0680594b4b48e3c0669cbbd8fb5cbcb54bbacc18346aaf171910837" + }, + { + "blockNum": 648, + "blockId": "00000288440a2061ca84479ccc7d9d9b1553778fc2308d8725947cbe464859d9" + }, + { + "blockNum": 649, + "blockId": "00000289ce164121e6c0381a9fd6817e38c0bd3b9d99b778fa12b1fdca4df5f9" + }, + { + "blockNum": 650, + "blockId": "0000028aa5bd74945787d389ffec635b833910780577f7441e0bcdfc2cb7ab42" + }, + { + "blockNum": 651, + "blockId": "0000028b6d6e6da23c559277a19f5e9d8250fa22b820fe71ed309e13e1053605" + }, + { + "blockNum": 652, + "blockId": "0000028c61b97bae3cdd934e1c62f9222f5f8574591b1ee08f6052fec22bb4e7" + }, + { + "blockNum": 653, + "blockId": "0000028d0771a612b47ef33b57683e33c62f6734a3cc9beb89e5fa2e27563c04" + }, + { + "blockNum": 654, + "blockId": "0000028e7efaea2d6c08121ee7ec53dcc538319fc00c1b0bf5c6c8b4a954b7a1" + }, + { + "blockNum": 655, + "blockId": "0000028fcd7d2a59af617835ba83ed14118abc793f255d2262de9a7ff5961984" + }, + { + "blockNum": 656, + "blockId": "00000290559b10cf17e0c8dfae36219f66a41897f78130d69c31f427d36de60a" + }, + { + "blockNum": 657, + "blockId": "0000029122bdf374efbc5bec4df17eb6775e5fbbec0aa5511827a2c1a8a53696" + }, + { + "blockNum": 658, + "blockId": "0000029226f0e239fbf77ad588d9106612980baebb2171d333b9a15ab8e2e4c0" + }, + { + "blockNum": 659, + "blockId": "00000293b896b32c48b3ce6b308476e13c2f3162c21c411ffdc8a0f1917bb2eb" + }, + { + "blockNum": 660, + "blockId": "000002942e661b2fd2f0e7d35b108745f317b682f0e8f8cdb6d06ead7ccc7445" + }, + { + "blockNum": 661, + "blockId": "000002950c3a45d49b7f89f19c1cc7123331c509f0d3c2c8994c10330f8d9ee5" + }, + { + "blockNum": 662, + "blockId": "000002968950a045f2bf5a2e94ea4c18b41e43437221d75203ea5db16334cef2" + }, + { + "blockNum": 663, + "blockId": "0000029770a4c0ff3beb682c5c50728df4767b69331ff5166b3374d07a6bafa2" + }, + { + "blockNum": 664, + "blockId": "000002989d4faffcaf5285b52f0719b1405486eeb46ff695e7ec99da02900a67" + }, + { + "blockNum": 665, + "blockId": "000002997c39f8f8b4b45a67d5130a7463fc1b3617cb6b2f2d93ad89f961a78c" + }, + { + "blockNum": 666, + "blockId": "0000029a8b1bf778618f2e89509a74abc82ab487bccb62cee4a92339f83609c3" + }, + { + "blockNum": 667, + "blockId": "0000029b18bff944ecdecd1a0fe1fae6c8ee1a8efd3af5e1794012aba6f16f76" + }, + { + "blockNum": 668, + "blockId": "0000029c044842d0402c76aad8656bfc652268a99d046a1ff224f81ed110366a" + }, + { + "blockNum": 669, + "blockId": "0000029dca55241a150f200f23156bee20d2bb724d6301f444696d7b754b24f3" + }, + { + "blockNum": 670, + "blockId": "0000029ea3f1a42cbe46a07c5fb2e43f026fa34688a57cf18f78b73b5dc1bd57" + }, + { + "blockNum": 671, + "blockId": "0000029f36f0bee1a74c3be7ae17ed336a7eef6a2a37a77492af83bc66e3576d" + }, + { + "blockNum": 672, + "blockId": "000002a0ca1ee327c3814dfcf8886f3bf6a278298c199cbd19279849f4d10390" + }, + { + "blockNum": 673, + "blockId": "000002a16a13ae63f854f4ba98e9148c29195beef3052e7d3ec633b26fb5f486" + }, + { + "blockNum": 674, + "blockId": "000002a2bb212207f0a07163a7953ca432fdf2f014cf131a7cdd66c2f9df12d1" + }, + { + "blockNum": 675, + "blockId": "000002a3e4a369595e91994e3770ef7dc71037832743a0da4f13c7da6f7aca49" + }, + { + "blockNum": 676, + "blockId": "000002a44fc6068d9f011f5e4eabc661ffee11ce3b12a564283de41d910fafbd" + }, + { + "blockNum": 677, + "blockId": "000002a56b1c35a709933f8ae4e8cb1ecd61b9ca5bdc5d507fe7d1c8d75ed4f7" + }, + { + "blockNum": 678, + "blockId": "000002a6dcd4afcb30e23de56371013b2bf68d6b80f6b9464595ed29080a384a" + }, + { + "blockNum": 679, + "blockId": "000002a7af70ed78cf6d2a6213b7531f80ea65ea34254cfa78b5ad0f63e3bc8b" + }, + { + "blockNum": 680, + "blockId": "000002a8a7253d1ae3afba49c1ae0799946eb3a8ff449d33afc4df2a49a1ea19" + }, + { + "blockNum": 681, + "blockId": "000002a9fe0cd49f1e68aa4175d17a26f2998fd700fa0630db463d7e42d7cec5" + }, + { + "blockNum": 682, + "blockId": "000002aaadfba31ce4cd977ab2959791e002326e881f3b0f29fc0a985cbde773" + }, + { + "blockNum": 683, + "blockId": "000002ab5af0cf42917da32b1186eed342728f73645c6e263186ae6f85f921a6" + }, + { + "blockNum": 684, + "blockId": "000002ac9dc43dbf26e2aa383526cd5e5055cb154fdf30a530fb98203fed1d18" + }, + { + "blockNum": 685, + "blockId": "000002adcbdaf9e9a8cdab9c310e44a7922283e589d313b151c7e4282ff1e40f" + }, + { + "blockNum": 686, + "blockId": "000002ae97574af772f818d824d93e469b08366760ea0d174d7635bda19ab007" + }, + { + "blockNum": 687, + "blockId": "000002af5282ffd1f8a98598f339b92310370e051103d5c62148a7650cba9232" + }, + { + "blockNum": 688, + "blockId": "000002b01ece5f74c80a86a09a47566387f47d0a20878f7ee0315613208edfeb" + }, + { + "blockNum": 689, + "blockId": "000002b1e98c412eb6f3133f7f391f08994f028bdda7e34fd7f6158be970270a" + }, + { + "blockNum": 690, + "blockId": "000002b20db3146bbae2cb24c19657479d3ead4ac2802da3d5d42238d018f70d" + }, + { + "blockNum": 691, + "blockId": "000002b31b84d792a079ce48f6e82fc30bba7cc21c19c76feff576b05e921c44" + }, + { + "blockNum": 692, + "blockId": "000002b431628ab5b09d6f8f103fb40d3aae25f94b37f62ce0127662b05de1ff" + }, + { + "blockNum": 693, + "blockId": "000002b5c7d500b6964b9bd88b0c2b69d21d779a1301deb1716b56ac064d20d4" + }, + { + "blockNum": 694, + "blockId": "000002b6085c9639f8142d3961c42cbe873933552c0eaa33960d98bc2e5a20eb" + }, + { + "blockNum": 695, + "blockId": "000002b700ed299f773ac8df912f90bc0f4931160b4796393c211f96b4c0b138" + }, + { + "blockNum": 696, + "blockId": "000002b8bdf59c3d0684c56b45e13501061d95f812cd06d766715201c5497645" + }, + { + "blockNum": 697, + "blockId": "000002b913c1953eeff5b63a9a4b1c856c939521f9ffc54c149c9ca1cf2dab2d" + }, + { + "blockNum": 698, + "blockId": "000002ba5f7d7d850c5ceec739f5899040ed3e8b412d4577b47ed6d327edb469" + }, + { + "blockNum": 699, + "blockId": "000002bb575b10eb5726a64b6c11a8424edc69aac4e11306fc76cb453656e7ff" + }, + { + "blockNum": 700, + "blockId": "000002bcc63bef9931a0d0df535502cae728ec056a90d8368ffca2eb07134a83" + }, + { + "blockNum": 701, + "blockId": "000002bd9cef456de159eb3603562ad54e92229b13afa439bf3cefbf050aae45" + }, + { + "blockNum": 702, + "blockId": "000002be388afef18b5b9f83f031ff8d7a3dab147d306f0333140de895a40d8f" + }, + { + "blockNum": 703, + "blockId": "000002bf4dcade8741eb6a21ce194eef52ed0104f9b02dff03d2ea0c1c7fdb21" + }, + { + "blockNum": 704, + "blockId": "000002c0dbf3efd5980b3a375f1ead9a0430f42378752e2eeadee68bdc51ebce" + }, + { + "blockNum": 705, + "blockId": "000002c11a13654a510df47106ff5da71f8c03a05dbaac5b54aae52a41defbc9" + }, + { + "blockNum": 706, + "blockId": "000002c239665afcd659fa520004066ebfee8dcf91294ea46ee4285115c050ee" + }, + { + "blockNum": 707, + "blockId": "000002c34f79a9f58c410165c8bb79f75744599f944ae0467afb3b1d1266b7c1" + }, + { + "blockNum": 708, + "blockId": "000002c4da2fb8387ced46eeced17355a6515b2f594074ec27cd3ad8cd6d5dde" + }, + { + "blockNum": 709, + "blockId": "000002c5daaa3dcd9ca5d35129594352f10bc1de0cb27496b0c2b240284a6804" + }, + { + "blockNum": 710, + "blockId": "000002c67d9315f5cf81832f91cc62a5dcacf298a19820f5605f6af49f0aafda" + }, + { + "blockNum": 711, + "blockId": "000002c74c35767e7287e94eaaa410dea8795de175e73b74c683bac2999444cb" + }, + { + "blockNum": 712, + "blockId": "000002c8fdd747a1c0adecd6079729a65581dbefa2230479d472d4c054d90d82" + }, + { + "blockNum": 713, + "blockId": "000002c94a1be14c785891c7051c492f1a331b31d3f9c6c6d551aed61513e269" + }, + { + "blockNum": 714, + "blockId": "000002ca5bb7cf9ffe848ba1ffa1889002cbbf0c2126ebedcda6e26cb1192614" + }, + { + "blockNum": 715, + "blockId": "000002cb3c2fc1dd51a034758600da5ee82df4fd4aaa42dec504d236822b7952" + }, + { + "blockNum": 716, + "blockId": "000002cc09b1665a51a510aba4539c72e3245b913064dbcbd7bc514c9ca20c3e" + }, + { + "blockNum": 717, + "blockId": "000002cd82b03aff23ca12ba3fc8577872a2fed94664cb0ef772075650fe2241" + }, + { + "blockNum": 718, + "blockId": "000002ced623d0dc254274662e6c443c97b479f1af7281a13d091545b8915f30" + }, + { + "blockNum": 719, + "blockId": "000002cfab5d37faaacf5fcf280c360741228e30bab084d05a13318909e1e973" + }, + { + "blockNum": 720, + "blockId": "000002d0e78f2baacb8bdc76e68937511c404565434b93d6e45aef83eab61f33" + }, + { + "blockNum": 721, + "blockId": "000002d106f6a6a656ee15b2803920201ddab91a8cab852a5eab9799f3f32fe3" + }, + { + "blockNum": 722, + "blockId": "000002d2560d694bf2ddb29edd70cbf1379cb7cc3393eeb37891963023f29224" + }, + { + "blockNum": 723, + "blockId": "000002d388351d9b923506f32109992f3f9c70eab6232655e7ee390368d49d86" + }, + { + "blockNum": 724, + "blockId": "000002d4305ec421c2bb3e749b141d6dd48043d0c0e111e2a66e5e20c9d325d5" + }, + { + "blockNum": 725, + "blockId": "000002d5162e2dbeea310a195df377344cdee011554b6f34e8a15f9bd3494529" + }, + { + "blockNum": 726, + "blockId": "000002d6981371164a243df55ced31efd5eef383c3e37e96736b9e6da3afc45d" + }, + { + "blockNum": 727, + "blockId": "000002d782158c06d38ee12539661aca91d8626926cd7a3a3d5bc37994f92211" + }, + { + "blockNum": 728, + "blockId": "000002d83b9ca58ec8f4a721550f91e119c3b327185edc9c8dc70aba948f59d3" + }, + { + "blockNum": 729, + "blockId": "000002d9c77c844df37ab32cbbba0942fd16eea782531ea2ddb552cc6dffca69" + }, + { + "blockNum": 730, + "blockId": "000002dab3992872e1e2fa594eea623a6ea35bc2f03460ba3240aa71d2ffec02" + }, + { + "blockNum": 731, + "blockId": "000002dbdb31258c2764d7b576741119493e1a9cd66a927d733fe143f0cb25fd" + }, + { + "blockNum": 732, + "blockId": "000002dc2c75bb657c285e962138ca08a102259c7bb8a216642d13e2948e8ea5" + }, + { + "blockNum": 733, + "blockId": "000002dd5bf862596eaf9400315bb6882aa6e8ec3f7f8cbe5ad1ff7975b5569e" + }, + { + "blockNum": 734, + "blockId": "000002de5fff3609468063c55dbd948b52b4aba70b287d53478a9e60ce3e251f" + }, + { + "blockNum": 735, + "blockId": "000002dfc0414f0d1c7ef2a8e05beec8e444a8694c3b234c1e678131dacaffd7" + }, + { + "blockNum": 736, + "blockId": "000002e0f45aaf199eb5d8a7ad206188cd9e461c9190a4171e0b951f2adaffed" + }, + { + "blockNum": 737, + "blockId": "000002e11b592ed8ed270576de506baa92b06bdb808b2643537d8140614f67a5" + }, + { + "blockNum": 738, + "blockId": "000002e29a76a41474ecadc563627bfb566aeb4de092ef5df17e1fca6a4cca27" + }, + { + "blockNum": 739, + "blockId": "000002e3b879d8978ea83ea97439679fdf0d75a6e20d208790dd5cdab80837b9" + }, + { + "blockNum": 740, + "blockId": "000002e4f00c1ad85ffd4dd9622669518bce85af6fd98b08323579814a983a86" + }, + { + "blockNum": 741, + "blockId": "000002e520c44e09c9228abc589e94195f7ca6dff1f9904642bd754e28c93ca6" + }, + { + "blockNum": 742, + "blockId": "000002e6ad009b1016ac1f69b521c41e3a70c0d6a1b51c3fdabcc57d962dcd03" + }, + { + "blockNum": 743, + "blockId": "000002e7975a7dafcbb85c4607009391c9fdd9f8a25fd339aa3e6a0bead23a93" + }, + { + "blockNum": 744, + "blockId": "000002e890ce8430639a64a80a9e76d5516e928bc8e717c4c8a48af8934c7775" + }, + { + "blockNum": 745, + "blockId": "000002e994a0c7faebf435fd3d647f6106d65878e56edd643321c8243f2fd423" + }, + { + "blockNum": 746, + "blockId": "000002eabf151400b600d7d040a9c2e41fb5af172d595aa4638c2d7219ac9f79" + }, + { + "blockNum": 747, + "blockId": "000002eb5a807a1b6bbf745db70780942436c926c38d367ef735ee362a51684d" + }, + { + "blockNum": 748, + "blockId": "000002ecd42cd67d217ed914f8d9c9db39e9358313affc7c8668a3735a4336e7" + }, + { + "blockNum": 749, + "blockId": "000002ede8958e54351271f9561bea384c7fcb0e0952ab0f4843926355b92f69" + }, + { + "blockNum": 750, + "blockId": "000002ee235c8a4f5d0c41009d3dd878fdcfe230b63f61b55bd560530de1d033" + }, + { + "blockNum": 751, + "blockId": "000002ef35b6ae983f244902f8fe6e459d01a1d4edf0cb83d80f132985aec44e" + }, + { + "blockNum": 752, + "blockId": "000002f0c451d6c4ff2305b5915087f8964f4f0dab9cb50ffe7f1d3913b5646b" + }, + { + "blockNum": 753, + "blockId": "000002f134e604b0be8f9768dc6620dc37e260699381e9c59d898daebda862e8" + }, + { + "blockNum": 754, + "blockId": "000002f291a9872468f9e65c3b06a5da359e82effd32b00e0e3dea744f28dd9b" + }, + { + "blockNum": 755, + "blockId": "000002f32e3fc15e433105b4aea775ea34d566616fb63f119b53393272980af3" + }, + { + "blockNum": 756, + "blockId": "000002f4dd433e371579774eac9544f1d15583cea411f88e39a87cc0f17d6fe3" + }, + { + "blockNum": 757, + "blockId": "000002f5874c59772dacb2d174474aecaab385a5c082d3d08a501787e0cc2197" + }, + { + "blockNum": 758, + "blockId": "000002f6f9243289a777f00bd82b39a532dd8137627948813342d87c41e9b7b0" + }, + { + "blockNum": 759, + "blockId": "000002f76169fa011607cd54088ca26a69621643dcf925f7da71f0a2c3ebd2ac" + }, + { + "blockNum": 760, + "blockId": "000002f8a92f664bf5f73284eab050e27b5bd5d3b560d41f0ed7b2c712b401b3" + }, + { + "blockNum": 761, + "blockId": "000002f9c4608cf69480231b1fecaba606b869834f2425ad9de744803cc4eab4" + }, + { + "blockNum": 762, + "blockId": "000002fa8b13d64176047f1d40aa6cbadd0f8b3b0003332caf7a99c6fc7b7353" + }, + { + "blockNum": 763, + "blockId": "000002fbd582f4fe6c5aec7a83de70adb1d7a26e28e137f216e4b93f1a277836" + }, + { + "blockNum": 764, + "blockId": "000002fc1a4ad97bb6dc7095b79fe181e83f5ef437d933145583d221060d218d" + }, + { + "blockNum": 765, + "blockId": "000002fda7acef3839bb79a5f45b84dfb879cd66f51bb774561833da440a1f6a" + }, + { + "blockNum": 766, + "blockId": "000002fe4044ad688a778c7769ec3fb3e1ef2e74a68a791bb43bae7296a67341" + }, + { + "blockNum": 767, + "blockId": "000002ffc997ec4e1d7369999852f9908b0ab6c92a3a645dc706656b14be74f7" + }, + { + "blockNum": 768, + "blockId": "000003008a275590a130f7e37f11f1ece7583789ffd04d9c901f703e5a8e10a0" + }, + { + "blockNum": 769, + "blockId": "00000301ad39ccbe636cbea4ac2c1e4e56263046d3d3d0e6a5ead8473704f445" + }, + { + "blockNum": 770, + "blockId": "000003022a1a40b1e99bdfd8533e77e25da9cc994f0cc6af3dee3a63c65bda86" + }, + { + "blockNum": 771, + "blockId": "0000030329dc3db206e7666abffc2fffdbb002bfae97767854f061fc6cca5f0e" + }, + { + "blockNum": 772, + "blockId": "0000030494d839d15acbbcadc78c2c960468171528a3ffc5fc8d0f9be426d485" + }, + { + "blockNum": 773, + "blockId": "000003050b83822920cfba5b85d0381867baf49786830ecf508d4c057918c1d0" + }, + { + "blockNum": 774, + "blockId": "00000306b5156c318a86a1384c762fe2622bfc99a4ea5dc07fb829c2277278f7" + }, + { + "blockNum": 775, + "blockId": "00000307a2bb809f3be61b1f7a7de550b7c975659bcb8fa500d5e948d8c4334f" + }, + { + "blockNum": 776, + "blockId": "000003081f13864da8db7f321d6c8f24fbba5de8954642b6a4da8b709c51dd2e" + }, + { + "blockNum": 777, + "blockId": "00000309d99c7c0c359538f1ae3bc8b8884909222e55f69d6f196c6b551a3307" + }, + { + "blockNum": 778, + "blockId": "0000030a47bbc707308d733451fd79def8be07b63d43d7dcb193ba79dcbcad0c" + }, + { + "blockNum": 779, + "blockId": "0000030b9b7a9f7a3dcfae4f2f28e00f8fecaade567d84d3464f9e15025844b1" + }, + { + "blockNum": 780, + "blockId": "0000030c14d2c2060fcd5a83363cd7bba35adc64d1ccc7cab7525b6438a5a702" + }, + { + "blockNum": 781, + "blockId": "0000030dda9caaba4e9cc2d77f274a6aad2011a9e4b776e1629929499ce8f4e6" + }, + { + "blockNum": 782, + "blockId": "0000030e852231e9584aa7047362c1c921f5e08ca46ad17540408bb1a7b93334" + }, + { + "blockNum": 783, + "blockId": "0000030fbcf222142426de2dfe229372098c0165f6697f6ca8029a935b1e18d4" + }, + { + "blockNum": 784, + "blockId": "00000310bfd7b660f45909a543427f6fb8db244bc82ea71d86e323dee09328f4" + }, + { + "blockNum": 785, + "blockId": "00000311c201147e34edc03426a3f8360fd1b7dbf0e73776181add1205ebc82e" + }, + { + "blockNum": 786, + "blockId": "00000312add077a86ca4d6223f578beafc6392568f9a81727f07b380f65c68b0" + }, + { + "blockNum": 787, + "blockId": "000003139455e1ea3144ee39039b9645cd0f28512cb6997aaeb80bda5a5aeab8" + }, + { + "blockNum": 788, + "blockId": "00000314021e0ed8189cc8ba948694e21cfcc71767236b8c4a25701d604904dd" + }, + { + "blockNum": 789, + "blockId": "00000315ed5b4489949f5ce5fb8f4d86d64411547505c1ae0e413f1f58407aaf" + }, + { + "blockNum": 790, + "blockId": "0000031669cd8d465c46ca5ee20d1495bbec2f7d33055e3957a1bcdbe1bd8a81" + }, + { + "blockNum": 791, + "blockId": "0000031742ede2d349a2c40b1402717a7bd876176dc9c459b01b7caf33336f64" + }, + { + "blockNum": 792, + "blockId": "00000318199e8e66bed31244a9ac85aa117afefc93449e976050a8cddc5e2ff0" + }, + { + "blockNum": 793, + "blockId": "000003194606329a2d02d46f20ca7336ecd9df2d503337c0462f2cbc6e3fc985" + }, + { + "blockNum": 794, + "blockId": "0000031acf754c29ab6bc0d605c84760493d0ad8c69669c6f322c036631764f6" + }, + { + "blockNum": 795, + "blockId": "0000031bfcb926610d1e19b7e654a659214e29fed9a2ced39aa0d567847c55bd" + }, + { + "blockNum": 796, + "blockId": "0000031cdb6a1f9827b639fbfcfd6229cefde814a178d25d2ee5008c0cf8be22" + }, + { + "blockNum": 797, + "blockId": "0000031d5e9a4f3181aef4992317f5f83f6432c8bccab72c01b9b366ab7917cd" + }, + { + "blockNum": 798, + "blockId": "0000031e3c3ddb279f478b4d4508974577e52854c24df6aa25028dd1f5fe66b6" + }, + { + "blockNum": 799, + "blockId": "0000031f79d7aaab51107354a5f8140239230df2b23f75969be44ebb6f245cd6" + }, + { + "blockNum": 800, + "blockId": "00000320b83169c4c3723db0f53e42c8d33de9d32066d42c32f72a47c91138de" + }, + { + "blockNum": 801, + "blockId": "0000032145878ab2fa7a776173204e56d4efeca8403cb0948cc70e9b89591f0a" + }, + { + "blockNum": 802, + "blockId": "00000322a78748c4f149608e1c1782e0cfc2dccbdb2e6c31d5b17dd7e2399516" + }, + { + "blockNum": 803, + "blockId": "000003239ef0a0a82897582ab8bbbfa22308aa733d72837b02c36889fea132ba" + }, + { + "blockNum": 804, + "blockId": "00000324ff11cbfcafe895afe8136d2f090a530e4f5b672fd7a4618156595ef3" + }, + { + "blockNum": 805, + "blockId": "00000325df2d2677ee5826153ed6726b987c4db95f505f95f073635f73cde6a8" + }, + { + "blockNum": 806, + "blockId": "000003265ed03b7198a2c389fd1b7d3b6a6f08ec7602033f60c91f767b301ed0" + }, + { + "blockNum": 807, + "blockId": "000003275a1b876c838189767e2a0c24b04366947e6640ae09387a30b39f7596" + }, + { + "blockNum": 808, + "blockId": "00000328f2be0a77613cf4743bb78273e16c9dd3c9fb1678dcc3106a956bb6f8" + }, + { + "blockNum": 809, + "blockId": "00000329430c964aeb091f8b57ac8c5652df5f04ec3f9d1a00a9f8ab85a08c76" + }, + { + "blockNum": 810, + "blockId": "0000032ac1cd73afe0d66852441dde6e6c56db627f7516c7f08cd08570a9b7f0" + }, + { + "blockNum": 811, + "blockId": "0000032b09c7aa73574482c46a4d0a730be199864a3dd603c85fd66fb423b870" + }, + { + "blockNum": 812, + "blockId": "0000032c47c91329b8857831da13cd8474a8344d63139e45ed4ffa08dd4176e1" + }, + { + "blockNum": 813, + "blockId": "0000032d8736388d8a272f45bc30ef0e7e742738543126940ae2af062900aeca" + }, + { + "blockNum": 814, + "blockId": "0000032e0f32240330974226f4b872234187acaf12264a31eee9b692622333c3" + }, + { + "blockNum": 815, + "blockId": "0000032f3f7f078263c3e6bc57d66b3fe0bc191e5e45b333dbac11845b196c1e" + }, + { + "blockNum": 816, + "blockId": "00000330a323e32a73c9791a4c0ae9ebb9442b1e26f543eab585f7443ba4b7a1" + }, + { + "blockNum": 817, + "blockId": "000003310cf9f4db1d7c3d5d6ea1fc35828602cc7aa991e4d745e5279c24f337" + }, + { + "blockNum": 818, + "blockId": "00000332e2dfffa2ddb1cb560563fcc47ced14077d37af39d9da311d37c91275" + }, + { + "blockNum": 819, + "blockId": "00000333eba8a1998ce1bed54e502fb797b902e4546fea418a21e4ac259a5341" + }, + { + "blockNum": 820, + "blockId": "000003349497680e9dc457e3fd6fdef53776970df733829a0af09de48b275b2e" + }, + { + "blockNum": 821, + "blockId": "0000033503fd36ba7df596a5dc09a23bbacaddba7c7fd15dc8e5032730ad27d0" + }, + { + "blockNum": 822, + "blockId": "00000336131866f7a1eb154ca3066df937a52607e02ebaeb72c7dcf37f48ee18" + }, + { + "blockNum": 823, + "blockId": "00000337a565c9d4eeb35edca51ec70dbbbe5e4ce55b9ee6c42743f1c79e9bf3" + }, + { + "blockNum": 824, + "blockId": "00000338497bffe955e4ba4006ad462ad1c270f115cbcac0d5d8f226ef82e56b" + }, + { + "blockNum": 825, + "blockId": "000003394a127884a5098550461e98ab09cbcb6733a5a611c8fee28c5b504a56" + }, + { + "blockNum": 826, + "blockId": "0000033a4313df6292673d5aced666da2a59aaafe2c40450bf3c86a3b857562f" + }, + { + "blockNum": 827, + "blockId": "0000033b3e07717926083b9ac3f830c7ec5f2d79274c16ad74ecb287a1fe6369" + }, + { + "blockNum": 828, + "blockId": "0000033c7b5eb1f820b0d666b289e0c64e46a88973de0247878566b73ba739b5" + }, + { + "blockNum": 829, + "blockId": "0000033dd4f1461a0471d6bbf73fda82ad2af3ce33925a60b8ad10f9c7320196" + }, + { + "blockNum": 830, + "blockId": "0000033eaa1c213619d7d5f3dff2a2496ae48e26219188a50012e802f0e33211" + }, + { + "blockNum": 831, + "blockId": "0000033ffe5788c20e44653bdef5bef53262f9456b9652f7473f23569f2ae761" + }, + { + "blockNum": 832, + "blockId": "00000340ef3ce0ac53f74f8f37ff8ef8dc1eb5035ff4df9e678080c7fade1fae" + }, + { + "blockNum": 833, + "blockId": "0000034151698297b825f77c18027f2f71571be8f78b70bce0074db00f95fe15" + }, + { + "blockNum": 834, + "blockId": "000003423bee360c0f2644a1d16bc1edb9b8b2f0f49c3334183a837104a50a6e" + }, + { + "blockNum": 835, + "blockId": "00000343f6288dad40a4749e56bed8b4ff725e1a129b4ceb1ec83987403915ec" + }, + { + "blockNum": 836, + "blockId": "00000344da8982faee852b2d57dd0d07c33b87a44f48dabc21f1cc6f858316d6" + }, + { + "blockNum": 837, + "blockId": "000003456136a74bfa1d314a7de7439e03e196e796db51ecf07eff64291d8994" + }, + { + "blockNum": 838, + "blockId": "0000034615ef5271907eba453f570932ce995d982876ee97d6bf6d62b6f083e4" + }, + { + "blockNum": 839, + "blockId": "000003470cf73b08b20909819925988bd5ea410c4fc02328a37ced2501e3acf8" + }, + { + "blockNum": 840, + "blockId": "0000034897bc6ebff6f3a75f5d1f256a0e0955272807c8b9e9ee556f5dc39566" + }, + { + "blockNum": 841, + "blockId": "00000349fec4e312fa3b90277192f921b3090bd7da9b23e4c623630f5c8b6572" + }, + { + "blockNum": 842, + "blockId": "0000034a3392e545ff261c4d46ee6c7d9837fa4fcd343561d342e14b10938c2a" + }, + { + "blockNum": 843, + "blockId": "0000034bcbc2be04a6c7e2104a71a767cc3a4e8113ad2c25b2de417ed8d5fe55" + }, + { + "blockNum": 844, + "blockId": "0000034c71b207c1211472ab0e0c033515895841a10b73453b9b7eb02a34a5cc" + }, + { + "blockNum": 845, + "blockId": "0000034dca715c198f7e0a763e5ef54d73403f14b64f7c99d1c0d83993e940a7" + }, + { + "blockNum": 846, + "blockId": "0000034eab61a840185d4a467346e9da896c8bbfe6884a28cb34bf803f75c8f8" + }, + { + "blockNum": 847, + "blockId": "0000034f2e21086be32181be7219678475d042e4151b6e68f08ce3f2961e144d" + }, + { + "blockNum": 848, + "blockId": "0000035072ba2939a333dda06f46710a99bd0583961513b1c0080110e560fdb4" + }, + { + "blockNum": 849, + "blockId": "000003514dfb34e2afdb71c70528b2581630e334579010b71e3df0f9ffabe6f5" + }, + { + "blockNum": 850, + "blockId": "000003520f0b02c8fbd0bf15f442524747e4569f8d9b59e4183dd5b2e74db88b" + }, + { + "blockNum": 851, + "blockId": "00000353ba3f3140992752385d60211869b4a5aa0bb2c08bf31e6fe444a83c2d" + }, + { + "blockNum": 852, + "blockId": "0000035412d356ad575eae2c400c6f5957a9af5d4ecec02739c11ced9bbd1297" + }, + { + "blockNum": 853, + "blockId": "00000355b45b0dc132cfd3834c0ed1ab61e9e1cf1a946854f4a77267d8be214b" + }, + { + "blockNum": 854, + "blockId": "000003568cd1664c2de7e14874ebc8202f8981ec8019d4ffc2e76cf829d856ec" + }, + { + "blockNum": 855, + "blockId": "000003577740cbb7dbf44f00ba1888a355bf122ca6916917668f09d021cd5ff4" + }, + { + "blockNum": 856, + "blockId": "00000358dbcb8a4843fa8f1c2f36c79bed267d277b484f4979cb56ef8e6d0f19" + }, + { + "blockNum": 857, + "blockId": "00000359dc5c38433a94f41b4d9bca4500efcbf310e509f67d6de2eb6a1d7dca" + }, + { + "blockNum": 858, + "blockId": "0000035a70430af23fa8745333a976e151deab17e3edc4562467c18ea9034afa" + }, + { + "blockNum": 859, + "blockId": "0000035b2071851e5814d0881de745a6a31f77bdd0afaa78878a5ec95d2d535e" + }, + { + "blockNum": 860, + "blockId": "0000035cc03135add8cc38b807abc5c067dc61e70562c303e4b336829797a908" + }, + { + "blockNum": 861, + "blockId": "0000035d5f6487260d115105f4bc2931729478eedfc91d8f81e4ca88782dcf8e" + }, + { + "blockNum": 862, + "blockId": "0000035e425ca929b64f7a411b3a8a89b14a796ad6133d71a62beda9da537aec" + }, + { + "blockNum": 863, + "blockId": "0000035fd8401d337b7fbd877c7e1aaf52892da507fbd6ca0d66c93ed7f1a7d6" + }, + { + "blockNum": 864, + "blockId": "0000036095be6209f5140bd2ce83a3d74fb1cd5d8cc73e5ed95fde302b1349a5" + }, + { + "blockNum": 865, + "blockId": "00000361969d56f75f58d359fba4ee8996f56e9855aa8daeff5b425e7905e81f" + }, + { + "blockNum": 866, + "blockId": "0000036264f62d2dd13c1e201a8a08c0d32f5a6230f6d8d22d80ab2fcf749057" + }, + { + "blockNum": 867, + "blockId": "000003634d466122f15bb0f3b8c89af7cf9e86f4d92d7d81cb3e3389c34745e6" + }, + { + "blockNum": 868, + "blockId": "00000364baac3721ef885628372eabbdec378414acf8f89ea205c51164c1796f" + }, + { + "blockNum": 869, + "blockId": "00000365f49c4cdbe331cf4262f5d935e021271a641a6494419977cb55461dbe" + }, + { + "blockNum": 870, + "blockId": "00000366da1bb8a84ba579162be3722e4b2958fa2806571c342cfa295bc0f96e" + }, + { + "blockNum": 871, + "blockId": "00000367a39322b7c16bfb63c32bf8b44a837fda11595a544e4866412df9c7f9" + }, + { + "blockNum": 872, + "blockId": "00000368f7ee8574718d9884ea92796ef4c740efa9d2b72b5af329ec54baeaa6" + }, + { + "blockNum": 873, + "blockId": "0000036960c7677b129f8a8c5202aea0f39a08c42874e3f1a1cf3e31294c29ed" + }, + { + "blockNum": 874, + "blockId": "0000036aedb1ebb7d1f65a317d399af91fb74a6dbb7b4e2a43a6bd9e45a07876" + }, + { + "blockNum": 875, + "blockId": "0000036bfac9d017be0f05efca1f2f55d9f4ffa72d76273f7b98b3c6d8f3469a" + }, + { + "blockNum": 876, + "blockId": "0000036c8934c120212ea4734f1771dfb9733351b7669f205c0499414024ebe2" + }, + { + "blockNum": 877, + "blockId": "0000036d2caa742e62ce221928439aef4ff33b805e4e07503116b26daf7be155" + }, + { + "blockNum": 878, + "blockId": "0000036e111ca30095e68bb8a0fe554779694fe17c9f99a678c77c391b6ea50e" + }, + { + "blockNum": 879, + "blockId": "0000036f95f0b75ec271bc9346c1317aa20a9f46b96d5332518f7402d9a80de7" + }, + { + "blockNum": 880, + "blockId": "00000370a078cd68ae2110dcd7bb802912b05cc2b3d18f0fc4457fb5f4846a3f" + }, + { + "blockNum": 881, + "blockId": "00000371bdc60348482684fdd4948bd7e04eabc78f0f054ea0022c1ab966bd56" + }, + { + "blockNum": 882, + "blockId": "00000372f288e0e7ddfd9c32e6c6a8ee8e59698239ad92ca1c29e99049d2472a" + }, + { + "blockNum": 883, + "blockId": "00000373cfb8ce8a53127bc50880c579327504af1013743da3a1016d330c44d6" + }, + { + "blockNum": 884, + "blockId": "00000374d76490983f06d34765de1800749c73b1927e5f37fea72ffad692a85e" + }, + { + "blockNum": 885, + "blockId": "0000037597274578eb825b6da261b1f6a82da3463e04866c0e02c87256990cb3" + }, + { + "blockNum": 886, + "blockId": "0000037615f131c05666fb2718c93955de200a7ca95528e297ca46bbb1519d89" + }, + { + "blockNum": 887, + "blockId": "00000377a2352409cdfec8b642d68014999fd6a2ea24ae778ec116147449debb" + }, + { + "blockNum": 888, + "blockId": "00000378e4ddb3a0aa347f8113ce3dc428f57e85e0597b2b1e662b7787c1f139" + }, + { + "blockNum": 889, + "blockId": "00000379b0983fb3dcfa9d1a63d538f0d34fe2a7aa1491a8b7d9d167a6a39a4c" + }, + { + "blockNum": 890, + "blockId": "0000037a717bf28ca80e978ac96f3898bcd9ce0a2374639a7db62bb0f05189c8" + }, + { + "blockNum": 891, + "blockId": "0000037ba6c8158548c7f61afc1e1e6c26c1383aa4285702613433df982b6678" + }, + { + "blockNum": 892, + "blockId": "0000037cdbb31e6e956c2cb3bff2459ce6b3add06f00e46124da32afc2fe1d17" + }, + { + "blockNum": 893, + "blockId": "0000037da946255d464bb13b56d97f91c9dbe04cabdb9f82ae47a82a0cfce3cc" + }, + { + "blockNum": 894, + "blockId": "0000037e9c3d193a970b7a02f315b77052bbe0f0fe35eeb4ef47dd5f6ddcbff0" + }, + { + "blockNum": 895, + "blockId": "0000037f28d5956a530f78682a43657a123e8b1bf06ef4e8aaac99f0f172d5f9" + }, + { + "blockNum": 896, + "blockId": "00000380fc834ac7cb52247095fedb38c195915b2763027e6cfa7a8110797928" + }, + { + "blockNum": 897, + "blockId": "00000381680e01750e902334974cf501b748709d9c7df0ce916cf85081a717f6" + }, + { + "blockNum": 898, + "blockId": "000003828ff19921cca872a83ac35f4aa9b588f7e4477dc3b69a922aa5caa799" + }, + { + "blockNum": 899, + "blockId": "000003830adf354254bc4f1c96c50d94afdeb0f910af6df5a5bcccf261b9e68f" + }, + { + "blockNum": 900, + "blockId": "0000038476848ac9311d3f24b15258f0b007bebf1bbf808ac6c6eaac31db25f6" + }, + { + "blockNum": 901, + "blockId": "00000385d376ea5fd8356957876634f56995cde72e5caa535d7aeebc35c3a856" + }, + { + "blockNum": 902, + "blockId": "000003860e8f833b622112cd9e88129cc6e7429d2a652455e2375b0cd3fe798b" + }, + { + "blockNum": 903, + "blockId": "0000038774b2ae0b7b1a2b23454628e48b6f26023f9580744f98185031ad4247" + }, + { + "blockNum": 904, + "blockId": "00000388e13bd0c1ef9eec4a4923aedbfac93968f4705e1892c48feaf1eeb9dc" + }, + { + "blockNum": 905, + "blockId": "00000389fe00181da43e0d9ca3d6174404614e93518a597efd68a9f20c4773ef" + }, + { + "blockNum": 906, + "blockId": "0000038adf66fac09b598422fa513e8f9e2ee3ea5cb54b1f22da53ee219920e7" + }, + { + "blockNum": 907, + "blockId": "0000038b224d42ca380609b09fa83e76b07851e49fb04201a414a0ee1d28e1ab" + }, + { + "blockNum": 908, + "blockId": "0000038c66269b22b103e3191f9fc35f30a8eee1a9797759add34b06bd91ddf5" + }, + { + "blockNum": 909, + "blockId": "0000038d3abf8b802735406d0fc6a78ef4bb5d51cebed82d39737692aae51502" + }, + { + "blockNum": 910, + "blockId": "0000038e4ad8dabf79dd588481f14faa95230df09b174cbaa5f38acf1acf3884" + }, + { + "blockNum": 911, + "blockId": "0000038f67a389a2b9521b8b4e0ff47a7a971353387b94334279e386a3796dc6" + }, + { + "blockNum": 912, + "blockId": "0000039038d407ff3e78babf1c805fbaf8fd1d0736279ae55fcd86ba63532a21" + }, + { + "blockNum": 913, + "blockId": "00000391e9e5512e971906c87dd050ac0983e7bc16b1db58b5e9d8e8f656f6b5" + }, + { + "blockNum": 914, + "blockId": "000003922ae39082ced563b5d938a08bd409cd192663b900c5d293cea380fd1c" + }, + { + "blockNum": 915, + "blockId": "000003931f84acc0b3d46778d1eb36b63c566742e373c6eb5a839469094efd6a" + }, + { + "blockNum": 916, + "blockId": "00000394f57150fe9da0cbdf2e52100abc51a03ac8afa09ca71daeba52679ed8" + }, + { + "blockNum": 917, + "blockId": "00000395a5cb1aa73a2d67d29ec1d5650caf018b2fae7865c41fe5c027db7eff" + }, + { + "blockNum": 918, + "blockId": "000003964db45332901f04e0cfcf06ee6958ed9b50002b2e757c448031a91c03" + }, + { + "blockNum": 919, + "blockId": "000003978b12a98d512a41a177ba23b524f9e4cf4f436b1f183714c99ae03882" + }, + { + "blockNum": 920, + "blockId": "00000398eb3761548856cc69ad2ae71bfda43379e0cce5e6dd5cacc10b7053b5" + }, + { + "blockNum": 921, + "blockId": "00000399105277a93da1437d422a60c14af4895648a1427ec14af1db07592cb9" + }, + { + "blockNum": 922, + "blockId": "0000039a883d58757594c5b1c6e35df8e2096ed774b50dfe9a164e583f24b060" + }, + { + "blockNum": 923, + "blockId": "0000039bb39070876b3a983ad3b04151b30e2c4daa4c0fc6d8966eae4def4a03" + }, + { + "blockNum": 924, + "blockId": "0000039cc8602901dc1bb689d3911fa6ace1235e87158beceb3d73810d562104" + }, + { + "blockNum": 925, + "blockId": "0000039d72f29b40c7804c0822c9441a8c7cc0832eba39d75c1dcad65a303b3c" + }, + { + "blockNum": 926, + "blockId": "0000039e453cdc193135c3eda470017e95715fc40ed5baf2b7c966fcc9484b4f" + }, + { + "blockNum": 927, + "blockId": "0000039fc586cf2441b0b0b16dcfb24ccbb8b7277bbfcdb6812ec7388c8792c2" + }, + { + "blockNum": 928, + "blockId": "000003a01b8d62d123578c5da663556cb74e05d28e9fcbef51f78a87f54db71a" + }, + { + "blockNum": 929, + "blockId": "000003a1982904304e18bcd74cc6d61ed27051ef196f050376366d34010cc883" + }, + { + "blockNum": 930, + "blockId": "000003a227c13beec21f3c95fd645ff32b8ffbe64f85f9e382c84d651d42fdc6" + }, + { + "blockNum": 931, + "blockId": "000003a3be8355666e844f1f835a776017d897335f834eb25394eb65429ba779" + }, + { + "blockNum": 932, + "blockId": "000003a43c435f5a5840a67f77fb8a8b36f3cd42165c0520119f47a83a34ed1f" + }, + { + "blockNum": 933, + "blockId": "000003a53fbb9a1c68a0f35fbe437a770009bac02fc5600790a10a21b5164abb" + }, + { + "blockNum": 934, + "blockId": "000003a6cf393e31fae02aff411f63f6302eeacbf9e98088f499eeda29ff2e70" + }, + { + "blockNum": 935, + "blockId": "000003a732afdc515352561c426a830eec70d4abf48541f421c22c209797c41f" + }, + { + "blockNum": 936, + "blockId": "000003a8a7916ebce1bec9f0e57b036a9b1270c60bbd090c0d576a110927ba63" + }, + { + "blockNum": 937, + "blockId": "000003a99e668a3bca0fc3bdb4436a083852b190247cad375a9144f6d49e2885" + }, + { + "blockNum": 938, + "blockId": "000003aa721523da273e5ad192a05fdf6f8ef5cc780821c6e7ff6edc0a2f1451" + }, + { + "blockNum": 939, + "blockId": "000003abca70fbb980beee41190c4733bb9b4a53b7d95634b07a73877507eeb9" + }, + { + "blockNum": 940, + "blockId": "000003ac9c3c9b0bc59da0f8130bd3aea228a4fe8ac8c81b14d107d44552b33f" + }, + { + "blockNum": 941, + "blockId": "000003ad24f63df78cfc116a5110a43bb2b1ddad4773b0f330df0192983c1f0b" + }, + { + "blockNum": 942, + "blockId": "000003aed1564d9bd9f96505fc5d50948d20673e036423176d369b57f5c6a84a" + }, + { + "blockNum": 943, + "blockId": "000003afb1d4bb1caf525aaf361bbb34319e846969d2eca3ae4d0937909fece3" + }, + { + "blockNum": 944, + "blockId": "000003b05b4b1bfe74b02799679458a3863fe8c0d64dab0e5664467f8f02890e" + }, + { + "blockNum": 945, + "blockId": "000003b17cbb2a12a54342b49a357e617b90eecac1ea8808002792216f4bf252" + }, + { + "blockNum": 946, + "blockId": "000003b28ad3aa3210fc5d4a04b35820f16a83de38d1578f0cd16f28cf0cacb7" + }, + { + "blockNum": 947, + "blockId": "000003b36ba8cee79d3e28e213f34c39f871ece91542ed93f41973f9bc415087" + }, + { + "blockNum": 948, + "blockId": "000003b4b2116ad552c78bc7b3a80e23701796cda3b285785ee2a7feb809d28f" + }, + { + "blockNum": 949, + "blockId": "000003b5d09a3c1eae461ba4c8f4be7ed57b91ca8a2deaa13a43825463dcc2a8" + }, + { + "blockNum": 950, + "blockId": "000003b6909a77fef35b061d8c8b897a4110175a11f21b0375b35cb16f0a046f" + }, + { + "blockNum": 951, + "blockId": "000003b78af408ffb92e05df2eefd0dfe937c801e7deba5c00aec0aff27de469" + }, + { + "blockNum": 952, + "blockId": "000003b8ad6a94a3ab1154f910f80c96c4d89251f258bf6d1fb9947d70d78da4" + }, + { + "blockNum": 953, + "blockId": "000003b9608e8d9dbddfec7d856b42aba91b63d2d2c34f020de6d6405f4950bd" + }, + { + "blockNum": 954, + "blockId": "000003ba88c06bdeb53c2286d6679991e25b42f6d9fccb8d2f8f9baa6f05add7" + }, + { + "blockNum": 955, + "blockId": "000003bb9823a7af4206fa6fbbcf60f62aba31ead5dceeb72a50335a76185d32" + }, + { + "blockNum": 956, + "blockId": "000003bc8457d01d2333fe83f48b04c55b6a10f576343cd129161529e33aa88a" + }, + { + "blockNum": 957, + "blockId": "000003bd5fe1d16fe84fe8c646339c03bf5d52a866bd888c80ce168a422ac90a" + }, + { + "blockNum": 958, + "blockId": "000003be2a4a30820951cfad7b68705a94fced662248ae1a4b554f1c53aadcb5" + }, + { + "blockNum": 959, + "blockId": "000003bfbfcc3db1d9b0522c1291c7dd329a984fe75f1a86af3bc6008a152348" + }, + { + "blockNum": 960, + "blockId": "000003c0cc6a32dfc129b5eb6ec9ee74bfcff7a149d69e8aaf77d85bbedd15d8" + }, + { + "blockNum": 961, + "blockId": "000003c19195de7a3eff230ad5c29a257aac7680593c085bac0dbed8edc7f96b" + }, + { + "blockNum": 962, + "blockId": "000003c2cf75a9de28736d5a7c94619bd87ed3e39997b2afeb93dedb38fe8100" + }, + { + "blockNum": 963, + "blockId": "000003c390a6ecdee0bd315b7fd51f9eefb53b088b3b9c555bce7968dd4f752b" + }, + { + "blockNum": 964, + "blockId": "000003c45a84296b477417a5b6e6c41467682306c5c6269776a133dd0ec43780" + }, + { + "blockNum": 965, + "blockId": "000003c57e0d8b737ad7c4c5196fc3a85a49f198d3d4e195d9e5c14d35c25a15" + }, + { + "blockNum": 966, + "blockId": "000003c6123965ad9f65f0470dd6c212a07f49921e889e16a380f811a129e3c8" + }, + { + "blockNum": 967, + "blockId": "000003c72cdc47b9fcb522cff1eec93d00530fc4c57b5bdacba94eb48ddcfa62" + }, + { + "blockNum": 968, + "blockId": "000003c813414de2c80da72eb5b61899c829df820299141c138795c68429ed55" + }, + { + "blockNum": 969, + "blockId": "000003c920f015aaac6428bcbb956b7652447a27de5e7063b07e142d2f8eea5f" + }, + { + "blockNum": 970, + "blockId": "000003ca313cdd13d8b0931080ef0f47ae8257372e00becf4cab811d9e34c4b2" + }, + { + "blockNum": 971, + "blockId": "000003cb58602b3acab4a55433653e06f0d23b95b62e5900ae4424b239bdb3aa" + }, + { + "blockNum": 972, + "blockId": "000003ccf60a7aaf6ae17bd5525f4898e566c141fbd2eb4cdfa6bfc080f4dcfe" + }, + { + "blockNum": 973, + "blockId": "000003cd28daf275eed643d90eccfaf4f9f03d239cef1102f426beb1a414119d" + }, + { + "blockNum": 974, + "blockId": "000003ce4344f51eade4b766229b8e30b2c24892189d422eee55467c4d67996a" + }, + { + "blockNum": 975, + "blockId": "000003cf28b23deb1a140bf534f753c3e3bd34042418d51a49ac8c7942344e97" + }, + { + "blockNum": 976, + "blockId": "000003d0795012f9be01a3082a6bcb956ab0b4fe54cb97dbca7a953e777d4b9f" + }, + { + "blockNum": 977, + "blockId": "000003d185b524933009b54a6a6a5d3eb97a3eba0b9cb4f8e725bcd226604820" + }, + { + "blockNum": 978, + "blockId": "000003d25b60903937294dd7346cbf3e9201a884df957e0e91439c0a5d7b22d9" + }, + { + "blockNum": 979, + "blockId": "000003d393810fe24daa1a7e610a80e8b739faa9851cce321234469a29812f1a" + }, + { + "blockNum": 980, + "blockId": "000003d41d13cb3b4dc9311a8f19c1dd59aee0cced67c6338beb61b1ddd3e7f1" + }, + { + "blockNum": 981, + "blockId": "000003d5b2492151ec795d43a4676d55b0410802e711c232481e3b1529ccc906" + }, + { + "blockNum": 982, + "blockId": "000003d65a2d2e5c072b045866d150b7f8e5616ae1f059207c1887d8d8f7f308" + }, + { + "blockNum": 983, + "blockId": "000003d7853f71854433b047abea09594f404e40d552b8c9c296f238d8c6b2c0" + }, + { + "blockNum": 984, + "blockId": "000003d8bc72d0c59f4f0ee62c6ce72ab69bc0e7fc3ba0b18f4a09e77dc45459" + }, + { + "blockNum": 985, + "blockId": "000003d957060088c61a559032ab3a512ae7b9fbebb664870e4a005452cfbaf6" + }, + { + "blockNum": 986, + "blockId": "000003da90442eacaa2d7ce7e7985be3e68b4b04ddb0ca15a5c8084f85330be9" + }, + { + "blockNum": 987, + "blockId": "000003db290873ba045b678fd2ed3d66e7f457c72e7ef52278dba9d5ebb4dec1" + }, + { + "blockNum": 988, + "blockId": "000003dcca2ad4907de06babbca776d1f3a44ff1509e48b4d19dff8197b2ed5d" + }, + { + "blockNum": 989, + "blockId": "000003dd53f3552306c496dc152419fa132be855da88afe31e2f03b690bc97d0" + }, + { + "blockNum": 990, + "blockId": "000003de90a942653322027e3cb9a13f8c5ac81fb6665da4e033d5b5daebc642" + }, + { + "blockNum": 991, + "blockId": "000003dfd1d97e9dc372145b5bbed48e7d6eccacac34d50019fa99835f287414" + }, + { + "blockNum": 992, + "blockId": "000003e0a8ea9ad1d8a57d2244f528faffdd15a7245d52b52ce91d80ffb449f0" + }, + { + "blockNum": 993, + "blockId": "000003e127a57af12f0f48aa5fbe2f9fc8a61bf31ee7dfdcddc150dcf525c8a4" + }, + { + "blockNum": 994, + "blockId": "000003e29fab12f5f8337e2a59d4a113b2e538a80690762e10da299186e104b9" + }, + { + "blockNum": 995, + "blockId": "000003e3bc8be264c5de4d11132ff10ad7b910082c032e56bf3c547e5a090217" + }, + { + "blockNum": 996, + "blockId": "000003e4a9230c6c83920279b7c3d54959a9b7ccd72fdd650787d93955f83826" + }, + { + "blockNum": 997, + "blockId": "000003e539bd679bae124906ec7e786bbf744dae4fc3039cc5fca1dcb98748f0" + }, + { + "blockNum": 998, + "blockId": "000003e6297d500643af0e981ec28663f07ca67f0d23cb374a1dfe3825051599" + }, + { + "blockNum": 999, + "blockId": "000003e7548b891b2b5b501b8c8353c4c930e487a5e5fbdae89e790ff423df58" + }, + { + "blockNum": 1000, + "blockId": "000003e8ad73989b5b4d1dd70a1fade322a770f7736688a8ec4317ad9f3ccef9" + }, + { + "blockNum": 1001, + "blockId": "000003e94dd8ffa8319d0b100e55395b9554918e373e3b0d6ddc96f8661de049" + }, + { + "blockNum": 1002, + "blockId": "000003eaa391761db6897194054b19a79fbf890a8c11504312bc471bd8de5b75" + }, + { + "blockNum": 1003, + "blockId": "000003eb80f8021eaa0ac0d129053f3c2e84920d71364c61d3f1da2b94f0db54" + }, + { + "blockNum": 1004, + "blockId": "000003ec44b888725b8983db01ca738869be01fefa81bafa1523c0feb2aab07a" + }, + { + "blockNum": 1005, + "blockId": "000003ed3de5ab6e8c78384643af5ce2fe6d6bfc739230bf1ff165b844e81f96" + }, + { + "blockNum": 1006, + "blockId": "000003ee9e37384a698095a9338a6da673ab1c94c6a2ef8703081ae83d164b17" + }, + { + "blockNum": 1007, + "blockId": "000003ef4bc34b5845e343cd468d89b990446f62f4d8de7f0dbdf8b0e09b3f1e" + }, + { + "blockNum": 1008, + "blockId": "000003f0c972fc8e41fdfafd89e842fa9bb59314a291d12543905c69e54a3310" + }, + { + "blockNum": 1009, + "blockId": "000003f13ad199f3491efc177d41de7ce1e641c62576b7004f07d8e7ec134888" + }, + { + "blockNum": 1010, + "blockId": "000003f2f302a5ebb210642927ad320189ada9dfcfa85a32e3437ef285b1a4da" + }, + { + "blockNum": 1011, + "blockId": "000003f330d02e8775305ec9015c8b3d818d5d915cd9e53aa6be9ecc9672b1de" + }, + { + "blockNum": 1012, + "blockId": "000003f4579553fedd5e034200b4442e5335678ef5f8bb1637d6641ea835d8ca" + }, + { + "blockNum": 1013, + "blockId": "000003f555142187beb20653c6aaa4c79e84b92648768c341e85e5381af66446" + }, + { + "blockNum": 1014, + "blockId": "000003f61a936dc044fccdf2576d15e41ff4c196e84383d09eb74195fdf101f0" + }, + { + "blockNum": 1015, + "blockId": "000003f78e74d0ba2aebf4b1e752e0e8f4971bc09e05f6c4be39130ef13415df" + }, + { + "blockNum": 1016, + "blockId": "000003f8fce52220d8da6c94ad0a636a680e702fdfaf3dc7e69d698d841fdf12" + }, + { + "blockNum": 1017, + "blockId": "000003f9ba9c0fe473097ed41e1b7fe797122ade9c69c173044bde716886021a" + }, + { + "blockNum": 1018, + "blockId": "000003fa13d7c462a7cf1d40678b2ed50ef072bf2c9de4f4df718c9a949e2964" + }, + { + "blockNum": 1019, + "blockId": "000003fb65d2290004ceb6fe3c22c880eecb5c240534f28c12fe543c00235781" + }, + { + "blockNum": 1020, + "blockId": "000003fcf364c22d41d83b28fa3c93e5224ac41e8e0e99d9b4f015aa4eeab21a" + }, + { + "blockNum": 1021, + "blockId": "000003fdae2d8cc011eb6a620ec39e236722ac7e28c5a469e464e832dc21a0e2" + }, + { + "blockNum": 1022, + "blockId": "000003fe4b4816c331351bc6e32a02510437e3745bb5becfe91ac6fd8121ded1" + }, + { + "blockNum": 1023, + "blockId": "000003ff2e0bb263db5d7163d65ea3d2bccfba4ece1a6a25147de59ed89c83ae" + }, + { + "blockNum": 1024, + "blockId": "00000400e696b4eca1e0b4ab377f8862ac723c521700ab0b02700f1cca8951e3" + }, + { + "blockNum": 1025, + "blockId": "0000040177c1a3450fffe7e6a3862274c8ec75f0cc5ac786ec8d235f9e985704" + }, + { + "blockNum": 1026, + "blockId": "0000040253623da8d7a0fc287b29a77221842c659f0c5d1191a541ef66b04358" + }, + { + "blockNum": 1027, + "blockId": "00000403e2d77a5805e286494c56e60698f12851abb92bcae51444cb99677019" + }, + { + "blockNum": 1028, + "blockId": "00000404704667b74d154917f44cfe752aaee18a78e1bcb218942b50a284b5e2" + }, + { + "blockNum": 1029, + "blockId": "00000405267ebb80387cac3c3e5e9c4a329b41af40c4b99a3469607d33d37cc8" + }, + { + "blockNum": 1030, + "blockId": "00000406ebc7bdba84bde4572af70a04b9c045798e75ba5e558a4cf66cc89660" + }, + { + "blockNum": 1031, + "blockId": "000004071d5ea5a0f3df20b5e9a2d67af0dd5ca3d4194dd897f3843216d5157a" + }, + { + "blockNum": 1032, + "blockId": "000004085aa9bfa2269dc9f9830b1730fa5dfeeb5d486ecd64c3fa1ddd8440a6" + }, + { + "blockNum": 1033, + "blockId": "000004092cd55da62bdb8a4647a7dffac22ebd460cdc1749aae21e5d687051a8" + }, + { + "blockNum": 1034, + "blockId": "0000040ab85f2edc7ff164c26cd984e7ab67617f8c61a3d106b4318e471a7c9b" + }, + { + "blockNum": 1035, + "blockId": "0000040ba47724fb2d5bf9599fd340d04dbe634b7ae87e0e4c0f36f07445779c" + }, + { + "blockNum": 1036, + "blockId": "0000040c9f17d1db21981e81ce5e7ce4a1614d3119e9d7321935d638dbda9083" + }, + { + "blockNum": 1037, + "blockId": "0000040dfed969f8ca2f6307de5aebefc1486e82329bb6e6a2301dfe6770a6de" + }, + { + "blockNum": 1038, + "blockId": "0000040e94ae790491bca4ea325fc80d3032d15010c81246fe4279ad2151c000" + }, + { + "blockNum": 1039, + "blockId": "0000040f0f6a5acb5045a84c9747aaaa53e9690ab314d4e2115ff85689dd4efb" + }, + { + "blockNum": 1040, + "blockId": "000004107e51273fbd3412e6f588bd26bd279292dce193f8e4dbb5d5efb2418c" + }, + { + "blockNum": 1041, + "blockId": "000004111ca7509255d97266fbd166dd15fe5a4c8565523a4bbc0e645232ea69" + }, + { + "blockNum": 1042, + "blockId": "0000041270ea18d4cd18bb6230b903248ed8c5c9c53c1a72e6493e62d523085f" + }, + { + "blockNum": 1043, + "blockId": "000004136d875fd8a8b90660e1fe4d5105892c0fcaf4571c77a808c06bff63bd" + }, + { + "blockNum": 1044, + "blockId": "00000414825c09587dc29000f9bfbb0e65e07c2f5b7ffadead8a37a1a67bf354" + }, + { + "blockNum": 1045, + "blockId": "00000415d03f08b25d964307538d2562534dd17c83c7f2df8cf4da43733d9ae9" + }, + { + "blockNum": 1046, + "blockId": "000004160e0d5a58821279e25b2f62137873b36d2bb44dc6a05e5fe3e8bb0589" + }, + { + "blockNum": 1047, + "blockId": "00000417dbf81f940e884408ef26dcbee1a907f71444ea6d855527eff8194e34" + }, + { + "blockNum": 1048, + "blockId": "00000418b7d129be939d7cf66ac85428c89fdfac54dfd49f44fd00017e159344" + }, + { + "blockNum": 1049, + "blockId": "00000419da77ebcf98e1c76c864382e47b77857ba4457f6d67cdaba069e3ed54" + }, + { + "blockNum": 1050, + "blockId": "0000041a5f3ad7fa47cc63eb965c2e2bec3ce490d71e01de7ec814ebca69e158" + }, + { + "blockNum": 1051, + "blockId": "0000041b5bfde58080f8daeaf785f1c506a9f431ac92da0c72e6fe48d6e0f34d" + }, + { + "blockNum": 1052, + "blockId": "0000041cf7571c1a405d7ee056e34637e18d80ac83a2aac278966433053a81b3" + }, + { + "blockNum": 1053, + "blockId": "0000041d834fe001149f82642411525197231b1cb9f76c990d0530fc789c268e" + }, + { + "blockNum": 1054, + "blockId": "0000041e7d8a0a516bcfa359269cd31f5decb4fd9641cb6a0c6bf6b4ca317c36" + }, + { + "blockNum": 1055, + "blockId": "0000041feee3facf521fa81dd8095686e2f93cc6ae083a3dbeda1a590a0c3b0d" + }, + { + "blockNum": 1056, + "blockId": "000004208440f6920cb8df2388a36b7562e06d20323e75a587f8c7c59c5f7376" + }, + { + "blockNum": 1057, + "blockId": "000004218db42c355ba29e9bac54ce5e4317ac0fbbe3b24496b2368f73622373" + }, + { + "blockNum": 1058, + "blockId": "00000422ef6d37d277d83d07ebe4a2f7a3915207dda99c11ebcf7fd7bf180f0e" + }, + { + "blockNum": 1059, + "blockId": "00000423d405eb6c4285bd99024de03bf6a8b65d62bbf446bd66da7e2d003af8" + }, + { + "blockNum": 1060, + "blockId": "000004246951658bcd348ec44db5488ed3c7d0f26389f0491c5529fac1819146" + }, + { + "blockNum": 1061, + "blockId": "00000425791bb61c88724489b11b6ce40f8019df5ade33b55e78496774e917b7" + }, + { + "blockNum": 1062, + "blockId": "00000426efc8c5fa79b5585fde673e8271d97f702d3c1608dd39f5a3b7ffffe4" + }, + { + "blockNum": 1063, + "blockId": "000004270df77a1d1819a477a03556d1f6cdfedc560b579ba028031af205a156" + }, + { + "blockNum": 1064, + "blockId": "000004285f4060a8d17217dec1b765bd2f0242d75ca399add96a05f427304574" + }, + { + "blockNum": 1065, + "blockId": "0000042978b48057dc45ccb189ff4de3bad31b2d54efaeb3cd0383faa37943d9" + }, + { + "blockNum": 1066, + "blockId": "0000042abb59031953ff4282886252a4ed718c39e3e196b63302d1244d90739e" + }, + { + "blockNum": 1067, + "blockId": "0000042b8501eefa6fafe44d63e3bd1393c85651d73a4a3e7609596fb64e0545" + }, + { + "blockNum": 1068, + "blockId": "0000042c33d5c4ca2a8efbaa48011b276273147cbe596a92bd6be3193eda238f" + }, + { + "blockNum": 1069, + "blockId": "0000042d73b5c4c4be1c1835d447f725862ee7f61038efbeb45f76f1c194cd58" + }, + { + "blockNum": 1070, + "blockId": "0000042e9801f75890ff366e64ef0f4b6f25af06ee9e97b502d0eee66610f540" + }, + { + "blockNum": 1071, + "blockId": "0000042f8a95d9ae9a3d77b5027cb4cd344c08ba410829c41f7b97fbf74bb2f4" + }, + { + "blockNum": 1072, + "blockId": "00000430ca3680fb8d391392ca14c9352b68f54845ee17657e9872158ddf7914" + }, + { + "blockNum": 1073, + "blockId": "00000431e65edadfbe1f5c04d6d49219243ef8b7c967c3ae40a404ed52b4bfec" + }, + { + "blockNum": 1074, + "blockId": "000004322bdff480df749803f2414f87adc9b67335612b019398beb7cb710fcf" + }, + { + "blockNum": 1075, + "blockId": "000004338bcdc2fc46b0ea2d1c57ae48d26468486d44a2c49d071f2a3248671f" + }, + { + "blockNum": 1076, + "blockId": "00000434708aad7d6be4b6909e5f76dfcfea6d80a0972d6bfc4187fe14ece685" + }, + { + "blockNum": 1077, + "blockId": "00000435f76d8285c4f78387385a6cf53bf0fb3611441fa4df0fbc6d31104f09" + }, + { + "blockNum": 1078, + "blockId": "00000436d26a17a8610b71d43d5c1a6fd2787f64442e4ec8a4fab505e59b4e3c" + }, + { + "blockNum": 1079, + "blockId": "00000437afc84c604f23722b6fa52daee6ddc2124bdbb6231c5c827519c5bec2" + }, + { + "blockNum": 1080, + "blockId": "00000438e6a3d03f7af51a67f812ea3fb0340eaf80c437d326bbc1765d5e767c" + }, + { + "blockNum": 1081, + "blockId": "000004393eae4d889f2748f581c614b970fa87b7a83e189df8907149dace9c6e" + }, + { + "blockNum": 1082, + "blockId": "0000043a62c8d75a52561b8aead6ee045661fc179bc52ac61e381fdf5c2b1cad" + }, + { + "blockNum": 1083, + "blockId": "0000043b9bbd419162b19534264f5a7e892e8b2a42dd27a0a066e753e0e0b594" + }, + { + "blockNum": 1084, + "blockId": "0000043cc025b6e6a7be60180e9b3521ce471d227cad5e791925723dd1c53df1" + }, + { + "blockNum": 1085, + "blockId": "0000043d02fa295a1a9cd9271e33a9fe53e1dca2d4530909346820cef8064768" + }, + { + "blockNum": 1086, + "blockId": "0000043ea34d0b1621a70a4899be220b9d281fcba1a627e5a31d26aa40439fa3" + }, + { + "blockNum": 1087, + "blockId": "0000043fbc582959a5e0cfbdadc75b38bbb52f3a5ead9535dc088889acaaccbe" + }, + { + "blockNum": 1088, + "blockId": "000004407b899d4e04d6bb6cc8bf6182ac09bf78a6e5456d8f575bd187a05b33" + }, + { + "blockNum": 1089, + "blockId": "000004411aad283f25c64147daf36bc2983506bd35b32ce7f9a095965e423dc1" + }, + { + "blockNum": 1090, + "blockId": "00000442351f96898c7cdb678dad7d02c791dfc9ec7c621c26350827c0f97257" + }, + { + "blockNum": 1091, + "blockId": "000004437a722444036b0e7e494b88bd18144cc31d5b93345aef33a84422c049" + }, + { + "blockNum": 1092, + "blockId": "000004441f5730a4e263893a60f35cd70aaf9a7c7b5beffa83345d5bffdac97f" + }, + { + "blockNum": 1093, + "blockId": "00000445deeabf05b5c5c92bfa63703ba29967d2b976dc02bcec5025462f791e" + }, + { + "blockNum": 1094, + "blockId": "000004465bf82866c4f870aa698a2d66b38269bf91dc6155270db448a5748ca0" + }, + { + "blockNum": 1095, + "blockId": "00000447fde38f32a6fd110a5555fea16b68b7c642e88710799a255f42b7aa32" + }, + { + "blockNum": 1096, + "blockId": "0000044881539b9ab29eedcc5b03c77349645c323687a7fdfc4073c475ca3a69" + }, + { + "blockNum": 1097, + "blockId": "00000449e49893c6a15978ab15d618de2fec4e2844c2bedb5612703a55ecc59c" + }, + { + "blockNum": 1098, + "blockId": "0000044a4c65041665ebbdc068e235de3f0af4291d110c77ccd7501776f4d7cc" + }, + { + "blockNum": 1099, + "blockId": "0000044b1e91aaf8aebd017161d27fb8922b0a63918abe13b09ae9f37e364e7d" + }, + { + "blockNum": 1100, + "blockId": "0000044c684edd5978afdcc4e6ba206864f9303d959529f0a533e0b0113b05e6" + }, + { + "blockNum": 1101, + "blockId": "0000044de045e39d6a8bcd28d078f9b9fffcd416fc5549eba9d9ec30676e3f11" + }, + { + "blockNum": 1102, + "blockId": "0000044ece623f97ced32c7704ba60a01aac77655d9a1c3297b0275d9c57581f" + }, + { + "blockNum": 1103, + "blockId": "0000044fc5a87c307df87bd1ce9f7c83569d8446aea447111b9d554ed5d9a1ba" + }, + { + "blockNum": 1104, + "blockId": "00000450a658b442fa7841e3637cff04e96019a81d07c73c4d3de85814a69899" + }, + { + "blockNum": 1105, + "blockId": "000004512e69bb0a50708bbe1d16de8f8ece8336210eaf1d20fbfc2205083093" + }, + { + "blockNum": 1106, + "blockId": "00000452c3ed725c3c79dbf619ef801085f4e652375c7dded6d6d5882beb271c" + }, + { + "blockNum": 1107, + "blockId": "000004532786e007a06b7a6379ba00df1a0297c860dd922e0cf02af2ec6a9e11" + }, + { + "blockNum": 1108, + "blockId": "0000045482439519b2d368b626da52a54cff942bfeab4f8a955ed8f57ac6891e" + }, + { + "blockNum": 1109, + "blockId": "00000455a5471a4e71d98f322ca7535aa44e68e2171796b3dd51e1c28c35ea5b" + }, + { + "blockNum": 1110, + "blockId": "000004566dca8d69f3adc364b87839f27cd9c915a291c9e65514d24ddfa5af97" + }, + { + "blockNum": 1111, + "blockId": "000004579ba71f2d3f81381a01e87ca4c2dfe285f1b62b211b1339c02e6f3a82" + }, + { + "blockNum": 1112, + "blockId": "00000458c15530eb77576569d3921bb1190839e323d9c84824085338cc05229c" + }, + { + "blockNum": 1113, + "blockId": "000004597f5b528a2e494db4c34640177d9cd8a130705f1a70ac8326cbdd99f5" + }, + { + "blockNum": 1114, + "blockId": "0000045a2fcc4c2c8a2cf0b929c0c02ff67367470e917f7c8f73d6540422d3e5" + }, + { + "blockNum": 1115, + "blockId": "0000045b71f528759be6968af2421849654ebbbd92d419412aaf2e2d15343002" + }, + { + "blockNum": 1116, + "blockId": "0000045c9ef81230f898aab0a0be9bd64eecfdb01d3656e128aeda17c46ed896" + }, + { + "blockNum": 1117, + "blockId": "0000045df5585b75fa4e17c7d2e72339bdc2060bf75343bab3c6c99e91353416" + }, + { + "blockNum": 1118, + "blockId": "0000045e18685ecba9ab2e5e416544cef489b663f5ba4c87ba48446586e7be9b" + }, + { + "blockNum": 1119, + "blockId": "0000045f718eee0be369fc0e8fa424253190611d194f1add1d73336b0028a336" + }, + { + "blockNum": 1120, + "blockId": "00000460d35032edc575fe28adc03a79378798ddf1404b01ad9bc857ee4c0f74" + }, + { + "blockNum": 1121, + "blockId": "00000461d12827c9c959ff6ce46656e0aab1f9ebda01bd472f8f16ac0c61ed38" + }, + { + "blockNum": 1122, + "blockId": "000004622b3d025e39a3c7b5836c7eb38116a5920f6f343471039247dfa3f712" + }, + { + "blockNum": 1123, + "blockId": "0000046303646cac08d6d475588b5d10adfdc6e01e75f8933fd4bf8050e8743f" + }, + { + "blockNum": 1124, + "blockId": "00000464e184c0de909b9fed5ca04a09f3ae441dc48b312442ad422885bc1246" + }, + { + "blockNum": 1125, + "blockId": "0000046552280b2a18838d1690fcd02baafa91624d2d879e2e7f1dab20950ed8" + }, + { + "blockNum": 1126, + "blockId": "0000046679ab23458235417b59501c11ac9fa8658d47fc0dba6c762c57a93309" + }, + { + "blockNum": 1127, + "blockId": "000004676fc75f6d158dbd8cb5e4215d6f0cc2b0624b56752f7e562480b8402f" + }, + { + "blockNum": 1128, + "blockId": "0000046875964e874ffdbb65544ee52a244b8a02bdfa5c204fc860cecf5a1164" + }, + { + "blockNum": 1129, + "blockId": "0000046919f7d6cc2836629956031c5a0ed80579c95ea85b82d3f757b00fa2c1" + }, + { + "blockNum": 1130, + "blockId": "0000046a93f1e867bd818e2da9df3cb1b5171ff72f0fdb5b6c17bff2f4fe867e" + }, + { + "blockNum": 1131, + "blockId": "0000046b828030526526a6d0b7a963981639d96c924a99694d546832e8cdc2c5" + }, + { + "blockNum": 1132, + "blockId": "0000046cd3d89298fbf4c387d0b627db9f10aba208a9325ed6c77a87ecec3207" + }, + { + "blockNum": 1133, + "blockId": "0000046dfefad4ffa90c396d945b2b910b5579720c6076f51e17258987d02920" + }, + { + "blockNum": 1134, + "blockId": "0000046e46d53a1ef2967468f2eaee32d2dc1fe7f7ca0583443061479c6d47b1" + }, + { + "blockNum": 1135, + "blockId": "0000046f476d84bf32b013beefdaff8362fbd63fc397336c28265b9394c4c86f" + }, + { + "blockNum": 1136, + "blockId": "00000470916220c3d530327e1e77d6a73aa9adc99f006bdc728fc8b06abfcca9" + }, + { + "blockNum": 1137, + "blockId": "00000471c52010a870d402680108d62d4f0ad700f4e94a439d5572805e70ff80" + }, + { + "blockNum": 1138, + "blockId": "00000472d79f7e8fbf45f86ab74ce89dfd2745ef475840896f6766e3d6d48fe7" + }, + { + "blockNum": 1139, + "blockId": "000004733462b7369d6d15c90b895a98f9870d1a22f39b54b44b219eaaeebcbf" + }, + { + "blockNum": 1140, + "blockId": "00000474927d3aed95a87b474b1f830fc8a242dc0cf03fac1314a97d8b01dd21" + }, + { + "blockNum": 1141, + "blockId": "00000475d0529acd26c334a29b41af715a77122eeb4b4a9dc9234ce16f94025e" + }, + { + "blockNum": 1142, + "blockId": "00000476c40a89e1c598a050c48e035436596f1b293b93f9226b28cbbb64f075" + }, + { + "blockNum": 1143, + "blockId": "00000477833cb11cffc02170efa858959fc722214164502b6a8f9a822c58cd8a" + }, + { + "blockNum": 1144, + "blockId": "00000478a0cfd2423698ac38b30641cac56d73b882416cd12d615ca22ea44274" + }, + { + "blockNum": 1145, + "blockId": "000004790bf32e739074400e9482e7e02a4d662dfdfad09e6dd022f2f9acc8e3" + }, + { + "blockNum": 1146, + "blockId": "0000047afb9025e6284c52354cf0ffaf2e1230472747fff75e06eb12f770e65e" + }, + { + "blockNum": 1147, + "blockId": "0000047bd80ed0222c0405353e9898f0e3eb9a2ba06274c7de8337a08003859e" + }, + { + "blockNum": 1148, + "blockId": "0000047cfb3c2b7104d7dcd310fc48ba267863b0c0a9f12c03d9f543954bd1e9" + }, + { + "blockNum": 1149, + "blockId": "0000047d14f071624d254a08672008542cee34260d4686f0d6ca63376d53f411" + }, + { + "blockNum": 1150, + "blockId": "0000047e35a7a6f46fa62b954ac816a0718eae21714f2db15bb918f0866c3450" + }, + { + "blockNum": 1151, + "blockId": "0000047fad48cf0b68f27a4e8784d3d7e0e38423b0ea26d3788f327574fbbd4e" + }, + { + "blockNum": 1152, + "blockId": "000004807b4777dd44375d6386dcfb31ef9e936a6b27b1f1d8b48086e895e3e8" + }, + { + "blockNum": 1153, + "blockId": "00000481ab0c19c76deedd9e3a22bd7ec2ccb3a92957fdba1667fc1c6f991abf" + }, + { + "blockNum": 1154, + "blockId": "0000048214253a463832cc043d59be96e59a0d5f130b0ddf04361993a2d49c65" + }, + { + "blockNum": 1155, + "blockId": "000004836a19c90cfd9d0ece9fbe71ebc64958f12cd3b0dea096d45368e24767" + }, + { + "blockNum": 1156, + "blockId": "00000484183bfdce48f0148edcba2697edbaa7d36cc6a76ce1bce60a94e7752c" + }, + { + "blockNum": 1157, + "blockId": "000004852b5d7f7950578c67ab7e1e01cb10f7b5b78185aaaeeb824d187b5b6d" + }, + { + "blockNum": 1158, + "blockId": "0000048642a890411f4f3ca280bf365228c49ec899793437d50225f72d2f5459" + }, + { + "blockNum": 1159, + "blockId": "0000048739593d1432462775a2d3b18807a2e91c33e2821d603a12099271a565" + }, + { + "blockNum": 1160, + "blockId": "00000488ff76a8dd19054f580b06cd37a71f37a21ebb476fe5be81948218ab21" + }, + { + "blockNum": 1161, + "blockId": "0000048987dfe304a09b0bdca4e451f675557bc647428088e91e861300381b7f" + }, + { + "blockNum": 1162, + "blockId": "0000048a599411d2a082dc23f9c695a2224bdbdcd91df99a50018a0247a9faa1" + }, + { + "blockNum": 1163, + "blockId": "0000048bc39340fc18f2deea09e66f9f835f1f3fa8a40f93f0974191d007878a" + }, + { + "blockNum": 1164, + "blockId": "0000048c71be45a49b899b332a4bb1417ba6904439b0f270b73f3f6dd63952b6" + }, + { + "blockNum": 1165, + "blockId": "0000048daa40f04bc1452267b4ee631312b3bb5781919cf4ed521782e2dea53f" + }, + { + "blockNum": 1166, + "blockId": "0000048e406e7313e6101df900d44872ae2b1e7375e6fc4f34c3e1e66fc1960b" + }, + { + "blockNum": 1167, + "blockId": "0000048f9c722e6215895e98003c72040efe00307aaf132a87040b6845fe1815" + }, + { + "blockNum": 1168, + "blockId": "00000490c8e7545de21ae2059fceaa29fe63cd3c58ac83db5cd9bd1d7d4448f2" + }, + { + "blockNum": 1169, + "blockId": "00000491a02430c1f5c24c0e3bf805f8cc4c1f4607de852898c7564749f768e6" + }, + { + "blockNum": 1170, + "blockId": "000004925f3f5bedbcc6131dcaf53e0cc880e7f22761a3be1557bc6163fed814" + }, + { + "blockNum": 1171, + "blockId": "0000049350ea74c01a12155492e8f2fe283b641cd56dbb3e0f9093768a3bfbaf" + }, + { + "blockNum": 1172, + "blockId": "00000494aa0a0c6c5580f0f4c174926008162c54cbcf1c6855e3c86991283afe" + }, + { + "blockNum": 1173, + "blockId": "00000495ceedd77a36300a1092f128dbc8376e829f90bb0183e2316388aa53ef" + }, + { + "blockNum": 1174, + "blockId": "0000049655f662fe131e4701c574df754ebe8633a1d937c7e0c7d9f81052c88f" + }, + { + "blockNum": 1175, + "blockId": "00000497905c2c12555ec6cef21344caf938ec8ef654482425a5adafa9da03f0" + }, + { + "blockNum": 1176, + "blockId": "000004985b1e0f8d1c802a6e4c21f512b8e2c328142cd5d9ca34fa0469d795cd" + }, + { + "blockNum": 1177, + "blockId": "00000499cf464de9fe85345e5d04ed55374f9261cd52f778bccd442d82adc48c" + }, + { + "blockNum": 1178, + "blockId": "0000049aec209a00f434109bc1ff27cab883213a0e1abc591b04ecae51350cc6" + }, + { + "blockNum": 1179, + "blockId": "0000049bdd0a9f2268643b6c350cf1b2121c6e441328033233c0cff62cbeea4c" + }, + { + "blockNum": 1180, + "blockId": "0000049c3c43aa0a6b10f099341802d647502e4c9a3f5b7aeceed3a131415c38" + }, + { + "blockNum": 1181, + "blockId": "0000049df0900158f1893838a41cebe9b77c8873a245248335eddc2cebdb3962" + }, + { + "blockNum": 1182, + "blockId": "0000049e41b4bab6dff10694b88623437919d42c1f6bbfca668c074306f7dab4" + }, + { + "blockNum": 1183, + "blockId": "0000049fb0f43da1542383a4a3d404c3779331706fa93d2b1e14fcda624be355" + }, + { + "blockNum": 1184, + "blockId": "000004a073a8aa3d71cf9e4d6597502a4d1ec36e206a7a6fc520e24393fe2ada" + }, + { + "blockNum": 1185, + "blockId": "000004a1f2911965b7bbb20c73b3306d1e5a4293b8766aa5d9268d847cc31d01" + }, + { + "blockNum": 1186, + "blockId": "000004a263f84c39b93ab13cad858348b9f864275d08da3e977ace7f3fb23e29" + }, + { + "blockNum": 1187, + "blockId": "000004a37b81cd84bc41078efed4a746942417d735fa978c4e52b6721897ed74" + }, + { + "blockNum": 1188, + "blockId": "000004a484de9ff13ef1909eea7abb7c52d93f83f698ab84426dfa8d9b8afd31" + }, + { + "blockNum": 1189, + "blockId": "000004a5a8ea433a8dd6107e65f835b464adaad91b4aeb1959be9e86ba7fee99" + }, + { + "blockNum": 1190, + "blockId": "000004a6eb90916bc83f111669028ef920a84e23799aac0899a5a144264453b6" + }, + { + "blockNum": 1191, + "blockId": "000004a7ee4ec3a7d1bc8847d2ca272c278a453f910e992696a55ee5a7625e3a" + }, + { + "blockNum": 1192, + "blockId": "000004a8e33b69bc6480093641772f6b679008e7144b61d9ba18863ab122e3a5" + }, + { + "blockNum": 1193, + "blockId": "000004a90eedd616b347ed3075bc595d44069d919c9bad89aca36572c143a501" + }, + { + "blockNum": 1194, + "blockId": "000004aa515dc7da3167973064f5d5e76bf00737403c7890bcd2e9f412707fd8" + }, + { + "blockNum": 1195, + "blockId": "000004ab7344472a075f1cff0d85da406aba17faf5cdb18b2ffd666b9b2f7534" + }, + { + "blockNum": 1196, + "blockId": "000004ac7e21c53ec5e08d05c99bd8b037e2a46002e28a0ea7d926cca2b249fc" + }, + { + "blockNum": 1197, + "blockId": "000004ada5f7ad21b8dc3447458cbf3a9143e7335607fc1d5d442d877de6b051" + }, + { + "blockNum": 1198, + "blockId": "000004ae82634e1cd50595cb9289625fded64e117381ad08e7c5d04f67e3c635" + }, + { + "blockNum": 1199, + "blockId": "000004af3d4ceeaa594d7c67bc98acf5815e65418421a93ae1ba32bedc4ac9bc" + }, + { + "blockNum": 1200, + "blockId": "000004b099ef429777ab701faefdee5b759ee5c449af16684c9c9de8729ab6ad" + }, + { + "blockNum": 1201, + "blockId": "000004b145bf1c4eae482b4cfaf87736ffd404880cd242ebfba1eafc5d01a500" + }, + { + "blockNum": 1202, + "blockId": "000004b21c53743aef6143df603e6eb99c09e79d1948b1948a8e2ba67837f5d8" + }, + { + "blockNum": 1203, + "blockId": "000004b3b4cb40a0b27a9ca465b2da879a4b77e68b02a7067455fb91764fbb8d" + }, + { + "blockNum": 1204, + "blockId": "000004b4e8dcfa536363045c35713405018ec15a42a4775a803733d402d36a6a" + }, + { + "blockNum": 1205, + "blockId": "000004b5824fa931197c684a28d59933dbb65142c44463ec3b7c613ffe502bf5" + }, + { + "blockNum": 1206, + "blockId": "000004b6e2a90ff2e1ca916aa7debc8f86edec6ea33c383d3e7a17300cf398f9" + }, + { + "blockNum": 1207, + "blockId": "000004b75f493db707780ebc2581e3d33438eb0b30809213ac8ca4175c69795a" + }, + { + "blockNum": 1208, + "blockId": "000004b8a4600ab4cda6a58fa93dceaa6948ebdbd191b521ccdd41e1aa558621" + }, + { + "blockNum": 1209, + "blockId": "000004b90252849c5599c6fd9f58b971c00984dfb44262034199fdc326d54e72" + }, + { + "blockNum": 1210, + "blockId": "000004ba18866d4beacf85f52ac6846c5198e13d92a88ad945952a57ecd7678d" + }, + { + "blockNum": 1211, + "blockId": "000004bb6ab646d6581264bce103db25f153cf1d907c255f18d9f4d51cc4670e" + }, + { + "blockNum": 1212, + "blockId": "000004bce53560708c22831f4504d22b560b54c8370eaa3969878c8cecc78883" + }, + { + "blockNum": 1213, + "blockId": "000004bdde6618bb93d2c76f3c7ebad570ba877117d2fa257e84ccef2bdcdf36" + }, + { + "blockNum": 1214, + "blockId": "000004be4727c0d79bb27475fd7badcba6b91a033d9aa14613bd2f09785d0c5d" + }, + { + "blockNum": 1215, + "blockId": "000004bf5257f85ddede83f962a3f348ba53623a4dea290f735685bb563a212e" + }, + { + "blockNum": 1216, + "blockId": "000004c0356298f29338e9349f849128691b59f8e7321716489e5d687c67356b" + }, + { + "blockNum": 1217, + "blockId": "000004c134241366f300b2f69f82fb10cf829a88fa5a303f9707bca4f9b0bb11" + }, + { + "blockNum": 1218, + "blockId": "000004c269dfb305c4c4db77ba3d176e313ea215397e9956c0c12a33906df646" + }, + { + "blockNum": 1219, + "blockId": "000004c3775deefeabce2d4ee8120ba27aa452bfdf18cb7d12d71a6968effdef" + }, + { + "blockNum": 1220, + "blockId": "000004c4d8fd60556a235c7ded1020a76109271c7be7aed31fb8cef70318a3a1" + }, + { + "blockNum": 1221, + "blockId": "000004c525f95d1e0beb84538136cac0884da47ea3e97989656fe632cedc9917" + }, + { + "blockNum": 1222, + "blockId": "000004c6d05e55ddad6b164aff7d19bbe424c6faaa4537544bb76d9741b05ad5" + }, + { + "blockNum": 1223, + "blockId": "000004c71b341a7ad2fa92eff5b0c1c3a43e33e478e201af095ff97294ebb32c" + }, + { + "blockNum": 1224, + "blockId": "000004c8f5899810c27a5b92b46ebc6bb56e67632881cb6ed2f66f7d80e50320" + }, + { + "blockNum": 1225, + "blockId": "000004c9fb4b50cc0cd39075387507a9722c706aa5b9b828f2c537e50602f3be" + }, + { + "blockNum": 1226, + "blockId": "000004ca33231ec3eb8dbd5426b56d3e2b89bcaa2bad9eed7207b953b049777c" + }, + { + "blockNum": 1227, + "blockId": "000004cb5ae60f41ec4e33073e55274592e6660eb2a780d9769845124fad6be2" + }, + { + "blockNum": 1228, + "blockId": "000004ccc7f7c185bc10af1945f6da97690216f9c32a7630a07a9c7b7b9f8936" + }, + { + "blockNum": 1229, + "blockId": "000004cd0bd066bd01f6b41bfed80dfb539dce7cda58496de1746dc8a753ad96" + }, + { + "blockNum": 1230, + "blockId": "000004cecda45f23f09bdd8787f54aa70b762fbc24c28124d3b62ba6d81ba899" + }, + { + "blockNum": 1231, + "blockId": "000004cfdf0d368684bd263ac4ef40730f0befc760d4a61858f1225dfc86f047" + }, + { + "blockNum": 1232, + "blockId": "000004d0728b977b6f73e5c96a6a822f04efb86b2bf8fc45e7af589a592c34e9" + }, + { + "blockNum": 1233, + "blockId": "000004d1377758a5ded204d11232366ed585c9cfea69f2f88f565d0955df569c" + }, + { + "blockNum": 1234, + "blockId": "000004d2941dc0c74b4215e14f22d9d9e75654dcc2fb9fd28b7b43f535209779" + }, + { + "blockNum": 1235, + "blockId": "000004d3ab738ccde67cfb0f0e9e407a1ba792f22e934b96e4c3fff66ff4f994" + }, + { + "blockNum": 1236, + "blockId": "000004d488ce2200c33b3ceefaebc79b979feb61d9106656a54fb386dff22e36" + }, + { + "blockNum": 1237, + "blockId": "000004d516b61267542737dff5ec884bc7f1af7248a476af5440daa0fbd4c5b8" + }, + { + "blockNum": 1238, + "blockId": "000004d6100223e06ad4ed31792bab020981e8ffb902755c8537274d4b1f0f54" + }, + { + "blockNum": 1239, + "blockId": "000004d7c5c9490d014830c7f6e29a243ed6ee7473fb5130ebcb0fd15b1da4ce" + }, + { + "blockNum": 1240, + "blockId": "000004d82b1332d0b063252bddd56e9149687b69f5982d1ab3fd18facb4e201a" + }, + { + "blockNum": 1241, + "blockId": "000004d9b875b559f5950157534362e1a7a60f54f8aca6c6904fcb45c88743f5" + }, + { + "blockNum": 1242, + "blockId": "000004da8958cc846b5ff73a7893b899020ba5ec34fa9eef48ecc54690161d57" + }, + { + "blockNum": 1243, + "blockId": "000004db125e7699dd83225a0d167fe47d1b292fbf0a685232d50e7ae8b4c7bb" + }, + { + "blockNum": 1244, + "blockId": "000004dcf4b10972816b2b1734552c35f33eb68d1834f0bc8fca102876f3d02d" + }, + { + "blockNum": 1245, + "blockId": "000004dd5bbfd40a77a8a6018aaf3c954d2b04a645986e6d1599b9bd34bd0481" + }, + { + "blockNum": 1246, + "blockId": "000004de7959af875d5eaeebe85d619e19e340670795d4b5432b115ca0a0e0d0" + }, + { + "blockNum": 1247, + "blockId": "000004df97c596203274e6e30ac963830131664ca3c9ce354cf025ae2c808ea0" + }, + { + "blockNum": 1248, + "blockId": "000004e0a7f067e59a21d334e393a52e94e690e47f4c7b2d6c0a5427ce082101" + }, + { + "blockNum": 1249, + "blockId": "000004e1416235415881f50a90f8d206abf34c44b54dfaaf28f5074b374767e7" + }, + { + "blockNum": 1250, + "blockId": "000004e2c6a8d79554ad5e7a36b67ef1402b0b7a80c4e6ee319a1dde343fd5fa" + }, + { + "blockNum": 1251, + "blockId": "000004e3dcb0ab186e2121a28ecf2ecbe45f1f81e12585c578a29319cd1752e3" + }, + { + "blockNum": 1252, + "blockId": "000004e4fd6764b2c0d1cae3e422278685b45202f6e09036a305f83ea949e9ad" + }, + { + "blockNum": 1253, + "blockId": "000004e500da1ee1cdc8bb3a08054c1af5e4e84c137d4a11a9837c2124bccd6c" + }, + { + "blockNum": 1254, + "blockId": "000004e6d5559d79ad8c47f2932d4659dffd1030d2239176e4350fa6eb7dfd09" + }, + { + "blockNum": 1255, + "blockId": "000004e7faf8a3940aac1375471fd2a89a4bb16e06462cc69d3f7ff2f2da4bfd" + }, + { + "blockNum": 1256, + "blockId": "000004e8cecaf80bd409c75730b2e49a30c2ef08e9e3507d021b87d21b355f62" + }, + { + "blockNum": 1257, + "blockId": "000004e9a85092681d2f9cdaddad913d41ceb739df70cbfc3741bdda6390dd9a" + }, + { + "blockNum": 1258, + "blockId": "000004eab0f78deee7be8456242b99980af952760a490d8516dcc376ab0d0cd1" + }, + { + "blockNum": 1259, + "blockId": "000004eb7dbd2ea97d8fae3f056a5393cdcb7a0268e32533624c4deeb25267f1" + }, + { + "blockNum": 1260, + "blockId": "000004ec85eec164879f2aef867e116c955c6945f97f79218071a9e51c76113e" + }, + { + "blockNum": 1261, + "blockId": "000004ed9bcf5cd98150a829a8729f1add1c9e1e7ba7e69487dc6a355d344c59" + }, + { + "blockNum": 1262, + "blockId": "000004ee905737c152840fffce5c81aa1e877f3e34804fc15814fd47c51eefee" + }, + { + "blockNum": 1263, + "blockId": "000004ef6f011e1d852e682f523486d24b9536bc0642b8c5f3713e2d21bcbdcd" + }, + { + "blockNum": 1264, + "blockId": "000004f07be33ee9ba28c4d570c4021208bb8444bfe49e37c8f34ec2602df5dc" + }, + { + "blockNum": 1265, + "blockId": "000004f1ba17a6d981f4c12469d9b7bdd6235aec98f523706af6076ccfa8c2a1" + }, + { + "blockNum": 1266, + "blockId": "000004f2ce2783a6a9306e0edaf68cefcc6881d85709c7e0465cf1eafbda2c08" + }, + { + "blockNum": 1267, + "blockId": "000004f385e26da998c396834a774be2b9a18af3d4d22856e952ff7112748219" + }, + { + "blockNum": 1268, + "blockId": "000004f4be1cb86c2df5a193f52c92bc7ace17e29acbf1b41455a8f1b167eb2e" + }, + { + "blockNum": 1269, + "blockId": "000004f5bc73f68ea58c7c6f2a24eec276755738fa304628f80e2b7654b52f36" + }, + { + "blockNum": 1270, + "blockId": "000004f6b55f1c5960f5227c5d629788f3806051ec7164d6f2cfb047150c45b5" + }, + { + "blockNum": 1271, + "blockId": "000004f7f90a92641b38ec606787a6ee2c0ac91bcd2375e35c27f2cb68d28667" + }, + { + "blockNum": 1272, + "blockId": "000004f803ee5baa7967fc3c8b7ec2523aa3f6167ec36569f824a9405cf4d28b" + }, + { + "blockNum": 1273, + "blockId": "000004f9cc519498e5de15890b5f30448510e3b027154baac4f5d99201c54c93" + }, + { + "blockNum": 1274, + "blockId": "000004fa3d6e9af71179b2cc479ecad6433c1a54c004fb5e881fd9ef39ad6e6f" + }, + { + "blockNum": 1275, + "blockId": "000004fbe40c709d6484db4f2eeb810d254888bd19e28f0564e76f28a7b85970" + }, + { + "blockNum": 1276, + "blockId": "000004fc3d8eecdb2a9d48657c3a63175eff57741153388f0ae31f18e1ed21d0" + }, + { + "blockNum": 1277, + "blockId": "000004fd11d1f6a2d362eef46089a8c6e7d7fbfeb6835accfe7f174313f11ced" + }, + { + "blockNum": 1278, + "blockId": "000004febafb205865f064879cd218f83204f118dc9f1bcf2a1c7516cf9c61d9" + }, + { + "blockNum": 1279, + "blockId": "000004ff77adc6006102ed7e23a97c83ca9ccdbf620c129641d6124abda191ef" + }, + { + "blockNum": 1280, + "blockId": "000005000c6d4da023461364e9bf039d96036ee3735ec70fe2623ac419c9c911" + }, + { + "blockNum": 1281, + "blockId": "000005013a0ee888033f9cd5ff97a4c52d9d64c1975e11ffcf381cd5a811b653" + }, + { + "blockNum": 1282, + "blockId": "00000502665804510130d719f7784c14177f9ee530c63b8dc642642b0dc99368" + }, + { + "blockNum": 1283, + "blockId": "0000050303417743f050d0a68e758219786b1cd9822e24cc3d73a4b89c88eea5" + }, + { + "blockNum": 1284, + "blockId": "0000050467c0b84fb97b71e2328a7f024119c61f6cd13f613628c673bc66967f" + }, + { + "blockNum": 1285, + "blockId": "00000505927c017c0e7b4151f0c30d0ba3a1375f999e100da5f6e44daa1e1038" + }, + { + "blockNum": 1286, + "blockId": "00000506bc543dc9c13e6e0a01d03ccbce97555aee2e0daceec24d9fdb40bfff" + }, + { + "blockNum": 1287, + "blockId": "0000050757b08a65a9dfee92921ea94b44504aa64eeb96e379f52be8c40e7cd3" + }, + { + "blockNum": 1288, + "blockId": "00000508fd1a35e41aa0d324466d1f9d757f17ffa73170c00f4e11bb7815ea1f" + }, + { + "blockNum": 1289, + "blockId": "00000509ebc0ad27cd6df3be6918575ec4e76bf01513bfa725854f0675993eba" + }, + { + "blockNum": 1290, + "blockId": "0000050addc3790bbf90a365c906123f48278eaaeb1c1cdc32019dd92dec7fa1" + }, + { + "blockNum": 1291, + "blockId": "0000050bf9438110298100ca6cf3cabf303aee049c265670e12ef3b63639d460" + }, + { + "blockNum": 1292, + "blockId": "0000050c85019dad8704aa250095b01f228882d4bc8b8d76899f42f69d8fc89e" + }, + { + "blockNum": 1293, + "blockId": "0000050d875e38e543cd3e6c6d6c4dfbce667c61057d52c0d13c435cf4698682" + }, + { + "blockNum": 1294, + "blockId": "0000050e3c1ae048c2cb7bc7eaa5f1b39b775e34d4bd04aa70d46f720b98a5ad" + }, + { + "blockNum": 1295, + "blockId": "0000050f09dab2bd1d2d44fcd9a9b76ef66a6d76e4aa9ae798edc9f94c797dfe" + }, + { + "blockNum": 1296, + "blockId": "0000051025dff18af8bd91ece881b944fd5df52ed6ae02d6f24c4d4474467004" + }, + { + "blockNum": 1297, + "blockId": "00000511c4db194ddf96fca92859345a0be5663e6ff95927cb9db467aa9bc57a" + }, + { + "blockNum": 1298, + "blockId": "0000051205e667c5df34489a4a6d22d9725f7eeb47170fe46527d0e8bce92454" + }, + { + "blockNum": 1299, + "blockId": "0000051313d8f21c3a449a58e39d59d4b114ce7829fe8276e4459adebb716e69" + }, + { + "blockNum": 1300, + "blockId": "000005143a41489fb5ed338442c2da9a9d82ce199b664339a42a18497342cbdb" + }, + { + "blockNum": 1301, + "blockId": "00000515b1f9d03846fc7b72d1c408c7703047c4e2e9f3cea2a9e28fe46a1602" + }, + { + "blockNum": 1302, + "blockId": "00000516656cc4be448bda3d99b2c46286d7fbf6708ff105c23d52591b4c7377" + }, + { + "blockNum": 1303, + "blockId": "00000517a2de48a4ce1db2ececf791d361659b9d45123b726d1ccf19a1ad1e5c" + }, + { + "blockNum": 1304, + "blockId": "00000518d151844c071994dbe1b2df57d2fc0dc9ce01e08becb49b62860d143a" + }, + { + "blockNum": 1305, + "blockId": "000005191b5465941b76b493de667847cc9cd590e18f709db08d7884dbf043cd" + }, + { + "blockNum": 1306, + "blockId": "0000051aed0b3bff6349822b0778a0ded035df140969cbc5160ac11649881d15" + }, + { + "blockNum": 1307, + "blockId": "0000051b2f535955f92871d820c0c94804029833849914594a8c89a389a21c13" + }, + { + "blockNum": 1308, + "blockId": "0000051c816a913fb16d57b72eb77d33a56f0e3514a6429431e64dcfa10c9262" + }, + { + "blockNum": 1309, + "blockId": "0000051dd57cb6d43398038259fad58cfe1fb7ba049ccb99979f1e8763afc1bc" + }, + { + "blockNum": 1310, + "blockId": "0000051e3f2c484961a59c27bbb6855c7b7a0335bc2102325a2323730cc4d745" + }, + { + "blockNum": 1311, + "blockId": "0000051fbedc15eac70e3f4daace0cd1ac3d63d090ce6479313fdb937f1f16ad" + }, + { + "blockNum": 1312, + "blockId": "00000520c80fb1d82935863535e406722ef1b14cca999cd8b4c7b1916c70f5d0" + }, + { + "blockNum": 1313, + "blockId": "00000521bc1537693747892bcccace55e0d7b73e2f5ef9f4feddb29f28846148" + }, + { + "blockNum": 1314, + "blockId": "00000522aa72cd1150fa0969cc7f2f359b77c0f45ac064e9ab19b9d2de6c9353" + }, + { + "blockNum": 1315, + "blockId": "00000523cb05de848ee347e35d04a994bbff685bc112fbade37f0e1cf0c0bdda" + }, + { + "blockNum": 1316, + "blockId": "00000524586d85679f2f6ff79db70bebf66957c5155b25f77c610647e7af5b54" + }, + { + "blockNum": 1317, + "blockId": "00000525097a5cbd1b43aefcdba386ef3a50be6f3a78ccbdd711c8a6961c8f2c" + }, + { + "blockNum": 1318, + "blockId": "000005261a674c2c19f46ace31c37601a94a4f608669aee4596ae582de3c4add" + }, + { + "blockNum": 1319, + "blockId": "000005278bcf0fd6704c63be8097aedc01d2d98305664d774c5919a573dd2643" + }, + { + "blockNum": 1320, + "blockId": "00000528708c41206f59cb7a7815895610725312de36bef5cee3d0b3c77746d8" + }, + { + "blockNum": 1321, + "blockId": "00000529e6237138ab55b6ebca553bd5170b08acf0cfb974ba244ffe3a0e6afd" + }, + { + "blockNum": 1322, + "blockId": "0000052a1627bb4002be0a9ed1bfb02644f04a72eea5e4ca905828cb6b5aa761" + }, + { + "blockNum": 1323, + "blockId": "0000052bb790f38ddc03f613db7ebf55beb7c91140f35ecfd6e2ee42b5f0abd7" + }, + { + "blockNum": 1324, + "blockId": "0000052cedb8021b880466fe914721ff305405a11f67a7ff33934364dc46ea78" + }, + { + "blockNum": 1325, + "blockId": "0000052d1443a6934e38869bcad314eb89f535862fd75a8a9c75619a5dfb8e0d" + }, + { + "blockNum": 1326, + "blockId": "0000052e3dbf5294560d36d81b5e49de0f1d3e1fea18fe30630066c517bb9c3f" + }, + { + "blockNum": 1327, + "blockId": "0000052f9d4549daaa8b6a3b1c19a7c2f96d4ee2d0c8a3f9232b6d41a7aa89ef" + }, + { + "blockNum": 1328, + "blockId": "00000530e09aa6089993353aac57f1946a9d9220696a61ea7967e9fb68347bc3" + }, + { + "blockNum": 1329, + "blockId": "00000531d3bb23770b9bb6d89df7f9854e7ffd5d80aa5b64314c49eddc3f6e1a" + }, + { + "blockNum": 1330, + "blockId": "00000532dea32955a10dc32178e465ba0ea74c1493c6bea3ae24cb33101feed2" + }, + { + "blockNum": 1331, + "blockId": "00000533d664f218e39c5f9c26b76a0ab7bb797e159d5fca2f11f1f2c48b32bf" + }, + { + "blockNum": 1332, + "blockId": "00000534f94915498f0a5b792b261ae2e6d6e36160ca603907e61eb9c59f2a8c" + }, + { + "blockNum": 1333, + "blockId": "0000053532d7d2348d010f5efb9068a71360b1b66d62a8bc3e8259fe95bb9e8d" + }, + { + "blockNum": 1334, + "blockId": "000005362f0980b8640781792b1146ebc07b31e49eb6762064aa66deaf023d34" + }, + { + "blockNum": 1335, + "blockId": "00000537f77ac94b6f5f88c4eb0df74fda67cfff98a18d17056ad6e4966a60c3" + }, + { + "blockNum": 1336, + "blockId": "0000053879b6f252d3dc321eff50736ce66befadd330d6a113ad15b73f39e08c" + }, + { + "blockNum": 1337, + "blockId": "0000053992c0bd2990bda0d7723d0d1ff32aee61bd821e60dff47f23be774c29" + }, + { + "blockNum": 1338, + "blockId": "0000053a1d24aa14c1154d1d810be1b411baafa5c1eb6a24ef153a8f7c1b8bed" + }, + { + "blockNum": 1339, + "blockId": "0000053b63ab43fc6079660e6e6762034b97e42099653daa8d4e00b846dce96b" + }, + { + "blockNum": 1340, + "blockId": "0000053cc4c1d76b5de6d643a9a2399d22315a9abbb04414fb17cab2843798a3" + }, + { + "blockNum": 1341, + "blockId": "0000053d1dbeb54f29f1c1c8186628a38eeb39d8ea86c814f8b03b2823be13c7" + }, + { + "blockNum": 1342, + "blockId": "0000053e3552764242684c54432f1e4008e8e0c232526e1b0ff8dd9bf8d55409" + }, + { + "blockNum": 1343, + "blockId": "0000053ff5993dc15abaa742689f30308db8fc4ef8e52b06ec839d3ff27f3601" + }, + { + "blockNum": 1344, + "blockId": "00000540b4fc53769a2b44da4188172a91320b9d22715caf493a5abe5dd242f8" + }, + { + "blockNum": 1345, + "blockId": "00000541ff6b8a377d39a4da730b2ad23ca5b9bcd56af88e80613a07136ef580" + }, + { + "blockNum": 1346, + "blockId": "00000542d998dfe4e908d0f175bd21de306fe3e8815befaef518da8d1ae2ae70" + }, + { + "blockNum": 1347, + "blockId": "000005436a1de0b1b5566d9460d3b577a86a3302e6684f6a46162f46b0216578" + }, + { + "blockNum": 1348, + "blockId": "000005441fa55afe18d65506800856d3c194bea373f3dc39970c6ce9873ce296" + }, + { + "blockNum": 1349, + "blockId": "000005458a4607b3f53ed59e5f9c547af8f56d031368567ba75dc645c7e280d8" + }, + { + "blockNum": 1350, + "blockId": "00000546d89e3f5dc1c8840e14c7634c0337cf08ea0b64a0741a3d052805f71b" + }, + { + "blockNum": 1351, + "blockId": "00000547d28484df2cb1a5d88e379a874ab218f3248b43627abd66656a79a570" + }, + { + "blockNum": 1352, + "blockId": "000005484340fcfd83ffe6162ea110c6d85a855cc09ed3b6201b8f0efa3d4403" + }, + { + "blockNum": 1353, + "blockId": "000005499a8a44620350a812da62498e6844f2d48e00cd964f5ff148cb3b86a0" + }, + { + "blockNum": 1354, + "blockId": "0000054a9729cf6a529989dd882980e70e597928ed1f71f010c9b40521b69e52" + }, + { + "blockNum": 1355, + "blockId": "0000054b75733a7ea43036b8e37e020af95ad1147405c8aa28e06475a5256f9b" + }, + { + "blockNum": 1356, + "blockId": "0000054c9b0ef3706359b37b89341ea1b2193fbf9ee8b9446c56ddf35b577d16" + }, + { + "blockNum": 1357, + "blockId": "0000054d4f255a0d3743018acad14743326e502869f7de3cb3038d7688164302" + }, + { + "blockNum": 1358, + "blockId": "0000054e5496c6811933e82691ff538b95516206d957aff71ab01e6788cd3030" + }, + { + "blockNum": 1359, + "blockId": "0000054fde337c4ec9e7dd48e35a4cdb83c2bae3b8d1d001865f8bc8b34fdd1f" + }, + { + "blockNum": 1360, + "blockId": "000005504b4a8351d5cf64aa49bce6f5a63fdc14def7db2471ee8b02667e6a6b" + }, + { + "blockNum": 1361, + "blockId": "000005511fcab702d7241df5b19ef35fb8713e068e3f4d01f75ab3b3da39a9eb" + }, + { + "blockNum": 1362, + "blockId": "00000552d306f443f3a6ec66be87317ce611982d648a874443782142532f7dfb" + }, + { + "blockNum": 1363, + "blockId": "000005536b533122a3ef1e1ab53fcae59264d2c256c7f820cbfd5545ca6a3a7e" + }, + { + "blockNum": 1364, + "blockId": "00000554af8de4f9880474a347acde7efac771f9e77fee031e09a9f055e65be6" + }, + { + "blockNum": 1365, + "blockId": "00000555330a0d651161b1407f93f6f285aa066c801372980f88356df476d4f4" + }, + { + "blockNum": 1366, + "blockId": "00000556c0118923eb74dda0ca0614cbbe628f712df492cc88e5212bb8c2fef0" + }, + { + "blockNum": 1367, + "blockId": "00000557af94d52098504768441f31eb3cad3d5b843c5fe3803c143d645403ca" + }, + { + "blockNum": 1368, + "blockId": "00000558dab450cd54448929b0e37f7a8fa8557c7422d84b0fc230f893aecf3d" + }, + { + "blockNum": 1369, + "blockId": "00000559590ac9dd138009f57472935f4ccd6b45941e0ffc449a7d92c4570ee8" + }, + { + "blockNum": 1370, + "blockId": "0000055ac7c33adb52661cf2494f4cc084db526dcf5abfb45d550e0a1ff45a29" + }, + { + "blockNum": 1371, + "blockId": "0000055b5e4fcd81f0971678c2b676f74c64b8ba158cbf65287d90da18f35d32" + }, + { + "blockNum": 1372, + "blockId": "0000055ce7edb7a1c30cc4bcca01c4e80790d7a11aea0051d1c70bb0c5ddf895" + }, + { + "blockNum": 1373, + "blockId": "0000055deae815562da081bc9025aa6c74d84131f473b49e0db8617c7ad65dc2" + }, + { + "blockNum": 1374, + "blockId": "0000055ef46c7e8bda352bc0538ff7274b8ddf70efb6d3620191702594fc7c63" + }, + { + "blockNum": 1375, + "blockId": "0000055fb3da2818fe61b479f9da7cdacb19240910eebe24c46907cb7163c43a" + }, + { + "blockNum": 1376, + "blockId": "00000560b2999e3e6302e42f98dc7648dfacfde13dcdc669daac8766d7c45e8f" + }, + { + "blockNum": 1377, + "blockId": "000005616b331ab90f31b0f7e9852f7e1f70a8a0a3f819f6770060eb1cefb17f" + }, + { + "blockNum": 1378, + "blockId": "000005623f56fbbbab19fe5e0a619a89fbae84ecc974f1708054025a3bcd435d" + }, + { + "blockNum": 1379, + "blockId": "00000563993163fd30f11674d63f641bb85786f84696fcdc5bfa86e406189068" + }, + { + "blockNum": 1380, + "blockId": "00000564b21acf0b14c37c7d5ba0f7fdd687c5b92b65b271861c7627d9047dc6" + }, + { + "blockNum": 1381, + "blockId": "00000565b6ee53d6d025e5e18228ef0d257f0a0447af6dc9173a711cf882333a" + }, + { + "blockNum": 1382, + "blockId": "0000056606372c2c5449b5aac169bc34d38d5e58a2f1479411a84b846749b7c9" + }, + { + "blockNum": 1383, + "blockId": "0000056793a831c0a46a475a4c65ede5394b75eb6ccc09d41e70d80d8ee6fe67" + }, + { + "blockNum": 1384, + "blockId": "000005685c8b636f04fd91ddcdca5e0e25ed40e6559897fa6020738c8cc874b2" + }, + { + "blockNum": 1385, + "blockId": "000005696edd871746f57932bbe8a485d720f5c172e6e935706612d0ee99bcf9" + }, + { + "blockNum": 1386, + "blockId": "0000056a1d2bfe431f5ee9ef991811e837087457d9b0ec313cc39f0801b680c5" + }, + { + "blockNum": 1387, + "blockId": "0000056b6a944ddb6bc49563d1c29bcdda39081fe63b8614d0b730c8b96fef72" + }, + { + "blockNum": 1388, + "blockId": "0000056c308172400d138b93b31428f69b790ccaf1be66a802b1eabe7bca9a1f" + }, + { + "blockNum": 1389, + "blockId": "0000056da950a436f2f295f0612ed8835a59b8f6e4351025f64f08a51deb6cdf" + }, + { + "blockNum": 1390, + "blockId": "0000056eb2db6a290e76646ceb87645a81ac2ef1500ec76f9159facc565ac3f1" + }, + { + "blockNum": 1391, + "blockId": "0000056f5bebe6834bb427cbf3848e5eef1cf04493f99d8107eecd903af00001" + }, + { + "blockNum": 1392, + "blockId": "000005706799e48e74064953b9842b337e76067f88ccf7cd9d7a5d23a1fb266d" + }, + { + "blockNum": 1393, + "blockId": "00000571ecd2e155804afde227c664702043db7ffd1a3fb1ffbf71e23586188f" + }, + { + "blockNum": 1394, + "blockId": "00000572f0a8292c8228d302e71b86c7d49eb39156d125658907b2517682fc3b" + }, + { + "blockNum": 1395, + "blockId": "000005734078114678ada5a3950e588394bc1be797f9babe286575a204e70bc6" + }, + { + "blockNum": 1396, + "blockId": "00000574611bbe66fd3108d080b5026347da60c64c24f09867226f1a10244412" + }, + { + "blockNum": 1397, + "blockId": "00000575340669031a2cc8cda3c775c148cf8596b422dbfd1ed44c150b86b852" + }, + { + "blockNum": 1398, + "blockId": "000005769e8fe4cf9e36b64534002045a166b2b1c44b5df98a4bc39e6a7a2909" + }, + { + "blockNum": 1399, + "blockId": "000005776b0a2988ea5db93636d923e374aafe4be0df8c0d865b0ecada039dd3" + }, + { + "blockNum": 1400, + "blockId": "00000578dbd243f0cf73eab11d9251c37cad5c7c8c0cb8bb197d29ededdd81ee" + }, + { + "blockNum": 1401, + "blockId": "000005790ed4b003b8001a55df18f5440fd69a20ea2ef80ecfc14948803481f1" + }, + { + "blockNum": 1402, + "blockId": "0000057af83128b607a516af2b3df4e3e4134b0ed341d143ef72128ce6aba65d" + }, + { + "blockNum": 1403, + "blockId": "0000057b5c930ede839b19310c89fa0a53221b36954c08d38a35e5b3e62eecda" + }, + { + "blockNum": 1404, + "blockId": "0000057cb2f73cb2d35ca65092df142262db7e18b17429343e2467bc5657f38d" + }, + { + "blockNum": 1405, + "blockId": "0000057d33479bdaf12086c7e3fb685a9ce5ab70689cf6c32ec7487110b0079a" + }, + { + "blockNum": 1406, + "blockId": "0000057eeb658990cce956861e8b3022f45f677ea6c9f034b5ede11c26fdb45c" + }, + { + "blockNum": 1407, + "blockId": "0000057f0158d1617bd271d7852bf14a00be58cce8648752d364e924c525f5cf" + }, + { + "blockNum": 1408, + "blockId": "00000580c369330dc3edab71eb49f3ce82616c749de561b6032d21d118ff0a57" + }, + { + "blockNum": 1409, + "blockId": "00000581fe34f2cad1b7959ef97ef0ce0e9daa66005d0c0a7290e89ce1783cbb" + }, + { + "blockNum": 1410, + "blockId": "00000582f68476f34d90ce11993534cc390d9f4f16557ef2d9708df2933fb300" + }, + { + "blockNum": 1411, + "blockId": "00000583f8bf6d23a036cdce2303cfeb0fd261c2fe7b84b3cd19cb451567393c" + }, + { + "blockNum": 1412, + "blockId": "00000584397e959c556479fe18dad0a7eccb5131c3939d1a57b2e33ab91620cf" + }, + { + "blockNum": 1413, + "blockId": "00000585b7892aba3dcfd017817fcdfe7270d5999819e1586e5b9c9b38f7d730" + }, + { + "blockNum": 1414, + "blockId": "00000586804007aa40594be0d954e1266a59b8099169df53ec2083f4546a0427" + }, + { + "blockNum": 1415, + "blockId": "00000587667dcf106c3d8e435000962b832fc015d0954982afcf8b812df66e56" + }, + { + "blockNum": 1416, + "blockId": "00000588d688985f3d99723bfbe1fe4ef0f39af96f83c3003d34d686dac6e47f" + }, + { + "blockNum": 1417, + "blockId": "000005896fc661f6c0582c833dc3a45af8fae15521aade4190006c37398e5aa8" + }, + { + "blockNum": 1418, + "blockId": "0000058ab2fe241475e9e9e126543a5da6a0bb2fd65bae4323d723bd8bed161c" + }, + { + "blockNum": 1419, + "blockId": "0000058b8b71b6bc0611aab4adb093e60a7db04892d5c3bd10021b7e9a2587cc" + }, + { + "blockNum": 1420, + "blockId": "0000058c0e4e7d55b6eac6a3d6f1d63c27eb42934f0bb1b19fe957ffa770ba2b" + }, + { + "blockNum": 1421, + "blockId": "0000058db41c7b9af84ac6cd2405303ba39069c8c8c3974ecd1e00219a2e928d" + }, + { + "blockNum": 1422, + "blockId": "0000058e15c194f065025c0ff8e474e82af45fa4c8a3687e0a8e8cb1cdf55ce6" + }, + { + "blockNum": 1423, + "blockId": "0000058f6111754d3dbc2b9e3d4d28d241783b295abac5c903f8baf49e267e38" + }, + { + "blockNum": 1424, + "blockId": "00000590e5ff5bc21a735565a28bb4ee12bf48728dc2250ad418abb4e227db17" + }, + { + "blockNum": 1425, + "blockId": "00000591ae3f660c08f507f699455f2558d9647c5c95fd10a177ffce9f31d564" + }, + { + "blockNum": 1426, + "blockId": "000005929b9e32dd0cdbe67ecf28a5a15060cd5b85e291dc42667764e46090cd" + }, + { + "blockNum": 1427, + "blockId": "0000059335b9317065e89ac7714b809f9081a8f013eef3d296e6f5902aff1a23" + }, + { + "blockNum": 1428, + "blockId": "00000594de7f410edab20c75b332beefa8f51bd4b3e729c7703fc759d9b18856" + }, + { + "blockNum": 1429, + "blockId": "00000595d9800dd563df5d1c6058082cbe6182fcb8a2120114b3b8d3f4b3bde4" + }, + { + "blockNum": 1430, + "blockId": "000005963d828e02ccd3fabffbb25fc4727d2b024d7d4f409cbdf3d820b6f8b4" + }, + { + "blockNum": 1431, + "blockId": "0000059708935df6e5928a75d97c768a10aad7a310ebe233e72ffe5fa5423070" + }, + { + "blockNum": 1432, + "blockId": "0000059897429483b12274f8388f97a47c3c74d55926826efe1d7633bd6d52b3" + }, + { + "blockNum": 1433, + "blockId": "00000599df26d9b26a969b586b00f9887e0d7f84f1f03ec000f8a0c9fa45d299" + }, + { + "blockNum": 1434, + "blockId": "0000059afdea428e70b8fee94eb0d47dafeec6e05ae27fd13c394e5a3f755bd5" + }, + { + "blockNum": 1435, + "blockId": "0000059b317e6c75900edfc66087ade055f5e9fd48a7172080a2e73a09876d88" + }, + { + "blockNum": 1436, + "blockId": "0000059c3644c7e46e7265e2f6b458cda091120f770ab1857196ee6094c340ec" + }, + { + "blockNum": 1437, + "blockId": "0000059deffd2f5e0cb42dac6b7c01fbd9cd4add2f590d04200c92f3b1582c98" + }, + { + "blockNum": 1438, + "blockId": "0000059ec024b288ca4ecb2d344cddd41e34e81be4b11af875b3b56bc3093b5a" + }, + { + "blockNum": 1439, + "blockId": "0000059f7f4c78d35dbf328ae0c2e4fb70a419bc24f7e668b137e862061f8409" + }, + { + "blockNum": 1440, + "blockId": "000005a0d70c71beb97fe8c91a637a0582e40137dbae10e55b90f6a2a9b08edd" + }, + { + "blockNum": 1441, + "blockId": "000005a19508529e754d251eff80763eea0af63bea5acbd28c3748731d54335e" + }, + { + "blockNum": 1442, + "blockId": "000005a240f3abba4afc6a1efedbb14abec5886a0b639ccd1aebc06d643a4d0e" + }, + { + "blockNum": 1443, + "blockId": "000005a3a6b5ac968716fef32b7d04506b3cf3e5691a4543438c8011d3d2f597" + }, + { + "blockNum": 1444, + "blockId": "000005a47f0d1bb4fff3563ae7032d7d18845cb5bbebbda7ba05e50cc1faadea" + }, + { + "blockNum": 1445, + "blockId": "000005a5430b6455bc77aa63c773ab202b62ebc9bff24b6c124bbfb0f0fe3aba" + }, + { + "blockNum": 1446, + "blockId": "000005a6495ea71a47a863493a43c3b8bd3f57b9f3f1e6292411a0bad8736411" + }, + { + "blockNum": 1447, + "blockId": "000005a72046b401ad6c7afbd72c2d637b7f61217a1e0476f214366e928ddd32" + }, + { + "blockNum": 1448, + "blockId": "000005a8b5a09ea6a6b75c33a1d1f8a412b4bd488529282e8791ffe094ccca17" + }, + { + "blockNum": 1449, + "blockId": "000005a90f6b09f201a7ed8c24c7f4ef771a0e516e9f1415b271d85bc7554c4b" + }, + { + "blockNum": 1450, + "blockId": "000005aa9f1b4066dd4e94e43514f6658aa6d404db02ee5bea78bbe28408e4ca" + }, + { + "blockNum": 1451, + "blockId": "000005abc31a477256bb4b4fa764735f19306cef23bf88666b8a8bd60f9b2707" + }, + { + "blockNum": 1452, + "blockId": "000005ac7fa0f791e0412da3aaba428238d23290c6c7d7996f3eca7798ee07f7" + }, + { + "blockNum": 1453, + "blockId": "000005adb973148e93c10dc0884ed3d17e55cd42b2b42360765808a343677a2d" + }, + { + "blockNum": 1454, + "blockId": "000005ae7a05e8e9e4bf7878c78c597e8fb3a4412410617498c01d4e53a244f7" + }, + { + "blockNum": 1455, + "blockId": "000005af022546deedfc4d1c2cc231f35ce4ccd794556fc3e684c52b0a5810b4" + }, + { + "blockNum": 1456, + "blockId": "000005b00619ff461d4b0634f8bbfd137f2f038193c40e4fc80efb42eb25a9d3" + }, + { + "blockNum": 1457, + "blockId": "000005b11bb5573bc04c28e9d18a2ee86e7393d70c14484d0f26caf922a606b5" + }, + { + "blockNum": 1458, + "blockId": "000005b223d92972ef4b079678064122b7153d72060007083f9feae838cec366" + }, + { + "blockNum": 1459, + "blockId": "000005b32506998ac8a19a8d9ff147d6eeb62c1987e27bb2246f3f4db2482514" + }, + { + "blockNum": 1460, + "blockId": "000005b43a76c336c157f6455e49fb50639493da27073979651db05042dd4e14" + }, + { + "blockNum": 1461, + "blockId": "000005b5af20273a98646b8244c0c2e4ded95cc039b48108ee03706f0dee56bc" + }, + { + "blockNum": 1462, + "blockId": "000005b65151d39ff8d63688652e2855291a8839e945bc8df09ab27687bce965" + }, + { + "blockNum": 1463, + "blockId": "000005b7d512fcc61b8a43892909d80a2ccc507c735520087864e10e72f93447" + }, + { + "blockNum": 1464, + "blockId": "000005b8d5e0d933ad52703ad1555253ad2788cc83749528a0c9e985c622d93d" + }, + { + "blockNum": 1465, + "blockId": "000005b987f9d9e4816d87394c260b51d8ab531aa0c03f3297fb408332a8a90d" + }, + { + "blockNum": 1466, + "blockId": "000005baf810e4f8ac74d10b6743e88cc8a6890283bb58c1d98aabf962f2abdc" + }, + { + "blockNum": 1467, + "blockId": "000005bbbe313f95fa3fef4d3a27dddb3e3b79d4de1ba13c1c4d61dced7c8ce7" + }, + { + "blockNum": 1468, + "blockId": "000005bc20aebb238e65e3d5bb9a50deb8ed64987900766ee6bed78e0a7408d8" + }, + { + "blockNum": 1469, + "blockId": "000005bda6a54a2042b20220cc137eb1407287423d91276445b8cc5bb60dc1a9" + }, + { + "blockNum": 1470, + "blockId": "000005be2bf9e2b1e0b8a8d78ec1df44ca133759b8658c5bee51e04b35b3f243" + }, + { + "blockNum": 1471, + "blockId": "000005bf7ca609b7adc1fba89b8c6dafc06ad9f8a65a580f72e59ae664290bb4" + }, + { + "blockNum": 1472, + "blockId": "000005c08b1626b659728557496f50eb4ab1d6a1ef1f365e74774ef1402f5344" + }, + { + "blockNum": 1473, + "blockId": "000005c1b5ebc616291af6ad4257398181f04e62cc13e69b7dcd4d93c1fdecce" + }, + { + "blockNum": 1474, + "blockId": "000005c20e15be0116b812708d87cbf20f64a8c70e9c14eb63ef3506f620ba4f" + }, + { + "blockNum": 1475, + "blockId": "000005c348e4aeb6435a2e33dba122e202efeb4c198eb09aefee74cbe9a687f9" + }, + { + "blockNum": 1476, + "blockId": "000005c494982d205b3b2e023bfe77b730633ac52809e9605adec38f41834fcc" + }, + { + "blockNum": 1477, + "blockId": "000005c51ce5d39dbdeb923a24beb606346ee885e799690d12364d9c362eb5f9" + }, + { + "blockNum": 1478, + "blockId": "000005c69c4e7642ef8fcd228a73ab99a52ba56032a7388e4e8146e67f045f34" + }, + { + "blockNum": 1479, + "blockId": "000005c758263648bd999289abd1849b523a29fab52d7211776ce45c21275e51" + }, + { + "blockNum": 1480, + "blockId": "000005c80e70aa1f4944440e41fc34d8fe11e9bad8dbde8d39270a523b13072b" + } + ], + "failedBlock": { + "blockId": "000004dcf4b10972816b2b1734552c35f33eb68d1834f0bc8fca102876f3d02d", + "blockNum": 1244, + "previousBlockId": "000004db125e7699dd83225a0d167fe47d1b292fbf0a685232d50e7ae8b4c7bb" + }, + "checkpoint": { + "blockNum": 1243, + "blockId": "000004db125e7699dd83225a0d167fe47d1b292fbf0a685232d50e7ae8b4c7bb" + }, + "change": { + "contract": "sysio.msgch", + "table": "attseq", + "abiDeployment": "000000de77fe7cb815625de908087f303e890cb1510e086889079a24b65401f9:sysio.msgch:5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "abiSha256": "5adef7ede21018b2891598858d2bb57cc9e06a5761ee7b794f15cf8b532db28b", + "scope": "", + "primaryKey": "wire-kv-v1:row:9ccd94e823fda51363bd4265ad618a909c4985c445078c79f8d030fe9697b71d:14389258105242393088:1067:0000000000000000", + "present": true, + "value": { + "id": "0", + "next": "5" + } + }, + "scope": "Reduced controlled-transport component input; original source identities, definition, binding and independent first-barrier plan row. No native proof or source authority is reconstructed." +} diff --git a/tests/fixtures/portable-state-worker/mongo-1244.md b/tests/fixtures/portable-state-worker/mongo-1244.md new file mode 100644 index 00000000..7110201a --- /dev/null +++ b/tests/fixtures/portable-state-worker/mongo-1244.md @@ -0,0 +1,18 @@ +# Recorded Mongo qualification feedback input + +`mongo-1244.json` is the source-bound input retained by the independent diagnosis of +HAPI #341. The LF-normalized tracked file has SHA256 `615033e1084a3d0cf39cd183887d1f7758004520f542ef8ddad9f49bdd1123b0`. +The original CRLF input has SHA256 `197b40161d5c8b2724426876bff8197fe32555a9b84dc8d0fa1558ef382c0052`; parsed content is identical. + +It retains the original 1..1480 checkpoint identities, the actual failed source at block 1244 and +its previous checkpoint 1243, invalid definition/binding, mapping input, earlier detached recovery, +and archive/source/oracle hashes from the frozen 29057aaa Node 26 capture. The original failed +physical sample was not captured and cannot be reconstructed from this file. The historical +interleaving remains unknown. + +The red-capable controller/runtime/adapter/auditor loop uses only controlled Mongo transport. +The sampling controls additionally use the existing healthy plan row, actual adapter-produced +metadata and real Fastify route. Cloned baseline documents are isolated transport fixtures. +No source proof, revalidation success, real-server durability, launch pin or qualification +acceptance is supplied by these records. Do not edit source positions or reason predicates to +make a control pass. diff --git a/tests/unit/portable-state-mongo-admission-red.mjs b/tests/unit/portable-state-mongo-admission-red.mjs new file mode 100644 index 00000000..ecaa4e5e --- /dev/null +++ b/tests/unit/portable-state-mongo-admission-red.mjs @@ -0,0 +1,72 @@ +/** Phase-1 controlled-transport feedback loop. No services, native proof, source grant or real Mongo durability. */ +import assert from 'node:assert/strict'; +import {readFileSync} from 'node:fs'; +import {databaseFixture} from '../../packages/backend-mongodb/tests/fixture.mjs'; +import {PortableStateController} from '../../build/indexer/projection/controller.js'; +import {DeclarativeProjectionRuntime} from '../../build/indexer/projection/runtime.js'; +import {resolvePortableStateConfiguration,portableStateBinding} from '../../build/indexer/projection/config.js'; +import {auditPortablePhysicalMongo} from '../../scripts/qualification/portable-state-worker-mongo.ts'; +import {assertNativeQualificationRuntime} from '../../scripts/qualification/native-node-runtime.mjs'; +assertNativeQualificationRuntime(); +const started=performance.now(),mode=process.argv[2]??'red';assert.ok(['red','characterize'].includes(mode)); +const input=JSON.parse(readFileSync(new URL('../fixtures/portable-state-worker/mongo-1244.json',import.meta.url))); +const {definition,binding,backend,source,failedBlock,checkpoint,change}=input; +const configuration=resolvePortableStateConfiguration({backend,projections:[definition]},binding.chainId); +assert.deepEqual(JSON.parse(JSON.stringify(portableStateBinding(configuration,definition,binding.chainId))),binding); +const fixture=databaseFixture(),adapter=fixture.adapter({backendId:backend.id,databaseName:backend.database}); +const runtime=await DeclarativeProjectionRuntime.create({adapter,definition,binding,genesis:{blockNum:0,blockId:'0'.repeat(64)},maximumPendingFrames:1}); +for(let n=1;n<=checkpoint.blockNum;n++)await adapter.apply({binding, + previous:{blockNum:n-1,blockId:n===1?'0'.repeat(64):source[n-2].blockId}, + block:{...source[n-1],previousBlockId:n===1?'0'.repeat(64):source[n-2].blockId},mutations:[]}); +const frame={chainId:binding.chainId,block:failedBlock,changes:[change]}; +await assert.rejects(runtime.process(frame),/Required source field is missing/); +const before=await adapter.recovery(binding);assert.deepEqual(before.checkpoint,checkpoint); +assert.match(before.pending.reason,/Required source field is missing/); + +// The audit reads the actual adapter-produced Map records, never hand-authored pending metadata. +// Only Mongo transport/session/server-identity methods are controlled; this is not physical-server evidence. +const replicaSet='h45rs_'+'1'.repeat(32); +const cursor=items=>{let maximum=Infinity;const c={sort(order){items=[...items].sort((a,b)=>String(a._id??a.name).localeCompare(String(b._id??b.name)));return c;}, + limit(n){maximum=n;return c;},async close(){},async *[Symbol.asyncIterator](){for(const item of items.slice(0,maximum))yield structuredClone(item);}};return c;}; +const map=(name,session)=>[...(session?.storage??fixture.storage).get(name)?.values()??[]]; +const auditDb={ + admin(){return{async command(command){return command.hello?{setName:replicaSet,isWritablePrimary:true, + me:'controlled-memory-only',primary:'controlled-memory-only',topologyVersion:{processId:'not-a-live-server'},maxWireVersion:25}:{version:'8.0.34',gitVersion:'controlled-memory-only'};}};}, + listCollections(){return cursor([...fixture.storage.keys()].map(name=>({name,type:'collection',options:{collation:{locale:'simple'}}})));}, + collection(name){return{find(_query,options){return cursor(map(name,options.session));},async countDocuments(_query,options){return map(name,options.session).length;}};} +}; +const auditClient={options:{directConnection:true,replicaSet,hosts:[{host:'127.0.0.1',port:35000}]}, + startSession(){return{storage:null,startTransaction(){this.storage=structuredClone(fixture.storage);},async abortTransaction(){},async endSession(){}};}, + db(){return auditDb;}}; +const audit=()=>auditPortablePhysicalMongo({client:auditClient,database:backend.database,backendId:backend.id,chainId:binding.chainId, + replicaSet,version:'8.0.34',through:input.actualBarrier,source,expectations:[{definition,binding,rows:[],checkpoint,failedBlock}]}); +const baseline=await audit();assert.equal(baseline.readOnly,true); +let notifyAdmission,releaseBoundary,revalidationCalls=0; +const admitted=new Promise(resolve=>{notifyAdmission=resolve;}),release=new Promise(resolve=>{releaseBoundary=resolve;}); +const progress=[]; +const controller=await PortableStateController.create({chainId:binding.chainId,configuration,adapter, + source:{async frame(number,actualDefinition,admit){assert.equal(number,failedBlock.blockNum);assert.equal(actualDefinition.id,definition.id); + await admit(failedBlock);notifyAdmission();await release;throw new Error('Probe released before returning any source proof');}, + async revalidate(){revalidationCalls++;assert.fail('This feedback loop must never manufacture a proof/revalidation success');}}, + onProgress(value){progress.push(value);}}); +const draining=controller.drain();await admitted; +const held=await adapter.recovery(binding);assert.deepEqual(held.checkpoint,checkpoint); +let auditError; +try{await audit();}catch(error){auditError=error;} +finally{releaseBoundary();await draining;await controller.stop();} +if(auditError){ + assert.ok(auditError instanceof assert.AssertionError,'The feedback loop must fail at the exact physical audit predicate'); + assert.match(auditError.message,/Required source field is missing/); + assert.match(auditError.message,/Canonical projection source admitted; durable application is pending/); + assert.match(held.pending.reason,/^Canonical projection source admitted; durable application is pending$/); +} +if(mode==='characterize')assert.ok(auditError,'Characterization control requires the current recorded failure pattern'); +await assert.rejects(runtime.process(frame),/Required source field is missing/); +const settled=await adapter.recovery(binding),after=await audit();assert.equal(after.readOnly,true); +assert.deepEqual(settled.checkpoint,checkpoint);assert.equal(revalidationCalls,0); +console.log(JSON.stringify({node:process.versions.node,mode,barrier:input.actualBarrier,checkpoint:checkpoint.blockNum, + initialReason:before.pending.reason,heldReason:held.pending.reason,settledReason:settled.pending.reason, + baselineAudit:'passed',heldAudit:auditError?'failed':'passed',settledAudit:'passed',auditError:auditError?{name:auditError.name,message:auditError.message,stack:auditError.stack}:null, + sourceProofsReturned:0,revalidationCalls,controllerProgress:progress.map(p=>({status:p.status,reason:p.reason})), + elapsedMs:performance.now()-started,controlledMongoTransport:true,actualMongo:false,sourceAuthority:false,fullWorkerQualification:false})); +if(mode==='red'&&auditError)throw auditError; diff --git a/tests/unit/portable-state-mongo-sampling-fixture.mjs b/tests/unit/portable-state-mongo-sampling-fixture.mjs new file mode 100644 index 00000000..a22a1bbb --- /dev/null +++ b/tests/unit/portable-state-mongo-sampling-fixture.mjs @@ -0,0 +1,100 @@ +/** Actual controller/runtime/adapter/API/auditor with controlled Mongo transport; no source proofs. */ +import assert from 'node:assert/strict'; +import {readFileSync} from 'node:fs'; +import Fastify from 'fastify'; +import {databaseFixture} from '../../packages/backend-mongodb/tests/fixture.mjs'; +import {PortableStateController} from '../../build/indexer/projection/controller.js'; +import {DeclarativeProjectionRuntime} from '../../build/indexer/projection/runtime.js'; +import {resolvePortableStateConfiguration, portableStateBinding} from '../../build/indexer/projection/config.js'; +import {createPortableStateReadGate} from '../../build/indexer/projection/production.js'; +import {createPortableStateQueryService} from '../../build/indexer/projection/query-service.js'; +import {portableStateQueryHandler} from '../../build/api/routes/v2-state/query/handler.js'; +import {auditPortablePhysicalMongo} from '../../scripts/qualification/portable-state-worker-mongo.ts'; + +export const recorded = JSON.parse(readFileSync(new URL('../fixtures/portable-state-worker/mongo-1244.json', import.meta.url))); +const template = JSON.parse(readFileSync(new URL('../fixtures/portable-state-worker/plan.template.json', import.meta.url))); +let baseline; +export async function mongoSamplingComponent() { + const {definition, binding, backend, source, failedBlock, checkpoint, change} = recorded; + const healthyDefinition = template.definitions[0]; + const configuration = resolvePortableStateConfiguration({backend, projections: [definition, healthyDefinition]}, binding.chainId); + assert.deepEqual(JSON.parse(JSON.stringify(portableStateBinding(configuration, definition, binding.chainId))), binding); + const healthyBinding = portableStateBinding(configuration, healthyDefinition, binding.chainId); + const fixture = databaseFixture(), adapter = fixture.adapter({backendId: backend.id, databaseName: backend.database}); + const frame = {chainId: binding.chainId, block: failedBlock, changes: [change]}; + if (baseline) for (const [name, rows] of structuredClone(baseline)) fixture.storage.set(name, rows); + const runtime = await DeclarativeProjectionRuntime.create({adapter, definition, binding, + genesis: {blockNum: 0, blockId: '0'.repeat(64)}, maximumPendingFrames: 1}); + if (!baseline) { + const healthy = await DeclarativeProjectionRuntime.create({adapter, definition: healthyDefinition, binding: healthyBinding, + genesis: {blockNum: 0, blockId: '0'.repeat(64)}, maximumPendingFrames: 1}); + for (let n = 1; n <= failedBlock.blockNum; n++) { + const block = {...source[n - 1], previousBlockId: n === 1 ? '0'.repeat(64) : source[n - 2].blockId}; + if (n <= checkpoint.blockNum) await adapter.apply({binding, previous: {blockNum: n - 1, blockId: block.previousBlockId}, block, mutations: []}); + await healthy.process({chainId: binding.chainId, block, changes: n === failedBlock.blockNum ? [change] : []}); + } + await assert.rejects(runtime.process(frame), /Required source field is missing/); + baseline = structuredClone(fixture.storage); + } + const replicaSet = 'h45rs_' + '1'.repeat(32), state = {metadataReads: 0, hellos: 0, calls: [], beforeMetadata: undefined, + beforeCount: undefined, beforeRows: undefined, changeHello: undefined, changeCollections: undefined, largeBuild: false}; + const values = (name, session) => [...(session?.storage ?? fixture.storage).get(name)?.values() ?? []]; + const cursor = (get, before = async () => {}) => { + let maximum = Infinity; + const c = {sort() {return c;}, limit(value) {maximum = value; return c;}, async close() {}, + async *[Symbol.asyncIterator]() {await before(); for (const item of get().slice(0, maximum)) yield structuredClone(item);}}; + return c; + }; + const auditDb = {admin() {return {async command(command, options) { + state.calls.push({operation: command.hello ? 'hello' : 'buildInfo', options}); + if (command.hello) {const value = {setName: replicaSet, isWritablePrimary: true, me: 'controlled-memory-only', primary: 'controlled-memory-only', + topologyVersion: {processId: 'controlled-memory-only'}, maxWireVersion: 25}; state.hellos++; state.changeHello?.(value, state.hellos); return value;} + return {version: state.buildVersion ?? '8.0.34', gitVersion: 'controlled-memory-only', ...(state.largeBuild ? {noise: 'x'.repeat(1024 * 1024)} : {})}; + }};}, listCollections(_filter, options) { + state.calls.push({operation: 'listCollections', options}); + return cursor(() => {const values = [...fixture.storage.keys()].map(name => ({name, type: 'collection', options: {collation: {locale: 'simple'}}})); + state.changeCollections?.(values); return values;}); + }, collection(name) {return {find(_filter, options) { + state.calls.push({operation: 'find', name, options}); + return cursor(() => values(name, options.session), async () => { + if (name === 'h45_projection_metadata') {await state.beforeMetadata?.(++state.metadataReads, options.session); + if (options.session && !options.session.storage) options.session.storage = structuredClone(fixture.storage);} + else await state.beforeRows?.(name, options.session); + }); + }, async countDocuments(_filter, options) { + state.calls.push({operation: 'countDocuments', name, options}); await state.beforeCount?.(name, options.session); + return values(name, options.session).length; + }};}}; + const client = {options: {directConnection: true, replicaSet, hosts: [{host: '127.0.0.1', port: 35000}]}, + startSession() {return {storage: null, startTransaction(options) {state.calls.push({operation: 'startTransaction', options});}, + async abortTransaction(options) {state.calls.push({operation: 'abortTransaction', options});}, async endSession() {state.calls.push({operation: 'endSession'});}};}, db() {return auditDb;}}; + const input = {client, database: backend.database, backendId: backend.id, chainId: binding.chainId, replicaSet, + version: '8.0.34', through: recorded.actualBarrier, source, expectations: [ + {definition: healthyDefinition, binding: healthyBinding, checkpoint: source[1243], rows: template.barriers[0].rows[healthyDefinition.id]}, + {definition, binding, rows: [], checkpoint, failedBlock}]}; + let proofCalls = 0; + const noProof = async () => {proofCalls++; assert.fail('Controlled sampling never returns source proof authority');}; + const app = Fastify(); + const gate = createPortableStateReadGate({chainId: binding.chainId, configuration, adapter, + source: {open: noProof, revalidate: noProof, assertDefinition: noProof}}); + app.decorate('portableState', createPortableStateQueryService({chainId: binding.chainId, configuration, adapter, gate})); + app.post('/v2/state/query', portableStateQueryHandler(app)); + return {input, fixture, adapter, runtime, frame, binding, definition, healthyBinding, state, + async query() {const response = await app.inject({method: 'POST', url: '/v2/state/query', payload: { + projection: definition.id, query: {filter: [], limit: 1}}}); + return {status: response.statusCode, headers: response.headers, body: response.json()};}, + recovery: operationTimeoutMS => (operationTimeoutMS === undefined ? adapter : fixture.adapter({backendId: backend.id, + databaseName: backend.database, operationTimeoutMS})).recovery(binding), audit: options => auditPortablePhysicalMongo(input, options), + async settle() {await assert.rejects(runtime.process(frame), /Required source field is missing/);}, + metadata: () => [...fixture.storage.get('h45_projection_metadata').values()].find(value => value.binding.projectionId === binding.projectionId), + healthyMetadata: () => [...fixture.storage.get('h45_projection_metadata').values()].find(value => value.binding.projectionId === healthyBinding.projectionId), + async retry() { + let entered, release; const admitted = new Promise(resolve => {entered = resolve;}), held = new Promise(resolve => {release = resolve;}); + const config = resolvePortableStateConfiguration({backend, projections: [definition]}, binding.chainId); + const controller = await PortableStateController.create({chainId: binding.chainId, configuration: config, adapter, + source: {async frame(number, actual, admit) {assert.equal(number, failedBlock.blockNum); assert.equal(actual.id, definition.id); + await admit(failedBlock); entered(); await held; throw new Error('Controlled source boundary returns no proof');}, revalidate: noProof}}); + const draining = controller.drain(); await admitted; + return {async close() {release(); await draining; await controller.stop();}}; + }, async close() {await app.close(); assert.equal(proofCalls, 0);}}; +} diff --git a/tests/unit/portable-state-mongo-sampling.mjs b/tests/unit/portable-state-mongo-sampling.mjs new file mode 100644 index 00000000..db3b61f9 --- /dev/null +++ b/tests/unit/portable-state-mongo-sampling.mjs @@ -0,0 +1,304 @@ +/** Native controlled transport regression; no live Mongo, source proof or release qualification. */ +import assert from 'node:assert/strict'; +import {test} from 'node:test'; +import {mkdirSync, mkdtempSync, readFileSync} from 'node:fs'; +import {join} from 'node:path'; +import {fileURLToPath} from 'node:url'; +import {createHash} from 'node:crypto'; +import {mongoSamplingComponent, recorded} from './portable-state-mongo-sampling-fixture.mjs'; +import {samplePortableMongoIsolation, createPortableMongoSamples} from '../../scripts/qualification/portable-state-mongo-sampling.ts'; +import {isPortableMongoAdmissionTransition} from '../../scripts/qualification/portable-state-worker-mongo.ts'; +import {assertNativeQualificationRuntime} from '../../scripts/qualification/native-node-runtime.mjs'; +assertNativeQualificationRuntime(); +const captureRoot = new URL('../../out/mongo341/control-captures/', import.meta.url); mkdirSync(captureRoot, {recursive: true}); +const recorder = label => {const directory = mkdtempSync(join(fileURLToPath(captureRoot), label + '-')); + return {directory, capture: createPortableMongoSamples(directory)};}; +function options(component, capture, controls = {}) {let clock = 0; + return {input: component.input, budget: {deadline: 1000}, now: () => clock, + sleep: async milliseconds => {clock += milliseconds;}, recovery: component.recovery, query: component.query, + guard() {}, capture: sample => capture.record(sample), ...controls};} + +test('same-source fresh controller admission is retained, then a complete coherent mapping-error sample passes in the original phase', async () => { + const c = await mongoSamplingComponent(), {capture, directory} = recorder('transient'); + assert.equal(c.input.source[1242].blockId, recorded.checkpoint.blockId); + assert.equal(c.input.source[1243].blockId, recorded.failedBlock.blockId); + await c.audit(); c.state.calls.length = 0; const retry = await c.retry(); let closed = false, clock = 0, guards = 0; + try { + const sampled = await samplePortableMongoIsolation(options(c, capture, {guard() {guards++;}, now: () => clock, + sleep: async milliseconds => {clock += milliseconds; await retry.close(); closed = true; await c.settle();}})); + assert.equal(sampled.physical.readOnly, true); assert.match(sampled.isolation.recovery.pending.reason, /Required source field is missing/); + assert.equal(sampled.isolation.api.status, 503); assert.equal(guards, 4); + assert.deepEqual(capture.evidence.records.map(value => value.outcome), ['admission-transition', 'passed']); + assert.equal(capture.evidence.failedCaptures, 0); assert.equal(capture.evidence.rejected, 1); assert.equal(capture.evidence.accepted, 1); + const samples = capture.evidence.records.map(value => {const bytes = readFileSync(join(directory, value.file)); + assert.equal(createHash('sha256').update(bytes).digest('hex'), value.sha256); return JSON.parse(bytes);}); + assert.equal(samples[0].physical.complete, true); assert.ok(samples[0].physical.observations.serverAfter); + assert.equal(samples[0].logical.pending.reason, 'Canonical projection source admitted; durable application is pending'); + assert.match(samples[1].logical.pending.reason, /Required source field is missing/); + assert.equal(samples[0].deadline, samples[1].deadline); assert.equal(samples[0].logical.checkpoint.blockNum, 1243); + assert.equal(samples[0].logical.pending.block.blockNum, 1244); + assert.ok(c.state.calls.filter(value => value.options?.timeoutMS).every(value => value.options.timeoutMS <= 1000)); + } finally {if (!closed) await retry.close(); await c.close();} +}); + +test('a reason-only metadata snapshot transition is rejected and retained before a fresh coherent sample', async () => { + const c = await mongoSamplingComponent(), {capture, directory} = recorder('snapshot'); let retry, clock = 0; + c.state.beforeMetadata = async number => {if (number === 2) retry = await c.retry();}; + try { + await samplePortableMongoIsolation(options(c, capture, {now: () => clock, sleep: async milliseconds => { + clock += milliseconds; await retry.close(); retry = undefined; await c.settle();}})); + assert.deepEqual(capture.evidence.records.map(value => value.outcome), ['admission-transition', 'passed']); + const first = JSON.parse(readFileSync(join(directory, capture.evidence.records[0].file))); + assert.match(first.logical.pending.reason, /Required source field is missing/); + const obs = first.physical.observations, old = obs.metadataBefore.find(value => value.binding.projectionId === c.binding.projectionId), + fresh = obs.metadataSnapshot.find(value => value.binding.projectionId === c.binding.projectionId); + assert.match(old.pending.reason, /Required source field is missing/); + assert.equal(fresh.pending.reason, 'Canonical projection source admitted; durable application is pending'); + assert.ok(obs.serverAfter); assert.equal(first.physical.complete, true); + } finally {if (retry) await retry.close(); await c.close();} +}); + +test('permanent admission-pending fails in the original remaining deadline and retains every rejected sample', async () => { + const c = await mongoSamplingComponent(), {capture} = recorder('permanent'), retry = await c.retry(); let clock = 0; + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {budget: {deadline: 250}, now: () => clock, + sleep: async milliseconds => {clock += milliseconds;}})), /inherited isolation deadline exceeded/); + assert.equal(clock, 250); assert.equal(capture.evidence.rejected, 3); assert.equal(capture.evidence.attempts, 3); + assert.equal(capture.evidence.accepted, 0); assert.equal(capture.evidence.failedCaptures, 0); + } finally {await retry.close(); await c.close();} +}); + +test('an expired inherited budget performs no recovery, API, guard or physical work', async () => { + const c = await mongoSamplingComponent(), {capture} = recorder('expired'); + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {budget: {deadline: 0}, + recovery: async () => assert.fail('expired recovery'), query: async () => assert.fail('expired API'), + guard: () => assert.fail('expired guard')})), /inherited isolation deadline exceeded/); + assert.equal(c.state.calls.length, 0); assert.equal(capture.evidence.attempts, 0); + } finally {await c.close();} +}); + +const physicalNegatives = [ + ['binding-generation', c => {c.healthyMetadata().binding.generation = 'f'.repeat(64);}], + ['definition', c => {c.healthyMetadata().definition.fields[0].path = ['foreign'];}], + ['definition-digest', c => {c.healthyMetadata().definitionHash = 'f'.repeat(64);}], + ['storage-version', c => {c.healthyMetadata().storageVersion = 'foreign';}], + ['checkpoint', c => {c.healthyMetadata().checkpoint = recorded.source[1242];}], + ['not-initialized', c => {c.healthyMetadata().initialized = false;}], + ['gap', c => {c.healthyMetadata().gap = {reason: 'missing source'};}], + ['failed-source-id', c => {c.metadata().pending.block.blockId = 'f'.repeat(64);}], + ['failed-source-height', c => {c.metadata().pending.block.blockNum++;}], + ['failed-parent', c => {c.metadata().pending.block.previousBlockId = 'f'.repeat(64);}], + ['failed-digest', c => {c.metadata().pending.digest = 'f'.repeat(64);}], + ['wrong-reason', c => {c.metadata().pending.reason = 'A different failure must not retry';}], + ['metadata-field', c => {c.healthyMetadata().extra = 'foreign';}], + ['receipt-source', c => {c.healthyMetadata().receipts[0].blockId = 'f'.repeat(64);}], + ['receipt-digest', c => {c.healthyMetadata().receipts[0].digest = 'invalid';}], + ['receipt-order', c => {c.healthyMetadata().receipts.reverse();}], + ['receipt-end', c => {c.healthyMetadata().receipts.pop();}], + ['receipt-field', c => {c.healthyMetadata().receipts[0].extra = 1;}], + ['receipt-bound', c => {c.healthyMetadata().receipts = Array(4097).fill(c.healthyMetadata().receipts[0]);}], + ['extra-row', c => {const collection = [...c.fixture.storage].find(([name, rows]) => name !== 'h45_projection_metadata' && rows.size); + collection[1].set('foreign', {_id: 'foreign', value: {id: '2', next: '2'}});}], + ['missing-row', c => {const collection = [...c.fixture.storage].find(([name, rows]) => name !== 'h45_projection_metadata' && rows.size); collection[1].clear();}], + ['wrong-key', c => {const row = [...c.fixture.storage].filter(([name]) => name !== 'h45_projection_metadata').flatMap(([, rows]) => [...rows.values()])[0]; row._id = 'foreign';}], + ['wrong-value', c => {const row = [...c.fixture.storage].filter(([name]) => name !== 'h45_projection_metadata').flatMap(([, rows]) => [...rows.values()])[0]; row.value.next = '999';}], + ['row-field', c => {const row = [...c.fixture.storage].filter(([name]) => name !== 'h45_projection_metadata').flatMap(([, rows]) => [...rows.values()])[0]; row.extra = 'foreign';}], + ['namespace', c => {c.fixture.storage.set('foreign_collection', new Map());}], +]; +for (const [label, mutate] of physicalNegatives) test(`admission transition cannot hide independent physical ${label}`, async () => { + const c = await mongoSamplingComponent(), {capture, directory} = recorder(label), retry = await c.retry(); let sleeps = 0; + c.state.beforeMetadata = number => {if (number === 1) mutate(c);}; + if (label === 'namespace') {mutate(c); c.state.beforeMetadata = undefined;} + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {sleep: async () => {sleeps++;}}))); + assert.equal(sleeps, 0); assert.equal(capture.evidence.attempts, 1); assert.equal(capture.evidence.accepted, 0); + const failed = JSON.parse(readFileSync(join(directory, capture.evidence.records[0].file))); + assert.equal(failed.outcome, 'fatal'); assert.equal(failed.retryable, false); assert.equal(failed.physical.outcome, 'fatal'); + assert.ok(failed.error && failed.physical.error); + } finally {await retry.close(); await c.close();} +}); + +for (const [label, configure] of [ + ['server-process', c => {c.state.changeHello = (value, call) => {if (call === 2) value.topologyVersion.processId = 'foreign';};}], + ['server-set', c => {c.state.changeHello = value => {value.setName = 'foreign';};}], + ['server-primary', c => {c.state.changeHello = value => {value.isWritablePrimary = false;};}], + ['collation', c => {c.state.changeCollections = rows => {rows[0].options.collation.locale = 'en';};}], + ['capped', c => {c.state.changeCollections = rows => {rows[0].options.capped = true;};}], + ['view', c => {c.state.changeCollections = rows => {rows[0].type = 'view';};}], + ['document-byte-bound', c => {c.state.largeBuild = true;}], + ['aggregate-byte-bound', c => {c.state.changeCollections = rows => {for (const row of rows) row.options.noise = 'x'.repeat(900000);};}], + ['snapshot-read-failure', c => {c.state.beforeMetadata = number => {if (number === 2) throw new Error('snapshot read rejected');};}], + ['snapshot-checkpoint-transition', c => {c.state.beforeMetadata = number => {if (number === 2) c.healthyMetadata().checkpoint = recorded.source[1242];};}], + ['after-checkpoint-transition', c => {c.state.beforeMetadata = number => {if (number === 3) c.healthyMetadata().checkpoint = recorded.source[1242];};}], +]) test(`admission transition cannot hide independent ${label}`, async () => { + const c = await mongoSamplingComponent(), {capture} = recorder(label), retry = await c.retry(); let sleeps = 0; configure(c); + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {sleep: async () => {sleeps++;}}))); + assert.equal(sleeps, 0); assert.equal(capture.evidence.attempts, 1); assert.equal(capture.evidence.accepted, 0); + assert.equal(capture.evidence.records[0].outcome, 'fatal'); + } finally {await retry.close(); await c.close();} +}); + +test('logical wrong reason, API success, and original liveness guards are fatal without physical retry', async () => { + for (const variant of ['reason', 'api', 'guard']) { + const c = await mongoSamplingComponent(), {capture} = recorder('logical-' + variant); let sleeps = 0; + try { + const control = {sleep: async () => {sleeps++;}}; + if (variant === 'reason') control.recovery = async () => ({...await c.recovery(), pending: {...(await c.recovery()).pending, reason: 'foreign'}}); + if (variant === 'api') control.query = async () => ({...await c.query(), status: 200}); + if (variant === 'guard') control.guard = () => assert.fail('actual child exited or report capture error'); + await assert.rejects(samplePortableMongoIsolation(options(c, capture, control))); + assert.equal(sleeps, 0); assert.equal(c.state.calls.length, 0); assert.equal(capture.evidence.accepted, 0); + } finally {await c.close();} + } +}); + +test('physical completion and post-capture expiration never start a new deadline or pass the phase', async () => { + for (const phase of ['read', 'capture']) { + const c = await mongoSamplingComponent(), {capture} = recorder('expiry-' + phase); let clock = 0; + if (phase === 'read') c.state.beforeMetadata = number => {if (number === 2) clock = 1000;}; + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {now: () => clock, + capture: sample => {capture.record(sample); if (phase === 'capture') clock = 1000;}})), /inherited isolation deadline exceeded/); + assert.equal(clock, 1000); assert.equal(capture.evidence.attempts, 1); + if (phase === 'read') assert.equal(capture.evidence.accepted, 0); + } finally {await c.close();} + } +}); + +test('record count exhaustion and file collision are explicit capture failures with all earlier records intact', async () => { + const {capture} = recorder('capture-exhausted'); const sample = {schemaVersion: 1, attempt: 1, through: 1244, + deadline: 1000, started: 0, completed: 0, outcome: 'admission-transition', retryable: true}; + for (let i = 0; i < 64; i++) capture.record(sample); + assert.throws(() => capture.record(sample), /record budget exhausted/); + assert.equal(capture.evidence.records.length, 64); assert.equal(capture.evidence.rejected, 64); + assert.equal(capture.evidence.attempts, 65); assert.equal(capture.evidence.failedCaptures, 1); + const original = recorder('capture-collision'); original.capture.record(sample); + const again = createPortableMongoSamples(original.directory); + assert.throws(() => again.record(sample), /EEXIST/); assert.equal(again.evidence.failedCaptures, 1); + assert.equal(again.evidence.records.length, 0); +}); + +test('a logical admission view cannot borrow a later physical required-field view for immediate success', async () => { + const c = await mongoSamplingComponent(), {capture, directory} = recorder('logical-transition'), retry = await c.retry(); + let clock = 0, queries = 0, closed = false; + try { + await samplePortableMongoIsolation(options(c, capture, {now: () => clock, query: async () => { + if (++queries === 1) {await retry.close(); closed = true; await c.settle();} return c.query();}, + sleep: async milliseconds => {clock += milliseconds;}})); + assert.deepEqual(capture.evidence.records.map(value => value.outcome), ['admission-transition', 'passed']); + const first = JSON.parse(readFileSync(join(directory, capture.evidence.records[0].file))); + assert.equal(first.physical.outcome, 'passed'); + assert.equal(first.logical.pending.reason, 'Canonical projection source admitted; durable application is pending'); + assert.equal(queries, 2); + } finally {if (!closed) await retry.close(); await c.close();} +}); + +test('a held actual adapter recovery read stays awaited, receives the remaining cap and cannot earn late acceptance', async () => { + const c = await mongoSamplingComponent(), {capture} = recorder('held-recovery'); let clock = 0, entered, release, apiCalls = 0, settled = false; + const started = new Promise(resolve => {entered = resolve;}), hold = new Promise(resolve => {release = resolve;}); + c.fixture.beforeFind = async (_name, opts) => {assert.equal(opts.timeoutMS, 75); entered(); await hold;}; + const pending = samplePortableMongoIsolation(options(c, capture, {budget: {deadline: 75}, now: () => clock, + query: async () => {apiCalls++; return c.query();}})); + pending.then(() => {settled = true;}, () => {settled = true;}); + try { + await started; await Promise.resolve(); assert.equal(settled, false); assert.equal(apiCalls, 0); assert.equal(c.state.calls.length, 0); + clock = 76; release(); await assert.rejects(pending, /inherited isolation deadline exceeded/); + assert.equal(settled, true); assert.equal(apiCalls, 0); assert.equal(c.state.calls.length, 0); + assert.equal(capture.evidence.attempts, 1); assert.equal(capture.evidence.accepted, 0); + } finally {release(); await c.close();} +}); + +test('a timeout-shaped rejection from the actual capped recovery adapter is fatal and retains its original cause', async () => { + const c = await mongoSamplingComponent(), {capture, directory} = recorder('timeout-recovery'); let sleeps = 0, apiCalls = 0; + const original = Object.assign(new Error('controlled recovery operation timed out'), {name: 'MongoOperationTimeoutError', code: 50}); + c.fixture.beforeFind = async (_name, opts) => {assert.equal(opts.timeoutMS, 25); throw original;}; + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {budget: {deadline: 25}, + query: async () => {apiCalls++; return c.query();}, sleep: async () => {sleeps++;}})), /MongoDB projection operation did not complete/); + assert.equal(apiCalls, 0); assert.equal(sleeps, 0); assert.equal(c.state.calls.length, 0); + const failed = JSON.parse(readFileSync(join(directory, capture.evidence.records[0].file))); + assert.equal(failed.outcome, 'fatal'); assert.equal(failed.error.cause.name, 'MongoOperationTimeoutError'); + assert.equal(failed.error.cause.code, 50); assert.equal(failed.error.cause.message, original.message); + } finally {await c.close();} +}); + +test('copied and stale transition errors cannot issue a retry classification for another physical sample', async () => { + const c = await mongoSamplingComponent(), retry = await c.retry(); let issued; + try { + await assert.rejects(c.audit(), error => {issued = error; return isPortableMongoAdmissionTransition(error);}); + assert.equal(isPortableMongoAdmissionTransition(Object.assign(new Error(issued.message), issued)), false); + assert.equal(isPortableMongoAdmissionTransition(JSON.parse(JSON.stringify(issued))), false); + c.state.metadataReads = 0; c.state.beforeMetadata = number => {if (number === 2) throw issued;}; + const {capture, directory} = recorder('stale-transition'); let sleeps = 0; + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {sleep: async () => {sleeps++;}})), error => error === issued); + assert.equal(sleeps, 0); assert.equal(capture.evidence.accepted, 0); + const failed = JSON.parse(readFileSync(join(directory, capture.evidence.records[0].file))); + assert.equal(failed.outcome, 'fatal'); assert.equal(failed.physical.outcome, 'fatal'); assert.equal(failed.physical.complete, false); + } finally {await retry.close(); await c.close();} +}); + +test('bounded per-record/aggregate bytes and serialization failures retain their explicit incomplete-capture counters', () => { + const sample = {schemaVersion: 1, attempt: 1, through: 1244, deadline: 1000, started: 0, outcome: 'fatal', retryable: false}; + const oversized = recorder('oversized-record'); + assert.throws(() => oversized.capture.record({...sample, error: {message: 'x'.repeat(8 * 1024 * 1024)}}), /record byte budget exhausted/); + assert.equal(oversized.capture.evidence.failedCaptures, 1); assert.equal(oversized.capture.evidence.records.length, 0); + const aggregate = recorder('aggregate-record'), bounded = {...sample, error: {message: 'x'.repeat(7.5 * 1024 * 1024)}}; + for (let i = 0; i < 8; i++) aggregate.capture.record(bounded); + assert.throws(() => aggregate.capture.record(bounded), /total byte budget exhausted/); + assert.equal(aggregate.capture.evidence.failedCaptures, 1); assert.equal(aggregate.capture.evidence.records.length, 8); + const cyclic = recorder('cyclic-record'), error = {}; error.self = error; + assert.throws(() => cyclic.capture.record({...sample, error})); + assert.equal(cyclic.capture.evidence.failedCaptures, 1); assert.equal(cyclic.capture.evidence.records.length, 0); +}); + +test('a capture failure during a physical admission transition stops before any retry or late acceptance', async () => { + const c = await mongoSamplingComponent(), retry = await c.retry(), original = recorder('pipeline-collision'); let sleeps = 0; + original.capture.record({schemaVersion: 1, attempt: 0, through: 1244, deadline: 1000, started: 0, outcome: 'sentinel', retryable: false}); + const capture = createPortableMongoSamples(original.directory); + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {sleep: async () => {sleeps++;}})), /EEXIST/); + assert.equal(sleeps, 0); assert.equal(capture.evidence.failedCaptures, 1); assert.equal(capture.evidence.accepted, 0); + assert.equal(original.capture.evidence.records.length, 1); + } finally {await retry.close(); await c.close();} +}); + +test('each logical identity/source/digest invariant and unavailable API field stays fatal before physical work', async () => { + const variants = ['binding', 'checkpoint', 'source', 'digest', 'initialized', 'gap', 'retryable', 'retry-after', 'state-header', 'rows']; + for (const variant of variants) { + const c = await mongoSamplingComponent(), {capture} = recorder('logical-' + variant); let sleeps = 0; + const control = {sleep: async () => {sleeps++;}}; + if (variants.indexOf(variant) < 6) control.recovery = async timeout => { + const value = await c.recovery(timeout); + if (variant === 'binding') value.binding.generation = 'f'.repeat(64); + if (variant === 'checkpoint') value.checkpoint.blockId = 'f'.repeat(64); + if (variant === 'source') value.pending.block.blockId = 'f'.repeat(64); + if (variant === 'digest') value.pending.digest = 'f'.repeat(64); + if (variant === 'initialized') value.initialized = false; + if (variant === 'gap') value.gap = {reason: 'foreign'}; + return value; + }; + else control.query = async () => {const value = await c.query(); + if (variant === 'retryable') value.body.retryable = false; + if (variant === 'retry-after') value.headers['retry-after'] = '2'; + if (variant === 'state-header') value.headers['hyperion-state-block-num'] = '1243'; + if (variant === 'rows') value.body.rows = []; + return value; + }; + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, control))); + assert.equal(sleeps, 0); assert.equal(c.state.calls.length, 0); assert.equal(capture.evidence.accepted, 0); + } finally {await c.close();} + } +}); + +test('the post-physical liveness guard cannot be bypassed by a complete physical result', async () => { + const c = await mongoSamplingComponent(), {capture, directory} = recorder('after-guard'); let guards = 0; + try { + await assert.rejects(samplePortableMongoIsolation(options(c, capture, {guard() {if (++guards === 2) assert.fail('actual child exited after physical read');}})), /actual child exited/); + const failed = JSON.parse(readFileSync(join(directory, capture.evidence.records[0].file))); + assert.equal(failed.physical.complete, true); assert.equal(failed.physical.outcome, 'passed'); assert.equal(failed.outcome, 'fatal'); + assert.equal(capture.evidence.accepted, 0); + } finally {await c.close();} +});