sliftutils 1.7.61 → 1.7.62

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 (47) hide show
  1. package/index.d.ts +9 -0
  2. package/misc/dist/environment.ts.cache +2 -2
  3. package/misc/dist/getSecret.ts.cache +2 -2
  4. package/misc/dist/strings.ts.cache +2 -2
  5. package/misc/dist/zip.ts.cache +2 -2
  6. package/misc/https/dist/certs.ts.cache +2 -2
  7. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  8. package/package.json +1 -1
  9. package/render-utils/dist/observer.tsx.cache +2 -2
  10. package/spec.txt +3 -1
  11. package/storage/ArchivesDisk.ts +9 -2
  12. package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
  13. package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
  14. package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
  15. package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +2 -2
  16. package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
  17. package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
  18. package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
  19. package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
  20. package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
  21. package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
  22. package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
  23. package/storage/dist/ArchivesDisk.ts.cache +13 -5
  24. package/storage/dist/FileFolderAPI.tsx.cache +2 -2
  25. package/storage/dist/IArchives.ts.cache +2 -2
  26. package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
  27. package/storage/dist/JSONStorage.ts.cache +2 -2
  28. package/storage/dist/PendingManager.tsx.cache +2 -2
  29. package/storage/dist/TransactionStorage.ts.cache +2 -2
  30. package/storage/dist/backblaze.ts.cache +2 -2
  31. package/storage/dist/fileSystemPointer.ts.cache +2 -2
  32. package/storage/dist/remoteFileStorage.ts.cache +2 -2
  33. package/storage/remoteStorage/createArchives.d.ts +9 -0
  34. package/storage/remoteStorage/createArchives.ts +23 -3
  35. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
  36. package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
  37. package/storage/remoteStorage/dist/blobStore.ts.cache +2 -2
  38. package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
  39. package/storage/remoteStorage/dist/createArchives.ts.cache +24 -4
  40. package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
  41. package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
  42. package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
  43. package/storage/remoteStorage/dist/sourceWrapper.ts.cache +2 -2
  44. package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
  45. package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
  46. package/storage/remoteStorage/dist/storageController.ts.cache +2 -2
  47. package/storage/remoteStorage/dist/storageServerState.ts.cache +2 -2
@@ -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
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -138,4 +138,4 @@ function getMainPortAcquireDelay() {
138
138
  }
139
139
  exports.getMainPortAcquireDelay = getMainPortAcquireDelay;
140
140
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95VGFrZW92ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3lUYWtlb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLDZEQUFvRTtBQUVwRSxNQUFNLDhCQUE4QixHQUFHLDBCQUEwQixDQUFDO0FBQ2xFLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLHFNQUFxTTtBQUNyTSxNQUFNLDJCQUEyQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2xELE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQztBQUNoQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFjdEMsSUFBSSxRQUFvQyxDQUFDO0FBRXpDLFNBQVMsR0FBRyxDQUFDLElBQVk7SUFDckIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxTQUFTO0lBQ2QsT0FBTyxRQUFRLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBRUQsU0FBUyxpQkFBaUI7SUFDdEIsT0FBTyxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ25FLENBQUM7QUFFRCxLQUFLLFVBQVUsbUJBQW1COztJQUM5QixJ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LENBQUM7QUFIRCxrREFHQztBQUVELGlLQUFpSztBQUNqSyxTQUFnQix1QkFBdUI7SUFDbkMsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLGtCQUFrQixDQUFDO0lBQ3pDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLFdBQVcsRUFBRSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsT0FBTyxrQkFBa0IsQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQztBQUM5QixDQUFDO0FBTkQsMERBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgc3RhcnRJbnRlcm1lZGlhdGVNYWludGVuYW5jZSB9IGZyb20gXCIuL3N0b3JhZ2VTZXJ2ZXJTdGF0ZVwiO1xuXG5jb25zdCBQQVJBTUVURVJTX1RJTUVMSU5FX0ZJTEVfUkVHRVggPSAvXihcXGQrKS1wYXJhbWV0ZXJzXFwuanNvbiQvO1xuY29uc3QgREVQTE9ZX0RFVEVDVF9SRVRSWV9ERUxBWSA9IDUgKiAxMDAwO1xuY29uc3QgREVQTE9ZX0RFVEVDVF9USU1FT1VUID0gMzAgKiAxMDAwO1xuY29uc3QgRVhJVF9MT0dfRkxVU0hfREVMQVkgPSA1ICogMTAwMDtcbmNvbnN0IEFMVF9QT1JUX0xJTkdFUiA9IDMwICogNjAgKiAxMDAwO1xuLy8gVGhlIGVuZCB0aW1lIG5lZWRzIHRvIGJlIGVub3VnaCBhZnRlciB0aGUga2lsbCB0aW1lIHRoYXQgd2UgYXJlIGNlcnRhaW4gd2Ugd2lsbCBoYXZlIHRoZSBtYWluIHBvcnQgYnkgdGhlbi4gU2NhbGVkIHVwIHdpdGggdGhlIG92ZXJsYXAsIHNvIHVudXN1YWxseSBsb25nIG92ZXJsYXBzIGdldCBhbiBlcXVhbGx5IGdlbmVyb3VzIGJ1ZmZlci5cbmNvbnN0IElOVEVSTUVESUFURV9FTkRfTUlOX0JVRkZFUiA9IDUgKiA2MCAqIDEwMDA7XG5jb25zdCBBQ1FVSVJFX1NMT1dfREVMQVkgPSAzMCAqIDEwMDA7XG5jb25zdCBBQ1FVSVJFX0ZBU1RfREVMQVkgPSAxMDAwO1xuY29uc3QgQUNRVUlSRV9GQVNUX1dJTkRPVyA9IDYwICogMTAwMDtcblxudHlwZSBUaW1lbGluZUVudHJ5ID0ge1xuICAgIHBhcmFtZXRlcnM6IHsgcmVsZWFzZVRpbWU/OiBudW1iZXI7IG92ZXJsYXBUaW1lPzogbnVtYmVyIH07XG59O1xuXG50eXBlIERlcGxveVRha2VvdmVyID0ge1xuICAgIHJlbGVhc2VUaW1lOiBudW1iZXI7XG4gICAgb3ZlcmxhcFRpbWU6IG51bWJlcjtcbiAgICBhbHRQb3J0PzogbnVtYmVyO1xuICAgIC8vIEZyb3plbiB3aGVuIHRoZSBhbHQgcG9ydCBpcyB0YWtlbiAoYSBtb3Zpbmcgc3RhcnQgd291bGQgbWFrZSBldmVyeSBtYWludGVuYW5jZSBwYXNzIHdyaXRlIGEgbmV3IGNvbmZpZylcbiAgICBpbnRlcm1lZGlhdGVTdGFydD86IG51bWJlcjtcbn07XG5cbmxldCB0YWtlb3ZlcjogRGVwbG95VGFrZW92ZXIgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzbyh0aW1lOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lKS50b0lTT1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiBsb2dQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFtwaWQgJHtwcm9jZXNzLnBpZH1dYDtcbn1cblxuZnVuY3Rpb24gZ2V0VGltZWxpbmVGb2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5kaXJuYW1lKHByb2Nlc3MuY3dkKCkpLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiL1wiKSArIFwiL1wiO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkVGltZWxpbmVFbnRyaWVzKCk6IFByb21pc2U8VGltZWxpbmVFbnRyeVtdPiB7XG4gICAgbGV0IGZvbGRlciA9IGdldFRpbWVsaW5lRm9sZGVyKCk7XG4gICAgbGV0IGZpbGVzOiBzdHJpbmdbXTtcbiAgICB0cnkge1xuICAgICAgICBmaWxlcyA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRkaXIoZm9sZGVyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gQ291bGQgbm90IHJlYWQgdGhlIGRlcGxveSB0aW1lbGluZSBmb2xkZXIgJHtmb2xkZXJ9OiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWApO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGxldCBlbnRyaWVzOiBUaW1lbGluZUVudHJ5W10gPSBbXTtcbiAgICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGlmICghUEFSQU1FVEVSU19USU1FTElORV9GSUxFX1JFR0VYLnRlc3QoZmlsZSkpIGNvbnRpbnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKEpTT04ucGFyc2UoYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZm9sZGVyICsgZmlsZSwgXCJ1dGY4XCIpKSBhcyBUaW1lbGluZUVudHJ5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeCgpfSBDb3VsZCBub3QgcmVhZCBkZXBsb3kgdGltZWxpbmUgZmlsZSAke2ZvbGRlciArIGZpbGV9OiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbnRyaWVzO1xufVxuXG4vLyBUaGUgbmV3ZXN0IHJlbGVhc2UgaW4gdGhlIHRpbWVsaW5lIGlzIHRoZSBvbmUgd2UgYXJlIHBhcnQgb2YgLSB0aGUgdGltZWxpbmUgaXMgYXBwZW5kLW9ubHkgaGlzdG9yeSwgc28gd2hhdGV2ZXIgcHJvY2VzcyBzdGFydHMgdXAgZHVyaW5nIGEgdGFrZW92ZXIgYmVsb25ncyB0byBpdHMgbGF0ZXN0IGVudHJ5XG5mdW5jdGlvbiBmaW5kT3VyUmVsZWFzZShlbnRyaWVzOiBUaW1lbGluZUVudHJ5W10pOiBEZXBsb3lUYWtlb3ZlciB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGJlc3Q6IERlcGxveVRha2VvdmVyIHwgdW5kZWZpbmVkO1xuICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgbGV0IHJlbGVhc2VUaW1lID0gZW50cnkucGFyYW1ldGVycy5yZWxlYXNlVGltZTtcbiAgICAgICAgaWYgKHJlbGVhc2VUaW1lID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICBsZXQgb3ZlcmxhcFRpbWUgPSBlbnRyeS5wYXJhbWV0ZXJzLm92ZXJsYXBUaW1lIHx8IDA7XG4gICAgICAgIGlmIChiZXN0ICYmIGJlc3QucmVsZWFzZVRpbWUgPj0gcmVsZWFzZVRpbWUpIGNvbnRpbnVlO1xuICAgICAgICBiZXN0ID0geyByZWxlYXNlVGltZSwgb3ZlcmxhcFRpbWUgfTtcbiAgICB9XG4gICAgcmV0dXJuIGJlc3Q7XG59XG5cbi8qKiBDYWxsZWQgd2hlbiB0aGUgbWFpbiBwb3J0IGlzIGFscmVhZHkgaW4gdXNlLCB3aGljaCBvbiBhIGhlYWx0aHkgbWFjaGluZSBvbmx5IGhhcHBlbnMgd2hpbGUgb3VyIHByZWRlY2Vzc29yIGlzIHN0aWxsIHJ1bm5pbmcgYSBkZXBsb3kgb3ZlcmxhcC4gQ29uZmlybXMgdGhhdCBhZ2FpbnN0IHRoZSBkZXBsb3kgdGltZWxpbmU7IGlmIG5vIGRlcGxveSBpcyBpbiBwcm9ncmVzcyB3ZSBhcmUgaW4gYSBiYWQgc3RhdGUgKHNvbWVvbmUgZWxzZSBob2xkcyBvdXIgcG9ydCkgYW5kIHRoZSBwcm9jZXNzIG11c3Qgbm90IGtlZXAgcnVubmluZy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXRlY3REZXBsb3lUYWtlb3ZlcigpOiBQcm9taXNlPERlcGxveVRha2VvdmVyPiB7XG4gICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeCgpfSBPdXIgbWFpbiBwb3J0IGlzIGluIHVzZSwgd2hpY2ggc2hvdWxkIG9ubHkgaGFwcGVuIHdoaWxlIGEgZGVwbG95IG92ZXJsYXAgaXMgcnVubmluZyAtIGNoZWNraW5nIHRoZSBkZXBsb3kgdGltZWxpbmUgaW4gJHtnZXRUaW1lbGluZUZvbGRlcigpfSBmb3IgdGhlIHJlbGVhc2Ugd2UgYXJlIHBhcnQgb2ZgKTtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBhdHRlbXB0ID0gMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBhdHRlbXB0Kys7XG4gICAgICAgIGxldCBlbnRyaWVzID0gYXdhaXQgcmVhZFRpbWVsaW5lRW50cmllcygpO1xuICAgICAgICBsZXQgZm91bmQgPSBmaW5kT3VyUmVsZWFzZShlbnRyaWVzKTtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICB0YWtlb3ZlciA9IGZvdW5kO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeCgpfSBEZXBsb3kgdGFrZW92ZXIgY29uZmlybWVkIG9uIGF0dGVtcHQgJHthdHRlbXB0fTogcmVsZWFzZSBhdCAke2lzbyhmb3VuZC5yZWxlYXNlVGltZSl9LCBvdmVybGFwICR7Zm91bmQub3ZlcmxhcFRpbWV9bXMsIHNvIG91ciBwcmVkZWNlc3NvciBob2xkcyB0aGUgbWFpbiBwb3J0IHVudGlsICR7aXNvKGZvdW5kLnJlbGVhc2VUaW1lICsgZm91bmQub3ZlcmxhcFRpbWUpfS4gV2UgYXJlIHRoZSBzdWNjZXNzb3IuYCk7XG4gICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICAgIGlmIChlbGFwc2VkID49IERFUExPWV9ERVRFQ1RfVElNRU9VVCkge1xuICAgICAgICAgICAgLy8gTm90IGEgZGVwbG95LCBzbyBzb21ldGhpbmcgZWxzZSBob2xkcyBvdXIgcG9ydCBhbmQgbm90aGluZyB3ZSBkbyBmcm9tIGhlcmUgaXMgY29ycmVjdC4gRXhpdCwgZ2l2aW5nIHRoZSBsb2cgdGltZSB0byByZWFjaCB0aGUgZGlzayBmaXJzdCAtIHRoZSBtZXNzYWdlIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgZXhwbGFpbnMgdGhlIGV4aXQuXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke2xvZ1ByZWZpeCgpfSBPdXIgbWFpbiBwb3J0IGlzIGluIHVzZSwgYnV0IHRoZSBkZXBsb3kgdGltZWxpbmUgaW4gJHtnZXRUaW1lbGluZUZvbGRlcigpfSBzaG93ZWQgbm8gcmVsZWFzZSBpbiBwcm9ncmVzcyBhY3Jvc3MgJHthdHRlbXB0fSBjaGVja3Mgb3ZlciAke2VsYXBzZWR9bXMuIFNvbWV0aGluZyBlbHNlIGlzIGhvbGRpbmcgb3VyIHBvcnQsIHNvIHRoaXMgcHJvY2VzcyBpcyBpbiBhIGJhZCBzdGF0ZS4gRXhpdGluZyBpbiAke0VYSVRfTE9HX0ZMVVNIX0RFTEFZfW1zLmApO1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIEVYSVRfTE9HX0ZMVVNIX0RFTEFZKSk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeCgpfSBObyByZWxlYXNlIGluIHByb2dyZXNzIGluIHRoZSBkZXBsb3kgdGltZWxpbmUgeWV0IChhdHRlbXB0ICR7YXR0ZW1wdH0sICR7ZWxhcHNlZH1tcyBvZiAke0RFUExPWV9ERVRFQ1RfVElNRU9VVH1tcyk7IHJldHJ5aW5nIGluICR7REVQTE9ZX0RFVEVDVF9SRVRSWV9ERUxBWX1tc2ApO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgREVQTE9ZX0RFVEVDVF9SRVRSWV9ERUxBWSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFsdFBvcnQocG9ydDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0YWtlb3Zlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFuIGFsdGVybmF0ZSBwb3J0ICgke3BvcnR9KSB3YXMgdGFrZW4gd2l0aG91dCBhIGRldGVjdGVkIGRlcGxveSB0YWtlb3ZlciAtIGRldGVjdERlcGxveVRha2VvdmVyIG11c3QgcnVuIGZpcnN0YCk7XG4gICAgfVxuICAgIHRha2VvdmVyLmFsdFBvcnQgPSBwb3J0O1xuICAgIC8vIE5lZWRzIHRvIGJlIGVub3VnaCBhZnRlciBvdXIgc3RhcnR1cCB0aW1lIHRoYXQgdGhlIHByZXZpb3VzIG5vZGUgaGFzIHRpbWUgdG8gc2VlIGl0J3MgZ29pbmcgdG8gYmUgc2h1dCBkb3duIGFuZCBmbHVzaCAoYW5kIHNvIHdlIGhhdmUgdGltZSB0byBzdGFydCB1cCksIGFuZCBlbm91Z2ggYmVmb3JlIHRoZSBraWxsIHRpbWUgdGhhdCBub2RlcyBoYXZlIHRpbWUgdG8gbm90aWNlIHdlIGV4aXN0IGFuZCBwcmVwYXJlIHRvIGNvbm5lY3QgdG8gdXMgLSBoYWxmd2F5IGJldHdlZW4gbm93IGFuZCB0aGUga2lsbCB0aW1lIHNhdGlzZmllcyBib3RoXG4gICAgdGFrZW92ZXIuaW50ZXJtZWRpYXRlU3RhcnQgPSBNYXRoLnJvdW5kKChEYXRlLm5vdygpICsgZ2V0S2lsbFRpbWUoKSkgLyAyKTtcbiAgICBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4KCl9IExpc3RlbmluZyBvbiBhbHRlcm5hdGUgcG9ydCAke3BvcnR9OiB3cml0ZXMgcm91dGUgaGVyZSBmcm9tICR7aXNvKHRha2VvdmVyLmludGVybWVkaWF0ZVN0YXJ0KX0gdW50aWwgJHtpc28oZ2V0SW50ZXJtZWRpYXRlRW5kKCkpfSwgYW5kIHdlIGtlZXAgbGlzdGVuaW5nIHVudGlsICR7aXNvKGdldEFsdFBvcnRMaXN0ZW5FbmQoKSl9YCk7XG4gICAgc3RhcnRJbnRlcm1lZGlhdGVNYWludGVuYW5jZSgpO1xufVxuXG4vKiogVGhlIHdpbmRvdyBpbiB3aGljaCB3cml0ZXMgYmVsb25nIHRvIG91ciBhbHRlcm5hdGUgcG9ydDogZnJvbSBwYXJ0d2F5IHRocm91Z2ggdGhlIG92ZXJsYXAgKGdpdmluZyB0aGUgcHJlZGVjZXNzb3Igbm90aWNlIHRvIGZsdXNoKSB1bnRpbCBzYWZlbHkgcGFzdCBpdHMga2lsbCAoZ2l2aW5nIHVzIHRpbWUgdG8gYWN0dWFsbHkgdGFrZSB0aGUgbWFpbiBwb3J0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWtlb3ZlckludGVybWVkaWF0ZSgpOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyOyBhbHRQb3J0OiBudW1iZXIgfSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0YWtlb3Zlcj8uYWx0UG9ydCB8fCB0YWtlb3Zlci5pbnRlcm1lZGlhdGVTdGFydCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IHN0YXJ0OiB0YWtlb3Zlci5pbnRlcm1lZGlhdGVTdGFydCwgZW5kOiBnZXRJbnRlcm1lZGlhdGVFbmQoKSwgYWx0UG9ydDogdGFrZW92ZXIuYWx0UG9ydCB9O1xufVxuXG4vKiogV2hlbiBvdXIgcHJlZGVjZXNzb3IgaXMga2lsbGVkIGFuZCB0aGUgbWFpbiBwb3J0IGZyZWVzLiBQb3J0IGFjcXVpc2l0aW9uIHBvbGxzIGFnYWluc3QgdGhpcyBvbiBpdHMgb3duIC0gaXQgaXMgZW50aXJlbHkgaW5kZXBlbmRlbnQgb2YgdGhlIGludGVybWVkaWF0ZSB3aW5kb3cuICovXG5mdW5jdGlvbiBnZXRLaWxsVGltZSgpOiBudW1iZXIge1xuICAgIGlmICghdGFrZW92ZXIpIHJldHVybiAwO1xuICAgIHJldHVybiB0YWtlb3Zlci5yZWxlYXNlVGltZSArIHRha2VvdmVyLm92ZXJsYXBUaW1lO1xufVxuXG5mdW5jdGlvbiBnZXRJbnRlcm1lZGlhdGVFbmQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRha2VvdmVyKSByZXR1cm4gMDtcbiAgICByZXR1cm4gZ2V0S2lsbFRpbWUoKSArIE1hdGgubWF4KElOVEVSTUVESUFURV9FTkRfTUlOX0JVRkZFUiwgdGFrZW92ZXIub3ZlcmxhcFRpbWUpO1xufVxuXG4vKiogV2UgbmV2ZXIgc3RvcCBsaXN0ZW5pbmcgb24gdGhlIGFsdGVybmF0ZSBwb3J0IHdoaWxlIGl0cyB3aW5kb3cgaXMgc3RpbGwgdmFsaWQsIGFuZCBob2xkIGl0IHdlbGwgcGFzdCB0aGF0IGZvciBjbGllbnRzIHRoYXQgaGF2ZSBub3QgY2F1Z2h0IHVwIHlldC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHRQb3J0TGlzdGVuRW5kKCk6IG51bWJlciB7XG4gICAgaWYgKCF0YWtlb3ZlcikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIE1hdGgubWF4KHRha2VvdmVyLnJlbGVhc2VUaW1lICsgdGFrZW92ZXIub3ZlcmxhcFRpbWUgKiAyLCBnZXRJbnRlcm1lZGlhdGVFbmQoKSArIEFMVF9QT1JUX0xJTkdFUik7XG59XG5cbi8qKiBIb3cgbG9uZyB0byB3YWl0IGJldHdlZW4gbWFpbi1wb3J0IGFjcXVpc2l0aW9uIGF0dGVtcHRzOiB0aWdodCBhcm91bmQgb3VyIHByZWRlY2Vzc29yJ3Mgc2NoZWR1bGVkIGRlYXRoICh3aGVuIHRoZSBwb3J0IGFjdHVhbGx5IGZyZWVzKSwgcmVsYXhlZCBvdGhlcndpc2UuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFpblBvcnRBY3F1aXJlRGVsYXkoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRha2VvdmVyKSByZXR1cm4gQUNRVUlSRV9TTE9XX0RFTEFZO1xuICAgIGlmIChEYXRlLm5vdygpID49IGdldEtpbGxUaW1lKCkgLSBBQ1FVSVJFX0ZBU1RfV0lORE9XKSB7XG4gICAgICAgIHJldHVybiBBQ1FVSVJFX0ZBU1RfREVMQVk7XG4gICAgfVxuICAgIHJldHVybiBBQ1FVSVJFX1NMT1dfREVMQVk7XG59XG4iXX0=
141
- /* _JS_SOURCE_HASH = "e8c08c5bdc2f5a9e489d44d023da80a41bd9fe6a25a646c85e8e822e799d4a32"; */
141
+ /* _JS_SOURCE_HASH = "1f48da864ce085e6b2d365707149fce81cc2ae3f1f7d392ea43fe574ca19a75d"; */
@@ -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.findSplitUrl = exports.expireIntermediateSources = exports.injectIntermediateSource = exports.resolveIntermediateSources = exports.hasIntermediateSources = exports.getIntermediateSources = exports.nextIntermediateVersion = exports.INTERMEDIATE_EXPIRE_GRACE = void 0;
4
4
  exports.INTERMEDIATE_EXPIRE_GRACE = 15 * 60 * 1000;
@@ -116,4 +116,4 @@ function findSplitUrl(config, intermediate) {
116
116
  }
117
117
  exports.findSplitUrl = findSplitUrl;
