footprintjs 9.45.0 → 9.46.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +10 -10
- package/dist/esm/lib/decide/evaluator.js +2 -2
- package/dist/esm/lib/decide/evidence.js +2 -2
- package/dist/esm/lib/engine/handlers/servedPause.js +2 -2
- package/dist/esm/lib/memory/RecordFrame.d.ts +232 -0
- package/dist/esm/lib/memory/RecordFrame.js +296 -0
- package/dist/esm/lib/memory/SharedMemory.d.ts +1 -1
- package/dist/esm/lib/memory/SharedMemory.js +2 -2
- package/dist/esm/lib/memory/StageContext.d.ts +71 -155
- package/dist/esm/lib/memory/StageContext.js +130 -285
- package/dist/esm/lib/memory/TransactionBuffer.d.ts +2 -2
- package/dist/esm/lib/memory/TransactionBuffer.js +3 -3
- package/dist/esm/lib/memory/borrowedMutation.d.ts +1 -1
- package/dist/esm/lib/memory/borrowedMutation.js +2 -2
- package/dist/esm/lib/memory/honesty.d.ts +4 -3
- package/dist/esm/lib/memory/honesty.js +5 -4
- package/dist/esm/lib/memory/index.d.ts +4 -2
- package/dist/esm/lib/memory/index.js +6 -4
- package/dist/esm/lib/memory/placeholders.d.ts +23 -28
- package/dist/esm/lib/memory/placeholders.js +24 -29
- package/dist/esm/lib/memory/recordCommit.d.ts +5 -3
- package/dist/esm/lib/memory/recordCommit.js +7 -5
- package/dist/esm/lib/memory/redaction.d.ts +78 -40
- package/dist/esm/lib/memory/redaction.js +130 -64
- package/dist/esm/lib/memory/runAddress.d.ts +20 -0
- package/dist/esm/lib/memory/runAddress.js +25 -0
- package/dist/esm/lib/memory/scrub.d.ts +51 -0
- package/dist/esm/lib/memory/scrub.js +72 -0
- package/dist/esm/lib/memory/utils.d.ts +3 -3
- package/dist/esm/lib/memory/utils.js +4 -4
- package/dist/esm/lib/reactive/structuralWrite.d.ts +1 -1
- package/dist/esm/lib/reactive/structuralWrite.js +2 -2
- package/dist/lib/decide/evaluator.js +3 -3
- package/dist/lib/decide/evidence.js +3 -3
- package/dist/lib/engine/handlers/servedPause.js +3 -3
- package/dist/lib/memory/RecordFrame.js +300 -0
- package/dist/lib/memory/SharedMemory.js +2 -2
- package/dist/lib/memory/StageContext.js +134 -289
- package/dist/lib/memory/TransactionBuffer.js +3 -3
- package/dist/lib/memory/borrowedMutation.js +2 -2
- package/dist/lib/memory/honesty.js +5 -4
- package/dist/lib/memory/index.js +6 -4
- package/dist/lib/memory/placeholders.js +25 -30
- package/dist/lib/memory/recordCommit.js +9 -7
- package/dist/lib/memory/redaction.js +144 -75
- package/dist/lib/memory/runAddress.js +29 -0
- package/dist/lib/memory/scrub.js +77 -0
- package/dist/lib/memory/utils.js +4 -4
- package/dist/lib/reactive/structuralWrite.js +2 -2
- package/dist/types/lib/memory/RecordFrame.d.ts +232 -0
- package/dist/types/lib/memory/SharedMemory.d.ts +1 -1
- package/dist/types/lib/memory/StageContext.d.ts +71 -155
- package/dist/types/lib/memory/TransactionBuffer.d.ts +2 -2
- package/dist/types/lib/memory/borrowedMutation.d.ts +1 -1
- package/dist/types/lib/memory/honesty.d.ts +4 -3
- package/dist/types/lib/memory/index.d.ts +4 -2
- package/dist/types/lib/memory/placeholders.d.ts +23 -28
- package/dist/types/lib/memory/recordCommit.d.ts +5 -3
- package/dist/types/lib/memory/redaction.d.ts +78 -40
- package/dist/types/lib/memory/runAddress.d.ts +20 -0
- package/dist/types/lib/memory/scrub.d.ts +51 -0
- package/dist/types/lib/memory/utils.d.ts +3 -3
- package/dist/types/lib/reactive/structuralWrite.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runAddress.ts — where a frame with a run id writes: the engine's run namespace (C2, a leaf of its own since C4, L4).
|
|
3
|
+
*
|
|
4
|
+
* The record layer never names a namespace: it takes the write ADDRESS as data, a path prefix
|
|
5
|
+
* (`RecordFrame · address`, `SharedMemory · getValue` / `setValue` / `updateValue`, the transaction
|
|
6
|
+
* buffer's `address`). The ENGINE decides it, from the one constant here: a frame with run id `c0`
|
|
7
|
+
* (a fork or selector child takes its own id at the top level) reads and writes at `runs/c0/…`, a
|
|
8
|
+
* frame without one at the root.
|
|
9
|
+
*
|
|
10
|
+
* WHY A LEAF. Two L4 files read the namespace and one imports the other: the frame
|
|
11
|
+
* (`StageContext`, which builds every address) and the redaction verdict (`redaction.ts` — a
|
|
12
|
+
* subflow mapper reading the namespace root reads every namespaced key; the mirror's seed scrubs
|
|
13
|
+
* every namespace). Until C4 the constant sat in `StageContext.ts` and the verdict, then an L2 file,
|
|
14
|
+
* spelled the namespace itself. This file imports nothing; `test/architecture/write-address.test.ts`
|
|
15
|
+
* pins it as the one spelling in the record's reach.
|
|
16
|
+
*/
|
|
17
|
+
/** The key run namespaces sit under — the engine's one spelling of it. */
|
|
18
|
+
export declare const RUN_NAMESPACE = "runs";
|
|
19
|
+
/** Where a frame with run id `runId` reads and writes: `['runs', <id>]`, or `[]` (the root) with none. */
|
|
20
|
+
export declare function runAddress(runId: string): readonly string[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runAddress.ts — where a frame with a run id writes: the engine's run namespace (C2, a leaf of its own since C4, L4).
|
|
3
|
+
*
|
|
4
|
+
* The record layer never names a namespace: it takes the write ADDRESS as data, a path prefix
|
|
5
|
+
* (`RecordFrame · address`, `SharedMemory · getValue` / `setValue` / `updateValue`, the transaction
|
|
6
|
+
* buffer's `address`). The ENGINE decides it, from the one constant here: a frame with run id `c0`
|
|
7
|
+
* (a fork or selector child takes its own id at the top level) reads and writes at `runs/c0/…`, a
|
|
8
|
+
* frame without one at the root.
|
|
9
|
+
*
|
|
10
|
+
* WHY A LEAF. Two L4 files read the namespace and one imports the other: the frame
|
|
11
|
+
* (`StageContext`, which builds every address) and the redaction verdict (`redaction.ts` — a
|
|
12
|
+
* subflow mapper reading the namespace root reads every namespaced key; the mirror's seed scrubs
|
|
13
|
+
* every namespace). Until C4 the constant sat in `StageContext.ts` and the verdict, then an L2 file,
|
|
14
|
+
* spelled the namespace itself. This file imports nothing; `test/architecture/write-address.test.ts`
|
|
15
|
+
* pins it as the one spelling in the record's reach.
|
|
16
|
+
*/
|
|
17
|
+
/** The key run namespaces sit under — the engine's one spelling of it. */
|
|
18
|
+
export const RUN_NAMESPACE = 'runs';
|
|
19
|
+
/** The root's address, shared by every frame without a run id (most of them). Never edited. */
|
|
20
|
+
const ROOT_ADDRESS = Object.freeze([]);
|
|
21
|
+
/** Where a frame with run id `runId` reads and writes: `['runs', <id>]`, or `[]` (the root) with none. */
|
|
22
|
+
export function runAddress(runId) {
|
|
23
|
+
return runId ? [RUN_NAMESPACE, runId] : ROOT_ADDRESS;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuQWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L3J1bkFkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFcEMsK0ZBQStGO0FBQy9GLE1BQU0sWUFBWSxHQUFzQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRTFELDBHQUEwRztBQUMxRyxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWE7SUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcnVuQWRkcmVzcy50cyDigJQgd2hlcmUgYSBmcmFtZSB3aXRoIGEgcnVuIGlkIHdyaXRlczogdGhlIGVuZ2luZSdzIHJ1biBuYW1lc3BhY2UgKEMyLCBhIGxlYWYgb2YgaXRzIG93biBzaW5jZSBDNCwgTDQpLlxuICpcbiAqIFRoZSByZWNvcmQgbGF5ZXIgbmV2ZXIgbmFtZXMgYSBuYW1lc3BhY2U6IGl0IHRha2VzIHRoZSB3cml0ZSBBRERSRVNTIGFzIGRhdGEsIGEgcGF0aCBwcmVmaXhcbiAqIChgUmVjb3JkRnJhbWUgwrcgYWRkcmVzc2AsIGBTaGFyZWRNZW1vcnkgwrcgZ2V0VmFsdWVgIC8gYHNldFZhbHVlYCAvIGB1cGRhdGVWYWx1ZWAsIHRoZSB0cmFuc2FjdGlvblxuICogYnVmZmVyJ3MgYGFkZHJlc3NgKS4gVGhlIEVOR0lORSBkZWNpZGVzIGl0LCBmcm9tIHRoZSBvbmUgY29uc3RhbnQgaGVyZTogYSBmcmFtZSB3aXRoIHJ1biBpZCBgYzBgXG4gKiAoYSBmb3JrIG9yIHNlbGVjdG9yIGNoaWxkIHRha2VzIGl0cyBvd24gaWQgYXQgdGhlIHRvcCBsZXZlbCkgcmVhZHMgYW5kIHdyaXRlcyBhdCBgcnVucy9jMC/igKZgLCBhXG4gKiBmcmFtZSB3aXRob3V0IG9uZSBhdCB0aGUgcm9vdC5cbiAqXG4gKiBXSFkgQSBMRUFGLiBUd28gTDQgZmlsZXMgcmVhZCB0aGUgbmFtZXNwYWNlIGFuZCBvbmUgaW1wb3J0cyB0aGUgb3RoZXI6IHRoZSBmcmFtZVxuICogKGBTdGFnZUNvbnRleHRgLCB3aGljaCBidWlsZHMgZXZlcnkgYWRkcmVzcykgYW5kIHRoZSByZWRhY3Rpb24gdmVyZGljdCAoYHJlZGFjdGlvbi50c2Ag4oCUIGFcbiAqIHN1YmZsb3cgbWFwcGVyIHJlYWRpbmcgdGhlIG5hbWVzcGFjZSByb290IHJlYWRzIGV2ZXJ5IG5hbWVzcGFjZWQga2V5OyB0aGUgbWlycm9yJ3Mgc2VlZCBzY3J1YnNcbiAqIGV2ZXJ5IG5hbWVzcGFjZSkuIFVudGlsIEM0IHRoZSBjb25zdGFudCBzYXQgaW4gYFN0YWdlQ29udGV4dC50c2AgYW5kIHRoZSB2ZXJkaWN0LCB0aGVuIGFuIEwyIGZpbGUsXG4gKiBzcGVsbGVkIHRoZSBuYW1lc3BhY2UgaXRzZWxmLiBUaGlzIGZpbGUgaW1wb3J0cyBub3RoaW5nOyBgdGVzdC9hcmNoaXRlY3R1cmUvd3JpdGUtYWRkcmVzcy50ZXN0LnRzYFxuICogcGlucyBpdCBhcyB0aGUgb25lIHNwZWxsaW5nIGluIHRoZSByZWNvcmQncyByZWFjaC5cbiAqL1xuXG4vKiogVGhlIGtleSBydW4gbmFtZXNwYWNlcyBzaXQgdW5kZXIg4oCUIHRoZSBlbmdpbmUncyBvbmUgc3BlbGxpbmcgb2YgaXQuICovXG5leHBvcnQgY29uc3QgUlVOX05BTUVTUEFDRSA9ICdydW5zJztcblxuLyoqIFRoZSByb290J3MgYWRkcmVzcywgc2hhcmVkIGJ5IGV2ZXJ5IGZyYW1lIHdpdGhvdXQgYSBydW4gaWQgKG1vc3Qgb2YgdGhlbSkuIE5ldmVyIGVkaXRlZC4gKi9cbmNvbnN0IFJPT1RfQUREUkVTUzogcmVhZG9ubHkgc3RyaW5nW10gPSBPYmplY3QuZnJlZXplKFtdKTtcblxuLyoqIFdoZXJlIGEgZnJhbWUgd2l0aCBydW4gaWQgYHJ1bklkYCByZWFkcyBhbmQgd3JpdGVzOiBgWydydW5zJywgPGlkPl1gLCBvciBgW11gICh0aGUgcm9vdCkgd2l0aCBub25lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkFkZHJlc3MocnVuSWQ6IHN0cmluZyk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHJ1bklkID8gW1JVTl9OQU1FU1BBQ0UsIHJ1bklkXSA6IFJPT1RfQUREUkVTUztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scrub.ts — the commit log's scrub: the placeholder at every redacted path of a patch (C4, L2).
|
|
3
|
+
*
|
|
4
|
+
* The RECORD's half of a redaction. A redacted path is DATA by the time it reaches here — the
|
|
5
|
+
* transaction buffer's `redactedPaths`, registered by `RecordFrame · write` from the scrub it was
|
|
6
|
+
* handed — and this file only writes `LOG_PLACEHOLDER` (`placeholders.ts`) where such a path holds
|
|
7
|
+
* a value. It never decides WHAT is secret: that is the engine's verdict (`redaction.ts`, L4 —
|
|
8
|
+
* `RedactionRule` and the write decision), which also owns the OTHER placeholder, the scope channel's
|
|
9
|
+
* `SCOPE_PLACEHOLDER`. Before C4 both halves lived in `redaction.ts`, so the record imported the
|
|
10
|
+
* engine's policy module to write a string.
|
|
11
|
+
*
|
|
12
|
+
* THE LAW:
|
|
13
|
+
* 1. A path is scrubbed only where it holds a DEFINED value — scrubbing never invents a field.
|
|
14
|
+
* 2. Paths are scrubbed in the set's order, against the tree as scrubbed so far: a path under one
|
|
15
|
+
* already scrubbed finds a string, not a container, and is left alone.
|
|
16
|
+
* 3. The input patch is never edited. `scrubPatch` copies only the spine of each scrubbed path
|
|
17
|
+
* (and nothing at all when nothing is scrubbed); `redactPatch` hands back a fresh deep copy.
|
|
18
|
+
*/
|
|
19
|
+
import type { MemoryPatch } from './types.js';
|
|
20
|
+
/**
|
|
21
|
+
* The commit log's scrub: `patch` with {@link LOG_PLACEHOLDER} at every path in `redactedPaths` that
|
|
22
|
+
* holds a defined value — the copy `recordCommit` records and feeds the redacted mirror.
|
|
23
|
+
*
|
|
24
|
+
* CLONE-FREE (9.33.0). The patch is the transaction buffer's commit-time payload, already the record's
|
|
25
|
+
* own copy (`TransactionBuffer · commit` clones each surviving path once; the buffer is dropped at
|
|
26
|
+
* commit), so the scrub copies only what it must not edit in place:
|
|
27
|
+
* - no path to scrub (no policy, no per-call mark — the common case) → `patch` ITSELF, no copy at all;
|
|
28
|
+
* - otherwise → a new root and a shallow copy of each container on a scrubbed path (`pathOps ·
|
|
29
|
+
* ownSpine`), every other subtree shared with `patch`. `patch` is never edited.
|
|
30
|
+
* The engine called the public {@link redactPatch} (a whole `structuredClone`) twice per commit before
|
|
31
|
+
* 9.33.0. The bytes are the same: a scrubbed path holds the placeholder, every other path the value the
|
|
32
|
+
* buffer cloned (pinned by the 9.18.1 / 9.19.1 redaction byte tests).
|
|
33
|
+
*
|
|
34
|
+
* Paths are scrubbed in the set's order, against the tree as scrubbed so far: a path under one already
|
|
35
|
+
* scrubbed finds a string, not a container, and is left alone (as before).
|
|
36
|
+
*
|
|
37
|
+
* INTERNAL — the result shares structure with `patch`. A caller outside the commit path wants
|
|
38
|
+
* {@link redactPatch}.
|
|
39
|
+
*
|
|
40
|
+
* @param redactedPaths DELIM-joined paths (`TransactionBuffer`'s `redactedPaths`; a bundle's
|
|
41
|
+
* `redactedPaths` array works too).
|
|
42
|
+
*/
|
|
43
|
+
export declare function scrubPatch(patch: MemoryPatch, redactedPaths: Iterable<string>): MemoryPatch;
|
|
44
|
+
/**
|
|
45
|
+
* Redacts sensitive values in a patch for logging/debugging — the PUBLIC scrub (`footprintjs/advanced`),
|
|
46
|
+
* its contract unchanged since 4.x: a fresh deep copy of `patch` (`structuredClone`) with
|
|
47
|
+
* {@link LOG_PLACEHOLDER} at every listed path that holds a defined value. Shares nothing with `patch`
|
|
48
|
+
* and never edits it. (It lived in `memory/utils.ts` until 9.33.0 and in `memory/redaction.ts` until
|
|
49
|
+
* C4; the engine's own commit path uses the clone-free {@link scrubPatch}.)
|
|
50
|
+
*/
|
|
51
|
+
export declare function redactPatch(patch: MemoryPatch, redactedSet: Set<string>): MemoryPatch;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scrub.ts — the commit log's scrub: the placeholder at every redacted path of a patch (C4, L2).
|
|
3
|
+
*
|
|
4
|
+
* The RECORD's half of a redaction. A redacted path is DATA by the time it reaches here — the
|
|
5
|
+
* transaction buffer's `redactedPaths`, registered by `RecordFrame · write` from the scrub it was
|
|
6
|
+
* handed — and this file only writes `LOG_PLACEHOLDER` (`placeholders.ts`) where such a path holds
|
|
7
|
+
* a value. It never decides WHAT is secret: that is the engine's verdict (`redaction.ts`, L4 —
|
|
8
|
+
* `RedactionRule` and the write decision), which also owns the OTHER placeholder, the scope channel's
|
|
9
|
+
* `SCOPE_PLACEHOLDER`. Before C4 both halves lived in `redaction.ts`, so the record imported the
|
|
10
|
+
* engine's policy module to write a string.
|
|
11
|
+
*
|
|
12
|
+
* THE LAW:
|
|
13
|
+
* 1. A path is scrubbed only where it holds a DEFINED value — scrubbing never invents a field.
|
|
14
|
+
* 2. Paths are scrubbed in the set's order, against the tree as scrubbed so far: a path under one
|
|
15
|
+
* already scrubbed finds a string, not a container, and is left alone.
|
|
16
|
+
* 3. The input patch is never edited. `scrubPatch` copies only the spine of each scrubbed path
|
|
17
|
+
* (and nothing at all when nothing is scrubbed); `redactPatch` hands back a fresh deep copy.
|
|
18
|
+
*/
|
|
19
|
+
import { nativeGet, nativeHas, nativeSet, ownedRootOf, ownSpine } from './pathOps.js';
|
|
20
|
+
import { DELIM } from './paths.js';
|
|
21
|
+
import { LOG_PLACEHOLDER } from './placeholders.js';
|
|
22
|
+
/**
|
|
23
|
+
* The commit log's scrub: `patch` with {@link LOG_PLACEHOLDER} at every path in `redactedPaths` that
|
|
24
|
+
* holds a defined value — the copy `recordCommit` records and feeds the redacted mirror.
|
|
25
|
+
*
|
|
26
|
+
* CLONE-FREE (9.33.0). The patch is the transaction buffer's commit-time payload, already the record's
|
|
27
|
+
* own copy (`TransactionBuffer · commit` clones each surviving path once; the buffer is dropped at
|
|
28
|
+
* commit), so the scrub copies only what it must not edit in place:
|
|
29
|
+
* - no path to scrub (no policy, no per-call mark — the common case) → `patch` ITSELF, no copy at all;
|
|
30
|
+
* - otherwise → a new root and a shallow copy of each container on a scrubbed path (`pathOps ·
|
|
31
|
+
* ownSpine`), every other subtree shared with `patch`. `patch` is never edited.
|
|
32
|
+
* The engine called the public {@link redactPatch} (a whole `structuredClone`) twice per commit before
|
|
33
|
+
* 9.33.0. The bytes are the same: a scrubbed path holds the placeholder, every other path the value the
|
|
34
|
+
* buffer cloned (pinned by the 9.18.1 / 9.19.1 redaction byte tests).
|
|
35
|
+
*
|
|
36
|
+
* Paths are scrubbed in the set's order, against the tree as scrubbed so far: a path under one already
|
|
37
|
+
* scrubbed finds a string, not a container, and is left alone (as before).
|
|
38
|
+
*
|
|
39
|
+
* INTERNAL — the result shares structure with `patch`. A caller outside the commit path wants
|
|
40
|
+
* {@link redactPatch}.
|
|
41
|
+
*
|
|
42
|
+
* @param redactedPaths DELIM-joined paths (`TransactionBuffer`'s `redactedPaths`; a bundle's
|
|
43
|
+
* `redactedPaths` array works too).
|
|
44
|
+
*/
|
|
45
|
+
export function scrubPatch(patch, redactedPaths) {
|
|
46
|
+
let out;
|
|
47
|
+
let owned;
|
|
48
|
+
for (const flat of redactedPaths) {
|
|
49
|
+
const segs = flat.split(DELIM);
|
|
50
|
+
const current = out ?? patch;
|
|
51
|
+
if (!nativeHas(current, segs) || nativeGet(current, segs) === undefined)
|
|
52
|
+
continue;
|
|
53
|
+
if (out === undefined) {
|
|
54
|
+
owned = new WeakSet();
|
|
55
|
+
out = ownedRootOf(patch, owned);
|
|
56
|
+
}
|
|
57
|
+
ownSpine(out, segs, owned);
|
|
58
|
+
nativeSet(out, segs, LOG_PLACEHOLDER);
|
|
59
|
+
}
|
|
60
|
+
return out ?? patch;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Redacts sensitive values in a patch for logging/debugging — the PUBLIC scrub (`footprintjs/advanced`),
|
|
64
|
+
* its contract unchanged since 4.x: a fresh deep copy of `patch` (`structuredClone`) with
|
|
65
|
+
* {@link LOG_PLACEHOLDER} at every listed path that holds a defined value. Shares nothing with `patch`
|
|
66
|
+
* and never edits it. (It lived in `memory/utils.ts` until 9.33.0 and in `memory/redaction.ts` until
|
|
67
|
+
* C4; the engine's own commit path uses the clone-free {@link scrubPatch}.)
|
|
68
|
+
*/
|
|
69
|
+
export function redactPatch(patch, redactedSet) {
|
|
70
|
+
return scrubPatch(structuredClone(patch), redactedSet);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NydWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS9zY3J1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBa0IsRUFBRSxhQUErQjtJQUM1RSxJQUFJLEdBQTRCLENBQUM7SUFDakMsSUFBSSxLQUFrQyxDQUFDO0lBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssU0FBUztZQUFFLFNBQVM7UUFDbEYsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsS0FBSyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7WUFDOUIsR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFnQixDQUFDO1FBQ2pELENBQUM7UUFDRCxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFNLENBQUMsQ0FBQztRQUM1QixTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQWtCLEVBQUUsV0FBd0I7SUFDdEUsT0FBTyxVQUFVLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHNjcnViLnRzIOKAlCB0aGUgY29tbWl0IGxvZydzIHNjcnViOiB0aGUgcGxhY2Vob2xkZXIgYXQgZXZlcnkgcmVkYWN0ZWQgcGF0aCBvZiBhIHBhdGNoIChDNCwgTDIpLlxuICpcbiAqIFRoZSBSRUNPUkQncyBoYWxmIG9mIGEgcmVkYWN0aW9uLiBBIHJlZGFjdGVkIHBhdGggaXMgREFUQSBieSB0aGUgdGltZSBpdCByZWFjaGVzIGhlcmUg4oCUIHRoZVxuICogdHJhbnNhY3Rpb24gYnVmZmVyJ3MgYHJlZGFjdGVkUGF0aHNgLCByZWdpc3RlcmVkIGJ5IGBSZWNvcmRGcmFtZSDCtyB3cml0ZWAgZnJvbSB0aGUgc2NydWIgaXQgd2FzXG4gKiBoYW5kZWQg4oCUIGFuZCB0aGlzIGZpbGUgb25seSB3cml0ZXMgYExPR19QTEFDRUhPTERFUmAgKGBwbGFjZWhvbGRlcnMudHNgKSB3aGVyZSBzdWNoIGEgcGF0aCBob2xkc1xuICogYSB2YWx1ZS4gSXQgbmV2ZXIgZGVjaWRlcyBXSEFUIGlzIHNlY3JldDogdGhhdCBpcyB0aGUgZW5naW5lJ3MgdmVyZGljdCAoYHJlZGFjdGlvbi50c2AsIEw0IOKAlFxuICogYFJlZGFjdGlvblJ1bGVgIGFuZCB0aGUgd3JpdGUgZGVjaXNpb24pLCB3aGljaCBhbHNvIG93bnMgdGhlIE9USEVSIHBsYWNlaG9sZGVyLCB0aGUgc2NvcGUgY2hhbm5lbCdzXG4gKiBgU0NPUEVfUExBQ0VIT0xERVJgLiBCZWZvcmUgQzQgYm90aCBoYWx2ZXMgbGl2ZWQgaW4gYHJlZGFjdGlvbi50c2AsIHNvIHRoZSByZWNvcmQgaW1wb3J0ZWQgdGhlXG4gKiBlbmdpbmUncyBwb2xpY3kgbW9kdWxlIHRvIHdyaXRlIGEgc3RyaW5nLlxuICpcbiAqIFRIRSBMQVc6XG4gKiAgIDEuIEEgcGF0aCBpcyBzY3J1YmJlZCBvbmx5IHdoZXJlIGl0IGhvbGRzIGEgREVGSU5FRCB2YWx1ZSDigJQgc2NydWJiaW5nIG5ldmVyIGludmVudHMgYSBmaWVsZC5cbiAqICAgMi4gUGF0aHMgYXJlIHNjcnViYmVkIGluIHRoZSBzZXQncyBvcmRlciwgYWdhaW5zdCB0aGUgdHJlZSBhcyBzY3J1YmJlZCBzbyBmYXI6IGEgcGF0aCB1bmRlciBvbmVcbiAqICAgICAgYWxyZWFkeSBzY3J1YmJlZCBmaW5kcyBhIHN0cmluZywgbm90IGEgY29udGFpbmVyLCBhbmQgaXMgbGVmdCBhbG9uZS5cbiAqICAgMy4gVGhlIGlucHV0IHBhdGNoIGlzIG5ldmVyIGVkaXRlZC4gYHNjcnViUGF0Y2hgIGNvcGllcyBvbmx5IHRoZSBzcGluZSBvZiBlYWNoIHNjcnViYmVkIHBhdGhcbiAqICAgICAgKGFuZCBub3RoaW5nIGF0IGFsbCB3aGVuIG5vdGhpbmcgaXMgc2NydWJiZWQpOyBgcmVkYWN0UGF0Y2hgIGhhbmRzIGJhY2sgYSBmcmVzaCBkZWVwIGNvcHkuXG4gKi9cblxuaW1wb3J0IHsgbmF0aXZlR2V0LCBuYXRpdmVIYXMsIG5hdGl2ZVNldCwgb3duZWRSb290T2YsIG93blNwaW5lIH0gZnJvbSAnLi9wYXRoT3BzLmpzJztcbmltcG9ydCB7IERFTElNIH0gZnJvbSAnLi9wYXRocy5qcyc7XG5pbXBvcnQgeyBMT0dfUExBQ0VIT0xERVIgfSBmcm9tICcuL3BsYWNlaG9sZGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1lbW9yeVBhdGNoIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogVGhlIGNvbW1pdCBsb2cncyBzY3J1YjogYHBhdGNoYCB3aXRoIHtAbGluayBMT0dfUExBQ0VIT0xERVJ9IGF0IGV2ZXJ5IHBhdGggaW4gYHJlZGFjdGVkUGF0aHNgIHRoYXRcbiAqIGhvbGRzIGEgZGVmaW5lZCB2YWx1ZSDigJQgdGhlIGNvcHkgYHJlY29yZENvbW1pdGAgcmVjb3JkcyBhbmQgZmVlZHMgdGhlIHJlZGFjdGVkIG1pcnJvci5cbiAqXG4gKiBDTE9ORS1GUkVFICg5LjMzLjApLiBUaGUgcGF0Y2ggaXMgdGhlIHRyYW5zYWN0aW9uIGJ1ZmZlcidzIGNvbW1pdC10aW1lIHBheWxvYWQsIGFscmVhZHkgdGhlIHJlY29yZCdzXG4gKiBvd24gY29weSAoYFRyYW5zYWN0aW9uQnVmZmVyIMK3IGNvbW1pdGAgY2xvbmVzIGVhY2ggc3Vydml2aW5nIHBhdGggb25jZTsgdGhlIGJ1ZmZlciBpcyBkcm9wcGVkIGF0XG4gKiBjb21taXQpLCBzbyB0aGUgc2NydWIgY29waWVzIG9ubHkgd2hhdCBpdCBtdXN0IG5vdCBlZGl0IGluIHBsYWNlOlxuICogICAtIG5vIHBhdGggdG8gc2NydWIgKG5vIHBvbGljeSwgbm8gcGVyLWNhbGwgbWFyayDigJQgdGhlIGNvbW1vbiBjYXNlKSDihpIgYHBhdGNoYCBJVFNFTEYsIG5vIGNvcHkgYXQgYWxsO1xuICogICAtIG90aGVyd2lzZSDihpIgYSBuZXcgcm9vdCBhbmQgYSBzaGFsbG93IGNvcHkgb2YgZWFjaCBjb250YWluZXIgb24gYSBzY3J1YmJlZCBwYXRoIChgcGF0aE9wcyDCt1xuICogICAgIG93blNwaW5lYCksIGV2ZXJ5IG90aGVyIHN1YnRyZWUgc2hhcmVkIHdpdGggYHBhdGNoYC4gYHBhdGNoYCBpcyBuZXZlciBlZGl0ZWQuXG4gKiBUaGUgZW5naW5lIGNhbGxlZCB0aGUgcHVibGljIHtAbGluayByZWRhY3RQYXRjaH0gKGEgd2hvbGUgYHN0cnVjdHVyZWRDbG9uZWApIHR3aWNlIHBlciBjb21taXQgYmVmb3JlXG4gKiA5LjMzLjAuIFRoZSBieXRlcyBhcmUgdGhlIHNhbWU6IGEgc2NydWJiZWQgcGF0aCBob2xkcyB0aGUgcGxhY2Vob2xkZXIsIGV2ZXJ5IG90aGVyIHBhdGggdGhlIHZhbHVlIHRoZVxuICogYnVmZmVyIGNsb25lZCAocGlubmVkIGJ5IHRoZSA5LjE4LjEgLyA5LjE5LjEgcmVkYWN0aW9uIGJ5dGUgdGVzdHMpLlxuICpcbiAqIFBhdGhzIGFyZSBzY3J1YmJlZCBpbiB0aGUgc2V0J3Mgb3JkZXIsIGFnYWluc3QgdGhlIHRyZWUgYXMgc2NydWJiZWQgc28gZmFyOiBhIHBhdGggdW5kZXIgb25lIGFscmVhZHlcbiAqIHNjcnViYmVkIGZpbmRzIGEgc3RyaW5nLCBub3QgYSBjb250YWluZXIsIGFuZCBpcyBsZWZ0IGFsb25lIChhcyBiZWZvcmUpLlxuICpcbiAqIElOVEVSTkFMIOKAlCB0aGUgcmVzdWx0IHNoYXJlcyBzdHJ1Y3R1cmUgd2l0aCBgcGF0Y2hgLiBBIGNhbGxlciBvdXRzaWRlIHRoZSBjb21taXQgcGF0aCB3YW50c1xuICoge0BsaW5rIHJlZGFjdFBhdGNofS5cbiAqXG4gKiBAcGFyYW0gcmVkYWN0ZWRQYXRocyBERUxJTS1qb2luZWQgcGF0aHMgKGBUcmFuc2FjdGlvbkJ1ZmZlcmAncyBgcmVkYWN0ZWRQYXRoc2A7IGEgYnVuZGxlJ3NcbiAqICAgYHJlZGFjdGVkUGF0aHNgIGFycmF5IHdvcmtzIHRvbykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3J1YlBhdGNoKHBhdGNoOiBNZW1vcnlQYXRjaCwgcmVkYWN0ZWRQYXRoczogSXRlcmFibGU8c3RyaW5nPik6IE1lbW9yeVBhdGNoIHtcbiAgbGV0IG91dDogTWVtb3J5UGF0Y2ggfCB1bmRlZmluZWQ7XG4gIGxldCBvd25lZDogV2Vha1NldDxvYmplY3Q+IHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IGZsYXQgb2YgcmVkYWN0ZWRQYXRocykge1xuICAgIGNvbnN0IHNlZ3MgPSBmbGF0LnNwbGl0KERFTElNKTtcbiAgICBjb25zdCBjdXJyZW50ID0gb3V0ID8/IHBhdGNoO1xuICAgIGlmICghbmF0aXZlSGFzKGN1cnJlbnQsIHNlZ3MpIHx8IG5hdGl2ZUdldChjdXJyZW50LCBzZWdzKSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICBpZiAob3V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG93bmVkID0gbmV3IFdlYWtTZXQ8b2JqZWN0PigpO1xuICAgICAgb3V0ID0gb3duZWRSb290T2YocGF0Y2gsIG93bmVkKSBhcyBNZW1vcnlQYXRjaDtcbiAgICB9XG4gICAgb3duU3BpbmUob3V0LCBzZWdzLCBvd25lZCEpO1xuICAgIG5hdGl2ZVNldChvdXQsIHNlZ3MsIExPR19QTEFDRUhPTERFUik7XG4gIH1cbiAgcmV0dXJuIG91dCA/PyBwYXRjaDtcbn1cblxuLyoqXG4gKiBSZWRhY3RzIHNlbnNpdGl2ZSB2YWx1ZXMgaW4gYSBwYXRjaCBmb3IgbG9nZ2luZy9kZWJ1Z2dpbmcg4oCUIHRoZSBQVUJMSUMgc2NydWIgKGBmb290cHJpbnRqcy9hZHZhbmNlZGApLFxuICogaXRzIGNvbnRyYWN0IHVuY2hhbmdlZCBzaW5jZSA0Lng6IGEgZnJlc2ggZGVlcCBjb3B5IG9mIGBwYXRjaGAgKGBzdHJ1Y3R1cmVkQ2xvbmVgKSB3aXRoXG4gKiB7QGxpbmsgTE9HX1BMQUNFSE9MREVSfSBhdCBldmVyeSBsaXN0ZWQgcGF0aCB0aGF0IGhvbGRzIGEgZGVmaW5lZCB2YWx1ZS4gU2hhcmVzIG5vdGhpbmcgd2l0aCBgcGF0Y2hgXG4gKiBhbmQgbmV2ZXIgZWRpdHMgaXQuIChJdCBsaXZlZCBpbiBgbWVtb3J5L3V0aWxzLnRzYCB1bnRpbCA5LjMzLjAgYW5kIGluIGBtZW1vcnkvcmVkYWN0aW9uLnRzYCB1bnRpbFxuICogQzQ7IHRoZSBlbmdpbmUncyBvd24gY29tbWl0IHBhdGggdXNlcyB0aGUgY2xvbmUtZnJlZSB7QGxpbmsgc2NydWJQYXRjaH0uKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkYWN0UGF0Y2gocGF0Y2g6IE1lbW9yeVBhdGNoLCByZWRhY3RlZFNldDogU2V0PHN0cmluZz4pOiBNZW1vcnlQYXRjaCB7XG4gIHJldHVybiBzY3J1YlBhdGNoKHN0cnVjdHVyZWRDbG9uZShwYXRjaCksIHJlZGFjdGVkU2V0KTtcbn1cbiJdfQ==
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* (`paths.ts`), structural equality (`equality.ts`) and the union merge
|
|
10
10
|
* (`merge.ts`) at L0, and the verb law (`verbs.ts`) at L1 — `applySmartMerge`,
|
|
11
11
|
* `nextGeneration`, `applySmartMergeInto`, `dryFold`, `supersededByNextSet`.
|
|
12
|
-
* The log's scrub, `redactPatch`, moved
|
|
12
|
+
* The log's scrub, `redactPatch`, moved out in 9.33.0; it is the record's own, `scrub.ts` (C4).
|
|
13
13
|
* The writers take an ADDRESS, a path prefix their caller computed, and never
|
|
14
|
-
* name one (C2: the engine decides where a stage writes, `
|
|
14
|
+
* name one (C2: the engine decides where a stage writes, `runAddress.ts · runAddress`).
|
|
15
15
|
* Zero external dependencies.
|
|
16
16
|
*/
|
|
17
17
|
export { deepEqual } from './equality.js';
|
|
@@ -25,7 +25,7 @@ type NestedObject = {
|
|
|
25
25
|
* The two places a value at `path` can sit: under `address` (`runPath`, absent
|
|
26
26
|
* for the root address `[]`) and at the root (`globalPath`). `address` is a
|
|
27
27
|
* path prefix the caller computed — for the engine, a frame's run namespace
|
|
28
|
-
* (`
|
|
28
|
+
* (`runAddress.ts · runAddress`, C2), held by its record frame (`RecordFrame · address`, C3).
|
|
29
29
|
*/
|
|
30
30
|
export declare function getRunAndGlobalPaths(address?: readonly string[], path?: (string | number)[]): {
|
|
31
31
|
runPath: (string | number)[] | undefined;
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* (`paths.ts`), structural equality (`equality.ts`) and the union merge
|
|
10
10
|
* (`merge.ts`) at L0, and the verb law (`verbs.ts`) at L1 — `applySmartMerge`,
|
|
11
11
|
* `nextGeneration`, `applySmartMergeInto`, `dryFold`, `supersededByNextSet`.
|
|
12
|
-
* The log's scrub, `redactPatch`, moved
|
|
12
|
+
* The log's scrub, `redactPatch`, moved out in 9.33.0; it is the record's own, `scrub.ts` (C4).
|
|
13
13
|
* The writers take an ADDRESS, a path prefix their caller computed, and never
|
|
14
|
-
* name one (C2: the engine decides where a stage writes, `
|
|
14
|
+
* name one (C2: the engine decides where a stage writes, `runAddress.ts · runAddress`).
|
|
15
15
|
* Zero external dependencies.
|
|
16
16
|
*/
|
|
17
17
|
import { nativeGet as _get } from './pathOps.js';
|
|
@@ -23,7 +23,7 @@ export { applySmartMerge, applySmartMergeInto, dryFold, nextGeneration, supersed
|
|
|
23
23
|
* The two places a value at `path` can sit: under `address` (`runPath`, absent
|
|
24
24
|
* for the root address `[]`) and at the root (`globalPath`). `address` is a
|
|
25
25
|
* path prefix the caller computed — for the engine, a frame's run namespace
|
|
26
|
-
* (`
|
|
26
|
+
* (`runAddress.ts · runAddress`, C2), held by its record frame (`RecordFrame · address`, C3).
|
|
27
27
|
*/
|
|
28
28
|
export function getRunAndGlobalPaths(address = [], path = []) {
|
|
29
29
|
return {
|
|
@@ -129,4 +129,4 @@ export function getNestedValue(root, path, field) {
|
|
|
129
129
|
}
|
|
130
130
|
return undefined;
|
|
131
131
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBd0MsTUFBTSxjQUFjLENBQUM7QUFJdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJaEg7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsVUFBNkIsRUFBRSxFQUFFLE9BQTRCLEVBQUU7SUFDbEcsT0FBTztRQUNMLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM3RSxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztLQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVELG9IQUFvSDtBQUNwSCxTQUFTLFNBQVMsQ0FBQyxPQUEwQjtJQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDM0MsTUFBTSxJQUFJLFNBQVMsQ0FDakIsd0RBQXdELE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FDckcsQ0FBQztBQUNKLENBQUM7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WUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO1NBQU0sSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0UsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNqRSxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBUyxFQUFFLElBQXlCLEVBQUUsS0FBdUI7SUFDMUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0QsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0QsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHV0aWxzLnRzIOKAlCBuZXN0ZWQtb2JqZWN0IGhlbHBlcnMgZm9yIHRoZSBoZWFwLCBhbmQgdGhlIG1lbW9yeSBsZWF2ZXMnIG9uZVxuICogcmUtZXhwb3J0IHN1cmZhY2UuXG4gKlxuICogVGhlIGhlbHBlcnMgaGVyZSAoYHNldE5lc3RlZFZhbHVlYCwgYHVwZGF0ZU5lc3RlZFZhbHVlYCwgYHVwZGF0ZVZhbHVlYCxcbiAqIGBnZXROZXN0ZWRWYWx1ZWApIHdhbGsgYSBuZXN0ZWQgb2JqZWN0IGJ5IHBhdGggd2l0aFxuICogcHJvdG90eXBlLXBvbGx1dGlvbiBwcm90ZWN0aW9uLiBFdmVyeXRoaW5nIGVsc2UgdGhpcyBmaWxlIHVzZWQgdG8gaG9sZCBoYXMgYW5cbiAqIG93bmVyIG9mIGl0cyBvd24gYW5kIGlzIHJlLWV4cG9ydGVkLCBzbyBubyBpbXBvcnRlciBtb3ZlZDogdGhlIHBhdGggY29kZWNcbiAqIChgcGF0aHMudHNgKSwgc3RydWN0dXJhbCBlcXVhbGl0eSAoYGVxdWFsaXR5LnRzYCkgYW5kIHRoZSB1bmlvbiBtZXJnZVxuICogKGBtZXJnZS50c2ApIGF0IEwwLCBhbmQgdGhlIHZlcmIgbGF3IChgdmVyYnMudHNgKSBhdCBMMSDigJQgYGFwcGx5U21hcnRNZXJnZWAsXG4gKiBgbmV4dEdlbmVyYXRpb25gLCBgYXBwbHlTbWFydE1lcmdlSW50b2AsIGBkcnlGb2xkYCwgYHN1cGVyc2VkZWRCeU5leHRTZXRgLlxuICogVGhlIGxvZydzIHNjcnViLCBgcmVkYWN0UGF0Y2hgLCBtb3ZlZCB0byBpdHMgb3duZXIgYHJlZGFjdGlvbi50c2AgaW4gOS4zMy4wLlxuICogVGhlIHdyaXRlcnMgdGFrZSBhbiBBRERSRVNTLCBhIHBhdGggcHJlZml4IHRoZWlyIGNhbGxlciBjb21wdXRlZCwgYW5kIG5ldmVyXG4gKiBuYW1lIG9uZSAoQzI6IHRoZSBlbmdpbmUgZGVjaWRlcyB3aGVyZSBhIHN0YWdlIHdyaXRlcywgYFN0YWdlQ29udGV4dCDCtyBhZGRyZXNzYCkuXG4gKiBaZXJvIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuXG5pbXBvcnQgeyBuYXRpdmVHZXQgYXMgX2dldCwgbmF0aXZlSGFzIGFzIF9oYXMsIG5hdGl2ZVNldCBhcyBfc2V0IH0gZnJvbSAnLi9wYXRoT3BzLmpzJztcbmltcG9ydCB7IERFTElNIH0gZnJvbSAnLi9wYXRocy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1lbW9yeVBhdGNoIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4vZXF1YWxpdHkuanMnO1xuZXhwb3J0IHsgZGVlcFNtYXJ0TWVyZ2UgfSBmcm9tICcuL21lcmdlLmpzJztcbmV4cG9ydCB7IERFTElNLCBub3JtYWxpc2VQYXRoLCBwYXRoU2VnbWVudHMgfSBmcm9tICcuL3BhdGhzLmpzJztcbmV4cG9ydCB7IGFwcGx5U21hcnRNZXJnZSwgYXBwbHlTbWFydE1lcmdlSW50bywgZHJ5Rm9sZCwgbmV4dEdlbmVyYXRpb24sIHN1cGVyc2VkZWRCeU5leHRTZXQgfSBmcm9tICcuL3ZlcmJzLmpzJztcblxudHlwZSBOZXN0ZWRPYmplY3QgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4vKipcbiAqIFRoZSB0d28gcGxhY2VzIGEgdmFsdWUgYXQgYHBhdGhgIGNhbiBzaXQ6IHVuZGVyIGBhZGRyZXNzYCAoYHJ1blBhdGhgLCBhYnNlbnRcbiAqIGZvciB0aGUgcm9vdCBhZGRyZXNzIGBbXWApIGFuZCBhdCB0aGUgcm9vdCAoYGdsb2JhbFBhdGhgKS4gYGFkZHJlc3NgIGlzIGFcbiAqIHBhdGggcHJlZml4IHRoZSBjYWxsZXIgY29tcHV0ZWQg4oCUIGZvciB0aGUgZW5naW5lLCBhIGZyYW1lJ3MgcnVuIG5hbWVzcGFjZVxuICogKGBTdGFnZUNvbnRleHQgwrcgYWRkcmVzc2AsIEMyKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bkFuZEdsb2JhbFBhdGhzKGFkZHJlc3M6IHJlYWRvbmx5IHN0cmluZ1tdID0gW10sIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10gPSBbXSkge1xuICByZXR1cm4ge1xuICAgIHJ1blBhdGg6IGFkZHJlc3NPZihhZGRyZXNzKS5sZW5ndGggPiAwID8gcGF0aFVuZGVyKGFkZHJlc3MsIHBhdGgpIDogdW5kZWZpbmVkLFxuICAgIGdsb2JhbFBhdGg6IFsuLi5wYXRoXSxcbiAgfTtcbn1cblxuLyoqIEFuIGFkZHJlc3MgaXMgYW4gYXJyYXkuIEEgcnVuIGlkIHN0aWxsIHBhc3NlZCBpbiBpdHMgcGxhY2UgKEMyKSBpcyByZWZ1c2VkLCBuZXZlciBzcHJlYWQgaW50byBpdHMgY2hhcmFjdGVycy4gKi9cbmZ1bmN0aW9uIGFkZHJlc3NPZihhZGRyZXNzOiByZWFkb25seSBzdHJpbmdbXSk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYWRkcmVzcykpIHJldHVybiBhZGRyZXNzO1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIGBmb290cHJpbnRqczogYW4gYWRkcmVzcyBpcyBhbiBhcnJheSBwYXRoIHByZWZpeCwgZ290ICR7YWRkcmVzcyA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBhZGRyZXNzfWAsXG4gICk7XG59XG5cbi8qKlxuICogYGFkZHJlc3NgIHRoZW4gYHBhdGhgLCBhcyBvbmUgbmV3IGFycmF5LiBBbiBpbmRleCBsb29wLCBiZWNhdXNlIHRoZSBkb3VibGVcbiAqIHNwcmVhZCBgWy4uLmFkZHJlc3MsIC4uLnBhdGhdYCBjb3N0cyB0d2ljZSBhcyBtdWNoIGFuZCBhIGZyYW1lIGJ1aWxkcyBvbmUgb25cbiAqIGV2ZXJ5IHJlYWQgaXQgc2VydmVzIGZyb20gbGl2ZSBzdGF0ZSAoYSBmb3JrIGNoaWxkIHJlYWRpbmcgYSByb290IGtleSkuXG4gKi9cbmZ1bmN0aW9uIHBhdGhVbmRlcihhZGRyZXNzOiByZWFkb25seSBzdHJpbmdbXSwgcGF0aDogcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlcilbXSk6IChzdHJpbmcgfCBudW1iZXIpW10ge1xuICBjb25zdCBvdXQgPSBuZXcgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPihhZGRyZXNzLmxlbmd0aCArIHBhdGgubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRyZXNzLmxlbmd0aDsgaSsrKSBvdXRbaV0gPSBhZGRyZXNzW2ldO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIG91dFthZGRyZXNzLmxlbmd0aCArIGldID0gcGF0aFtpXTtcbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGFpbmVyIGF0IGBhZGRyZXNzYCArIGBwYXRoYCBpbnNpZGUgYG9iamAsIGVhY2ggbWlzc2luZyBvbmUgY3JlYXRlZFxuICogb24gdGhlIHdheTogdGhlIG9uZSBBVCB0aGUgYWRkcmVzcyBmcm9tIGBkZWZhdWx0VmFsdWVzYCB3aGVuIGdpdmVuLCBldmVyeVxuICogb3RoZXIgb25lIGVtcHR5LiBUaGUgb25lIHdhbGsgYm90aCBuZXN0ZWQgd3JpdGVycyBzaGFyZS5cbiAqL1xuZnVuY3Rpb24gY29udGFpbmVyQXQoXG4gIG9iajogTmVzdGVkT2JqZWN0LFxuICBhZGRyZXNzOiByZWFkb25seSBzdHJpbmdbXSA9IFtdLFxuICBwYXRoOiByZWFkb25seSAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW10sXG4gIGRlZmF1bHRWYWx1ZXM/OiB1bmtub3duLFxuKTogTmVzdGVkT2JqZWN0IHtcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRoVW5kZXIoYWRkcmVzc09mKGFkZHJlc3MpLCBwYXRoKTtcbiAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBrZXkgPSBzZWdtZW50c1tpXTtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJyZW50LCBrZXkpKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSBpID09PSBhZGRyZXNzLmxlbmd0aCAtIDEgJiYgZGVmYXVsdFZhbHVlcyA/IGRlZmF1bHRWYWx1ZXMgOiB7fTtcbiAgICB9XG4gICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgfVxuICByZXR1cm4gY3VycmVudDtcbn1cblxuLyoqXG4gKiBTZXRzIGEgdmFsdWUgYXQgYSBuZXN0ZWQgcGF0aCB1bmRlciBgYWRkcmVzc2AsIGNyZWF0aW5nIGludGVybWVkaWF0ZSBvYmplY3RzIGFzIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE5lc3RlZFZhbHVlPFQ+KFxuICBvYmo6IE5lc3RlZE9iamVjdCxcbiAgYWRkcmVzczogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHBhdGg6IHN0cmluZ1tdLFxuICBmaWVsZDogc3RyaW5nLFxuICB2YWx1ZTogVCxcbiAgZGVmYXVsdFZhbHVlcz86IHVua25vd24sXG4pOiBOZXN0ZWRPYmplY3Qge1xuICBjb250YWluZXJBdChvYmosIGFkZHJlc3MsIHBhdGgsIGRlZmF1bHRWYWx1ZXMpW2ZpZWxkXSA9IHZhbHVlO1xuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIERlZXAtbWVyZ2VzIGEgdmFsdWUgaW50byB0aGUgb2JqZWN0IGF0IGEgbmVzdGVkIHBhdGggdW5kZXIgYGFkZHJlc3NgLlxuICogLSBBcnJheXM6IGNvbmNhdGVuYXRlXG4gKiAtIE9iamVjdHM6IHNoYWxsb3cgbWVyZ2UgYXQgZWFjaCBsZXZlbFxuICogLSBQcmltaXRpdmVzOiByZXBsYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVOZXN0ZWRWYWx1ZTxUPihcbiAgb2JqOiBhbnksXG4gIGFkZHJlc3M6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICBmaWVsZDogc3RyaW5nIHwgbnVtYmVyLFxuICB2YWx1ZTogVCxcbiAgZGVmYXVsdFZhbHVlcz86IHVua25vd24sXG4pOiBhbnkge1xuICB1cGRhdGVWYWx1ZShjb250YWluZXJBdChvYmosIGFkZHJlc3MsIHBhdGgsIGRlZmF1bHRWYWx1ZXMpLCBmaWVsZCwgdmFsdWUpO1xuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIEluLXBsYWNlIHZhbHVlIHVwZGF0ZSB3aXRoIG1lcmdlIHNlbWFudGljcy5cbiAqIC0gQXJyYXlzIChub24tZW1wdHkpOiBjb25jYXRlbmF0ZSBvbnRvIGV4aXN0aW5nXG4gKiAtIEFycmF5cyAoZW1wdHkpOiAgICAgZGlyZWN0IHJlcGxhY2Ug4oCUIHdyaXRpbmcgYFtdYCBjbGVhcnMgdGhlIGZpZWxkXG4gKiAtIE9iamVjdHMgKG5vbi1lbXB0eSk6IHNoYWxsb3cgbWVyZ2UgKHNwcmVhZClcbiAqIC0gT2JqZWN0cyAoZW1wdHkpOiAgICBkaXJlY3QgcmVwbGFjZSDigJQgd3JpdGluZyBge31gIGNsZWFycyB0aGUgZmllbGRcbiAqIC0gUHJpbWl0aXZlczogZGlyZWN0IGFzc2lnbm1lbnRcbiAqXG4gKiBOb3RlIG9uIGVtcHR5IGFycmF5czogYm90aCBgdmFsdWUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSlgIGFuZFxuICogYEFycmF5LmlzQXJyYXkodmFsdWUpYCBldmFsdWF0ZSB0aGUgc2FtZSBmb3IgYXJyYXlzIOKAlCBgW11gIGlzIHRydXRoeSBpblxuICogSmF2YVNjcmlwdCwgc28gdGhlIGAmJmAgZ3VhcmQgd2FzIG5ldmVyIHRoZSBpc3N1ZS4gVGhlIGFjdHVhbCBidWcgd2FzIHRoZVxuICogY29uY2F0IHBhdGg6IGBbLi4uY3VyLCAuLi5bXV1gIHNpbGVudGx5IHJldHVybmVkIGBjdXJgIHVuY2hhbmdlZCB3aGVuIGB2YWx1ZWBcbiAqIHdhcyBgW11gLCBtYWtpbmcgYHVwZGF0ZVZhbHVlKG9iaiwgJ3RhZ3MnLCBbXSlgIGEgbm8tb3AgaW5zdGVhZCBvZiBhIGNsZWFyLlxuICogVGhlIGZpeCBpcyB0aGUgZXhwbGljaXQgYHZhbHVlLmxlbmd0aCA9PT0gMGAgZWFybHktcmV0dXJuIGJyYW5jaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZhbHVlKG9iamVjdDogYW55LCBrZXk6IHN0cmluZyB8IG51bWJlciwgdmFsdWU6IGFueSk6IHZvaWQge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBvYmplY3Rba2V5XSA9IHZhbHVlOyAvLyBjbGVhcjogW10gcmVwbGFjZXMgd2hhdGV2ZXIgd2FzIHRoZXJlXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGN1ciA9IG9iamVjdFtrZXldIGFzIGFueTtcbiAgICAgIG9iamVjdFtrZXldID0gY3VyID09PSB1bmRlZmluZWQgPyB2YWx1ZSA6IFsuLi5jdXIsIC4uLnZhbHVlXTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSB7XG4gICAgY29uc3QgY3VyID0gb2JqZWN0W2tleV0gYXMgYW55O1xuICAgIG9iamVjdFtrZXldID0gY3VyID09PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHsgLi4uY3VyLCAuLi52YWx1ZSB9O1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIGEgdmFsdWUgYXQgYSBuZXN0ZWQgcGF0aCB3aXRoIHByb3RvdHlwZS1wb2xsdXRpb24gcHJvdGVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5lc3RlZFZhbHVlKHJvb3Q6IGFueSwgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXSwgZmllbGQ/OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkge1xuICBjb25zdCBub2RlID0gcGF0aCAmJiBwYXRoLmxlbmd0aCA+IDAgPyBfZ2V0KHJvb3QsIHBhdGgpIDogcm9vdDtcbiAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbm9kZTtcbiAgaWYgKG5vZGUgIT09IG51bGwgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChub2RlLCBmaWVsZCkpIHtcbiAgICByZXR1cm4gbm9kZVtmaWVsZF07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBd0MsTUFBTSxjQUFjLENBQUM7QUFJdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJaEg7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsVUFBNkIsRUFBRSxFQUFFLE9BQTRCLEVBQUU7SUFDbEcsT0FBTztRQUNMLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM3RSxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztLQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVELG9IQUFvSDtBQUNwSCxTQUFTLFNBQVMsQ0FBQyxPQUEwQjtJQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDM0MsTUFBTSxJQUFJLFNBQVMsQ0FDakIsd0RBQXdELE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FDckcsQ0FBQztBQUNKLENBQUM7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WUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO1NBQU0sSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0UsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNqRSxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBUyxFQUFFLElBQXlCLEVBQUUsS0FBdUI7SUFDMUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0QsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0QsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHV0aWxzLnRzIOKAlCBuZXN0ZWQtb2JqZWN0IGhlbHBlcnMgZm9yIHRoZSBoZWFwLCBhbmQgdGhlIG1lbW9yeSBsZWF2ZXMnIG9uZVxuICogcmUtZXhwb3J0IHN1cmZhY2UuXG4gKlxuICogVGhlIGhlbHBlcnMgaGVyZSAoYHNldE5lc3RlZFZhbHVlYCwgYHVwZGF0ZU5lc3RlZFZhbHVlYCwgYHVwZGF0ZVZhbHVlYCxcbiAqIGBnZXROZXN0ZWRWYWx1ZWApIHdhbGsgYSBuZXN0ZWQgb2JqZWN0IGJ5IHBhdGggd2l0aFxuICogcHJvdG90eXBlLXBvbGx1dGlvbiBwcm90ZWN0aW9uLiBFdmVyeXRoaW5nIGVsc2UgdGhpcyBmaWxlIHVzZWQgdG8gaG9sZCBoYXMgYW5cbiAqIG93bmVyIG9mIGl0cyBvd24gYW5kIGlzIHJlLWV4cG9ydGVkLCBzbyBubyBpbXBvcnRlciBtb3ZlZDogdGhlIHBhdGggY29kZWNcbiAqIChgcGF0aHMudHNgKSwgc3RydWN0dXJhbCBlcXVhbGl0eSAoYGVxdWFsaXR5LnRzYCkgYW5kIHRoZSB1bmlvbiBtZXJnZVxuICogKGBtZXJnZS50c2ApIGF0IEwwLCBhbmQgdGhlIHZlcmIgbGF3IChgdmVyYnMudHNgKSBhdCBMMSDigJQgYGFwcGx5U21hcnRNZXJnZWAsXG4gKiBgbmV4dEdlbmVyYXRpb25gLCBgYXBwbHlTbWFydE1lcmdlSW50b2AsIGBkcnlGb2xkYCwgYHN1cGVyc2VkZWRCeU5leHRTZXRgLlxuICogVGhlIGxvZydzIHNjcnViLCBgcmVkYWN0UGF0Y2hgLCBtb3ZlZCBvdXQgaW4gOS4zMy4wOyBpdCBpcyB0aGUgcmVjb3JkJ3Mgb3duLCBgc2NydWIudHNgIChDNCkuXG4gKiBUaGUgd3JpdGVycyB0YWtlIGFuIEFERFJFU1MsIGEgcGF0aCBwcmVmaXggdGhlaXIgY2FsbGVyIGNvbXB1dGVkLCBhbmQgbmV2ZXJcbiAqIG5hbWUgb25lIChDMjogdGhlIGVuZ2luZSBkZWNpZGVzIHdoZXJlIGEgc3RhZ2Ugd3JpdGVzLCBgcnVuQWRkcmVzcy50cyDCtyBydW5BZGRyZXNzYCkuXG4gKiBaZXJvIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuXG5pbXBvcnQgeyBuYXRpdmVHZXQgYXMgX2dldCwgbmF0aXZlSGFzIGFzIF9oYXMsIG5hdGl2ZVNldCBhcyBfc2V0IH0gZnJvbSAnLi9wYXRoT3BzLmpzJztcbmltcG9ydCB7IERFTElNIH0gZnJvbSAnLi9wYXRocy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1lbW9yeVBhdGNoIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4vZXF1YWxpdHkuanMnO1xuZXhwb3J0IHsgZGVlcFNtYXJ0TWVyZ2UgfSBmcm9tICcuL21lcmdlLmpzJztcbmV4cG9ydCB7IERFTElNLCBub3JtYWxpc2VQYXRoLCBwYXRoU2VnbWVudHMgfSBmcm9tICcuL3BhdGhzLmpzJztcbmV4cG9ydCB7IGFwcGx5U21hcnRNZXJnZSwgYXBwbHlTbWFydE1lcmdlSW50bywgZHJ5Rm9sZCwgbmV4dEdlbmVyYXRpb24sIHN1cGVyc2VkZWRCeU5leHRTZXQgfSBmcm9tICcuL3ZlcmJzLmpzJztcblxudHlwZSBOZXN0ZWRPYmplY3QgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4vKipcbiAqIFRoZSB0d28gcGxhY2VzIGEgdmFsdWUgYXQgYHBhdGhgIGNhbiBzaXQ6IHVuZGVyIGBhZGRyZXNzYCAoYHJ1blBhdGhgLCBhYnNlbnRcbiAqIGZvciB0aGUgcm9vdCBhZGRyZXNzIGBbXWApIGFuZCBhdCB0aGUgcm9vdCAoYGdsb2JhbFBhdGhgKS4gYGFkZHJlc3NgIGlzIGFcbiAqIHBhdGggcHJlZml4IHRoZSBjYWxsZXIgY29tcHV0ZWQg4oCUIGZvciB0aGUgZW5naW5lLCBhIGZyYW1lJ3MgcnVuIG5hbWVzcGFjZVxuICogKGBydW5BZGRyZXNzLnRzIMK3IHJ1bkFkZHJlc3NgLCBDMiksIGhlbGQgYnkgaXRzIHJlY29yZCBmcmFtZSAoYFJlY29yZEZyYW1lIMK3IGFkZHJlc3NgLCBDMykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSdW5BbmRHbG9iYWxQYXRocyhhZGRyZXNzOiByZWFkb25seSBzdHJpbmdbXSA9IFtdLCBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW10pIHtcbiAgcmV0dXJuIHtcbiAgICBydW5QYXRoOiBhZGRyZXNzT2YoYWRkcmVzcykubGVuZ3RoID4gMCA/IHBhdGhVbmRlcihhZGRyZXNzLCBwYXRoKSA6IHVuZGVmaW5lZCxcbiAgICBnbG9iYWxQYXRoOiBbLi4ucGF0aF0sXG4gIH07XG59XG5cbi8qKiBBbiBhZGRyZXNzIGlzIGFuIGFycmF5LiBBIHJ1biBpZCBzdGlsbCBwYXNzZWQgaW4gaXRzIHBsYWNlIChDMikgaXMgcmVmdXNlZCwgbmV2ZXIgc3ByZWFkIGludG8gaXRzIGNoYXJhY3RlcnMuICovXG5mdW5jdGlvbiBhZGRyZXNzT2YoYWRkcmVzczogcmVhZG9ubHkgc3RyaW5nW10pOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFkZHJlc3MpKSByZXR1cm4gYWRkcmVzcztcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBgZm9vdHByaW50anM6IGFuIGFkZHJlc3MgaXMgYW4gYXJyYXkgcGF0aCBwcmVmaXgsIGdvdCAke2FkZHJlc3MgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgYWRkcmVzc31gLFxuICApO1xufVxuXG4vKipcbiAqIGBhZGRyZXNzYCB0aGVuIGBwYXRoYCwgYXMgb25lIG5ldyBhcnJheS4gQW4gaW5kZXggbG9vcCwgYmVjYXVzZSB0aGUgZG91YmxlXG4gKiBzcHJlYWQgYFsuLi5hZGRyZXNzLCAuLi5wYXRoXWAgY29zdHMgdHdpY2UgYXMgbXVjaCBhbmQgYSBmcmFtZSBidWlsZHMgb25lIG9uXG4gKiBldmVyeSByZWFkIGl0IHNlcnZlcyBmcm9tIGxpdmUgc3RhdGUgKGEgZm9yayBjaGlsZCByZWFkaW5nIGEgcm9vdCBrZXkpLlxuICovXG5mdW5jdGlvbiBwYXRoVW5kZXIoYWRkcmVzczogcmVhZG9ubHkgc3RyaW5nW10sIHBhdGg6IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW10pOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcbiAgY29uc3Qgb3V0ID0gbmV3IEFycmF5PHN0cmluZyB8IG51bWJlcj4oYWRkcmVzcy5sZW5ndGggKyBwYXRoLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkcmVzcy5sZW5ndGg7IGkrKykgb3V0W2ldID0gYWRkcmVzc1tpXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSBvdXRbYWRkcmVzcy5sZW5ndGggKyBpXSA9IHBhdGhbaV07XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRhaW5lciBhdCBgYWRkcmVzc2AgKyBgcGF0aGAgaW5zaWRlIGBvYmpgLCBlYWNoIG1pc3Npbmcgb25lIGNyZWF0ZWRcbiAqIG9uIHRoZSB3YXk6IHRoZSBvbmUgQVQgdGhlIGFkZHJlc3MgZnJvbSBgZGVmYXVsdFZhbHVlc2Agd2hlbiBnaXZlbiwgZXZlcnlcbiAqIG90aGVyIG9uZSBlbXB0eS4gVGhlIG9uZSB3YWxrIGJvdGggbmVzdGVkIHdyaXRlcnMgc2hhcmUuXG4gKi9cbmZ1bmN0aW9uIGNvbnRhaW5lckF0KFxuICBvYmo6IE5lc3RlZE9iamVjdCxcbiAgYWRkcmVzczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXSxcbiAgcGF0aDogcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlcilbXSA9IFtdLFxuICBkZWZhdWx0VmFsdWVzPzogdW5rbm93bixcbik6IE5lc3RlZE9iamVjdCB7XG4gIGNvbnN0IHNlZ21lbnRzID0gcGF0aFVuZGVyKGFkZHJlc3NPZihhZGRyZXNzKSwgcGF0aCk7XG4gIGxldCBjdXJyZW50ID0gb2JqO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qga2V5ID0gc2VnbWVudHNbaV07XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY3VycmVudCwga2V5KSkge1xuICAgICAgY3VycmVudFtrZXldID0gaSA9PT0gYWRkcmVzcy5sZW5ndGggLSAxICYmIGRlZmF1bHRWYWx1ZXMgPyBkZWZhdWx0VmFsdWVzIDoge307XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG5cbi8qKlxuICogU2V0cyBhIHZhbHVlIGF0IGEgbmVzdGVkIHBhdGggdW5kZXIgYGFkZHJlc3NgLCBjcmVhdGluZyBpbnRlcm1lZGlhdGUgb2JqZWN0cyBhcyBuZWVkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXROZXN0ZWRWYWx1ZTxUPihcbiAgb2JqOiBOZXN0ZWRPYmplY3QsXG4gIGFkZHJlc3M6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBwYXRoOiBzdHJpbmdbXSxcbiAgZmllbGQ6IHN0cmluZyxcbiAgdmFsdWU6IFQsXG4gIGRlZmF1bHRWYWx1ZXM/OiB1bmtub3duLFxuKTogTmVzdGVkT2JqZWN0IHtcbiAgY29udGFpbmVyQXQob2JqLCBhZGRyZXNzLCBwYXRoLCBkZWZhdWx0VmFsdWVzKVtmaWVsZF0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBEZWVwLW1lcmdlcyBhIHZhbHVlIGludG8gdGhlIG9iamVjdCBhdCBhIG5lc3RlZCBwYXRoIHVuZGVyIGBhZGRyZXNzYC5cbiAqIC0gQXJyYXlzOiBjb25jYXRlbmF0ZVxuICogLSBPYmplY3RzOiBzaGFsbG93IG1lcmdlIGF0IGVhY2ggbGV2ZWxcbiAqIC0gUHJpbWl0aXZlczogcmVwbGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTmVzdGVkVmFsdWU8VD4oXG4gIG9iajogYW55LFxuICBhZGRyZXNzOiByZWFkb25seSBzdHJpbmdbXSxcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXSxcbiAgZmllbGQ6IHN0cmluZyB8IG51bWJlcixcbiAgdmFsdWU6IFQsXG4gIGRlZmF1bHRWYWx1ZXM/OiB1bmtub3duLFxuKTogYW55IHtcbiAgdXBkYXRlVmFsdWUoY29udGFpbmVyQXQob2JqLCBhZGRyZXNzLCBwYXRoLCBkZWZhdWx0VmFsdWVzKSwgZmllbGQsIHZhbHVlKTtcbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBJbi1wbGFjZSB2YWx1ZSB1cGRhdGUgd2l0aCBtZXJnZSBzZW1hbnRpY3MuXG4gKiAtIEFycmF5cyAobm9uLWVtcHR5KTogY29uY2F0ZW5hdGUgb250byBleGlzdGluZ1xuICogLSBBcnJheXMgKGVtcHR5KTogICAgIGRpcmVjdCByZXBsYWNlIOKAlCB3cml0aW5nIGBbXWAgY2xlYXJzIHRoZSBmaWVsZFxuICogLSBPYmplY3RzIChub24tZW1wdHkpOiBzaGFsbG93IG1lcmdlIChzcHJlYWQpXG4gKiAtIE9iamVjdHMgKGVtcHR5KTogICAgZGlyZWN0IHJlcGxhY2Ug4oCUIHdyaXRpbmcgYHt9YCBjbGVhcnMgdGhlIGZpZWxkXG4gKiAtIFByaW1pdGl2ZXM6IGRpcmVjdCBhc3NpZ25tZW50XG4gKlxuICogTm90ZSBvbiBlbXB0eSBhcnJheXM6IGJvdGggYHZhbHVlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpYCBhbmRcbiAqIGBBcnJheS5pc0FycmF5KHZhbHVlKWAgZXZhbHVhdGUgdGhlIHNhbWUgZm9yIGFycmF5cyDigJQgYFtdYCBpcyB0cnV0aHkgaW5cbiAqIEphdmFTY3JpcHQsIHNvIHRoZSBgJiZgIGd1YXJkIHdhcyBuZXZlciB0aGUgaXNzdWUuIFRoZSBhY3R1YWwgYnVnIHdhcyB0aGVcbiAqIGNvbmNhdCBwYXRoOiBgWy4uLmN1ciwgLi4uW11dYCBzaWxlbnRseSByZXR1cm5lZCBgY3VyYCB1bmNoYW5nZWQgd2hlbiBgdmFsdWVgXG4gKiB3YXMgYFtdYCwgbWFraW5nIGB1cGRhdGVWYWx1ZShvYmosICd0YWdzJywgW10pYCBhIG5vLW9wIGluc3RlYWQgb2YgYSBjbGVhci5cbiAqIFRoZSBmaXggaXMgdGhlIGV4cGxpY2l0IGB2YWx1ZS5sZW5ndGggPT09IDBgIGVhcmx5LXJldHVybiBicmFuY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVWYWx1ZShvYmplY3Q6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTsgLy8gY2xlYXI6IFtdIHJlcGxhY2VzIHdoYXRldmVyIHdhcyB0aGVyZVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXIgPSBvYmplY3Rba2V5XSBhcyBhbnk7XG4gICAgICBvYmplY3Rba2V5XSA9IGN1ciA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiBbLi4uY3VyLCAuLi52YWx1ZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCkge1xuICAgIGNvbnN0IGN1ciA9IG9iamVjdFtrZXldIGFzIGFueTtcbiAgICBvYmplY3Rba2V5XSA9IGN1ciA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7IC4uLmN1ciwgLi4udmFsdWUgfTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyBhIHZhbHVlIGF0IGEgbmVzdGVkIHBhdGggd2l0aCBwcm90b3R5cGUtcG9sbHV0aW9uIHByb3RlY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXN0ZWRWYWx1ZShyb290OiBhbnksIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10sIGZpZWxkPzogc3RyaW5nIHwgbnVtYmVyKTogYW55IHtcbiAgY29uc3Qgbm9kZSA9IHBhdGggJiYgcGF0aC5sZW5ndGggPiAwID8gX2dldChyb290LCBwYXRoKSA6IHJvb3Q7XG4gIGlmIChmaWVsZCA9PT0gdW5kZWZpbmVkIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIG5vZGU7XG4gIGlmIChub2RlICE9PSBudWxsICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobm9kZSwgZmllbGQpKSB7XG4gICAgcmV0dXJuIG5vZGVbZmllbGRdO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* path inside the value I read, put this". The value it read is BORROWED —
|
|
6
6
|
* before a stage's first staged write it is a bare reference into committed
|
|
7
7
|
* shared memory, and committed state is immutable-after-swap (see
|
|
8
|
-
* `
|
|
8
|
+
* `RecordFrame · firstTouch`). Editing it in place would corrupt every
|
|
9
9
|
* in-flight stage AND leave the commit log with nothing to record.
|
|
10
10
|
*
|
|
11
11
|
* So the write path never mutates. It COPIES the containers along the path
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* path inside the value I read, put this". The value it read is BORROWED —
|
|
6
6
|
* before a stage's first staged write it is a bare reference into committed
|
|
7
7
|
* shared memory, and committed state is immutable-after-swap (see
|
|
8
|
-
* `
|
|
8
|
+
* `RecordFrame · firstTouch`). Editing it in place would corrupt every
|
|
9
9
|
* in-flight stage AND leave the commit log with nothing to record.
|
|
10
10
|
*
|
|
11
11
|
* So the write path never mutates. It COPIES the containers along the path
|
|
@@ -101,4 +101,4 @@ export function deleteInPath(root, segments) {
|
|
|
101
101
|
copy[segment] = replaced;
|
|
102
102
|
return copy;
|
|
103
103
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJhbFdyaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9yZWFjdGl2ZS9zdHJ1Y3R1cmFsV3JpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7Ozs7OztHQVNHO0FBRUgseUZBQXlGO0FBQ3pGLFNBQVMsYUFBYSxDQUFDLElBQWE7SUFDbEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxFQUFFLEdBQUksSUFBZ0MsRUFBRSxDQUFDO0lBQy9GLDRFQUE0RTtJQUM1RSx5RUFBeUU7SUFDekUsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLFNBQVMsT0FBTyxDQUFDLElBQWEsRUFBRSxPQUFlO0lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFhLEVBQUUsUUFBMkIsRUFBRSxLQUFjO0lBQ2xGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7O1FBQzFDLElBQWdDLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWEsRUFBRSxRQUEyQjtJQUNyRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksS0FBSyxJQUFLLElBQWtCLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUksSUFBa0IsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBSSxJQUFnQyxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxJQUFJLFFBQVEsS0FBSyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDcEMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksS0FBSyxLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDOztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzlCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcmVhY3RpdmUvc3RydWN0dXJhbFdyaXRlIC0tIEJ1aWxkIHRoZSBORVhUIHZhbHVlIHdpdGhvdXQgdG91Y2hpbmcgdGhlIGxhc3Qgb25lLlxuICpcbiAqIEV2ZXJ5IGRlZXAgd3JpdGUgdGhlIHR5cGVkIHNjb3BlIGludGVyY2VwdHMgaGFzIHRoZSBzYW1lIHNoYXBlOiBcImF0IHRoaXNcbiAqIHBhdGggaW5zaWRlIHRoZSB2YWx1ZSBJIHJlYWQsIHB1dCB0aGlzXCIuIFRoZSB2YWx1ZSBpdCByZWFkIGlzIEJPUlJPV0VEIOKAlFxuICogYmVmb3JlIGEgc3RhZ2UncyBmaXJzdCBzdGFnZWQgd3JpdGUgaXQgaXMgYSBiYXJlIHJlZmVyZW5jZSBpbnRvIGNvbW1pdHRlZFxuICogc2hhcmVkIG1lbW9yeSwgYW5kIGNvbW1pdHRlZCBzdGF0ZSBpcyBpbW11dGFibGUtYWZ0ZXItc3dhcCAoc2VlXG4gKiBgUmVjb3JkRnJhbWUgwrcgZmlyc3RUb3VjaGApLiBFZGl0aW5nIGl0IGluIHBsYWNlIHdvdWxkIGNvcnJ1cHQgZXZlcnlcbiAqIGluLWZsaWdodCBzdGFnZSBBTkQgbGVhdmUgdGhlIGNvbW1pdCBsb2cgd2l0aCBub3RoaW5nIHRvIHJlY29yZC5cbiAqXG4gKiBTbyB0aGUgd3JpdGUgcGF0aCBuZXZlciBtdXRhdGVzLiBJdCBDT1BJRVMgdGhlIGNvbnRhaW5lcnMgYWxvbmcgdGhlIHBhdGhcbiAqIChhbmQgb25seSB0aG9zZSkgYW5kIHJldHVybnMgYSBuZXcgcm9vdCwgbGVhdmluZyBldmVyeSB1bnRvdWNoZWQgc2libGluZ1xuICogc2hhcmVkIGJ5IHJlZmVyZW5jZSDigJQgdGhlIHNhbWUgemVyby1jbG9uZSBiYXJnYWluIHRoZSBmaXJzdC10b3VjaCB2aWV3XG4gKiBhbHJlYWR5IG1ha2VzLiBUaGUgYnVmZmVyIGBzdHJ1Y3R1cmVkQ2xvbmVgcyB3aGF0IGl0IHN0YWdlcywgc28gdGhlXG4gKiBkZXRhY2hpbmcgaGFwcGVucyBvbmNlLCBhdCB0aGUgYm91bmRhcnkgdGhhdCBuZWVkcyBpdC5cbiAqL1xuXG4vKlxuICogVW50aWwgOS4yNC4wIHRoaXMgbW9kdWxlIGFsc28gb3duZWQgYHVud3JhcFByb3h5YCwgYSBKU09OIHJvdW5kLXRyaXAgb2ZcbiAqIGV2ZXJ5IEFTU0lHTkVEIHZhbHVlIOKAlCB0aGUgb25seSB3YXkgdGhlbiB0byBrZWVwIHRoZSBzY29wZSdzIG93biBQcm94aWVzXG4gKiBvdXQgb2YgdGhlIGJ1ZmZlci4gSXQgY29zdCBhIGBEYXRlYCBpdHMgdHlwZSBhbmQgYSBgTWFwYCBpdHMgbWVtYmVycywgYW5kXG4gKiBpdCBtYWRlIHRoZSB0cmFwIGFuZCBgJHNldFZhbHVlYCBzdG9yZSBkaWZmZXJlbnQgYnl0ZXMgZm9yIHRoZSBzYW1lIHZhbHVlXG4gKiAodGhlIG9sZCBsYW5kbWluZSAxKS4gVGhlIHNjb3BlJ3MgaGFuZGxlcyBhcmUgcmVjb2duaXNlZCBub3dcbiAqIChgaGFuZGxlcy50cyDCtyB1bndyYXBIYW5kbGVzYCwgTygxKSBlYWNoKSwgc28gdGhlIGFzc2lnbmVkIHZhbHVlIGdvZXMgdG9cbiAqIHRoZSBzaW5rIEFTIEFTU0lHTkVEIGFuZCB0aGUgYnVmZmVyJ3MgYHN0cnVjdHVyZWRDbG9uZWAgYXQgY29tbWl0IGlzIHRoZVxuICogb25lIGRldGFjaGluZyBzdGVwIOKAlCB0aGUgc2FtZSBsYXcgYCRzZXRWYWx1ZWAgaGFzIGFsd2F5cyBoYWQuXG4gKi9cblxuLyoqIFNoYWxsb3cgY29weSB0aGF0IHByZXNlcnZlcyBhcnJheS1uZXNzIOKAlCB0aGUgb25lIGNvbnRhaW5lciBjb3B5IHRoaXMgbW9kdWxlIG1ha2VzLiAqL1xuZnVuY3Rpb24gY29weUNvbnRhaW5lcihub2RlOiB1bmtub3duKTogYW55IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHJldHVybiBbLi4ubm9kZV07XG4gIGlmIChub2RlICE9PSBudWxsICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JykgcmV0dXJuIHsgLi4uKG5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG4gIC8vIE5vdCBhIGNvbnRhaW5lciAocHJpbWl0aXZlLCBudWxsLCB1bmRlZmluZWQpOiB0aGUgcGF0aCBjb250aW51ZXMgSU5UTyBpdCxcbiAgLy8gc28gaXQgYmVjb21lcyBhIGZyZXNoIG9iamVjdCDigJQgdGhlIHNhbWUgY29lcmNpb24gYG5hdGl2ZVNldGAgcGVyZm9ybXMuXG4gIHJldHVybiB7fTtcbn1cblxuLyoqIEFuIGFycmF5IGluZGV4IHNlZ21lbnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlIHNlZ21lbnQgbmFtZXMgYSBwcm9wZXJ0eS4gKi9cbmZ1bmN0aW9uIGluZGV4T2Yobm9kZTogdW5rbm93biwgc2VnbWVudDogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBpID0gTnVtYmVyKHNlZ21lbnQpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihpKSAmJiBpID49IDAgPyBpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybiBhIGNvcHkgb2YgYHJvb3RgIHdpdGggYHZhbHVlYCBhdCBgc2VnbWVudHNgLCBtdXRhdGluZyBub3RoaW5nLlxuICpcbiAqIENvbnRhaW5lcnMgb24gdGhlIHBhdGggYXJlIHNoYWxsb3ctY29waWVkIChhcnJheXMgc3RheSBhcnJheXMpOyBldmVyeXRoaW5nXG4gKiBvZmYgdGhlIHBhdGggaXMgc2hhcmVkIGJ5IHJlZmVyZW5jZS4gQW4gZW1wdHkgcGF0aCByZXR1cm5zIGB2YWx1ZWAgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SW5QYXRoKHJvb3Q6IHVua25vd24sIHNlZ21lbnRzOiByZWFkb25seSBzdHJpbmdbXSwgdmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHZhbHVlO1xuICBjb25zdCBuZXh0ID0gY29weUNvbnRhaW5lcihyb290KTtcbiAgY29uc3Qgc2VnbWVudCA9IHNlZ21lbnRzWzBdO1xuICBjb25zdCBpbmRleCA9IGluZGV4T2YobmV4dCwgc2VnbWVudCk7XG4gIGNvbnN0IGNoaWxkID0gaW5kZXggIT09IHVuZGVmaW5lZCA/IG5leHRbaW5kZXhdIDogKG5leHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3NlZ21lbnRdO1xuICBjb25zdCByZXBsYWNlZCA9IHNldEluUGF0aChjaGlsZCwgc2VnbWVudHMuc2xpY2UoMSksIHZhbHVlKTtcbiAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIG5leHRbaW5kZXhdID0gcmVwbGFjZWQ7XG4gIGVsc2UgKG5leHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3NlZ21lbnRdID0gcmVwbGFjZWQ7XG4gIHJldHVybiBuZXh0O1xufVxuXG4vKipcbiAqIFJldHVybiBhIGNvcHkgb2YgYHJvb3RgIHdpdGggdGhlIGtleSBhdCBgc2VnbWVudHNgIFJFTU9WRUQsIG11dGF0aW5nIG5vdGhpbmcuXG4gKlxuICogT24gYW4gYXJyYXkgdGhlIHNsb3QgaXMgcmVtb3ZlZCB3aXRoIGBzcGxpY2VgICh0aGUgYXJyYXkgc2hyaW5rcyDigJQgYGRlbGV0ZWBcbiAqIG9uIGFuIGFycmF5IGluZGV4IHdvdWxkIGxlYXZlIGEgaG9sZSwgd2hpY2ggY2Fubm90IHN1cnZpdmVcbiAqIGBzdHJ1Y3R1cmVkQ2xvbmVgIHJvdW5kLXRyaXBzIGFzIHRoZSBzYW1lIHZhbHVlKS4gQSBwYXRoIHRoYXQgZG9lcyBub3RcbiAqIGV4aXN0IHJldHVybnMgdGhlIHJvb3QgdW5jaGFuZ2VkLCBieSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVJblBhdGgocm9vdDogdW5rbm93biwgc2VnbWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogdW5rbm93biB7XG4gIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChyb290ID09PSBudWxsIHx8IHR5cGVvZiByb290ICE9PSAnb2JqZWN0JykgcmV0dXJuIHJvb3Q7XG4gIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1swXTtcbiAgY29uc3QgaW5kZXggPSBpbmRleE9mKHJvb3QsIHNlZ21lbnQpO1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChpbmRleCA+PSAocm9vdCBhcyB1bmtub3duW10pLmxlbmd0aCkgcmV0dXJuIHJvb3Q7XG4gICAgICBjb25zdCBjb3B5ID0gWy4uLihyb290IGFzIHVua25vd25bXSldO1xuICAgICAgY29weS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJvb3QsIHNlZ21lbnQpKSByZXR1cm4gcm9vdDtcbiAgICBjb25zdCBjb3B5ID0geyAuLi4ocm9vdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBkZWxldGUgY29weVtzZWdtZW50XTtcbiAgICByZXR1cm4gY29weTtcbiAgfVxuICBjb25zdCBjaGlsZCA9IGluZGV4ICE9PSB1bmRlZmluZWQgPyAocm9vdCBhcyB1bmtub3duW10pW2luZGV4XSA6IChyb290IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtzZWdtZW50XTtcbiAgY29uc3QgcmVwbGFjZWQgPSBkZWxldGVJblBhdGgoY2hpbGQsIHNlZ21lbnRzLnNsaWNlKDEpKTtcbiAgaWYgKHJlcGxhY2VkID09PSBjaGlsZCkgcmV0dXJuIHJvb3Q7XG4gIGNvbnN0IGNvcHkgPSBjb3B5Q29udGFpbmVyKHJvb3QpO1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkgY29weVtpbmRleF0gPSByZXBsYWNlZDtcbiAgZWxzZSBjb3B5W3NlZ21lbnRdID0gcmVwbGFjZWQ7XG4gIHJldHVybiBjb3B5O1xufVxuIl19
|
|
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.evaluateFilter = void 0;
|
|
13
13
|
const summarize_js_1 = require("../capture/summarize.js");
|
|
14
14
|
const devMode_js_1 = require("../devMode.js");
|
|
15
|
-
const
|
|
15
|
+
const redaction_js_1 = require("../memory/redaction.js");
|
|
16
16
|
const OPERATOR_HANDLERS = {
|
|
17
17
|
eq: (a, t) => a === t,
|
|
18
18
|
ne: (a, t) => a !== t,
|
|
@@ -94,7 +94,7 @@ function evaluateFilter(getValueFn, isRedactedFn, filter) {
|
|
|
94
94
|
continue;
|
|
95
95
|
const actual = getValueFn(key);
|
|
96
96
|
const redacted = isRedactedFn(key);
|
|
97
|
-
const displayValue = redacted ?
|
|
97
|
+
const displayValue = redacted ? redaction_js_1.SCOPE_PLACEHOLDER : (0, summarize_js_1.summarizeValue)(actual, MAX_VALUE_LEN);
|
|
98
98
|
// Evaluate each operator in the FilterOps for this key
|
|
99
99
|
for (const [op, threshold] of Object.entries(ops)) {
|
|
100
100
|
const handler = OPERATOR_HANDLERS[op];
|
|
@@ -131,4 +131,4 @@ function evaluateFilter(getValueFn, isRedactedFn, filter) {
|
|
|
131
131
|
return { matched: allMatched, conditions };
|
|
132
132
|
}
|
|
133
133
|
exports.evaluateFilter = evaluateFilter;
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWNpZGUvZXZhbHVhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRzs7O0FBRUgsMERBQXlEO0FBQ3pELDhDQUEwQztBQUMxQywrREFBOEQ7QUFPOUQsTUFBTSxpQkFBaUIsR0FBK0I7SUFDcEQsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxHQUFJLENBQVk7SUFDM0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxJQUFLLENBQVk7SUFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxHQUFJLENBQVk7SUFDM0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxJQUFLLENBQVk7SUFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLGlCQUFpQixFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELEtBQUssRUFBRSxD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O1lBQzFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsR0FBRztnQkFDSCxFQUFFO2dCQUNGLFNBQVM7Z0JBQ1QsYUFBYSxFQUFFLFlBQVk7Z0JBQzNCLE1BQU07Z0JBQ04sUUFBUTthQUNULENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNO2dCQUFFLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCw2RUFBNkU7SUFDN0Usd0VBQXdFO0lBQ3hFLHlFQUF5RTtJQUN6RSxnREFBZ0Q7SUFDaEQsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBMURELHdDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVjaWRlL2V2YWx1YXRvciAtLSBQcmlzbWEtc3R5bGUgZmlsdGVyIGV2YWx1YXRvciBmb3IgZGVjaXNpb24gcnVsZXMuXG4gKlxuICogUHVyZSBmdW5jdGlvbi4gVGFrZXMgYSBXaGVyZUZpbHRlciwgYSB2YWx1ZSBnZXR0ZXIsIGFuZCBhIHJlZGFjdGlvbiBjaGVja2VyLlxuICogRXZhbHVhdGVzIGVhY2ggY29uZGl0aW9uLCByZWNvcmRzIHRoZSByZXN1bHQsIHJldHVybnMgbWF0Y2hlZC9jb25kaXRpb25zLlxuICpcbiAqIEFsbCBrZXlzIGluIHRoZSBmaWx0ZXIgYXJlIEFORGVkIChhbGwgbXVzdCBtYXRjaCBmb3IgdGhlIHJ1bGUgdG8gbWF0Y2gpLlxuICogRGVjb3VwbGVkIGZyb20gU2NvcGVGYWNhZGUg4oCUIHJlY2VpdmVzIGNhbGxiYWNrcywgbm90IHNjb3BlLlxuICovXG5cbmltcG9ydCB7IHN1bW1hcml6ZVZhbHVlIH0gZnJvbSAnLi4vY2FwdHVyZS9zdW1tYXJpemUuanMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnLi4vZGV2TW9kZS5qcyc7XG5pbXBvcnQgeyBTQ09QRV9QTEFDRUhPTERFUiB9IGZyb20gJy4uL21lbW9yeS9wbGFjZWhvbGRlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb25kaXRpb24sIFdoZXJlRmlsdGVyIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIC0tIE9wZXJhdG9yIGRpc3BhdGNoIHRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudHlwZSBPcGVyYXRvckZuID0gKGFjdHVhbDogdW5rbm93biwgdGhyZXNob2xkOiB1bmtub3duKSA9PiBib29sZWFuO1xuXG5jb25zdCBPUEVSQVRPUl9IQU5ETEVSUzogUmVjb3JkPHN0cmluZywgT3BlcmF0b3JGbj4gPSB7XG4gIGVxOiAoYSwgdCkgPT4gYSA9PT0gdCxcbiAgbmU6IChhLCB0KSA9PiBhICE9PSB0LFxuICBndDogKGEsIHQpID0+IChhIGFzIG51bWJlcikgPiAodCBhcyBudW1iZXIpLFxuICBndGU6IChhLCB0KSA9PiAoYSBhcyBudW1iZXIpID49ICh0IGFzIG51bWJlciksXG4gIGx0OiAoYSwgdCkgPT4gKGEgYXMgbnVtYmVyKSA8ICh0IGFzIG51bWJlciksXG4gIGx0ZTogKGEsIHQpID0+IChhIGFzIG51bWJlcikgPD0gKHQgYXMgbnVtYmVyKSxcbiAgaW46IChhLCB0KSA9PiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHQpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHQubGVuZ3RoID4gTUFYX0lOX0FSUkFZX1NJWkUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW4vbm90SW4gYXJyYXkgZXhjZWVkcyBtYXhpbXVtIHNpemUgb2YgJHtNQVhfSU5fQVJSQVlfU0laRX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHQuaW5jbHVkZXMoYSk7XG4gIH0sXG4gIG5vdEluOiAoYSwgdCkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0KSkgcmV0dXJuIHRydWU7IC8vIG5vdCBpbiBhIG5vbi1hcnJheSA9IHZhY3VvdXNseSB0cnVlXG4gICAgaWYgKHQubGVuZ3RoID4gTUFYX0lOX0FSUkFZX1NJWkUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW4vbm90SW4gYXJyYXkgZXhjZWVkcyBtYXhpbXVtIHNpemUgb2YgJHtNQVhfSU5fQVJSQVlfU0laRX1gKTtcbiAgICB9XG4gICAgcmV0dXJuICF0LmluY2x1ZGVzKGEpO1xuICB9LFxufTtcblxuLy8gLS0gU2VjdXJpdHk6IHByb3RvdHlwZSBwb2xsdXRpb24gZGVueWxpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBERU5JRURfS0VZUyA9IG5ldyBTZXQoW1xuICAnX19wcm90b19fJyxcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ3Byb3RvdHlwZScsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAnX19kZWZpbmVHZXR0ZXJfXycsXG4gICdfX2RlZmluZVNldHRlcl9fJyxcbiAgJ19fbG9va3VwR2V0dGVyX18nLFxuICAnX19sb29rdXBTZXR0ZXJfXycsXG5dKTtcblxuLy8gLS0gQ29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBNQVhfSU5fQVJSQVlfU0laRSA9IDEwMDA7XG5jb25zdCBNQVhfVkFMVUVfTEVOID0gODA7XG5cbi8vIC0tIEV2YWx1YXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBFdmFsdWF0ZXMgYSBQcmlzbWEtc3R5bGUgZmlsdGVyIGFnYWluc3Qgc2NvcGUgdmFsdWVzLlxuICpcbiAqICMjIEVtcHR5IGZpbHRlciDihpIgTk8gbWF0Y2ggKGFudGktdmFjdW91cy10cnV0aCDigJQgaW52ZXJ0cyBQcmlzbWEvU1FMKVxuICpcbiAqIEEgZmlsdGVyIHdpdGggbm8gZXZhbHVhYmxlIGNvbmRpdGlvbnMgKGB7fWAsIG9yIG9ubHkgZGVuaWVkL25vbi1vYmplY3RcbiAqIGtleXMpIHJldHVybnMgYG1hdGNoZWQ6IGZhbHNlYC4gVGhpcyBkZWxpYmVyYXRlbHkgSU5WRVJUUyB0aGUgUHJpc21hL1NRTFxuICogaW50dWl0aW9uIHdoZXJlIGB3aGVyZToge31gIG1hdGNoZXMgZXZlcnl0aGluZzogaW4gYSBkZWNpc2lvbiBydWxlLCBhIHJ1bGVcbiAqIHRoYXQgYXNzZXJ0cyBub3RoaW5nIHNob3VsZCBuZXZlciB3aW4gYSBicmFuY2gg4oCUIFwiYWxsIHplcm8gY29uZGl0aW9uc1xuICogcGFzc2VkXCIgaXMgdmFjdW91cyB0cnV0aCwgYW5kIHNpbGVudGx5IHJvdXRpbmcgb24gaXQgd291bGQgZmFicmljYXRlXG4gKiBkZWNpc2lvbiBldmlkZW5jZS4gV2FudCBhIGNhdGNoLWFsbD8gVXNlIHRoZSBleHBsaWNpdCBgZGVmYXVsdEJyYW5jaGBcbiAqIGFyZ3VtZW50IG9mIGBkZWNpZGUoKWAgaW5zdGVhZCBvZiBhbiBlbXB0eSBgd2hlbmAuXG4gKlxuICogIyMgVW5rbm93biBvcGVyYXRvcnMg4oaSIGNvbmRpdGlvbiBmYWlscyAoKyBkZXYtbW9kZSB3YXJuaW5nKVxuICpcbiAqIEFuIG9wZXJhdG9yIG91dHNpZGUgdGhlIHN1cHBvcnRlZCBzZXQgKGBlcSwgbmUsIGd0LCBndGUsIGx0LCBsdGUsIGluLFxuICogbm90SW5gKSByZWNvcmRzIGEgZmFpbGVkIGNvbmRpdGlvbiDigJQgdGhlIHJ1bGUgY2FuIG5ldmVyIHNwdXJpb3VzbHkgbWF0Y2hcbiAqIHRocm91Z2ggYSB0eXBvIChgZ3RlYCBtaXNzcGVsbGVkIGBnbGVgKS4gV2l0aCBkZXYgbW9kZSBlbmFibGVkXG4gKiAoYGVuYWJsZURldk1vZGUoKWApLCBhIGNvbnNvbGUgd2FybmluZyBuYW1lcyB0aGUgdW5rbm93biBvcGVyYXRvciBhbmQga2V5LlxuICpcbiAqIEBwYXJhbSBnZXRWYWx1ZUZuIC0gUmVhZHMgYSB2YWx1ZSBmcm9tIHNjb3BlIGJ5IGtleSAocmF3LCBmb3IgY29tcGFyaXNvbilcbiAqIEBwYXJhbSBpc1JlZGFjdGVkRm4gLSBDaGVja3MgaWYgYSBrZXkgaXMgcmVkYWN0ZWQgKGZvciBldmlkZW5jZSBkaXNwbGF5KVxuICogQHBhcmFtIGZpbHRlciAtIFRoZSBXaGVyZUZpbHRlciB0byBldmFsdWF0ZVxuICogQHJldHVybnMgeyBtYXRjaGVkLCBjb25kaXRpb25zIH0g4oCUIG1hdGNoZWQgPSBhbGwgY29uZGl0aW9ucyBwYXNzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlRmlsdGVyPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBnZXRWYWx1ZUZuOiAoa2V5OiBzdHJpbmcpID0+IHVua25vd24sXG4gIGlzUmVkYWN0ZWRGbjogKGtleTogc3RyaW5nKSA9PiBib29sZWFuLFxuICBmaWx0ZXI6IFdoZXJlRmlsdGVyPFQ+LFxuKTogeyBtYXRjaGVkOiBib29sZWFuOyBjb25kaXRpb25zOiBGaWx0ZXJDb25kaXRpb25bXSB9IHtcbiAgY29uc3QgY29uZGl0aW9uczogRmlsdGVyQ29uZGl0aW9uW10gPSBbXTtcbiAgbGV0IGFsbE1hdGNoZWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3QgW2tleSwgb3BzXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXIpKSB7XG4gICAgLy8gU2VjdXJpdHk6IGRlbmllZCBrZXlzIGNhdXNlIHJ1bGUgdG8gZmFpbCAoY29uc2lzdGVudCB3aXRoIHVua25vd24gb3BlcmF0b3IgYmVoYXZpb3IpXG4gICAgaWYgKERFTklFRF9LRVlTLmhhcyhrZXkpKSB7XG4gICAgICBhbGxNYXRjaGVkID0gZmFsc2U7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFvcHMgfHwgdHlwZW9mIG9wcyAhPT0gJ29iamVjdCcpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgYWN0dWFsID0gZ2V0VmFsdWVGbihrZXkpO1xuICAgIGNvbnN0IHJlZGFjdGVkID0gaXNSZWRhY3RlZEZuKGtleSk7XG4gICAgY29uc3QgZGlzcGxheVZhbHVlID0gcmVkYWN0ZWQgPyBTQ09QRV9QTEFDRUhPTERFUiA6IHN1bW1hcml6ZVZhbHVlKGFjdHVhbCwgTUFYX1ZBTFVFX0xFTik7XG5cbiAgICAvLyBFdmFsdWF0ZSBlYWNoIG9wZXJhdG9yIGluIHRoZSBGaWx0ZXJPcHMgZm9yIHRoaXMga2V5XG4gICAgZm9yIChjb25zdCBbb3AsIHRocmVzaG9sZF0gb2YgT2JqZWN0LmVudHJpZXMob3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgY29uc3QgaGFuZGxlciA9IE9QRVJBVE9SX0hBTkRMRVJTW29wXTtcbiAgICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICAvLyBVbmtub3duIG9wZXJhdG9yOiB0cmVhdCBhcyBmYWlsZWQgY29uZGl0aW9uIHNvIHJ1bGUgZG9lc24ndCBzcHVyaW91c2x5IG1hdGNoXG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtmb290cHJpbnRdIGRlY2lkZSgpL3NlbGVjdCgpIGZpbHRlcjogdW5rbm93biBvcGVyYXRvciBcIiR7b3B9XCIgb24ga2V5IFwiJHtrZXl9XCIg4oCUIGAgK1xuICAgICAgICAgICAgICBgY29uZGl0aW9uIG5ldmVyIG1hdGNoZXMgKHZhbGlkIG9wZXJhdG9yczogJHtPYmplY3Qua2V5cyhPUEVSQVRPUl9IQU5ETEVSUykuam9pbignLCAnKX0pYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaCh7IGtleSwgb3AsIHRocmVzaG9sZCwgYWN0dWFsU3VtbWFyeTogZGlzcGxheVZhbHVlLCByZXN1bHQ6IGZhbHNlLCByZWRhY3RlZCB9KTtcbiAgICAgICAgYWxsTWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlcihhY3R1YWwsIHRocmVzaG9sZCk7XG4gICAgICBjb25kaXRpb25zLnB1c2goe1xuICAgICAgICBrZXksXG4gICAgICAgIG9wLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGFjdHVhbFN1bW1hcnk6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICByZWRhY3RlZCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3VsdCkgYWxsTWF0Y2hlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtcHR5IGZpbHRlciAobm8gZXZhbHVhYmxlIGNvbmRpdGlvbnMpIHNob3VsZCBOT1QgbWF0Y2gg4oCUIHByZXZlbnRzIHZhY3VvdXNcbiAgLy8gdHJ1dGguIE5PVEU6IHRoaXMgZGVsaWJlcmF0ZWx5IGludmVydHMgUHJpc21hL1NRTCBgd2hlcmU6IHt9YCAoXCJtYXRjaFxuICAvLyBldmVyeXRoaW5nXCIpIOKAlCBzZWUgdGhlIGZ1bmN0aW9uIEpTRG9jLiBDYXRjaC1hbGxzIGJlbG9uZyBpbiBkZWNpZGUoKSdzXG4gIC8vIGV4cGxpY2l0IGRlZmF1bHRCcmFuY2gsIG5vdCBpbiBhbiBlbXB0eSBydWxlLlxuICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiB7IG1hdGNoZWQ6IGZhbHNlLCBjb25kaXRpb25zIH07XG5cbiAgcmV0dXJuIHsgbWF0Y2hlZDogYWxsTWF0Y2hlZCwgY29uZGl0aW9ucyB9O1xufVxuIl19
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWNpZGUvZXZhbHVhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRzs7O0FBRUgsMERBQXlEO0FBQ3pELDhDQUEwQztBQUMxQyx5REFBMkQ7QUFPM0QsTUFBTSxpQkFBaUIsR0FBK0I7SUFDcEQsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxHQUFJLENBQVk7SUFDM0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxJQUFLLENBQVk7SUFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxHQUFJLENBQVk7SUFDM0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxJQUFLLENBQVk7SUFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLGlCQUFpQixFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELEtBQUssRUFBRSxD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O1lBQzFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsR0FBRztnQkFDSCxFQUFFO2dCQUNGLFNBQVM7Z0JBQ1QsYUFBYSxFQUFFLFlBQVk7Z0JBQzNCLE1BQU07Z0JBQ04sUUFBUTthQUNULENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNO2dCQUFFLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCw2RUFBNkU7SUFDN0Usd0VBQXdFO0lBQ3hFLHlFQUF5RTtJQUN6RSxnREFBZ0Q7SUFDaEQsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBMURELHdDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVjaWRlL2V2YWx1YXRvciAtLSBQcmlzbWEtc3R5bGUgZmlsdGVyIGV2YWx1YXRvciBmb3IgZGVjaXNpb24gcnVsZXMuXG4gKlxuICogUHVyZSBmdW5jdGlvbi4gVGFrZXMgYSBXaGVyZUZpbHRlciwgYSB2YWx1ZSBnZXR0ZXIsIGFuZCBhIHJlZGFjdGlvbiBjaGVja2VyLlxuICogRXZhbHVhdGVzIGVhY2ggY29uZGl0aW9uLCByZWNvcmRzIHRoZSByZXN1bHQsIHJldHVybnMgbWF0Y2hlZC9jb25kaXRpb25zLlxuICpcbiAqIEFsbCBrZXlzIGluIHRoZSBmaWx0ZXIgYXJlIEFORGVkIChhbGwgbXVzdCBtYXRjaCBmb3IgdGhlIHJ1bGUgdG8gbWF0Y2gpLlxuICogRGVjb3VwbGVkIGZyb20gU2NvcGVGYWNhZGUg4oCUIHJlY2VpdmVzIGNhbGxiYWNrcywgbm90IHNjb3BlLlxuICovXG5cbmltcG9ydCB7IHN1bW1hcml6ZVZhbHVlIH0gZnJvbSAnLi4vY2FwdHVyZS9zdW1tYXJpemUuanMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnLi4vZGV2TW9kZS5qcyc7XG5pbXBvcnQgeyBTQ09QRV9QTEFDRUhPTERFUiB9IGZyb20gJy4uL21lbW9yeS9yZWRhY3Rpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb25kaXRpb24sIFdoZXJlRmlsdGVyIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIC0tIE9wZXJhdG9yIGRpc3BhdGNoIHRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudHlwZSBPcGVyYXRvckZuID0gKGFjdHVhbDogdW5rbm93biwgdGhyZXNob2xkOiB1bmtub3duKSA9PiBib29sZWFuO1xuXG5jb25zdCBPUEVSQVRPUl9IQU5ETEVSUzogUmVjb3JkPHN0cmluZywgT3BlcmF0b3JGbj4gPSB7XG4gIGVxOiAoYSwgdCkgPT4gYSA9PT0gdCxcbiAgbmU6IChhLCB0KSA9PiBhICE9PSB0LFxuICBndDogKGEsIHQpID0+IChhIGFzIG51bWJlcikgPiAodCBhcyBudW1iZXIpLFxuICBndGU6IChhLCB0KSA9PiAoYSBhcyBudW1iZXIpID49ICh0IGFzIG51bWJlciksXG4gIGx0OiAoYSwgdCkgPT4gKGEgYXMgbnVtYmVyKSA8ICh0IGFzIG51bWJlciksXG4gIGx0ZTogKGEsIHQpID0+IChhIGFzIG51bWJlcikgPD0gKHQgYXMgbnVtYmVyKSxcbiAgaW46IChhLCB0KSA9PiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHQpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHQubGVuZ3RoID4gTUFYX0lOX0FSUkFZX1NJWkUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW4vbm90SW4gYXJyYXkgZXhjZWVkcyBtYXhpbXVtIHNpemUgb2YgJHtNQVhfSU5fQVJSQVlfU0laRX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHQuaW5jbHVkZXMoYSk7XG4gIH0sXG4gIG5vdEluOiAoYSwgdCkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0KSkgcmV0dXJuIHRydWU7IC8vIG5vdCBpbiBhIG5vbi1hcnJheSA9IHZhY3VvdXNseSB0cnVlXG4gICAgaWYgKHQubGVuZ3RoID4gTUFYX0lOX0FSUkFZX1NJWkUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW4vbm90SW4gYXJyYXkgZXhjZWVkcyBtYXhpbXVtIHNpemUgb2YgJHtNQVhfSU5fQVJSQVlfU0laRX1gKTtcbiAgICB9XG4gICAgcmV0dXJuICF0LmluY2x1ZGVzKGEpO1xuICB9LFxufTtcblxuLy8gLS0gU2VjdXJpdHk6IHByb3RvdHlwZSBwb2xsdXRpb24gZGVueWxpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBERU5JRURfS0VZUyA9IG5ldyBTZXQoW1xuICAnX19wcm90b19fJyxcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ3Byb3RvdHlwZScsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAnX19kZWZpbmVHZXR0ZXJfXycsXG4gICdfX2RlZmluZVNldHRlcl9fJyxcbiAgJ19fbG9va3VwR2V0dGVyX18nLFxuICAnX19sb29rdXBTZXR0ZXJfXycsXG5dKTtcblxuLy8gLS0gQ29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBNQVhfSU5fQVJSQVlfU0laRSA9IDEwMDA7XG5jb25zdCBNQVhfVkFMVUVfTEVOID0gODA7XG5cbi8vIC0tIEV2YWx1YXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBFdmFsdWF0ZXMgYSBQcmlzbWEtc3R5bGUgZmlsdGVyIGFnYWluc3Qgc2NvcGUgdmFsdWVzLlxuICpcbiAqICMjIEVtcHR5IGZpbHRlciDihpIgTk8gbWF0Y2ggKGFudGktdmFjdW91cy10cnV0aCDigJQgaW52ZXJ0cyBQcmlzbWEvU1FMKVxuICpcbiAqIEEgZmlsdGVyIHdpdGggbm8gZXZhbHVhYmxlIGNvbmRpdGlvbnMgKGB7fWAsIG9yIG9ubHkgZGVuaWVkL25vbi1vYmplY3RcbiAqIGtleXMpIHJldHVybnMgYG1hdGNoZWQ6IGZhbHNlYC4gVGhpcyBkZWxpYmVyYXRlbHkgSU5WRVJUUyB0aGUgUHJpc21hL1NRTFxuICogaW50dWl0aW9uIHdoZXJlIGB3aGVyZToge31gIG1hdGNoZXMgZXZlcnl0aGluZzogaW4gYSBkZWNpc2lvbiBydWxlLCBhIHJ1bGVcbiAqIHRoYXQgYXNzZXJ0cyBub3RoaW5nIHNob3VsZCBuZXZlciB3aW4gYSBicmFuY2gg4oCUIFwiYWxsIHplcm8gY29uZGl0aW9uc1xuICogcGFzc2VkXCIgaXMgdmFjdW91cyB0cnV0aCwgYW5kIHNpbGVudGx5IHJvdXRpbmcgb24gaXQgd291bGQgZmFicmljYXRlXG4gKiBkZWNpc2lvbiBldmlkZW5jZS4gV2FudCBhIGNhdGNoLWFsbD8gVXNlIHRoZSBleHBsaWNpdCBgZGVmYXVsdEJyYW5jaGBcbiAqIGFyZ3VtZW50IG9mIGBkZWNpZGUoKWAgaW5zdGVhZCBvZiBhbiBlbXB0eSBgd2hlbmAuXG4gKlxuICogIyMgVW5rbm93biBvcGVyYXRvcnMg4oaSIGNvbmRpdGlvbiBmYWlscyAoKyBkZXYtbW9kZSB3YXJuaW5nKVxuICpcbiAqIEFuIG9wZXJhdG9yIG91dHNpZGUgdGhlIHN1cHBvcnRlZCBzZXQgKGBlcSwgbmUsIGd0LCBndGUsIGx0LCBsdGUsIGluLFxuICogbm90SW5gKSByZWNvcmRzIGEgZmFpbGVkIGNvbmRpdGlvbiDigJQgdGhlIHJ1bGUgY2FuIG5ldmVyIHNwdXJpb3VzbHkgbWF0Y2hcbiAqIHRocm91Z2ggYSB0eXBvIChgZ3RlYCBtaXNzcGVsbGVkIGBnbGVgKS4gV2l0aCBkZXYgbW9kZSBlbmFibGVkXG4gKiAoYGVuYWJsZURldk1vZGUoKWApLCBhIGNvbnNvbGUgd2FybmluZyBuYW1lcyB0aGUgdW5rbm93biBvcGVyYXRvciBhbmQga2V5LlxuICpcbiAqIEBwYXJhbSBnZXRWYWx1ZUZuIC0gUmVhZHMgYSB2YWx1ZSBmcm9tIHNjb3BlIGJ5IGtleSAocmF3LCBmb3IgY29tcGFyaXNvbilcbiAqIEBwYXJhbSBpc1JlZGFjdGVkRm4gLSBDaGVja3MgaWYgYSBrZXkgaXMgcmVkYWN0ZWQgKGZvciBldmlkZW5jZSBkaXNwbGF5KVxuICogQHBhcmFtIGZpbHRlciAtIFRoZSBXaGVyZUZpbHRlciB0byBldmFsdWF0ZVxuICogQHJldHVybnMgeyBtYXRjaGVkLCBjb25kaXRpb25zIH0g4oCUIG1hdGNoZWQgPSBhbGwgY29uZGl0aW9ucyBwYXNzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlRmlsdGVyPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBnZXRWYWx1ZUZuOiAoa2V5OiBzdHJpbmcpID0+IHVua25vd24sXG4gIGlzUmVkYWN0ZWRGbjogKGtleTogc3RyaW5nKSA9PiBib29sZWFuLFxuICBmaWx0ZXI6IFdoZXJlRmlsdGVyPFQ+LFxuKTogeyBtYXRjaGVkOiBib29sZWFuOyBjb25kaXRpb25zOiBGaWx0ZXJDb25kaXRpb25bXSB9IHtcbiAgY29uc3QgY29uZGl0aW9uczogRmlsdGVyQ29uZGl0aW9uW10gPSBbXTtcbiAgbGV0IGFsbE1hdGNoZWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3QgW2tleSwgb3BzXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXIpKSB7XG4gICAgLy8gU2VjdXJpdHk6IGRlbmllZCBrZXlzIGNhdXNlIHJ1bGUgdG8gZmFpbCAoY29uc2lzdGVudCB3aXRoIHVua25vd24gb3BlcmF0b3IgYmVoYXZpb3IpXG4gICAgaWYgKERFTklFRF9LRVlTLmhhcyhrZXkpKSB7XG4gICAgICBhbGxNYXRjaGVkID0gZmFsc2U7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFvcHMgfHwgdHlwZW9mIG9wcyAhPT0gJ29iamVjdCcpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgYWN0dWFsID0gZ2V0VmFsdWVGbihrZXkpO1xuICAgIGNvbnN0IHJlZGFjdGVkID0gaXNSZWRhY3RlZEZuKGtleSk7XG4gICAgY29uc3QgZGlzcGxheVZhbHVlID0gcmVkYWN0ZWQgPyBTQ09QRV9QTEFDRUhPTERFUiA6IHN1bW1hcml6ZVZhbHVlKGFjdHVhbCwgTUFYX1ZBTFVFX0xFTik7XG5cbiAgICAvLyBFdmFsdWF0ZSBlYWNoIG9wZXJhdG9yIGluIHRoZSBGaWx0ZXJPcHMgZm9yIHRoaXMga2V5XG4gICAgZm9yIChjb25zdCBbb3AsIHRocmVzaG9sZF0gb2YgT2JqZWN0LmVudHJpZXMob3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgY29uc3QgaGFuZGxlciA9IE9QRVJBVE9SX0hBTkRMRVJTW29wXTtcbiAgICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICAvLyBVbmtub3duIG9wZXJhdG9yOiB0cmVhdCBhcyBmYWlsZWQgY29uZGl0aW9uIHNvIHJ1bGUgZG9lc24ndCBzcHVyaW91c2x5IG1hdGNoXG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtmb290cHJpbnRdIGRlY2lkZSgpL3NlbGVjdCgpIGZpbHRlcjogdW5rbm93biBvcGVyYXRvciBcIiR7b3B9XCIgb24ga2V5IFwiJHtrZXl9XCIg4oCUIGAgK1xuICAgICAgICAgICAgICBgY29uZGl0aW9uIG5ldmVyIG1hdGNoZXMgKHZhbGlkIG9wZXJhdG9yczogJHtPYmplY3Qua2V5cyhPUEVSQVRPUl9IQU5ETEVSUykuam9pbignLCAnKX0pYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaCh7IGtleSwgb3AsIHRocmVzaG9sZCwgYWN0dWFsU3VtbWFyeTogZGlzcGxheVZhbHVlLCByZXN1bHQ6IGZhbHNlLCByZWRhY3RlZCB9KTtcbiAgICAgICAgYWxsTWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlcihhY3R1YWwsIHRocmVzaG9sZCk7XG4gICAgICBjb25kaXRpb25zLnB1c2goe1xuICAgICAgICBrZXksXG4gICAgICAgIG9wLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGFjdHVhbFN1bW1hcnk6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICByZWRhY3RlZCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3VsdCkgYWxsTWF0Y2hlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtcHR5IGZpbHRlciAobm8gZXZhbHVhYmxlIGNvbmRpdGlvbnMpIHNob3VsZCBOT1QgbWF0Y2gg4oCUIHByZXZlbnRzIHZhY3VvdXNcbiAgLy8gdHJ1dGguIE5PVEU6IHRoaXMgZGVsaWJlcmF0ZWx5IGludmVydHMgUHJpc21hL1NRTCBgd2hlcmU6IHt9YCAoXCJtYXRjaFxuICAvLyBldmVyeXRoaW5nXCIpIOKAlCBzZWUgdGhlIGZ1bmN0aW9uIEpTRG9jLiBDYXRjaC1hbGxzIGJlbG9uZyBpbiBkZWNpZGUoKSdzXG4gIC8vIGV4cGxpY2l0IGRlZmF1bHRCcmFuY2gsIG5vdCBpbiBhbiBlbXB0eSBydWxlLlxuICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiB7IG1hdGNoZWQ6IGZhbHNlLCBjb25kaXRpb25zIH07XG5cbiAgcmV0dXJuIHsgbWF0Y2hlZDogYWxsTWF0Y2hlZCwgY29uZGl0aW9ucyB9O1xufVxuIl19
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.EvidenceCollector = void 0;
|
|
12
12
|
const summarize_js_1 = require("../capture/summarize.js");
|
|
13
|
-
const
|
|
13
|
+
const redaction_js_1 = require("../memory/redaction.js");
|
|
14
14
|
const MAX_VALUE_LEN = 80;
|
|
15
15
|
let evidenceCounter = 0;
|
|
16
16
|
/**
|
|
@@ -28,7 +28,7 @@ class EvidenceCollector {
|
|
|
28
28
|
return;
|
|
29
29
|
this.inputs.push({
|
|
30
30
|
key: event.key,
|
|
31
|
-
valueSummary: event.redacted ?
|
|
31
|
+
valueSummary: event.redacted ? redaction_js_1.SCOPE_PLACEHOLDER : (0, summarize_js_1.summarizeValue)(event.value, MAX_VALUE_LEN),
|
|
32
32
|
redacted: event.redacted === true,
|
|
33
33
|
});
|
|
34
34
|
}
|
|
@@ -38,4 +38,4 @@ class EvidenceCollector {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
exports.EvidenceCollector = EvidenceCollector;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZpZGVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2RlY2lkZS9ldmlkZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7O0FBRUgsMERBQXlEO0FBQ3pELHlEQUEyRDtBQUkzRCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFFekIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBRXhCOzs7R0FHRztBQUNILE1BQWEsaUJBQWlCO0lBQ25CLEVBQUUsQ0FBUztJQUNaLE1BQU0sR0FBZ0IsRUFBRSxDQUFDO0lBRWpDO1FBQ0UsSUFBSSxDQUFDLEVBQUUsR0FBRyxZQUFZLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdDQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFBLDZCQUFjLEVBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7WUFDN0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEtBQUssSUFBSTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBckJELDhDQXFCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVjaWRlL2V2aWRlbmNlIC0tIExpZ2h0d2VpZ2h0IHRlbXAgcmVjb3JkZXIgZm9yIGF1dG8tY2FwdHVyaW5nIHJlYWRzXG4gKiBkdXJpbmcgYSB3aGVuKCkgZnVuY3Rpb24gY2FsbC5cbiAqXG4gKiBBdHRhY2hlZCB0byBzY29wZSBiZWZvcmUgY2FsbGluZyB3aGVuKHNjb3BlKSwgZGV0YWNoZWQgYWZ0ZXIuXG4gKiBDYXB0dXJlcyBSZWFkRXZlbnQga2V5ICsgc3VtbWFyaXplZCB2YWx1ZSArIHJlZGFjdGlvbiBmbGFnLlxuICogVXNlcyBzdW1tYXJpemVWYWx1ZSgpIGF0IGNhcHR1cmUgdGltZSAobm8gcmF3IG9iamVjdCByZWZlcmVuY2VzIGhlbGQpLlxuICovXG5cbmltcG9ydCB7IHN1bW1hcml6ZVZhbHVlIH0gZnJvbSAnLi4vY2FwdHVyZS9zdW1tYXJpemUuanMnO1xuaW1wb3J0IHsgU0NPUEVfUExBQ0VIT0xERVIgfSBmcm9tICcuLi9tZW1vcnkvcmVkYWN0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgUmVhZEV2ZW50LCBTY29wZVJlY29yZGVyIH0gZnJvbSAnLi4vc2NvcGUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWFkSW5wdXQgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuY29uc3QgTUFYX1ZBTFVFX0xFTiA9IDgwO1xuXG5sZXQgZXZpZGVuY2VDb3VudGVyID0gMDtcblxuLyoqXG4gKiBNaW5pbWFsIFNjb3BlUmVjb3JkZXIgdGhhdCBjYXB0dXJlcyByZWFkcyBmb3IgZGVjaXNpb24gZXZpZGVuY2UuXG4gKiBBdHRhY2ggYmVmb3JlIHdoZW4oKSwgZGV0YWNoIGFmdGVyLiBDb2xsZWN0IHZpYSBnZXRJbnB1dHMoKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2aWRlbmNlQ29sbGVjdG9yIGltcGxlbWVudHMgU2NvcGVSZWNvcmRlciB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgaW5wdXRzOiBSZWFkSW5wdXRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaWQgPSBgZXZpZGVuY2UtJHsrK2V2aWRlbmNlQ291bnRlcn1gO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIWV2ZW50LmtleSkgcmV0dXJuO1xuICAgIHRoaXMuaW5wdXRzLnB1c2goe1xuICAgICAga2V5OiBldmVudC5rZXksXG4gICAgICB2YWx1ZVN1bW1hcnk6IGV2ZW50LnJlZGFjdGVkID8gU0NPUEVfUExBQ0VIT0xERVIgOiBzdW1tYXJpemVWYWx1ZShldmVudC52YWx1ZSwgTUFYX1ZBTFVFX0xFTiksXG4gICAgICByZWRhY3RlZDogZXZlbnQucmVkYWN0ZWQgPT09IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKiogUmV0dXJucyBjb2xsZWN0ZWQgcmVhZCBpbnB1dHMuICovXG4gIGdldElucHV0cygpOiBSZWFkSW5wdXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRzO1xuICB9XG59XG4iXX0=
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.servedPause = void 0;
|
|
17
|
-
const
|
|
17
|
+
const redaction_js_1 = require("../../memory/redaction.js");
|
|
18
18
|
function servedPause(context, pauseData) {
|
|
19
19
|
const rule = context.getRedactionRule();
|
|
20
20
|
if (!rule)
|
|
@@ -23,8 +23,8 @@ function servedPause(context, pauseData) {
|
|
|
23
23
|
return rule.retainBoundary(pauseData);
|
|
24
24
|
}
|
|
25
25
|
catch {
|
|
26
|
-
return
|
|
26
|
+
return redaction_js_1.SCOPE_PLACEHOLDER;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
exports.servedPause = servedPause;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVkUGF1c2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9oYW5kbGVycy9zZXJ2ZWRQYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7OztHQVlHOzs7QUFFSCw0REFBOEQ7QUFHOUQsU0FBZ0IsV0FBVyxDQUFDLE9BQXFCLEVBQUUsU0FBa0I7SUFDbkUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDeEMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QixJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sZ0NBQWlCLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUM7QUFSRCxrQ0FRQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogc2VydmVkUGF1c2Ug4oCUIHRoZSBPTkUgcGxhY2UgYSBwYXVzZSBwYXlsb2FkJ3MgU0VSVkVEIGZvcm0gaXMgZGVjaWRlZC5cbiAqXG4gKiBBIHBhdXNlIHBheWxvYWQgKGEgcGF1c2FibGUgc3RhZ2UncyByZXR1cm4sIGFuIGBpbnRlcnJ1cHQoKWAgcGF5bG9hZCkgaXMgYVxuICogcmVjb3JkIGhhbmRlZCBvdXQgd2hvbGUsIHNvIGV2ZXJ5IG9ic2VydmVyIGlzIHNlcnZlZCBpdCB1bmRlciB0aGUgcnVuJ3NcbiAqIHJlZGFjdGlvbiBydWxlIChgUmVkYWN0aW9uUnVsZS5yZXRhaW5Cb3VuZGFyeWA6IGl0cyBrZXlzIGF0IGV2ZXJ5IGRlcHRoKSDigJRcbiAqIHRoZSBzY29wZSBhbmQgZmxvdyBgb25QYXVzZWAgZXZlbnRzLCBpbmxpbmUgYW5kIGRlZmVycmVkLCBhbmQgd2l0aCB0aGVtIHRoZVxuICogbmFycmF0aXZlIGFuZCBldmVyeSByZWNvcmRlciByb3cuIFRoZSBDSEVDS1BPSU5UIGtlZXBzIHRoZSByZWFsIHBheWxvYWQ6XG4gKiByZXN1bWUgaGFuZHMgaXQgYmFjayB0byB0aGUgY2FsbGVyLCB3aG8gYXNrZWQgdGhlIHF1ZXN0aW9uLlxuICpcbiAqIFRvdGFsOiBhIHBheWxvYWQgd2hvc2Ugc2NydWIgZmFpbHMgKGFuIHVuY2xvbmVhYmxlIHZhbHVlIHVuZGVyIGEgc2VsZWN0ZWRcbiAqIGZpZWxkKSBpcyBzZXJ2ZWQgYXMgdGhlIHBsYWNlaG9sZGVyIOKAlCBuZXZlciByYXcsIGFuZCBuZXZlciBhIGZhaWxlZCBwYXVzZS5cbiAqL1xuXG5pbXBvcnQgeyBTQ09QRV9QTEFDRUhPTERFUiB9IGZyb20gJy4uLy4uL21lbW9yeS9yZWRhY3Rpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tZW1vcnkvU3RhZ2VDb250ZXh0LmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlZFBhdXNlKGNvbnRleHQ6IFN0YWdlQ29udGV4dCwgcGF1c2VEYXRhOiB1bmtub3duKTogdW5rbm93biB7XG4gIGNvbnN0IHJ1bGUgPSBjb250ZXh0LmdldFJlZGFjdGlvblJ1bGUoKTtcbiAgaWYgKCFydWxlKSByZXR1cm4gcGF1c2VEYXRhO1xuICB0cnkge1xuICAgIHJldHVybiBydWxlLnJldGFpbkJvdW5kYXJ5KHBhdXNlRGF0YSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBTQ09QRV9QTEFDRUhPTERFUjtcbiAgfVxufVxuIl19
|