sliftutils 1.7.97 → 1.7.98

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.
Files changed (53) hide show
  1. package/dist/treeSummary.ts.cache +2 -2
  2. package/index.d.ts +18 -1
  3. package/misc/dist/environment.ts.cache +2 -2
  4. package/misc/dist/getSecret.ts.cache +2 -2
  5. package/misc/dist/strings.ts.cache +2 -2
  6. package/misc/dist/zip.ts.cache +2 -2
  7. package/misc/https/dist/certs.ts.cache +2 -2
  8. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  9. package/package.json +1 -1
  10. package/render-utils/dist/observer.tsx.cache +2 -2
  11. package/storage/dist/ArchivesDisk.ts.cache +2 -2
  12. package/storage/dist/FileFolderAPI.tsx.cache +2 -2
  13. package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
  14. package/storage/dist/JSONStorage.ts.cache +2 -2
  15. package/storage/dist/LogMap.ts.cache +2 -2
  16. package/storage/dist/PendingManager.tsx.cache +2 -2
  17. package/storage/dist/TransactionStorage.ts.cache +2 -2
  18. package/storage/dist/archiveHelpers.ts.cache +2 -2
  19. package/storage/dist/backblaze.ts.cache +2 -2
  20. package/storage/dist/fileSystemPointer.ts.cache +2 -2
  21. package/storage/dist/remoteFileStorage.ts.cache +2 -2
  22. package/storage/remoteStorage/blobStore.d.ts +2 -0
  23. package/storage/remoteStorage/blobStore.ts +19 -1
  24. package/storage/remoteStorage/chainStartup.d.ts +1 -0
  25. package/storage/remoteStorage/chainStartup.ts +6 -1
  26. package/storage/remoteStorage/dist/ArchivesDelayed.ts.cache +2 -2
  27. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
  28. package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
  29. package/storage/remoteStorage/dist/accessStats.ts.cache +2 -2
  30. package/storage/remoteStorage/dist/blobStore.ts.cache +21 -2
  31. package/storage/remoteStorage/dist/bucketDisk.ts.cache +2 -2
  32. package/storage/remoteStorage/dist/certTrustModal.tsx.cache +2 -2
  33. package/storage/remoteStorage/dist/chainStartup.ts.cache +5 -2
  34. package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
  35. package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
  36. package/storage/remoteStorage/dist/intermediateManagement.ts.cache +2 -2
  37. package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
  38. package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
  39. package/storage/remoteStorage/dist/serverConfig.ts.cache +2 -2
  40. package/storage/remoteStorage/dist/sourceWrapper.ts.cache +2 -2
  41. package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
  42. package/storage/remoteStorage/dist/storageClientController.ts.cache +45 -4
  43. package/storage/remoteStorage/dist/storageServerState.ts.cache +15 -4
  44. package/storage/remoteStorage/dist/storeConfig.ts.cache +7 -2
  45. package/storage/remoteStorage/dist/storePlan.ts.cache +2 -2
  46. package/storage/remoteStorage/dist/storeSources.ts.cache +2 -2
  47. package/storage/remoteStorage/dist/storeSync.ts.cache +2 -2
  48. package/storage/remoteStorage/dist/validation.ts.cache +2 -2
  49. package/storage/remoteStorage/storageClientController.d.ts +14 -0
  50. package/storage/remoteStorage/storageClientController.ts +42 -1
  51. package/storage/remoteStorage/storageServerState.d.ts +1 -1
  52. package/storage/remoteStorage/storageServerState.ts +11 -2
  53. package/storage/remoteStorage/storeConfig.ts +5 -0
@@ -3,7 +3,7 @@ import { RemoteConfig, SourceConfig } from "../IArchives";
3
3
  import { ROUTING_FILE, getConfigVersion, serializeRemoteConfig, normalizeRemoteConfig, normalizeSource } from "./remoteConfig";
4
4
  import { SourceWrapper, RETRY_START_DELAY, RETRY_MAX_DELAY, RETRY_GROWTH } from "./sourceWrapper";
5
5
  import { resolveIntermediateSources } from "./intermediateSources";
6
- import { onServerRoutingChanged } from "./storageClientController";
6
+ import { onServerRoutingChanged, trackChainConfig } from "./storageClientController";
7
7
 
8
8
  // The LIFECYCLE of an ArchivesChain's state, and nothing else: initializing it (probing every configured source, deciding which routing config to run, writing ours out when it is the newest), the retry when initialization fails, the poll that adopts newer configs, the availability recheck, and the loop that keeps re-writing our config. None of this is request dispatch - the chain (createArchives.ts) asks the ChainStateManager for the current state and dispatches over it.
9
9
 
@@ -50,8 +50,12 @@ export class ChainStateManager {
50
50
  this.unsubscribeRoutingPush = onServerRoutingChanged(() => {
51
51
  void this.refreshActiveConfig().catch((e: Error) => console.error(`Config refresh failed for ${this.config.debugName()}: ${e.stack ?? e}`));
52
52
  });
53
+ // So a server can ask what config we intended for a store name (see StorageClientController.getRoutingConfigForName)
54
+ this.untrackConfig = trackChainConfig({ configured: config.configured, active: () => this.activeConfig });
53
55
  }
54
56
 
57
+ private untrackConfig: () => void;
58
+
55
59
  /** The newest adopted state, synchronously - undefined until the first init finishes. */