118
118
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJtZWRpYXRlU291cmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVybWVkaWF0ZVNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN4RCxNQUFNLDZCQUE2QixHQUFHLE9BQVMsQ0FBQztBQUVoRCwyUkFBMlI7QUFDM1IsU0FBZ0IsdUJBQXVCLENBQUMsT0FBZTtJQUNuRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLDZCQUE2QixDQUFDO0lBQzdELElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLENBQUMsR0FBRyw2QkFBNkIsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzFCLENBQUM7QUFORCwwREFNQztBQUlELFNBQVMsY0FBYyxDQUFDLE1BQXdCO0lBQzVDLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxNQUF3QjtJQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzNDLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RGLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxNQUFvQjtJQUNqQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENB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SUFBSSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNqQyxNQUFNLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLFFBQVEsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHO1lBQ2hELGVBQWUsRUFBRSxJQUFJLENBQUMsR0FBRztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQzNCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBZkQsOERBZUM7QUFFRCx3RkFBd0Y7QUFDeEYsU0FBZ0IsWUFBWSxDQUFDLE1BQW9CLEVBQUUsWUFBMEI7SUFDekUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQzVDLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQTZCLENBQUM7SUFDdkssT0FBTyxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsR0FBRyxDQUFDO0FBQzFCLENBQUM7QUFKRCxvQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW90ZUNvbmZpZywgUmVtb3RlQ29uZmlnQmFzZSwgSG9zdGVkQ29uZmlnLCBCYWNrYmxhemVDb25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5cbmV4cG9ydCBjb25zdCBJTlRFUk1FRElBVEVfRVhQSVJFX0dSQUNFID0gMTUgKiA2MCAqIDEwMDA7XG5jb25zdCBJTlRFUk1FRElBVEVfVkVSU0lPTl9GUkFDVElPTiA9IDFfMDAwXzAwMDtcblxuLyoqIEFkZGluZyBvciByZW1vdmluZyBpbnRlcm1lZGlhdGVzIGlzIGEgcmVhbCBjb25maWcgdXBkYXRlLCBzbyBpdCB0YWtlcyBhIHJlYWwgdmVyc2lvbiBpbmNyZW1lbnQgLSBidXQgYSBwcm9wb3J0aW9uYWwgb25lLCBzbyBpdCBzdGF5cyBmYXIgYmVsb3cgd2hhdGV2ZXIgdGhlIGF1dGhvcidzIG5leHQgdmVyc2lvbiB3b3VsZCBiZSAod2hldGhlciB0aGV5IGNvdW50IDEsIDIsIDMgb3IgdXNlIHRpbWVzdGFtcHMpLCBhbmQgYSBtaWxsaW9uIG9mIHRoZW0gc3RpbGwgZml0IHVuZGVyIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRJbnRlcm1lZGlhdGVWZXJzaW9uKHZlcnNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IHN0ZXAgPSBNYXRoLmFicyh2ZXJzaW9uKSAvIElOVEVSTUVESUFURV9WRVJTSU9OX0ZSQUNUSU9OO1xuICAgIGlmICghKHN0ZXAgPiAwKSkge1xuICAgICAgICBzdGVwID0gMSAvIElOVEVSTUVESUFURV9WRVJTSU9OX0ZSQUNUSU9OO1xuICAgIH1cbiAgICByZXR1cm4gdmVyc2lvbiArIHN0ZXA7XG59XG5cbnR5cGUgT2JqZWN0U291cmNlID0gSG9zdGVkQ29uZmlnIHwgQmFja2JsYXplQ29uZmlnO1xuXG5mdW5jdGlvbiBpc09iamVjdFNvdXJjZShzb3VyY2U6IFJlbW90ZUNvbmZpZ0Jhc2UpOiBzb3VyY2UgaXMgT2JqZWN0U291cmNlIHtcbiAgICByZXR1cm4gdHlwZW9mIHNvdXJjZSAhPT0gXCJzdHJpbmdcIjtcbn1cblxuZnVuY3Rpb24gY2xvbmVTb3VyY2Uoc291cmNlOiBSZW1vdGVDb25maWdCYXNlKTogUmVtb3RlQ29uZmlnQmFzZSB7XG4gICAgaWYgKCFpc09iamVjdFNvdXJjZShzb3VyY2UpKSByZXR1cm4gc291cmNlO1xuICAgIHJldHVybiB7IC4uLnNvdXJjZSwgdmFsaWRXaW5kb3c6IFtzb3VyY2UudmFsaWRXaW5kb3dbMF0sIHNvdXJjZS52YWxpZFdpbmRvd1sxXV0gfTtcbn1cblxuZnVuY3Rpb24gam9pbktleShzb3VyY2U6IE9iamVjdFNvdXJjZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgLi4uc291cmNlLCB2YWxpZFdpbmRvdzogdW5kZWZpbmVkIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJtZWRpYXRlU291cmNlcyhjb25maWc6IFJlbW90ZUNvbmZpZyk6IE9iamVjdFNvdXJjZVtdIHtcbiAgICByZXR1cm4gY29uZmlnLnNvdXJjZXMuZmlsdGVyKHggPT4gaXNPYmplY3RTb3VyY2UoeCkgJiYgeC5pbnRlcm1lZGlhdGUpIGFzIE9iamVjdFNvdXJjZVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW50ZXJtZWRpYXRlU291cmNlcyhjb25maWc6IFJlbW90ZUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb25maWcuc291cmNlcy5zb21lKHggPT4gaXNPYmplY3RTb3VyY2UoeCkgJiYgeC5pbnRlcm1lZGlhdGUpO1xufVxuXG4vKiogUmVtb3ZlcyBldmVyeSBpbnRlcm1lZGlhdGUgZW50cnkgYW5kIHJlam9pbnMgdGhlIHdpbmRvd3MgaXQgc3BsaXQsIGdpdmluZyBiYWNrIHRoZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24uIFR3byBjb25maWdzIHRoYXQgcmVzb2x2ZSBlcXVhbCBkaWZmZXIgb25seSBieSBpbnRlcm1lZGlhdGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbnRlcm1lZGlhdGVTb3VyY2VzKGNvbmZpZzogUmVtb3RlQ29uZmlnKTogUmVtb3RlQ29uZmlnIHtcbiAgICBpZiAoIWhhc0ludGVybWVkaWF0ZVNvdXJjZXMoY29uZmlnKSkgcmV0dXJuIGNvbmZpZztcbiAgICBsZXQgcmVtb3ZlZCA9IGdldEludGVybWVkaWF0ZVNvdXJjZXMoY29uZmlnKTtcbiAgICBsZXQgc291cmNlcyA9IGNvbmZpZy5zb3VyY2VzLmZpbHRlcih4ID0+ICFpc09iamVjdFNvdXJjZSh4KSB8fCAheC5pbnRlcm1lZGlhdGUpLm1hcChjbG9uZVNvdXJjZSk7XG4gICAgZm9yIChsZXQgZ2FwIG9mIHJlbW92ZWQpIHtcbiAgICAgICAgbGV0IFtnYXBTdGFydCwgZ2FwRW5kXSA9IGdhcC52YWxpZFdpbmRvdztcbiAgICAgICAgbGV0IGJlZm9yZSA9IHNvdXJjZXMuZmluZCh4ID0+IGlzT2JqZWN0U291cmNlKHgpICYmIHgudmFsaWRXaW5kb3dbMV0gPT09IGdhcFN0YXJ0KSBhcyBPYmplY3RTb3VyY2UgfCB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBhZnRlciA9IHNvdXJjZXMuZmluZCh4ID0+IGlzT2JqZWN0U291cmNlKHgpICYmIHgudmFsaWRXaW5kb3dbMF0gPT09IGdhcEVuZCkgYXMgT2JqZWN0U291cmNlIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoYmVmb3JlICYmIGFmdGVyICYmIGpvaW5LZXkoYmVmb3JlKSA9PT0gam9pbktleShhZnRlcikpIHtcbiAgICAgICAgICAgIGJlZm9yZS52YWxpZFdpbmRvdyA9IFtiZWZvcmUudmFsaWRXaW5kb3dbMF0sIGFmdGVyLnZhbGlkV2luZG93WzFdXTtcbiAgICAgICAgICAgIHNvdXJjZXMuc3BsaWNlKHNvdXJjZXMuaW5kZXhPZihhZnRlciksIDEpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJlZm9yZSkge1xuICAgICAgICAgICAgYmVmb3JlLnZhbGlkV2luZG93ID0gW2JlZm9yZS52YWxpZFdpbmRvd1swXSwgZ2FwRW5kXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhZnRlcikge1xuICAgICAgICAgICAgYWZ0ZXIudmFsaWRXaW5kb3cgPSBbZ2FwU3RhcnQsIGFmdGVyLnZhbGlkV2luZG93WzFdXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB2ZXJzaW9uOiBjb25maWcudmVyc2lvbiwgc291cmNlcyB9O1xufVxuXG4vKiogU3BsaXRzIGV2ZXJ5IHNvdXJjZSBhdCBzcGxpdFVybCBjb3ZlcmluZyBbc3RhcnQsIGVuZCkgc28gdGhhdCBtaWRkbGUgd2luZG93IHBvaW50cyBhdCBpbnRlcm1lZGlhdGVVcmwgaW5zdGVhZCwgZmxhZ2dlZCBhcyBpbnRlcm1lZGlhdGUuIElkZW1wb3RlbnQ6IGEgY29uZmlnIHRoYXQgYWxyZWFkeSBjb250YWlucyB0aGUgZXhhY3QgaW50ZXJtZWRpYXRlIGNvbWVzIGJhY2sgdW5jaGFuZ2VkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEludGVybWVkaWF0ZVNvdXJjZShjb25maWc6IFJlbW90ZUNvbmZpZywgaW5qZWN0OiB7IHNwbGl0VXJsOiBzdHJpbmc7IGludGVybWVkaWF0ZVVybDogc3RyaW5nOyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9KTogUmVtb3RlQ29uZmlnIHtcbiAgICBsZXQgeyBzcGxpdFVybCwgaW50ZXJtZWRpYXRlVXJsLCBzdGFydCwgZW5kIH0gPSBpbmplY3Q7XG4gICAgaWYgKHN0YXJ0ID49IGVuZCkgcmV0dXJuIGNvbmZpZztcbiAgICBpZiAoY29uZmlnLnNvdXJjZXMuc29tZSh4ID0+IGlzT2JqZWN0U291cmNlKHgpICYmIHguaW50ZXJtZWRpYXRlICYmIHgudXJsID09PSBpbnRlcm1lZGlhdGVVcmwgJiYgeC52YWxpZFdpbmRvd1swXSA9PT0gc3RhcnQgJiYgeC52YWxpZFdpbmRvd1sxXSA9PT0gZW5kKSkge1xuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cbiAgICBsZXQgc291cmNlczogUmVtb3RlQ29uZmlnQmFzZVtdID0gW107XG4gICAgZm9yIChsZXQgc291cmNlIG9mIGNvbmZpZy5zb3VyY2VzKSB7XG4gICAgICAgIGlmICghaXNPYmplY3RTb3VyY2Uoc291cmNlKSB8fCBzb3VyY2UudXJsICE9PSBzcGxpdFVybCB8fCBzb3VyY2UuaW50ZXJtZWRpYXRlKSB7XG4gICAgICAgICAgICBzb3VyY2VzLnB1c2goY2xvbmVTb3VyY2Uoc291cmNlKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgW3dpbmRvd1N0YXJ0LCB3aW5kb3dFbmRdID0gc291cmNlLnZhbGlkV2luZG93O1xuICAgICAgICBpZiAod2luZG93RW5kIDw9IHN0YXJ0IHx8IHdpbmRvd1N0YXJ0ID49IGVuZCkge1xuICAgICAgICAgICAgc291cmNlcy5wdXNoKGNsb25lU291cmNlKHNvdXJjZSkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1pZGRsZVN0YXJ0ID0gTWF0aC5tYXgod2luZG93U3RhcnQsIHN0YXJ0KTtcbiAgICAgICAgbGV0IG1pZGRsZUVuZCA9IE1hdGgubWluKHdpbmRvd0VuZCwgZW5kKTtcbiAgICAgICAgaWYgKG1pZGRsZVN0YXJ0ID4gd2luZG93U3RhcnQpIHtcbiAgICAgICAgICAgIHNvdXJjZXMucHVzaCh7IC4uLnNvdXJjZSwgdmFsaWRXaW5kb3c6IFt3aW5kb3dTdGFydCwgbWlkZGxlU3RhcnRdIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZXMucHVzaCh7IC4uLnNvdXJjZSwgdXJsOiBpbnRlcm1lZGlhdGVVcmwsIHZhbGlkV2luZG93OiBbbWlkZGxlU3RhcnQsIG1pZGRsZUVuZF0sIGludGVybWVkaWF0ZTogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKHdpbmRvd0VuZCA+IG1pZGRsZUVuZCkge1xuICAgICAgICAgICAgc291cmNlcy5wdXNoKHsgLi4uc291cmNlLCB2YWxpZFdpbmRvdzogW21pZGRsZUVuZCwgd2luZG93RW5kXSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB2ZXJzaW9uOiBjb25maWcudmVyc2lvbiwgc291cmNlcyB9O1xufVxuXG4vKiogSW50ZXJtZWRpYXRlcyB3aG9zZSB3aW5kb3cgZW5kZWQgbW9yZSB0aGFuIElOVEVSTUVESUFURV9FWFBJUkVfR1JBQ0UgYWdvIGFyZSByZW1vdmVkLCBhbmQgdGhlIHdpbmRvd3MgdGhleSBzcGxpdCBhcmUgcmVqb2luZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwaXJlSW50ZXJtZWRpYXRlU291cmNlcyhjb25maWc6IFJlbW90ZUNvbmZpZywgbm93OiBudW1iZXIpOiBSZW1vdGVDb25maWcge1xuICAgIGxldCBleHBpcmVkID0gZ2V0SW50ZXJtZWRpYXRlU291cmNlcyhjb25maWcpLmZpbHRlcih4ID0+IHgudmFsaWRXaW5kb3dbMV0gKyBJTlRFUk1FRElBVEVfRVhQSVJFX0dSQUNFIDwgbm93KTtcbiAgICBpZiAoIWV4cGlyZWQubGVuZ3RoKSByZXR1cm4gY29uZmlnO1xuICAgIGxldCBrZXB0SW50ZXJtZWRpYXRlcyA9IGdldEludGVybWVkaWF0ZVNvdXJjZXMoY29uZmlnKS5maWx0ZXIoeCA9PiAhZXhwaXJlZC5pbmNsdWRlcyh4KSk7XG4gICAgbGV0IHJlc29sdmVkID0gcmVzb2x2ZUludGVybWVkaWF0ZVNvdXJjZXMoY29uZmlnKTtcbiAgICBsZXQgcmVzdWx0ID0gcmVzb2x2ZWQ7XG4gICAgZm9yIChsZXQga2VlcCBvZiBrZXB0SW50ZXJtZWRpYXRlcykge1xuICAgICAgICByZXN1bHQgPSBpbmplY3RJbnRlcm1lZGlhdGVTb3VyY2UocmVzdWx0LCB7XG4gICAgICAgICAgICBzcGxpdFVybDogZmluZFNwbGl0VXJsKGNvbmZpZywga2VlcCkgfHwga2VlcC51cmwsXG4gICAgICAgICAgICBpbnRlcm1lZGlhdGVVcmw6IGtlZXAudXJsLFxuICAgICAgICAgICAgc3RhcnQ6IGtlZXAudmFsaWRXaW5kb3dbMF0sXG4gICAgICAgICAgICBlbmQ6IGtlZXAudmFsaWRXaW5kb3dbMV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogVGhlIHVybCBvZiB0aGUgZW50cnkgYW4gaW50ZXJtZWRpYXRlIHdhcyBzcGxpdCBvdXQgb2YgLSB0aGUgbmVpZ2hib3VyIGl0IHRvdWNoZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFNwbGl0VXJsKGNvbmZpZzogUmVtb3RlQ29uZmlnLCBpbnRlcm1lZGlhdGU6IE9iamVjdFNvdXJjZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IFtzdGFydCwgZW5kXSA9IGludGVybWVkaWF0ZS52YWxpZFdpbmRvdztcbiAgICBsZXQgbmVpZ2hib3VyID0gY29uZmlnLnNvdXJjZXMuZmluZCh4ID0+IGlzT2JqZWN0U291cmNlKHgpICYmICF4LmludGVybWVkaWF0ZSAmJiAoeC52YWxpZFdpbmRvd1sxXSA9PT0gc3RhcnQgfHwgeC52YWxpZFdpbmRvd1swXSA9PT0gZW5kKSkgYXMgT2JqZWN0U291cmNlIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiBuZWlnaGJvdXI/LnVybDtcbn1cbiJdfQ==
119
- /* _JS_SOURCE_HASH = "09530ab946371c523e615e86161ca5c7281438805a330d7f0e340e75a91f9b7c"; */
119
+ /* _JS_SOURCE_HASH = "a964e0a6a3feacb4ae1c41095dd57421af2049110286a3c0dd9d7ee374479521"; */
@@ -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
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -239,4 +239,4 @@ function serializeRemoteConfig(config) {
239
239
  }
240
240
  exports.serializeRemoteConfig = serializeRemoteConfig;
