sliftutils 1.7.83 → 1.7.85
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/dist/treeSummary.ts.cache +2 -2
- package/index.d.ts +5 -2
- package/misc/dist/environment.ts.cache +2 -2
- package/misc/dist/getSecret.ts.cache +2 -2
- package/misc/dist/strings.ts.cache +2 -2
- package/misc/dist/zip.ts.cache +2 -2
- package/misc/https/dist/certs.ts.cache +2 -2
- package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
- package/package.json +2 -2
- package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
- package/storage/IArchives.d.ts +1 -0
- package/storage/IArchives.ts +2 -0
- package/storage/dist/ArchivesDisk.ts.cache +2 -2
- package/storage/dist/FileFolderAPI.tsx.cache +2 -2
- package/storage/dist/IArchives.ts.cache +3 -3
- package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
- package/storage/dist/JSONStorage.ts.cache +2 -2
- package/storage/dist/PendingManager.tsx.cache +2 -2
- package/storage/dist/TransactionStorage.ts.cache +2 -2
- package/storage/dist/backblaze.ts.cache +2 -2
- package/storage/dist/fileSystemPointer.ts.cache +2 -2
- package/storage/dist/remoteFileStorage.ts.cache +2 -2
- package/storage/remoteStorage/accessStats.d.ts +1 -1
- package/storage/remoteStorage/accessStats.ts +5 -8
- package/storage/remoteStorage/blobStore.d.ts +3 -1
- package/storage/remoteStorage/blobStore.ts +52 -21
- package/storage/remoteStorage/createArchives.ts +19 -9
- package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
- package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
- package/storage/remoteStorage/dist/accessStats.ts.cache +8 -12
- package/storage/remoteStorage/dist/blobStore.ts.cache +49 -24
- package/storage/remoteStorage/dist/bucketDisk.ts.cache +2 -2
- package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
- package/storage/remoteStorage/dist/createArchives.ts.cache +20 -11
- package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
- package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
- package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/serverConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/sourceWrapper.ts.cache +5 -4
- package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageServerState.ts.cache +5 -3
- package/storage/remoteStorage/dist/storePlan.ts.cache +2 -2
- package/storage/remoteStorage/dist/validation.ts.cache +2 -2
- package/storage/remoteStorage/sourceWrapper.ts +2 -1
- package/storage/remoteStorage/storageServerState.ts +2 -0
- package/yarn.lock +4 -4
|
@@ -4,7 +4,7 @@ import { runInfinitePoll, delay } from "socket-function/src/batching";
|
|
|
4
4
|
import { timeInMinute, sort, promiseObj } from "socket-function/src/misc";
|
|
5
5
|
import { formatNumber, formatTime } from "socket-function/src/formatting/format";
|
|
6
6
|
import {
|
|
7
|
-
IArchives, ArchiveFileInfo, ArchivesSource, ArchivesSyncStatus, ChangesAfterConfig, FindConfig, HostedConfig, assertValidLastModified,
|
|
7
|
+
IArchives, ArchiveFileInfo, ArchivesSource, ArchivesSyncStatus, ChangesAfterConfig, FindConfig, HostedConfig, SourceConfig, assertValidLastModified,
|
|
8
8
|
windowAcceptsWrites, SyncActivity, FULL_ROUTE, STORAGE_WRONG_VALID_WINDOW, STORAGE_WRONG_ROUTE, copyArchiveFile,
|
|
9
9
|
} from "../IArchives";
|
|
10
10
|
import { ArchivesDisk, applyFindInfoShape } from "../ArchivesDisk";
|
|
@@ -18,7 +18,10 @@ import { SourcesList } from "./sourcesList";
|
|
|
18
18
|
// The storage engine of the remote storage server. Data lives in synchronization sources (at minimum an ArchivesDisk, the local disk); BlobStore keeps an index of every file (path, last modified time, size, and which source currently holds the data) in a BulkDatabase2, and synchronizes the index from all sources (see ArchivesSource in IArchives.ts). Every startup fully rescans each source's metadata, so the index self-heals; the file with the highest write time wins across all sources, so multiple sources need no stacking order. The store also holds its own routing entries (the self entries of the ONE route it serves), so it validates writes itself: valid windows, routes, immutability, and internal-push acceptance.
|
|
19
19
|
|
|
20
20
|
export const DEFAULT_FAST_WRITE_DELAY = timeInMinute * 5;
|
|
21
|
-
|
|
21
|
+
// The most a fast write is buffered before reaching our OWN storage servers (type-"remote" downstream sources) and our own disk - short, so cross-node redundancy and read-your-writes across nodes don't wait the full writeDelay. The writeDelay (default 5 min) is reserved for the non-"remote" sources (backblaze etc). A fast write with a writeDelay shorter than this uses the shorter one for both.
|
|
22
|
+
const MAX_REMOTE_FAST_BUFFER = 1000 * 5;
|
|
23
|
+
// The overlay is polled this often for due flushes - fine enough that the fast (remote) flush lands close to MAX_REMOTE_FAST_BUFFER, not one coarse tick later
|
|
24
|
+
const FAST_FLUSH_POLL = 1000 * 2;
|
|
22
25
|
// Fast writes are never delayed past our own valid window, and within this margin of the window's end they write through immediately - so when the next window's source takes over, the writes are already on disk
|
|
23
26
|
export const WINDOW_END_FLUSH_MARGIN = timeInMinute * 5;
|
|
24
27
|
// Index changes are buffered in memory and written to the BulkDatabase2 in batches
|
|
@@ -116,7 +119,12 @@ type OverlayEntry = {
|
|
|
116
119
|
// A zero-length buffer is a pending delete (tombstone)
|
|
117
120
|
data: Buffer;
|
|
118
121
|
t: number;
|
|
119
|
-
|
|
122
|
+
// When to flush to our own disk + type-"remote" downstream sources (our own storage servers): short, so cross-node reads and redundancy don't wait the full writeDelay
|
|
123
|
+
fastFlushAt: number;
|
|
124
|
+
// When to flush to the remaining (non-"remote") downstream sources, e.g. backblaze: the full writeDelay, coalescing to keep expensive external writes rare
|
|
125
|
+
slowFlushAt: number;
|
|
126
|
+
// Set once the fast flush has run (own disk + remote peers written); the slow flush then only needs the non-remote sources
|
|
127
|
+
fastFlushed?: boolean;
|
|
120
128
|
};
|
|
121
129
|
|
|
122
130
|
// One row of the BulkDatabase2 index (key is the file path)
|
|
@@ -163,6 +171,8 @@ export type BlobSourceSpec = {
|
|
|
163
171
|
noFullSync?: boolean;
|
|
164
172
|
// See ArchivesSource.intermediate
|
|
165
173
|
intermediate?: boolean;
|
|
174
|
+
// See ArchivesSource.sourceConfig (absent for the base disk source)
|
|
175
|
+
sourceConfig?: SourceConfig;
|
|
166
176
|
// Only called for sources that don't match an existing live slot
|
|
167
177
|
create: () => IArchives;
|
|
168
178
|
};
|
|
@@ -553,10 +563,11 @@ export class BlobStore implements IBucketStore {
|
|
|
553
563
|
existing.route = spec.route;
|
|
554
564
|
}
|
|
555
565
|
existing.noFullSync = spec.noFullSync;
|
|
566
|
+
existing.sourceConfig = spec.sourceConfig;
|
|
556
567
|
continue;
|
|
557
568
|
}
|
|
558
569
|
let source = spec.create();
|
|
559
|
-
this.sources.push({ source, url: spec.url, validWindow: spec.validWindow, route: spec.route, noFullSync: spec.noFullSync, intermediate: spec.intermediate, identity: spec.identity });
|
|
570
|
+
this.sources.push({ source, url: spec.url, validWindow: spec.validWindow, route: spec.route, noFullSync: spec.noFullSync, intermediate: spec.intermediate, sourceConfig: spec.sourceConfig, identity: spec.identity });
|
|
560
571
|
this.sourceStates.push(newSourceState());
|
|
561
572
|
this.sourceFileCounts.push(0);
|
|
562
573
|
this.sourceByteCounts.push(0);
|
|
@@ -572,8 +583,9 @@ export class BlobStore implements IBucketStore {
|
|
|
572
583
|
let deadline = this.sources[0].validWindow[1] - WINDOW_END_FLUSH_MARGIN;
|
|
573
584
|
let recapped = 0;
|
|
574
585
|
for (let entry of this.overlay.values()) {
|
|
575
|
-
if (entry.
|
|
576
|
-
entry.
|
|
586
|
+
if (entry.fastFlushAt <= deadline && entry.slowFlushAt <= deadline) continue;
|
|
587
|
+
entry.fastFlushAt = Math.min(entry.fastFlushAt, deadline);
|
|
588
|
+
entry.slowFlushAt = Math.min(entry.slowFlushAt, deadline);
|
|
577
589
|
recapped++;
|
|
578
590
|
}
|
|
579
591
|
if (recapped) {
|
|
@@ -1243,8 +1255,10 @@ export class BlobStore implements IBucketStore {
|
|
|
1243
1255
|
// The delay never extends past our own valid window's end (minus the margin, so the writes are on disk before the next window's source takes over - a deploy switchover is just this too, since its remap ends our window). Past that point fast writes write through immediately.
|
|
1244
1256
|
let deadline = this.sources[0].validWindow[1] - WINDOW_END_FLUSH_MARGIN;
|
|
1245
1257
|
if (writeDelay > 0 && Date.now() < deadline) {
|
|
1246
|
-
|
|
1247
|
-
|
|
1258
|
+
// Own disk + our own storage servers (type-"remote") flush within MAX_REMOTE_FAST_BUFFER; the non-"remote" sources (backblaze) wait the full writeDelay
|
|
1259
|
+
let fastFlushAt = Math.min(Date.now() + Math.min(writeDelay, MAX_REMOTE_FAST_BUFFER), deadline);
|
|
1260
|
+
let slowFlushAt = Math.min(Date.now() + writeDelay, deadline);
|
|
1261
|
+
this.overlay.set(key, { data, t: writeTime, fastFlushAt, slowFlushAt });
|
|
1248
1262
|
return;
|
|
1249
1263
|
}
|
|
1250
1264
|
}
|
|
@@ -1262,7 +1276,8 @@ export class BlobStore implements IBucketStore {
|
|
|
1262
1276
|
return writable;
|
|
1263
1277
|
}
|
|
1264
1278
|
|
|
1265
|
-
|
|
1279
|
+
// config lets a staged fast flush write only PART of the sources: writeBase (our own disk + index) defaults on, and downstream filters which non-base peers get the fan-out (the fast flush writes only type-"remote" peers, the slow flush only the rest). A full write (no config) does base + every route-matching peer, as before.
|
|
1280
|
+
private async writeToSources(key: string, data: Buffer, writeTime: number, config?: { writeBase?: boolean; downstream?: (source: ArchivesSource) => boolean }): Promise<void> {
|
|
1266
1281
|
// The routing file is NEVER synchronized between storage nodes: the writer writes it directly to each node, so we store it on our own disk only (no valid-window filter - routing/valid windows can't possibly apply to the file defining them) and never forward it to other sources.
|
|
1267
1282
|
this.config?.onWriteCounted?.("flushed", data.length);
|
|
1268
1283
|
let isRouting = key === ROUTING_FILE;
|
|
@@ -1271,18 +1286,21 @@ export class BlobStore implements IBucketStore {
|
|
|
1271
1286
|
if (first === undefined) {
|
|
1272
1287
|
throw new Error(`No source accepts writes (every source's valid window is in the past), so writes cannot be stored (store ${this.folder})`);
|
|
1273
1288
|
}
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1289
|
+
if (config?.writeBase ?? true) {
|
|
1290
|
+
// Only our own (first) source blocks the write. Downstream sources are written in the background: a down downstream source must not fail or stall writes, and reconcileSource re-sends anything they missed once they come back.
|
|
1291
|
+
if (data.length === 0) {
|
|
1292
|
+
// A tombstone stores nothing on our own source - the index entry alone records it
|
|
1293
|
+
await this.sources[first].source.del(key);
|
|
1294
|
+
} else {
|
|
1295
|
+
await this.sources[first].source.set(key, data, { lastModified: writeTime, noChecks: true });
|
|
1296
|
+
}
|
|
1297
|
+
this.setIndexEntry(key, { writeTime, size: data.length, sourcesListIndex: this.sourcesListIndexOfSlot(first) });
|
|
1280
1298
|
}
|
|
1281
|
-
this.setIndexEntry(key, { writeTime, size: data.length, sourcesListIndex: this.sourcesListIndexOfSlot(first) });
|
|
1282
1299
|
if (isRouting) return;
|
|
1283
1300
|
let route = getRoute(key);
|
|
1284
1301
|
for (let i of writable) {
|
|
1285
1302
|
if (!routeContains(this.sources[i].route, route)) continue;
|
|
1303
|
+
if (config?.downstream && !config.downstream(this.sources[i])) continue;
|
|
1286
1304
|
// Deletions travel as del carrying the original write time (never as empty sets - set rejects empty buffers). Backblaze materializes such dels as real empty files, so its listings still show the deletion for other stores to scan in as a tombstone.
|
|
1287
1305
|
let push: Promise<unknown>;
|
|
1288
1306
|
if (data.length === 0) {
|
|
@@ -1304,15 +1322,28 @@ export class BlobStore implements IBucketStore {
|
|
|
1304
1322
|
throw new Error(`Large uploads require an ArchivesDisk source, and this store has none (store ${this.folder})`);
|
|
1305
1323
|
}
|
|
1306
1324
|
|
|
1325
|
+
private isRemoteSource(source: ArchivesSource): boolean {
|
|
1326
|
+
return source.sourceConfig?.type === "remote";
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1307
1329
|
private async flushOverlay(force?: boolean): Promise<void> {
|
|
1308
1330
|
let now = Date.now();
|
|
1309
1331
|
for (let [key, entry] of this.overlay) {
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
if (
|
|
1314
|
-
|
|
1332
|
+
let doFast = !entry.fastFlushed && (force || entry.fastFlushAt <= now);
|
|
1333
|
+
let doSlow = force || entry.slowFlushAt <= now;
|
|
1334
|
+
if (!doFast && !doSlow) continue;
|
|
1335
|
+
if (doSlow) {
|
|
1336
|
+
// The remaining sources: if the fast flush already ran, only the non-"remote" ones (own disk + remote peers are done); otherwise everything at once (writeDelay was <= MAX_REMOTE_FAST_BUFFER, or a forced/window-boundary flush)
|
|
1337
|
+
await this.writeToSources(key, entry.data, entry.t, entry.fastFlushed ? { writeBase: false, downstream: s => !this.isRemoteSource(s) } : undefined);
|
|
1338
|
+
// Only remove if it wasn't overwritten while we were flushing
|
|
1339
|
+
if (this.overlay.get(key) === entry) {
|
|
1340
|
+
this.overlay.delete(key);
|
|
1341
|
+
}
|
|
1342
|
+
continue;
|
|
1315
1343
|
}
|
|
1344
|
+
// Fast stage: own disk + our own storage servers only; the entry stays in the overlay for its slow flush
|
|
1345
|
+
await this.writeToSources(key, entry.data, entry.t, { downstream: s => this.isRemoteSource(s) });
|
|
1346
|
+
entry.fastFlushed = true;
|
|
1316
1347
|
}
|
|
1317
1348
|
}
|
|
1318
1349
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNode, sort, watchSlowPromise } from "socket-function/src/misc";
|
|
1
|
+
import { isNode, sort, timeoutToUndefinedSilent, watchSlowPromise } from "socket-function/src/misc";
|
|
2
2
|
import { delay } from "socket-function/src/batching";
|
|
3
3
|
import {
|
|
4
4
|
IArchives, RemoteConfig, RemoteConfigBase, SourceConfig,
|
|
@@ -20,6 +20,7 @@ import { ServerBucketInfo, ActiveBucketInfo, getLocalArchives } from "./storageS
|
|
|
20
20
|
import { isOwnAddress } from "./serverConfig";
|
|
21
21
|
import { RemoteStorageController, STORAGE_NOT_AUTHENTICATED } from "./storageController";
|
|
22
22
|
import { SourceWrapper, RETRY_START_DELAY, RETRY_MAX_DELAY, RETRY_GROWTH } from "./sourceWrapper";
|
|
23
|
+
import { formatTime } from "socket-function/src/formatting/format";
|
|
23
24
|
|
|
24
25
|
const CONFIG_POLL_INTERVAL = 5 * 60 * 1000;
|
|
25
26
|
const WRONG_TARGET_BOUNDARY_WINDOW = 30 * 1000;
|
|
@@ -643,14 +644,16 @@ export class ArchivesChain implements IArchives {
|
|
|
643
644
|
});
|
|
644
645
|
}
|
|
645
646
|
|
|
647
|
+
// Without fallbacks: the AUTHORITATIVE covering ONLY - the first source per route in config order (the same node every write and read targets), down or not. It is NEVER excluded and NEVER substituted, so a listing that can't reach its write nodes retries those same nodes until the deadline and then fails, rather than quietly reading second-hand data off a replica or backblaze. exclude/cooldown/substitution apply ONLY when the caller opted into fallbacks.
|
|
646
648
|
private selectCoveringSources(state: ChainState, config?: { fallbacks?: boolean; exclude?: Set<SourceWrapper> }): SourceWrapper[] {
|
|
647
|
-
// No cooldown preference by default: listings must come from the AUTHORITATIVE sources (the first matching, like every read and write), or they miss just-written data. With fallbacks the caller chose availability over that: known-down sources move to the back so the next source covering their routes substitutes, and sources that failed THIS call are excluded outright.
|
|
648
|
-
let candidates = state.sources.filter(x => configWindowCurrent(x.config) && x.api && !config?.exclude?.has(x));
|
|
649
649
|
if (config?.fallbacks) {
|
|
650
|
+
let candidates = state.sources.filter(x => configWindowCurrent(x.config) && x.api && !config.exclude?.has(x));
|
|
650
651
|
let usable = candidates.filter(x => !x.isOnCooldown());
|
|
651
652
|
let chosen = coverRoutes(usable) || coverRoutes(candidates);
|
|
652
653
|
if (chosen) return chosen;
|
|
654
|
+
throw new Error(`Cannot cover the full route space for ${this.getDebugName()}: the available sources leave a gap (some shards are down or URL-only)`);
|
|
653
655
|
}
|
|
656
|
+
let candidates = state.sources.filter(x => configWindowCurrent(x.config) && x.api);
|
|
654
657
|
let chosen = coverRoutes(candidates);
|
|
655
658
|
if (!chosen) {
|
|
656
659
|
throw new Error(`Cannot cover the full route space for ${this.getDebugName()}: the available sources leave a gap (some shards are down or URL-only)`);
|
|
@@ -659,10 +662,13 @@ export class ArchivesChain implements IArchives {
|
|
|
659
662
|
}
|
|
660
663
|
|
|
661
664
|
private async runOnCovering<T>(operation: string, run: (archives: IArchives) => Promise<T>, config?: { fallbacks?: boolean }): Promise<T[]> {
|
|
665
|
+
let startTime = Date.now();
|
|
662
666
|
let deadline = Date.now() + COVERING_RETRY_TIMEOUT;
|
|
663
667
|
// Sources that failed during this call - with fallbacks, the next attempt covers their routes with the next source holding them instead
|
|
664
668
|
let failed = new Set<SourceWrapper>();
|
|
669
|
+
let tries = 0;
|
|
665
670
|
while (true) {
|
|
671
|
+
tries++;
|
|
666
672
|
let state = await this.getState();
|
|
667
673
|
// Errors name the OPERATION and the SPECIFIC sources that failed - "the find failed because source X is unavailable", never an anonymous failure attributed to the whole chain
|
|
668
674
|
let outcome = await (async (): Promise<{ values: T[] } | { error: Error }> => {
|
|
@@ -674,7 +680,8 @@ export class ArchivesChain implements IArchives {
|
|
|
674
680
|
}
|
|
675
681
|
let values: T[] = [];
|
|
676
682
|
let failures: { source: SourceWrapper; error: Error }[] = [];
|
|
677
|
-
|
|
683
|
+
let time = Date.now();
|
|
684
|
+
await Promise.all(covering.map(async (source, index) => {
|
|
678
685
|
let api = source.api;
|
|
679
686
|
if (!api) {
|
|
680
687
|
failed.add(source);
|
|
@@ -687,17 +694,20 @@ export class ArchivesChain implements IArchives {
|
|
|
687
694
|
if (!source.isConnected()) source.noteFailure();
|
|
688
695
|
failed.add(source);
|
|
689
696
|
failures.push({ source, error: e as Error });
|
|
697
|
+
console.log(`Failed after ${formatTime(Date.now() - time)} index ${index} of ${covering.length}`);
|
|
690
698
|
}
|
|
691
699
|
}));
|
|
692
700
|
if (!failures.length) return { values };
|
|
693
701
|
if (failures.length === 1) {
|
|
694
|
-
return { error: new Error(`${operation} failed because source ${failures[0].source.getDebugName()} is unavailable: ${failures[0].error.
|
|
702
|
+
return { error: new Error(`${operation} failed because source ${failures[0].source.getDebugName()} is unavailable: ${failures[0].error.message ?? failures[0].error}. Fallbacks = ${!!config?.fallbacks}. Tries = ${tries}, Took ${formatTime(Date.now() - startTime)}`) };
|
|
695
703
|
}
|
|
696
|
-
return { error: new Error(`${operation} failed because ${failures.length} of the ${covering.length} covering sources are unavailable: ${failures.map(x => `${x.source.getDebugName()}: ${x.error.
|
|
704
|
+
return { error: new Error(`${operation} failed because ${failures.length} of the ${covering.length} covering sources are unavailable: ${failures.map(x => `${x.source.getDebugName()}: ${x.error.message ?? x.error}`).join(" | ")}. Fallbacks = ${!!config?.fallbacks}. Tries = ${tries}, Took ${formatTime(Date.now() - startTime)}`) };
|
|
697
705
|
})();
|
|
698
706
|
if ("values" in outcome) return outcome.values;
|
|
699
707
|
let error = outcome.error;
|
|
700
|
-
if (Date.now() >= deadline)
|
|
708
|
+
if (Date.now() >= deadline) {
|
|
709
|
+
throw error;
|
|
710
|
+
}
|
|
701
711
|
if (config?.fallbacks && failed.size) {
|
|
702
712
|
let substitutable = false;
|
|
703
713
|
try {
|
|
@@ -705,15 +715,15 @@ export class ArchivesChain implements IArchives {
|
|
|
705
715
|
substitutable = true;
|
|
706
716
|
} catch { }
|
|
707
717
|
if (substitutable) {
|
|
708
|
-
console.
|
|
718
|
+
console.warn(`(retrying with fallbacks) ${error.message}`);
|
|
709
719
|
continue;
|
|
710
720
|
}
|
|
711
721
|
// No substitute covers the failed routes - retry the failed sources themselves after the delay
|
|
712
722
|
failed.clear();
|
|
713
723
|
}
|
|
714
724
|
console.error(`${error.message}. Retrying in ${COVERING_RETRY_DELAY / 1000}s (giving up at ${new Date(deadline).toISOString()}).`);
|
|
725
|
+
void this.recheckAvailability();
|
|
715
726
|
await delay(COVERING_RETRY_DELAY);
|
|
716
|
-
await this.recheckAvailability();
|
|
717
727
|
}
|
|
718
728
|
}
|
|
719
729
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.ArchivesRemote = exports.authenticateStorage = exports.parseStorageUrl = void 0;
|
|
4
4
|
const SocketFunction_1 = require("socket-function/SocketFunction");
|
|
@@ -191,4 +191,4 @@ class ArchivesRemote {
|
|
|
191
191
|
}
|
|
192
192
|
exports.ArchivesRemote = ArchivesRemote;
|
|
193
193
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjaGl2ZXNSZW1vdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBcmNoaXZlc1JlbW90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBZ0U7QUFDaEUsbURBQXdEO0FBQ3hELDJEQUFxRDtBQUNyRCxrREFBNkU7QUFDN0UsNENBQW9PO0FBQ3BPLGlEQUFnRjtBQUNoRiwyREFHNkI7QUFFN0Isa1ZBQWtWO0FBRWxWLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBWTdDLFNBQWdCLGVBQWUsQ0FBQyxHQUFXO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDekQsQ0FBQztBQU5ELDBDQU1DO0FBRUQsdUZBQXVGO0FBQ2hGLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxNQUF5RDtJQUMvRixvSkFBb0o7SUFDcEosK0JBQWMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDekMsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FB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LENBQUMsSUFBSTtvQkFBRSxNQUFNO2dCQUNqQixLQUFLLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksb0JBQW9CLEVBQUUsQ0FBQztvQkFDeEUsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRyxDQUFDO1lBQ0wsQ0FBQztZQUNELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDO2dCQUNELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFBQyxXQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1gsTUFBTSxDQUFDLENBQUM7UUFDWixDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUM1Qix3RkFBd0Y7UUFDeEYsT0FBTyxJQUFBLDJCQUFZLEVBQUMsSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDSjtBQTlKRCx3Q0E4SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb2NrZXRGdW5jdGlvbiB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vU29ja2V0RnVuY3Rpb25cIjtcbmltcG9ydCB7IHRpbWVJbk1pbnV0ZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYmF0Y2hpbmdcIjtcbmltcG9ydCB7IGdldElkZW50aXR5Q0EsIGxvYWRJZGVudGl0eUNBLCBzaWduIH0gZnJvbSBcIi4uLy4uL21pc2MvaHR0cHMvY2VydHNcIjtcbmltcG9ydCB7IElBcmNoaXZlcywgQXJjaGl2ZUZpbGVJbmZvLCBBcmNoaXZlc0NvbmZpZywgQXJjaGl2ZXNTeW5jU3RhdHVzLCBDaGFuZ2VzQWZ0ZXJDb25maWcsIERlbENvbmZpZywgRmluZENvbmZpZywgR2V0Q29uZmlnLCBHZXRJbmZvQ29uZmlnLCBTb3VyY2VDb25maWcsIFNldENvbmZpZywgTEFSR0VfU0VUX1RIUkVTSE9MRCwgYnVmZmVyQ2h1bmtTdHJlYW0gfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBwYXJzZUhvc3RlZFVybCwgZ2V0QnVja2V0QmFzZVVybCwgYnVpbGRGaWxlVXJsIH0gZnJvbSBcIi4vcmVtb3RlQ29uZmlnXCI7XG5pbXBvcnQge1xuICAgIFJlbW90ZVN0b3JhZ2VDb250cm9sbGVyLCBTVE9SQUdFX0FVVEhfUFVSUE9TRSxcbiAgICBTVE9SQUdFX05PVF9BVVRIRU5USUNBVEVELCBTVE9SQUdFX0FDQ0VTU19ERU5JRUQsXG59IGZyb20gXCIuL3N0b3JhZ2VDb250cm9sbGVyXCI7XG5cbi8vIEEgYnVja2V0IG9uIG91ciByZW1vdGUgc3RvcmFnZSBzZXJ2ZXIgKHN0b3JhZ2VTZXJ2ZXIudHMpLCB1c2VkIGxpa2UgQXJjaGl2ZXNCYWNrYmxhemUuIFdvcmtzIGluIE5vZGUuanMgYW5kIHRoZSBicm93c2VyLiBBdXRoZW50aWNhdGVzIHdpdGggdGhpcyBtYWNoaW5lJ3MgY2VydHMudHMgaWRlbnRpdHk7IGlmIHRoZSBhY2NvdW50IGhhc24ndCB0cnVzdGVkIHRoaXMgbWFjaGluZSB5ZXQgaXQgcmVxdWVzdHMgYWNjZXNzLCBhbmQgYnkgZGVmYXVsdCB3YWl0cywgbG9nZ2luZyBpbnN0cnVjdGlvbnMgZXZlcnkgbWludXRlIChjYWxscyBibG9jayB1bnRpbCBhY2Nlc3MgaXMgZ3JhbnRlZCkuXG5cbmNvbnN0IEFDQ0VTU19SRVRSWV9ERUxBWSA9IDEwMDAgKiAzMDtcbmNvbnN0IExBUkdFX0ZJTEVfUEFSVF9TSVpFID0gOCAqIDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgdHlwZSBBcmNoaXZlc1JlbW90ZUNvbmZpZyA9IHtcbiAgICAvLyBUaGUgYnVja2V0J3Mgcm91dGluZyBVUkwsIHdoaWNoIGFkZHJlc3NlcyB0aGUgc2VydmVyLCBhY2NvdW50LCBhbmQgYnVja2V0IGluIG9uZTpcbiAgICAvLyAgaHR0cHM6Ly9zdG9yYWdlLmV4YW1wbGUuY29tOjQ0NDQvZmlsZS88YWNjb3VudD4vPGJ1Y2tldE5hbWU+L3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgIHVybDogc3RyaW5nO1xuICAgIC8vIGZhbHNlOiBhY2Nlc3MtZGVuaWVkIGNhbGxzIHRocm93IGltbWVkaWF0ZWx5ICh0aGUgZXJyb3IgaW5jbHVkZXMgdGhlIGFjY2VzcyBwYWdlIGxpbmspIGluc3RlYWQgb2YgcmVxdWVzdGluZyBhY2Nlc3MgYW5kIGJsb2NraW5nIHVudGlsIGl0IGlzIGdyYW50ZWQgKHRoZSBkZWZhdWx0KS5cbiAgICB3YWl0Rm9yQWNjZXNzPzogYm9vbGVhbjtcbiAgICAvKiogVGhlIGV4YWN0IHJvdXRpbmctY29uZmlnIGVudHJ5IHRoaXMgY29ubmVjdGlvbiByZXByZXNlbnRzLCBzZW50IHdpdGggZXZlcnkgY2FsbCBzbyB0aGUgc2VydmVyIHBpY2tzIHRoZSBtYXRjaGluZyBwZXItcm91dGUgc3RvcmUgKG9uZSBzZXJ2ZXIgaG9zdHMgb25lIHN0b3JlIHBlciByb3V0ZSkuIEluc3RhbmNlcyBidWlsdCBmcm9tIGEgYmFyZSBVUkwgZmFicmljYXRlIG9uZSAtIGl0IHdpbGwgbmV2ZXIgbWF0Y2gsIHdoaWNoIG9ubHkgd29ya3MgZm9yIGNhbGxzIHRoYXQgZG9uJ3Qgc2VsZWN0IGEgc3RvcmUgKGludGVybmFsIHJlYWRzLCBST1VUSU5HX0ZJTEUsIGdldENvbmZpZykuICovXG4gICAgc291cmNlQ29uZmlnOiBTb3VyY2VDb25maWc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdG9yYWdlVXJsKHVybDogc3RyaW5nKTogeyBhZGRyZXNzOiBzdHJpbmc7IHBvcnQ6IG51bWJlciB9IHtcbiAgICBsZXQgdSA9IG5ldyBVUkwodXJsKTtcbiAgICBpZiAodS5wcm90b2NvbCAhPT0gXCJodHRwczpcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0b3JhZ2UgVVJMIG11c3QgdXNlIGh0dHBzLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh1LnByb3RvY29sKX0gaW4gJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICByZXR1cm4geyBhZGRyZXNzOiB1Lmhvc3RuYW1lLCBwb3J0OiArdS5wb3J0IHx8IDQ0MyB9O1xufVxuXG4vLyBBdXRoZW50aWNhdGVzIGEgY29ubmVjdGlvbiB0byBhIHN0b3JhZ2Ugc2VydmVyIHdpdGggdGhpcyBtYWNoaW5lJ3MgY2VydHMudHMgaWRlbnRpdHlcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdXRoZW50aWNhdGVTdG9yYWdlKGNvbmZpZzogeyBhZGRyZXNzOiBzdHJpbmc7IHBvcnQ6IG51bWJlcjsgbm9kZUlkOiBzdHJpbmcgfSk6IFByb21pc2U8eyBtYWNoaW5lSWQ6IHN0cmluZzsgaXA6IHN0cmluZyB9PiB7XG4gICAgLy8gaG9zdFNlcnZlciBub2RlSWRzIGFyZSBtYWNoaW5lLXNwZWNpZmljLCBzbyBjb25uZWN0aW9ucyBieSBkb21haW4gbXVzdCB0YXJnZXQgXCJhbnkgc2VydmVyIGF0IHRoaXMgYWRkcmVzc1wiICh3aGljaCBpcyBob3cgYnJvd3NlcnMgYWx3YXlzIGNvbm5lY3QpXG4gICAgU29ja2V0RnVuY3Rpb24uRU5BQkxFX0NMSUVOVF9NT0RFID0gdHJ1ZTtcbiAgICBsZXQgcm9vdERvbWFpbiA9IGNvbmZpZy5hZGRyZXNzLnNwbGl0KFwiLlwiKS5zbGljZSgtMikuam9pbihcIi5cIik7XG4gICAgYXdhaXQgbG9hZElkZW50aXR5Q0Eocm9vdERvbWFpbik7XG4gICAgbGV0IGNhID0gZ2V0SWRlbnRpdHlDQShyb290RG9tYWluKTtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgcHVycG9zZTogU1RPUkFHRV9BVVRIX1BVUlBPU0UsXG4gICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgIHNlcnZlcjogYCR7Y29uZmlnLmFkZHJlc3N9OiR7Y29uZmlnLnBvcnR9YCxcbiAgICB9O1xuICAgIGxldCBzaWduYXR1cmUgPSBzaWduKHsga2V5OiBjYS5rZXkgfSwgZGF0YSk7XG4gICAgcmV0dXJuIGF3YWl0IFJlbW90ZVN0b3JhZ2VDb250cm9sbGVyLm5vZGVzW2NvbmZpZy5ub2RlSWRdLmF1dGhlbnRpY2F0ZSh7IGNlcnRQZW06IGNhLmNlcnQudG9TdHJpbmcoKSwgc2lnbmF0dXJlLCBkYXRhIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgQXJjaGl2ZXNSZW1vdGUgaW1wbGVtZW50cyBJQXJjaGl2ZXMge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBBcmNoaXZlc1JlbW90ZUNvbmZpZykge1xuICAgICAgICAvLyBob3N0U2VydmVyIG5vZGVJZHMgYXJlIG1hY2hpbmUtc3BlY2lmaWMsIHNvIGNvbm5lY3Rpb25zIGJ5IGRvbWFpbiBtdXN0IHRhcmdldCBcImFueSBzZXJ2ZXIgYXQgdGhpcyBhZGRyZXNzXCIgKHdoaWNoIGlzIGhvdyBicm93c2VycyBhbHdheXMgY29ubmVjdClcbiAgICAgICAgU29ja2V0RnVuY3Rpb24uRU5BQkxFX0NMSUVOVF9NT0RFID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlZCA9IHBhcnNlSG9zdGVkVXJsKHRoaXMuY29uZmlnLnVybCk7XG4gICAgcHJpdmF0ZSBhY2NvdW50ID0gdGhpcy5wYXJzZWQuYWNjb3VudDtcbiAgICBwcml2YXRlIGJ1Y2tldE5hbWUgPSB0aGlzLnBhcnNlZC5idWNrZXROYW1lO1xuICAgIHByaXZhdGUgbm9kZUlkID0gU29ja2V0RnVuY3Rpb24uY29ubmVjdCh7IGFkZHJlc3M6IHRoaXMucGFyc2VkLmFkZHJlc3MsIHBvcnQ6IHRoaXMucGFyc2VkLnBvcnQgfSk7XG4gICAgcHJpdmF0ZSBjb250cm9sbGVyID0gUmVtb3RlU3RvcmFnZUNvbnRyb2xsZXIubm9kZXNbdGhpcy5ub2RlSWRdO1xuICAgIHByaXZhdGUgbGFzdERlbmllZExvZyA9IDA7XG5cbiAgICBwdWJsaWMgZ2V0RGVidWdOYW1lKCkge1xuICAgICAgICByZXR1cm4gYHJlbW90ZVN0b3JhZ2UgJHt0aGlzLnBhcnNlZC5hZGRyZXNzfToke3RoaXMucGFyc2VkLnBvcnR9IGFjY291bnQgJHt0aGlzLmFjY291bnR9IGJ1Y2tldCAke3RoaXMuYnVja2V0TmFtZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFNvY2tldEZ1bmN0aW9uLmlzTm9kZUNvbm5lY3RlZCh0aGlzLm5vZGVJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBpbmcoKTogUHJvbWlzZTx7fT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb250cm9sbGVyLnBpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGF1dGhlbnRpY2F0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgYXV0aGVudGljYXRlU3RvcmFnZSh7IGFkZHJlc3M6IHRoaXMucGFyc2VkLmFkZHJlc3MsIHBvcnQ6IHRoaXMucGFyc2VkLnBvcnQsIG5vZGVJZDogdGhpcy5ub2RlSWQgfSk7XG4gICAgfVxuXG4gICAgLy8gUnVucyBhIGNhbGwsIGF1dGhlbnRpY2F0aW5nIChhbmQgcmUtYXV0aGVudGljYXRpbmcgYWZ0ZXIgcmVjb25uZWN0cykgYXMgbmVlZGVkLiBVbmxpa2UgY2FsbCgpLCBkb2VzIE5PVCB3YWl0IGZvciBhY2NvdW50IGFjY2Vzcy5cbiAgICBwcml2YXRlIGFzeW5jIGNhbGxBdXRoZWQ8VD4oZm5jOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZm5jKCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgaWYgKCFTdHJpbmcoZS5zdGFjayB8fCBlKS5pbmNsdWRlcyhTVE9SQUdFX05PVF9BVVRIRU5USUNBVEVEKSkgdGhyb3cgZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYXV0aGVudGljYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZm5jKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGlzIG1hY2hpbmUgaGFzIGFjY2VzcyB0byB0aGUgYWNjb3VudC4gT3RoZXJ3aXNlIHB1dHMgaW4gYW4gYWNjZXNzIHJlcXVlc3QgYW5kIHJldHVybnMgb3VyIG1hY2hpbmVJZCArIGlwIChzbyB0aGUgY2FsbGVyIGNhbiBkaXNwbGF5IHRoZW0gYWxvbmdzaWRlIHRoZSBsaW5rLCBmb3IgdGhlIGFwcHJvdmVyIHRvIG1hdGNoIHRoZSBpbmNvbWluZyByZXF1ZXN0KSBhbmQgdGhlIGxpbmsgdG8gdGhlIGdyYW50IHBhZ2UuXG4gICAgcHVibGljIGFzeW5jIHdhaXRpbmdGb3JBY2Nlc3MoKTogUHJvbWlzZTx7IGxpbms6IHN0cmluZzsgbWFjaGluZUlkOiBzdHJpbmc7IGlwOiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgc3RhdGUgPSBhd2FpdCB0aGlzLmNhbGxBdXRoZWQoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldEFjY2Vzc1N0YXRlKHsgYWNjb3VudDogdGhpcy5hY2NvdW50IH0pKTtcbiAgICAgICAgaWYgKHN0YXRlLmhhc0FjY2VzcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHJlcXVlc3RlZCA9IGF3YWl0IHRoaXMuY2FsbEF1dGhlZCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIucmVxdWVzdEFjY2Vzcyh7IGFjY291bnQ6IHRoaXMuYWNjb3VudCB9KSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rOiBgaHR0cHM6Ly8ke3RoaXMucGFyc2VkLmFkZHJlc3N9OiR7dGhpcy5wYXJzZWQucG9ydH0vJHt0aGlzLmFjY291bnR9YCxcbiAgICAgICAgICAgIG1hY2hpbmVJZDogcmVxdWVzdGVkLm1hY2hpbmVJZCxcbiAgICAgICAgICAgIGlwOiByZXF1ZXN0ZWQuaXAsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGhhc1dyaXRlQWNjZXNzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgc3RhdGUgPSBhd2FpdCB0aGlzLmNhbGxBdXRoZWQoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldEFjY2Vzc1N0YXRlKHsgYWNjb3VudDogdGhpcy5hY2NvdW50IH0pKTtcbiAgICAgICAgcmV0dXJuICEhc3RhdGUuaGFzQWNjZXNzO1xuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVycyBvdXIgYWNjZXNzIHJlcXVlc3Qgc2VydmVyLXNpZGUgKHNvIGFuIGFkbWluIGhhcyBhIHJlcXVlc3RJZCB0byBncmFudCkgYW5kIGxvZ3MgdGhlIGdyYW50IGluc3RydWN0aW9ucywgYXQgbW9zdCBvbmNlIGEgbWludXRlXG4gICAgcHJpdmF0ZSBhc3luYyByZWdpc3RlckFjY2Vzc1JlcXVlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCByZXF1ZXN0ZWQgPSBhd2FpdCB0aGlzLmNhbGxBdXRoZWQoKCkgPT4gdGhpcy5jb250cm9sbGVyLnJlcXVlc3RBY2Nlc3MoeyBhY2NvdW50OiB0aGlzLmFjY291bnQgfSkpO1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMubGFzdERlbmllZExvZyA+IHRpbWVJbk1pbnV0ZSkge1xuICAgICAgICAgICAgdGhpcy5sYXN0RGVuaWVkTG9nID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBObyBhY2Nlc3MgdG8gc3RvcmFnZSBhY2NvdW50ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5hY2NvdW50KX0gb24gJHt0aGlzLnBhcnNlZC5hZGRyZXNzfToke3RoaXMucGFyc2VkLnBvcnR9IChvdXIgbWFjaGluZSAke3JlcXVlc3RlZC5tYWNoaW5lSWR9LCBpcCAke3JlcXVlc3RlZC5pcH0pLiBTZWUgaHR0cHM6Ly8ke3RoaXMucGFyc2VkLmFkZHJlc3N9OiR7dGhpcy5wYXJzZWQucG9ydH0vJHt0aGlzLmFjY291bnR9IC0gb3IgZ3JhbnQgaXQgd2l0aDogJHtyZXF1ZXN0ZWQuZ3JhbnRBY2Nlc3NDb21tYW5kfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUnVucyBhIGNhbGwsIGF1dGhlbnRpY2F0aW5nIChhbmQgcmUtYXV0aGVudGljYXRpbmcgYWZ0ZXIgcmVjb25uZWN0cykgYW5kIHdhaXRpbmcgZm9yIGFjY291bnQgYWNjZXNzIGFzIG5lZWRlZC4gV2l0aCB3YWl0Rm9yQWNjZXNzIGZhbHNlLCBkZW5pZWQgY2FsbHMgdGhyb3cgaW1tZWRpYXRlbHkgaW5zdGVhZCAtIGJ1dCB0aGUgYWNjZXNzIHJlcXVlc3QgaXMgc3RpbGwgcmVnaXN0ZXJlZCAoaW4gdGhlIGJhY2tncm91bmQpLCBzbyB0aGUgZGVuaWFsIGlzIGdyYW50YWJsZS5cbiAgICBwcml2YXRlIGFzeW5jIGNhbGw8VD4oZm5jOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBmbmMoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gU3RyaW5nKGUuc3RhY2sgfHwgZSk7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoU1RPUkFHRV9OT1RfQVVUSEVOVElDQVRFRCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hdXRoZW50aWNhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKFNUT1JBR0VfQUNDRVNTX0RFTklFRCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLndhaXRGb3JBY2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2b2lkIHRoaXMucmVnaXN0ZXJBY2Nlc3NSZXF1ZXN0KCkuY2F0Y2goKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlckFjY2Vzc1JlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZGVsYXkoQUNDRVNTX1JFVFJZX0RFTEFZKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0KGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldENvbmZpZyk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldDIoZmlsZU5hbWUsIGNvbmZpZyk7XG4gICAgICAgIHJldHVybiByZXN1bHQgJiYgcmVzdWx0LmRhdGEgfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0MihmaWxlTmFtZTogc3RyaW5nLCBjb25maWc/OiBHZXRDb25maWcpOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2FsbCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIuZ2V0Mih7IGFjY291bnQ6IHRoaXMuYWNjb3VudCwgYnVja2V0TmFtZTogdGhpcy5idWNrZXROYW1lLCBwYXRoOiBmaWxlTmFtZSwgc291cmNlQ29uZmlnOiB0aGlzLmNvbmZpZy5zb3VyY2VDb25maWcsIHJhbmdlOiBjb25maWc/LnJhbmdlLCBpbnRlcm5hbDogY29uZmlnPy5pbnRlcm5hbCwgaW5jbHVkZVRvbWJzdG9uZXM6IGNvbmZpZz8uaW5jbHVkZVRvbWJzdG9uZXMgfSkpO1xuICAgICAgICByZXR1cm4gcmVzdWx0ICYmIHsgZGF0YTogQnVmZmVyLmZyb20ocmVzdWx0LmRhdGEpLCB3cml0ZVRpbWU6IHJlc3VsdC53cml0ZVRpbWUsIHNpemU6IHJlc3VsdC5zaXplIH0gfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgc2V0KGZpbGVOYW1lOiBzdHJpbmcsIGRhdGE6IEJ1ZmZlciwgY29uZmlnPzogU2V0Q29uZmlnKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzZXQgd2FzIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGJ1ZmZlciBmb3IgJHtKU09OLnN0cmluZ2lmeShmaWxlTmFtZSl9IG9uICR7dGhpcy5nZXREZWJ1Z05hbWUoKX06IGFuIGVtcHR5IGZpbGUgSVMgYSBkZWxldGlvbiBpbiB0aGlzIHN5c3RlbSBhbmQgd291bGQgcmVhZCBiYWNrIGFzIG1pc3NpbmcgLSBjYWxsIGRlbCBpbnN0ZWFkYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gTEFSR0VfU0VUX1RIUkVTSE9MRCkge1xuICAgICAgICAgICAgLy8gT25lIGdpYW50IG1lc3NhZ2Ugd291bGQgZXhjZWVkIHRoZSB3aXJlIGxpbWl0IGFuZCBsYWcgZXZlcnkgb3RoZXIgY2xpZW50IHNoYXJpbmcgdGhpcyBjb25uZWN0aW9uIC0gc3RyZWFtIGl0IGluc3RlYWQuIChUaGUgbGFyZ2UtZmlsZSBwYXRoIGNhbm5vdCBjYXJyeSBmb3JjZVNldEltbXV0YWJsZS9ub0NoZWNrcy9pbnRlcm5hbDsgbGFyZ2UgcHVzaGVzIGFjY2VwdCBwbGFpbi13cml0ZSBzZW1hbnRpY3MsIGFuZCByZWNvbmNpbGlhdGlvbidzIHBlci1maWxlIGVycm9yIGhhbmRsaW5nIGFic29yYnMgdGhlIHJhcmUgaW1tdXRhYmxlIHJlamVjdGlvbi4pXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldExhcmdlRmlsZSh7IHBhdGg6IGZpbGVOYW1lLCBsYXN0TW9kaWZpZWQ6IGNvbmZpZz8ubGFzdE1vZGlmaWVkLCBnZXROZXh0RGF0YTogYnVmZmVyQ2h1bmtTdHJlYW0oZGF0YSkgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmlsZU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5jYWxsKCgpID0+IHRoaXMuY29udHJvbGxlci5zZXQoeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgcGF0aDogZmlsZU5hbWUsIGRhdGEsIHNvdXJjZUNvbmZpZzogdGhpcy5jb25maWcuc291cmNlQ29uZmlnLCBsYXN0TW9kaWZpZWQ6IGNvbmZpZz8ubGFzdE1vZGlmaWVkLCBmb3JjZVNldEltbXV0YWJsZTogY29uZmlnPy5mb3JjZVNldEltbXV0YWJsZSwgaW50ZXJuYWw6IGNvbmZpZz8uaW50ZXJuYWwgfSkpO1xuICAgICAgICByZXR1cm4gZmlsZU5hbWU7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBkZWwoZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogRGVsQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2FsbCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIuZGVsKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUsIHBhdGg6IGZpbGVOYW1lLCBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZywgbGFzdE1vZGlmaWVkOiBjb25maWc/Lmxhc3RNb2RpZmllZCwgaW50ZXJuYWw6IGNvbmZpZz8uaW50ZXJuYWwgfSkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mbyhmaWxlTmFtZTogc3RyaW5nLCBjb25maWc/OiBHZXRJbmZvQ29uZmlnKTogUHJvbWlzZTx7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jYWxsKCgpID0+IHRoaXMuY29udHJvbGxlci5nZXRJbmZvKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUsIHBhdGg6IGZpbGVOYW1lLCBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZywgaW5jbHVkZVRvbWJzdG9uZXM6IGNvbmZpZz8uaW5jbHVkZVRvbWJzdG9uZXMgfSkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZmluZEluZm8ocHJlZml4OiBzdHJpbmcsIGNvbmZpZz86IEZpbmRDb25maWcpOiBQcm9taXNlPEFyY2hpdmVGaWxlSW5mb1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmZpbmRJbmZvKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUsIHByZWZpeCwgc291cmNlQ29uZmlnOiB0aGlzLmNvbmZpZy5zb3VyY2VDb25maWcsIHNoYWxsb3c6IGNvbmZpZz8uc2hhbGxvdywgdHlwZTogY29uZmlnPy50eXBlIH0pKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGZpbmQocHJlZml4OiBzdHJpbmcsIGNvbmZpZz86IEZpbmRDb25maWcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5maW5kSW5mbyhwcmVmaXgsIGNvbmZpZykpLm1hcCh4ID0+IHgucGF0aCk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRDaGFuZ2VzQWZ0ZXIyKGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jYWxsKCgpID0+IHRoaXMuY29udHJvbGxlci5nZXRDaGFuZ2VzQWZ0ZXIyKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUsIHNvdXJjZUNvbmZpZzogdGhpcy5jb25maWcuc291cmNlQ29uZmlnLCB0aW1lOiBjb25maWcudGltZSwgcm91dGVzOiBjb25maWcucm91dGVzIH0pKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZygpOiBQcm9taXNlPEFyY2hpdmVzQ29uZmlnPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldEFyY2hpdmVzQ29uZmlnKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUgfSkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U3luY1N0YXR1cygpOiBQcm9taXNlPEFyY2hpdmVzU3luY1N0YXR1cz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jYWxsKCgpID0+IHRoaXMuY29udHJvbGxlci5nZXRTeW5jU3RhdHVzKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRMYXJnZUZpbGUoY29uZmlnOiB7IHBhdGg6IHN0cmluZzsgbGFzdE1vZGlmaWVkPzogbnVtYmVyOyBnZXROZXh0RGF0YSgpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBFbnN1cmUgd2UncmUgYXV0aGVudGljYXRlZCB3aXRoIGFjY2VzcyBCRUZPUkUgY29uc3VtaW5nIGFueSBkYXRhICh0aGUgc3RyZWFtIGNhbm5vdCBiZSByZXdvdW5kLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIHJldHJ5IGxvb3AgYXJvdW5kIHRoZSBhY3R1YWwgdXBsb2FkKVxuICAgICAgICBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldEluZm8oeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgcGF0aDogY29uZmlnLnBhdGgsIHNvdXJjZUNvbmZpZzogdGhpcy5jb25maWcuc291cmNlQ29uZmlnIH0pKTtcbiAgICAgICAgbGV0IHVwbG9hZElkID0gYXdhaXQgdGhpcy5jb250cm9sbGVyLnN0YXJ0TGFyZ2VGaWxlKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUsIHBhdGg6IGNvbmZpZy5wYXRoLCBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZywgbGFzdE1vZGlmaWVkOiBjb25maWcubGFzdE1vZGlmaWVkIH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IGNvbmZpZy5nZXROZXh0RGF0YSgpO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YSkgYnJlYWs7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgZGF0YS5sZW5ndGg7IG9mZnNldCArPSBMQVJHRV9GSUxFX1BBUlRfU0laRSkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRyb2xsZXIudXBsb2FkUGFydCh7IHVwbG9hZElkLCBkYXRhOiBkYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgTEFSR0VfRklMRV9QQVJUX1NJWkUpIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29udHJvbGxlci5maW5pc2hMYXJnZUZpbGUoeyB1cGxvYWRJZCB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRyb2xsZXIuY2FuY2VsTGFyZ2VGaWxlKHsgdXBsb2FkSWQgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRVUkwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgLy8gT25seSBhY3R1YWxseSBsb2FkcyBmb3IgcHVibGljIGJ1Y2tldHMgKHRoZSBzZXJ2ZXIgcmVqZWN0cyBwbGFpbiBVUkwgcmVhZHMgb3RoZXJ3aXNlKVxuICAgICAgICByZXR1cm4gYnVpbGRGaWxlVXJsKGdldEJ1Y2tldEJhc2VVcmwodGhpcy5jb25maWcudXJsKSwgcGF0aCk7XG4gICAgfVxufVxuIl19
|
|
194
|
-
/* _JS_SOURCE_HASH = "
|
|
194
|
+
/* _JS_SOURCE_HASH = "5df70282c49e721cd0f066e4cf30d7a2bc1a0dd5bdc2d87fa793cba6918c6d4a"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.ArchivesUrl = void 0;
|
|
4
4
|
const https_1 = require("socket-function/src/https");
|
|
@@ -102,4 +102,4 @@ class ArchivesUrl {
|
|
|
102
102
|
}
|
|
103
103
|
exports.ArchivesUrl = ArchivesUrl;
|
|
104
104
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjaGl2ZXNVcmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBcmNoaXZlc1VybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBNEU7QUFFNUUsaURBQThDO0FBRTlDLGtGQUFrRjtBQUNsRixnTUFBZ007QUFFaE0sTUFBYSxXQUFXO0lBQ3BCLDJGQUEyRjtJQUMzRixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtJQUFJLENBQUM7SUFFOUIsWUFBWTtRQUNmLE9BQU8sT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxTQUFpQjtRQUNuQyxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsU0FBUyx5R0FBeUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkosQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxNQUFrQjtRQUNqRCxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFDTSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQWdCLEVBQUUsTUFBa0I7UUFDbEQsSUFBSSxHQUFHLEdBQUcsSUFBQSwyQkFBWSxFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUMsSUFBSSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLEtBQUssR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFF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SjtBQTVGRCxrQ0E0RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBodHRwc1JlcXVlc3QsIEh0dHBzUmVzcG9uc2VJbmZvIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvaHR0cHNcIjtcbmltcG9ydCB7IElBcmNoaXZlcywgQXJjaGl2ZUZpbGVJbmZvLCBBcmNoaXZlc0NvbmZpZywgQ2hhbmdlc0FmdGVyQ29uZmlnLCBGaW5kQ29uZmlnLCBHZXRDb25maWcsIEdldEluZm9Db25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBidWlsZEZpbGVVcmwgfSBmcm9tIFwiLi9yZW1vdGVDb25maWdcIjtcblxuLy8gUmVhZC1vbmx5IElBcmNoaXZlcyBvdmVyIGEgcHVibGljIGJ1Y2tldCdzIHBsYWluLVVSTCBmb3JtIChvdXIgc3RvcmFnZSBzZXJ2ZXInc1xuLy8gL2ZpbGUvPGFjY291bnQ+LzxidWNrZXROYW1lPi8uLi4gcm91dGUsIG9yIGEgYmFja2JsYXplIGZyaWVuZGx5IFVSTCkuIFVzZWQgd2hlbiB3ZSBoYXZlIG5vIEFQSSBhY2Nlc3MgdG8gYSBzb3VyY2UuIE9ubHkgc2luZ2xlLWZpbGUgcmVhZHMgd29yazogdGhlcmUgaXMgbm8gbGlzdGluZywgYW5kIHdyaXRlcyBhbHdheXMgdGhyb3cuXG5cbmV4cG9ydCBjbGFzcyBBcmNoaXZlc1VybCBpbXBsZW1lbnRzIElBcmNoaXZlcyB7XG4gICAgLy8gYmFzZSBpcyB0aGUgYnVja2V0J3MgcHVibGljIGJhc2UgVVJMLCBlLmcuIGh0dHBzOi8vaG9zdDpwb3J0L2ZpbGUvPGFjY291bnQ+LzxidWNrZXROYW1lPlxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFzZTogc3RyaW5nKSB7IH1cblxuICAgIHB1YmxpYyBnZXREZWJ1Z05hbWUoKSB7XG4gICAgICAgIHJldHVybiBgdXJsICR7dGhpcy5iYXNlfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkT25seUVycm9yKG9wZXJhdGlvbjogc3RyaW5nKTogRXJyb3Ige1xuICAgICAgICByZXR1cm4gbmV3IEVycm9yKGAke29wZXJhdGlvbn0gaXMgbm90IHN1cHBvcnRlZCBvdmVyIFVSTC1mb3JtIGFjY2VzcyAobm8gQVBJIGFjY2VzcyB0byB0aGlzIHNvdXJjZSwgb25seSBwdWJsaWMgVVJMIHJlYWRzKS4gU291cmNlOiAke3RoaXMuYmFzZX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0KGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldENvbmZpZyk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldDIoZmlsZU5hbWUsIGNvbmZpZyk7XG4gICAgICAgIHJldHVybiByZXN1bHQgJiYgcmVzdWx0LmRhdGEgfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0MihmaWxlTmFtZTogc3RyaW5nLCBjb25maWc/OiBHZXRDb25maWcpOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IHVybCA9IGJ1aWxkRmlsZVVybCh0aGlzLmJhc2UsIGZpbGVOYW1lKTtcbiAgICAgICAgbGV0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgbGV0IHJhbmdlID0gY29uZmlnPy5yYW5nZTtcbiAgICAgICAgaWYgKHJhbmdlKSB7XG4gICAgICAgICAgICBoZWFkZXJzW1wiUmFuZ2VcIl0gPSBgYnl0ZXM9JHtyYW5nZS5zdGFydH0tJHtyYW5nZS5lbmQgLSAxfWA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3BvbnNlOiBIdHRwc1Jlc3BvbnNlSW5mbyA9IHsgaGVhZGVyczoge30gfTtcbiAgICAgICAgbGV0IGRhdGE6IEJ1ZmZlcjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRhdGEgPSBhd2FpdCBodHRwc1JlcXVlc3QodXJsLCB1bmRlZmluZWQsIFwiR0VUXCIsIGZhbHNlLCB7IGhlYWRlcnMsIG91dFJlc3BvbnNlOiByZXNwb25zZSB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gaHR0cHNSZXF1ZXN0IHRocm93cyBvbiBhbnkgbm9uLTJ4eDsgYSBtaXNzaW5nIGZpbGUgaXMgYSBub3JtYWwgYWJzZW50IHJlc3VsdCwgbm90IGFuIGVycm9yLlxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDQwNCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQSByZWFsIDIwNiBvbmx5IHJldHVybnMgdGhlIHJlcXVlc3RlZCBzbGljZSwgc28gdGhlIGZ1bGwgc2l6ZSBsaXZlcyBpbiBDb250ZW50LVJhbmdlJ3MgdG90YWwuXG4gICAgICAgIGxldCBzaXplID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIGxldCBjb250ZW50UmFuZ2UgPSByZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC1yYW5nZVwiXTtcbiAgICAgICAgbGV0IHRvdGFsID0gY29udGVudFJhbmdlICYmIE51bWJlcihjb250ZW50UmFuZ2Uuc3BsaXQoXCIvXCIpWzFdKTtcbiAgICAgICAgaWYgKHRvdGFsICYmIE51bWJlci5pc0Zpbml0ZSh0b3RhbCkpIHtcbiAgICAgICAgICAgIHNpemUgPSB0b3RhbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXJ2ZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCByYW5nZXMgcmV0dXJuIHRoZSBmdWxsIGZpbGUgd2l0aCBhIDIwMCAob3VycyBzZXJ2ZXMgcmVhbCAyMDZzLCBidXQgYmFja2JsYXplIGZyaWVuZGx5IFVSTHMgYW5kIHByb3hpZXMgbWF5IG5vdClcbiAgICAgICAgaWYgKHJhbmdlICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgZGF0YSA9IGRhdGEuc3ViYXJyYXkoTWF0aC5taW4ocmFuZ2Uuc3RhcnQsIGRhdGEubGVuZ3RoKSwgTWF0aC5taW4ocmFuZ2UuZW5kLCBkYXRhLmxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXN0TW9kaWZpZWQgPSByZXNwb25zZS5oZWFkZXJzW1wibGFzdC1tb2RpZmllZFwiXTtcbiAgICAgICAgbGV0IHdyaXRlVGltZSA9IGxhc3RNb2RpZmllZCAmJiBuZXcgRGF0ZShsYXN0TW9kaWZpZWQpLmdldFRpbWUoKSB8fCAwO1xuICAgICAgICAvLyBBIHNpemUtMCBhbnN3ZXIgaXMgYSB0b21ic3RvbmUgKGJhY2tibGF6ZSBmcmllbmRseSBVUkxzIHNlcnZlIGRlbGV0aW9ucyBhcyByZWFsIGVtcHR5IGZpbGVzOyBvdXIgb3duIHNlcnZlcnMgNDA0IHRoZW0pIC0gYWJzZW50LCB1bmxlc3MgdGhlIGNhbGxlciBhc2tlZCBmb3IgdG9tYnN0b25lcy4gUmFuZ2VkIHJlYWRzIG9mIGEgUkVBTCBmaWxlIGNhbiBsZWdpdGltYXRlbHkgcmV0dXJuIG5vIGJ5dGVzIChyYW5nZSBwYXN0IEVPRiksIHdoaWNoIHRoZSB0b3RhbCBzaXplIGRpc3Rpbmd1aXNoZXMuXG4gICAgICAgIGlmICghc2l6ZSAmJiAhY29uZmlnPy5pbmNsdWRlVG9tYnN0b25lcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHsgZGF0YSwgd3JpdGVUaW1lLCBzaXplIH07XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvKGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldEluZm9Db25maWcpOiBQcm9taXNlPHsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIEEgMS1ieXRlIHJhbmdlZCByZWFkOiBDb250ZW50LVJhbmdlIGNhcnJpZXMgdGhlIGZ1bGwgc2l6ZSBhbmQgTGFzdC1Nb2RpZmllZCB0aGUgd3JpdGUgdGltZSwgc28gbWV0YWRhdGEgbmV2ZXIgZG93bmxvYWRzIHRoZSBmaWxlXG4gICAgICAgIGxldCByZXN1bHQ6IHsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXQyKGZpbGVOYW1lLCB7IHJhbmdlOiB7IHN0YXJ0OiAwLCBlbmQ6IDEgfSwgaW5jbHVkZVRvbWJzdG9uZXM6IGNvbmZpZz8uaW5jbHVkZVRvbWJzdG9uZXMgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gU29tZSBzZXJ2ZXJzIHJlamVjdCByYW5nZWQgcmVhZHMgb2YgZW1wdHkgZmlsZXMgKDQxNiBpbnN0ZWFkIG9mIGFuIGVtcHR5IDIwNik7IGEgZnVsbCByZWFkIGlzIHRoZSBmYWxsYmFjaywgYW5kIGZvciBhbiBlbXB0eSBmaWxlIGl0IGlzIGZyZWUgYW55d2F5XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmdldDIoZmlsZU5hbWUsIHsgaW5jbHVkZVRvbWJzdG9uZXM6IGNvbmZpZz8uaW5jbHVkZVRvbWJzdG9uZXMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghcmVzdWx0LnNpemUgJiYgIWNvbmZpZz8uaW5jbHVkZVRvbWJzdG9uZXMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7IHdyaXRlVGltZTogcmVzdWx0LndyaXRlVGltZSwgc2l6ZTogcmVzdWx0LnNpemUgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0KGZpbGVOYW1lOiBzdHJpbmcsIGRhdGE6IEJ1ZmZlciwgY29uZmlnPzogeyBsYXN0TW9kaWZpZWQ/OiBudW1iZXIgfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRocm93IHRoaXMucmVhZE9ubHlFcnJvcihcInNldFwiKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGRlbChmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IHRoaXMucmVhZE9ubHlFcnJvcihcImRlbFwiKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIHNldExhcmdlRmlsZShjb25maWc6IHsgcGF0aDogc3RyaW5nOyBnZXROZXh0RGF0YSgpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyB0aGlzLnJlYWRPbmx5RXJyb3IoXCJzZXRMYXJnZUZpbGVcIik7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBmaW5kKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiBGaW5kQ29uZmlnKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICB0aHJvdyB0aGlzLnJlYWRPbmx5RXJyb3IoXCJmaW5kIChsaXN0aW5nKVwiKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGZpbmRJbmZvKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiBGaW5kQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICB0aHJvdyB0aGlzLnJlYWRPbmx5RXJyb3IoXCJmaW5kSW5mbyAobGlzdGluZylcIik7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRDaGFuZ2VzQWZ0ZXIyKGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICB0aHJvdyB0aGlzLnJlYWRPbmx5RXJyb3IoXCJnZXRDaGFuZ2VzQWZ0ZXIyIChsaXN0aW5nKVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VVJMKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBidWlsZEZpbGVVcmwodGhpcy5iYXNlLCBwYXRoKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZygpOiBQcm9taXNlPEFyY2hpdmVzQ29uZmlnPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaGFzV3JpdGVBY2Nlc3MoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
105
|
-
/* _JS_SOURCE_HASH = "
|
|
105
|
+
/* _JS_SOURCE_HASH = "29bec06d3f19e45b18f34310d10c29b887a0180ed9d475fc9ed294acd5acbf7f"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.clearAccountAccessStats = exports.readAccessSummaries = exports.getAccessTotals = exports.trackAccessCall = exports.trackAccess = void 0;
|
|
4
4
|
const treeSummary_1 = require("../../treeSummary");
|
|
@@ -44,7 +44,7 @@ function trackAccess(config) {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
exports.trackAccess = trackAccess;
|
|
47
|
-
/** Method decorator factory, for API methods whose single config-object argument has account and bucketName: tracks the access (as `bucketName/path`) after the method succeeds. Sizes come from the config's data (writes) or the result's data (reads); operations without either are count-only. Array results (listings
|
|
47
|
+
/** Method decorator factory, for API methods whose single config-object argument has account and bucketName: tracks the access (as `bucketName/path`) after the method succeeds. Sizes come from the config's data (writes) or the result's data (reads); operations without either are count-only. Array results (listings - findInfo, getChangesAfter) are tracked as two count-only operations: "<op> queries" at the query prefix (one per call), and "<op> results" at each returned path (one per result). */
|
|
48
48
|
function trackAccessCall(operation) {
|
|
49
49
|
return function (target, key, descriptor) {
|
|
50
50
|
let original = descriptor.value;
|
|
@@ -53,14 +53,10 @@ function trackAccessCall(operation) {
|
|
|
53
53
|
let result = await original.apply(this, args);
|
|
54
54
|
let base = `${config.bucketName}/`;
|
|
55
55
|
if (Array.isArray(result)) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// The paths are only known once the results are in; an empty result still counts as one access at the prefix
|
|
63
|
-
trackAccess({ account: config.account, operation, path: base + (config.prefix || config.path || "") });
|
|
56
|
+
// Two separate breakdowns, both count-only: WHAT was queried, and WHAT was returned
|
|
57
|
+
trackAccess({ account: config.account, operation: `${operation} queries`, path: base + (config.prefix || config.path || "") });
|
|
58
|
+
for (let entry of result) {
|
|
59
|
+
trackAccess({ account: config.account, operation: `${operation} results`, path: base + entry.path });
|
|
64
60
|
}
|
|
65
61
|
return result;
|
|
66
62
|
}
|
|
@@ -109,5 +105,5 @@ function clearAccountAccessStats(account) {
|
|
|
109
105
|
}
|
|
110
106
|
}
|
|
111
107
|
exports.clearAccountAccessStats = clearAccountAccessStats;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzU3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhY2Nlc3NTdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBOEQ7QUFFOUQsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFjbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7QUFFaEUsU0FBUyxRQUFRLENBQUMsUUFBd0M7SUFDdEQsT0FBTyxJQUFJLHlCQUFXLENBQWtDO1FBQ3BELE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJO1FBQzVCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25DLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxDQUFDO1FBQ0QsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUs7UUFDbkMsbUJBQW1CLEVBQUUscUJBQXFCO0tBQzdDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCx5TUFBeU07QUFDek0sU0FBZ0IsV0FBVyxDQUFDLE1BQTJFO0lBQ25HLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFV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QUN0QixzSEFBc0g7SUFDdEgsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM5QixJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksUUFBUSxFQUFFLENBQUM7UUFDbEMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQVZELGtEQVVDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsT0FBZTtJQUNuRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHVEQUF1RCxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7QUFDTCxDQUFDO0FBSkQsMERBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmVlU3VtbWFyeSwgU3VtbWFyeUVudHJ5IH0gZnJvbSBcIi4uLy4uL3RyZWVTdW1tYXJ5XCI7XG5cbmNvbnN0IEVYUEVDVEVEX09VVFBVVF9DT1VOVCA9IDEwMDtcblxuZXhwb3J0IHR5cGUgQWNjZXNzU3VtbWFyeVN0YXRlID0geyB0b3RhbDogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBBY2Nlc3NUb3RhbHMgPSB7IFtvcGVyYXRpb246IHN0cmluZ106IHsgY291bnQ6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfTtcblxudHlwZSBBY2Nlc3NWYWx1ZSA9IHsgcGF0aDogc3RyaW5nOyBzaXplOiBudW1iZXIgfTtcbnR5cGUgT3BlcmF0aW9uU3RhdHMgPSB7XG4gICAgdG90YWxDb3VudDogbnVtYmVyO1xuICAgIHRvdGFsU2l6ZTogbnVtYmVyO1xuICAgIGNvdW50VHJlZTogVHJlZVN1bW1hcnk8QWNjZXNzVmFsdWUsIEFjY2Vzc1N1bW1hcnlTdGF0ZT47XG4gICAgLy8gT25seSBleGlzdHMgZm9yIG9wZXJhdGlvbnMgdHJhY2tlZCB3aXRoIHNpemVzOyBjb3VudC1vbmx5IG9wZXJhdGlvbnMgKGdldEluZm8sIGRlbCwgLi4uKSBoYXZlIG5vIG1lYW5pbmdmdWwgc2l6ZSBicmVha2Rvd24uXG4gICAgc2l6ZVRyZWU/OiBUcmVlU3VtbWFyeTxBY2Nlc3NWYWx1ZSwgQWNjZXNzU3VtbWFyeVN0YXRlPjtcbn07XG5cbmNvbnN0IGFjY291bnRzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIE9wZXJhdGlvblN0YXRzPj4oKTtcblxuZnVuY3Rpb24gbWFrZVRyZWUoZ2V0VmFsdWU6ICh2YWx1ZTogQWNjZXNzVmFsdWUpID0+IG51bWJlcik6IFRyZWVTdW1tYXJ5PEFjY2Vzc1ZhbHVlLCBBY2Nlc3NTdW1tYXJ5U3RhdGU+IHtcbiAgICByZXR1cm4gbmV3IFRyZWVTdW1tYXJ5PEFjY2Vzc1ZhbHVlLCBBY2Nlc3NTdW1tYXJ5U3RhdGU+KHtcbiAgICAgICAgZ2V0UGF0aDogdmFsdWUgPT4gdmFsdWUucGF0aCxcbiAgICAgICAgY3JlYXRlU3VtbWFyeTogKCkgPT4gKHsgdG90YWw6IDAgfSksXG4gICAgICAgIGFkZFRvU3VtbWFyeTogKHZhbHVlLCBzdW1tYXJ5KSA9PiB7XG4gICAgICAgICAgICBzdW1tYXJ5LnRvdGFsICs9IGdldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyZ2VTdW1tYXJpZXM6ICh0YXJnZXQsIHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgdGFyZ2V0LnRvdGFsICs9IHNvdXJjZS50b3RhbDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0V2VpZ2h0OiBzdW1tYXJ5ID0+IHN1bW1hcnkudG90YWwsXG4gICAgICAgIGV4cGVjdGVkT3V0cHV0Q291bnQ6IEVYUEVDVEVEX09VVFBVVF9DT1VOVCxcbiAgICB9KTtcbn1cblxuLyoqIENvdW50cyBvbmUgc3RvcmFnZSBhY2Nlc3MsIGluIG1lbW9yeSBvbmx5LiBzaXplIGlzIHRoZSBieXRlcyBpbnZvbHZlZCAoMCB3aGVuIHRoZSB0YXJnZXQgZG9lcyBub3QgZXhpc3QpOyBvbWl0IGl0IGVudGlyZWx5IGZvciBvcGVyYXRpb25zIHRoYXQgb25seSBjb3VudCBjYWxscywgd2hpY2ggdGhlbiBvbmx5IGdldCBhIGNvdW50IHRyZWUuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tBY2Nlc3MoY29uZmlnOiB7IGFjY291bnQ6IHN0cmluZzsgb3BlcmF0aW9uOiBzdHJpbmc7IHBhdGg6IHN0cmluZzsgc2l6ZT86IG51bWJlciB9KTogdm9pZCB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSBhY2NvdW50cy5nZXQoY29uZmlnLmFjY291bnQpO1xuICAgIGlmICghb3BlcmF0aW9ucykge1xuICAgICAgICBvcGVyYXRpb25zID0gbmV3IE1hcCgpO1xuICAgICAgICBhY2NvdW50cy5zZXQoY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbnMpO1xuICAgIH1cbiAgICBsZXQgc3RhdHMgPSBvcGVyYXRpb25zLmdldChjb25maWcub3BlcmF0aW9uKTtcbiAgICBpZiAoIXN0YXRzKSB7XG4gICAgICAgIHN0YXRzID0geyB0b3RhbENvdW50OiAwLCB0b3RhbFNpemU6IDAsIGNvdW50VHJlZTogbWFrZVRyZWUoKCkgPT4gMSkgfTtcbiAgICAgICAgb3BlcmF0aW9ucy5zZXQoY29uZmlnLm9wZXJhdGlvbiwgc3RhdHMpO1xuICAgIH1cbiAgICBsZXQgdmFsdWU6IEFjY2Vzc1ZhbHVlID0geyBwYXRoOiBjb25maWcucGF0aCwgc2l6ZTogY29uZmlnLnNpemUgfHwgMCB9O1xuICAgIHN0YXRzLnRvdGFsQ291bnQrKztcbiAgICBzdGF0cy5jb3VudFRyZWUuYWRkKHZhbHVlKTtcbiAgICBpZiAoY29uZmlnLnNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgc2l6ZVRyZWUgPSBzdGF0cy5zaXplVHJlZTtcbiAgICAgICAgaWYgKCFzaXplVHJlZSkge1xuICAgICAgICAgICAgc2l6ZVRyZWUgPSBtYWtlVHJlZSh2ID0+IHYuc2l6ZSk7XG4gICAgICAgICAgICBzdGF0cy5zaXplVHJlZSA9IHNpemVUcmVlO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRzLnRvdGFsU2l6ZSArPSBjb25maWcuc2l6ZTtcbiAgICAgICAgc2l6ZVRyZWUuYWRkKHZhbHVlKTtcbiAgICB9XG59XG5cbi8qKiBNZXRob2QgZGVjb3JhdG9yIGZhY3RvcnksIGZvciBBUEkgbWV0aG9kcyB3aG9zZSBzaW5nbGUgY29uZmlnLW9iamVjdCBhcmd1bWVudCBoYXMgYWNjb3VudCBhbmQgYnVja2V0TmFtZTogdHJhY2tzIHRoZSBhY2Nlc3MgKGFzIGBidWNrZXROYW1lL3BhdGhgKSBhZnRlciB0aGUgbWV0aG9kIHN1Y2NlZWRzLiBTaXplcyBjb21lIGZyb20gdGhlIGNvbmZpZydzIGRhdGEgKHdyaXRlcykgb3IgdGhlIHJlc3VsdCdzIGRhdGEgKHJlYWRzKTsgb3BlcmF0aW9ucyB3aXRob3V0IGVpdGhlciBhcmUgY291bnQtb25seS4gQXJyYXkgcmVzdWx0cyAobGlzdGluZ3MpIHRyYWNrIG9uZSBhY2Nlc3MgcGVyIHJldHVybmVkIHBhdGgsIG9yIGEgc2luZ2xlIGFjY2VzcyBhdCB0aGUgcHJlZml4IHdoZW4gZW1wdHkuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tBY2Nlc3NDYWxsKG9wZXJhdGlvbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IHVua25vd24sIGtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiB2b2lkIHtcbiAgICAgICAgbGV0IG9yaWdpbmFsID0gZGVzY3JpcHRvci52YWx1ZSBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICAgICAgbGV0IGNvbmZpZyA9IGFyZ3NbMF0gYXMgeyBhY2NvdW50OiBzdHJpbmc7IGJ1Y2tldE5hbWU6IHN0cmluZzsgcGF0aD86IHN0cmluZzsgcHJlZml4Pzogc3RyaW5nOyBkYXRhPzogQnVmZmVyIH07XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICBsZXQgYmFzZSA9IGAke2NvbmZpZy5idWNrZXROYW1lfS9gO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIHJlc3VsdCBhcyB7IHBhdGg6IHN0cmluZyB9W10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQWNjZXNzKHsgYWNjb3VudDogY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbiwgcGF0aDogYmFzZSArIGVudHJ5LnBhdGggfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGF0aHMgYXJlIG9ubHkga25vd24gb25jZSB0aGUgcmVzdWx0cyBhcmUgaW47IGFuIGVtcHR5IHJlc3VsdCBzdGlsbCBjb3VudHMgYXMgb25lIGFjY2VzcyBhdCB0aGUgcHJlZml4XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQWNjZXNzKHsgYWNjb3VudDogY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbiwgcGF0aDogYmFzZSArIChjb25maWcucHJlZml4IHx8IGNvbmZpZy5wYXRoIHx8IFwiXCIpIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChjb25maWcuZGF0YSkge1xuICAgICAgICAgICAgICAgIHNpemUgPSBjb25maWcuZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gKHJlc3VsdCBhcyB7IGRhdGE/OiBCdWZmZXIgfSB8IHVuZGVmaW5lZCk/LmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHNpemUgPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyYWNrQWNjZXNzKHsgYWNjb3VudDogY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbiwgcGF0aDogYmFzZSArIGNvbmZpZy5wYXRoLCBzaXplIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjZXNzVG90YWxzKGFjY291bnQ6IHN0cmluZyk6IEFjY2Vzc1RvdGFscyB7XG4gICAgbGV0IHJlc3VsdDogQWNjZXNzVG90YWxzID0ge307XG4gICAgbGV0IG9wZXJhdGlvbnMgPSBhY2NvdW50cy5nZXQoYWNjb3VudCk7XG4gICAgaWYgKCFvcGVyYXRpb25zKSByZXR1cm4gcmVzdWx0O1xuICAgIGZvciAobGV0IFtvcGVyYXRpb24sIHN0YXRzXSBvZiBvcGVyYXRpb25zKSB7XG4gICAgICAgIHJlc3VsdFtvcGVyYXRpb25dID0geyBjb3VudDogc3RhdHMudG90YWxDb3VudCwgc2l6ZTogc3RhdHMudG90YWxTaXplIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQWNjZXNzU3VtbWFyaWVzKGNvbmZpZzogeyBhY2NvdW50OiBzdHJpbmc7IG9wZXJhdGlvbjogc3RyaW5nOyBtYXhDb3VudDogbnVtYmVyOyB3ZWlnaHRCeVNpemU/OiBib29sZWFuIH0pOiBTdW1tYXJ5RW50cnk8QWNjZXNzU3VtbWFyeVN0YXRlPltdIHtcbiAgICBsZXQgb3BlcmF0aW9ucyA9IGFjY291bnRzLmdldChjb25maWcuYWNjb3VudCk7XG4gICAgbGV0IHN0YXRzID0gb3BlcmF0aW9ucyAmJiBvcGVyYXRpb25zLmdldChjb25maWcub3BlcmF0aW9uKTtcbiAgICBpZiAoIXN0YXRzKSByZXR1cm4gW107XG4gICAgLy8gQ291bnQtb25seSBvcGVyYXRpb25zIGhhdmUgbm8gc2l6ZSB0cmVlLCBpbiB3aGljaCBjYXNlIHdlaWdodEJ5U2l6ZSBpcyBpZ25vcmVkIGFuZCB0aGUgY291bnQgYnJlYWtkb3duIGlzIHJldHVybmVkLlxuICAgIGxldCBzaXplVHJlZSA9IHN0YXRzLnNpemVUcmVlO1xuICAgIGlmIChjb25maWcud2VpZ2h0QnlTaXplICYmIHNpemVUcmVlKSB7XG4gICAgICAgIHJldHVybiBzaXplVHJlZS5nZXRTdW1tYXJpZXMoY29uZmlnLm1heENvdW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRzLmNvdW50VHJlZS5nZXRTdW1tYXJpZXMoY29uZmlnLm1heENvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQWNjb3VudEFjY2Vzc1N0YXRzKGFjY291bnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhY2NvdW50cy5kZWxldGUoYWNjb3VudCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coYENsZWFyZWQgdGhlIGluLW1lbW9yeSBhY2Nlc3Mgc3RhdGlzdGljcyBmb3IgYWNjb3VudCAke2FjY291bnR9YCk7XG4gICAgfVxufVxuIl19
|
|
113
|
-
/* _JS_SOURCE_HASH = "
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzU3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhY2Nlc3NTdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBOEQ7QUFFOUQsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFjbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7QUFFaEUsU0FBUyxRQUFRLENBQUMsUUFBd0M7SUFDdEQsT0FBTyxJQUFJLHlCQUFXLENBQWtDO1FBQ3BELE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJO1FBQzVCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25DLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxDQUFDO1FBQ0QsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUs7UUFDbkMsbUJBQW1CLEVBQUUscUJBQXFCO0tBQzdDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCx5TUFBeU07QUFDek0sU0FBZ0IsV0FBVyxDQUFDLE1BQTJFO0lBQ25HLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFV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QUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM5QixJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksUUFBUSxFQUFFLENBQUM7UUFDbEMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQVZELGtEQVVDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsT0FBZTtJQUNuRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHVEQUF1RCxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7QUFDTCxDQUFDO0FBSkQsMERBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmVlU3VtbWFyeSwgU3VtbWFyeUVudHJ5IH0gZnJvbSBcIi4uLy4uL3RyZWVTdW1tYXJ5XCI7XG5cbmNvbnN0IEVYUEVDVEVEX09VVFBVVF9DT1VOVCA9IDEwMDtcblxuZXhwb3J0IHR5cGUgQWNjZXNzU3VtbWFyeVN0YXRlID0geyB0b3RhbDogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBBY2Nlc3NUb3RhbHMgPSB7IFtvcGVyYXRpb246IHN0cmluZ106IHsgY291bnQ6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfTtcblxudHlwZSBBY2Nlc3NWYWx1ZSA9IHsgcGF0aDogc3RyaW5nOyBzaXplOiBudW1iZXIgfTtcbnR5cGUgT3BlcmF0aW9uU3RhdHMgPSB7XG4gICAgdG90YWxDb3VudDogbnVtYmVyO1xuICAgIHRvdGFsU2l6ZTogbnVtYmVyO1xuICAgIGNvdW50VHJlZTogVHJlZVN1bW1hcnk8QWNjZXNzVmFsdWUsIEFjY2Vzc1N1bW1hcnlTdGF0ZT47XG4gICAgLy8gT25seSBleGlzdHMgZm9yIG9wZXJhdGlvbnMgdHJhY2tlZCB3aXRoIHNpemVzOyBjb3VudC1vbmx5IG9wZXJhdGlvbnMgKGdldEluZm8sIGRlbCwgLi4uKSBoYXZlIG5vIG1lYW5pbmdmdWwgc2l6ZSBicmVha2Rvd24uXG4gICAgc2l6ZVRyZWU/OiBUcmVlU3VtbWFyeTxBY2Nlc3NWYWx1ZSwgQWNjZXNzU3VtbWFyeVN0YXRlPjtcbn07XG5cbmNvbnN0IGFjY291bnRzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIE9wZXJhdGlvblN0YXRzPj4oKTtcblxuZnVuY3Rpb24gbWFrZVRyZWUoZ2V0VmFsdWU6ICh2YWx1ZTogQWNjZXNzVmFsdWUpID0+IG51bWJlcik6IFRyZWVTdW1tYXJ5PEFjY2Vzc1ZhbHVlLCBBY2Nlc3NTdW1tYXJ5U3RhdGU+IHtcbiAgICByZXR1cm4gbmV3IFRyZWVTdW1tYXJ5PEFjY2Vzc1ZhbHVlLCBBY2Nlc3NTdW1tYXJ5U3RhdGU+KHtcbiAgICAgICAgZ2V0UGF0aDogdmFsdWUgPT4gdmFsdWUucGF0aCxcbiAgICAgICAgY3JlYXRlU3VtbWFyeTogKCkgPT4gKHsgdG90YWw6IDAgfSksXG4gICAgICAgIGFkZFRvU3VtbWFyeTogKHZhbHVlLCBzdW1tYXJ5KSA9PiB7XG4gICAgICAgICAgICBzdW1tYXJ5LnRvdGFsICs9IGdldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyZ2VTdW1tYXJpZXM6ICh0YXJnZXQsIHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgdGFyZ2V0LnRvdGFsICs9IHNvdXJjZS50b3RhbDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0V2VpZ2h0OiBzdW1tYXJ5ID0+IHN1bW1hcnkudG90YWwsXG4gICAgICAgIGV4cGVjdGVkT3V0cHV0Q291bnQ6IEVYUEVDVEVEX09VVFBVVF9DT1VOVCxcbiAgICB9KTtcbn1cblxuLyoqIENvdW50cyBvbmUgc3RvcmFnZSBhY2Nlc3MsIGluIG1lbW9yeSBvbmx5LiBzaXplIGlzIHRoZSBieXRlcyBpbnZvbHZlZCAoMCB3aGVuIHRoZSB0YXJnZXQgZG9lcyBub3QgZXhpc3QpOyBvbWl0IGl0IGVudGlyZWx5IGZvciBvcGVyYXRpb25zIHRoYXQgb25seSBjb3VudCBjYWxscywgd2hpY2ggdGhlbiBvbmx5IGdldCBhIGNvdW50IHRyZWUuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tBY2Nlc3MoY29uZmlnOiB7IGFjY291bnQ6IHN0cmluZzsgb3BlcmF0aW9uOiBzdHJpbmc7IHBhdGg6IHN0cmluZzsgc2l6ZT86IG51bWJlciB9KTogdm9pZCB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSBhY2NvdW50cy5nZXQoY29uZmlnLmFjY291bnQpO1xuICAgIGlmICghb3BlcmF0aW9ucykge1xuICAgICAgICBvcGVyYXRpb25zID0gbmV3IE1hcCgpO1xuICAgICAgICBhY2NvdW50cy5zZXQoY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbnMpO1xuICAgIH1cbiAgICBsZXQgc3RhdHMgPSBvcGVyYXRpb25zLmdldChjb25maWcub3BlcmF0aW9uKTtcbiAgICBpZiAoIXN0YXRzKSB7XG4gICAgICAgIHN0YXRzID0geyB0b3RhbENvdW50OiAwLCB0b3RhbFNpemU6IDAsIGNvdW50VHJlZTogbWFrZVRyZWUoKCkgPT4gMSkgfTtcbiAgICAgICAgb3BlcmF0aW9ucy5zZXQoY29uZmlnLm9wZXJhdGlvbiwgc3RhdHMpO1xuICAgIH1cbiAgICBsZXQgdmFsdWU6IEFjY2Vzc1ZhbHVlID0geyBwYXRoOiBjb25maWcucGF0aCwgc2l6ZTogY29uZmlnLnNpemUgfHwgMCB9O1xuICAgIHN0YXRzLnRvdGFsQ291bnQrKztcbiAgICBzdGF0cy5jb3VudFRyZWUuYWRkKHZhbHVlKTtcbiAgICBpZiAoY29uZmlnLnNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgc2l6ZVRyZWUgPSBzdGF0cy5zaXplVHJlZTtcbiAgICAgICAgaWYgKCFzaXplVHJlZSkge1xuICAgICAgICAgICAgc2l6ZVRyZWUgPSBtYWtlVHJlZSh2ID0+IHYuc2l6ZSk7XG4gICAgICAgICAgICBzdGF0cy5zaXplVHJlZSA9IHNpemVUcmVlO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRzLnRvdGFsU2l6ZSArPSBjb25maWcuc2l6ZTtcbiAgICAgICAgc2l6ZVRyZWUuYWRkKHZhbHVlKTtcbiAgICB9XG59XG5cbi8qKiBNZXRob2QgZGVjb3JhdG9yIGZhY3RvcnksIGZvciBBUEkgbWV0aG9kcyB3aG9zZSBzaW5nbGUgY29uZmlnLW9iamVjdCBhcmd1bWVudCBoYXMgYWNjb3VudCBhbmQgYnVja2V0TmFtZTogdHJhY2tzIHRoZSBhY2Nlc3MgKGFzIGBidWNrZXROYW1lL3BhdGhgKSBhZnRlciB0aGUgbWV0aG9kIHN1Y2NlZWRzLiBTaXplcyBjb21lIGZyb20gdGhlIGNvbmZpZydzIGRhdGEgKHdyaXRlcykgb3IgdGhlIHJlc3VsdCdzIGRhdGEgKHJlYWRzKTsgb3BlcmF0aW9ucyB3aXRob3V0IGVpdGhlciBhcmUgY291bnQtb25seS4gQXJyYXkgcmVzdWx0cyAobGlzdGluZ3MgLSBmaW5kSW5mbywgZ2V0Q2hhbmdlc0FmdGVyKSBhcmUgdHJhY2tlZCBhcyB0d28gY291bnQtb25seSBvcGVyYXRpb25zOiBcIjxvcD4gcXVlcmllc1wiIGF0IHRoZSBxdWVyeSBwcmVmaXggKG9uZSBwZXIgY2FsbCksIGFuZCBcIjxvcD4gcmVzdWx0c1wiIGF0IGVhY2ggcmV0dXJuZWQgcGF0aCAob25lIHBlciByZXN1bHQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQWNjZXNzQ2FsbChvcGVyYXRpb246IHN0cmluZykge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiB1bmtub3duLCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKTogdm9pZCB7XG4gICAgICAgIGxldCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWUgYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgICAgIGxldCBjb25maWcgPSBhcmdzWzBdIGFzIHsgYWNjb3VudDogc3RyaW5nOyBidWNrZXROYW1lOiBzdHJpbmc7IHBhdGg/OiBzdHJpbmc7IHByZWZpeD86IHN0cmluZzsgZGF0YT86IEJ1ZmZlciB9O1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgbGV0IGJhc2UgPSBgJHtjb25maWcuYnVja2V0TmFtZX0vYDtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUd28gc2VwYXJhdGUgYnJlYWtkb3ducywgYm90aCBjb3VudC1vbmx5OiBXSEFUIHdhcyBxdWVyaWVkLCBhbmQgV0hBVCB3YXMgcmV0dXJuZWRcbiAgICAgICAgICAgICAgICB0cmFja0FjY2Vzcyh7IGFjY291bnQ6IGNvbmZpZy5hY2NvdW50LCBvcGVyYXRpb246IGAke29wZXJhdGlvbn0gcXVlcmllc2AsIHBhdGg6IGJhc2UgKyAoY29uZmlnLnByZWZpeCB8fCBjb25maWcucGF0aCB8fCBcIlwiKSB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiByZXN1bHQgYXMgeyBwYXRoOiBzdHJpbmcgfVtdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQWNjZXNzKHsgYWNjb3VudDogY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbjogYCR7b3BlcmF0aW9ufSByZXN1bHRzYCwgcGF0aDogYmFzZSArIGVudHJ5LnBhdGggfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgc2l6ZSA9IGNvbmZpZy5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSAocmVzdWx0IGFzIHsgZGF0YT86IEJ1ZmZlciB9IHwgdW5kZWZpbmVkKT8uZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSkgc2l6ZSA9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJhY2tBY2Nlc3MoeyBhY2NvdW50OiBjb25maWcuYWNjb3VudCwgb3BlcmF0aW9uLCBwYXRoOiBiYXNlICsgY29uZmlnLnBhdGgsIHNpemUgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NUb3RhbHMoYWNjb3VudDogc3RyaW5nKTogQWNjZXNzVG90YWxzIHtcbiAgICBsZXQgcmVzdWx0OiBBY2Nlc3NUb3RhbHMgPSB7fTtcbiAgICBsZXQgb3BlcmF0aW9ucyA9IGFjY291bnRzLmdldChhY2NvdW50KTtcbiAgICBpZiAoIW9wZXJhdGlvbnMpIHJldHVybiByZXN1bHQ7XG4gICAgZm9yIChsZXQgW29wZXJhdGlvbiwgc3RhdHNdIG9mIG9wZXJhdGlvbnMpIHtcbiAgICAgICAgcmVzdWx0W29wZXJhdGlvbl0gPSB7IGNvdW50OiBzdGF0cy50b3RhbENvdW50LCBzaXplOiBzdGF0cy50b3RhbFNpemUgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBY2Nlc3NTdW1tYXJpZXMoY29uZmlnOiB7IGFjY291bnQ6IHN0cmluZzsgb3BlcmF0aW9uOiBzdHJpbmc7IG1heENvdW50OiBudW1iZXI7IHdlaWdodEJ5U2l6ZT86IGJvb2xlYW4gfSk6IFN1bW1hcnlFbnRyeTxBY2Nlc3NTdW1tYXJ5U3RhdGU+W10ge1xuICAgIGxldCBvcGVyYXRpb25zID0gYWNjb3VudHMuZ2V0KGNvbmZpZy5hY2NvdW50KTtcbiAgICBsZXQgc3RhdHMgPSBvcGVyYXRpb25zICYmIG9wZXJhdGlvbnMuZ2V0KGNvbmZpZy5vcGVyYXRpb24pO1xuICAgIGlmICghc3RhdHMpIHJldHVybiBbXTtcbiAgICAvLyBDb3VudC1vbmx5IG9wZXJhdGlvbnMgaGF2ZSBubyBzaXplIHRyZWUsIGluIHdoaWNoIGNhc2Ugd2VpZ2h0QnlTaXplIGlzIGlnbm9yZWQgYW5kIHRoZSBjb3VudCBicmVha2Rvd24gaXMgcmV0dXJuZWQuXG4gICAgbGV0IHNpemVUcmVlID0gc3RhdHMuc2l6ZVRyZWU7XG4gICAgaWYgKGNvbmZpZy53ZWlnaHRCeVNpemUgJiYgc2l6ZVRyZWUpIHtcbiAgICAgICAgcmV0dXJuIHNpemVUcmVlLmdldFN1bW1hcmllcyhjb25maWcubWF4Q291bnQpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdHMuY291bnRUcmVlLmdldFN1bW1hcmllcyhjb25maWcubWF4Q291bnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJBY2NvdW50QWNjZXNzU3RhdHMoYWNjb3VudDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGFjY291bnRzLmRlbGV0ZShhY2NvdW50KSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgQ2xlYXJlZCB0aGUgaW4tbWVtb3J5IGFjY2VzcyBzdGF0aXN0aWNzIGZvciBhY2NvdW50ICR7YWNjb3VudH1gKTtcbiAgICB9XG59XG4iXX0=
|
|
109
|
+
/* _JS_SOURCE_HASH = "7fe1a2df2a18b5f02ab6e6fc532b93a7ed9917acb037f88d21accda0e0d23049"; */
|