56
60
  public latest(): ChainState | undefined {
57
61
  return this.latestState;
@@ -275,6 +279,7 @@ export class ChainStateManager {
275
279
 
276
280
  public dispose(): void {
277
281
  this.disposed = true;
282
+ this.untrackConfig();
278
283
  this.unsubscribeRoutingPush?.();
279
284
  if (this.pollTimer) {
280
285
  clearInterval(this.pollTimer);
@@ -1,4 +1,4 @@
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";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.unwrapDelayed = exports.asDelayed = exports.sourceWriteDelay = exports.ArchivesDelayed = exports.MAX_REMOTE_FAST_BUFFER = exports.DEFAULT_FAST_WRITE_DELAY = void 0;
4
4
  const batching_1 = require("socket-function/src/batching");
@@ -217,4 +217,4 @@ function unwrapDelayed(source) {
217
217
  }
218
218
  exports.unwrapDelayed = unwrapDelayed;
219
219
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjaGl2ZXNEZWxheWVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQXJjaGl2ZXNEZWxheWVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUErRDtBQU0vRCw4bEJBQThsQjtBQUU5bEIsaUpBQWlKO0FBQ2pKLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDZixRQUFBLHdCQUF3QixHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELDhNQUE4TTtBQUNqTSxRQUFBLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFVL0MsTUFBYSxlQUFlO0lBTXhCLFlBQ1csS0FBZ0I7SUFDdkIsd0hBQXdIO0lBQ2hILEtBQWE7UUFGZCxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBRWYsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQVJqQixZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDMUMsWUFBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBUzlCLElBQUEsMEJBQWUsRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0hBQWtIO0lBQzNHLGlCQUFpQixDQUFDLFdBQXlCO1FBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ25DLENBQUM7SUFFRCxvUUFBb1E7SUFDN1AsUUFBUSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssU0FBUyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGtCQUFrQixDQUFD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QjtJQUN2QyxJQUFJLE1BQU0sWUFBWSxlQUFlO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDckQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQUhELDhCQUdDO0FBRUQsK0NBQStDO0FBQy9DLFNBQWdCLGFBQWEsQ0FBQyxNQUFpQjtJQUMzQyxJQUFJLE1BQU0sWUFBWSxlQUFlO1FBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFIRCxzQ0FHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJ1bkluZmluaXRlUG9sbCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQge1xuICAgIElBcmNoaXZlcywgQXJjaGl2ZUZpbGVJbmZvLCBBcmNoaXZlc0NvbmZpZywgQXJjaGl2ZXNTeW5jU3RhdHVzLCBDaGFuZ2VzQWZ0ZXJDb25maWcsIERlbENvbmZpZyxcbiAgICBGaW5kQ29uZmlnLCBHZXRDb25maWcsIEdldEluZm9Db25maWcsIFNldENvbmZpZywgU2V0TGFyZ2VGaWxlQ29uZmlnLCBTb3VyY2VDb25maWcsXG59IGZyb20gXCIuLi9JQXJjaGl2ZXNcIjtcblxuLy8gRmFzdCB3cml0ZXMgKHNlZSBzcGVjLm1kLCBcImZhc3Qgd3JpdGVzXCIpLCBhcyBhIHdyYXBwZXIgYXJvdW5kIE9ORSBzb3VyY2UgaW5zdGVhZCBvZiBhIGJ1ZmZlciBzbWVhcmVkIHRocm91Z2ggdGhlIHN0b3JlOiBhIHdyaXRlIHJldHVybnMgYXMgc29vbiBhcyBpdCBpcyBpbiBtZW1vcnksIGFuZCByZXBlYXRlZCB3cml0ZXMgdG8gdGhlIHNhbWUgcGF0aCBjb2xsYXBzZSBpbnRvIGEgc2luZ2xlIHdyaXRlIHRvIHRoZSB3cmFwcGVkIHNvdXJjZS4gRXZlcnkgcmVhZCBnb2VzIHRocm91Z2ggdGhlIHBlbmRpbmcgd3JpdGVzIGZpcnN0LCBzbyBhIGRlbGF5ZWQgd3JpdGUgaXMgc3RpbGwgcmVhZC15b3VyLXdyaXRlcyBmb3IgYW55b25lIHJlYWRpbmcgdGhyb3VnaCB0aGlzIHdyYXBwZXIuIEVhY2ggc291cmNlIGlzIHdyYXBwZWQgd2l0aCBpdHMgT1dOIGRlbGF5IC0gb3VyIG93biBkaXNrIGFuZCBvdXIgb3duIHN0b3JhZ2Ugc2VydmVycyB3YW50IGEgc2hvcnQgb25lIChjcm9zcy1ub2RlIHJlZHVuZGFuY3kgc2hvdWxkIG5vdCB3YWl0IG1pbnV0ZXMpLCBhbiBleHBlbnNpdmUgZXh0ZXJuYWwgc291cmNlIGxpa2UgYmFja2JsYXplIHdhbnRzIHRoZSBmdWxsIG9uZS5cblxuLy8gUGVuZGluZyB3cml0ZXMgYXJlIGNoZWNrZWQgZm9yIHRoZWlyIGR1ZSB0aW1lIHRoaXMgb2Z0ZW4gLSBmaW5lIGVub3VnaCB0aGF0IGEgZmx1c2ggbGFuZHMgY2xvc2UgdG8gaXRzIGRlbGF5IHJhdGhlciB0aGFuIG9uZSBjb2Fyc2UgdGljayBsYXRlclxuY29uc3QgRkxVU0hfUE9MTCA9IDEwMDAgKiAyO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRkFTVF9XUklURV9ERUxBWSA9IDEwMDAgKiA2MCAqIDU7XG4vLyBUaGUgbW9zdCBhIGZhc3Qgd3JpdGUgaXMgaGVsZCBieSBvdXIgb3duIGRpc2sgb3Igb25lIG9mIG91ciBvd24gc3RvcmFnZSBzZXJ2ZXJzLCBob3dldmVyIGxhcmdlIHRoZSBjb25maWd1cmVkIHdyaXRlRGVsYXkgaXMgLSBjcm9zcy1ub2RlIHJlZHVuZGFuY3kgYW5kIHJlYWQteW91ci13cml0ZXMgYWNyb3NzIG5vZGVzIG11c3Qgbm90IHdhaXQgbWludXRlc1xuZXhwb3J0IGNvbnN0IE1BWF9SRU1PVEVfRkFTVF9CVUZGRVIgPSAxMDAwICogNTtcblxudHlwZSBQZW5kaW5nV3JpdGUgPSB7XG4gICAgLy8gQSB6ZXJvLWxlbmd0aCBidWZmZXIgaXMgYSBwZW5kaW5nIGRlbGV0aW9uIChhbiBlbXB0eSBmaWxlIElTIGEgbWlzc2luZyBmaWxlKVxuICAgIGRhdGE6IEJ1ZmZlcjtcbiAgICB3cml0ZVRpbWU6IG51bWJlcjtcbiAgICBkdWVBdDogbnVtYmVyO1xuICAgIGNvbmZpZz86IFNldENvbmZpZztcbn07XG5cbmV4cG9ydCBjbGFzcyBBcmNoaXZlc0RlbGF5ZWQgaW1wbGVtZW50cyBJQXJjaGl2ZXMge1xuICAgIHByaXZhdGUgcGVuZGluZyA9IG5ldyBNYXA8c3RyaW5nLCBQZW5kaW5nV3JpdGU+KCk7XG4gICAgcHJpdmF0ZSBzdG9wcGVkID0geyBzdG9wOiBmYWxzZSB9O1xuICAgIC8qKiBUaGUgaW5zdGFudCBldmVyeSBwZW5kaW5nIHdyaXRlIG11c3QgYmUgb24gdGhlIHNvdXJjZSBubyBtYXR0ZXIgaXRzIGRlbGF5IC0gb3VyIG93biB2YWxpZCB3aW5kb3cncyBlbmQsIG1pbnVzIHRoZSBmbHVzaCBtYXJnaW4gKHRoZSBuZXh0IHdpbmRvdydzIHNvdXJjZSBoYXMgdG8gZmluZCB0aGUgZGF0YSBvbiBoYW5kb2ZmKS4gVGhlIHN0b3JlIGJpbmRzIGl0OyB3aXRob3V0IGl0IHRoZXJlIGlzIG5vIGRlYWRsaW5lLCBvbmx5IHRoZSBkZWxheS4gKi9cbiAgICBwcml2YXRlIGZsdXNoQmVmb3JlPzogKCkgPT4gbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBpbm5lcjogSUFyY2hpdmVzLFxuICAgICAgICAvLyBIb3cgbG9uZyBhIHdyaXRlIGlzIGhlbGQgaW4gbWVtb3J5IGJlZm9yZSBpdCByZWFjaGVzIGlubmVyLiBQb2xpY3ksIHNvIGl0IGNhbiBjaGFuZ2Ugb24gYSBjb25maWcgZWRpdCAtIHNlZSBzZXREZWxheS5cbiAgICAgICAgcHJpdmF0ZSBkZWxheTogbnVtYmVyLFxuICAgICkge1xuICAgICAgICBydW5JbmZpbml0ZVBvbGwoRkxVU0hfUE9MTCwgKCkgPT4gdGhpcy5mbHVzaER1ZSgpLCB0aGlzLnN0b3BwZWQpO1xuICAgIH1cblxuICAgIC8qKiBDYWxsZWQgYnkgdGhlIHN0b3JlIHRoYXQgb3ducyB0aGlzIHNvdXJjZTogZmFzdCB3cml0ZXMgYXJlIG5ldmVyIGRlbGF5ZWQgcGFzdCB0aGUgc3RvcmUncyBvd24gd3JpdGUgd2luZG93LiAqL1xuICAgIHB1YmxpYyBiaW5kRmx1c2hEZWFkbGluZShmbHVzaEJlZm9yZTogKCkgPT4gbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmx1c2hCZWZvcmUgPSBmbHVzaEJlZm9yZTtcbiAgICB9XG5cbiAgICAvKiogVGhlIGNvbmZpZyBjaGFuZ2VkIHRoZSBkZWxheSAoZmFzdCB3cml0ZXMgdHVybmVkIG9uIG9yIG9mZiwgb3IgYSBkaWZmZXJlbnQgd3JpdGVEZWxheSkuIEFueXRoaW5nIGFscmVhZHkgcGVuZGluZyBrZWVwcyB0aGUgZHVlIHRpbWUgaXQgd2FzIGFjY2VwdGVkIHdpdGggLSBzaG9ydGVuaW5nIHRoZSBkZWxheSBtdXN0IG5vdCBzdHJhbmQgaXQsIGFuZCBsZW5ndGhlbmluZyBpdCBtdXN0IG5vdCBob2xkIGl0IGxvbmdlciB0aGFuIHByb21pc2VkLiAqL1xuICAgIHB1YmxpYyBzZXREZWxheShkZWxheTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChkZWxheSA9PT0gdGhpcy5kZWxheSkgcmV0dXJuO1xuICAgICAgICBjb25zb2xlLmxvZyhgV3JpdGUgZGVsYXkgY2hhbmdlZCBmb3IgJHt0aGlzLmlubmVyLmdldERlYnVnTmFtZSgpfTogJHt0aGlzLmRlbGF5fW1zIC0+ICR7ZGVsYXl9bXMgKCR7dGhpcy5wZW5kaW5nLnNpemV9IHdyaXRlcyBwZW5kaW5nKWApO1xuICAgICAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgICAgIGlmIChkZWxheSA8PSAwKSB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuZmx1c2godHJ1ZSkuY2F0Y2goKGU6IEVycm9yKSA9PiBjb25zb2xlLmVycm9yKGBGbHVzaGluZyAke3RoaXMuaW5uZXIuZ2V0RGVidWdOYW1lKCl9IGFmdGVyIGl0cyB3cml0ZSBkZWxheSB3YXMgdHVybmVkIG9mZiBmYWlsZWQ6ICR7ZS5zdGFjayA/PyBlfWApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWJ1Z05hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaW5uZXIuZ2V0RGVidWdOYW1lKCl9ICh3cml0ZXMgZGVsYXllZCAke3RoaXMuZGVsYXl9bXMpYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaGFzV3JpdGVBY2Nlc3MoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlubmVyLmhhc1dyaXRlQWNjZXNzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldChmaWxlTmFtZTogc3RyaW5nLCBkYXRhOiBCdWZmZXIsIGNvbmZpZz86IFNldENvbmZpZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICghZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc2V0IHdhcyBjYWxsZWQgd2l0aCBhbiBlbXB0eSBidWZmZXIgZm9yICR7SlNPTi5zdHJpbmdpZnkoZmlsZU5hbWUpfSBvbiAke3RoaXMuZ2V0RGVidWdOYW1lKCl9OiBhbiBlbXB0eSBmaWxlIElTIGEgZGVsZXRpb24gaW4gdGhpcyBzeXN0ZW0gYW5kIHdvdWxkIHJlYWQgYmFjayBhcyBtaXNzaW5nIC0gY2FsbCBkZWwgaW5zdGVhZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1ZmZlcihmaWxlTmFtZSwgZGF0YSwgY29uZmlnPy5sYXN0TW9kaWZpZWQsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRlbChmaWxlTmFtZTogc3RyaW5nLCBjb25maWc/OiBEZWxDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5idWZmZXIoZmlsZU5hbWUsIEJ1ZmZlci5hbGxvYygwKSwgY29uZmlnPy5sYXN0TW9kaWZpZWQsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHNoYXJlZCBlbmdpbmUgb2Ygc2V0IGFuZCBkZWwgLSBhbiBlbXB0eSBidWZmZXIgaXMgZXhhY3RseSBhIGRlbGV0aW9uIGhlcmVcbiAgICBwcml2YXRlIGFzeW5jIGJ1ZmZlcihmaWxlTmFtZTogc3RyaW5nLCBkYXRhOiBCdWZmZXIsIGxhc3RNb2RpZmllZDogbnVtYmVyIHwgdW5kZWZpbmVkLCBjb25maWc/OiBTZXRDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBsZXQgd3JpdGVUaW1lID0gbGFzdE1vZGlmaWVkIHx8IERhdGUubm93KCk7XG4gICAgICAgIGxldCBleGlzdGluZyA9IHRoaXMucGVuZGluZy5nZXQoZmlsZU5hbWUpO1xuICAgICAgICAvLyBBbiBvbGRlciB3cml0ZSBuZXZlciBvdmVyd3JpdGVzIGEgbmV3ZXIgb25lIChzZWUgSUFyY2hpdmVzLnNldCkgLSBpbmNsdWRpbmcgYWdhaW5zdCBhIHdyaXRlIHN0aWxsIHNpdHRpbmcgaGVyZVxuICAgICAgICBpZiAoZXhpc3RpbmcgJiYgd3JpdGVUaW1lIDwgZXhpc3Rpbmcud3JpdGVUaW1lKSByZXR1cm4gZmlsZU5hbWU7XG4gICAgICAgIGxldCBkdWVBdCA9IERhdGUubm93KCkgKyB0aGlzLmRlbGF5O1xuICAgICAgICBpZiAodGhpcy5kZWxheSA8PSAwIHx8IHRoaXMuZGVhZGxpbmVQYXNzZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nLmRlbGV0ZShmaWxlTmFtZSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLndyaXRlKGZpbGVOYW1lLCB7IGRhdGEsIHdyaXRlVGltZSwgZHVlQXQsIGNvbmZpZyB9KTtcbiAgICAgICAgICAgIHJldHVybiBmaWxlTmFtZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgd3JpdGUgaXMgYWNjZXB0ZWQgdGhlIG1vbWVudCBpdCBpcyBpbiBtZW1vcnkgLSB0aGF0IElTIHRoZSBwb2ludCBvZiBhIGZhc3Qgd3JpdGVcbiAgICAgICAgdGhpcy5wZW5kaW5nLnNldChmaWxlTmFtZSwgeyBkYXRhLCB3cml0ZVRpbWUsIGR1ZUF0LCBjb25maWcgfSk7XG4gICAgICAgIHJldHVybiBmaWxlTmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlYWRsaW5lUGFzc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZGVhZGxpbmUgPSB0aGlzLmZsdXNoQmVmb3JlPy4oKTtcbiAgICAgICAgaWYgKGRlYWRsaW5lID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIERhdGUubm93KCkgPj0gZGVhZGxpbmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB3cml0ZShmaWxlTmFtZTogc3RyaW5nLCBlbnRyeTogUGVuZGluZ1dyaXRlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghZW50cnkuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW5uZXIuZGVsKGZpbGVOYW1lLCB7IGxhc3RNb2RpZmllZDogZW50cnkud3JpdGVUaW1lLCBub0NoZWNrczogZW50cnkuY29uZmlnPy5ub0NoZWNrcywgaW50ZXJuYWw6IGVudHJ5LmNvbmZpZz8uaW50ZXJuYWwgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5pbm5lci5zZXQoZmlsZU5hbWUsIGVudHJ5LmRhdGEsIHsgLi4uZW50cnkuY29uZmlnLCBsYXN0TW9kaWZpZWQ6IGVudHJ5LndyaXRlVGltZSB9KTtcbiAgICB9XG5cbiAgICAvKiogV3JpdGVzIGV2ZXJ5dGhpbmcgZHVlIChpdHMgZGVsYXkgZWxhcHNlZCwgb3IgdGhlIHN0b3JlJ3Mgd2luZG93IGRlYWRsaW5lIHJlYWNoZWQpLiBmb3JjZSB3cml0ZXMgZXZlcnl0aGluZywgaG93ZXZlciByZWNlbnQgLSBzaHV0ZG93biBhbmQgd2luZG93IGhhbmRvZmZzIGNhbm5vdCBsZWF2ZSB3cml0ZXMgaW4gbWVtb3J5LiAqL1xuICAgIHB1YmxpYyBhc3luYyBmbHVzaChmb3JjZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGxldCBkZWFkbGluZVJlYWNoZWQgPSBmb3JjZSB8fCB0aGlzLmRlYWRsaW5lUGFzc2VkKCk7XG4gICAgICAgIGZvciAobGV0IFtmaWxlTmFtZSwgZW50cnldIG9mIFsuLi50aGlzLnBlbmRpbmddKSB7XG4gICAgICAgICAgICBpZiAoIWRlYWRsaW5lUmVhY2hlZCAmJiBlbnRyeS5kdWVBdCA+IG5vdykgY29udGludWU7XG4gICAgICAgICAgICAvLyBPbmx5IGRyb3AgaXQgaWYgaXQgd2Fzbid0IG92ZXJ3cml0dGVuIHdoaWxlIHdlIHdlcmUgd3JpdGluZ1xuICAgICAgICAgICAgYXdhaXQgdGhpcy53cml0ZShmaWxlTmFtZSwgZW50cnkpO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZy5nZXQoZmlsZU5hbWUpID09PSBlbnRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZy5kZWxldGUoZmlsZU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmbHVzaER1ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLnBlbmRpbmcuc2l6ZSkgcmV0dXJuO1xuICAgICAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgLyoqIFN0b3BzIHRoZSBmbHVzaCBsb29wLCBhZnRlciB3cml0aW5nIGV2ZXJ5dGhpbmcgc3RpbGwgcGVuZGluZy4gKi9cbiAgICBwdWJsaWMgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnN0b3AgPSB0cnVlO1xuICAgICAgICBhd2FpdCB0aGlzLmZsdXNoKHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXQoZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0Q29uZmlnKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0MihmaWxlTmFtZSwgY29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiByZXN1bHQuZGF0YSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldDIoZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0Q29uZmlnKTogUHJvbWlzZTx7IGRhdGE6IEJ1ZmZlcjsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlcjsgdXJsPzogc3RyaW5nIH0gfCB7IGRhdGE/OiB1bmRlZmluZWQ7IHdyaXRlVGltZT86IHVuZGVmaW5lZDsgc2l6ZT86IHVuZGVmaW5lZDsgdXJsOiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgZW50cnkgPSB0aGlzLnBlbmRpbmcuZ2V0KGZpbGVOYW1lKTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAvLyBBbiBlbXB0eSBmaWxlIElTIGEgbWlzc2luZyBmaWxlICh0b21ic3RvbmUpXG4gICAgICAgICAgICBpZiAoIWVudHJ5LmRhdGEubGVuZ3RoICYmICFjb25maWc/LmluY2x1ZGVUb21ic3RvbmVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGRhdGEgPSBlbnRyeS5kYXRhO1xuICAgICAgICAgICAgbGV0IHNpemUgPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCByYW5nZSA9IGNvbmZpZz8ucmFuZ2U7XG4gICAgICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5zdWJhcnJheShNYXRoLm1pbihyYW5nZS5zdGFydCwgZGF0YS5sZW5ndGgpLCBNYXRoLm1pbihyYW5nZS5lbmQsIGRhdGEubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBkYXRhLCB3cml0ZVRpbWU6IGVudHJ5LndyaXRlVGltZSwgc2l6ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlubmVyLmdldDIoZmlsZU5hbWUsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm8oZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0SW5mb0NvbmZpZyk6IFByb21pc2U8eyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyOyB1cmw/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgZW50cnkgPSB0aGlzLnBlbmRpbmcuZ2V0KGZpbGVOYW1lKTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICBpZiAoIWVudHJ5LmRhdGEubGVuZ3RoICYmICFjb25maWc/LmluY2x1ZGVUb21ic3RvbmVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIHsgd3JpdGVUaW1lOiBlbnRyeS53cml0ZVRpbWUsIHNpemU6IGVudHJ5LmRhdGEubGVuZ3RoIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaW5uZXIuZ2V0SW5mbyhmaWxlTmFtZSwgY29uZmlnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmluZChwcmVmaXg6IHN0cmluZywgY29uZmlnPzogRmluZENvbmZpZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmZpbmRJbmZvKHByZWZpeCwgY29uZmlnKSkubWFwKHggPT4geC5wYXRoKTtcbiAgICB9XG5cbiAgICAvKiogUGVuZGluZyB3cml0ZXMgYXJlIHBhcnQgb2YgdGhlIGxpc3Rpbmc6IGEgc2NhbiBvZiB0aGlzIHNvdXJjZSB0aGF0IGNvdWxkbid0IHNlZSB0aGVtIHdvdWxkIGNvbmNsdWRlIHRoZSBmaWxlcyBoYWQgdmFuaXNoZWQgZnJvbSBpdCwgYW5kIGRyb3AgdGhlbSBmcm9tIHRoZSBzY2FubmVyJ3MgaW5kZXguICovXG4gICAgcHVibGljIGFzeW5jIGZpbmRJbmZvKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiBGaW5kQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICBsZXQgaW5mb3MgPSBuZXcgTWFwPHN0cmluZywgQXJjaGl2ZUZpbGVJbmZvPigpO1xuICAgICAgICBmb3IgKGxldCBmaWxlIG9mIGF3YWl0IHRoaXMuaW5uZXIuZmluZEluZm8ocHJlZml4LCBjb25maWcpKSB7XG4gICAgICAgICAgICBpbmZvcy5zZXQoZmlsZS5wYXRoLCBmaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBbZmlsZU5hbWUsIGVudHJ5XSBvZiB0aGlzLnBlbmRpbmcpIHtcbiAgICAgICAgICAgIGlmICghZmlsZU5hbWUuc3RhcnRzV2l0aChwcmVmaXgpKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghZW50cnkuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpbmZvcy5kZWxldGUoZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5mb3Muc2V0KGZpbGVOYW1lLCB7IHBhdGg6IGZpbGVOYW1lLCBjcmVhdGVUaW1lOiBlbnRyeS53cml0ZVRpbWUsIHNpemU6IGVudHJ5LmRhdGEubGVuZ3RoIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaW5mb3MudmFsdWVzKCldO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDaGFuZ2VzQWZ0ZXIyKGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICBsZXQgY2hhbmdlcyA9IGF3YWl0IHRoaXMuaW5uZXIuZ2V0Q2hhbmdlc0FmdGVyMihjb25maWcpO1xuICAgICAgICBsZXQgc2VlbiA9IG5ldyBTZXQoY2hhbmdlcy5tYXAoeCA9PiB4LnBhdGgpKTtcbiAgICAgICAgZm9yIChsZXQgW2ZpbGVOYW1lLCBlbnRyeV0gb2YgdGhpcy5wZW5kaW5nKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkud3JpdGVUaW1lIDw9IGNvbmZpZy50aW1lKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyhmaWxlTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHsgcGF0aDogZmlsZU5hbWUsIGNyZWF0ZVRpbWU6IGVudHJ5LndyaXRlVGltZSwgc2l6ZTogZW50cnkuZGF0YS5sZW5ndGggfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgLyoqIE5ldmVyIGJ1ZmZlcmVkOiBhIGZpbGUgdG9vIGxhcmdlIHRvIGhvbGQgaW4gbWVtb3J5IGlzIGV4YWN0bHkgdGhlIGZpbGUgdGhhdCBtdXN0IG5vdCBzaXQgaW4gbWVtb3J5LiBBbnkgcGVuZGluZyB3cml0ZSBmb3IgdGhlIHBhdGggZ29lcyBmaXJzdCwgc28gdGhlIHR3byBsYW5kIGluIG9yZGVyLiAqL1xuICAgIHB1YmxpYyBhc3luYyBzZXRMYXJnZUZpbGUoY29uZmlnOiBTZXRMYXJnZUZpbGVDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGVudHJ5ID0gdGhpcy5wZW5kaW5nLmdldChjb25maWcucGF0aCk7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nLmRlbGV0ZShjb25maWcucGF0aCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLndyaXRlKGNvbmZpZy5wYXRoLCBlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5pbm5lci5zZXRMYXJnZUZpbGUoY29uZmlnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VVJMKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlubmVyLmdldFVSTChwYXRoKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZygpOiBQcm9taXNlPEFyY2hpdmVzQ29uZmlnPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlubmVyLmdldENvbmZpZygpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U3luY1N0YXR1cygpOiBQcm9taXNlPEFyY2hpdmVzU3luY1N0YXR1cz4ge1xuICAgICAgICBpZiAoIXRoaXMuaW5uZXIuZ2V0U3luY1N0YXR1cykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuaW5uZXIuZ2V0RGVidWdOYW1lKCl9IGRvZXMgbm90IHN1cHBvcnQgZ2V0U3luY1N0YXR1c2ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlubmVyLmdldFN5bmNTdGF0dXMoKTtcbiAgICB9XG59XG5cbi8qKiBIb3cgbG9uZyBhIHNvdXJjZSBtYXkgaG9sZCBhIHdyaXRlLiBPdXIgb3duIGRpc2sgYW5kIG91ciBvd24gc3RvcmFnZSBzZXJ2ZXJzIHRha2UgdGhlIFNIT1JUIGRlbGF5IGhvd2V2ZXIgbGFyZ2Ugd3JpdGVEZWxheSBpczogdGhleSBhcmUgd2hhdCBjcm9zcy1ub2RlIHJlYWRzIGFuZCByZWR1bmRhbmN5IGRlcGVuZCBvbiwgYW5kIG1ha2luZyB0aG9zZSB3YWl0IG1pbnV0ZXMgaXMgbm90IGEgdHJhZGUgYW55b25lIGFza2VkIGZvci4gRXZlcnl0aGluZyBlbHNlIChiYWNrYmxhemUpIHRha2VzIHRoZSBmdWxsIGRlbGF5LCB3aGljaCBpcyB3aGVyZSBjb2FsZXNjaW5nIGFjdHVhbGx5IHNhdmVzIG1vbmV5LiBOb3QgZmFzdCAtPiBubyBkZWxheSBhdCBhbGwsIGFuZCBubyB3cmFwcGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvdXJjZVdyaXRlRGVsYXkoY29uZmlnOiB7IHNvdXJjZUNvbmZpZz86IFNvdXJjZUNvbmZpZzsgZmFzdD86IGJvb2xlYW47IHdyaXRlRGVsYXk/OiBudW1iZXIgfSk6IG51bWJlciB7XG4gICAgaWYgKCFjb25maWcuZmFzdCkgcmV0dXJuIDA7XG4gICAgbGV0IGRlbGF5ID0gY29uZmlnLndyaXRlRGVsYXk7XG4gICAgLy8gQSB3cml0ZURlbGF5IG9mIHplcm8gaXMgYSByZWFsIGNob2ljZSAobm8gZGVsYXkgYXQgYWxsKSwgc28gb25seSBhbiBvbWl0dGVkIGRlbGF5IGdldHMgdGhlIGRlZmF1bHRcbiAgICBpZiAoZGVsYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZWxheSA9IERFRkFVTFRfRkFTVF9XUklURV9ERUxBWTtcbiAgICB9XG4gICAgaWYgKCFjb25maWcuc291cmNlQ29uZmlnIHx8IGNvbmZpZy5zb3VyY2VDb25maWcudHlwZSA9PT0gXCJyZW1vdGVcIikge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oZGVsYXksIE1BWF9SRU1PVEVfRkFTVF9CVUZGRVIpO1xuICAgIH1cbiAgICByZXR1cm4gZGVsYXk7XG59XG5cbi8qKiBUaGUgZGVsYXllZCB3cmFwcGVyIGFyb3VuZCBhIHNvdXJjZSwgd2hlbiBpdCBoYXMgb25lIC0gaG93IHRoZSBzdG9yZSByZWFjaGVzIHBhc3QgdGhlIGRlbGF5ICh0byB0aGUgcmVhbCBkaXNrIGZvciBsYXJnZSB1cGxvYWRzKSBhbmQgZmx1c2hlcyBvbiBzaHV0ZG93bi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0RlbGF5ZWQoc291cmNlOiBJQXJjaGl2ZXMpOiBBcmNoaXZlc0RlbGF5ZWQgfCB1bmRlZmluZWQge1xuICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBBcmNoaXZlc0RlbGF5ZWQpIHJldHVybiBzb3VyY2U7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBzb3VyY2UgaXRzZWxmLCBwYXN0IGFueSB3cml0ZSBkZWxheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBEZWxheWVkKHNvdXJjZTogSUFyY2hpdmVzKTogSUFyY2hpdmVzIHtcbiAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgQXJjaGl2ZXNEZWxheWVkKSByZXR1cm4gc291cmNlLmlubmVyO1xuICAgIHJldHVybiBzb3VyY2U7XG59XG4iXX0=
220
- /* _JS_SOURCE_HASH = "3541024d7f41350b06959e389ea1ccd83b0bd92260f63aa5502351c6aa1dbeea"; */
220
+ /* _JS_SOURCE_HASH = "599bad59578df7b19474360b45242fa25254e4be30a3d523c48fe50478cdd76b"; */
@@ -1,4 +1,4 @@
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";
1
+ "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");
@@ -211,4 +211,4 @@ class ArchivesRemote {
211
211
  }
212
212
  exports.ArchivesRemote = ArchivesRemote;
213
213
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjaGl2ZXNSZW1vdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBcmNoaXZlc1JlbW90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBZ0U7QUFDaEUsbURBQXdEO0FBQ3hELDJEQUFxRDtBQUNyRCxrREFBNkU7QUFDN0UsNENBQXdRO0FBQ3hRLGlEQUFnRjtBQUNoRiwyREFHNkI7QUFFN0Isa1ZBQWtWO0FBRWxWLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBWTdDLFNBQWdCLGVBQWUsQ0FBQyxHQUFXO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDekQsQ0FBQztBQU5ELDBDQU1DO0FBRUQsdUZBQXVGO0FBQ2hGLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxNQUF5RDtJQUMvRixvSkFBb0o7SUFDcEosK0JBQWMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDekMsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sSUFBQSxzQkFBYyxFQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksRUFBRSxHQUFHLElBQUEscUJBQWEsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxJQUFJLElBQUksR0FBRztRQUNQLE9BQU8sRUFBRSx3Q0FBb0I7UUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDaEIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO0tBQzdDLENBQUM7SUFDRixJQUFJLFNBQVMsR0FBRyxJQUFBLFlBQUksRUFBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsT0FBTyxNQUFNLDJDQUF1QixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDN0gsQ0FBQztBQWJELGtEQWFDO0FBRUQsTUFBYSxjQUFjO0lBQ3ZCLFlBQW9CLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBS3hDLFdBQU0sR0FBRyxJQUFBLDZCQUFjLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3BDLFdBQU0sR0FBRywrQkFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLGVBQVUsR0FBRywyQ0FBdUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBVHRCLG9KQUFvSjtRQUNwSiwrQkFBYyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBU00sWUFBWTtRQUNmLE9BQU8saUJBQWlCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxPQUFPLFdBQVcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hILENBQUM7SUFFRCxrWEFBa1g7SUFDM1csa0JBQWtCLENBQUMsWUFBMEI7UUFDaEQsSUFBSSxZQUFZLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEwsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUM1QyxDQUFDO0lBRU0sV0FBVztRQUNkLE9BQU8sK0JBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNiLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUN0QixNQUFNLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVELG1JQUFtSTtJQUMzSCxLQUFLLENBQUMsVUFBVSxDQUFJLEdBQXFCO1FBQzdDLElBQUksQ0FBQztZQUNELE9BQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsNkNBQXlCLENBQUM7Z0JBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkUsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBRUQsc1FBQXNRO0lBQy9QLEtBQUssQ0FBQyxnQkFBZ0I7UUFDekIsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxLQUFLLENBQUMsU0FBUztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3RDLElBQUksU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE9BQU87WUFDSCxJQUFJLEVBQUUsV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFFLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztZQUM5QixFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUU7U0FDbkIsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYztRQUN2QixJQUFJLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCx5SUFBeUk7SUFDakksS0FBSyxDQUFDLHFCQUFxQjtRQUMvQixJQUFJLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLG1CQUFZLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksaUJBQWlCLFNBQVMsQ0FBQyxTQUFTLFFBQVEsU0FBUyxDQUFDLEVBQUUsa0JBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLHdCQUF3QixTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ25ULENBQUM7SUFDTCxDQUFDO0lBRUQsZ1JBQWdSO0lBQ3hRLEtBQUssQ0FBQyxJQUFJLENBQUksR0FBcUI7UUFDdkMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQztnQkFDRCxPQUFPLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDdkIsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyw2Q0FBeUIsQ0FBQyxFQUFFLENBQUM7b0JBQzlDLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUMxQixTQUFTO2dCQUNiLENBQUM7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLHlDQUFxQixDQUFDLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDdEMsS0FBSyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ25ELE1BQU0sQ0FBQyxDQUFDO29CQUNaLENBQUM7b0JBQ0QsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDbkMsTUFBTSxJQUFBLGdCQUFLLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDaEMsU0FBUztnQkFDYixDQUFDO2dCQUNELE1BQU0sQ0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFnQixFQUFFLE1BQWtCO1FBQ2pELElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUM7SUFDOUMsQ0FBQztJQUNNLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBZ0IsRUFBRSxNQUFrQjtRQUNsRCxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDelEsT0FBTyxNQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxTQUFTLENBQUM7SUFDckgsQ0FBQztJQUNNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxJQUFZLEVBQUUsTUFBa0I7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxnR0FBZ0csQ0FBQyxDQUFDO1FBQ25OLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsK0JBQW1CLEVBQUUsQ0FBQztZQUNwQywyT0FBMk87WUFDM08sTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLElBQUEsNkJBQWlCLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9RLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFDTSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQWdCLEVBQUUsTUFBa0I7UUFDakQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL04sQ0FBQztJQUNNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBc0I7UUFDcEMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xNLENBQUM7SUFDTSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQWdCLEVBQUUsTUFBc0I7UUFDekQsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeE4sQ0FBQztJQUNNLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBYyxFQUFFLE1BQW1CO1FBQ3JELE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqTixDQUFDO0lBQ00sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFjLEVBQUUsTUFBbUI7UUFDakQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUEwQjtRQUNwRCxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdNLENBQUM7SUFDTSxLQUFLLENBQUMsU0FBUztRQUNsQixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUNNLEtBQUssQ0FBQyxhQUFhO1FBQ3RCLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEgsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBMEI7UUFDaEQsMkpBQTJKO1FBQzNKLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsSywwTUFBME07UUFDMU0sSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztZQUNoRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ3RDLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQzNDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDO1lBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLElBQUk7b0JBQUUsTUFBTTtnQkFDakIsS0FBSyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLG9CQUFvQixFQUFFLENBQUM7b0JBQ3hFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0csQ0FBQztZQUNMLENBQUM7WUFDRCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQztnQkFDRCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQUMsV0FBTSxDQUFDLENBQUMsQ0FBQztZQUNYLE1BQU0sQ0FBQyxDQUFDO1FBQ1osQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDNUIsd0ZBQXdGO1FBQ3hGLE9BQU8sSUFBQSwyQkFBWSxFQUFDLElBQUEsK0JBQWdCLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0o7QUFuTEQsd0NBbUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29ja2V0RnVuY3Rpb24gfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL1NvY2tldEZ1bmN0aW9uXCI7XG5pbXBvcnQgeyB0aW1lSW5NaW51dGUgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9taXNjXCI7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQgeyBnZXRJZGVudGl0eUNBLCBsb2FkSWRlbnRpdHlDQSwgc2lnbiB9IGZyb20gXCIuLi8uLi9taXNjL2h0dHBzL2NlcnRzXCI7XG5pbXBvcnQgeyBJQXJjaGl2ZXMsIEFyY2hpdmVGaWxlSW5mbywgQXJjaGl2ZXNDb25maWcsIEFyY2hpdmVzU3luY1N0YXR1cywgQ2hhbmdlc0FmdGVyQ29uZmlnLCBEZWxDb25maWcsIEZpbmRDb25maWcsIEdldENvbmZpZywgR2V0SW5mb0NvbmZpZywgTW92ZUZpbGVDb25maWcsIFNvdXJjZUNvbmZpZywgU2V0Q29uZmlnLCBTZXRMYXJnZUZpbGVDb25maWcsIExBUkdFX1NFVF9USFJFU0hPTEQsIGJ1ZmZlckNodW5rU3RyZWFtIH0gZnJvbSBcIi4uL0lBcmNoaXZlc1wiO1xuaW1wb3J0IHsgcGFyc2VIb3N0ZWRVcmwsIGdldEJ1Y2tldEJhc2VVcmwsIGJ1aWxkRmlsZVVybCB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuaW1wb3J0IHtcbiAgICBSZW1vdGVTdG9yYWdlQ29udHJvbGxlciwgU1RPUkFHRV9BVVRIX1BVUlBPU0UsXG4gICAgU1RPUkFHRV9OT1RfQVVUSEVOVElDQVRFRCwgU1RPUkFHRV9BQ0NFU1NfREVOSUVELFxufSBmcm9tIFwiLi9zdG9yYWdlQ29udHJvbGxlclwiO1xuXG4vLyBBIGJ1Y2tldCBvbiBvdXIgcmVtb3RlIHN0b3JhZ2Ugc2VydmVyIChzdG9yYWdlU2VydmVyLnRzKSwgdXNlZCBsaWtlIEFyY2hpdmVzQmFja2JsYXplLiBXb3JrcyBpbiBOb2RlLmpzIGFuZCB0aGUgYnJvd3Nlci4gQXV0aGVudGljYXRlcyB3aXRoIHRoaXMgbWFjaGluZSdzIGNlcnRzLnRzIGlkZW50aXR5OyBpZiB0aGUgYWNjb3VudCBoYXNuJ3QgdHJ1c3RlZCB0aGlzIG1hY2hpbmUgeWV0IGl0IHJlcXVlc3RzIGFjY2VzcywgYW5kIGJ5IGRlZmF1bHQgd2FpdHMsIGxvZ2dpbmcgaW5zdHJ1Y3Rpb25zIGV2ZXJ5IG1pbnV0ZSAoY2FsbHMgYmxvY2sgdW50aWwgYWNjZXNzIGlzIGdyYW50ZWQpLlxuXG5jb25zdCBBQ0NFU1NfUkVUUllfREVMQVkgPSAxMDAwICogMzA7XG5jb25zdCBMQVJHRV9GSUxFX1BBUlRfU0laRSA9IDggKiAxMDI0ICogMTAyNDtcblxuZXhwb3J0IHR5cGUgQXJjaGl2ZXNSZW1vdGVDb25maWcgPSB7XG4gICAgLy8gVGhlIGJ1Y2tldCdzIHJvdXRpbmcgVVJMLCB3aGljaCBhZGRyZXNzZXMgdGhlIHNlcnZlciwgYWNjb3VudCwgYW5kIGJ1Y2tldCBpbiBvbmU6XG4gICAgLy8gIGh0dHBzOi8vc3RvcmFnZS5leGFtcGxlLmNvbTo0NDQ0L2ZpbGUvPGFjY291bnQ+LzxidWNrZXROYW1lPi9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb25cbiAgICB1cmw6IHN0cmluZztcbiAgICAvLyBmYWxzZTogYWNjZXNzLWRlbmllZCBjYWxscyB0aHJvdyBpbW1lZGlhdGVseSAodGhlIGVycm9yIGluY2x1ZGVzIHRoZSBhY2Nlc3MgcGFnZSBsaW5rKSBpbnN0ZWFkIG9mIHJlcXVlc3RpbmcgYWNjZXNzIGFuZCBibG9ja2luZyB1bnRpbCBpdCBpcyBncmFudGVkICh0aGUgZGVmYXVsdCkuXG4gICAgd2FpdEZvckFjY2Vzcz86IGJvb2xlYW47XG4gICAgLyoqIFRoZSBleGFjdCByb3V0aW5nLWNvbmZpZyBlbnRyeSB0aGlzIGNvbm5lY3Rpb24gcmVwcmVzZW50cywgc2VudCB3aXRoIGV2ZXJ5IGNhbGwgc28gdGhlIHNlcnZlciBwaWNrcyB0aGUgbWF0Y2hpbmcgcGVyLXJvdXRlIHN0b3JlIChvbmUgc2VydmVyIGhvc3RzIG9uZSBzdG9yZSBwZXIgcm91dGUpLiBJbnN0YW5jZXMgYnVpbHQgZnJvbSBhIGJhcmUgVVJMIGZhYnJpY2F0ZSBvbmUgLSBpdCB3aWxsIG5ldmVyIG1hdGNoLCB3aGljaCBvbmx5IHdvcmtzIGZvciBjYWxscyB0aGF0IGRvbid0IHNlbGVjdCBhIHN0b3JlIChpbnRlcm5hbCByZWFkcywgUk9VVElOR19GSUxFLCBnZXRDb25maWcpLiAqL1xuICAgIHNvdXJjZUNvbmZpZzogU291cmNlQ29uZmlnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RvcmFnZVVybCh1cmw6IHN0cmluZyk6IHsgYWRkcmVzczogc3RyaW5nOyBwb3J0OiBudW1iZXIgfSB7XG4gICAgbGV0IHUgPSBuZXcgVVJMKHVybCk7XG4gICAgaWYgKHUucHJvdG9jb2wgIT09IFwiaHR0cHM6XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdG9yYWdlIFVSTCBtdXN0IHVzZSBodHRwcywgZ290ICR7SlNPTi5zdHJpbmdpZnkodS5wcm90b2NvbCl9IGluICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYWRkcmVzczogdS5ob3N0bmFtZSwgcG9ydDogK3UucG9ydCB8fCA0NDMgfTtcbn1cblxuLy8gQXV0aGVudGljYXRlcyBhIGNvbm5lY3Rpb24gdG8gYSBzdG9yYWdlIHNlcnZlciB3aXRoIHRoaXMgbWFjaGluZSdzIGNlcnRzLnRzIGlkZW50aXR5XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXV0aGVudGljYXRlU3RvcmFnZShjb25maWc6IHsgYWRkcmVzczogc3RyaW5nOyBwb3J0OiBudW1iZXI7IG5vZGVJZDogc3RyaW5nIH0pOiBQcm9taXNlPHsgbWFjaGluZUlkOiBzdHJpbmc7IGlwOiBzdHJpbmcgfT4ge1xuICAgIC8vIGhvc3RTZXJ2ZXIgbm9kZUlkcyBhcmUgbWFjaGluZS1zcGVjaWZpYywgc28gY29ubmVjdGlvbnMgYnkgZG9tYWluIG11c3QgdGFyZ2V0IFwiYW55IHNlcnZlciBhdCB0aGlzIGFkZHJlc3NcIiAod2hpY2ggaXMgaG93IGJyb3dzZXJzIGFsd2F5cyBjb25uZWN0KVxuICAgIFNvY2tldEZ1bmN0aW9uLkVOQUJMRV9DTElFTlRfTU9ERSA9IHRydWU7XG4gICAgbGV0IHJvb3REb21haW4gPSBjb25maWcuYWRkcmVzcy5zcGxpdChcIi5cIikuc2xpY2UoLTIpLmpvaW4oXCIuXCIpO1xuICAgIGF3YWl0IGxvYWRJZGVudGl0eUNBKHJvb3REb21haW4pO1xuICAgIGxldCBjYSA9IGdldElkZW50aXR5Q0Eocm9vdERvbWFpbik7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIHB1cnBvc2U6IFNUT1JBR0VfQVVUSF9QVVJQT1NFLFxuICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgICBzZXJ2ZXI6IGAke2NvbmZpZy5hZGRyZXNzfToke2NvbmZpZy5wb3J0fWAsXG4gICAgfTtcbiAgICBsZXQgc2lnbmF0dXJlID0gc2lnbih7IGtleTogY2Eua2V5IH0sIGRhdGEpO1xuICAgIHJldHVybiBhd2FpdCBSZW1vdGVTdG9yYWdlQ29udHJvbGxlci5ub2Rlc1tjb25maWcubm9kZUlkXS5hdXRoZW50aWNhdGUoeyBjZXJ0UGVtOiBjYS5jZXJ0LnRvU3RyaW5nKCksIHNpZ25hdHVyZSwgZGF0YSB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFyY2hpdmVzUmVtb3RlIGltcGxlbWVudHMgSUFyY2hpdmVzIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogQXJjaGl2ZXNSZW1vdGVDb25maWcpIHtcbiAgICAgICAgLy8gaG9zdFNlcnZlciBub2RlSWRzIGFyZSBtYWNoaW5lLXNwZWNpZmljLCBzbyBjb25uZWN0aW9ucyBieSBkb21haW4gbXVzdCB0YXJnZXQgXCJhbnkgc2VydmVyIGF0IHRoaXMgYWRkcmVzc1wiICh3aGljaCBpcyBob3cgYnJvd3NlcnMgYWx3YXlzIGNvbm5lY3QpXG4gICAgICAgIFNvY2tldEZ1bmN0aW9uLkVOQUJMRV9DTElFTlRfTU9ERSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZWQgPSBwYXJzZUhvc3RlZFVybCh0aGlzLmNvbmZpZy51cmwpO1xuICAgIHByaXZhdGUgYWNjb3VudCA9IHRoaXMucGFyc2VkLmFjY291bnQ7XG4gICAgcHJpdmF0ZSBidWNrZXROYW1lID0gdGhpcy5wYXJzZWQuYnVja2V0TmFtZTtcbiAgICBwcml2YXRlIG5vZGVJZCA9IFNvY2tldEZ1bmN0aW9uLmNvbm5lY3QoeyBhZGRyZXNzOiB0aGlzLnBhcnNlZC5hZGRyZXNzLCBwb3J0OiB0aGlzLnBhcnNlZC5wb3J0IH0pO1xuICAgIHByaXZhdGUgY29udHJvbGxlciA9IFJlbW90ZVN0b3JhZ2VDb250cm9sbGVyLm5vZGVzW3RoaXMubm9kZUlkXTtcbiAgICBwcml2YXRlIGxhc3REZW5pZWRMb2cgPSAwO1xuXG4gICAgcHVibGljIGdldERlYnVnTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIGByZW1vdGVTdG9yYWdlICR7dGhpcy5wYXJzZWQuYWRkcmVzc306JHt0aGlzLnBhcnNlZC5wb3J0fSBhY2NvdW50ICR7dGhpcy5hY2NvdW50fSBidWNrZXQgJHt0aGlzLmJ1Y2tldE5hbWV9YDtcbiAgICB9XG5cbiAgICAvKiogVGhlIGNvbmZpZyB0cmF2ZWxzIHdpdGggZXZlcnkgcmVxdWVzdCAodGhlIHNlcnZlciBtYXRjaGVzIGl0IGFnYWluc3QgaXRzIG93biBlbnRyaWVzIHRvIHBpY2sgdGhlIHN0b3JlKSwgc28gYSBjb25maWcgY2hhbmdlIGhhcyB0byBsYW5kIGhlcmUgLSBvdGhlcndpc2Ugd2Uga2VlcCBhc2tpbmcgZm9yIGEgc291cmNlIGRlc2NyaXB0aW9uIHRoZSBzZXJ2ZXIgbm8gbG9uZ2VyIHJlY29nbml6ZXMuIE9ubHkgZXZlciBjYWxsZWQgd2l0aCBhIGNvbmZpZyBmb3IgdGhlIFNBTUUgZW5kcG9pbnQgKHNlZSBzb3VyY2VJZGVudGl0eSksIHNvIHRoZSBjb25uZWN0aW9uLCBhY2NvdW50LCBhbmQgYnVja2V0IGNhbm5vdCBjaGFuZ2UgdW5kZXIgdXMuICovXG4gICAgcHVibGljIHVwZGF0ZVNvdXJjZUNvbmZpZyhzb3VyY2VDb25maWc6IFNvdXJjZUNvbmZpZyk6IHZvaWQge1xuICAgICAgICBpZiAoc291cmNlQ29uZmlnLnVybCAhPT0gdGhpcy5jb25maWcudXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVwZGF0ZVNvdXJjZUNvbmZpZyBtdXN0IHN0YXkgb24gdGhlIHNhbWUgZW5kcG9pbnQsIGdvdCAke0pTT04uc3RyaW5naWZ5KHNvdXJjZUNvbmZpZy51cmwpfSBmb3IgJHt0aGlzLmdldERlYnVnTmFtZSgpfSAoJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZy51cmwpfSlgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZy5zb3VyY2VDb25maWcgPSBzb3VyY2VDb25maWc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ29ubmVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gU29ja2V0RnVuY3Rpb24uaXNOb2RlQ29ubmVjdGVkKHRoaXMubm9kZUlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcGluZygpOiBQcm9taXNlPHt9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbnRyb2xsZXIucGluZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgYXV0aGVudGljYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBhdXRoZW50aWNhdGVTdG9yYWdlKHsgYWRkcmVzczogdGhpcy5wYXJzZWQuYWRkcmVzcywgcG9ydDogdGhpcy5wYXJzZWQucG9ydCwgbm9kZUlkOiB0aGlzLm5vZGVJZCB9KTtcbiAgICB9XG5cbiAgICAvLyBSdW5zIGEgY2FsbCwgYXV0aGVudGljYXRpbmcgKGFuZCByZS1hdXRoZW50aWNhdGluZyBhZnRlciByZWNvbm5lY3RzKSBhcyBuZWVkZWQuIFVubGlrZSBjYWxsKCksIGRvZXMgTk9UIHdhaXQgZm9yIGFjY291bnQgYWNjZXNzLlxuICAgIHByaXZhdGUgYXN5bmMgY2FsbEF1dGhlZDxUPihmbmM6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBmbmMoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICBpZiAoIVN0cmluZyhlLnN0YWNrIHx8IGUpLmluY2x1ZGVzKFNUT1JBR0VfTk9UX0FVVEhFTlRJQ0FURUQpKSB0aHJvdyBlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hdXRoZW50aWNhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBmbmMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoaXMgbWFjaGluZSBoYXMgYWNjZXNzIHRvIHRoZSBhY2NvdW50LiBPdGhlcndpc2UgcHV0cyBpbiBhbiBhY2Nlc3MgcmVxdWVzdCBhbmQgcmV0dXJucyBvdXIgbWFjaGluZUlkICsgaXAgKHNvIHRoZSBjYWxsZXIgY2FuIGRpc3BsYXkgdGhlbSBhbG9uZ3NpZGUgdGhlIGxpbmssIGZvciB0aGUgYXBwcm92ZXIgdG8gbWF0Y2ggdGhlIGluY29taW5nIHJlcXVlc3QpIGFuZCB0aGUgbGluayB0byB0aGUgZ3JhbnQgcGFnZS5cbiAgICBwdWJsaWMgYXN5bmMgd2FpdGluZ0ZvckFjY2VzcygpOiBQcm9taXNlPHsgbGluazogc3RyaW5nOyBtYWNoaW5lSWQ6IHN0cmluZzsgaXA6IHN0cmluZyB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBzdGF0ZSA9IGF3YWl0IHRoaXMuY2FsbEF1dGhlZCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIuZ2V0QWNjZXNzU3RhdGUoeyBhY2NvdW50OiB0aGlzLmFjY291bnQgfSkpO1xuICAgICAgICBpZiAoc3RhdGUuaGFzQWNjZXNzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcmVxdWVzdGVkID0gYXdhaXQgdGhpcy5jYWxsQXV0aGVkKCgpID0+IHRoaXMuY29udHJvbGxlci5yZXF1ZXN0QWNjZXNzKHsgYWNjb3VudDogdGhpcy5hY2NvdW50IH0pKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbms6IGBodHRwczovLyR7dGhpcy5wYXJzZWQuYWRkcmVzc306JHt0aGlzLnBhcnNlZC5wb3J0fS8ke3RoaXMuYWNjb3VudH1gLFxuICAgICAgICAgICAgbWFjaGluZUlkOiByZXF1ZXN0ZWQubWFjaGluZUlkLFxuICAgICAgICAgICAgaXA6IHJlcXVlc3RlZC5pcCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaGFzV3JpdGVBY2Nlc3MoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGxldCBzdGF0ZSA9IGF3YWl0IHRoaXMuY2FsbEF1dGhlZCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIuZ2V0QWNjZXNzU3RhdGUoeyBhY2NvdW50OiB0aGlzLmFjY291bnQgfSkpO1xuICAgICAgICByZXR1cm4gISFzdGF0ZS5oYXNBY2Nlc3M7XG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXJzIG91ciBhY2Nlc3MgcmVxdWVzdCBzZXJ2ZXItc2lkZSAoc28gYW4gYWRtaW4gaGFzIGEgcmVxdWVzdElkIHRvIGdyYW50KSBhbmQgbG9ncyB0aGUgZ3JhbnQgaW5zdHJ1Y3Rpb25zLCBhdCBtb3N0IG9uY2UgYSBtaW51dGVcbiAgICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyQWNjZXNzUmVxdWVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3RlZCA9IGF3YWl0IHRoaXMuY2FsbEF1dGhlZCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIucmVxdWVzdEFjY2Vzcyh7IGFjY291bnQ6IHRoaXMuYWNjb3VudCB9KSk7XG4gICAgICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5sYXN0RGVuaWVkTG9nID4gdGltZUluTWludXRlKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3REZW5pZWRMb2cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYE5vIGFjY2VzcyB0byBzdG9yYWdlIGFjY291bnQgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmFjY291bnQpfSBvbiAke3RoaXMucGFyc2VkLmFkZHJlc3N9OiR7dGhpcy5wYXJzZWQucG9ydH0gKG91ciBtYWNoaW5lICR7cmVxdWVzdGVkLm1hY2hpbmVJZH0sIGlwICR7cmVxdWVzdGVkLmlwfSkuIFNlZSBodHRwczovLyR7dGhpcy5wYXJzZWQuYWRkcmVzc306JHt0aGlzLnBhcnNlZC5wb3J0fS8ke3RoaXMuYWNjb3VudH0gLSBvciBncmFudCBpdCB3aXRoOiAke3JlcXVlc3RlZC5ncmFudEFjY2Vzc0NvbW1hbmR9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSdW5zIGEgY2FsbCwgYXV0aGVudGljYXRpbmcgKGFuZCByZS1hdXRoZW50aWNhdGluZyBhZnRlciByZWNvbm5lY3RzKSBhbmQgd2FpdGluZyBmb3IgYWNjb3VudCBhY2Nlc3MgYXMgbmVlZGVkLiBXaXRoIHdhaXRGb3JBY2Nlc3MgZmFsc2UsIGRlbmllZCBjYWxscyB0aHJvdyBpbW1lZGlhdGVseSBpbnN0ZWFkIC0gYnV0IHRoZSBhY2Nlc3MgcmVxdWVzdCBpcyBzdGlsbCByZWdpc3RlcmVkIChpbiB0aGUgYmFja2dyb3VuZCksIHNvIHRoZSBkZW5pYWwgaXMgZ3JhbnRhYmxlLlxuICAgIHByaXZhdGUgYXN5bmMgY2FsbDxUPihmbmM6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZuYygpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBTdHJpbmcoZS5zdGFjayB8fCBlKTtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmNsdWRlcyhTVE9SQUdFX05PVF9BVVRIRU5USUNBVEVEKSkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmF1dGhlbnRpY2F0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoU1RPUkFHRV9BQ0NFU1NfREVOSUVEKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcud2FpdEZvckFjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5yZWdpc3RlckFjY2Vzc1JlcXVlc3QoKS5jYXRjaCgoKSA9PiB7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyQWNjZXNzUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBkZWxheShBQ0NFU1NfUkVUUllfREVMQVkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXQoZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0Q29uZmlnKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0MihmaWxlTmFtZSwgY29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiByZXN1bHQuZGF0YSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXQyKGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldENvbmZpZyk6IFByb21pc2U8eyBkYXRhOiBCdWZmZXI7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5jYWxsKCgpID0+IHRoaXMuY29udHJvbGxlci5nZXQyKHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUsIHBhdGg6IGZpbGVOYW1lLCBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZywgcmFuZ2U6IGNvbmZpZz8ucmFuZ2UsIGludGVybmFsOiBjb25maWc/LmludGVybmFsLCBpbmNsdWRlVG9tYnN0b25lczogY29uZmlnPy5pbmNsdWRlVG9tYnN0b25lcyB9KSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgJiYgeyBkYXRhOiBCdWZmZXIuZnJvbShyZXN1bHQuZGF0YSksIHdyaXRlVGltZTogcmVzdWx0LndyaXRlVGltZSwgc2l6ZTogcmVzdWx0LnNpemUgfSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBzZXQoZmlsZU5hbWU6IHN0cmluZywgZGF0YTogQnVmZmVyLCBjb25maWc/OiBTZXRDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHNldCB3YXMgY2FsbGVkIHdpdGggYW4gZW1wdHkgYnVmZmVyIGZvciAke0pTT04uc3RyaW5naWZ5KGZpbGVOYW1lKX0gb24gJHt0aGlzLmdldERlYnVnTmFtZSgpfTogYW4gZW1wdHkgZmlsZSBJUyBhIGRlbGV0aW9uIGluIHRoaXMgc3lzdGVtIGFuZCB3b3VsZCByZWFkIGJhY2sgYXMgbWlzc2luZyAtIGNhbGwgZGVsIGluc3RlYWRgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiBMQVJHRV9TRVRfVEhSRVNIT0xEKSB7XG4gICAgICAgICAgICAvLyBPbmUgZ2lhbnQgbWVzc2FnZSB3b3VsZCBleGNlZWQgdGhlIHdpcmUgbGltaXQgYW5kIGxhZyBldmVyeSBvdGhlciBjbGllbnQgc2hhcmluZyB0aGlzIGNvbm5lY3Rpb24gLSBzdHJlYW0gaXQgaW5zdGVhZC4gVGhlIGNvbmZpZyB0cmF2ZWxzIHdpdGggaXQsIHNvIGNyb3NzaW5nIHRoZSB0aHJlc2hvbGQgY2hhbmdlcyBvbmx5IEhPVyB0aGUgYnl0ZXMgbW92ZSwgbmV2ZXIgd2hhdCB0aGUgd3JpdGUgbWVhbnMuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldExhcmdlRmlsZSh7IHBhdGg6IGZpbGVOYW1lLCAuLi5jb25maWcsIC4uLmJ1ZmZlckNodW5rU3RyZWFtKGRhdGEpIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuY2FsbCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIuc2V0KHsgYWNjb3VudDogdGhpcy5hY2NvdW50LCBidWNrZXROYW1lOiB0aGlzLmJ1Y2tldE5hbWUsIHBhdGg6IGZpbGVOYW1lLCBkYXRhLCBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZywgbGFzdE1vZGlmaWVkOiBjb25maWc/Lmxhc3RNb2RpZmllZCwgZm9yY2VTZXRJbW11dGFibGU6IGNvbmZpZz8uZm9yY2VTZXRJbW11dGFibGUsIGludGVybmFsOiBjb25maWc/LmludGVybmFsIH0pKTtcbiAgICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZGVsKGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IERlbENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmRlbCh7IGFjY291bnQ6IHRoaXMuYWNjb3VudCwgYnVja2V0TmFtZTogdGhpcy5idWNrZXROYW1lLCBwYXRoOiBmaWxlTmFtZSwgc291cmNlQ29uZmlnOiB0aGlzLmNvbmZpZy5zb3VyY2VDb25maWcsIGxhc3RNb2RpZmllZDogY29uZmlnPy5sYXN0TW9kaWZpZWQsIGludGVybmFsOiBjb25maWc/LmludGVybmFsIH0pKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIG1vdmUoY29uZmlnOiBNb3ZlRmlsZUNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLm1vdmUoeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgZnJvbVBhdGg6IGNvbmZpZy5mcm9tUGF0aCwgdG9QYXRoOiBjb25maWcudG9QYXRoLCBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZyB9KSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvKGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldEluZm9Db25maWcpOiBQcm9taXNlPHsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldEluZm8oeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgcGF0aDogZmlsZU5hbWUsIHNvdXJjZUNvbmZpZzogdGhpcy5jb25maWcuc291cmNlQ29uZmlnLCBpbmNsdWRlVG9tYnN0b25lczogY29uZmlnPy5pbmNsdWRlVG9tYnN0b25lcyB9KSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBmaW5kSW5mbyhwcmVmaXg6IHN0cmluZywgY29uZmlnPzogRmluZENvbmZpZyk6IFByb21pc2U8QXJjaGl2ZUZpbGVJbmZvW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2FsbCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIuZmluZEluZm8oeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgcHJlZml4LCBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZywgc2hhbGxvdzogY29uZmlnPy5zaGFsbG93LCB0eXBlOiBjb25maWc/LnR5cGUgfSkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZmluZChwcmVmaXg6IHN0cmluZywgY29uZmlnPzogRmluZENvbmZpZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmZpbmRJbmZvKHByZWZpeCwgY29uZmlnKSkubWFwKHggPT4geC5wYXRoKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldENoYW5nZXNBZnRlcjIoY29uZmlnOiBDaGFuZ2VzQWZ0ZXJDb25maWcpOiBQcm9taXNlPEFyY2hpdmVGaWxlSW5mb1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldENoYW5nZXNBZnRlcjIoeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgc291cmNlQ29uZmlnOiB0aGlzLmNvbmZpZy5zb3VyY2VDb25maWcsIHRpbWU6IGNvbmZpZy50aW1lLCByb3V0ZXM6IGNvbmZpZy5yb3V0ZXMgfSkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uZmlnKCk6IFByb21pc2U8QXJjaGl2ZXNDb25maWc+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2FsbCgoKSA9PiB0aGlzLmNvbnRyb2xsZXIuZ2V0QXJjaGl2ZXNDb25maWcoeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSB9KSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRTeW5jU3RhdHVzKCk6IFByb21pc2U8QXJjaGl2ZXNTeW5jU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldFN5bmNTdGF0dXMoeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSB9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldExhcmdlRmlsZShjb25maWc6IFNldExhcmdlRmlsZUNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBFbnN1cmUgd2UncmUgYXV0aGVudGljYXRlZCB3aXRoIGFjY2VzcyBCRUZPUkUgY29uc3VtaW5nIGFueSBkYXRhICh0aGUgc3RyZWFtIGNhbm5vdCBiZSByZXdvdW5kLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIHJldHJ5IGxvb3AgYXJvdW5kIHRoZSBhY3R1YWwgdXBsb2FkKVxuICAgICAgICBhd2FpdCB0aGlzLmNhbGwoKCkgPT4gdGhpcy5jb250cm9sbGVyLmdldEluZm8oeyBhY2NvdW50OiB0aGlzLmFjY291bnQsIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0TmFtZSwgcGF0aDogY29uZmlnLnBhdGgsIHNvdXJjZUNvbmZpZzogdGhpcy5jb25maWcuc291cmNlQ29uZmlnIH0pKTtcbiAgICAgICAgLy8gVGhlIHdyaXRlJ3Mgc2VtYW50aWNzIChpbW11dGFiaWxpdHksIG9yZGVyaW5nLCBpbnRlcm5hbCkgYXJlIGRlY2lkZWQgYnkgdGhlIHNlcnZlciBhdCBzdGFydCwgYmVmb3JlIGFueSBieXRlcyBtb3ZlIC0gYSByZWplY3Rpb24gdGhlbiBjb3N0cyBub3RoaW5nLCB3aGlsZSBvbmUgYXQgZmluaXNoIHdvdWxkIHdhc3RlIHRoZSB3aG9sZSB0cmFuc2ZlclxuICAgICAgICBsZXQgdXBsb2FkSWQgPSBhd2FpdCB0aGlzLmNvbnRyb2xsZXIuc3RhcnRMYXJnZUZpbGUoe1xuICAgICAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgICAgICAgYnVja2V0TmFtZTogdGhpcy5idWNrZXROYW1lLFxuICAgICAgICAgICAgcGF0aDogY29uZmlnLnBhdGgsXG4gICAgICAgICAgICBzb3VyY2VDb25maWc6IHRoaXMuY29uZmlnLnNvdXJjZUNvbmZpZyxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogY29uZmlnLmxhc3RNb2RpZmllZCxcbiAgICAgICAgICAgIGZvcmNlU2V0SW1tdXRhYmxlOiBjb25maWcuZm9yY2VTZXRJbW11dGFibGUsXG4gICAgICAgICAgICBub0NoZWNrczogY29uZmlnLm5vQ2hlY2tzLFxuICAgICAgICAgICAgaW50ZXJuYWw6IGNvbmZpZy5pbnRlcm5hbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gYXdhaXQgY29uZmlnLmdldE5leHREYXRhKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhKSBicmVhaztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBkYXRhLmxlbmd0aDsgb2Zmc2V0ICs9IExBUkdFX0ZJTEVfUEFSVF9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29udHJvbGxlci51cGxvYWRQYXJ0KHsgdXBsb2FkSWQsIGRhdGE6IGRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBMQVJHRV9GSUxFX1BBUlRfU0laRSkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb250cm9sbGVyLmZpbmlzaExhcmdlRmlsZSh7IHVwbG9hZElkIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29udHJvbGxlci5jYW5jZWxMYXJnZUZpbGUoeyB1cGxvYWRJZCB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFVSTChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICAvLyBPbmx5IGFjdHVhbGx5IGxvYWRzIGZvciBwdWJsaWMgYnVja2V0cyAodGhlIHNlcnZlciByZWplY3RzIHBsYWluIFVSTCByZWFkcyBvdGhlcndpc2UpXG4gICAgICAgIHJldHVybiBidWlsZEZpbGVVcmwoZ2V0QnVja2V0QmFzZVVybCh0aGlzLmNvbmZpZy51cmwpLCBwYXRoKTtcbiAgICB9XG59XG4iXX0=
214
- /* _JS_SOURCE_HASH = "87aee6533804ad2ae9f2b7e37d75c88891eeb154bc94a810e80835fc9228f9aa"; */
214
+ /* _JS_SOURCE_HASH = "ffa15e02f54cde071071de0d37814839d4a051e054097cb2427bac45c2fb455a"; */
@@ -1,4 +1,4 @@
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";
1
+ "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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SjtBQTVGRCxrQ0E0RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBodHRwc1JlcXVlc3QsIEh0dHBzUmVzcG9uc2VJbmZvIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvaHR0cHNcIjtcbmltcG9ydCB7IElBcmNoaXZlcywgQXJjaGl2ZUZpbGVJbmZvLCBBcmNoaXZlc0NvbmZpZywgQ2hhbmdlc0FmdGVyQ29uZmlnLCBGaW5kQ29uZmlnLCBHZXRDb25maWcsIEdldEluZm9Db25maWcsIFNldExhcmdlRmlsZUNvbmZpZyB9IGZyb20gXCIuLi9JQXJjaGl2ZXNcIjtcbmltcG9ydCB7IGJ1aWxkRmlsZVVybCB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuXG4vLyBSZWFkLW9ubHkgSUFyY2hpdmVzIG92ZXIgYSBwdWJsaWMgYnVja2V0J3MgcGxhaW4tVVJMIGZvcm0gKG91ciBzdG9yYWdlIHNlcnZlcidzXG4vLyAvZmlsZS88YWNjb3VudD4vPGJ1Y2tldE5hbWU+Ly4uLiByb3V0ZSwgb3IgYSBiYWNrYmxhemUgZnJpZW5kbHkgVVJMKS4gVXNlZCB3aGVuIHdlIGhhdmUgbm8gQVBJIGFjY2VzcyB0byBhIHNvdXJjZS4gT25seSBzaW5nbGUtZmlsZSByZWFkcyB3b3JrOiB0aGVyZSBpcyBubyBsaXN0aW5nLCBhbmQgd3JpdGVzIGFsd2F5cyB0aHJvdy5cblxuZXhwb3J0IGNsYXNzIEFyY2hpdmVzVXJsIGltcGxlbWVudHMgSUFyY2hpdmVzIHtcbiAgICAvLyBiYXNlIGlzIHRoZSBidWNrZXQncyBwdWJsaWMgYmFzZSBVUkwsIGUuZy4gaHR0cHM6Ly9ob3N0OnBvcnQvZmlsZS88YWNjb3VudD4vPGJ1Y2tldE5hbWU+XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBiYXNlOiBzdHJpbmcpIHsgfVxuXG4gICAgcHVibGljIGdldERlYnVnTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIGB1cmwgJHt0aGlzLmJhc2V9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRPbmx5RXJyb3Iob3BlcmF0aW9uOiBzdHJpbmcpOiBFcnJvciB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoYCR7b3BlcmF0aW9ufSBpcyBub3Qgc3VwcG9ydGVkIG92ZXIgVVJMLWZvcm0gYWNjZXNzIChubyBBUEkgYWNjZXNzIHRvIHRoaXMgc291cmNlLCBvbmx5IHB1YmxpYyBVUkwgcmVhZHMpLiBTb3VyY2U6ICR7dGhpcy5iYXNlfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXQoZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0Q29uZmlnKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0MihmaWxlTmFtZSwgY29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiByZXN1bHQuZGF0YSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXQyKGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldENvbmZpZyk6IFByb21pc2U8eyBkYXRhOiBCdWZmZXI7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgdXJsID0gYnVpbGRGaWxlVXJsKHRoaXMuYmFzZSwgZmlsZU5hbWUpO1xuICAgICAgICBsZXQgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICBsZXQgcmFuZ2UgPSBjb25maWc/LnJhbmdlO1xuICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbXCJSYW5nZVwiXSA9IGBieXRlcz0ke3JhbmdlLnN0YXJ0fS0ke3JhbmdlLmVuZCAtIDF9YDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzcG9uc2U6IEh0dHBzUmVzcG9uc2VJbmZvID0geyBoZWFkZXJzOiB7fSB9O1xuICAgICAgICBsZXQgZGF0YTogQnVmZmVyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGF0YSA9IGF3YWl0IGh0dHBzUmVxdWVzdCh1cmwsIHVuZGVmaW5lZCwgXCJHRVRcIiwgZmFsc2UsIHsgaGVhZGVycywgb3V0UmVzcG9uc2U6IHJlc3BvbnNlIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBodHRwc1JlcXVlc3QgdGhyb3dzIG9uIGFueSBub24tMnh4OyBhIG1pc3NpbmcgZmlsZSBpcyBhIG5vcm1hbCBhYnNlbnQgcmVzdWx0LCBub3QgYW4gZXJyb3IuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gNDA0KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBIHJlYWwgMjA2IG9ubHkgcmV0dXJucyB0aGUgcmVxdWVzdGVkIHNsaWNlLCBzbyB0aGUgZnVsbCBzaXplIGxpdmVzIGluIENvbnRlbnQtUmFuZ2UncyB0b3RhbC5cbiAgICAgICAgbGV0IHNpemUgPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgbGV0IGNvbnRlbnRSYW5nZSA9IHJlc3BvbnNlLmhlYWRlcnNbXCJjb250ZW50LXJhbmdlXCJdO1xuICAgICAgICBsZXQgdG90YWwgPSBjb250ZW50UmFuZ2UgJiYgTnVtYmVyKGNvbnRlbnRSYW5nZS5zcGxpdChcIi9cIilbMV0pO1xuICAgICAgICBpZiAodG90YWwgJiYgTnVtYmVyLmlzRmluaXRlKHRvdGFsKSkge1xuICAgICAgICAgICAgc2l6ZSA9IHRvdGFsO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNlcnZlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHJhbmdlcyByZXR1cm4gdGhlIGZ1bGwgZmlsZSB3aXRoIGEgMjAwIChvdXJzIHNlcnZlcyByZWFsIDIwNnMsIGJ1dCBiYWNrYmxhemUgZnJpZW5kbHkgVVJMcyBhbmQgcHJveGllcyBtYXkgbm90KVxuICAgICAgICBpZiAocmFuZ2UgJiYgcmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICBkYXRhID0gZGF0YS5zdWJhcnJheShNYXRoLm1pbihyYW5nZS5zdGFydCwgZGF0YS5sZW5ndGgpLCBNYXRoLm1pbihyYW5nZS5lbmQsIGRhdGEubGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxhc3RNb2RpZmllZCA9IHJlc3BvbnNlLmhlYWRlcnNbXCJsYXN0LW1vZGlmaWVkXCJdO1xuICAgICAgICBsZXQgd3JpdGVUaW1lID0gbGFzdE1vZGlmaWVkICYmIG5ldyBEYXRlKGxhc3RNb2RpZmllZCkuZ2V0VGltZSgpIHx8IDA7XG4gICAgICAgIC8vIEEgc2l6ZS0wIGFuc3dlciBpcyBhIHRvbWJzdG9uZSAoYmFja2JsYXplIGZyaWVuZGx5IFVSTHMgc2VydmUgZGVsZXRpb25zIGFzIHJlYWwgZW1wdHkgZmlsZXM7IG91ciBvd24gc2VydmVycyA0MDQgdGhlbSkgLSBhYnNlbnQsIHVubGVzcyB0aGUgY2FsbGVyIGFza2VkIGZvciB0b21ic3RvbmVzLiBSYW5nZWQgcmVhZHMgb2YgYSBSRUFMIGZpbGUgY2FuIGxlZ2l0aW1hdGVseSByZXR1cm4gbm8gYnl0ZXMgKHJhbmdlIHBhc3QgRU9GKSwgd2hpY2ggdGhlIHRvdGFsIHNpemUgZGlzdGluZ3Vpc2hlcy5cbiAgICAgICAgaWYgKCFzaXplICYmICFjb25maWc/LmluY2x1ZGVUb21ic3RvbmVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4geyBkYXRhLCB3cml0ZVRpbWUsIHNpemUgfTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldEluZm8oZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0SW5mb0NvbmZpZyk6IFByb21pc2U8eyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgLy8gQSAxLWJ5dGUgcmFuZ2VkIHJlYWQ6IENvbnRlbnQtUmFuZ2UgY2FycmllcyB0aGUgZnVsbCBzaXplIGFuZCBMYXN0LU1vZGlmaWVkIHRoZSB3cml0ZSB0aW1lLCBzbyBtZXRhZGF0YSBuZXZlciBkb3dubG9hZHMgdGhlIGZpbGVcbiAgICAgICAgbGV0IHJlc3VsdDogeyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmdldDIoZmlsZU5hbWUsIHsgcmFuZ2U6IHsgc3RhcnQ6IDAsIGVuZDogMSB9LCBpbmNsdWRlVG9tYnN0b25lczogY29uZmlnPy5pbmNsdWRlVG9tYnN0b25lcyB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBTb21lIHNlcnZlcnMgcmVqZWN0IHJhbmdlZCByZWFkcyBvZiBlbXB0eSBmaWxlcyAoNDE2IGluc3RlYWQgb2YgYW4gZW1wdHkgMjA2KTsgYSBmdWxsIHJlYWQgaXMgdGhlIGZhbGxiYWNrLCBhbmQgZm9yIGFuIGVtcHR5IGZpbGUgaXQgaXMgZnJlZSBhbnl3YXlcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0MihmaWxlTmFtZSwgeyBpbmNsdWRlVG9tYnN0b25lczogY29uZmlnPy5pbmNsdWRlVG9tYnN0b25lcyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFyZXN1bHQuc2l6ZSAmJiAhY29uZmlnPy5pbmNsdWRlVG9tYnN0b25lcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHsgd3JpdGVUaW1lOiByZXN1bHQud3JpdGVUaW1lLCBzaXplOiByZXN1bHQuc2l6ZSB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXQoZmlsZU5hbWU6IHN0cmluZywgZGF0YTogQnVmZmVyLCBjb25maWc/OiB7IGxhc3RNb2RpZmllZD86IG51bWJlciB9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgdGhpcy5yZWFkT25seUVycm9yKFwic2V0XCIpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZGVsKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgdGhpcy5yZWFkT25seUVycm9yKFwiZGVsXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgc2V0TGFyZ2VGaWxlKGNvbmZpZzogU2V0TGFyZ2VGaWxlQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IHRoaXMucmVhZE9ubHlFcnJvcihcInNldExhcmdlRmlsZVwiKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGZpbmQocHJlZml4OiBzdHJpbmcsIGNvbmZpZz86IEZpbmRDb25maWcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHRocm93IHRoaXMucmVhZE9ubHlFcnJvcihcImZpbmQgKGxpc3RpbmcpXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZmluZEluZm8ocHJlZml4OiBzdHJpbmcsIGNvbmZpZz86IEZpbmRDb25maWcpOiBQcm9taXNlPEFyY2hpdmVGaWxlSW5mb1tdPiB7XG4gICAgICAgIHRocm93IHRoaXMucmVhZE9ubHlFcnJvcihcImZpbmRJbmZvIChsaXN0aW5nKVwiKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldENoYW5nZXNBZnRlcjIoY29uZmlnOiBDaGFuZ2VzQWZ0ZXJDb25maWcpOiBQcm9taXNlPEFyY2hpdmVGaWxlSW5mb1tdPiB7XG4gICAgICAgIHRocm93IHRoaXMucmVhZE9ubHlFcnJvcihcImdldENoYW5nZXNBZnRlcjIgKGxpc3RpbmcpXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRVUkwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkRmlsZVVybCh0aGlzLmJhc2UsIHBhdGgpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uZmlnKCk6IFByb21pc2U8QXJjaGl2ZXNDb25maWc+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBoYXNXcml0ZUFjY2VzcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
105
- /* _JS_SOURCE_HASH = "e323f531d5e37ed4dc384e973c5f992b12a2e278dab33bd998330954783c1728"; */
105
+ /* _JS_SOURCE_HASH = "fe4be2892da9c750089d3d568497a03eb76c4e593603fd3ca735b2b6e41abbfa"; */
@@ -1,4 +1,4 @@
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";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.debugClearAccountWriteStats = exports.getBucketWriteStats = exports.countBucketWrite = exports.clearAccountAccessStats = exports.readAccessSummaries = exports.getAccessTotals = exports.trackAccessCall = exports.trackAccess = void 0;
4
4
  const treeSummary_1 = require("../../treeSummary");
@@ -145,4 +145,4 @@ function debugClearAccountWriteStats(account) {
145
145
  }
146
146
  exports.debugClearAccountWriteStats = debugClearAccountWriteStats;
147
147
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzU3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhY2Nlc3NTdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBOEQ7QUFFOUQsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFjbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7QUFFaEUsU0FBUyxRQUFRLENBQUMsUUFBd0M7SUFDdEQsT0FBTyxJQUFJLHlCQUFXLENBQWtDO1FBQ3BELE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJO1FBQzVCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25DLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxDQUFDO1FBQ0QsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUs7UUFDbkMsbUJBQW1CLEVBQUUscUJBQXFCO0tBQzdDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCx5TUFBeU07QUFDek0sU0FBZ0IsV0FBVyxDQUFDLE1BQTJFO0lBQ25HLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFV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QixLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztJQUNqQyxDQUFDO1NBQU0sQ0FBQztRQUNKLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztJQUNoQyxDQUFDO0FBQ0wsQ0FBQztBQWJELDRDQWFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsR0FBVztJQUMzQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksZUFBZSxFQUFFLENBQUM7QUFDcEQsQ0FBQztBQUZELGtEQUVDO0FBRUQsa0VBQWtFO0FBQ2xFLFNBQWdCLDJCQUEyQixDQUFDLE9BQWU7SUFDdkQsSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLEdBQUcsQ0FBQztJQUMzQixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDaEIsS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFBRSxTQUFTO1FBQ3RDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsT0FBTyx1QkFBdUIsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4RixPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBVkQsa0VBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmVlU3VtbWFyeSwgU3VtbWFyeUVudHJ5IH0gZnJvbSBcIi4uLy4uL3RyZWVTdW1tYXJ5XCI7XG5cbmNvbnN0IEVYUEVDVEVEX09VVFBVVF9DT1VOVCA9IDEwMDtcblxuZXhwb3J0IHR5cGUgQWNjZXNzU3VtbWFyeVN0YXRlID0geyB0b3RhbDogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBBY2Nlc3NUb3RhbHMgPSB7IFtvcGVyYXRpb246IHN0cmluZ106IHsgY291bnQ6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfTtcblxudHlwZSBBY2Nlc3NWYWx1ZSA9IHsgcGF0aDogc3RyaW5nOyBzaXplOiBudW1iZXIgfTtcbnR5cGUgT3BlcmF0aW9uU3RhdHMgPSB7XG4gICAgdG90YWxDb3VudDogbnVtYmVyO1xuICAgIHRvdGFsU2l6ZTogbnVtYmVyO1xuICAgIGNvdW50VHJlZTogVHJlZVN1bW1hcnk8QWNjZXNzVmFsdWUsIEFjY2Vzc1N1bW1hcnlTdGF0ZT47XG4gICAgLy8gT25seSBleGlzdHMgZm9yIG9wZXJhdGlvbnMgdHJhY2tlZCB3aXRoIHNpemVzOyBjb3VudC1vbmx5IG9wZXJhdGlvbnMgKGdldEluZm8sIGRlbCwgLi4uKSBoYXZlIG5vIG1lYW5pbmdmdWwgc2l6ZSBicmVha2Rvd24uXG4gICAgc2l6ZVRyZWU/OiBUcmVlU3VtbWFyeTxBY2Nlc3NWYWx1ZSwgQWNjZXNzU3VtbWFyeVN0YXRlPjtcbn07XG5cbmNvbnN0IGFjY291bnRzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIE9wZXJhdGlvblN0YXRzPj4oKTtcblxuZnVuY3Rpb24gbWFrZVRyZWUoZ2V0VmFsdWU6ICh2YWx1ZTogQWNjZXNzVmFsdWUpID0+IG51bWJlcik6IFRyZWVTdW1tYXJ5PEFjY2Vzc1ZhbHVlLCBBY2Nlc3NTdW1tYXJ5U3RhdGU+IHtcbiAgICByZXR1cm4gbmV3IFRyZWVTdW1tYXJ5PEFjY2Vzc1ZhbHVlLCBBY2Nlc3NTdW1tYXJ5U3RhdGU+KHtcbiAgICAgICAgZ2V0UGF0aDogdmFsdWUgPT4gdmFsdWUucGF0aCxcbiAgICAgICAgY3JlYXRlU3VtbWFyeTogKCkgPT4gKHsgdG90YWw6IDAgfSksXG4gICAgICAgIGFkZFRvU3VtbWFyeTogKHZhbHVlLCBzdW1tYXJ5KSA9PiB7XG4gICAgICAgICAgICBzdW1tYXJ5LnRvdGFsICs9IGdldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyZ2VTdW1tYXJpZXM6ICh0YXJnZXQsIHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgdGFyZ2V0LnRvdGFsICs9IHNvdXJjZS50b3RhbDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0V2VpZ2h0OiBzdW1tYXJ5ID0+IHN1bW1hcnkudG90YWwsXG4gICAgICAgIGV4cGVjdGVkT3V0cHV0Q291bnQ6IEVYUEVDVEVEX09VVFBVVF9DT1VOVCxcbiAgICB9KTtcbn1cblxuLyoqIENvdW50cyBvbmUgc3RvcmFnZSBhY2Nlc3MsIGluIG1lbW9yeSBvbmx5LiBzaXplIGlzIHRoZSBieXRlcyBpbnZvbHZlZCAoMCB3aGVuIHRoZSB0YXJnZXQgZG9lcyBub3QgZXhpc3QpOyBvbWl0IGl0IGVudGlyZWx5IGZvciBvcGVyYXRpb25zIHRoYXQgb25seSBjb3VudCBjYWxscywgd2hpY2ggdGhlbiBvbmx5IGdldCBhIGNvdW50IHRyZWUuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tBY2Nlc3MoY29uZmlnOiB7IGFjY291bnQ6IHN0cmluZzsgb3BlcmF0aW9uOiBzdHJpbmc7IHBhdGg6IHN0cmluZzsgc2l6ZT86IG51bWJlciB9KTogdm9pZCB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSBhY2NvdW50cy5nZXQoY29uZmlnLmFjY291bnQpO1xuICAgIGlmICghb3BlcmF0aW9ucykge1xuICAgICAgICBvcGVyYXRpb25zID0gbmV3IE1hcCgpO1xuICAgICAgICBhY2NvdW50cy5zZXQoY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbnMpO1xuICAgIH1cbiAgICBsZXQgc3RhdHMgPSBvcGVyYXRpb25zLmdldChjb25maWcub3BlcmF0aW9uKTtcbiAgICBpZiAoIXN0YXRzKSB7XG4gICAgICAgIHN0YXRzID0geyB0b3RhbENvdW50OiAwLCB0b3RhbFNpemU6IDAsIGNvdW50VHJlZTogbWFrZVRyZWUoKCkgPT4gMSkgfTtcbiAgICAgICAgb3BlcmF0aW9ucy5zZXQoY29uZmlnLm9wZXJhdGlvbiwgc3RhdHMpO1xuICAgIH1cbiAgICBsZXQgdmFsdWU6IEFjY2Vzc1ZhbHVlID0geyBwYXRoOiBjb25maWcucGF0aCwgc2l6ZTogY29uZmlnLnNpemUgfHwgMCB9O1xuICAgIHN0YXRzLnRvdGFsQ291bnQrKztcbiAgICBzdGF0cy5jb3VudFRyZWUuYWRkKHZhbHVlKTtcbiAgICBpZiAoY29uZmlnLnNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgc2l6ZVRyZWUgPSBzdGF0cy5zaXplVHJlZTtcbiAgICAgICAgaWYgKCFzaXplVHJlZSkge1xuICAgICAgICAgICAgc2l6ZVRyZWUgPSBtYWtlVHJlZSh2ID0+IHYuc2l6ZSk7XG4gICAgICAgICAgICBzdGF0cy5zaXplVHJlZSA9IHNpemVUcmVlO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRzLnRvdGFsU2l6ZSArPSBjb25maWcuc2l6ZTtcbiAgICAgICAgc2l6ZVRyZWUuYWRkKHZhbHVlKTtcbiAgICB9XG59XG5cbi8qKiBNZXRob2QgZGVjb3JhdG9yIGZhY3RvcnksIGZvciBBUEkgbWV0aG9kcyB3aG9zZSBzaW5nbGUgY29uZmlnLW9iamVjdCBhcmd1bWVudCBoYXMgYWNjb3VudCBhbmQgYnVja2V0TmFtZTogdHJhY2tzIHRoZSBhY2Nlc3MgKGFzIGBidWNrZXROYW1lL3BhdGhgKSBhZnRlciB0aGUgbWV0aG9kIHN1Y2NlZWRzLiBTaXplcyBjb21lIGZyb20gdGhlIGNvbmZpZydzIGRhdGEgKHdyaXRlcykgb3IgdGhlIHJlc3VsdCdzIGRhdGEgKHJlYWRzKTsgb3BlcmF0aW9ucyB3aXRob3V0IGVpdGhlciBhcmUgY291bnQtb25seS4gQXJyYXkgcmVzdWx0cyAobGlzdGluZ3MgLSBmaW5kSW5mbywgZ2V0Q2hhbmdlc0FmdGVyKSBhcmUgdHJhY2tlZCBhcyB0d28gYnJlYWtkb3duczogXCI8b3A+IHF1ZXJpZXNcIiAtIG9uZSBhY2Nlc3MgcGVyIENBTEwsIGF0IHRoZSBxdWVyeSBwcmVmaXgsIHNpemVkIGJ5IHRoZSBudW1iZXIgb2YgcmVzdWx0cyAoc28gdGhlIHRyZWUgc2hvd3Mgd2hpY2ggUVVFUlkgcmV0dXJucyB0aGUgbW9zdCkgLSBhbmQgXCI8b3A+IHJlc3VsdHNcIiAtIG9uZSBjb3VudC1vbmx5IGFjY2VzcyBwZXIgcmV0dXJuZWQgcGF0aCAoc28gdGhlIHRyZWUgc2hvd3Mgd2hpY2ggUEFUSFMgY29tZSBiYWNrIG1vc3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQWNjZXNzQ2FsbChvcGVyYXRpb246IHN0cmluZykge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiB1bmtub3duLCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKTogdm9pZCB7XG4gICAgICAgIGxldCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWUgYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgICAgIGxldCBjb25maWcgPSBhcmdzWzBdIGFzIHsgYWNjb3VudDogc3RyaW5nOyBidWNrZXROYW1lOiBzdHJpbmc7IHBhdGg/OiBzdHJpbmc7IHByZWZpeD86IHN0cmluZzsgZGF0YT86IEJ1ZmZlciB9O1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgbGV0IGJhc2UgPSBgJHtjb25maWcuYnVja2V0TmFtZX0vYDtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgcXVlcnksIHNpemVkIGJ5IGhvdyBtYW55IHJlc3VsdHMgaXQgcmV0dXJuZWQgKHdoaWNoIHF1ZXJ5IGlzIGhlYXZpZXN0KTsgYW5kIGVhY2ggcmV0dXJuZWQgcGF0aCwgY291bnQtb25seSAod2hpY2ggcGF0aHMgY29tZSBiYWNrIG1vc3QpXG4gICAgICAgICAgICAgICAgdHJhY2tBY2Nlc3MoeyBhY2NvdW50OiBjb25maWcuYWNjb3VudCwgb3BlcmF0aW9uOiBgJHtvcGVyYXRpb259IHF1ZXJpZXNgLCBwYXRoOiBiYXNlICsgKGNvbmZpZy5wcmVmaXggfHwgY29uZmlnLnBhdGggfHwgXCJcIiksIHNpemU6IHJlc3VsdC5sZW5ndGggfSk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgcmVzdWx0IGFzIHsgcGF0aDogc3RyaW5nIH1bXSkge1xuICAgICAgICAgICAgICAgICAgICB0cmFja0FjY2Vzcyh7IGFjY291bnQ6IGNvbmZpZy5hY2NvdW50LCBvcGVyYXRpb246IGAke29wZXJhdGlvbn0gcmVzdWx0c2AsIHBhdGg6IGJhc2UgKyBlbnRyeS5wYXRoIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChjb25maWcuZGF0YSkge1xuICAgICAgICAgICAgICAgIHNpemUgPSBjb25maWcuZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gKHJlc3VsdCBhcyB7IGRhdGE/OiBCdWZmZXIgfSB8IHVuZGVmaW5lZCk/LmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHNpemUgPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyYWNrQWNjZXNzKHsgYWNjb3VudDogY29uZmlnLmFjY291bnQsIG9wZXJhdGlvbiwgcGF0aDogYmFzZSArIGNvbmZpZy5wYXRoLCBzaXplIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjZXNzVG90YWxzKGFjY291bnQ6IHN0cmluZyk6IEFjY2Vzc1RvdGFscyB7XG4gICAgbGV0IHJlc3VsdDogQWNjZXNzVG90YWxzID0ge307XG4gICAgbGV0IG9wZXJhdGlvbnMgPSBhY2NvdW50cy5nZXQoYWNjb3VudCk7XG4gICAgaWYgKCFvcGVyYXRpb25zKSByZXR1cm4gcmVzdWx0O1xuICAgIGZvciAobGV0IFtvcGVyYXRpb24sIHN0YXRzXSBvZiBvcGVyYXRpb25zKSB7XG4gICAgICAgIHJlc3VsdFtvcGVyYXRpb25dID0geyBjb3VudDogc3RhdHMudG90YWxDb3VudCwgc2l6ZTogc3RhdHMudG90YWxTaXplIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQWNjZXNzU3VtbWFyaWVzKGNvbmZpZzogeyBhY2NvdW50OiBzdHJpbmc7IG9wZXJhdGlvbjogc3RyaW5nOyBtYXhDb3VudDogbnVtYmVyOyB3ZWlnaHRCeVNpemU/OiBib29sZWFuIH0pOiBTdW1tYXJ5RW50cnk8QWNjZXNzU3VtbWFyeVN0YXRlPltdIHtcbiAgICBsZXQgb3BlcmF0aW9ucyA9IGFjY291bnRzLmdldChjb25maWcuYWNjb3VudCk7XG4gICAgbGV0IHN0YXRzID0gb3BlcmF0aW9ucyAmJiBvcGVyYXRpb25zLmdldChjb25maWcub3BlcmF0aW9uKTtcbiAgICBpZiAoIXN0YXRzKSByZXR1cm4gW107XG4gICAgLy8gQ291bnQtb25seSBvcGVyYXRpb25zIGhhdmUgbm8gc2l6ZSB0cmVlLCBpbiB3aGljaCBjYXNlIHdlaWdodEJ5U2l6ZSBpcyBpZ25vcmVkIGFuZCB0aGUgY291bnQgYnJlYWtkb3duIGlzIHJldHVybmVkLlxuICAgIGxldCBzaXplVHJlZSA9IHN0YXRzLnNpemVUcmVlO1xuICAgIGlmIChjb25maWcud2VpZ2h0QnlTaXplICYmIHNpemVUcmVlKSB7XG4gICAgICAgIHJldHVybiBzaXplVHJlZS5nZXRTdW1tYXJpZXMoY29uZmlnLm1heENvdW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRzLmNvdW50VHJlZS5nZXRTdW1tYXJpZXMoY29uZmlnLm1heENvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQWNjb3VudEFjY2Vzc1N0YXRzKGFjY291bnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhY2NvdW50cy5kZWxldGUoYWNjb3VudCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coYENsZWFyZWQgdGhlIGluLW1lbW9yeSBhY2Nlc3Mgc3RhdGlzdGljcyBmb3IgYWNjb3VudCAke2FjY291bnR9YCk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBCdWNrZXRXcml0ZVN0YXRzID0ge1xuICAgIC8qKiBFdmVyeSBzZXQgY2FsbCB0aGUgYnVja2V0IGFjY2VwdGVkICovXG4gICAgb3JpZ2luYWxXcml0ZXM6IG51bWJlcjtcbiAgICBvcmlnaW5hbEJ5dGVzOiBudW1iZXI7XG4gICAgLyoqIFdoYXQgYWN0dWFsbHkgcmVhY2hlZCB0aGUgc291cmNlcy4gRmFzdCB3cml0ZXMgY29hbGVzY2UgcmVwZWF0ZWQgd3JpdGVzIHRvIHRoZSBzYW1lIGtleSwgc28gdGhpcyBpcyBsb3dlciB0aGFuIHRoZSBvcmlnaW5hbCBjb3VudHMgKGFuZCBpcyB3aGF0IHRoZSBkaXNrIGFjdHVhbGx5IGRpZCkuICovXG4gICAgZmx1c2hlZFdyaXRlczogbnVtYmVyO1xuICAgIGZsdXNoZWRCeXRlczogbnVtYmVyO1xufTtcbmZ1bmN0aW9uIGVtcHR5V3JpdGVTdGF0cygpOiBCdWNrZXRXcml0ZVN0YXRzIHtcbiAgICByZXR1cm4geyBvcmlnaW5hbFdyaXRlczogMCwgb3JpZ2luYWxCeXRlczogMCwgZmx1c2hlZFdyaXRlczogMCwgZmx1c2hlZEJ5dGVzOiAwIH07XG59XG5cbi8vIEluIG1lbW9yeSBvbmx5LCBrZXllZCBgJHthY2NvdW50fS8ke2J1Y2tldE5hbWV9YDogdG90YWxzIHNpbmNlIHRoaXMgcHJvY2VzcyBzdGFydGVkIChvciB0aGUgbGFzdCBjbGVhcldyaXRlU3RhdHMpLiBQZXJzaXN0aW5nIHRoZW0gdG8gZGlzayB3YXMgbW9yZSBtYWNoaW5lcnkgdGhhbiB0aGUgbnVtYmVycyB3ZXJlIHdvcnRoLlxuY29uc3Qgd3JpdGVTdGF0cyA9IG5ldyBNYXA8c3RyaW5nLCBCdWNrZXRXcml0ZVN0YXRzPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gY291bnRCdWNrZXRXcml0ZShrZXk6IHN0cmluZywga2luZDogXCJvcmlnaW5hbFwiIHwgXCJmbHVzaGVkXCIsIGJ5dGVzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBsZXQgc3RhdHMgPSB3cml0ZVN0YXRzLmdldChrZXkpO1xuICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgc3RhdHMgPSBlbXB0eVdyaXRlU3RhdHMoKTtcbiAgICAgICAgd3JpdGVTdGF0cy5zZXQoa2V5LCBzdGF0cyk7XG4gICAgfVxuICAgIGlmIChraW5kID09PSBcIm9yaWdpbmFsXCIpIHtcbiAgICAgICAgc3RhdHMub3JpZ2luYWxXcml0ZXMrKztcbiAgICAgICAgc3RhdHMub3JpZ2luYWxCeXRlcyArPSBieXRlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0cy5mbHVzaGVkV3JpdGVzKys7XG4gICAgICAgIHN0YXRzLmZsdXNoZWRCeXRlcyArPSBieXRlcztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWNrZXRXcml0ZVN0YXRzKGtleTogc3RyaW5nKTogQnVja2V0V3JpdGVTdGF0cyB7XG4gICAgcmV0dXJuIHdyaXRlU3RhdHMuZ2V0KGtleSkgfHwgZW1wdHlXcml0ZVN0YXRzKCk7XG59XG5cbi8qKiBaZXJvZXMgdGhlIHdyaXRlIHN0YXRpc3RpY3Mgb2YgZXZlcnkgYnVja2V0IGluIHRoZSBhY2NvdW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnQ2xlYXJBY2NvdW50V3JpdGVTdGF0cyhhY2NvdW50OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBwcmVmaXggPSBgJHthY2NvdW50fS9gO1xuICAgIGxldCBjbGVhcmVkID0gMDtcbiAgICBmb3IgKGxldCBrZXkgb2YgWy4uLndyaXRlU3RhdHMua2V5cygpXSkge1xuICAgICAgICBpZiAoIWtleS5zdGFydHNXaXRoKHByZWZpeCkpIGNvbnRpbnVlO1xuICAgICAgICB3cml0ZVN0YXRzLmRlbGV0ZShrZXkpO1xuICAgICAgICBjbGVhcmVkKys7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGBDbGVhcmVkIHRoZSB3cml0ZSBzdGF0aXN0aWNzIG9mICR7Y2xlYXJlZH0gYnVja2V0cyBpbiBhY2NvdW50ICR7YWNjb3VudH1gKTtcbiAgICByZXR1cm4gY2xlYXJlZDtcbn1cbiJdfQ==
148
- /* _JS_SOURCE_HASH = "80cea0cf50bd69b37b71b835f9ecdf6f55668888fd229553474c933188f0c883"; */
148
+ /* _JS_SOURCE_HASH = "dbfda82861ecf9c4e32ff89d5c1d8a7e4da239832af22846537b6dc240a78494"; */