241
241
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVtb3RlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUFnRDtBQUNoRCxtREFBd0Q7QUFDeEQsdUVBQStEO0FBQy9ELDBEQUFpQztBQUNqQyw0Q0FBaUw7QUFFakwsSUFBQSxzQkFBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRW5ELHNTQUFzUztBQUV6UixRQUFBLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQUMxRCxNQUFNLGNBQWMsR0FBRyxHQUFHLEdBQUcsb0JBQVksQ0FBQztBQUUxQyxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUUzQyxvTEFBb0w7QUFDcEwsU0FBZ0Isa0JBQWtCLENBQUMsR0FBVztJQUMxQyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLDBCQUFjLENBQUMsQ0FBQztJQUN4QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNuQyxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsMEJBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9FLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBTkQsZ0RBTUM7QUFFRCx3R0FBd0c7QUFDeEcsU0FBZ0IsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsSUFBSSxRQUFRLEtBQUssU0FBUztRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzVDLHdGQUF3RjtJQUN4RixJQUFJLElB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QUM7SUFDdEcsQ0FBQztJQUNELE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQVpELDRDQVlDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsTUFBb0I7SUFDdEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFGRCxzREFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNvcnQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9taXNjXCI7XG5pbXBvcnQgeyBnZXRCdWZmZXJJbnQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9iaXRzXCI7XG5pbXBvcnQgeyBzZXRGbGFnIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9yZXF1aXJlL2NvbXBpbGVGbGFnc1wiO1xuaW1wb3J0IGpzU2hhMjU2IGZyb20gXCJqcy1zaGEyNTZcIjtcbmltcG9ydCB7IFJlbW90ZUNvbmZpZywgUmVtb3RlQ29uZmlnQmFzZSwgSG9zdGVkQ29uZmlnLCBCYWNrYmxhemVDb25maWcsIEFyY2hpdmVGaWxlSW5mbywgQ2hhbmdlc0FmdGVyQ29uZmlnLCBGVUxMX1ZBTElEX1dJTkRPVywgRlVMTF9ST1VURSwgVkFSSUFCTEVfU0hBUkQgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5cbnNldEZsYWcocmVxdWlyZSwgXCJqcy1zaGEyNTZcIiwgXCJhbGxvd2NsaWVudFwiLCB0cnVlKTtcblxuLy8gUGFyc2luZyAvIG5vcm1hbGl6YXRpb24gb2YgUmVtb3RlQ29uZmlnIChzZWUgSUFyY2hpdmVzLnRzKS4gRXZlcnkgYnVja2V0IHN0b3JlcyBpdHMgb3duIGNvbmZpZ3VyYXRpb24gKGEgUmVtb3RlQ29uZmlnKSBpbnNpZGUgaXRzZWxmLCBhdCBST1VUSU5HX0ZJTEUuIFdyaXRpbmcgdGhhdCBmaWxlIGNyZWF0ZXMgdGhlIGJ1Y2tldCAvIHJlY29uZmlndXJlcyBpdCAoc2VlIHN0b3JhZ2VTZXJ2ZXJTdGF0ZS50cyk7IGNsaWVudHMgcmVjb25jaWxlIGl0IGJ5IHZlcnNpb24gKHNlZSBjcmVhdGVBcmNoaXZlcy50cykuXG5cbmV4cG9ydCBjb25zdCBST1VUSU5HX0ZJTEUgPSBcInN0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblwiO1xuY29uc3QgUk9VVElOR19TVUZGSVggPSBcIi9cIiArIFJPVVRJTkdfRklMRTtcblxuY29uc3QgUk9VVEVfUFJFQ0lTSU9OID0gMTAwMCAqIDEwMDAgKiAxMDAwO1xuXG4vKiogVGhlIHZhcmlhYmxlLXNoYXJkIHJvdXRlIG92ZXJyaWRlIGVtYmVkZGVkIGluIHRoZSBrZXkgKFwiPHNlbnRpbmVsPl88dmFsdWU+XCIsIHNlZSBWQVJJQUJMRV9TSEFSRCksIG9yIHVuZGVmaW5lZCB3aGVuIHRoZSBrZXkgaGFzIG5vIHNlbnRpbmVsIG9yIHRoZSBzZW50aW5lbCBoYXMgbm8gdmFsdWUgeWV0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGluZGV4ID0ga2V5LmluZGV4T2YoVkFSSUFCTEVfU0hBUkQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IG1hdGNoID0gL15fKFxcZCsoPzpcXC5cXGQrKT8pLy5leGVjKGtleS5zbGljZShpbmRleCArIFZBUklBQkxFX1NIQVJELmxlbmd0aCkpO1xuICAgIGlmICghbWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICttYXRjaFsxXTtcbn1cblxuLyoqIFdoZXJlIGEga2V5IHJvdXRlcyBpbiBbMCwgMSkuIEEgbWF0ZXJpYWxpemVkIHZhcmlhYmxlLXNoYXJkIHN1ZmZpeCBjb21wbGV0ZWx5IG92ZXJyaWRlcyB0aGUgaGFzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IG92ZXJyaWRlID0gcGFyc2VWYXJpYWJsZVJvdXRlKGtleSk7XG4gICAgaWYgKG92ZXJyaWRlICE9PSB1bmRlZmluZWQpIHJldHVybiBvdmVycmlkZTtcbiAgICAvLyBQdXJlIEpTLCBzbyByb3V0aW5nIHdvcmtzIGNsaWVudHNpZGUgdG9vIChub2RlJ3MgY3J5cHRvIGhhc2hpbmcgaXMgdW5hdmFpbGFibGUgdGhlcmUpXG4gICAgbGV0IGhhc2ggPSBnZXRCdWZmZXJJbnQoQnVmZmVyLmZyb20oanNTaGEyNTYuc2hhMjU2LmFycmF5KGtleSkpKTtcbiAgICByZXR1cm4gaGFzaCAlIFJPVVRFX1BSRUNJU0lPTiAvIFJPVVRFX1BSRUNJU0lPTjtcbn1cblxuLyoqIFRoZSBpbi1tZW1vcnkgZ2V0Q2hhbmdlc0FmdGVyMiBlbXVsYXRpb24sIGZvciBiYWNrZW5kcyB3aXRob3V0IGEgbmF0aXZlIGNoYW5nZSBmZWVkOiBhIGZ1bGwgbGlzdGluZyBmaWx0ZXJlZCBkb3duIHRvIGZpbGVzIHdyaXR0ZW4gYWZ0ZXIgY29uZmlnLnRpbWUgd2hvc2Uga2V5cyByb3V0ZSBpbnRvIGNvbmZpZy5yb3V0ZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQ2hhbmdlcyhmaWxlczogQXJjaGl2ZUZpbGVJbmZvW10sIGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogQXJjaGl2ZUZpbGVJbmZvW10ge1xuICAgIHJldHVybiBmaWxlcy5maWx0ZXIoZmlsZSA9PiB7XG4gICAgICAgIGlmIChmaWxlLmNyZWF0ZVRpbWUgPD0gY29uZmlnLnRpbWUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IHJvdXRlcyA9IGNvbmZpZy5yb3V0ZXM7XG4gICAgICAgIGlmIChyb3V0ZXMgJiYgIXJvdXRlcy5zb21lKHJvdXRlID0+IHJvdXRlQ29udGFpbnMocm91dGUsIGdldFJvdXRlKGZpbGUucGF0aCkpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbn1cblxuLy8gUm91dGUgcmFuZ2VzIGFyZSBbc3RhcnQsIGVuZCkgLSBpbmNsdXNpdmUgc3RhcnQsIGV4Y2x1c2l2ZSBlbmRcbmV4cG9ydCBmdW5jdGlvbiByb3V0ZUNvbnRhaW5zKHJvdXRlOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCB2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyb3V0ZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHJvdXRlWzBdIDw9IHZhbHVlICYmIHZhbHVlIDwgcm91dGVbMV07XG59XG5leHBvcnQgZnVuY3Rpb24gcm91dGVzT3ZlcmxhcChhOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBiOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgbGV0IFthU3RhcnQsIGFFbmRdID0gYSB8fCBGVUxMX1JPVVRFO1xuICAgIGxldCBbYlN0YXJ0LCBiRW5kXSA9IGIgfHwgRlVMTF9ST1VURTtcbiAgICByZXR1cm4gYVN0YXJ0IDwgYkVuZCAmJiBiU3RhcnQgPCBhRW5kO1xufVxuLyoqIFRoZSBvdmVybGFwIG9mIHR3byByb3V0ZSByYW5nZXMsIG9yIHVuZGVmaW5lZCB3aGVuIHRoZXkgZG9uJ3Qgb3ZlcmxhcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3V0ZUludGVyc2VjdGlvbihhOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBiOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkKTogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IFthU3RhcnQsIGFFbmRdID0gYSB8fCBGVUxMX1JPVVRFO1xuICAgIGxldCBbYlN0YXJ0LCBiRW5kXSA9IGIgfHwgRlVMTF9ST1VURTtcbiAgICBsZXQgc3RhcnQgPSBNYXRoLm1heChhU3RhcnQsIGJTdGFydCk7XG4gICAgbGV0IGVuZCA9IE1hdGgubWluKGFFbmQsIGJFbmQpO1xuICAgIGlmIChzdGFydCA+PSBlbmQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIFtzdGFydCwgZW5kXTtcbn1cblxuLy8gQSBtaXNzaW5nIHZlcnNpb24gY291bnRzIGFzIC0xLCBzbyBhbnkgZXhwbGljaXRseSB2ZXJzaW9uZWQgY29uZmlnIGJlYXRzIGFuIHVudmVyc2lvbmVkIG9uZVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1ZlcnNpb24oY29uZmlnOiBSZW1vdGVDb25maWcpOiBudW1iZXIge1xuICAgIHJldHVybiBjb25maWcudmVyc2lvbiA/PyAtMTtcbn1cblxuLyoqIFN0cmlwcyB0aGUgcm91dGluZy1maWxlIHN1ZmZpeCwgbGVhdmluZyB0aGUgYnVja2V0J3MgcHVibGljIGJhc2UgVVJMIChmaWxlIHBhdGhzIGFwcGVuZCB0byBpdCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVja2V0QmFzZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF1cmwuZW5kc1dpdGgoUk9VVElOR19TVUZGSVgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBidWNrZXQgcm91dGluZyBVUkwgZW5kaW5nIHdpdGggJHtKU09OLnN0cmluZ2lmeShST1VUSU5HX1NVRkZJWCl9LCB3YXMgJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICByZXR1cm4gdXJsLnNsaWNlKDAsIC1ST1VUSU5HX1NVRkZJWC5sZW5ndGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaWxlVXJsKGJhc2VVcmw6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJhc2VVcmwgKyBcIi9cIiArIGZpbGVQYXRoLnNwbGl0KFwiL1wiKS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KS5qb2luKFwiL1wiKTtcbn1cblxuLy8gRXg6IGh0dHBzOi8vc3RvcmFnZTIudmlkZ3JpZHdlYi5jb206NDQ0NS9maWxlL2V4YW1wbGVhY2NvdW50L2V4YW1wbGVidWNrZXQvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIb3N0ZWRVcmwodXJsOiBzdHJpbmcpOiB7IGFkZHJlc3M6IHN0cmluZzsgcG9ydDogbnVtYmVyOyBhY2NvdW50OiBzdHJpbmc7IGJ1Y2tldE5hbWU6IHN0cmluZyB9IHtcbiAgICBsZXQgYmFzZSA9IGdldEJ1Y2tldEJhc2VVcmwodXJsKTtcbiAgICBsZXQgdSA9IG5ldyBVUkwoYmFzZSk7XG4gICAgaWYgKHUucHJvdG9jb2wgIT09IFwiaHR0cHM6XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdG9yYWdlIFVSTCBtdXN0IHVzZSBodHRwcywgZ290ICR7SlNPTi5zdHJpbmdpZnkodS5wcm90b2NvbCl9IGluICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgbGV0IHBhcnRzID0gdS5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKHggPT4geCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMyB8fCBwYXJ0c1swXSAhPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGhvc3RlZCBidWNrZXQgVVJMIGxpa2UgaHR0cHM6Ly9ob3N0OnBvcnQvZmlsZS88YWNjb3VudD4vPGJ1Y2tldE5hbWU+JHtST1VUSU5HX1NVRkZJWH0sIHdhcyAke0pTT04uc3RyaW5naWZ5KHVybCl9YCk7XG4gICAgfVxuICAgIHJldHVybiB7IGFkZHJlc3M6IHUuaG9zdG5hbWUsIHBvcnQ6ICt1LnBvcnQgfHwgNDQzLCBhY2NvdW50OiBkZWNvZGVVUklDb21wb25lbnQocGFydHNbMV0pLCBidWNrZXROYW1lOiBkZWNvZGVVUklDb21wb25lbnQocGFydHNbMl0pIH07XG59XG5cbi8vIEV4OiBodHRwczovL2YwMDIuYmFja2JsYXplYjIuY29tL2ZpbGUvcXVlcnlzdWJ0ZXN0LWNvbS1wdWJsaWMtaW1tdXRhYmxlL3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQmFja2JsYXplVXJsKHVybDogc3RyaW5nKTogeyBidWNrZXROYW1lOiBzdHJpbmcgfSB7XG4gICAgbGV0IGJhc2UgPSBnZXRCdWNrZXRCYXNlVXJsKHVybCk7XG4gICAgbGV0IHUgPSBuZXcgVVJMKGJhc2UpO1xuICAgIGxldCBwYXJ0cyA9IHUucGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcih4ID0+IHgpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIgfHwgcGFydHNbMF0gIT09IFwiZmlsZVwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBiYWNrYmxhemUgYnVja2V0IFVSTCBsaWtlIGh0dHBzOi8vZjAwMi5iYWNrYmxhemViMi5jb20vZmlsZS88YnVja2V0TmFtZT4ke1JPVVRJTkdfU1VGRklYfSwgd2FzICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYnVja2V0TmFtZTogZGVjb2RlVVJJQ29tcG9uZW50KHBhcnRzWzFdKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUhvc3RlZFVybFBvcnQodXJsOiBzdHJpbmcsIHBvcnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IHUgPSBuZXcgVVJMKHVybCk7XG4gICAgdS5wb3J0ID0gU3RyaW5nKHBvcnQpO1xuICAgIHJldHVybiB1LnRvU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTb3VyY2Uoc291cmNlOiBSZW1vdGVDb25maWdCYXNlKTogSG9zdGVkQ29uZmlnIHwgQmFja2JsYXplQ29uZmlnIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBsZXQgd2luZG93ID0gc291cmNlLnZhbGlkV2luZG93O1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkod2luZG93KSB8fCB3aW5kb3cubGVuZ3RoICE9PSAyIHx8ICF3aW5kb3cuZXZlcnkoeCA9PiB0eXBlb2YgeCA9PT0gXCJudW1iZXJcIikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT2JqZWN0IHNvdXJjZSBjb25maWdzIG11c3Qgc3BlY2lmeSB2YWxpZFdpbmRvdyAoW3N0YXJ0TXMsIGVuZE1zXSBvZiB0aGUgd3JpdGUgdGltZXMgdGhlIHNvdXJjZSBpcyB2YWxpZCBmb3IpIC0gY29uZmlndXJhdGlvbiBjaGFuZ2VzIG11c3QgYmUgc2NoZWR1bGVkLCBub3QgZmxpcHBlZCBpbnN0YW50bHkuIFVzZSBGVUxMX1ZBTElEX1dJTkRPVyB3aGVuIHRoZSBzb3VyY2UgaXMgYWx3YXlzIHZhbGlkLiBXYXMgJHtKU09OLnN0cmluZ2lmeSh3aW5kb3cpfSBvbiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcm91dGUgPSBzb3VyY2Uucm91dGU7XG4gICAgICAgIGlmIChyb3V0ZSAhPT0gdW5kZWZpbmVkICYmICghQXJyYXkuaXNBcnJheShyb3V0ZSkgfHwgcm91dGUubGVuZ3RoICE9PSAyIHx8ICFyb3V0ZS5ldmVyeSh4ID0+IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSB8fCByb3V0ZVswXSA8IDAgfHwgcm91dGVbMV0gPiAxIHx8IHJvdXRlWzBdID49IHJvdXRlWzFdKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2Ugcm91dGUgbXVzdCBiZSBhIFtzdGFydCwgZW5kKSBmcmFjdGlvbiByYW5nZSB3aXRoaW4gWzAsIDFdIHdpdGggc3RhcnQgPCBlbmQsIHdhcyAke0pTT04uc3RyaW5naWZ5KHJvdXRlKX0gb24gJHtKU09OLnN0cmluZ2lmeShzb3VyY2UpLnNsaWNlKDAsIDUwMCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZS5yZWFkZXJEaXNrTGltaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2UucmVhZGVyRGlza0xpbWl0ICE9PSBcIm51bWJlclwiIHx8IHNvdXJjZS5yZWFkZXJEaXNrTGltaXQgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcmVhZGVyRGlza0xpbWl0IG11c3QgYmUgYSBwb3NpdGl2ZSBieXRlIGNvdW50LCB3YXMgJHtKU09OLnN0cmluZ2lmeShzb3VyY2UucmVhZGVyRGlza0xpbWl0KX0gb24gJHtKU09OLnN0cmluZ2lmeShzb3VyY2UpLnNsaWNlKDAsIDUwMCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNvdXJjZS5ub0Z1bGxTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZWFkZXJEaXNrTGltaXQgcmVxdWlyZXMgbm9GdWxsU3luYzogYSBmdWxsIGNvcHkgY2Fubm90IGJlIGJvdW5kZWQsIG9ubHkgYSByZWFkIGNhY2hlIGNhbi4gT24gJHtKU09OLnN0cmluZ2lmeShzb3VyY2UpLnNsaWNlKDAsIDUwMCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZS50eXBlID09PSBcInJlbW90ZVwiKSB7XG4gICAgICAgICAgICAvLyBUaHJvd3MgaWYgdGhlIFVSTCBpcyBtYWxmb3JtZWQsIHNvIGJhZCBjb25maWdzIGFyZSByZWplY3RlZCBiZWZvcmUgdGhleSdyZSBzdG9yZWRcbiAgICAgICAgICAgIHBhcnNlSG9zdGVkVXJsKHNvdXJjZS51cmwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuICAgIGxldCBob3N0bmFtZSA9IG5ldyBVUkwoc291cmNlKS5ob3N0bmFtZTtcbiAgICBpZiAoaG9zdG5hbWUuZW5kc1dpdGgoXCIuYmFja2JsYXplYjIuY29tXCIpKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlcyB0aGUgVVJMICh0aHJvd3Mgb24gbWFsZm9ybWVkKSBiZWZvcmUgaXQncyBzdG9yZWQ7IHRoZSBidWNrZXQgbmFtZSBpcyByZWFkIGJhY2sgb3V0IG9mIHRoZSBVUkwgYXQgdXNlIHNpdGVzLCBuZXZlciBzdG9yZWQgb24gdGhlIGNvbmZpZy5cbiAgICAgICAgcGFyc2VCYWNrYmxhemVVcmwoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiYWNrYmxhemVcIiwgdXJsOiBzb3VyY2UsIHZhbGlkV2luZG93OiBGVUxMX1ZBTElEX1dJTkRPVywgcHVibGljOiB0cnVlIH07XG4gICAgfVxuICAgIHBhcnNlSG9zdGVkVXJsKHNvdXJjZSk7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJyZW1vdGVcIiwgdXJsOiBzb3VyY2UsIHZhbGlkV2luZG93OiBGVUxMX1ZBTElEX1dJTkRPVywgcHVibGljOiB0cnVlIH07XG59XG5cbi8qKiBIb3cgZmFyIHVwIGZyb20gMCB0aGUgc291cmNlcycgcm91dGVzIHJlYWNoIHdpdGhvdXQgYSBnYXAgKDEgbWVhbnMgdGhlIHdob2xlIGtleSBzcGFjZSkuICovXG5mdW5jdGlvbiBnZXRSb3V0ZUNvdmVyYWdlKHNvdXJjZXM6IChIb3N0ZWRDb25maWcgfCBCYWNrYmxhemVDb25maWcpW10pOiBudW1iZXIge1xuICAgIGxldCByb3V0ZXMgPSBzb3VyY2VzLm1hcCh4ID0+IHgucm91dGUgfHwgRlVMTF9ST1VURSk7XG4gICAgc29ydChyb3V0ZXMsIHggPT4geFswXSk7XG4gICAgbGV0IGNvdmVyZWQgPSAwO1xuICAgIGZvciAobGV0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgICBpZiAocm91dGVbMF0gPiBjb3ZlcmVkKSBicmVhaztcbiAgICAgICAgY292ZXJlZCA9IE1hdGgubWF4KGNvdmVyZWQsIHJvdXRlWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvdmVyZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVSZW1vdGVDb25maWcoY29uZmlnOiBSZW1vdGVDb25maWcgfCBSZW1vdGVDb25maWdCYXNlKTogUmVtb3RlQ29uZmlnIHtcbiAgICBsZXQgcmVzdWx0OiBSZW1vdGVDb25maWc7XG4gICAgaWYgKHR5cGVvZiBjb25maWcgIT09IFwic3RyaW5nXCIgJiYgXCJzb3VyY2VzXCIgaW4gY29uZmlnKSB7XG4gICAgICAgIHJlc3VsdCA9IHsgdmVyc2lvbjogY29uZmlnLnZlcnNpb24sIHNvdXJjZXM6IGNvbmZpZy5zb3VyY2VzLm1hcChub3JtYWxpemVTb3VyY2UpIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0geyBzb3VyY2VzOiBbbm9ybWFsaXplU291cmNlKGNvbmZpZyldIH07XG4gICAgfVxuICAgIC8vIE1peGVkIGltbXV0YWJpbGl0eSBtYWtlcyBubyBzZW5zZSBBTU9ORyBzb3VyY2VzIHZhbGlkIGF0IHRoZSBzYW1lIHRpbWU6IGEgbXV0YWJsZSBzb3VyY2Ugd291bGQgYWNjZXB0IG92ZXJ3cml0ZXMgdGhhdCBpdHMgaW1tdXRhYmxlIHBlZXJzIHJlZnVzZSB0byBzeW5jaHJvbml6ZSwgZm9ya2luZyB0aGVpciBjb250ZW50cy4gU291cmNlcyBhcmUgZ3JvdXBlZCBieSB0cmFuc2l0aXZlbHkgb3ZlcmxhcHBpbmcgdmFsaWQgd2luZG93cyAoYWJzb3JiIGV2ZXJ5dGhpbmcgb3ZlcmxhcHBpbmcgdGhlIGdyb3VwLCBleHRlbmQgdGhlIGdyb3VwJ3MgZW5kLCByZXBlYXQpIC0gYSBzb2Z0IGNoZWNrIHRoYXQgaXMgY29ycmVjdCBhcyBsb25nIGFzIHdpbmRvd3MgaGF2ZSBjbGVhbiBicmVha3MgKGEgZ3JvdXAgZW5kcyBleGFjdGx5IHdoZXJlIHRoZSBuZXh0IGJlZ2lucykuXG4gICAgbGV0IHNvdXJjZXMgPSByZXN1bHQuc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKTtcbiAgICBsZXQgc29ydGVkID0gWy4uLnNvdXJjZXNdO1xuICAgIHNvcnQoc29ydGVkLCB4ID0+IHgudmFsaWRXaW5kb3dbMF0pO1xuICAgIGxldCBncm91cDogdHlwZW9mIHNvdXJjZXMgPSBbXTtcbiAgICBsZXQgZ3JvdXBFbmQgPSAwO1xuICAgIGZ1bmN0aW9uIGNoZWNrR3JvdXAoKSB7XG4gICAgICAgIGxldCBpbW11dGFibGVDb3VudCA9IGdyb3VwLmZpbHRlcih4ID0+IHguaW1tdXRhYmxlKS5sZW5ndGg7XG4gICAgICAgIGlmIChpbW11dGFibGVDb3VudCAmJiBpbW11dGFibGVDb3VudCAhPT0gZ3JvdXAubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZXMgd2l0aCBvdmVybGFwcGluZyB2YWxpZCB3aW5kb3dzIG11c3QgYWdyZWUgb24gaW1tdXRhYmlsaXR5OiAke2ltbXV0YWJsZUNvdW50fSBvZiAke2dyb3VwLmxlbmd0aH0gYXJlIGltbXV0YWJsZS4gU291cmNlczogJHtKU09OLnN0cmluZ2lmeShncm91cC5tYXAoeCA9PiAoeyB1cmw6IHgudXJsLCB2YWxpZFdpbmRvdzogeC52YWxpZFdpbmRvdywgaW1tdXRhYmxlOiAhIXguaW1tdXRhYmxlIH0pKSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIHNvdXJjZXMgdmFsaWQgYXQgYW55IGluc3RhbnQgbXVzdCBjb3ZlciB0aGUgd2hvbGUga2V5IHNwYWNlLCBvciBrZXlzIHJvdXRpbmcgaW50byBhIGdhcCBjb3VsZCBuZXZlciBiZSByZWFkXG4gICAgICAgIGxldCBjb3ZlcmVkID0gZ2V0Um91dGVDb3ZlcmFnZShncm91cCk7XG4gICAgICAgIGlmIChjb3ZlcmVkIDwgMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2VzIHdpdGggb3ZlcmxhcHBpbmcgdmFsaWQgd2luZG93cyBtdXN0IGNvdmVyIHRoZSBmdWxsIHJvdXRlIHNwYWNlIFswLCAxKTsgY292ZXJhZ2Ugc3RvcHMgYXQgJHtjb3ZlcmVkfS4gU291cmNlczogJHtKU09OLnN0cmluZ2lmeShncm91cC5tYXAoeCA9PiAoeyB1cmw6IHgudXJsLCB2YWxpZFdpbmRvdzogeC52YWxpZFdpbmRvdywgcm91dGU6IHgucm91dGUgfHwgRlVMTF9ST1VURSB9KSkpfWApO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IGJ1Y2tldCBtdXN0IEFMU08gY292ZXIgdGhlIGZ1bGwgcm91dGUgc3BhY2UgYWNyb3NzIGl0cyBvd24gZW50cmllcywgYmVjYXVzZSBhbGwgb2YgYSBidWNrZXQncyBlbnRyaWVzIHNoYXJlIG9uZSBkaXNrLiBBIGJ1Y2tldCB0aGF0IG9ubHkgZXZlciBzeW5jaHJvbml6ZXMgcGFydCBvZiB0aGUga2V5IHNwYWNlIG5ldmVyIGxlYXJucyBhYm91dCBkZWxldGlvbnMgaW4gdGhlIHJlc3Qgb2YgaXQgLSBhbmQgdG9tYnN0b25lcyBleHBpcmUsIHNvIGZpbGVzIGl0IHN0aWxsIGhvbGRzIGZyb20gYSByb3V0ZSBpdCBubyBsb25nZXIgc2VydmVzIGV2ZW50dWFsbHkgbG9vayBsaWtlIGxpdmUgZmlsZXMgYWdhaW4sIGFuZCBnZXQgcmVzdXJyZWN0ZWQgaW50byB0aGUgY2hhaW4gYnkgaXRzIG5leHQgc2Nhbi4gQW4gZW50cnkgd2l0aCBubyByb3V0ZSAoaW1wbGljaXRseSB0aGUgZnVsbCBzcGFjZSkgc2F0aXNmaWVzIHRoaXMgb24gaXRzIG93biwgd2hpY2ggaXMgd2h5IHRoZSB1c3VhbCBjb25maWd1cmF0aW9uIGxpc3RzIGVhY2ggYnVja2V0IG9uY2UgcGVyIHNoYXJkIEFORCBvbmNlIHVuc2hhcmRlZC5cbiAgICAgICAgbGV0IGJ5VXJsID0gbmV3IE1hcDxzdHJpbmcsIHR5cGVvZiBncm91cD4oKTtcbiAgICAgICAgZm9yIChsZXQgc291cmNlIG9mIGdyb3VwKSB7XG4gICAgICAgICAgICBsZXQgZW50cmllcyA9IGJ5VXJsLmdldChzb3VyY2UudXJsKTtcbiAgICAgICAgICAgIGlmICghZW50cmllcykge1xuICAgICAgICAgICAgICAgIGVudHJpZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBieVVybC5zZXQoc291cmNlLnVybCwgZW50cmllcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBbdXJsLCBlbnRyaWVzXSBvZiBieVVybCkge1xuICAgICAgICAgICAgbGV0IHVybENvdmVyZWQgPSBnZXRSb3V0ZUNvdmVyYWdlKGVudHJpZXMpO1xuICAgICAgICAgICAgaWYgKHVybENvdmVyZWQgPCAxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFdmVyeSBidWNrZXQgbXVzdCBjb3ZlciB0aGUgZnVsbCByb3V0ZSBzcGFjZSBbMCwgMSkgYWNyb3NzIGl0cyBvd24gZW50cmllcyB3aXRoIG92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MsIGJ1dCAke3VybH0gb25seSBjb3ZlcnMgdXAgdG8gJHt1cmxDb3ZlcmVkfSAoaXRzIHJvdXRlczogJHtKU09OLnN0cmluZ2lmeShlbnRyaWVzLm1hcCh4ID0+IHgucm91dGUgfHwgRlVMTF9ST1VURSkpfSkuIEFkZCBhbiBlbnRyeSBmb3IgaXQgd2l0aCBubyByb3V0ZSAob3IgZW50cmllcyB3aG9zZSByb3V0ZXMgc3BhbiB0aGUgcmVzdCksIGFsb25nc2lkZSBpdHMgc2hhcmRlZCBlbnRyaWVzLiBUaGlzIGlzIGVuZm9yY2VkIGJlY2F1c2UgYSBidWNrZXQncyBlbnRyaWVzIGFsbCBzaGFyZSBvbmUgZGlzazogaWYgaXQgb25seSBldmVyIHN5bmNocm9uaXplcyBwYXJ0IG9mIHRoZSBrZXkgc3BhY2UsIGl0IG5ldmVyIHNlZXMgZGVsZXRpb25zIGluIHRoZSByZXN0LCBhbmQgb25jZSB0aG9zZSB0b21ic3RvbmVzIGV4cGlyZSB0aGUgZmlsZXMgaXQgc3RpbGwgaG9sZHMgYXJlIHJlc3VycmVjdGVkIGludG8gdGhlIGNoYWluIGJ5IGl0cyBuZXh0IHNjYW4uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgc291cmNlIG9mIHNvcnRlZCkge1xuICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoICYmIHNvdXJjZS52YWxpZFdpbmRvd1swXSA+PSBncm91cEVuZCkge1xuICAgICAgICAgICAgY2hlY2tHcm91cCgpO1xuICAgICAgICAgICAgZ3JvdXAgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBncm91cC5wdXNoKHNvdXJjZSk7XG4gICAgICAgIGdyb3VwRW5kID0gTWF0aC5tYXgoZ3JvdXBFbmQsIHNvdXJjZS52YWxpZFdpbmRvd1sxXSk7XG4gICAgfVxuICAgIGNoZWNrR3JvdXAoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSb3V0aW5nRGF0YShkYXRhOiBCdWZmZXIpOiBSZW1vdGVDb25maWcge1xuICAgIGxldCB0ZXh0ID0gZGF0YS50b1N0cmluZygpO1xuICAgIGxldCBwYXJzZWQ6IFJlbW90ZUNvbmZpZztcbiAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHRleHQpIGFzIFJlbW90ZUNvbmZpZztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGluZyBjb25maWcgaXMgbm90IHZhbGlkIEpTT04gKCR7U3RyaW5nKGUpfSkuIERhdGE6ICR7dGV4dC5zbGljZSgwLCA1MDApfWApO1xuICAgIH1cbiAgICBpZiAoIXBhcnNlZCB8fCB0eXBlb2YgcGFyc2VkICE9PSBcIm9iamVjdFwiIHx8ICFBcnJheS5pc0FycmF5KHBhcnNlZC5zb3VyY2VzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRpbmcgY29uZmlnIG11c3QgYmUgeyB2ZXJzaW9uPywgc291cmNlczogWy4uLl0gfSwgd2FzICR7dGV4dC5zbGljZSgwLCA1MDApfWApO1xuICAgIH1cbiAgICByZXR1cm4gbm9ybWFsaXplUmVtb3RlQ29uZmlnKHBhcnNlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVSZW1vdGVDb25maWcoY29uZmlnOiBSZW1vdGVDb25maWcpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShjb25maWcsIHVuZGVmaW5lZCwgNCkpO1xufVxuIl19
242
- /* _JS_SOURCE_HASH = "d4b8f89475002ec32767f1f94140148c943ec8f20d75dc984004c1f9d8a57f7b"; */
242
+ /* _JS_SOURCE_HASH = "0e0668d8e7e9a4612354f41fec7b94ecaa6283b2b1286c6e1da31f4d126df7be"; */
@@ -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.SourceWrapper = exports.RETRY_GROWTH = exports.RETRY_MAX_DELAY = exports.RETRY_START_DELAY = void 0;
4
4
  const misc_1 = require("socket-function/src/misc");
@@ -293,4 +293,4 @@ class SourceWrapper {
293
293
  }
294
294
  exports.SourceWrapper = SourceWrapper;
295
295
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlV3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNvdXJjZVdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXdEO0FBQ3hELDJEQUFxRDtBQUNyRCxvREFBaUQ7QUFFakQsaURBQXFIO0FBQ3JILHFEQUFrRDtBQUNsRCwrQ0FBNEM7QUFDNUMsNENBQWlEO0FBQ2pELDZEQUF3RjtBQUUzRSxRQUFBLGlCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0IsUUFBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDaEMsUUFBQSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLHVCQUF1QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQy9DLCtIQUErSDtBQUMvSCxNQUFNLDRCQUE0QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDL0MsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNoQyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFFeEIsS0FBSyxVQUFVLGlCQUFpQjtJQUM1QixJQUFJLENBQUMsSUFBQSxhQUFNLEdBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM1QixJQUFJLENBQUM7UUFDRCxNQUFNLElBQUEscUJBQVMsRUFBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sSUFBQSxxQkFBUyxFQUFDLCtCQUErQixDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUFDLFdBQU0sQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDO0FBRUQsc2pCQUFzakI7QUFDdGpCLE1BQWEsYUFBYTtJQVN0QixZQUNXLE1BQXNDO0lBQzdDLG9GQUFvRjtJQUM1RSxVQUFt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QUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDekQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFyUUQsc0NBcVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlLCBzb3J0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9iYXRjaGluZ1wiO1xuaW1wb3J0IHsgZ2V0U2VjcmV0IH0gZnJvbSBcIi4uLy4uL21pc2MvZ2V0U2VjcmV0XCI7XG5pbXBvcnQgeyBJQXJjaGl2ZXMsIEhvc3RlZENvbmZpZywgQmFja2JsYXplQ29uZmlnLCBSZW1vdGVDb25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBST1VUSU5HX0ZJTEUsIGdldEJ1Y2tldEJhc2VVcmwsIHBhcnNlSG9zdGVkVXJsLCBwYXJzZUJhY2tibGF6ZVVybCwgcGFyc2VSb3V0aW5nRGF0YSB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuaW1wb3J0IHsgQXJjaGl2ZXNSZW1vdGUgfSBmcm9tIFwiLi9BcmNoaXZlc1JlbW90ZVwiO1xuaW1wb3J0IHsgQXJjaGl2ZXNVcmwgfSBmcm9tIFwiLi9BcmNoaXZlc1VybFwiO1xuaW1wb3J0IHsgQXJjaGl2ZXNCYWNrYmxhemUgfSBmcm9tIFwiLi4vYmFja2JsYXplXCI7XG5pbXBvcnQgeyBnZXRTdG9yYWdlU2VydmVyQ29uZmlnT3B0aW9uYWwsIGdldExvY2FsQXJjaGl2ZXMgfSBmcm9tIFwiLi9zdG9yYWdlU2VydmVyU3RhdGVcIjtcblxuZXhwb3J0IGNvbnN0IFJFVFJZX1NUQVJUX0RFTEFZID0gMiAqIDEwMDA7XG5leHBvcnQgY29uc3QgUkVUUllfTUFYX0RFTEFZID0gNSAqIDYwICogMTAwMDtcbmV4cG9ydCBjb25zdCBSRVRSWV9HUk9XVEggPSAxLjU7XG5jb25zdCBBQ0NFU1NfUkVDSEVDS19JTlRFUlZBTCA9IDYwICogMTAwMDtcbmNvbnN0IFNPVVJDRV9GQUlMVVJFX0NPT0xET1dOID0gMzAgKiA2MCAqIDEwMDA7XG4vLyBBZGRlZCB0byBhIGRpc2Nvbm5lY3RlZCBzb3VyY2UncyBsYXRlbmN5OiBpdCBzdGlsbCBzb3J0cyBhbmQgY2FuIHN0aWxsIGJlIHBpY2tlZCwgaXQganVzdCBsYW5kcyBhZnRlciBldmVyeSBjb25uZWN0ZWQgc291cmNlXG5jb25zdCBESVNDT05ORUNURURfTEFURU5DWV9QRU5BTFRZID0gMTAgKiAxMDAwO1xuY29uc3QgUElOR19JTlRFUlZBTCA9IDYwICogMTAwMDtcbmNvbnN0IFBJTkdfSElTVE9SWSA9IDEwO1xuXG5hc3luYyBmdW5jdGlvbiBoYXNCYWNrYmxhemVDcmVkcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWlzTm9kZSgpKSByZXR1cm4gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZ2V0U2VjcmV0KFwiYmFja2JsYXplLmpzb24uYXBwbGljYXRpb25LZXlJZFwiKTtcbiAgICAgICAgYXdhaXQgZ2V0U2VjcmV0KFwiYmFja2JsYXplLmpzb24uYXBwbGljYXRpb25LZXlcIik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vLyBPbmUgc291cmNlIG9mIGEgUmVtb3RlQ29uZmlnLCBhcyBhIHVzYWJsZSBJQXJjaGl2ZXMuIFJlYWRzIGZhbGwgYmFjayB0byB0aGUgcHVibGljLVVSTCBmb3JtIHdoZW4gd2UgZG9uJ3QgaGF2ZSBBUEkgYWNjZXNzOyB3cml0ZXMgYWx3YXlzIGF0dGVtcHQgdGhlIEFQSSAoc28gYWNjZXNzIGdyYW50ZWQgbGF0ZXIgaXMgcGlja2VkIHVwIG9uIHRoZSBuZXh0IHdyaXRlKS4gV2hlbiBhIGNhbGwgZmFpbHMgd2hpbGUgdGhlIFdlYlNvY2tldCBpcyBkb3duLCBub3RlRmFpbHVyZSBzdGFydHMgYSBiYWNrZ3JvdW5kIHJlY29ubmVjdCBsb29wIHdpdGggYSByYW1waW5nIGRlbGF5IC0gaXQgbmV2ZXIgYmxvY2tzIGNhbGxlcnMsIGl0IGp1c3Qga2VlcHMgdHJ5aW5nIHNvIHRoZSBjb25uZWN0aW9uIGV2ZW50dWFsbHkgY29tZXMgYmFjay4gU291cmNlcyB3aXRob3V0IGEgV2ViU29ja2V0IChiYWNrYmxhemUsIFVSTC1mb3JtLCBvdXIgb3duIGxvY2FsIHNlcnZlcikgcmVwb3J0IGFsd2F5cy1jb25uZWN0ZWQ6IHRoZXkncmUgbGFzdC1yZXNvcnQgc291cmNlcyB3aGVyZSB0aHJvd2luZyBpcyBmaW5lLlxuZXhwb3J0IGNsYXNzIFNvdXJjZVdyYXBwZXIge1xuICAgIHB1YmxpYyBhcGk/OiBJQXJjaGl2ZXM7XG4gICAgcHVibGljIHVybD86IEFyY2hpdmVzVXJsO1xuICAgIHB1YmxpYyB3cml0ZUJsb2NrZWQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZW1vdGU/OiBBcmNoaXZlc1JlbW90ZTtcbiAgICBwcml2YXRlIGRpc3Bvc2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWNvbm5lY3RSdW5uaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBhY2Nlc3NDYWNoZT86IHsgaGFzQWNjZXNzOiBib29sZWFuOyB0aW1lOiBudW1iZXIgfTtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjb25maWc6IEhvc3RlZENvbmZpZyB8IEJhY2tibGF6ZUNvbmZpZyxcbiAgICAgICAgLy8gZmFsc2UgZm9yIHNob3J0LWxpdmVkIHByb2JlIGluc3RhbmNlcywgd2hpY2ggbXVzdCBuZXZlciBsZWF2ZSBhIHJldHJ5IGxvb3AgYmVoaW5kXG4gICAgICAgIHByaXZhdGUgYmFja2dyb3VuZDogYm9vbGVhbixcbiAgICApIHsgfVxuXG4gICAgLyoqIENvbmZpZyB1cGRhdGVzIHJvdXRpbmVseSBqdXN0IG1vdmUgYSBzb3VyY2UncyB2YWxpZCB3aW5kb3cgKHRoZSBsYXN0IHdpbmRvdyBleHRlbmRzIGZvcmV2ZXIsIHRoZW4gZ2V0cyByZWR1Y2VkIHdoZW4gYSBuZXcgZW50cnkgaXMgYXBwZW5kZWQpLiBUaGUgd3JhcHBlciBzdXJ2aXZlcyB0aGF0OiBvbmx5IHRoZSB3aW5kb3cgY2hhbmdlcywga2VlcGluZyB0aGUgY29ubmVjdGlvbiwgcGluZ3MsIGFuZCBsYXRlbmN5IGhpc3RvcnkuICovXG4gICAgcHVibGljIHVwZGF0ZVZhbGlkV2luZG93KHZhbGlkV2luZG93OiBbbnVtYmVyLCBudW1iZXJdKTogdm9pZCB7XG4gICAgICAgIGxldCBvbGQgPSB0aGlzLmNvbmZpZy52YWxpZFdpbmRvdztcbiAgICAgICAgaWYgKG9sZFswXSA9PT0gdmFsaWRXaW5kb3dbMF0gJiYgb2xkWzFdID09PSB2YWxpZFdpbmRvd1sxXSkgcmV0dXJuO1xuICAgICAgICBjb25zb2xlLmxvZyhgVmFsaWQgd2luZG93IGNoYW5nZWQgZm9yICR7dGhpcy5nZXREZWJ1Z05hbWUoKX06IFske29sZC5qb2luKFwiLCBcIil9XSAtPiBbJHt2YWxpZFdpbmRvdy5qb2luKFwiLCBcIil9XWApO1xuICAgICAgICB0aGlzLmNvbmZpZy52YWxpZFdpbmRvdyA9IHZhbGlkV2luZG93O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgY3JlYXRlKGNvbmZpZzogSG9zdGVkQ29uZmlnIHwgQmFja2JsYXplQ29uZmlnLCBvcHRpb25zPzogeyBiYWNrZ3JvdW5kPzogYm9vbGVhbjsgcmVhZE9ubHk/OiBib29sZWFuIH0pOiBQcm9taXNlPFNvdXJjZVdyYXBwZXI+IHtcbiAgICAgICAgbGV0IHdyYXBwZXIgPSBuZXcgU291cmNlV3JhcHBlcihjb25maWcsIG9wdGlvbnM/LmJhY2tncm91bmQgIT09IGZhbHNlKTtcbiAgICAgICAgLy8gQSBwdWJsaWMgYnVja2V0IHNlcnZlcyBldmVyeXRoaW5nIHdlIGNhbiByZWFkIG92ZXIgcGxhaW4gSFRUUFMgR0VUcywgc28gdGhlcmUgaXMgbm8gcmVhc29uIHRvIG9wZW4gYW4gQVBJIGNvbm5lY3Rpb24gKHdoaWNoIGNvc3RzIGEgV2ViU29ja2V0LCBhbmQgYW4gYWNjZXNzIGdyYW50IHdlIGxpa2VseSBkb24ndCBoYXZlKSBqdXN0IHRvIHJlYWQgaXRcbiAgICAgICAgaWYgKG9wdGlvbnM/LnJlYWRPbmx5ICYmIGNvbmZpZy5wdWJsaWMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB3cmFwcGVyLnVybCA9IG5ldyBBcmNoaXZlc1VybChnZXRCdWNrZXRCYXNlVXJsKGNvbmZpZy51cmwpKTtcbiAgICAgICAgICAgIHdyYXBwZXIud3JpdGVCbG9ja2VkID0gYCR7Y29uZmlnLnVybH0gaXMgYmVpbmcgcmVhZCBpbiByZWFkLW9ubHkgbW9kZSAocHVibGljIGJ1Y2tldCwgYW5kIHdlIGFyZSBub3QgaW4gbm9kZSksIHNvIGl0IGlzIGRvd25sb2FkZWQgb3ZlciBwbGFpbiBVUkxzIGFuZCBjYW5ub3QgYmUgd3JpdHRlbi4gUGFzcyBkaXJlY3RDb25uZWN0IHRvIGNyZWF0ZUFyY2hpdmVzIHRvIHVzZSB0aGUgQVBJIGluc3RlYWQuYDtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gXCJiYWNrYmxhemVcIikge1xuICAgICAgICAgICAgaWYgKGF3YWl0IGhhc0JhY2tibGF6ZUNyZWRzKCkpIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLmFwaSA9IG5ldyBBcmNoaXZlc0JhY2tibGF6ZSh7IGJ1Y2tldE5hbWU6IHBhcnNlQmFja2JsYXplVXJsKGNvbmZpZy51cmwpLmJ1Y2tldE5hbWUsIHB1YmxpYzogY29uZmlnLnB1YmxpYywgaW1tdXRhYmxlOiBjb25maWcuaW1tdXRhYmxlLCBhbGxvd2VkT3JpZ2luczogY29uZmlnLmFsbG93ZWRPcmlnaW5zIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc05vZGUoKSkge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIud3JpdGVCbG9ja2VkID0gYE5vIGJhY2tibGF6ZSBjcmVkZW50aWFscyBmb3IgJHtjb25maWcudXJsfS4gUHJvdmlkZSBiYWNrYmxhemUuanNvbi5hcHBsaWNhdGlvbktleUlkIGFuZCBiYWNrYmxhemUuanNvbi5hcHBsaWNhdGlvbktleSB2aWEgZ2V0U2VjcmV0IHRvIGVuYWJsZSBBUEkgYWNjZXNzLmA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIud3JpdGVCbG9ja2VkID0gYEJyb3dzZXJzIGNhbm5vdCB3cml0ZSB0byBiYWNrYmxhemUgKGJ1Y2tldCAke2NvbmZpZy51cmx9KWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXdyYXBwZXIuYXBpICYmIGNvbmZpZy5wdWJsaWMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgd3JhcHBlci51cmwgPSBuZXcgQXJjaGl2ZXNVcmwoZ2V0QnVja2V0QmFzZVVybChjb25maWcudXJsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFyc2VkID0gcGFyc2VIb3N0ZWRVcmwoY29uZmlnLnVybCk7XG4gICAgICAgIGxldCBzZXJ2ZXIgPSBpc05vZGUoKSAmJiBnZXRTdG9yYWdlU2VydmVyQ29uZmlnT3B0aW9uYWwoKSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChzZXJ2ZXIgJiYgcGFyc2VkLmFkZHJlc3MgPT09IHNlcnZlci5kb21haW4gJiYgcGFyc2VkLnBvcnQgPT09IHNlcnZlci5wb3J0KSB7XG4gICAgICAgICAgICAvLyBBIGJ1Y2tldCBob3N0ZWQgYnkgb3VyIG93biBwcm9jZXNzIC0gdXNlIGl0IGRpcmVjdGx5IGluc3RlYWQgb2YgY2FsbGluZyBvdXJzZWx2ZXNcbiAgICAgICAgICAgIHdyYXBwZXIuYXBpID0gZ2V0TG9jYWxBcmNoaXZlcyhwYXJzZWQuYWNjb3VudCwgcGFyc2VkLmJ1Y2tldE5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgICAgIH1cbiAgICAgICAgd3JhcHBlci5yZW1vdGUgPSBuZXcgQXJjaGl2ZXNSZW1vdGUoeyB1cmw6IGNvbmZpZy51cmwsIHdhaXRGb3JBY2Nlc3M6IGZhbHNlIH0pO1xuICAgICAgICB3cmFwcGVyLmFwaSA9IHdyYXBwZXIucmVtb3RlO1xuICAgICAgICBpZiAoY29uZmlnLnB1YmxpYyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHdyYXBwZXIudXJsID0gbmV3IEFyY2hpdmVzVXJsKGdldEJ1Y2tldEJhc2VVcmwoY29uZmlnLnVybCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWJ1Z05hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gVGhlIHNhbWUgVVJMIGNhbiBhcHBlYXIgYXMgbXVsdGlwbGUgc291cmNlcyAoZGlmZmVyZW50IHJvdXRlcyAvIHZhbGlkIHdpbmRvd3MpLCBzbyB0aGUgZGlzdGluZ3Vpc2hpbmcgc2xpY2UgaXMgcGFydCBvZiB0aGUgbmFtZVxuICAgICAgICBsZXQgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGxldCByb3V0ZSA9IHRoaXMuY29uZmlnLnJvdXRlO1xuICAgICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goYHJvdXRlIFske3JvdXRlWzBdfSwgJHtyb3V0ZVsxXX0pYCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IFtzdGFydCwgZW5kXSA9IHRoaXMuY29uZmlnLnZhbGlkV2luZG93O1xuICAgICAgICBpZiAoc3RhcnQgIT09IDAgfHwgZW5kICE9PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICAgICAgbGV0IHN0YXJ0VGV4dCA9IHN0YXJ0ID09PSAwICYmIFwiMFwiIHx8IG5ldyBEYXRlKHN0YXJ0KS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgbGV0IGVuZFRleHQgPSBlbmQgPT09IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICYmIFwiZm9yZXZlclwiIHx8IG5ldyBEYXRlKGVuZCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goYHZhbGlkV2luZG93IFske3N0YXJ0VGV4dH0sICR7ZW5kVGV4dH1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBzb3VyY2UgJHt0aGlzLmNvbmZpZy51cmx9JHtwYXJ0cy5sZW5ndGggJiYgYCAoJHtwYXJ0cy5qb2luKFwiLCBcIil9KWAgfHwgXCJcIn1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlbW90ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbW90ZS5pc0Nvbm5lY3RlZCgpO1xuICAgIH1cblxuICAgIC8qKiBBIHNvdXJjZSB3aG9zZSB3aW5kb3cgaGFzIHBhc3NlZCBpcyBuZXZlciByZWFkIGZyb20gb3Igd3JpdHRlbiB0byAoc2VlIHRoZSB3aW5kb3cgY2hlY2tzIGluIEFyY2hpdmVzQ2hhaW4pLCBhbmQgYW4gaW50ZXJtZWRpYXRlIG9ubHkgZXhpc3RzIGZvciB0aGUgbWludXRlcyBvZiBhIGRlcGxveSBzd2l0Y2hvdmVyIC0gb24gZWl0aGVyLCBiZWluZyB1bnJlYWNoYWJsZSBpcyBleHBlY3RlZCwgbm90IGEgcHJvYmxlbSB0byByZXBvcnQuICovXG4gICAgcHJpdmF0ZSBpc0Nvbm5lY3Rpb25Qcm9ibGVtV29ydGhSZXBvcnRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pbnRlcm1lZGlhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnZhbGlkV2luZG93WzFdID4gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvb2xkb3duVW50aWwgPSAwO1xuICAgIC8qKiBBIHNvdXJjZSB0aGF0IGZhaWxlZCB3aGlsZSBkaXNjb25uZWN0ZWQgaXMgc2tpcHBlZCBieSBjYWxsZXJzIGZvciBTT1VSQ0VfRkFJTFVSRV9DT09MRE9XTiAtIGJ1dCBvbmx5IHdoaWxlIHNvbWUgb3RoZXIgc291cmNlIGNhbiBzZXJ2ZSB0aGUgcmVxdWVzdC4gV2hlbiBub3RoaW5nIGVsc2UgaXMgdXNhYmxlLCBjYWxsZXJzIGlnbm9yZSB0aGlzIGFuZCB0cnkgaXQgYW55d2F5LCBzbyBhIHRvdGFsIG91dGFnZSBzdGlsbCByZXRyaWVzIGV2ZXJ5IHRpbWUuICovXG4gICAgcHVibGljIGlzT25Db29sZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIERhdGUubm93KCkgPCB0aGlzLmNvb2xkb3duVW50aWw7XG4gICAgfVxuXG4gICAgLyoqIENhbGwgYWZ0ZXIgYSByZXF1ZXN0IGZhaWxlZCB3aGlsZSBpc0Nvbm5lY3RlZCgpIHdhcyBmYWxzZTogcHV0cyB0aGUgc291cmNlIG9uIGNvb2xkb3duIGFuZCBzdGFydHMgKGlmIG5vdCBhbHJlYWR5IHJ1bm5pbmcpIHRoZSBiYWNrZ3JvdW5kIHJlY29ubmVjdCBsb29wLiBOZXZlciBibG9ja3MgLSB0aGUgZmFpbGVkIHJlcXVlc3Qgc3RpbGwgdGhyb3dzLiAqL1xuICAgIHB1YmxpYyBub3RlRmFpbHVyZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcG9zZWQgfHwgdGhpcy5pc0Nvbm5lY3RlZCgpKSByZXR1cm47XG4gICAgICAgIGxldCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBpZiAobm93ID49IHRoaXMuY29vbGRvd25VbnRpbCAmJiB0aGlzLmlzQ29ubmVjdGlvblByb2JsZW1Xb3J0aFJlcG9ydGluZygpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgY29ubmVjdCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX07IHNraXBwaW5nIGl0IHVudGlsICR7bmV3IERhdGUobm93ICsgU09VUkNFX0ZBSUxVUkVfQ09PTERPV04pLnRvSVNPU3RyaW5nKCl9IChub3cgJHtuZXcgRGF0ZShub3cpLnRvSVNPU3RyaW5nKCl9KSB1bmxlc3Mgbm8gb3RoZXIgc291cmNlIGNhbiBzZXJ2ZSB0aGUgcmVxdWVzdGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29vbGRvd25VbnRpbCA9IG5vdyArIFNPVVJDRV9GQUlMVVJFX0NPT0xET1dOO1xuICAgICAgICBpZiAoIXRoaXMuYmFja2dyb3VuZCB8fCB0aGlzLnJlY29ubmVjdFJ1bm5pbmcpIHJldHVybjtcbiAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgdm9pZCB0aGlzLnJlY29ubmVjdExvb3AoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlY29ubmVjdExvb3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCByZXRyeURlbGF5ID0gUkVUUllfU1RBUlRfREVMQVk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheShyZXRyeURlbGF5KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDb25uZWN0ZWQoKSkgYnJlYWs7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIEFueSBjYWxsIHJlLWVzdGFibGlzaGVzIHRoZSBXZWJTb2NrZXQ7IHRoZSByZXN1bHQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW90ZT8uZ2V0SW5mbyhST1VUSU5HX0ZJTEUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIEV2ZW4gYSBmYWlsaW5nIGNhbGwgKGUuZy4gYWNjZXNzIGRlbmllZCkgcHJvdmVzIHRoZSBjb25uZWN0aW9uIGlzIGJhY2tcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCgpKSBicmVhaztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Nvbm5lY3Rpb25Qcm9ibGVtV29ydGhSZXBvcnRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgY29ubmVjdCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX0sIHJldHJ5aW5nIGluICR7TWF0aC5yb3VuZChyZXRyeURlbGF5IC8gMTAwMCl9cy4gJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXRyeURlbGF5ID0gTWF0aC5taW4oUkVUUllfTUFYX0RFTEFZLCByZXRyeURlbGF5ICogUkVUUllfR1JPV1RIKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlY29ubmVjdFJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb29sZG93blVudGlsID0gMDtcbiAgICAgICAgY29uc29sZS5sb2coYFJlY29ubmVjdGVkIHRvIHN0b3JhZ2UgJHt0aGlzLmdldERlYnVnTmFtZSgpfSwgY2xlYXJpbmcgaXRzIGNvb2xkb3duYCk7XG4gICAgfVxuXG4gICAgLy8gRm9yIGhvc3RlZCBzb3VyY2VzOiBjYWNoZWQgYWNjZXNzIGNoZWNrLCBzbyByZWFkcyBrbm93IHdoZXRoZXIgdG8gdXNlIHRoZSBBUEkgb3IgdGhlIHB1YmxpYyBVUkwgZm9ybS4gQWNjZXNzLCBvbmNlIHNlZW4sIGlzIGFzc3VtZWQgdG8gc3RpY2s7IG5vLWFjY2VzcyBpcyByZS1jaGVja2VkIHBlcmlvZGljYWxseSAodGhlIGNoZWNrIGFsc28gcmVnaXN0ZXJzIG91ciBhY2Nlc3MgcmVxdWVzdCBzZXJ2ZXItc2lkZSwgd2hpY2ggbG9ncyB0aGUgZ3JhbnQgbGluaykuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja0FjY2VzcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IHJlbW90ZSA9IHRoaXMucmVtb3RlO1xuICAgICAgICBpZiAoIXJlbW90ZSkgcmV0dXJuICEhdGhpcy5hcGk7XG4gICAgICAgIGxldCBjYWNoZWQgPSB0aGlzLmFjY2Vzc0NhY2hlO1xuICAgICAgICBpZiAoY2FjaGVkICYmIChjYWNoZWQuaGFzQWNjZXNzIHx8IERhdGUubm93KCkgLSBjYWNoZWQudGltZSA8IEFDQ0VTU19SRUNIRUNLX0lOVEVSVkFMKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZC5oYXNBY2Nlc3M7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHdhaXRpbmcgPSBhd2FpdCByZW1vdGUud2FpdGluZ0ZvckFjY2VzcygpO1xuICAgICAgICB0aGlzLmFjY2Vzc0NhY2hlID0geyBoYXNBY2Nlc3M6ICF3YWl0aW5nLCB0aW1lOiBEYXRlLm5vdygpIH07XG4gICAgICAgIGlmICh3YWl0aW5nKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYE5vIGFjY2VzcyB0byBzdG9yYWdlIGFjY291bnQgZm9yICR7dGhpcy5jb25maWcudXJsfSAob3VyIG1hY2hpbmUgJHt3YWl0aW5nLm1hY2hpbmVJZH0sIGlwICR7d2FpdGluZy5pcH0pLiBSZWFkaW5nIHZpYSB0aGUgcHVibGljIFVSTCBmb3JtIHdoZXJlIHBvc3NpYmxlLiBHcmFudCBhY2Nlc3MgYXQgJHt3YWl0aW5nLmxpbmt9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICF3YWl0aW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWFkPFQ+KHJ1bjogKGFyY2hpdmVzOiBJQXJjaGl2ZXMpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMuYXBpICYmIGF3YWl0IHRoaXMuY2hlY2tBY2Nlc3MoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJ1bih0aGlzLmFwaSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXJsKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnVuKHRoaXMudXJsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hcGkpIHtcbiAgICAgICAgICAgIC8vIE5vIHB1YmxpYyBVUkwgZm9ybSAtIGxldCB0aGUgQVBJIGNhbGwgdGhyb3cgaXRzIG93biBlcnJvciAod2hpY2ggaW5jbHVkZXMgdGhlIGFjY2VzcyBpbnN0cnVjdGlvbnMgZm9yIGhvc3RlZCBzb3VyY2VzKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJ1bih0aGlzLmFwaSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2UgJHt0aGlzLmNvbmZpZy51cmx9IGhhcyBubyBBUEkgYWNjZXNzIGFuZCBubyBwdWJsaWMgVVJMIGZvcm0gKHB1YmxpYzogZmFsc2UpYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWRSb3V0aW5nQ29uZmlnKCk6IFByb21pc2U8UmVtb3RlQ29uZmlnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5yZWFkKGFyY2hpdmVzID0+IGFyY2hpdmVzLmdldChST1VUSU5HX0ZJTEUpKTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgcGFyc2VSb3V0aW5nRGF0YShkYXRhKSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGhhc1dyaXRlQWNjZXNzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAodGhpcy53cml0ZUJsb2NrZWQgfHwgIXRoaXMuYXBpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFwaS5oYXNXcml0ZUFjY2VzcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGluZ3M6IG51bWJlcltdID0gW107XG4gICAgcHJpdmF0ZSBwaW5nVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIGxvZ2dlZENvbm5lY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFN0YXJ0cyBtZWFzdXJpbmcgdGhpcyBzb3VyY2UncyBsYXRlbmN5LCB3aGljaCBkZWNpZGVzIHdoaWNoIGhvc3RzIHJlYWRzIGFuZCB2YXJpYWJsZS1zaGFyZCB3cml0ZXMgcHJlZmVyLiBIb3N0ZWQgcmVtb3RlcyBwaW5nIG92ZXIgdGhlaXIgQVBJIGNvbm5lY3Rpb247IFVSTC1vbmx5IHNvdXJjZXMgKHJlYWQtb25seSBtb2RlLCBiYWNrYmxhemUgd2l0aG91dCBjcmVkZW50aWFscykgcHJvYmUgb3ZlciBwbGFpbiBIVFRQUyBpbnN0ZWFkIC0gdGhlIGNsaWVudCBORUVEUyB0aGVpciBsYXRlbmN5IHRvbywgb3IgaXQgY2Fubm90IHJhbmsgdGhlIGhvc3RzIGl0IHJlYWRzIGZyb20uIE91ciBvd24gbG9jYWwgc2VydmVyIGNvdW50cyBhcyAwOyBvbmx5IHNvdXJjZXMgd2l0aCBuZWl0aGVyIGZvcm0gc3RheSBJbmZpbml0eS4gKi9cbiAgICBwdWJsaWMgc3RhcnRQaW5naW5nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5waW5nVGltZXIgfHwgdGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICAvLyBBIHNvdXJjZSB3aG9zZSB3aW5kb3cgaGFzIHBhc3NlZCBuZXZlciByZWNlaXZlcyByZWFkcyBvciB3cml0ZXMgLSBtZWFzdXJpbmcgaXQgaXMgcG9pbnRsZXNzIHRyYWZmaWNcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnZhbGlkV2luZG93WzFdIDw9IERhdGUubm93KCkpIHJldHVybjtcbiAgICAgICAgY29uc3QgcmVtb3RlID0gdGhpcy5yZW1vdGU7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMudXJsO1xuICAgICAgICBsZXQgcHJvYmU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gICAgICAgIGlmIChyZW1vdGUpIHtcbiAgICAgICAgICAgIHByb2JlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHJlbW90ZS5waW5nKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKHVybCkge1xuICAgICAgICAgICAgLy8gQSAxLWJ5dGUgcmFuZ2VkIHJlYWQgb2YgdGhlIHJvdXRpbmcgZmlsZSB0cmFuc2ZlcnMgZXNzZW50aWFsbHkgbm90aGluZywgYW5kIHVubGlrZSBhbiBleHBsaWNpdCBPUFRJT05TIHJlcXVlc3QgaXQgbmVlZHMgbm8gQ09SUyBwcmVmbGlnaHQgKGJhY2tibGF6ZSdzIENPUlMgcnVsZXMgb25seSBhbGxvdyBkb3dubG9hZCBvcGVyYXRpb25zKSAtIHNvIGl0IHdvcmtzIGZyb20gdGhlIGJyb3dzZXIsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgVVJMLW9ubHkgbW9kZSBydW5zXG4gICAgICAgICAgICBwcm9iZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB1cmwuZ2V0SW5mbyhST1VUSU5HX0ZJTEUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWVhc3VyZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHByb2JlKCk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBBIGZhaWxlZCBwaW5nIGlzIGFsc28gb3VyIGVhcmxpZXN0IGRvd24tZGV0ZWN0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RlRmFpbHVyZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5sb2dnZWRDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlZENvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvbm5lY3RlZCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5waW5ncy5wdXNoKERhdGUubm93KCkgLSBzdGFydCk7XG4gICAgICAgICAgICBpZiAodGhpcy5waW5ncy5sZW5ndGggPiBQSU5HX0hJU1RPUlkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbmdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZvaWQgbWVhc3VyZSgpO1xuICAgICAgICB0aGlzLnBpbmdUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgbWVhc3VyZSgpO1xuICAgICAgICB9LCBQSU5HX0lOVEVSVkFMKTtcbiAgICAgICAgKHRoaXMucGluZ1RpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICAvKiogU2VlZHMgdGhlIGxhdGVuY3kgZXN0aW1hdGUgYmVmb3JlIHRoZSBmaXJzdCBwaW5nIGxhbmRzIChlLmcuIGZyb20gdGhlIGluaXRpYWwgcm91dGluZyBmZXRjaCksIHNvIHZhcmlhYmxlLXNoYXJkIHBpY2tpbmcgaGFzIHNvbWV0aGluZyBpbW1lZGlhdGVseS4gUmVhbCBwaW5ncyB0YWtlIG92ZXIgZnJvbSB0aGUgZmlyc3QgbWVhc3VyZW1lbnQgb24uICovXG4gICAgcHVibGljIHNlZWRMYXRlbmN5KG1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGluZ3MubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIHRoaXMucGluZ3MucHVzaChtcyk7XG4gICAgfVxuXG4gICAgLyoqIE1lZGlhbiBvZiB0aGUgcmVjZW50IHBpbmdzIChBUEkgb3IgVVJMLWZvcm0sIHdoaWNoZXZlciB0aGlzIHNvdXJjZSBtZWFzdXJlcyksIHBsdXMgRElTQ09OTkVDVEVEX0xBVEVOQ1lfUEVOQUxUWSB3aGlsZSB0aGUgc291cmNlIGlzIGRpc2Nvbm5lY3RlZCAtIHNvIGEgZG93biBzb3VyY2Ugc3RpbGwgc29ydHMgYW5kIGNhbiBzdGlsbCBiZSBwaWNrZWQsIGp1c3QgYWZ0ZXIgZXZlcnkgY29ubmVjdGVkIG9uZS4gU291cmNlcyB3aXRoIG5vIG1lYXN1cmVtZW50cyB5ZXQgc29ydCBsYXN0IChJbmZpbml0eSksIGV4Y2VwdCBvdXIgb3duIGluLXByb2Nlc3Mgc2VydmVyLCB3aGljaCBpcyB0aGUgYmVzdCBwb3NzaWJsZSB0YXJnZXQgKDApLiAqL1xuICAgIHB1YmxpYyBnZXRMYXRlbmN5KCk6IG51bWJlciB7XG4gICAgICAgIC8vIE91ciBvd24gaW4tcHJvY2VzcyBzZXJ2ZXI6IGhvc3RlZCAodHlwZSByZW1vdGUpLCBhcGkgcHJlc2VudCwgYnV0IG5vIHJlbW90ZSBjb25uZWN0aW9uIC0gaXQgSVMgdXNcbiAgICAgICAgaWYgKCF0aGlzLnJlbW90ZSAmJiB0aGlzLmNvbmZpZy50eXBlID09PSBcInJlbW90ZVwiICYmIHRoaXMuYXBpKSByZXR1cm4gMDtcbiAgICAgICAgaWYgKCF0aGlzLnBpbmdzLmxlbmd0aCkgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICBsZXQgc29ydGVkID0gWy4uLnRoaXMucGluZ3NdO1xuICAgICAgICBzb3J0KHNvcnRlZCwgeCA9PiB4KTtcbiAgICAgICAgbGV0IG1lZGlhbiA9IHNvcnRlZFtNYXRoLmZsb29yKHNvcnRlZC5sZW5ndGggLyAyKV07XG4gICAgICAgIGlmICghdGhpcy5pc0Nvbm5lY3RlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVkaWFuICsgRElTQ09OTkVDVEVEX0xBVEVOQ1lfUEVOQUxUWTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVkaWFuO1xuICAgIH1cblxuICAgIC8qKiBXcml0ZXMgYWx3YXlzIGdvIHRocm91Z2ggdGhlIEFQSSwgc28gYSBwZXJtaXNzaW9uIGVycm9yIHRocm93cyB0byB0aGUgY2FsbGVyIG9uIGV2ZXJ5IHdyaXRlIChhbmQgYWNjZXNzIGdyYW50ZWQgaW4gdGhlIG1lYW50aW1lIGlzIHBpY2tlZCB1cCBhdXRvbWF0aWNhbGx5KS4gKi9cbiAgICBwdWJsaWMgYXN5bmMgd3JpdGU8VD4ocnVuOiAoYXJjaGl2ZXM6IElBcmNoaXZlcykgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgICAgICBpZiAodGhpcy53cml0ZUJsb2NrZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLndyaXRlQmxvY2tlZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFwaSA9IHRoaXMuYXBpO1xuICAgICAgICBpZiAoIWFwaSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2UgJHt0aGlzLmNvbmZpZy51cmx9IGhhcyBubyBBUEkgYWNjZXNzLCBzbyBpdCBjYW5ub3QgYWNjZXB0IHdyaXRlc2ApO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBydW4oYXBpKTtcbiAgICAgICAgdGhpcy5hY2Nlc3NDYWNoZSA9IHsgaGFzQWNjZXNzOiB0cnVlLCB0aW1lOiBEYXRlLm5vdygpIH07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5waW5nVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5waW5nVGltZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
296
- /* _JS_SOURCE_HASH = "66ea768bc9c93baa49e02566eada6f5ecacd7293e6ce3c556cbcfecee0a56dd6"; */
296
+ /* _JS_SOURCE_HASH = "b87d60bcd1e3e6f10bbb02125283b234f319edd3d968daaf46f20fad1b5c0983"; */
@@ -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
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -76,4 +76,4 @@ class SourcesList {
76
76
  }
77
77
  exports.SourcesList = SourcesList;
78
78
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc0xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzb3VyY2VzTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBb0I7QUFFcEIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUVqQyw0bEJBQTRsQjtBQUM1bEIsTUFBYSxXQUFXO0lBQ3BCLFlBQW9CLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDNUIsU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUNwQixZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFMQSxDQUFDO0lBT2pDLEtBQUssQ0FBQyxJQUFJO1FBQ2QsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQztZQUNELE9BQU8sR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxJQUFLLENBQXVCLENBQUMsSUFBSSxLQUFLLFFBQVE7Z0JBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hC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UUFDckQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKO0FBL0RELGtDQStEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnNcIjtcblxuY29uc3QgUkVMT0FEX1RIUk9UVExFID0gNSAqIDEwMDA7XG5cbi8vIFRoZSBwZXJzaXN0ZW50IGlkZW50aXR5IGJlaGluZCBJbmRleEVudHJ5LnNvdXJjZXNMaXN0SW5kZXg6IGFuIGFwcGVuZC1vbmx5IGZpbGUgb2Ygc291cmNlIFVSTHMgLyBkaXNrIGZvbGRlciBwYXRocywgb25lIHBlciBsaW5lLCB3aGVyZSBhIFVSTCdzIDAtYmFzZWQgbGluZSBudW1iZXIgSVMgdGhlIHNvdXJjZXNMaXN0SW5kZXggdGhlIGluZGV4IHBlcnNpc3RzLiBCZWNhdXNlIHRoZSBmaWxlIGlzIG9ubHkgZXZlciBhcHBlbmRlZCB0bywgYSBsaW5lIG51bWJlciBtZWFucyB0aGUgc2FtZSBVUkwgZm9yZXZlciAtIGFjcm9zcyByZXN0YXJ0cyBhbmQgYWNyb3NzIHByb2Nlc3NlcyBzaGFyaW5nIHRoZSBmb2xkZXIuIEEgdG9ybiBhcHBlbmQgKGNyYXNoIG1pZC13cml0ZSkgbGVhdmVzIGFuIHVudGVybWluYXRlZCBwYXJ0aWFsIGxpbmU7IHRoZSBuZXh0IHdyaXRlciB0ZXJtaW5hdGVzIGl0IGJlZm9yZSBhcHBlbmRpbmcsIHNvIHRoZSBnYXJiYWdlIGxpbmUgcGVybWFuZW50bHkgb2NjdXBpZXMgaXRzIGluZGV4IChoYXJtbGVzcyAtIGl0IG5ldmVyIG1hdGNoZXMgYSByZWFsIFVSTCkgYW5kIGV2ZXJ5IHJlYWRlciBhZ3JlZXMgb24gdGhlIG51bWJlcmluZy5cbmV4cG9ydCBjbGFzcyBTb3VyY2VzTGlzdCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlUGF0aDogc3RyaW5nKSB7IH1cbiAgICBwcml2YXRlIHVybHM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBpbmRleGVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICBwcml2YXRlIGVuZHNDbGVhbiA9IHRydWU7XG4gICAgcHJpdmF0ZSBsYXN0UmVsb2FkID0gMDtcbiAgICBwcml2YXRlIGFwcGVuZFF1ZXVlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCBjb250ZW50ID0gXCJcIjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZSh0aGlzLmZpbGVQYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICgoZSBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZSAhPT0gXCJFTk9FTlRcIikgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVuZHNDbGVhbiA9ICFjb250ZW50IHx8IGNvbnRlbnQuZW5kc1dpdGgoXCJcXG5cIik7XG4gICAgICAgIGxldCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG4gICAgICAgIGlmIChsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9PT0gXCJcIikge1xuICAgICAgICAgICAgbGluZXMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cmxzID0gbGluZXM7XG4gICAgICAgIHRoaXMuaW5kZXhlcy5jbGVhcigpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaW5kZXhlcy5oYXMobGluZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleGVzLnNldChsaW5lc1tpXSwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VXJsKHNvdXJjZXNMaXN0SW5kZXg6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnVybHNbc291cmNlc0xpc3RJbmRleF07XG4gICAgfVxuXG4gICAgLyoqIEZvciBhIHNvdXJjZXNMaXN0SW5kZXggYmV5b25kIG91ciBpbi1tZW1vcnkgbGlzdCAoYW5vdGhlciBwcm9jZXNzIGFwcGVuZGVkIHNpbmNlIHdlIHJlYWQpOiByZS1yZWFkcyB0aGUgZmlsZSwgYXQgbW9zdCBvbmNlIHBlciBSRUxPQURfVEhST1RUTEUuIFJldHVybmluZyB1bmRlZmluZWQgY2FuIHRoZXJlZm9yZSBtZWFuIFwidGhyb3R0bGVkXCIsIG5vdCBcImRlZmluaXRlbHkgYWJzZW50XCIgLSBuZXZlciB0cmVhdCBpdCBhcyBwcm9vZiB0aGUgaW5kZXggaXMgYm9ndXMuICovXG4gICAgcHVibGljIGFzeW5jIGdldFVybFJlbG9hZGluZyhzb3VyY2VzTGlzdEluZGV4OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc291cmNlc0xpc3RJbmRleCA8IHRoaXMudXJscy5sZW5ndGgpIHJldHVybiB0aGlzLnVybHNbc291cmNlc0xpc3RJbmRleF07XG4gICAgICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5sYXN0UmVsb2FkIDwgUkVMT0FEX1RIUk9UVExFKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmxhc3RSZWxvYWQgPSBEYXRlLm5vdygpO1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXJsc1tzb3VyY2VzTGlzdEluZGV4XTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHNvdXJjZXNMaXN0SW5kZXggb2YgdGhlIHVybCwgYXBwZW5kaW5nIGl0IGlmIGl0IGlzIG5ldy4gQXBwZW5kcyBhcmUgc2VyaWFsaXplZCB3aXRoaW4gdGhpcyBwcm9jZXNzOyBiZWZvcmUgZWFjaCBhcHBlbmQgdGhlIGZpbGUgaXMgcmUtcmVhZCwgc28gYXBwZW5kcyBieSBvdGhlciBwcm9jZXNzZXMgYXJlIHBpY2tlZCB1cCBpbnN0ZWFkIG9mIGR1cGxpY2F0ZWQuICovXG4gICAgcHVibGljIGVuc3VyZSh1cmw6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGlmICh1cmwuaW5jbHVkZXMoXCJcXG5cIikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIFVSTHMgY2Fubm90IGNvbnRhaW4gbmV3bGluZXMgKHRoZXkgYXJlIHN0b3JlZCBvbmUgcGVyIGxpbmUpOiAke0pTT04uc3RyaW5naWZ5KHVybCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuYXBwZW5kUXVldWUudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgICAgICAgICAgIGxldCBleGlzdGluZyA9IHRoaXMuaW5kZXhlcy5nZXQodXJsKTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICAgICAgICBsZXQgcHJlZml4ID0gdGhpcy5lbmRzQ2xlYW4gJiYgXCJcIiB8fCBcIlxcblwiO1xuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMuYXBwZW5kRmlsZSh0aGlzLmZpbGVQYXRoLCBwcmVmaXggKyB1cmwgKyBcIlxcblwiKTtcbiAgICAgICAgICAgIHRoaXMuZW5kc0NsZWFuID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMudXJscy5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLnVybHMucHVzaCh1cmwpO1xuICAgICAgICAgICAgdGhpcy5pbmRleGVzLnNldCh1cmwsIGluZGV4KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSZWdpc3RlcmVkIG5ldyBzb3VyY2UgJHtKU09OLnN0cmluZ2lmeSh1cmwpfSBhcyBzb3VyY2VzTGlzdEluZGV4ICR7aW5kZXh9IGluICR7dGhpcy5maWxlUGF0aH1gKTtcbiAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXBwZW5kUXVldWUgPSByZXN1bHQudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIl19
79
- /* _JS_SOURCE_HASH = "ebb3f990dd4089981f5916ce1d5fe652666b3503f167e87b8cb566b06dd61326"; */
79
+ /* _JS_SOURCE_HASH = "48043d913e25bf38300177203bf14c1a126990aeab56aa03f8579b9b502f2f0a"; */
@@ -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.StorageClientController = exports.onServerRoutingChanged = void 0;
4
4
  const SocketFunction_1 = require("socket-function/SocketFunction");
@@ -29,4 +29,4 @@ exports.StorageClientController = SocketFunction_1.SocketFunction.register("Stor
29
29
  routingConfigChanged: {},
30
30
  }));
31
31
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZUNsaWVudENvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdG9yYWdlQ2xpZW50Q29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBZ0U7QUFFaEUsMFJBQTBSO0FBRTFSLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFjLENBQUM7QUFFeEMsaUdBQWlHO0FBQ2pHLFNBQWdCLHNCQUFzQixDQUFDLFFBQW9CO0lBQ3ZELFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEIsT0FBTyxHQUFHLEVBQUU7UUFDUixTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQztBQUNOLENBQUM7QUFMRCx3REFLQztBQUVELE1BQU0sMkJBQTJCO0lBQzdCLEtBQUssQ0FBQyxvQkFBb0I7O1FBQ3RCLEtBQUssSUFBSSxRQUFRLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDO2dCQUNELFFBQVEsRUFBRSxDQUFDO1lBQ2YsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsTUFBQyxDQUFXLENBQUMsS0FBSyxtQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBRVksUUFBQSx1QkFBdUIsR0FBRywrQkFBYyxDQUFDLFFBQVEsQ0FDMUQsZ0RBQWdELEVBQ2hELElBQUksMkJBQTJCLEVBQUUsRUFDakMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNILG9CQUFvQixFQUFFLEVBQUU7Q0FDM0IsQ0FBQyxDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb2NrZXRGdW5jdGlvbiB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vU29ja2V0RnVuY3Rpb25cIjtcblxuLy8gVGhlIGNsaWVudCBoYWxmIG9mIHJvdXRpbmctY2hhbmdlIGJyb2FkY2FzdHM6IHRoZSBzdG9yYWdlIHNlcnZlciB0cmFja3MgaXRzIGNvbm5lY3RlZCBjbGllbnRzIChzZWUgdHJhY2tDYWxsZXIgaW4gc3RvcmFnZUNvbnRyb2xsZXIpIGFuZCBjYWxscyByb3V0aW5nQ29uZmlnQ2hhbmdlZCBvbiBldmVyeSBvbmUgb2YgdGhlbSB0aGUgbW9tZW50IGEgcm91dGluZyBjb25maWcgY2hhbmdlcyAtIGNsaWVudHMgcmVhY3QgaW1tZWRpYXRlbHkgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIHBvbGwuXG5cbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQ8KCkgPT4gdm9pZD4oKTtcblxuLyoqIFN1YnNjcmliZSB0byBzZXJ2ZXItcHVzaGVkIHJvdXRpbmcgY2hhbmdlIG5vdGlmaWNhdGlvbnMuIFJldHVybnMgdGhlIHVuc3Vic2NyaWJlIGZ1bmN0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uU2VydmVyUm91dGluZ0NoYW5nZWQobGlzdGVuZXI6ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcbiAgICB9O1xufVxuXG5jbGFzcyBTdG9yYWdlQ2xpZW50Q29udHJvbGxlckJhc2Uge1xuICAgIGFzeW5jIHJvdXRpbmdDb25maWdDaGFuZ2VkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiBbLi4ubGlzdGVuZXJzXSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcigpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFJvdXRpbmcgY2hhbmdlIGxpc3RlbmVyIGZhaWxlZDogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IFN0b3JhZ2VDbGllbnRDb250cm9sbGVyID0gU29ja2V0RnVuY3Rpb24ucmVnaXN0ZXIoXG4gICAgXCJTdG9yYWdlQ2xpZW50Q29udHJvbGxlci1yZW1vdGVTdG9yYWdlLTJiOGYxYTZkXCIsXG4gICAgbmV3IFN0b3JhZ2VDbGllbnRDb250cm9sbGVyQmFzZSgpLFxuICAgICgpID0+ICh7XG4gICAgICAgIHJvdXRpbmdDb25maWdDaGFuZ2VkOiB7fSxcbiAgICB9KSxcbik7XG4iXX0=
32
- /* _JS_SOURCE_HASH = "7ba86a20013a625b22a157543f003a4979586ffa6eddba837bbb96140bdc2197"; */
32
+ /* _JS_SOURCE_HASH = "7ef96e2ea624c351032e8ff3e59b3ea4728adf24566c77b9cc46367a3605832a"; */
@@ -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.RemoteStorageController = exports.broadcastRoutingChanged = exports.STORAGE_ACCESS_DENIED = exports.STORAGE_NOT_AUTHENTICATED = exports.STORAGE_AUTH_PURPOSE = exports.REMOTE_STORAGE_CLASS_GUID = void 0;
4
4
  const SocketFunction_1 = require("socket-function/SocketFunction");
@@ -506,4 +506,4 @@ exports.RemoteStorageController = SocketFunction_1.SocketFunction.register(expor
506
506
  noDefaultHooks: true,
507
507
  }));
508
508
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdG9yYWdlQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBZ0U7QUFFaEUsNkRBQTREO0FBQzVELHlFQUFrRztBQUNsRyxpRUFBbUU7QUFDbkUsaUZBQThFO0FBQzlFLG1EQUF3RDtBQUN4RCxrREFBa0k7QUFDbEksNENBQTZIO0FBQzdILGlEQUE4QztBQUM5Qyw2REFLOEI7QUFDOUIsdUVBQW9FO0FBRXZELFFBQUEseUJBQXlCLEdBQUcsa0NBQWtDLENBQUM7QUFDL0QsUUFBQSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUM5QyxRQUFBLHlCQUF5QixHQUFHLDJDQUEyQyxDQUFDO0FBQ3hFLFFBQUEscUJBQXFCLEdBQUcsdUNBQXVDLENBQUM7QUFFN0UsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBWSxHQUFHLEVBQUUsQ0FBQztBQUMzQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBaUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztBQUUzQyx3WkFBd1o7QUFDeFosTUFBTSxhQUFhLEdBQThCO0lBQzdDLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsaUNBQWlDO0lBQ3ZFLEdBQUcsRUFBRSwyQkFBMkIsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVztJQUMzRyxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFlBQVk7SUFDeEQsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxpQkFB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SyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7SUFDMUMsU0FBUyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQyxFQUNGLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDSCxhQUFhLEVBQUUsSUFBSTtJQUNuQixjQUFjLEVBQUUsSUFBSTtDQUN2QixDQUFDLENBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvY2tldEZ1bmN0aW9uIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9Tb2NrZXRGdW5jdGlvblwiO1xuaW1wb3J0IHsgU29ja2V0RnVuY3Rpb25Ib29rIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9Tb2NrZXRGdW5jdGlvblR5cGVzXCI7XG5pbXBvcnQgeyBnZXROb2RlSWRJUCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL25vZGVDYWNoZVwiO1xuaW1wb3J0IHsgc2V0SFRUUFJlc3VsdEhlYWRlcnMsIGdldEN1cnJlbnRIVFRQUmVxdWVzdCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2NhbGxIVFRQSGFuZGxlclwiO1xuaW1wb3J0IHsgcGVyZm9ybUxvY2FsQ2FsbCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2NhbGxNYW5hZ2VyXCI7XG5pbXBvcnQgeyBSZXF1aXJlQ29udHJvbGxlciB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vcmVxdWlyZS9SZXF1aXJlQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgdGltZUluTWludXRlIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uTmFtZSwgZ2V0UHVibGljSWRlbnRpZmllciwgZ2V0T3duTWFjaGluZUlkLCB2ZXJpZnksIHZlcmlmeU1hY2hpbmVJZEZvclB1YmxpY0tleSB9IGZyb20gXCIuLi8uLi9taXNjL2h0dHBzL2NlcnRzXCI7XG5pbXBvcnQgeyBBcmNoaXZlRmlsZUluZm8sIEFyY2hpdmVzQ29uZmlnLCBBcmNoaXZlc1N5bmNTdGF0dXMsIENoYW5nZXNBZnRlckNvbmZpZywgSU1NVVRBQkxFX0NBQ0hFX1RJTUUgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBST1VUSU5HX0ZJTEUgfSBmcm9tIFwiLi9yZW1vdGVDb25maWdcIjtcbmltcG9ydCB7XG4gICAgZ2V0U3RvcmFnZVNlcnZlckNvbmZpZywgZ2V0VHJ1c3QsIGdldFJlcXVlc3RzLCBnZXRMb2FkZWRCdWNrZXQsIHdyaXRlQnVja2V0RmlsZSxcbiAgICBkZWxldGVCdWNrZXRGaWxlLCBhc3NlcnRXcml0ZXNBbGxvd2VkLCBhc3NlcnRNdXRhYmxlLCBMb2FkZWRCdWNrZXQsXG4gICAgZ2V0QnVja2V0Q29uZmlnLCBsaXN0QWNjb3VudEJ1Y2tldHMsIFNlcnZlckJ1Y2tldEluZm8sIGNsZWFyQWNjb3VudFdyaXRlU3RhdHMsXG4gICAgZ2V0QWN0aXZlQnVja2V0LCBhY3RpdmF0ZUJ1Y2tldCwgQWN0aXZlQnVja2V0SW5mbywgZ2V0QWN0aXZlQnVja2V0S2V5cyxcbn0gZnJvbSBcIi4vc3RvcmFnZVNlcnZlclN0YXRlXCI7XG5pbXBvcnQgeyBTdG9yYWdlQ2xpZW50Q29udHJvbGxlciB9IGZyb20gXCIuL3N0b3JhZ2VDbGllbnRDb250cm9sbGVyXCI7XG5cbmV4cG9ydCBjb25zdCBSRU1PVEVfU1RPUkFHRV9DTEFTU19HVUlEID0gXCJSZW1vdGVTdG9yYWdlQ29udHJvbGxlci1iN2U0MmE5MVwiO1xuZXhwb3J0IGNvbnN0IFNUT1JBR0VfQVVUSF9QVVJQT1NFID0gXCJyZW1vdGVTdG9yYWdlLWF1dGgtMVwiO1xuZXhwb3J0IGNvbnN0IFNUT1JBR0VfTk9UX0FVVEhFTlRJQ0FURUQgPSBcIlJFTU9URV9TVE9SQUdFX05PVF9BVVRIRU5USUNBVEVEX2NmMmY3YjFlXCI7XG5leHBvcnQgY29uc3QgU1RPUkFHRV9BQ0NFU1NfREVOSUVEID0gXCJSRU1PVEVfU1RPUkFHRV9BQ0NFU1NfREVOSUVEXzlkODFhNGMwXCI7XG5cbmNvbnN0IEFVVEhfVElNRV9XSU5ET1cgPSB0aW1lSW5NaW51dGUgKiAxMDtcbmNvbnN0IEFDQ0VTU19DSEVDS19TTE9XX1RJTUUgPSA1MDtcbmNvbnN0IE1BWF9TRVNTSU9OUyA9IDEwMCAqIDEwMDA7XG5jb25zdCBNQVhfUkVRVUVTVFNfUEVSX0lQID0gNTA7XG5cbmV4cG9ydCB0eXBlIEF1dGhUb2tlbkRhdGEgPSB7XG4gICAgcHVycG9zZTogc3RyaW5nO1xuICAgIHRpbWU6IG51bWJlcjtcbiAgICBzZXJ2ZXI6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBBdXRoVG9rZW4gPSB7XG4gICAgY2VydFBlbTogc3RyaW5nO1xuICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIGRhdGE6IEF1dGhUb2tlbkRhdGE7XG59O1xuZXhwb3J0IHR5cGUgQWNjZXNzUmVxdWVzdCA9IHtcbiAgICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgICBhY2NvdW50OiBzdHJpbmc7XG4gICAgbWFjaGluZUlkOiBzdHJpbmc7XG4gICAgaXA6IHN0cmluZztcbiAgICB0aW1lOiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgVHJ1c3RSZWNvcmQgPSB7XG4gICAgYWNjb3VudDogc3RyaW5nO1xuICAgIG1hY2hpbmVJZDogc3RyaW5nO1xuICAgIGlwOiBzdHJpbmc7XG4gICAgdGltZTogbnVtYmVyO1xufTtcbmV4cG9ydCB0eXBlIEFjY2Vzc1N0YXRlID0ge1xuICAgIG1hY2hpbmVJZDogc3RyaW5nO1xuICAgIGlwOiBzdHJpbmc7XG4gICAgaGFzQWNjZXNzOiBib29sZWFuO1xuICAgIGdyYW50QWNjZXNzQ29tbWFuZD86IHN0cmluZztcbiAgICB0cnVzdGVkTWFjaGluZXM/OiBUcnVzdFJlY29yZFtdO1xufTtcblxuY29uc3Qgc2Vzc2lvbnMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4vLyBXZSBtdXN0IG5ldmVyIHNlcnZlIGFueXRoaW5nIHRoYXQgY2FuIGJlIGV2YWx1YXRlZCBhcyBjb2RlIChodG1sLCBqcyAtIGFuZCBzdmcsIHdoaWNoIGNhbiBlbWJlZCA8c2NyaXB0PiBhbmQgcnVucyBpdCB3aGVuIHZpc2l0ZWQgYXMgYSBkb2N1bWVudCkuIE90aGVyd2lzZSBhIHVzZXIgY291bGQgaG9zdCBhIGZpbGUgYW5kLCBieSB2aXNpdGluZyBpdCwgcnVuIGl0IG9uIG91ciBkb21haW4gLSBnaXZpbmcgdGhlbSBhY2Nlc3MgdG8gYWxsIG9mIG91ciBrZXlzIGFuZCBjb29raWVzLiBQREYgc3RheXM6IGJyb3dzZXIgUERGIHZpZXdlcnMgcnVuIGFueSBlbWJlZGRlZCBQREYgc2NyaXB0aW5nIGluIGEgc2FuZGJveCB3aXRoIG5vIGFjY2VzcyB0byB0aGUgc2VydmluZyBvcmlnaW4ncyBjb29raWVzIG9yIERPTS5cbmNvbnN0IENPTlRFTlRfVFlQRVM6IHsgW2V4dDogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgY3NzOiBcInRleHQvY3NzOyBjaGFyc2V0PXV0Zi04XCIsIGpzb246IFwiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOFwiLFxuICAgIHR4dDogXCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04XCIsIHBuZzogXCJpbWFnZS9wbmdcIiwganBnOiBcImltYWdlL2pwZWdcIiwganBlZzogXCJpbWFnZS9qcGVnXCIsIGdpZjogXCJpbWFnZS9naWZcIixcbiAgICB3ZWJwOiBcImltYWdlL3dlYnBcIiwgbXA0OiBcInZpZGVvL21wNFwiLCB3ZWJtOiBcInZpZGVvL3dlYm1cIixcbiAgICBtcDM6IFwiYXVkaW8vbXBlZ1wiLCB3YXY6IFwiYXVkaW8vd2F2XCIsIHBkZjogXCJhcHBsaWNhdGlvbi9wZGZcIixcbn07XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkTmFtZSh2YWx1ZTogc3RyaW5nLCBraW5kOiBzdHJpbmcpIHtcbiAgICBpZiAoIS9eW1xcdy1dezEsNjR9JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7a2luZH0gJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9LCBleHBlY3RlZCAxLTY0IGNoYXJhY3RlcnMgb2YgbGV0dGVycy9udW1iZXJzL3VuZGVyc2NvcmUvZGFzaGApO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFzc2VydFZhbGlkUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAoQnVmZmVyLmZyb20ocGF0aCwgXCJ1dGY4XCIpLmxlbmd0aCA+IDEwMDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXRoIHRvbyBsb25nOiAke3BhdGgubGVuZ3RofSBjaGFyYWN0ZXJzID4gMTAwMC4gUGF0aDogJHtwYXRoLnNsaWNlKDAsIDIwMCl9YCk7XG4gICAgfVxuICAgIGlmICghcGF0aCB8fCBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHBhdGguZW5kc1dpdGgoXCIvXCIpIHx8IHBhdGguaW5jbHVkZXMoXCIvL1wiKSB8fCBwYXRoLmluY2x1ZGVzKFwiXFxcXFwiKSB8fCBwYXRoLmluY2x1ZGVzKFwiXFx4MDBcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggJHtKU09OLnN0cmluZ2lmeShwYXRoLnNsaWNlKDAsIDIwMCkpfSwgcGF0aHMgY2Fubm90IGJlIGVtcHR5LCBzdGFydCBvciBlbmQgd2l0aCAvLCBvciBjb250YWluIC8vLCBiYWNrc2xhc2hlcywgb3IgbnVsbCBjaGFyYWN0ZXJzYCk7XG4gICAgfVxuICAgIGlmIChwYXRoLnNwbGl0KFwiL1wiKS5zb21lKHBhcnQgPT4gcGFydCA9PT0gXCIuXCIgfHwgcGFydCA9PT0gXCIuLlwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aCAke0pTT04uc3RyaW5naWZ5KHBhdGguc2xpY2UoMCwgMjAwKSl9LCBwYXRocyBjYW5ub3QgY29udGFpbiAuIG9yIC4uIHNlZ21lbnRzYCk7XG4gICAgfVxufVxuXG5jb25zdCBjb25uZWN0ZWRDbGllbnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5mdW5jdGlvbiB0cmFja0NhbGxlcigpOiB2b2lkIHtcbiAgICBsZXQgbm9kZUlkID0gU29ja2V0RnVuY3Rpb24uZ2V0Q2FsbGVyKCkubm9kZUlkO1xuICAgIGlmIChjb25uZWN0ZWRDbGllbnRzLmhhcyhub2RlSWQpKSByZXR1cm47XG4gICAgY29ubmVjdGVkQ2xpZW50cy5hZGQobm9kZUlkKTtcbiAgICBTb2NrZXRGdW5jdGlvbi5vbk5leHREaXNjb25uZWN0KG5vZGVJZCwgKCkgPT4ge1xuICAgICAgICBjb25uZWN0ZWRDbGllbnRzLmRlbGV0ZShub2RlSWQpO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJvYWRjYXN0Um91dGluZ0NoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coYEJyb2FkY2FzdGluZyByb3V0aW5nIGNvbmZpZyBjaGFuZ2UgdG8gJHtjb25uZWN0ZWRDbGllbnRzLnNpemV9IGNvbm5lY3RlZCBjbGllbnRzYCk7XG4gICAgZm9yIChsZXQgbm9kZUlkIG9mIFsuLi5jb25uZWN0ZWRDbGllbnRzXSkge1xuICAgICAgICB2b2lkIFN0b3JhZ2VDbGllbnRDb250cm9sbGVyLm5vZGVzW25vZGVJZF0ucm91dGluZ0NvbmZpZ0NoYW5nZWQoKS5jYXRjaCgoKSA9PiB7IH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q2FsbGVyTWFjaGluZUlkKCk6IHN0cmluZyB7XG4gICAgbGV0IGNhbGxlciA9IFNvY2tldEZ1bmN0aW9uLmdldENhbGxlcigpO1xuICAgIGxldCBtYWNoaW5lSWQgPSBzZXNzaW9ucy5nZXQoY2FsbGVyLm5vZGVJZCk7XG4gICAgaWYgKCFtYWNoaW5lSWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke1NUT1JBR0VfTk9UX0FVVEhFTlRJQ0FURUR9IENhbGwgYXV0aGVudGljYXRlIGZpcnN0IChjb25uZWN0aW9uICR7Y2FsbGVyLm5vZGVJZH0pYCk7XG4gICAgfVxuICAgIHJldHVybiBtYWNoaW5lSWQ7XG59XG5mdW5jdGlvbiBnZXRDYWxsZXJJUCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXROb2RlSWRJUChTb2NrZXRGdW5jdGlvbi5nZXRDYWxsZXIoKS5ub2RlSWQpO1xufVxuZnVuY3Rpb24gaXNBZG1pbihtYWNoaW5lSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtYWNoaW5lSWQgPT09IGdldE93bk1hY2hpbmVJZChnZXRTdG9yYWdlU2VydmVyQ29uZmlnKCkucm9vdERvbWFpbik7XG59XG5mdW5jdGlvbiByZXF1aXJlQWRtaW4oKTogc3RyaW5nIHtcbiAgICBsZXQgbWFjaGluZUlkID0gZ2V0Q2FsbGVyTWFjaGluZUlkKCk7XG4gICAgaWYgKCFpc0FkbWluKG1hY2hpbmVJZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke1NUT1JBR0VfQUNDRVNTX0RFTklFRH0gQWRtaW4gY29tbWFuZHMgbXVzdCBiZSBydW4gZnJvbSB0aGUgc3RvcmFnZSBtYWNoaW5lIGl0c2VsZiAoY2FsbGVyIG1hY2hpbmUgJHttYWNoaW5lSWR9KWApO1xuICAgIH1cbiAgICByZXR1cm4gbWFjaGluZUlkO1xufVxuYXN5bmMgZnVuY3Rpb24gcmVxdWlyZUFjY2VzcyhhY2NvdW50OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGFzc2VydFZhbGlkTmFtZShhY2NvdW50LCBcImFjY291bnRcIik7XG4gICAgbGV0IG1hY2hpbmVJZCA9IGdldENhbGxlck1hY2hpbmVJZCgpO1xuICAgIGlmIChpc0FkbWluKG1hY2hpbmVJZCkpIHJldHVybiBtYWNoaW5lSWQ7XG4gICAgbGV0IHRydXN0ID0gYXdhaXQgZ2V0VHJ1c3QoKTtcbiAgICBsZXQgdHJ1c3RlZCA9IGF3YWl0IHRydXN0LmdldChgJHthY2NvdW50fXwke21hY2hpbmVJZH1gKTtcbiAgICBpZiAoIXRydXN0ZWQpIHtcbiAgICAgICAgbGV0IHsgZG9tYWluLCBwb3J0IH0gPSBnZXRTdG9yYWdlU2VydmVyQ29uZmlnKCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtTVE9SQUdFX0FDQ0VTU19ERU5JRUR9IE1hY2hpbmUgJHttYWNoaW5lSWR9IGhhcyBubyBhY2Nlc3MgdG8gYWNjb3VudCAke0pTT04uc3RyaW5naWZ5KGFjY291bnQpfS4gVmlzaXQgaHR0cHM6Ly8ke2RvbWFpbn06JHtwb3J0fS8ke2FjY291bnR9IGZvciBhY2Nlc3MgaW5zdHJ1Y3Rpb25zLmApO1xuICAgIH1cbiAgICByZXR1cm4gbWFjaGluZUlkO1xufVxuXG5mdW5jdGlvbiBnZXRHcmFudEFjY2Vzc0NvbW1hbmQocmVxdWVzdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB7IHNzaFRhcmdldCwgc2VydmVyQ29tbWFuZCB9ID0gZ2V0U3RvcmFnZVNlcnZlckNvbmZpZygpO1xuICAgIHJldHVybiBgc3NoICR7c3NoVGFyZ2V0fSAnJHtzZXJ2ZXJDb21tYW5kfSAtLXJlcXVlc3RJZCAke3JlcXVlc3RJZH0nYDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnVja2V0KGFjY291bnQ6IHN0cmluZywgYnVja2V0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxMb2FkZWRCdWNrZXQgfCB1bmRlZmluZWQ+IHtcbiAgICBhc3NlcnRWYWxpZE5hbWUoYWNjb3VudCwgXCJhY2NvdW50XCIpO1xuICAgIGFzc2VydFZhbGlkTmFtZShidWNrZXROYW1lLCBcImJ1Y2tldCBuYW1lXCIpO1xuICAgIHJldHVybiBhd2FpdCBnZXRMb2FkZWRCdWNrZXQoYWNjb3VudCwgYnVja2V0TmFtZSk7XG59XG5cbmNsYXNzIFJlbW90ZVN0b3JhZ2VDb250cm9sbGVyQmFzZSB7XG4gICAgYXN5bmMgcGluZygpOiBQcm9taXNlPHt9PiB7XG4gICAgICAgIHRyYWNrQ2FsbGVyKCk7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBhc3luYyBhdXRoZW50aWNhdGUodG9rZW46IEF1dGhUb2tlbik6IFByb21pc2U8eyBtYWNoaW5lSWQ6IHN0cmluZzsgaXA6IHN0cmluZyB9PiB7XG4gICAgICAgIGxldCB7IGRvbWFpbiwgcG9ydCB9ID0gZ2V0U3RvcmFnZVNlcnZlckNvbmZpZygpO1xuICAgICAgICBsZXQgY2FsbGVyID0gU29ja2V0RnVuY3Rpb24uZ2V0Q2FsbGVyKCk7XG4gICAgICAgIHZlcmlmeSh0b2tlbi5jZXJ0UGVtLCB0b2tlbi5zaWduYXR1cmUsIHRva2VuLmRhdGEpO1xuICAgICAgICBsZXQgeyBwdXJwb3NlLCB0aW1lLCBzZXJ2ZXIgfSA9IHRva2VuLmRhdGE7XG4gICAgICAgIGlmIChwdXJwb3NlICE9PSBTVE9SQUdFX0FVVEhfUFVSUE9TRSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdXRoIHRva2VuIHB1cnBvc2UgaXMgJHtKU09OLnN0cmluZ2lmeShwdXJwb3NlKX0sIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoU1RPUkFHRV9BVVRIX1BVUlBPU0UpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyhEYXRlLm5vdygpIC0gdGltZSkgPiBBVVRIX1RJTUVfV0lORE9XKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEF1dGggdG9rZW4gdGltZSBpcyB0b28gZmFyIGZyb20gdGhlIHNlcnZlciB0aW1lICh0b2tlbiAke3RpbWV9LCBzZXJ2ZXIgJHtEYXRlLm5vdygpfSwgYWxsb3dlZCBkcmlmdCAke0FVVEhfVElNRV9XSU5ET1d9bXMpYCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRva2VuRG9tYWluID0gc2VydmVyLnNwbGl0KFwiOlwiKVswXTtcbiAgICAgICAgaWYgKHRva2VuRG9tYWluICE9PSBkb21haW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXV0aCB0b2tlbiBpcyBmb3Igc2VydmVyICR7SlNPTi5zdHJpbmdpZnkoc2VydmVyKX0sIGJ1dCB0aGlzIHNlcnZlciBpcyAke0pTT04uc3RyaW5naWZ5KGAke2RvbWFpbn06JHtwb3J0fWApfWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtYWNoaW5lSWQgPSBnZXRDb21tb25OYW1lKHRva2VuLmNlcnRQZW0pLnNwbGl0KFwiLlwiKVswXTtcbiAgICAgICAgaWYgKCF2ZXJpZnlNYWNoaW5lSWRGb3JQdWJsaWNLZXkoeyBtYWNoaW5lSWQsIHB1YmxpY0tleTogZ2V0UHVibGljSWRlbnRpZmllcih0b2tlbi5jZXJ0UGVtKSB9KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDZXJ0aWZpY2F0ZSBjb21tb24gbmFtZSAke0pTT04uc3RyaW5naWZ5KGdldENvbW1vbk5hbWUodG9rZW4uY2VydFBlbSkpfSBkb2VzIG5vdCBtYXRjaCBpdHMgcHVibGljIGtleWApO1xuICAgICAgICB9XG4gICAgICAgIHNlc3Npb25zLnNldChjYWxsZXIubm9kZUlkLCBtYWNoaW5lSWQpO1xuICAgICAgICB3aGlsZSAoc2Vzc2lvbnMuc2l6ZSA+IE1BWF9TRVNTSU9OUykge1xuICAgICAgICAgICAgbGV0IG9sZGVzdCA9IHNlc3Npb25zLmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgICAgICBpZiAob2xkZXN0ID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgICAgICAgc2Vzc2lvbnMuZGVsZXRlKG9sZGVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgbWFjaGluZUlkLCBpcDogZ2V0Q2FsbGVySVAoKSB9O1xuICAgIH1cblxuICAgIGFzeW5jIHJlcXVlc3RBY2Nlc3MoYWNjb3VudDogc3RyaW5nKTogUHJvbWlzZTx7IG1hY2hpbmVJZDogc3RyaW5nOyBpcDogc3RyaW5nOyByZXF1ZXN0SWQ6IHN0cmluZzsgZ3JhbnRBY2Nlc3NDb21tYW5kOiBzdHJpbmcgfT4ge1xuICAgICAgICBhc3NlcnRWYWxpZE5hbWUoYWNjb3VudCwgXCJhY2NvdW50XCIpO1xuICAgICAgICBsZXQgbWFjaGluZUlkID0gZ2V0Q2FsbGVyTWFjaGluZUlkKCk7XG4gICAgICAgIGxldCBpcCA9IGdldENhbGxlcklQKCk7XG4gICAgICAgIGxldCByZXF1ZXN0c1N0b3JhZ2UgPSBhd2FpdCBnZXRSZXF1ZXN0cygpO1xuICAgICAgICBsZXQgcmVxdWVzdHMgPSBhd2FpdCByZXF1ZXN0c1N0b3JhZ2UuZ2V0KGlwKSB8fCBbXTtcbiAgICAgICAgbGV0IGV4aXN0aW5nID0gcmVxdWVzdHMuZmluZCh4ID0+IHguYWNjb3VudCA9PT0gYWNjb3VudCAmJiB4Lm1hY2hpbmVJZCA9PT0gbWFjaGluZUlkKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICBleGlzdGluZy50aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4aXN0aW5nID0ge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgMTApLFxuICAgICAgICAgICAgICAgIGFjY291bnQsXG4gICAgICAgICAgICAgICAgbWFjaGluZUlkLFxuICAgICAgICAgICAgICAgIGlwLFxuICAgICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVxdWVzdHMucHVzaChleGlzdGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHJlcXVlc3RzLmxlbmd0aCA+IE1BWF9SRVFVRVNUU19QRVJfSVApIHJlcXVlc3RzLnNoaWZ0KCk7XG4gICAgICAgIGF3YWl0IHJlcXVlc3RzU3RvcmFnZS5zZXQoaXAsIHJlcXVlc3RzKTtcbiAgICAgICAgcmV0dXJuIHsgbWFjaGluZUlkLCBpcCwgcmVxdWVzdElkOiBleGlzdGluZy5yZXF1ZXN0SWQsIGdyYW50QWNjZXNzQ29tbWFuZDogZ2V0R3JhbnRBY2Nlc3NDb21tYW5kKGV4aXN0aW5nLnJlcXVlc3RJZCkgfTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRBY2Nlc3NTdGF0ZShhY2NvdW50OiBzdHJpbmcpOiBQcm9taXNlPEFjY2Vzc1N0YXRlPiB7XG4gICAgICAgIGFzc2VydFZhbGlkTmFtZShhY2NvdW50LCBcImFjY291bnRcIik7XG4gICAgICAgIGxldCBtYWNoaW5lSWQgPSBnZXRDYWxsZXJNYWNoaW5lSWQoKTtcbiAgICAgICAgbGV0IGlwID0gZ2V0Q2FsbGVySVAoKTtcbiAgICAgICAgbGV0IHRydXN0ID0gYXdhaXQgZ2V0VHJ1c3QoKTtcbiAgICAgICAgbGV0IGhhc0FjY2VzcyA9IGlzQWRtaW4obWFjaGluZUlkKSB8fCAhIWF3YWl0IHRydXN0LmdldChgJHthY2NvdW50fXwke21hY2hpbmVJZH1gKTtcbiAgICAgICAgbGV0IHJlc3VsdDogQWNjZXNzU3RhdGUgPSB7IG1hY2hpbmVJZCwgaXAsIGhhc0FjY2VzcyB9O1xuICAgICAgICBpZiAoIWhhc0FjY2Vzcykge1xuICAgICAgICAgICAgbGV0IHJlcXVlc3RzID0gYXdhaXQgZ2V0UmVxdWVzdHMoKTtcbiAgICAgICAgICAgIGxldCBvd25SZXF1ZXN0ID0gKGF3YWl0IHJlcXVlc3RzLmdldChpcCkgfHwgW10pLmZpbmQoeCA9PiB4LmFjY291bnQgPT09IGFjY291bnQgJiYgeC5tYWNoaW5lSWQgPT09IG1hY2hpbmVJZCk7XG4gICAgICAgICAgICBpZiAob3duUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ncmFudEFjY2Vzc0NvbW1hbmQgPSBnZXRHcmFudEFjY2Vzc0NvbW1hbmQob3duUmVxdWVzdC5yZXF1ZXN0SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0cnVzdGVkTWFjaGluZXM6IFRydXN0UmVjb3JkW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQga2V5IG9mIGF3YWl0IHRydXN0LmdldEtleXMoKSkge1xuICAgICAgICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aChgJHthY2NvdW50fXxgKSkgY29udGludWU7XG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gYXdhaXQgdHJ1c3QuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAocmVjb3JkKSB0cnVzdGVkTWFjaGluZXMucHVzaChyZWNvcmQpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC50cnVzdGVkTWFjaGluZXMgPSB0cnVzdGVkTWFjaGluZXM7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgYXN5bmMgbGlzdFJlcXVlc3RzRm9ySVAoYWNjb3VudDogc3RyaW5nLCBpcDogc3RyaW5nKTogUHJvbWlzZTxBY2Nlc3NSZXF1ZXN0W10+IHtcbiAgICAgICAgbGV0IHJlcXVlc3RzID0gYXdhaXQgZ2V0UmVxdWVzdHMoKTtcbiAgICAgICAgcmV0dXJuIChhd2FpdCByZXF1ZXN0cy5nZXQoaXApIHx8IFtdKS5maWx0ZXIoeCA9PiB4LmFjY291bnQgPT09IGFjY291bnQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdyYW50QWNjZXNzKHJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxUcnVzdFJlY29yZD4ge1xuICAgICAgICBsZXQgY2FsbGVyTWFjaGluZUlkID0gZ2V0Q2FsbGVyTWFjaGluZUlkKCk7XG4gICAgICAgIGxldCB0cnVzdCA9IGF3YWl0IGdldFRydXN0KCk7XG4gICAgICAgIGxldCByZXF1ZXN0cyA9IGF3YWl0IGdldFJlcXVlc3RzKCk7XG4gICAgICAgIGZvciAobGV0IGlwIG9mIGF3YWl0IHJlcXVlc3RzLmdldEtleXMoKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgcmVxdWVzdCBvZiBhd2FpdCByZXF1ZXN0cy5nZXQoaXApIHx8IFtdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QucmVxdWVzdElkICE9PSByZXF1ZXN0SWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmICghaXNBZG1pbihjYWxsZXJNYWNoaW5lSWQpICYmICFhd2FpdCB0cnVzdC5nZXQoYCR7cmVxdWVzdC5hY2NvdW50fXwke2NhbGxlck1hY2hpbmVJZH1gKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7U1RPUkFHRV9BQ0NFU1NfREVOSUVEfSBNYWNoaW5lICR7Y2FsbGVyTWFjaGluZUlkfSBoYXMgbm8gYWNjZXNzIHRvIGFjY291bnQgJHtKU09OLnN0cmluZ2lmeShyZXF1ZXN0LmFjY291bnQpfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgcmVjb3JkOiBUcnVzdFJlY29yZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgYWNjb3VudDogcmVxdWVzdC5hY2NvdW50LFxuICAgICAgICAgICAgICAgICAgICBtYWNoaW5lSWQ6IHJlcXVlc3QubWFjaGluZUlkLFxuICAgICAgICAgICAgICAgICAgICBpcDogcmVxdWVzdC5pcCxcbiAgICAgICAgICAgICAgICAgICAgdGltZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGF3YWl0IHRydXN0LnNldChgJHtyZXF1ZXN0LmFjY291bnR9fCR7cmVxdWVzdC5tYWNoaW5lSWR9YCwgcmVjb3JkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gYWNjZXNzIHJlcXVlc3QgZm91bmQgd2l0aCBpZCAke0pTT04uc3RyaW5naWZ5KHJlcXVlc3RJZCl9LiBJdCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gZ3JhbnRlZCBvciBleHBpcmVkLmApO1xuICAgIH1cblxuICAgIC8qKiBBZG1pbiAoc28gb25seSB0aGlzIG1hY2hpbmUncyBvd24gcHJvY2Vzc2VzIGNhbiBjYWxsIGl0KTogdGhlIGJ1Y2tldHMgdGhpcyBwcm9jZXNzIGhhcyBsb2FkZWQuIEEgZGVwbG95IHN1Y2Nlc3NvciBhc2tzIGl0cyBwcmVkZWNlc3NvciBmb3IgdGhpcywgc28gaXQgYWN0aXZhdGVzIGV4YWN0bHkgdGhlIGJ1Y2tldHMgdGhhdCBhcmUgaW4gdXNlIGluc3RlYWQgb2YgZXZlcnkgYnVja2V0IG9uIGRpc2suICovXG4gICAgYXN5bmMgYWRtaW5MaXN0QWN0aXZlQnVja2V0cygpOiBQcm9taXNlPHsgYWNjb3VudDogc3RyaW5nOyBidWNrZXROYW1lOiBzdHJpbmcgfVtdPiB7XG4gICAgICAgIHJldHVybiBnZXRBY3RpdmVCdWNrZXRLZXlzKCk7XG4gICAgfVxuICAgIGFzeW5jIGFkbWluTGlzdFJlcXVlc3RzKGlwOiBzdHJpbmcpOiBQcm9taXNlPEFjY2Vzc1JlcXVlc3RbXT4ge1xuICAgICAgICBsZXQgcmVxdWVzdHMgPSBhd2FpdCBnZXRSZXF1ZXN0cygpO1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVxdWVzdHMuZ2V0KGlwKSB8fCBbXTtcbiAgICB9XG4gICAgYXN5bmMgYWRtaW5HcmFudEFjY2VzcyhyZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8VHJ1c3RSZWNvcmQ+IHtcbiAgICAgICAgbGV0IHRydXN0ID0gYXdhaXQgZ2V0VHJ1c3QoKTtcbiAgICAgICAgbGV0IHJlcXVlc3RzID0gYXdhaXQgZ2V0UmVxdWVzdHMoKTtcbiAgICAgICAgZm9yIChsZXQgaXAgb2YgYXdhaXQgcmVxdWVzdHMuZ2V0S2V5cygpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCByZXF1ZXN0IG9mIGF3YWl0IHJlcXVlc3RzLmdldChpcCkgfHwgW10pIHtcbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5yZXF1ZXN0SWQgIT09IHJlcXVlc3RJZCkgY29udGludWU7XG4gICAgICAgICAgICAgICAgbGV0IHJlY29yZDogVHJ1c3RSZWNvcmQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGFjY291bnQ6IHJlcXVlc3QuYWNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgbWFjaGluZUlkOiByZXF1ZXN0Lm1hY2hpbmVJZCxcbiAgICAgICAgICAgICAgICAgICAgaXA6IHJlcXVlc3QuaXAsXG4gICAgICAgICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0cnVzdC5zZXQoYCR7cmVxdWVzdC5hY2NvdW50fXwke3JlcXVlc3QubWFjaGluZUlkfWAsIHJlY29yZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGFjY2VzcyByZXF1ZXN0IGZvdW5kIHdpdGggaWQgJHtKU09OLnN0cmluZ2lmeShyZXF1ZXN0SWQpfS4gSXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGdyYW50ZWQgb3IgZXhwaXJlZC5gKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXQoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgcmFuZ2U/OiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0pOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXQyKGFjY291bnQsIGJ1Y2tldE5hbWUsIHBhdGgsIHJhbmdlKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiByZXN1bHQuZGF0YSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGFzeW5jIGdldDIoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgcmFuZ2U/OiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0pOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgYXNzZXJ0VmFsaWRQYXRoKHBhdGgpO1xuICAgICAgICBsZXQgYnVja2V0ID0gYXdhaXQgZ2V0QnVja2V0KGFjY291bnQsIGJ1Y2tldE5hbWUpO1xuICAgICAgICBpZiAoIWJ1Y2tldCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGJ1Y2tldC5zdG9yZS5nZXQyKHBhdGgsIHsgcmFuZ2UgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNldChhY2NvdW50OiBzdHJpbmcsIGJ1Y2tldE5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBkYXRhOiBCdWZmZXIsIGxhc3RNb2RpZmllZD86IG51bWJlciwgZm9yY2VTZXRJbW11dGFibGU/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGFzc2VydFZhbGlkTmFtZShidWNrZXROYW1lLCBcImJ1Y2tldCBuYW1lXCIpO1xuICAgICAgICBhc3NlcnRWYWxpZFBhdGgocGF0aCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQnVja2V0RmlsZShhY2NvdW50LCBidWNrZXROYW1lLCBwYXRoLCBCdWZmZXIuZnJvbShkYXRhKSwgeyBsYXN0TW9kaWZpZWQsIGZvcmNlU2V0SW1tdXRhYmxlIH0pO1xuICAgIH1cbiAgICBhc3luYyBkZWwoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhc3NlcnRWYWxpZE5hbWUoYnVja2V0TmFtZSwgXCJidWNrZXQgbmFtZVwiKTtcbiAgICAgICAgYXNzZXJ0VmFsaWRQYXRoKHBhdGgpO1xuICAgICAgICBhd2FpdCBkZWxldGVCdWNrZXRGaWxlKGFjY291bnQsIGJ1Y2tldE5hbWUsIHBhdGgpO1xuICAgIH1cbiAgICBhc3luYyBnZXRJbmZvKGFjY291bnQ6IHN0cmluZywgYnVja2V0TmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGFzc2VydFZhbGlkUGF0aChwYXRoKTtcbiAgICAgICAgbGV0IGJ1Y2tldCA9IGF3YWl0IGdldEJ1Y2tldChhY2NvdW50LCBidWNrZXROYW1lKTtcbiAgICAgICAgaWYgKCFidWNrZXQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBhd2FpdCBidWNrZXQuc3RvcmUuZ2V0SW5mbyhwYXRoKTtcbiAgICB9XG4gICAgYXN5bmMgZmluZEluZm8oYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nLCBjb25maWc/OiB7IHNoYWxsb3c/OiBib29sZWFuOyB0eXBlPzogXCJmaWxlc1wiIHwgXCJmb2xkZXJzXCIgfSk6IFByb21pc2U8QXJjaGl2ZUZpbGVJbmZvW10+IHtcbiAgICAgICAgbGV0IGJ1Y2tldCA9IGF3YWl0IGdldEJ1Y2tldChhY2NvdW50LCBidWNrZXROYW1lKTtcbiAgICAgICAgaWYgKCFidWNrZXQpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGJ1Y2tldC5zdG9yZS5maW5kSW5mbyhwcmVmaXgsIGNvbmZpZyk7XG4gICAgfVxuICAgIGFzeW5jIGdldENoYW5nZXNBZnRlcjIoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcsIGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICBsZXQgYnVja2V0ID0gYXdhaXQgZ2V0QnVja2V0KGFjY291bnQsIGJ1Y2tldE5hbWUpO1xuICAgICAgICBpZiAoIWJ1Y2tldCkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gYXdhaXQgYnVja2V0LnN0b3JlLmdldENoYW5nZXNBZnRlcjIoY29uZmlnKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0QXJjaGl2ZXNDb25maWcoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFyY2hpdmVzQ29uZmlnPiB7XG4gICAgICAgIGxldCBidWNrZXQgPSBhd2FpdCBnZXRCdWNrZXQoYWNjb3VudCwgYnVja2V0TmFtZSk7XG4gICAgICAgIGlmICghYnVja2V0KSByZXR1cm4geyBzdXBwb3J0c0NoYW5nZXNBZnRlcjogdHJ1ZSB9O1xuICAgICAgICByZXR1cm4gZ2V0QnVja2V0Q29uZmlnKGJ1Y2tldCk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RCdWNrZXRzKGFjY291bnQ6IHN0cmluZyk6IFByb21pc2U8U2VydmVyQnVja2V0SW5mb1tdPiB7XG4gICAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbGlzdEFjY291bnRCdWNrZXRzKGFjY291bnQpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgLy8gVGhlIGFjY2VzcyBob29rIChhbmQgdGhlIHN0b3JhZ2UgaXQgaW5pdGlhbGl6ZXMpIHJ1bnMgYmVmb3JlIHRoaXMsIHNvIGEgbGFyZ2UgZ2FwIGJldHdlZW4gdGhpcyBhbmQgdGhlIGNhbGxlcidzIHRpbWluZyBpcyB0aGUgaG9va1xuICAgICAgICAgICAgY29uc29sZS5sb2coYGxpc3RCdWNrZXRzKCR7YWNjb3VudH0pIGNhbGwgYm9keSB0b29rICR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIFRoZSBsaXZlLCBpbi1tZW1vcnkgc3RhdGUgb2Ygb25lIGJ1Y2tldCwgb3IgYSBzdHJpbmcgc2F5aW5nIHdoeSBpdCBpcyB1bmF2YWlsYWJsZS4gQW5zd2VyZWQgd2l0aG91dCB0b3VjaGluZyB0aGUgZGlzaywgc28gaXQgaXMgY2hlYXAgLSBidXQgb25seSB3b3JrcyB3aGlsZSB0aGUgYnVja2V0IGlzIGxvYWRlZCBoZXJlLiAqL1xuICAgIGFzeW5jIGdldEFjdGl2ZUJ1Y2tldChhY2NvdW50OiBzdHJpbmcsIGJ1Y2tldE5hbWU6IHN0cmluZyk6IFByb21pc2U8QWN0aXZlQnVja2V0SW5mbyB8IHN0cmluZz4ge1xuICAgICAgICBhc3NlcnRWYWxpZE5hbWUoYnVja2V0TmFtZSwgXCJidWNrZXQgbmFtZVwiKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldEFjdGl2ZUJ1Y2tldChhY2NvdW50LCBidWNrZXROYW1lKTtcbiAgICB9XG4gICAgLyoqIExvYWRzIGEgYnVja2V0IHRoYXQgZXhpc3RzIG9uIHRoaXMgc2VydmVyIGludG8gbWVtb3J5IChzdGFydGluZyBpdHMgc3luY2hyb25pemF0aW9uKSBhbmQgcmV0dXJucyBpdHMgbGl2ZSBzdGF0ZSwgb3IgYSBzdHJpbmcgc2F5aW5nIHdoeSBpdCBjb3VsZCBub3QgYmUgbG9hZGVkLiAqL1xuICAgIGFzeW5jIGFjdGl2YXRlQnVja2V0KGFjY291bnQ6IHN0cmluZywgYnVja2V0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxBY3RpdmVCdWNrZXRJbmZvIHwgc3RyaW5nPiB7XG4gICAgICAgIGFzc2VydFZhbGlkTmFtZShidWNrZXROYW1lLCBcImJ1Y2tldCBuYW1lXCIpO1xuICAgICAgICByZXR1cm4gYXdhaXQgYWN0aXZhdGVCdWNrZXQoYWNjb3VudCwgYnVja2V0TmFtZSk7XG4gICAgfVxuICAgIC8qKiBaZXJvZXMgdGhlIHdyaXRlIHN0YXRpc3RpY3MgbGlzdEJ1Y2tldHMgcmVwb3J0cywgZm9yIGV2ZXJ5IGJ1Y2tldCBpbiB0aGUgYWNjb3VudC4gKi9cbiAgICBhc3luYyBjbGVhcldyaXRlU3RhdHMoYWNjb3VudDogc3RyaW5nKTogUHJvbWlzZTx7IGNsZWFyZWRCdWNrZXRzOiBudW1iZXIgfT4ge1xuICAgICAgICBhc3NlcnRWYWxpZE5hbWUoYWNjb3VudCwgXCJhY2NvdW50XCIpO1xuICAgICAgICByZXR1cm4geyBjbGVhcmVkQnVja2V0czogYXdhaXQgY2xlYXJBY2NvdW50V3JpdGVTdGF0cyhhY2NvdW50KSB9O1xuICAgIH1cbiAgICBhc3luYyBnZXRJbmRleEluZm8oYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPHsgZmlsZUNvdW50OiBudW1iZXI7IGJ5dGVDb3VudDogbnVtYmVyOyBzb3VyY2VzOiB7IGRlYnVnTmFtZTogc3RyaW5nOyBmaWxlQ291bnQ6IG51bWJlcjsgYnl0ZUNvdW50OiBudW1iZXIgfVtdIH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IGJ1Y2tldCA9IGF3YWl0IGdldEJ1Y2tldChhY2NvdW50LCBidWNrZXROYW1lKTtcbiAgICAgICAgaWYgKCFidWNrZXQgfHwgIWJ1Y2tldC5zdG9yZS5jb21wdXRlSW5kZXhUb3RhbHMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBhd2FpdCBidWNrZXQuc3RvcmUuY29tcHV0ZUluZGV4VG90YWxzKCk7XG4gICAgfVxuICAgIGFzeW5jIGdldFN5bmNTdGF0dXMoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFyY2hpdmVzU3luY1N0YXR1cz4ge1xuICAgICAgICBsZXQgYnVja2V0ID0gYXdhaXQgZ2V0QnVja2V0KGFjY291bnQsIGJ1Y2tldE5hbWUpO1xuICAgICAgICBpZiAoIWJ1Y2tldCkgcmV0dXJuIHsgYWxsU2NhbnNDb21wbGV0ZTogdHJ1ZSwgaW5kZXhTaXplOiAwLCBzb3VyY2VzOiBbXSB9O1xuICAgICAgICBpZiAoIWJ1Y2tldC5zdG9yZS5nZXRTeW5jU3RhdHVzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJ1Y2tldCAke2FjY291bnR9LyR7YnVja2V0TmFtZX0gZG9lcyBub3Qgc3VwcG9ydCBnZXRTeW5jU3RhdHVzIChyYXdEaXNrIGJ1Y2tldHMgaGF2ZSBubyBzeW5jaHJvbml6YXRpb24pYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IGJ1Y2tldC5zdG9yZS5nZXRTeW5jU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RhcnRMYXJnZUZpbGUoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgbGFzdE1vZGlmaWVkPzogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgYXNzZXJ0V3JpdGVzQWxsb3dlZCgpO1xuICAgICAgICBhc3NlcnRWYWxpZFBhdGgocGF0aCk7XG4gICAgICAgIGxldCBidWNrZXQgPSBhd2FpdCBnZXRCdWNrZXQoYWNjb3VudCwgYnVja2V0TmFtZSk7XG4gICAgICAgIGlmICghYnVja2V0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJ1Y2tldCAke2FjY291bnR9LyR7YnVja2V0TmFtZX0gZG9lcyBub3QgZXhpc3QuIFdyaXRlIGl0cyByb3V0aW5nIGNvbmZpZyB0byAke0pTT04uc3RyaW5naWZ5KFJPVVRJTkdfRklMRSl9IHRvIGNyZWF0ZSBpdC5gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBhc3NlcnRNdXRhYmxlKGJ1Y2tldCwgcGF0aCwgbGFzdE1vZGlmaWVkIHx8IERhdGUubm93KCkpO1xuICAgICAgICBsZXQgaWQgPSBhd2FpdCBidWNrZXQuc3RvcmUuc3RhcnRMYXJnZVVwbG9hZCgpO1xuICAgICAgICBsYXJnZVVwbG9hZEluZm8uc2V0KGlkLCB7IGFjY291bnQsIGJ1Y2tldE5hbWUsIHBhdGgsIGxhc3RNb2RpZmllZCB9KTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgICBhc3luYyB1cGxvYWRQYXJ0KHVwbG9hZElkOiBzdHJpbmcsIGRhdGE6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhc3NlcnRXcml0ZXNBbGxvd2VkKCk7XG4gICAgICAgIGxldCBpbmZvID0gbGFyZ2VVcGxvYWRJbmZvLmdldCh1cGxvYWRJZCk7XG4gICAgICAgIGlmICghaW5mbykgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGxhcmdlIHVwbG9hZCAke3VwbG9hZElkfWApO1xuICAgICAgICBsZXQgYnVja2V0ID0gYXdhaXQgZ2V0QnVja2V0KGluZm8uYWNjb3VudCwgaW5mby5idWNrZXROYW1lKTtcbiAgICAgICAgaWYgKCFidWNrZXQpIHRocm93IG5ldyBFcnJvcihgQnVja2V0ICR7aW5mby5hY2NvdW50fS8ke2luZm8uYnVja2V0TmFtZX0gbm8gbG9uZ2VyIGV4aXN0c2ApO1xuICAgICAgICBhd2FpdCBidWNrZXQuc3RvcmUuYXBwZW5kTGFyZ2VVcGxvYWQodXBsb2FkSWQsIEJ1ZmZlci5mcm9tKGRhdGEpKTtcbiAgICB9XG4gICAgYXN5bmMgZmluaXNoTGFyZ2VGaWxlKHVwbG9hZElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXNzZXJ0V3JpdGVzQWxsb3dlZCgpO1xuICAgICAgICBsZXQgaW5mbyA9IGxhcmdlVXBsb2FkSW5mby5nZXQodXBsb2FkSWQpO1xuICAgICAgICBpZiAoIWluZm8pIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXJnZSB1cGxvYWQgJHt1cGxvYWRJZH1gKTtcbiAgICAgICAgbGFyZ2VVcGxvYWRJbmZvLmRlbGV0ZSh1cGxvYWRJZCk7XG4gICAgICAgIGxldCBidWNrZXQgPSBhd2FpdCBnZXRCdWNrZXQoaW5mby5hY2NvdW50LCBpbmZvLmJ1Y2tldE5hbWUpO1xuICAgICAgICBpZiAoIWJ1Y2tldCkgdGhyb3cgbmV3IEVycm9yKGBCdWNrZXQgJHtpbmZvLmFjY291bnR9LyR7aW5mby5idWNrZXROYW1lfSBubyBsb25nZXIgZXhpc3RzYCk7XG4gICAgICAgIGF3YWl0IGJ1Y2tldC5zdG9yZS5maW5pc2hMYXJnZVVwbG9hZCh1cGxvYWRJZCwgaW5mby5wYXRoLCBpbmZvLmxhc3RNb2RpZmllZCk7XG4gICAgfVxuICAgIGFzeW5jIGNhbmNlbExhcmdlRmlsZSh1cGxvYWRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCBpbmZvID0gbGFyZ2VVcGxvYWRJbmZvLmdldCh1cGxvYWRJZCk7XG4gICAgICAgIGlmICghaW5mbykgcmV0dXJuO1xuICAgICAgICBsYXJnZVVwbG9hZEluZm8uZGVsZXRlKHVwbG9hZElkKTtcbiAgICAgICAgbGV0IGJ1Y2tldCA9IGF3YWl0IGdldEJ1Y2tldChpbmZvLmFjY291bnQsIGluZm8uYnVja2V0TmFtZSk7XG4gICAgICAgIGlmICghYnVja2V0KSByZXR1cm47XG4gICAgICAgIGF3YWl0IGJ1Y2tldC5zdG9yZS5jYW5jZWxMYXJnZVVwbG9hZCh1cGxvYWRJZCk7XG4gICAgfVxuXG4gICAgLy8gSU1QT1JUQU5UOiBXZSBjYW4gbmV2ZXIgZXhwb3NlIGVudW1lcmF0aW9uIChsaXN0aW5nLCBwcmVmaXggc2VhcmNoLCBjaGFuZ2VzIGZlZWRzKSBvdmVyIHRoaXMgcHVibGljIEhUVFAgZW5kcG9pbnQgLSBvbmx5IGV4YWN0LWtleSByZWFkcy4gRW51bWVyYXRpb24gd291bGQgYmUgYSBtYXNzaXZlIHNlY3VyaXR5IHJpc2sgKHB1YmxpYyBidWNrZXRzIHJlbHkgb24gdW5ndWVzc2FibGUga2V5cyBzdGF5aW5nIHVuZ3Vlc3NhYmxlKSwgYW5kIGNvdWxkIGFsc28gY3Jhc2ggdGhlIGNsaWVudCBieSBzZW5kaW5nIHRoZW0gdG9vIG11Y2ggZGF0YS4gTGlzdGluZ3MgZXhpc3Qgb25seSBvbiB0aGUgYXV0aGVudGljYXRlZCBBUEkgKGZpbmRJbmZvIGV0YywgYmVoaW5kIGFjY291bnRBY2Nlc3MpLlxuICAgIGFzeW5jIGh0dHBFbnRyeShjb25maWc/OiB7IHJlcXVpcmVDYWxscz86IHN0cmluZ1tdOyBjYWNoZVRpbWU/OiBudW1iZXIgfSk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIGxldCBjYWxsZXIgPSBTb2NrZXRGdW5jdGlvbi5nZXRDYWxsZXIoKTtcbiAgICAgICAgbGV0IHJlcXVlc3QgPSBnZXRDdXJyZW50SFRUUFJlcXVlc3QoKTtcbiAgICAgICAgbGV0IHBhdGhuYW1lID0gbmV3IFVSTChyZXF1ZXN0Py51cmwgfHwgXCIvXCIsIFwiaHR0cHM6Ly9sb2NhbGhvc3RcIikucGF0aG5hbWU7XG4gICAgICAgIGlmICghcGF0aG5hbWUuc3RhcnRzV2l0aChcIi9maWxlL1wiKSkge1xuICAgICAgICAgICAgbGV0IGh0bWwgPSBhd2FpdCBwZXJmb3JtTG9jYWxDYWxsKHtcbiAgICAgICAgICAgICAgICBjYWxsZXIsXG4gICAgICAgICAgICAgICAgY2FsbDogeyBub2RlSWQ6IGNhbGxlci5ub2RlSWQsIGNsYXNzR3VpZDogUmVxdWlyZUNvbnRyb2xsZXIuX2NsYXNzR3VpZCwgZnVuY3Rpb25OYW1lOiBcInJlcXVpcmVIVE1MXCIsIGFyZ3M6IFtjb25maWddIH0sXG4gICAgICAgICAgICB9KSBhcyBCdWZmZXI7XG4gICAgICAgICAgICAvLyBXaXRob3V0IHRoaXMgdGhlIGFjY2VzcyBwYWdlIGlzIHNlcnZlZCB3aXRoIG5vIGNvbnRlbnQgdHlwZSwgYW5kIGEgYnJvd3NlciB0aGF0IGlzIHRvbGQgbm90IHRvIHNuaWZmIHNpbXBseSB3aWxsIG5vdCByZW5kZXIgaXRcbiAgICAgICAgICAgIHJldHVybiBzZXRIVFRQUmVzdWx0SGVhZGVycyhodG1sLCB7IFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcnRzID0gcGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcih4ID0+IHgpLm1hcChkZWNvZGVVUklDb21wb25lbnQpO1xuICAgICAgICBsZXQgYWNjb3VudCA9IHBhcnRzWzFdO1xuICAgICAgICBsZXQgYnVja2V0TmFtZSA9IHBhcnRzWzJdO1xuICAgICAgICBsZXQgZmlsZVBhdGggPSBwYXJ0cy5zbGljZSgzKS5qb2luKFwiL1wiKTtcbiAgICAgICAgaWYgKCFhY2NvdW50IHx8ICFidWNrZXROYW1lIHx8ICFmaWxlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHNldEhUVFBSZXN1bHRIZWFkZXJzKEJ1ZmZlci5mcm9tKFwiXCIpLCB7IHN0YXR1czogXCI0MDRcIiB9KTtcbiAgICAgICAgfVxuICAgICAgICBhc3NlcnRWYWxpZE5hbWUoYWNjb3VudCwgXCJhY2NvdW50XCIpO1xuICAgICAgICBhc3NlcnRWYWxpZE5hbWUoYnVja2V0TmFtZSwgXCJidWNrZXQgbmFtZVwiKTtcbiAgICAgICAgYXNzZXJ0VmFsaWRQYXRoKGZpbGVQYXRoKTtcbiAgICAgICAgbGV0IGJ1Y2tldCA9IGF3YWl0IGdldExvYWRlZEJ1Y2tldChhY2NvdW50LCBidWNrZXROYW1lKTtcbiAgICAgICAgaWYgKCFidWNrZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRIVFRQUmVzdWx0SGVhZGVycyhCdWZmZXIuZnJvbShcIlwiKSwgeyBzdGF0dXM6IFwiNDA0XCIgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFidWNrZXQuc2VsZj8ucHVibGljKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJ1Y2tldCAke2FjY291bnR9LyR7YnVja2V0TmFtZX0gaXMgbm90IHB1YmxpYywgc28gaXRzIGZpbGVzIGNhbm5vdCBiZSByZWFkIG92ZXIgcGxhaW4gVVJMc2ApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmZvID0gYXdhaXQgYnVja2V0LnN0b3JlLmdldEluZm8oZmlsZVBhdGgpO1xuICAgICAgICBpZiAoIWluZm8gfHwgIWluZm8uc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHNldEhUVFBSZXN1bHRIZWFkZXJzKEJ1ZmZlci5mcm9tKFwiXCIpLCB7IHN0YXR1czogXCI0MDRcIiB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZXh0ID0gZmlsZVBhdGguc3BsaXQoXCIuXCIpLnBvcCgpIHx8IFwiXCI7XG4gICAgICAgIGxldCBoZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogQ09OVEVOVF9UWVBFU1tleHQudG9Mb3dlckNhc2UoKV0gfHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgIFwiTGFzdC1Nb2RpZmllZFwiOiBuZXcgRGF0ZShpbmZvLndyaXRlVGltZSkudG9VVENTdHJpbmcoKSxcbiAgICAgICAgICAgIFwiQWNjZXB0LVJhbmdlc1wiOiBcImJ5dGVzXCIsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChidWNrZXQuc2VsZj8uaW1tdXRhYmxlKSB7XG4gICAgICAgICAgICBoZWFkZXJzW1wiQ2FjaGUtQ29udHJvbFwiXSA9IGBtYXgtYWdlPSR7SU1NVVRBQkxFX0NBQ0hFX1RJTUUgLyAxMDAwfWA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlmTW9kaWZpZWRTaW5jZSA9IHJlcXVlc3Q/LmhlYWRlcnNbXCJpZi1tb2RpZmllZC1zaW5jZVwiXTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZk1vZGlmaWVkU2luY2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGxldCBzaW5jZSA9IG5ldyBEYXRlKGlmTW9kaWZpZWRTaW5jZSkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYgKHNpbmNlICYmIE1hdGguZmxvb3IoaW5mby53cml0ZVRpbWUgLyAxMDAwKSAqIDEwMDAgPD0gc2luY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0SFRUUFJlc3VsdEhlYWRlcnMoQnVmZmVyLmZyb20oXCJcIiksIHsgLi4uaGVhZGVycywgc3RhdHVzOiBcIjMwNFwiIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByYW5nZTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcmFuZ2VIZWFkZXIgPSByZXF1ZXN0Py5oZWFkZXJzW1wicmFuZ2VcIl07XG4gICAgICAgIGlmICh0eXBlb2YgcmFuZ2VIZWFkZXIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IC9eYnl0ZXM9KFxcZCopLShcXGQqKSQvLmV4ZWMocmFuZ2VIZWFkZXIudHJpbSgpKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCAmJiAobWF0Y2hbMV0gfHwgbWF0Y2hbMl0pKSB7XG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgbGV0IGVuZEluY2x1c2l2ZSA9IGluZm8uc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaFsxXSkge1xuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IE1hdGgubWF4KDAsIGluZm8uc2l6ZSAtICttYXRjaFsyXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSArbWF0Y2hbMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFsyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kSW5jbHVzaXZlID0gTWF0aC5taW4oK21hdGNoWzJdLCBpbmZvLnNpemUgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gaW5mby5zaXplIHx8IHN0YXJ0ID4gZW5kSW5jbHVzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRIVFRQUmVzdWx0SGVhZGVycyhCdWZmZXIuZnJvbShcIlwiKSwgeyAuLi5oZWFkZXJzLCBcIkNvbnRlbnQtUmFuZ2VcIjogYGJ5dGVzICovJHtpbmZvLnNpemV9YCwgc3RhdHVzOiBcIjQxNlwiIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByYW5nZSA9IHsgc3RhcnQsIGVuZDogZW5kSW5jbHVzaXZlICsgMSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBidWNrZXQuc3RvcmUuZ2V0MihmaWxlUGF0aCwgeyByYW5nZSB9KTtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRIVFRQUmVzdWx0SGVhZGVycyhCdWZmZXIuZnJvbShcIlwiKSwgeyBzdGF0dXM6IFwiNDA0XCIgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0SFRUUFJlc3VsdEhlYWRlcnMocmVzdWx0LmRhdGEsIHsgLi4uaGVhZGVycywgXCJDb250ZW50LVJhbmdlXCI6IGBieXRlcyAke3JhbmdlLnN0YXJ0fS0ke3JhbmdlLmVuZCAtIDF9LyR7aW5mby5zaXplfWAsIHN0YXR1czogXCIyMDZcIiB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0SFRUUFJlc3VsdEhlYWRlcnMocmVzdWx0LmRhdGEsIGhlYWRlcnMpO1xuICAgIH1cbn1cblxuY29uc3QgbGFyZ2VVcGxvYWRJbmZvID0gbmV3IE1hcDxzdHJpbmcsIHsgYWNjb3VudDogc3RyaW5nOyBidWNrZXROYW1lOiBzdHJpbmc7IHBhdGg6IHN0cmluZzsgbGFzdE1vZGlmaWVkPzogbnVtYmVyIH0+KCk7XG5cbmNvbnN0IGFjY291bnRBY2Nlc3M6IFNvY2tldEZ1bmN0aW9uSG9vayA9IGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBhd2FpdCByZXF1aXJlQWNjZXNzKFN0cmluZyhjb250ZXh0LmNhbGwuYXJnc1swXSkpO1xuICAgIGxldCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydDtcbiAgICBpZiAoZHVyYXRpb24gPiBBQ0NFU1NfQ0hFQ0tfU0xPV19USU1FKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBBY2Nlc3MgY2hlY2sgZm9yICR7Y29udGV4dC5jYWxsLmZ1bmN0aW9uTmFtZX0gdG9vayAke2R1cmF0aW9ufW1zYCk7XG4gICAgfVxufTtcbmNvbnN0IHVwbG9hZEFjY2VzczogU29ja2V0RnVuY3Rpb25Ib29rID0gYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICBsZXQgaW5mbyA9IGxhcmdlVXBsb2FkSW5mby5nZXQoU3RyaW5nKGNvbnRleHQuY2FsbC5hcmdzWzBdKSk7XG4gICAgaWYgKCFpbmZvKSByZXR1cm47XG4gICAgYXdhaXQgcmVxdWlyZUFjY2VzcyhpbmZvLmFjY291bnQpO1xufTtcbmNvbnN0IGFkbWluQWNjZXNzOiBTb2NrZXRGdW5jdGlvbkhvb2sgPSBhc3luYyAoKSA9PiB7XG4gICAgcmVxdWlyZUFkbWluKCk7XG59O1xuXG5leHBvcnQgY29uc3QgUmVtb3RlU3RvcmFnZUNvbnRyb2xsZXIgPSBTb2NrZXRGdW5jdGlvbi5yZWdpc3RlcihcbiAgICBSRU1PVEVfU1RPUkFHRV9DTEFTU19HVUlELFxuICAgIG5ldyBSZW1vdGVTdG9yYWdlQ29udHJvbGxlckJhc2UoKSxcbiAgICAoKSA9PiAoe1xuICAgICAgICBwaW5nOiB7fSxcbiAgICAgICAgYXV0aGVudGljYXRlOiB7fSxcbiAgICAgICAgcmVxdWVzdEFjY2Vzczoge30sXG4gICAgICAgIGdldEFjY2Vzc1N0YXRlOiB7fSxcbiAgICAgICAgbGlzdFJlcXVlc3RzRm9ySVA6IHsgaG9va3M6IFthY2NvdW50QWNjZXNzXSB9LFxuICAgICAgICBncmFudEFjY2Vzczoge30sXG4gICAgICAgIGFkbWluTGlzdFJlcXVlc3RzOiB7IGhvb2tzOiBbYWRtaW5BY2Nlc3NdIH0sXG4gICAgICAgIGFkbWluTGlzdEFjdGl2ZUJ1Y2tldHM6IHsgaG9va3M6IFthZG1pbkFjY2Vzc10gfSxcbiAgICAgICAgYWRtaW5HcmFudEFjY2VzczogeyBob29rczogW2FkbWluQWNjZXNzXSB9LFxuICAgICAgICBnZXQ6IHsgaG9va3M6IFthY2NvdW50QWNjZXNzXSB9LFxuICAgICAgICBnZXQyOiB7IGhvb2tzOiBbYWNjb3VudEFjY2Vzc10gfSxcbiAgICAgICAgc2V0OiB7IGhvb2tzOiBbYWNjb3VudEFjY2Vzc10gfSxcbiAgICAgICAgZGVsOiB7IGhvb2tzOiBbYWNjb3VudEFjY2Vzc10gfSxcbiAgICAgICAgZ2V0SW5mbzogeyBob29rczogW2FjY291bnRBY2Nlc3NdIH0sXG4gICAgICAgIGZpbmRJbmZvOiB7IGhvb2tzOiBbYWNjb3VudEFjY2Vzc10gfSxcbiAgICAgICAgZ2V0Q2hhbmdlc0FmdGVyMjogeyBob29rczogW2FjY291bnRBY2Nlc3NdIH0sXG4gICAgICAgIGdldEFyY2hpdmVzQ29uZmlnOiB7IGhvb2tzOiBbYWNjb3VudEFjY2Vzc10gfSxcbiAgICAgICAgZ2V0SW5kZXhJbmZvOiB7IGhvb2tzOiBbYWNjb3VudEFjY2Vzc10gfSxcbiAgICAgICAgbGlzdEJ1Y2tldHM6IHsgaG9va3M6IFthY2NvdW50QWNjZXNzXSB9LFxuICAgICAgICBnZXRBY3RpdmVCdWNrZXQ6IHsgaG9va3M6IFthY2NvdW50QWNjZXNzXSB9LFxuICAgICAgICBhY3RpdmF0ZUJ1Y2tldDogeyBob29rczogW2FjY291bnRBY2Nlc3NdIH0sXG4gICAgICAgIGNsZWFyV3JpdGVTdGF0czogeyBob29rczogW2FjY291bnRBY2Nlc3NdIH0sXG4gICAgICAgIGdldFN5bmNTdGF0dXM6IHsgaG9va3M6IFthY2NvdW50QWNjZXNzXSB9LFxuICAgICAgICBzdGFydExhcmdlRmlsZTogeyBob29rczogW2FjY291bnRBY2Nlc3NdIH0sXG4gICAgICAgIHVwbG9hZFBhcnQ6IHsgaG9va3M6IFt1cGxvYWRBY2Nlc3NdIH0sXG4gICAgICAgIGZpbmlzaExhcmdlRmlsZTogeyBob29rczogW3VwbG9hZEFjY2Vzc10gfSxcbiAgICAgICAgY2FuY2VsTGFyZ2VGaWxlOiB7IGhvb2tzOiBbdXBsb2FkQWNjZXNzXSB9LFxuICAgICAgICBodHRwRW50cnk6IHt9LFxuICAgIH0pLFxuICAgICgpID0+ICh7XG4gICAgICAgIG5vQ2xpZW50SG9va3M6IHRydWUsXG4gICAgICAgIG5vRGVmYXVsdEhvb2tzOiB0cnVlLFxuICAgIH0pXG4pO1xuIl19
509
- /* _JS_SOURCE_HASH = "1849d17ac2c6f5a74d789412554c734aab4ffae1b7fd79634f8d2ba112200774"; */
509
+ /* _JS_SOURCE_HASH = "efbb5805c3315a881d4f618a66b010c7aab3894f249a6b8946b9deb4da743b42"; */