sliftutils 1.7.20 → 1.7.22

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 (38) hide show
  1. package/index.d.ts +24 -4
  2. package/misc/dist/strings.ts.cache +2 -2
  3. package/misc/https/dist/certs.ts.cache +2 -2
  4. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  5. package/package.json +2 -2
  6. package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
  7. package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
  8. package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
  9. package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +2 -2
  10. package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
  11. package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
  12. package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
  13. package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
  14. package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
  15. package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
  16. package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
  17. package/storage/remoteStorage/ArchivesRemote.d.ts +3 -1
  18. package/storage/remoteStorage/ArchivesRemote.ts +7 -7
  19. package/storage/remoteStorage/blobStore.d.ts +0 -1
  20. package/storage/remoteStorage/blobStore.ts +4 -10
  21. package/storage/remoteStorage/createArchives.d.ts +1 -0
  22. package/storage/remoteStorage/createArchives.ts +38 -7
  23. package/storage/remoteStorage/deployTakeover.d.ts +7 -0
  24. package/storage/remoteStorage/deployTakeover.ts +59 -12
  25. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +3 -3
  26. package/storage/remoteStorage/dist/blobStore.ts.cache +16 -4
  27. package/storage/remoteStorage/dist/createArchives.ts.cache +52 -10
  28. package/storage/remoteStorage/dist/deployTakeover.ts.cache +84 -40
  29. package/storage/remoteStorage/dist/sourceWrapper.ts.cache +11 -4
  30. package/storage/remoteStorage/dist/storageController.ts.cache +9 -4
  31. package/storage/remoteStorage/dist/storageServerState.ts.cache +22 -9
  32. package/storage/remoteStorage/sourceWrapper.d.ts +4 -0
  33. package/storage/remoteStorage/sourceWrapper.ts +11 -1
  34. package/storage/remoteStorage/spec.md +1 -1
  35. package/storage/remoteStorage/storageController.d.ts +9 -2
  36. package/storage/remoteStorage/storageController.ts +31 -10
  37. package/storage/remoteStorage/storageServerState.ts +9 -5
  38. package/yarn.lock +4 -4
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.runPlannedMerge = void 0;
4
4
  const format_1 = require("socket-function/src/formatting/format");
@@ -349,4 +349,4 @@ async function executeBatch(plans, indexesPerSource, sources, sourceNames, write
349
349
  return outputs;
350
350
  }
351
351
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVsa0RhdGFiYXNlTWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJCdWxrRGF0YWJhc2VNZXJnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrRUFBcUU7QUFDckUsd0VBQXlFO0FBQ3pFLDZEQVE4QjtBQUU5QiwwR0FBMEc7QUFDMUcsMEdBQTBHO0FBQzFHLHFHQUFxRztBQUNyRyxNQUFNLDBCQUEwQixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUUxRCxzR0FBc0c7QUFDdEcseUZBQXlGO0FBQ3pGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBRTdCLFNBQVMsUUFBUSxDQUFDLENBQVM7SUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSTtRQUFFLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSTtRQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUk7UUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3ZFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RELENBQUM7QUErQ0QsZ0dBQWdHO0FBQ2hHLDJCQUEyQjtBQUMzQiw2RkFBNkY7QUFDN0Ysd0dBQXdHO0FBQ3hHLHlHQUF5RztBQUN6RyxxR0FBcUc7QUFDckcsbUdBQW1HO0FBQ25HLHdHQUF3RztBQUN4RyxnR0FBZ0c7QUFDaEcsbUdBQW1HO0FBQ25HLHNHQUFzRztBQUMvRixLQUFLLFVBQVUsZUFBZSxDQUFDLE1BVXJDOztJQUNHLE1BQU0sZUFBZSxHQUFHLE1BQUEsTUFBTSxDQUFDLGVBQWUsbUNBQUksc0NBQWlCLENBQUM7SUFDcEUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsbUNBQUksMEJBQTBCLENBQUM7SUFDL0UsTUFBTSxHQUFHLEdBQUcsTUFBQSxNQUFNLENBQUMsR0FBRyxtQ0FBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUEsZ0JBQUksRUFBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTFGLHdHQUF3RztJQUN4RyxxR0FBcUc7SUFDckcsaUdBQWlHO0lBQ2pHLGlHQUFpRztJQUNqRyxxR0FBcUc7SUFDckcsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsTUFBTSxnQkFBZ0IsR0FBK0IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDeEcsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDM0MsSUFBSSxDQUFDO1lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPO2lCQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLCtCQUFVLENBQUM7aUJBQ3BDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsR0FBRyxDQUFDLEdBQUcsSUFBQSxtQkFBTyxFQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQU0sQ0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDaEYsd0ZBQXdGO1lBQ3hGLCtEQUErRDtZQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLGNBQWMsWUFBWSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUcsQ0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ0osTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMxQyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNoRCxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsaUdBQWlHO0lBQ2pHLGtHQUFrRztJQUNsRyw4REFBOEQ7SUFDOUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDMUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFBRSxTQUFTO1FBQzVCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsSUFBSTtnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxJQUFJO29CQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELGlHQUFpRztJQUNqRywrRkFBK0Y7SUFDL0YsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQzlCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMzQixNQUFNLEVBQUUsR0FBRyxNQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG1DQUFJLENBQUMsUUFBUSxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUNqRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDL0IsTUFBTSxFQUFFLEdBQUcsTUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxtQ0FBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGtHQUFrRztJQUNsRyw0REFBNEQ7SUFDNUQsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDbkMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFBRSxTQUFTO1FBQzVCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssK0JBQVUsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQUUsU0FBUztZQUNoRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQU1ELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO0lBQ2xFLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQStCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixJQUFJLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUN6QixJQUFJLElBQTRCLENBQUM7WUFDakMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUFFLFNBQVM7Z0JBQzVCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxTQUFTO29CQUFFLFNBQVM7Z0JBQzlCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksTUFBTSxLQUFLLFNBQVM7b0JBQUUsU0FBUztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsR0FBRztvQkFBRSxTQUFTO2dCQUNuQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQixJQUFJLElBQUksS0FBSyxvQ0FBZTtvQkFBRSxTQUFTO2dCQUN2QyxJQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQztvQkFDZixRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUNiLElBQUksR0FBRzt3QkFDSCxTQUFTLEVBQUUsRUFBRTt3QkFDYixTQUFTLEVBQUUsTUFBTTt3QkFDakIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUN0RCxJQUFJO3FCQUNQLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQscUdBQXFHO0lBQ3JHLHFDQUFxQztJQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFcEQscUdBQXFHO0lBQ3JHLHdGQUF3RjtJQUN4RixTQUFTLGFBQWEsQ0FBQyxHQUFXO1FBQzlCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFFLENBQUM7UUFDcEMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7UUFDaEQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLO1lBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztRQUNsRixLQUFLLElBQUksQ0FBQyxHQUFHLGtCQUFrQixDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxvR0FBb0c7SUFDcEcsK0ZBQStGO0lBQy9GLE1BQU0sYUFBYSxHQUFxQyxFQUFFLENBQUM7SUFDM0QsQ0FBQztRQUNHLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLEdBQUcsVUFBVSxJQUFJLFVBQVUsR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7Z0JBQ3RELGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRCxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQztZQUNELFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxVQUFVO1lBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU3RyxHQUFHLENBQUMsR0FBRyxJQUFBLG1CQUFPLEVBQUMsTUFBTSxDQUFDLEtBQUssSUFBQSxxQkFBWSxFQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxLQUFLLENBQUMsTUFBTSxvQkFBb0IsSUFBQSxxQkFBWSxFQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUvSix3R0FBd0c7SUFDeEcsb0dBQW9HO0lBQ3BHLDJEQUEyRDtJQUMzRCxNQUFNLE9BQU8sR0FBMEIsRUFBRSxDQUFDO0lBQzFDLENBQUM7UUFDRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxHQUFHLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUM7WUFDNUMsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JGLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3ZDLEdBQUcsRUFBRSxDQUFDO1lBQ1YsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQXlCLEVBQUUsQ0FBQztJQUN6QyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RSxHQUFHLENBQUMsR0FBRyxJQUFBLG1CQUFPLEVBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLHFCQUFxQixRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hILE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1SCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxHQUFHLENBQUMsR0FBRyxJQUFBLG1CQUFPLEVBQUMsU0FBUyxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sYUFBYSxRQUFRLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDO0FBQ3hELENBQUM7QUEvTEQsMENBK0xDO0FBRUQsU0FBUyxlQUFlLENBQ3BCLEtBQXFDLEVBQ3JDLFFBQWtCLEVBQ2xCLFdBQWlILEVBQ2pILFVBQW9CLEVBQ3BCLE9BQTRCOztJQUU1QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsTUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxtQ0FBSSxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7SUFDakQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFL0MsTUFBTSxPQUFPLEdBQTBCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUU7O1FBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBYyxFQUFFLENBQUM7UUFDM0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksVUFBK0IsQ0FBQztRQUVwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDUixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsb0NBQWUsQ0FBQztnQkFDM0IsK0VBQStFO2dCQUMvRSxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFBQyxDQUFDO2dCQUNsRSxTQUFTO1lBQ2IsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3JCLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQUEsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1DQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlFLHdGQUF3RjtZQUN4RiwwRkFBMEY7WUFDMUYsbUNBQW1DO1lBQ25DLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEcsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsVUFBVSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLFVBQVU7b0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEMsVUFBVSxHQUFHO29CQUNULFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUM5QixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDO29CQUNoQyxlQUFlLEVBQUUsVUFBVTtvQkFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPO2lCQUMzQixDQUFDO1lBQ04sQ0FBQztZQUNELFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLFVBQVU7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUM7UUFFL0IsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUMsQ0FBQyxDQUFDO0lBRUgsc0dBQXNHO0lBQ3RHLHlEQUF5RDtJQUN6RCxJQUFJLGtCQUFrQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDbEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSTtRQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMvQyxrQkFBa0IsSUFBSSxJQUFBLDBDQUFxQixFQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUNqRSxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU87UUFBRSxrQkFBa0IsSUFBSSxJQUFBLDBDQUFxQixFQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDbEcsa0JBQWtCLElBQUksSUFBQSwwQ0FBcUIsRUFBQyxRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRXJFLE9BQU87UUFDSCxJQUFJO1FBQ0osS0FBSztRQUNMLE1BQU0sRUFBRSxNQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsbUNBQUksRUFBRTtRQUNyQixNQUFNLEVBQUUsTUFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxtQ0FBSSxFQUFFO1FBQ2hDLE9BQU87UUFDUCxrQkFBa0I7UUFDbEIsWUFBWTtLQUNmLENBQUM7QUFDTixDQUFDO0FBRUQsS0FBSyxVQUFVLFlBQVksQ0FDdkIsS0FBMEIsRUFDMUIsZ0JBQTRDLEVBQzVDLE9BQWlDLEVBQ2pDLFdBQXFCLEVBQ3JCLFNBQW9FLEVBQ3BFLEdBQTJCO0lBSzNCLE1BQU0sWUFBWSxHQUFxQixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBQSwwQ0FBcUIsRUFBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixrR0FBa0c7SUFDbEcsa0dBQWtHO0lBQ2xHLHNGQUFzRjtJQUN0RixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3pDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNsQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQUMsTUFBTTtnQkFBQyxDQUFDO1lBQzlFLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVc7WUFBRSxTQUFTO1FBRTNCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsUUFBUTtvQkFBRSxTQUFTO2dCQUN4QixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLEVBQUU7d0JBQUUsU0FBUztvQkFDbkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNsRixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDLFVBQVUsdUJBQXVCLEVBQUUsS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsY0FBYyxLQUFLLEdBQUcsQ0FBQyxZQUFZLFVBQVUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQzFMLENBQUM7b0JBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUNoRSxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsR0FBRyxDQUFDLEdBQUcsSUFBQSxtQkFBTyxFQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELE1BQU0sT0FBTyxHQUF5QixFQUFFLENBQUM7SUFDekMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRixNQUFNLE9BQU8sR0FBRyxJQUFBLHdDQUFtQixFQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQy9DLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlFLEdBQUcsQ0FBQyxHQUFHLElBQUEsbUJBQU8sRUFBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBQSxxQkFBWSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLGNBQWMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6SixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2Zvcm1hdFwiO1xuaW1wb3J0IHsgYmx1ZSwgbWFnZW50YSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvbG9nQ29sb3JzXCI7XG5pbXBvcnQge1xuICAgIEJhc2VCdWxrRGF0YWJhc2VSZWFkZXIsXG4gICAgQ29sdW1uSW5kZXgsXG4gICAgYXNzZW1ibGVQbGFubmVkRmlsZSxcbiAgICBjb2x1bW5JbmRleEJ5dGVMZW5ndGgsXG4gICAgS0VZX0NPTFVNTixcbiAgICBUQVJHRVRfRklMRV9CWVRFUyxcbiAgICBUWVBFX0FCU0VOVF9UQUcsXG59IGZyb20gXCIuL0J1bGtEYXRhYmFzZUZvcm1hdFwiO1xuXG4vLyBEZWZhdWx0IHRvdGFsIGluLWZsaWdodCBidWZmZXIgYnVkZ2V0IGZvciB0aGUgZXhlY3V0b3I6IGhvdyBtdWNoIG91dHB1dCB2YWx1ZS1kYXRhIHdlIGhvbGQgaW4gbWVtb3J5IGF0XG4vLyBvbmNlLiBNdWx0aXBsZSBvdXRwdXQgZmlsZXMgKOKJpCBUQVJHRVRfRklMRV9CWVRFUyBlYWNoKSBhcmUgYnVpbHQgdG9nZXRoZXIgaW5zaWRlIHRoaXMgYnVkZ2V0IHNvIHJlYWRpbmdcbi8vIGlucHV0cyBvbmNlIGFtb3J0aXplcyB0aGVpciBJL08gYWNyb3NzIHNldmVyYWwgb3V0cHV0cy4gVGlnaHRlciBidWRnZXQg4oaSIG1vcmUgcGFzc2VzLCBsZXNzIG1lbW9yeS5cbmNvbnN0IERFRkFVTFRfT1VUUFVUX0JBVENIX0JZVEVTID0gMiAqIDEwMjQgKiAxMDI0ICogMTAyNDtcblxuLy8gUGVyLXZhbHVlIG9uLWRpc2sgb3ZlcmhlYWQgKDQtYnl0ZSBvZmZzZXQgZW50cnkgKyAxLWJ5dGUgdHlwZSB0YWcpLiBVc2VkIGZvciB0aGUgcGFydGl0aW9uLWN1dCBzaXplXG4vLyBlc3RpbWF0ZTsgdGhlIGV4ZWN1dG9yIGRvZXNuJ3QgdXNlIGl0IChvZmZzZXRzL3R5cGVzIGFyZSBzaXplZCBleGFjdGx5IGZyb20gdGhlIHBsYW4pLlxuY29uc3QgUEVSX1ZBTFVFX09WRVJIRUFEID0gNTtcblxuZnVuY3Rpb24gZm10Qnl0ZXMobjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAobiA8IDEwMjQpIHJldHVybiBuICsgXCJCXCI7XG4gICAgaWYgKG4gPCAxMDI0ICogMTAyNCkgcmV0dXJuIChuIC8gMTAyNCkudG9GaXhlZCgxKSArIFwiS0JcIjtcbiAgICBpZiAobiA8IDEwMjQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIChuIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIk1CXCI7XG4gICAgcmV0dXJuIChuIC8gMTAyNCAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDIpICsgXCJHQlwiO1xufVxuXG4vLyBBIGNvbnRpZ3VvdXMgY29weSBvcGVyYXRpb246IHRha2UgYHNvdXJjZUVuZFJvdyAtIHNvdXJjZVN0YXJ0Um93YCBjb25zZWN1dGl2ZSByb3dzIG9mIG9uZSBzb3VyY2Vcbi8vIGNvbHVtbiwgc3BsaWNlIHRoZSByZXN1bHRpbmcgYnl0ZXMgaW50byB0aGUgb3V0cHV0IGNvbHVtbidzIGRhdGEgc2VjdGlvbiBhdCBvdXRwdXRCeXRlU3RhcnQuIEFkamFjZW50XG4vLyBwZXItcm93IGRlY2lzaW9ucyBnZXQgUkxFJ2QgaW50byBvbmUgY29weSBvcCDigJQgb25lIHNvdXJjZS1zaWRlIHJlYWQgKyBtZW1jcHkgaW5zdGVhZCBvZiBvbmUgcGVyIHJvdy5cbnR5cGUgQ29weVJ1biA9IHtcbiAgICBzb3VyY2VJZHg6IG51bWJlcjtcbiAgICBzb3VyY2VTdGFydFJvdzogbnVtYmVyO1xuICAgIHNvdXJjZUVuZFJvdzogbnVtYmVyO1xuICAgIG91dHB1dEJ5dGVTdGFydDogbnVtYmVyO1xuICAgIGJ5dGVMZW5ndGg6IG51bWJlcjtcbn07XG5cbnR5cGUgUGxhbm5lZE91dHB1dENvbHVtbiA9IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLy8gb2Zmc2V0c1tpXS4ub2Zmc2V0c1tpKzFdID0gcm93IGkncyB2YWx1ZSBieXRlIHJhbmdlIGluIHRoZSBjb2x1bW4ncyBkYXRhIHNlY3Rpb24uIFBvcHVsYXRlZCBieSB0aGVcbiAgICAvLyBwbGFubmVyOyB0aGUgZXhlY3V0b3Igd3JpdGVzIGl0IHZlcmJhdGltIGludG8gdGhlIG91dHB1dCBjb2x1bW4gYmxvYi5cbiAgICBvZmZzZXRzOiBVaW50MzJBcnJheTtcbiAgICAvLyBQZXItcm93IHR5cGUgdGFnIChUWVBFX0FCU0VOVCBmb3IgZmFsbC10aHJvdWdoKS4gUG9wdWxhdGVkIGJ5IHRoZSBwbGFubmVyLlxuICAgIHR5cGVzOiBVaW50OEFycmF5O1xuICAgIC8vIFRvdGFsIGJ5dGVzIHRoZSBkYXRhIHNlY3Rpb24gd2lsbCBvY2N1cHkgPSBvZmZzZXRzW3Jvd0NvdW50XS5cbiAgICBkYXRhTGVuZ3RoOiBudW1iZXI7XG4gICAgLy8gUnVuLWxlbmd0aCBlbmNvZGVkIHBlci1yb3cgY29weSBkZWNpc2lvbnMsIGluIG91dHB1dCByb3cgb3JkZXIuIEFCU0VOVCByb3dzIGNvbnRyaWJ1dGUgbm8gcnVuLlxuICAgIHJ1bnM6IENvcHlSdW5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFBsYW5uZWRPdXRwdXRGaWxlID0ge1xuICAgIGtleXM6IHN0cmluZ1tdO1xuICAgIHRpbWVzOiBudW1iZXJbXTtcbiAgICBtaW5LZXk6IHN0cmluZztcbiAgICBtYXhLZXk6IHN0cmluZztcbiAgICBjb2x1bW5zOiBQbGFubmVkT3V0cHV0Q29sdW1uW107XG4gICAgLy8gU3VtIG9mIGFsbCBjb2x1bW4gZGF0YSBzaXplcyArIGluZGV4IG92ZXJoZWFkICsgaGVhZGVyIGd1ZXNzOyB1c2VkIHRvIGdyb3VwIG91dHB1dHMgaW50byBiYXRjaGVzLlxuICAgIGVzdGltYXRlZEZpbGVCeXRlczogbnVtYmVyO1xuICAgIC8vIHNvdXJjZUlkeCDihpIgbm9uLUFCU0VOVCBjZWxsIGNvdW50IGNvbnRyaWJ1dGVkIHRvIHRoaXMgb3V0cHV0IGZpbGUgKGZvciBsb2dnaW5nIFwid2hlcmUgaXQgY2FtZSBmcm9tXCIpLlxuICAgIHNvdXJjZUNvdW50czogTWFwPG51bWJlciwgbnVtYmVyPjtcbn07XG5cbmV4cG9ydCB0eXBlIFBsYW5uZWRNZXJnZU91dHB1dCA9IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWluS2V5OiBzdHJpbmc7XG4gICAgbWF4S2V5OiBzdHJpbmc7XG4gICAgcm93Q291bnQ6IG51bWJlcjtcbiAgICBzaXplOiBudW1iZXI7XG4gICAgc291cmNlczogTWFwPHN0cmluZywgbnVtYmVyPjtcbn07XG5cbi8vIFBsYW4gYSBtZXJnZSBvdmVyIGBzb3VyY2VzYCBhbmQgZXhlY3V0ZSBpdCwgd3JpdGluZyBvbmUgb3IgbW9yZSBvdXRwdXQgZmlsZXMgdmlhIHRoZSBjYWxsZXInc1xuLy8gYHdyaXRlRmlsZWAuIFR3byBwaGFzZXM6XG4vLyAgIOKAoiBQbGFubmluZzogbG9hZCBvbmx5IHBlci1jb2x1bW4gSU5ERVhFUyAob2Zmc2V0cyArIHR5cGVzIOKAlCB+NSBCL3Jvdywgc21hbGwgZXZlbiBvbiAyMEdCXG4vLyAgICAgY29sbGVjdGlvbnMpLCBkZXRlcm1pbmUgdGhlIHdpbm5pbmcgY2VsbCBwZXIgKGxpdmUga2V5LCBjb2x1bW4pIGJ5IG5ld2VzdCB3cml0ZS10aW1lICsgbm9uLUFCU0VOVFxuLy8gICAgIGZhbGwtdGhyb3VnaCwgc29ydCBrZXlzLCBwYXJ0aXRpb24gaW50byB+dGFyZ2V0RmlsZUJ5dGVzIG91dHB1dCBmaWxlcywgYW5kIHByZS1jb21wdXRlIGVhY2ggb3V0cHV0XG4vLyAgICAgY29sdW1uJ3Mgb2Zmc2V0cy90eXBlcyBhcnJheXMgcGx1cyBhIHJ1bi1sZW5ndGgtZW5jb2RlZCBjb3B5IHBsYW4gKG5vIHZhbHVlIGRhdGEgdG91Y2hlZCB5ZXQpLlxuLy8gICDigKIgRXhlY3V0ZTogZ3JvdXAgb3V0cHV0cyBpbnRvIH50YXJnZXRCYXRjaEJ5dGVzIGJhdGNoZXM7IHBlciBiYXRjaCwgYWxsb2NhdGUgY29sdW1uIGJsb2JzIHdpdGhcbi8vICAgICBvZmZzZXRzL3R5cGVzIGFscmVhZHkgZmlsbGVkIGluLCB0aGVuIGl0ZXJhdGUgaW5wdXQgc291cmNlcyBjb3B5aW5nIGNvbnRpZ3VvdXMgYnl0ZSBydW5zIHN0cmFpZ2h0XG4vLyAgICAgaW50byB0aGUgb3V0cHV0IGJ1ZmZlcnMuIEEgc291cmNlIHdpdGggbm8gY29udHJpYnV0aW9uIHRvIHRoaXMgYmF0Y2ggaXMgc2tpcHBlZCBlbnRpcmVseS5cbi8vIFJldHVybnMgdGhlIG5ldyBvdXRwdXQgZmlsZSBkZXNjcmlwdG9ycyBwbHVzIGFueSB0b21ic3RvbmVzIHdob3NlIG5ld2VzdCBldmVudCBpcyBzdGlsbCBhIGRlbGV0ZVxuLy8gKGNhcnJpZWQgZm9yd2FyZCB3aGVuIG9sZGVyIGZpbGVzIG91dHNpZGUgdGhlIG1lcmdlIGNvdWxkIHN0aWxsIGhvbGQgYSBub3ctc3RhbGUgc2V0IGZvciB0aGF0IGtleSkuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUGxhbm5lZE1lcmdlKGNvbmZpZzoge1xuICAgIHNvdXJjZXM6IEJhc2VCdWxrRGF0YWJhc2VSZWFkZXJbXTtcbiAgICBzb3VyY2VOYW1lczogc3RyaW5nW107XG4gICAgY29sbGVjdGlvbk5hbWU6IHN0cmluZztcbiAgICB0YXJnZXRGaWxlQnl0ZXM/OiBudW1iZXI7XG4gICAgdGFyZ2V0QmF0Y2hCeXRlcz86IG51bWJlcjtcbiAgICAvLyBTaW5rIGZvciBzdGVwIGxpbmVzLiBXaGVuIG9taXR0ZWQsIGZhbGxzIGJhY2sgdG8gYSBibHVlLXByZWZpeGVkXG4gICAgLy8gY29uc29sZS5sb2cgc28gc3RhbmRhbG9uZSBjYWxsZXJzIHN0aWxsIGdldCBpZGVudGlmaWFibGUgb3V0cHV0LlxuICAgIGxvZz86IChsaW5lOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgd3JpdGVGaWxlOiAoZGF0YTogQnVmZmVyKSA9PiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBzaXplOiBudW1iZXIgfT47XG59KTogUHJvbWlzZTx7IG91dHB1dHM6IFBsYW5uZWRNZXJnZU91dHB1dFtdOyBjYXJyaWVkRGVsZXRlczogTWFwPHN0cmluZywgbnVtYmVyPjsgdXNlZFNvdXJjZU5hbWVzOiBTZXQ8c3RyaW5nPiB9PiB7XG4gICAgY29uc3QgdGFyZ2V0RmlsZUJ5dGVzID0gY29uZmlnLnRhcmdldEZpbGVCeXRlcyA/PyBUQVJHRVRfRklMRV9CWVRFUztcbiAgICBjb25zdCB0YXJnZXRCYXRjaEJ5dGVzID0gY29uZmlnLnRhcmdldEJhdGNoQnl0ZXMgPz8gREVGQVVMVF9PVVRQVVRfQkFUQ0hfQllURVM7XG4gICAgY29uc3QgbG9nID0gY29uZmlnLmxvZyA/PyAobGluZSA9PiBjb25zb2xlLmxvZyhgJHtibHVlKGNvbmZpZy5jb2xsZWN0aW9uTmFtZSl9ICR7bGluZX1gKSk7XG5cbiAgICAvLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgUGhhc2UgMTogcGxhbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAvLyBMb2FkIHBlci1zb3VyY2UgY29sdW1uIGluZGV4ZXMgRklSU1Qgc28gYSBmaWxlIHRoYXQncyBnb25lIChkZWxldGVkIGJldHdlZW4gY2FsbGVyJ3MgbGlzdEZpbGVzIGFuZFxuICAgIC8vIG5vdykgZ2V0cyBjYXVnaHQgaGVyZSBhbmQgZXhjbHVkZWQgZnJvbSB0aGUgbWVyZ2UgZW50aXJlbHkuIEVhY2ggc291cmNlJ3MgbG9hZCBpcyB3cmFwcGVkIGluIGFcbiAgICAvLyB0cnkvY2F0Y2g7IG9uIGZhaWx1cmUgd2UgbWFyayB0aGUgc291cmNlIGJhZCwgbG9nIGEgXCJza2lwcGVkXCIgbGluZSwgYW5kIHRoZSByZXN0IG9mIHBsYW5uaW5nICtcbiAgICAvLyBleGVjdXRlIHByZXRlbmRzIHRoZSBzb3VyY2UgZG9lc24ndCBleGlzdC4gVGhlIGNhbGxlciBvbmx5IGRlbGV0ZXMgaW5wdXRzIHRoYXQgd2VyZSBhY3R1YWxseSB1c2VkLlxuICAgIGNvbnN0IHNvdXJjZU9rID0gbmV3IEFycmF5PGJvb2xlYW4+KGNvbmZpZy5zb3VyY2VzLmxlbmd0aCkuZmlsbCh0cnVlKTtcbiAgICBjb25zdCBpbmRleGVzUGVyU291cmNlOiBNYXA8c3RyaW5nLCBDb2x1bW5JbmRleD5bXSA9IGF3YWl0IFByb21pc2UuYWxsKGNvbmZpZy5zb3VyY2VzLm1hcChhc3luYyAoc3JjLCBzaSkgPT4ge1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgQ29sdW1uSW5kZXg+KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChzcmMuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoYyA9PiBjLmNvbHVtbiAhPT0gS0VZX0NPTFVNTilcbiAgICAgICAgICAgICAgICAubWFwKGFzeW5jIGMgPT4geyBtYXAuc2V0KGMuY29sdW1uLCBhd2FpdCBzcmMuZ2V0Q29sdW1uSW5kZXgoYy5jb2x1bW4pKTsgfSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBzb3VyY2VPa1tzaV0gPSBmYWxzZTtcbiAgICAgICAgICAgIGxvZyhgJHttYWdlbnRhKFwic2tpcHBlZFwiKX0gJHtjb25maWcuc291cmNlTmFtZXNbc2ldfTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgICAgIC8vIFN0YWNrIGdvZXMgc3RyYWlnaHQgdG8gY29uc29sZSAobm90IHRoZSBidWZmZXJlZCBzdGVwIGxvZykgc28gdGhlIG1lcmdlIHN1bW1hcnkgc3RheXNcbiAgICAgICAgICAgIC8vIHJlYWRhYmxlIGJ1dCB3ZSBjYW4gc3RpbGwgdHJhY2Ugd2hlcmUgdGhlIGZhaWx1cmUgY2FtZSBmcm9tLlxuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7Y29uZmlnLmNvbGxlY3Rpb25OYW1lfSBza2lwcGVkICR7Y29uZmlnLnNvdXJjZU5hbWVzW3NpXX06YCwgKGUgYXMgRXJyb3IpLnN0YWNrIHx8IGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfSkpO1xuICAgIGNvbnN0IHVzZWRTb3VyY2VOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGZvciAobGV0IHNpID0gMDsgc2kgPCBjb25maWcuc291cmNlcy5sZW5ndGg7IHNpKyspIHtcbiAgICAgICAgaWYgKHNvdXJjZU9rW3NpXSkgdXNlZFNvdXJjZU5hbWVzLmFkZChjb25maWcuc291cmNlTmFtZXNbc2ldKTtcbiAgICB9XG5cbiAgICAvLyBBZ2dyZWdhdGUga2V5VGltZXMgKyBkZWxldGVUaW1lcyBhY3Jvc3MgR09PRCBzb3VyY2VzIG9ubHkgKG1heCBwZXIga2V5KS4gQSBiYWQgc291cmNlJ3MgY2FjaGVkXG4gICAgLy8gbWV0YWRhdGEgbWlnaHQgY2xhaW0gYSBrZXkgYXMgbmV3ZXN0LCBidXQgd2UgY2FuJ3QgYWN0dWFsbHkgcmVhZCBpdHMgY2VsbHMg4oCUIGxldHRpbmcgaXQgd2luIHRoZVxuICAgIC8vIHRpbWUgcmVzb2x1dGlvbiB3b3VsZCBqdXN0IGRyb3AgdGhhdCBrZXkgb3V0IG9mIHRoZSBvdXRwdXQuXG4gICAgY29uc3QgZGVsZXRlVGltZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgY29uc3Qga2V5VGltZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgZm9yIChsZXQgc2kgPSAwOyBzaSA8IGNvbmZpZy5zb3VyY2VzLmxlbmd0aDsgc2krKykge1xuICAgICAgICBpZiAoIXNvdXJjZU9rW3NpXSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IHNyYyA9IGNvbmZpZy5zb3VyY2VzW3NpXTtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdF0gb2Ygc3JjLmtleVRpbWVzKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0ga2V5VGltZS5nZXQoayk7XG4gICAgICAgICAgICBpZiAocHJldiA9PT0gdW5kZWZpbmVkIHx8IHQgPiBwcmV2KSBrZXlUaW1lLnNldChrLCB0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3JjLmRlbGV0ZVRpbWVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB0XSBvZiBzcmMuZGVsZXRlVGltZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gZGVsZXRlVGltZS5nZXQoayk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXYgPT09IHVuZGVmaW5lZCB8fCB0ID4gcHJldikgZGVsZXRlVGltZS5zZXQoaywgdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMaXZlIGtleXMgKG5ld2VzdCBzZXQgc3RyaWN0bHkgbmV3ZXIgdGhhbiBuZXdlc3QgZGVsZXRlKSArIHRvbWJzdG9uZXMgdG8gY2FycnkgZm9yd2FyZCAobmV3ZXN0XG4gICAgLy8gZXZlbnQgaXMgYSBkZWxldGUgYW5kIHRoZSBtZXJnZSBkb2Vzbid0IGluY2x1ZGUgdGhlIG9sZGVzdCBkYXRhIOKAlCB0aGF0J3MgdGhlIGNhbGxlcidzIGNhbGwpLlxuICAgIGNvbnN0IGxpdmVLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2ssIHRdIG9mIGtleVRpbWUpIHtcbiAgICAgICAgY29uc3QgZFQgPSBkZWxldGVUaW1lLmdldChrKSA/PyAtSW5maW5pdHk7XG4gICAgICAgIGlmICh0ID4gZFQpIGxpdmVLZXlzLnB1c2goayk7XG4gICAgfVxuICAgIGNvbnN0IGNhcnJpZWREZWxldGVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICBmb3IgKGNvbnN0IFtrLCBkVF0gb2YgZGVsZXRlVGltZSkge1xuICAgICAgICBjb25zdCBzVCA9IGtleVRpbWUuZ2V0KGspID8/IC1JbmZpbml0eTtcbiAgICAgICAgaWYgKGRUID49IHNUKSBjYXJyaWVkRGVsZXRlcy5zZXQoaywgZFQpO1xuICAgIH1cblxuICAgIC8vIEFsbCBkaXN0aW5jdCB2YWx1ZSBjb2x1bW5zIGZyb20gR09PRCBzb3VyY2VzIChLRVlfQ09MVU1OIGV4Y2x1ZGVkIOKAlCBpdCdzIGFkZGVkIGF0IGZpbGUtYXNzZW1ibHlcbiAgICAvLyB0aW1lKS4gT3JkZXI6IGZpcnN0LXNlZW4sIG1hdGNoaW5nIHRoZSBleGlzdGluZyBidWlsZGVycy5cbiAgICBjb25zdCBhbGxDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHNlZW5Db2xzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChsZXQgc2kgPSAwOyBzaSA8IGNvbmZpZy5zb3VyY2VzLmxlbmd0aDsgc2krKykge1xuICAgICAgICBpZiAoIXNvdXJjZU9rW3NpXSkgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBjb25maWcuc291cmNlc1tzaV0uY29sdW1ucykge1xuICAgICAgICAgICAgaWYgKGMuY29sdW1uID09PSBLRVlfQ09MVU1OIHx8IHNlZW5Db2xzLmhhcyhjLmNvbHVtbikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgc2VlbkNvbHMuYWRkKGMuY29sdW1uKTtcbiAgICAgICAgICAgIGFsbENvbHVtbnMucHVzaChjLmNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3IgZWFjaCBsaXZlIGtleSwgZm9yIGVhY2ggY29sdW1uLCBmaW5kIHRoZSB3aW5uaW5nIHNvdXJjZTogYW1vbmcgc291cmNlcyB0aGF0IGhhdmUgdGhpcyBrZXksIHRoZVxuICAgIC8vIG9uZSB3aG9zZSBrZXlUaW1lIGlzIGxhcmdlc3QgQU5EIHdob3NlIGNvbHVtbi1pbmRleCByZXBvcnRzIG5vbi1BQlNFTlQuIFJlY29yZCBzb3VyY2UgKyBzb3VyY2VSb3cgK1xuICAgIC8vIGJ5dGVMZW4gKyB0eXBlIHNvIHRoZSBwbGFubmVyIGNhbiBzaXplIG9mZnNldHMgYW5kIHRoZSBleGVjdXRvciBjYW4gY29weSB0aGUgYnl0ZXMuXG4gICAgdHlwZSBDZWxsQ2hvaWNlID0geyBzb3VyY2VJZHg6IG51bWJlcjsgc291cmNlUm93OiBudW1iZXI7IGJ5dGVMZW46IG51bWJlcjsgdHlwZTogbnVtYmVyIH07XG4gICAgY29uc3QgY2VsbHNQZXJLZXkgPSBuZXcgTWFwPHN0cmluZywgKENlbGxDaG9pY2UgfCB1bmRlZmluZWQpW10+KCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgbGl2ZUtleXMpIHtcbiAgICAgICAgY29uc3QgY2VsbHM6IChDZWxsQ2hvaWNlIHwgdW5kZWZpbmVkKVtdID0gbmV3IEFycmF5KGFsbENvbHVtbnMubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgY2kgPSAwOyBjaSA8IGFsbENvbHVtbnMubGVuZ3RoOyBjaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb2wgPSBhbGxDb2x1bW5zW2NpXTtcbiAgICAgICAgICAgIGxldCBiZXN0VGltZSA9IC1JbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXN0OiBDZWxsQ2hvaWNlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgZm9yIChsZXQgc2kgPSAwOyBzaSA8IGNvbmZpZy5zb3VyY2VzLmxlbmd0aDsgc2krKykge1xuICAgICAgICAgICAgICAgIGlmICghc291cmNlT2tbc2ldKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBzcmMgPSBjb25maWcuc291cmNlc1tzaV07XG4gICAgICAgICAgICAgICAgY29uc3QgdCA9IHNyYy5rZXlUaW1lcy5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodCA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dJZHggPSBzcmMucm93T2ZLZXkoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAocm93SWR4ID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IGluZGV4ZXNQZXJTb3VyY2Vbc2ldLmdldChjb2wpO1xuICAgICAgICAgICAgICAgIGlmICghaWR4KSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gaWR4LnR5cGVzW3Jvd0lkeF07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFRZUEVfQUJTRU5UX1RBRykgY29udGludWU7XG4gICAgICAgICAgICAgICAgaWYgKHQgPiBiZXN0VGltZSkge1xuICAgICAgICAgICAgICAgICAgICBiZXN0VGltZSA9IHQ7XG4gICAgICAgICAgICAgICAgICAgIGJlc3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJZHg6IHNpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUm93OiByb3dJZHgsXG4gICAgICAgICAgICAgICAgICAgICAgICBieXRlTGVuOiBpZHgub2Zmc2V0c1tyb3dJZHggKyAxXSAtIGlkeC5vZmZzZXRzW3Jvd0lkeF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNlbGxzW2NpXSA9IGJlc3Q7XG4gICAgICAgIH1cbiAgICAgICAgY2VsbHNQZXJLZXkuc2V0KGtleSwgY2VsbHMpO1xuICAgIH1cblxuICAgIC8vIFNvcnQgbGl2ZSBrZXlzIGxleGljb2dyYXBoaWNhbGx5IHNvIGVhY2ggb3V0cHV0IGZpbGUgaXMga2V5LWNvbnRpZ3VvdXMgKHRpZ2h0IG1pbktleS9tYXhLZXkgKyBmYXN0XG4gICAgLy8gc2luZ2xlLWtleSByZWFkcyB2aWEgaGVhZGVyIHNraXApLlxuICAgIGxpdmVLZXlzLnNvcnQoKGEsIGIpID0+IGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwKTtcblxuICAgIC8vIFBlci1rZXkgZXN0aW1hdGVkIGJ5dGVzIGZvciBwYXJ0aXRpb24gY3V0dGluZzogS0VZX0NPTFVNTiBjZWxsICsgcGVyIHZhbHVlLWNvbHVtbiBjZWxsIChieXRlcyArIDVCXG4gICAgLy8gb3ZlcmhlYWQpICsgVElNRV9DT0xVTU4gY2VsbC4gUm91Z2gg4oCUIG9ubHkgbmVlZHMgdG8ga2VlcCBlYWNoIG91dHB1dCBuZWFyIHRoZSB0YXJnZXQuXG4gICAgZnVuY3Rpb24ga2V5VG90YWxCeXRlcyhrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gY2VsbHNQZXJLZXkuZ2V0KGtleSkhO1xuICAgICAgICBsZXQgdG90YWwgPSBrZXkubGVuZ3RoICogMiArIFBFUl9WQUxVRV9PVkVSSEVBRDtcbiAgICAgICAgZm9yIChjb25zdCBjZWxsIG9mIGNlbGxzKSB0b3RhbCArPSAoY2VsbCA/IGNlbGwuYnl0ZUxlbiA6IDApICsgUEVSX1ZBTFVFX09WRVJIRUFEO1xuICAgICAgICB0b3RhbCArPSA4ICsgUEVSX1ZBTFVFX09WRVJIRUFEO1xuICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgfVxuXG4gICAgLy8gV2FsayBzb3J0ZWQga2V5cywgY3V0IGVhY2ggZmlsZSB3aGVuIGFjY3VtdWxhdGVkIGJ5dGVzIHdvdWxkIGV4Y2VlZCB0YXJnZXRGaWxlQnl0ZXMuIEEgc2luZ2xlIGtleVxuICAgIC8vIGxhcmdlciB0aGFuIHRoZSB0YXJnZXQgc3RpbGwgYmVjb21lcyBpdHMgb3duIChvdmVyc2l6ZWQpIGZpbGUg4oCUIHdlIG5ldmVyIHNwbGl0IHdpdGhpbiBhIGtleS5cbiAgICBjb25zdCBmaWxlS2V5UmFuZ2VzOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH1bXSA9IFtdO1xuICAgIHtcbiAgICAgICAgbGV0IGNodW5rU3RhcnQgPSAwO1xuICAgICAgICBsZXQgY2h1bmtCeXRlcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGl2ZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGtiID0ga2V5VG90YWxCeXRlcyhsaXZlS2V5c1tpXSk7XG4gICAgICAgICAgICBpZiAoaSA+IGNodW5rU3RhcnQgJiYgY2h1bmtCeXRlcyArIGtiID4gdGFyZ2V0RmlsZUJ5dGVzKSB7XG4gICAgICAgICAgICAgICAgZmlsZUtleVJhbmdlcy5wdXNoKHsgc3RhcnQ6IGNodW5rU3RhcnQsIGVuZDogaSB9KTtcbiAgICAgICAgICAgICAgICBjaHVua1N0YXJ0ID0gaTtcbiAgICAgICAgICAgICAgICBjaHVua0J5dGVzID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNodW5rQnl0ZXMgKz0ga2I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpdmVLZXlzLmxlbmd0aCA+IGNodW5rU3RhcnQpIGZpbGVLZXlSYW5nZXMucHVzaCh7IHN0YXJ0OiBjaHVua1N0YXJ0LCBlbmQ6IGxpdmVLZXlzLmxlbmd0aCB9KTtcbiAgICB9XG5cbiAgICAvLyBCdWlsZCBwZXItZmlsZSBwbGFuczogb2Zmc2V0cy90eXBlcy9jb3B5LXJ1bnMgcGVyIGNvbHVtbi5cbiAgICBjb25zdCBwbGFucyA9IGZpbGVLZXlSYW5nZXMubWFwKHJhbmdlID0+IGJ1aWxkT3V0cHV0UGxhbihyYW5nZSwgbGl2ZUtleXMsIGNlbGxzUGVyS2V5LCBhbGxDb2x1bW5zLCBrZXlUaW1lKSk7XG5cbiAgICBsb2coYCR7bWFnZW50YShcInBsYW5cIil9OiAke2Zvcm1hdE51bWJlcihsaXZlS2V5cy5sZW5ndGgpfSBsaXZlIGtleXMsICR7cGxhbnMubGVuZ3RofSBvdXRwdXQgZmlsZShzKSwgJHtmb3JtYXROdW1iZXIoY2FycmllZERlbGV0ZXMuc2l6ZSl9IHRvbWJzdG9uZXMgY2FycmllZGApO1xuXG4gICAgLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIFBoYXNlIDI6IGV4ZWN1dGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgLy8gR3JvdXAgb3V0cHV0IGZpbGVzIGludG8gYmF0Y2hlcyB0aGF0IGZpdCB3aXRoaW4gdGFyZ2V0QmF0Y2hCeXRlcyBzbyB3ZSByZWFkIGlucHV0cyBvbmNlIHBlciBiYXRjaFxuICAgIC8vIChhbmQgc2tpcCBpbnB1dHMgdGhhdCBjb250cmlidXRlIG5vdGhpbmcgdG8gdGhpcyBiYXRjaCkuXG4gICAgY29uc3QgYmF0Y2hlczogUGxhbm5lZE91dHB1dEZpbGVbXVtdID0gW107XG4gICAge1xuICAgICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgICB3aGlsZSAoc3RhcnQgPCBwbGFucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBlbmQgPSBzdGFydCArIDE7XG4gICAgICAgICAgICBsZXQgdG90YWwgPSBwbGFuc1tzdGFydF0uZXN0aW1hdGVkRmlsZUJ5dGVzO1xuICAgICAgICAgICAgd2hpbGUgKGVuZCA8IHBsYW5zLmxlbmd0aCAmJiB0b3RhbCArIHBsYW5zW2VuZF0uZXN0aW1hdGVkRmlsZUJ5dGVzIDw9IHRhcmdldEJhdGNoQnl0ZXMpIHtcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBwbGFuc1tlbmRdLmVzdGltYXRlZEZpbGVCeXRlcztcbiAgICAgICAgICAgICAgICBlbmQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJhdGNoZXMucHVzaChwbGFucy5zbGljZShzdGFydCwgZW5kKSk7XG4gICAgICAgICAgICBzdGFydCA9IGVuZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHM6IFBsYW5uZWRNZXJnZU91dHB1dFtdID0gW107XG4gICAgZm9yIChsZXQgYmkgPSAwOyBiaSA8IGJhdGNoZXMubGVuZ3RoOyBiaSsrKSB7XG4gICAgICAgIGNvbnN0IGJhdGNoID0gYmF0Y2hlc1tiaV07XG4gICAgICAgIGNvbnN0IGJhdGNoQnl0ZXMgPSBiYXRjaC5yZWR1Y2UoKGEsIHApID0+IGEgKyBwLmVzdGltYXRlZEZpbGVCeXRlcywgMCk7XG4gICAgICAgIGxvZyhgJHttYWdlbnRhKFwiYmF0Y2hcIil9ICR7YmkgKyAxfS8ke2JhdGNoZXMubGVuZ3RofTogJHtiYXRjaC5sZW5ndGh9IG91dHB1dCBmaWxlKHMpLCB+JHtmbXRCeXRlcyhiYXRjaEJ5dGVzKX0gYnVkZ2V0YCk7XG4gICAgICAgIGNvbnN0IGJhdGNoT3V0cHV0cyA9IGF3YWl0IGV4ZWN1dGVCYXRjaChiYXRjaCwgaW5kZXhlc1BlclNvdXJjZSwgY29uZmlnLnNvdXJjZXMsIGNvbmZpZy5zb3VyY2VOYW1lcywgY29uZmlnLndyaXRlRmlsZSwgbG9nKTtcbiAgICAgICAgb3V0cHV0cy5wdXNoKC4uLmJhdGNoT3V0cHV0cyk7XG4gICAgfVxuICAgIGNvbnN0IHdyaXR0ZW5CeXRlcyA9IG91dHB1dHMucmVkdWNlKChhLCBvKSA9PiBhICsgby5zaXplLCAwKTtcbiAgICBsb2coYCR7bWFnZW50YShcImV4ZWN1dGVcIil9OiAke291dHB1dHMubGVuZ3RofSBmaWxlKHMpLCAke2ZtdEJ5dGVzKHdyaXR0ZW5CeXRlcyl9IHdyaXR0ZW5gKTtcblxuICAgIHJldHVybiB7IG91dHB1dHMsIGNhcnJpZWREZWxldGVzLCB1c2VkU291cmNlTmFtZXMgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRPdXRwdXRQbGFuKFxuICAgIHJhbmdlOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0sXG4gICAgbGl2ZUtleXM6IHN0cmluZ1tdLFxuICAgIGNlbGxzUGVyS2V5OiBNYXA8c3RyaW5nLCAoeyBzb3VyY2VJZHg6IG51bWJlcjsgc291cmNlUm93OiBudW1iZXI7IGJ5dGVMZW46IG51bWJlcjsgdHlwZTogbnVtYmVyIH0gfCB1bmRlZmluZWQpW10+LFxuICAgIGFsbENvbHVtbnM6IHN0cmluZ1tdLFxuICAgIGtleVRpbWU6IE1hcDxzdHJpbmcsIG51bWJlcj4sXG4pOiBQbGFubmVkT3V0cHV0RmlsZSB7XG4gICAgY29uc3Qga2V5cyA9IGxpdmVLZXlzLnNsaWNlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpO1xuICAgIGNvbnN0IHJvd0NvdW50ID0ga2V5cy5sZW5ndGg7XG4gICAgY29uc3QgdGltZXMgPSBrZXlzLm1hcChrID0+IGtleVRpbWUuZ2V0KGspID8/IDApO1xuICAgIGNvbnN0IHNvdXJjZUNvdW50cyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICBjb25zdCBjb2x1bW5zOiBQbGFubmVkT3V0cHV0Q29sdW1uW10gPSBhbGxDb2x1bW5zLm1hcCgoY29sTmFtZSwgY2kpID0+IHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IG5ldyBVaW50MzJBcnJheShyb3dDb3VudCArIDEpO1xuICAgICAgICBjb25zdCB0eXBlcyA9IG5ldyBVaW50OEFycmF5KHJvd0NvdW50KTtcbiAgICAgICAgY29uc3QgcnVuczogQ29weVJ1bltdID0gW107XG4gICAgICAgIGxldCBvdXRwdXRCeXRlID0gMDtcbiAgICAgICAgbGV0IGN1cnJlbnRSdW46IENvcHlSdW4gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0gY2VsbHNQZXJLZXkuZ2V0KGtleXNbaV0pIVtjaV07XG4gICAgICAgICAgICBvZmZzZXRzW2ldID0gb3V0cHV0Qnl0ZTtcbiAgICAgICAgICAgIGlmICghY2VsbCkge1xuICAgICAgICAgICAgICAgIHR5cGVzW2ldID0gVFlQRV9BQlNFTlRfVEFHO1xuICAgICAgICAgICAgICAgIC8vIEFCU0VOVCBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBkYXRhIHNlY3Rpb24gYW5kIGJyZWFrcyBhbnkgZXh0ZW5kaW5nIHJ1bi5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJ1bikgeyBydW5zLnB1c2goY3VycmVudFJ1bik7IGN1cnJlbnRSdW4gPSB1bmRlZmluZWQ7IH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHR5cGVzW2ldID0gY2VsbC50eXBlO1xuICAgICAgICAgICAgc291cmNlQ291bnRzLnNldChjZWxsLnNvdXJjZUlkeCwgKHNvdXJjZUNvdW50cy5nZXQoY2VsbC5zb3VyY2VJZHgpID8/IDApICsgMSk7XG4gICAgICAgICAgICAvLyBSTEU6IGV4dGVuZCB0aGUgY3VycmVudCBydW4gaWZmIHRoZSBuZXh0IGNlbGwgaXMgdGhlIG5leHQgcm93IG9mIHRoZSBzYW1lIHNvdXJjZSAoaXRzXG4gICAgICAgICAgICAvLyBzb3VyY2Utc2lkZSBieXRlcyBzaXQgaW1tZWRpYXRlbHkgYWZ0ZXIsIHNvIG9uZSByZWFkIHN1ZmZpY2VzKSBBTkQgbm9uLUFCU0VOVCAod2UgbmV2ZXJcbiAgICAgICAgICAgIC8vIGxhbmRlZCBpbiB0aGUgYnJlYWstcGF0aCBhYm92ZSkuXG4gICAgICAgICAgICBpZiAoY3VycmVudFJ1biAmJiBjdXJyZW50UnVuLnNvdXJjZUlkeCA9PT0gY2VsbC5zb3VyY2VJZHggJiYgY3VycmVudFJ1bi5zb3VyY2VFbmRSb3cgPT09IGNlbGwuc291cmNlUm93KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFJ1bi5zb3VyY2VFbmRSb3cgPSBjZWxsLnNvdXJjZVJvdyArIDE7XG4gICAgICAgICAgICAgICAgY3VycmVudFJ1bi5ieXRlTGVuZ3RoICs9IGNlbGwuYnl0ZUxlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSdW4pIHJ1bnMucHVzaChjdXJyZW50UnVuKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UnVuID0ge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2VJZHg6IGNlbGwuc291cmNlSWR4LFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdGFydFJvdzogY2VsbC5zb3VyY2VSb3csXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUVuZFJvdzogY2VsbC5zb3VyY2VSb3cgKyAxLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRCeXRlU3RhcnQ6IG91dHB1dEJ5dGUsXG4gICAgICAgICAgICAgICAgICAgIGJ5dGVMZW5ndGg6IGNlbGwuYnl0ZUxlbixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0cHV0Qnl0ZSArPSBjZWxsLmJ5dGVMZW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRSdW4pIHJ1bnMucHVzaChjdXJyZW50UnVuKTtcbiAgICAgICAgb2Zmc2V0c1tyb3dDb3VudF0gPSBvdXRwdXRCeXRlO1xuXG4gICAgICAgIHJldHVybiB7IG5hbWU6IGNvbE5hbWUsIG9mZnNldHMsIHR5cGVzLCBkYXRhTGVuZ3RoOiBvdXRwdXRCeXRlLCBydW5zIH07XG4gICAgfSk7XG5cbiAgICAvLyBGaWxlIHNpemUgZXN0aW1hdGU6IEtFWV9DT0xVTU4gYmxvYiArIHZhbHVlIGNvbHVtbiBibG9icyArIFRJTUVfQ09MVU1OIGJsb2IgKyBoZWFkZXIgZ3Vlc3MuIFVzZWQgdG9cbiAgICAvLyBiYXRjaCBvdXRwdXQgZmlsZXM7IG9ubHkgbmVlZHMgdG8gYmUgY2xvc2UsIG5vdCBleGFjdC5cbiAgICBsZXQgZXN0aW1hdGVkRmlsZUJ5dGVzID0gNCArIDIwNDg7XG4gICAgbGV0IGtleUJ5dGVzID0gMDtcbiAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykga2V5Qnl0ZXMgKz0gay5sZW5ndGggKiAyO1xuICAgIGVzdGltYXRlZEZpbGVCeXRlcyArPSBjb2x1bW5JbmRleEJ5dGVMZW5ndGgocm93Q291bnQpICsga2V5Qnl0ZXM7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykgZXN0aW1hdGVkRmlsZUJ5dGVzICs9IGNvbHVtbkluZGV4Qnl0ZUxlbmd0aChyb3dDb3VudCkgKyBjb2wuZGF0YUxlbmd0aDtcbiAgICBlc3RpbWF0ZWRGaWxlQnl0ZXMgKz0gY29sdW1uSW5kZXhCeXRlTGVuZ3RoKHJvd0NvdW50KSArIHJvd0NvdW50ICogODtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXMsXG4gICAgICAgIHRpbWVzLFxuICAgICAgICBtaW5LZXk6IGtleXNbMF0gPz8gXCJcIixcbiAgICAgICAgbWF4S2V5OiBrZXlzW3Jvd0NvdW50IC0gMV0gPz8gXCJcIixcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZXN0aW1hdGVkRmlsZUJ5dGVzLFxuICAgICAgICBzb3VyY2VDb3VudHMsXG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUJhdGNoKFxuICAgIHBsYW5zOiBQbGFubmVkT3V0cHV0RmlsZVtdLFxuICAgIGluZGV4ZXNQZXJTb3VyY2U6IE1hcDxzdHJpbmcsIENvbHVtbkluZGV4PltdLFxuICAgIHNvdXJjZXM6IEJhc2VCdWxrRGF0YWJhc2VSZWFkZXJbXSxcbiAgICBzb3VyY2VOYW1lczogc3RyaW5nW10sXG4gICAgd3JpdGVGaWxlOiAoZGF0YTogQnVmZmVyKSA9PiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBzaXplOiBudW1iZXIgfT4sXG4gICAgbG9nOiAobGluZTogc3RyaW5nKSA9PiB2b2lkLFxuKTogUHJvbWlzZTxQbGFubmVkTWVyZ2VPdXRwdXRbXT4ge1xuICAgIC8vIEFsbG9jYXRlIG9uZSBiaWcgYnVmZmVyIHBlciAob3V0cHV0IGZpbGUsIGNvbHVtbikg4oCUIG9mZnNldHMgKyB0eXBlcyBhcmUgd3JpdHRlbiBpbW1lZGlhdGVseSBmcm9tXG4gICAgLy8gdGhlIHBsYW4sIHRoZSBkYXRhIHNlY3Rpb24gaXMgZmlsbGVkIGJlbG93IGJ5IHRoZSBwZXItc291cmNlIGNvcHkgbG9vcC5cbiAgICB0eXBlIENvbHVtbkJ1ZmZlciA9IHsgbmFtZTogc3RyaW5nOyBibG9iOiBCdWZmZXI7IGRhdGFTdGFydDogbnVtYmVyIH07XG4gICAgY29uc3QgYmxvYnNQZXJGaWxlOiBDb2x1bW5CdWZmZXJbXVtdID0gcGxhbnMubWFwKHBsYW4gPT4gcGxhbi5jb2x1bW5zLm1hcChjb2wgPT4ge1xuICAgICAgICBjb25zdCBpbmRleFNpemUgPSBjb2x1bW5JbmRleEJ5dGVMZW5ndGgoY29sLm9mZnNldHMubGVuZ3RoIC0gMSk7XG4gICAgICAgIGNvbnN0IGJsb2IgPSBCdWZmZXIuYWxsb2MoaW5kZXhTaXplICsgY29sLmRhdGFMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbC5vZmZzZXRzLmxlbmd0aDsgaSsrKSBibG9iLndyaXRlVUludDMyTEUoY29sLm9mZnNldHNbaV0sIGkgKiA0KTtcbiAgICAgICAgYmxvYi5zZXQoY29sLnR5cGVzLCA0ICogY29sLm9mZnNldHMubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIHsgbmFtZTogY29sLm5hbWUsIGJsb2IsIGRhdGFTdGFydDogaW5kZXhTaXplIH07XG4gICAgfSkpO1xuXG4gICAgLy8gRm9yIGVhY2ggc291cmNlLCBjb3B5IGl0cyBieXRlIHJ1bnMgaW50byBldmVyeSBvdXRwdXQgY29sdW1uIHdob3NlIHBsYW4gcmVmZXJlbmNlcyBpdC4gQSBzb3VyY2VcbiAgICAvLyB0aGF0J3Mgbm90IHJlZmVyZW5jZWQgYnkgYW55IGNvbHVtbiBpbiB0aGlzIGJhdGNoIGlzIHNraXBwZWQgZW50aXJlbHkg4oCUIHRoYXQncyB0aGUgcG9pbnQgb2YgdGhlXG4gICAgLy8gYmF0Y2ggc2hhcGU6IHJlYWQgMjBHQiBvZiBpbnB1dHMgb25seSBvbmNlIGZvciB0aGUgd2hvbGUgcGFzcywgbm90IG9uY2UgcGVyIG91dHB1dC5cbiAgICBmb3IgKGxldCBzaSA9IDA7IHNpIDwgc291cmNlcy5sZW5ndGg7IHNpKyspIHtcbiAgICAgICAgbGV0IGNvbnRyaWJ1dGVzID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGZpID0gMDsgZmkgPCBwbGFucy5sZW5ndGggJiYgIWNvbnRyaWJ1dGVzOyBmaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBwbGFuc1tmaV0uY29sdW1ucykge1xuICAgICAgICAgICAgICAgIGlmIChjb2wucnVucy5zb21lKHIgPT4gci5zb3VyY2VJZHggPT09IHNpKSkgeyBjb250cmlidXRlcyA9IHRydWU7IGJyZWFrOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb250cmlidXRlcykgY29udGludWU7XG5cbiAgICAgICAgbGV0IGJ5dGVzUmVhZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGZpID0gMDsgZmkgPCBwbGFucy5sZW5ndGg7IGZpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBsYW4gPSBwbGFuc1tmaV07XG4gICAgICAgICAgICBmb3IgKGxldCBjaSA9IDA7IGNpIDwgcGxhbi5jb2x1bW5zLmxlbmd0aDsgY2krKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbCA9IHBsYW4uY29sdW1uc1tjaV07XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gYmxvYnNQZXJGaWxlW2ZpXVtjaV07XG4gICAgICAgICAgICAgICAgY29uc3QgY29sSW5kZXggPSBpbmRleGVzUGVyU291cmNlW3NpXS5nZXQoY29sLm5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghY29sSW5kZXgpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcnVuIG9mIGNvbC5ydW5zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChydW4uc291cmNlSWR4ICE9PSBzaSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gYXdhaXQgY29sSW5kZXgucmVhZFZhbHVlQnl0ZXMocnVuLnNvdXJjZVN0YXJ0Um93LCBydW4uc291cmNlRW5kUm93KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCAhPT0gcnVuLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtydW4uYnl0ZUxlbmd0aH0gYnl0ZXMgZnJvbSBzb3VyY2UgIyR7c2l9ICgke3NvdXJjZU5hbWVzW3NpXX0pIGNvbHVtbiAke2NvbC5uYW1lfSByb3dzIFske3J1bi5zb3VyY2VTdGFydFJvd30sICR7cnVuLnNvdXJjZUVuZFJvd30pLCBnb3QgJHtieXRlcy5sZW5ndGh9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnl0ZXMuY29weSh0YXJnZXQuYmxvYiwgdGFyZ2V0LmRhdGFTdGFydCArIHJ1bi5vdXRwdXRCeXRlU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICBieXRlc1JlYWQgKz0gYnl0ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsb2coYCR7bWFnZW50YShcImlucHV0XCIpfSAke3NpICsgMX0vJHtzb3VyY2VzLmxlbmd0aH0gJHtzb3VyY2VOYW1lc1tzaV19OiAke2ZtdEJ5dGVzKGJ5dGVzUmVhZCl9IHJlYWRgKTtcbiAgICB9XG5cbiAgICAvLyBBc3NlbWJsZSArIHdyaXRlIGVhY2ggb3V0cHV0IGZpbGUgaW4gdGhpcyBiYXRjaC5cbiAgICBjb25zdCBvdXRwdXRzOiBQbGFubmVkTWVyZ2VPdXRwdXRbXSA9IFtdO1xuICAgIGZvciAobGV0IGZpID0gMDsgZmkgPCBwbGFucy5sZW5ndGg7IGZpKyspIHtcbiAgICAgICAgY29uc3QgcGxhbiA9IHBsYW5zW2ZpXTtcbiAgICAgICAgY29uc3QgdmFsdWVDb2x1bW5zID0gYmxvYnNQZXJGaWxlW2ZpXS5tYXAoYiA9PiAoeyBuYW1lOiBiLm5hbWUsIGJsb2I6IGIuYmxvYiB9KSk7XG4gICAgICAgIGNvbnN0IGZpbGVCdWYgPSBhc3NlbWJsZVBsYW5uZWRGaWxlKHsgdmFsdWVDb2x1bW5zLCBrZXlzOiBwbGFuLmtleXMsIHRpbWVzOiBwbGFuLnRpbWVzIH0pO1xuICAgICAgICBjb25zdCB7IG5hbWUsIHNpemUgfSA9IGF3YWl0IHdyaXRlRmlsZShmaWxlQnVmKTtcbiAgICAgICAgY29uc3Qgc291cmNlc05hbWVkID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICAgICAgZm9yIChjb25zdCBbc2ksIG5dIG9mIHBsYW4uc291cmNlQ291bnRzKSBzb3VyY2VzTmFtZWQuc2V0KHNvdXJjZU5hbWVzW3NpXSwgbik7XG4gICAgICAgIGxvZyhgJHttYWdlbnRhKFwib3V0cHV0XCIpfSAke2ZpICsgMX0vJHtwbGFucy5sZW5ndGh9OiAke2Zvcm1hdE51bWJlcihwbGFuLmtleXMubGVuZ3RoKX0gcm93cyBmcm9tICR7cGxhbi5zb3VyY2VDb3VudHMuc2l6ZX0gaW5wdXQocyksICR7Zm10Qnl0ZXMoc2l6ZSl9YCk7XG4gICAgICAgIG91dHB1dHMucHVzaCh7IG5hbWUsIG1pbktleTogcGxhbi5taW5LZXksIG1heEtleTogcGxhbi5tYXhLZXksIHJvd0NvdW50OiBwbGFuLmtleXMubGVuZ3RoLCBzaXplLCBzb3VyY2VzOiBzb3VyY2VzTmFtZWQgfSk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXRzO1xufVxuIl19
352
- /* _JS_SOURCE_HASH = "53c9f5218b97a93fb3a90d6b40f2b4fb02fe616a68805234bfafbdcdf1851b8f"; */
352
+ /* _JS_SOURCE_HASH = "a47b64af2f351fc3f733f7f11152d7e852e7e7ca892b4960d928f6960e7a4740"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.nullJoin = exports.READER_SIGNALS = exports.BulkDatabaseReader = void 0;
4
4
  const WriteOverlay_1 = require("./WriteOverlay");
@@ -303,4 +303,4 @@ class BulkDatabaseReader {
303
303
  exports.BulkDatabaseReader = BulkDatabaseReader;
304
304
  exports.READER_SIGNALS = { LOAD: LOAD_SIGNAL, OVERLAY: OVERLAY_SIGNAL };
305
305
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVsa0RhdGFiYXNlUmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQnVsa0RhdGFiYXNlUmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlEQUF1RDtBQUV2RCxrRUFBaUY7QUFDakYsd0VBQXFFO0FBRXJFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQztBQUM5QyxNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUUxQyxTQUFTLFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUNsQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFtUlEsNEJBQVE7QUExUWpCLHFHQUFxRztBQUNyRyxxR0FBcUc7QUFDckcscUdBQXFHO0FBQ3JHLGtDQUFrQztBQUNsQyxNQUFhLGtCQUFrQjtJQUMzQixZQUE2QixHQUFpQjtRQUFqQixRQUFHLEdBQUgsR0FBRyxDQUFjO1FBRzlCLFlBQU8sR0FBRyxJQUFJLDJCQUFZLEVBQUUsQ0FBQztRQUVyQyxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osZ0JBQVcsR0FBRyxJQUFJLEdBQUcsRUFBMkQsQ0FBQztRQUVqRixtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFFbkMsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBb0Q1QiwrRkFBK0Y7UUFDL0Ysc0ZBQXNGO1FBQzlFLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO0lBakVzQixDQUFDO0lBYW5ELElBQUksSUFBSSxLQUFhLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUksSUFBSSxLQUFtQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLGNBQWMsS0FBYSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXJELFFBQVEsQ0FBQyxRQUF3QixFQUFFLFVBQTJDLEVBQUU7UUFDNUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUI7WUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTs7Z0JBQUMsT0FBQSxJQUFJLENBQUMsR0FBRyxDQUNyQyxNQUFBLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsbUNBQUksQ0FBQyxRQUFRLEVBQzlDLE1BQUEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxtQ0FBSSxDQUFDLFFBQVEsQ0FDcEQsQ0FBQTthQUFBLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVyxFQUFFLEdBQTRCLEVBQUUsSUFBWTtRQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFXOztRQUNwQixPQUFPLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFDLFVBQVUsbURBQUcsR0FBRyxDQUFDLG1DQUFJLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVc7O1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxzQkFBTyxDQUFDO1FBQ2xDLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUNBQUksS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVzs7UUFDakIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLEVBQUUsS0FBSyxTQUFTO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNyQixDQUFDO0lBS0QsZUFBZTtRQUNYLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssQ0FBQztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxDQUFDO1lBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUNELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEdBQVcsRUFBRSxPQUFpQzs7UUFDeEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxPQUFPLEtBQUssS0FBSztZQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7O1lBQzNDLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTztnQkFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFDLFVBQVUsbURBQUcsR0FBRyxDQUFDLG1DQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxvR0FBb0c7SUFDcEcsS0FBSyxDQUFDLE9BQU87UUFDVCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLHNCQUFPO2dCQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7O2dCQUN4QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBb0IsTUFBUztRQUN4QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxNQUFNO1lBQUUsT0FBTyxNQUFzRCxDQUFDO1FBQzFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hDLElBQUksSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFpRCxDQUFDO1FBQ2pHLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxPQUFPLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBQSxnQkFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBQSxlQUFHLEVBQUMsSUFBQSxtQkFBVSxFQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0ksQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUc7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQW9CLEdBQVcsRUFBRSxNQUFTOztRQUMxRCxPQUFPLE1BQUEsQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsMENBQUUsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQW9CLEdBQVcsRUFBRSxNQUFTO1FBQzdELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssc0JBQU87Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDOUMsSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlGLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsTUFBTSxDQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksT0FBTyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUEsZ0JBQUksRUFBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxzQkFBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFBLGVBQUcsRUFBQyxJQUFBLG1CQUFVLEVBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvSyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssc0JBQU87Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBaUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9HLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELG9HQUFvRztJQUNwRyxrQkFBa0IsQ0FBb0IsR0FBVyxFQUFFLE1BQVM7O1FBQ3hELE9BQU8sTUFBQSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQywwQ0FBRSxLQUFLLENBQUM7SUFDMUQsQ0FBQztJQUVELHFCQUFxQixDQUFvQixHQUFXLEVBQUUsTUFBUzs7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLHNCQUFPO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1lBQzlDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckIsTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RFLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxzQkFBTztnQkFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFpQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0csT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0MsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssc0JBQU87Z0JBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBaUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9HLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQsYUFBYSxDQUFvQixNQUFTO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksTUFBTTtZQUFFLE9BQU8sTUFBc0QsQ0FBQztRQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0Qyx1RkFBdUY7UUFDdkYsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFpRCxDQUFDO1FBQzNHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxpQkFBaUIsQ0FBb0IsR0FBVyxFQUFFLE1BQVM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssc0JBQU87Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxJQUFJLENBQUM7UUFDbkQsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN6QixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxrQkFBa0IsQ0FBb0IsTUFBUztRQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN6QixJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMvQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxvR0FBb0c7SUFDcEcsa0dBQWtHO0lBQ2xHLHdGQUF3RjtJQUN4RixjQUFjLENBQUMsRUFBaUMsSUFBVSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUUsS0FBSyxDQUFDLFlBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLHFEQUFxRCxDQUFDLENBQUM7UUFDaEgsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFxQjtRQUNwQyxPQUFPLG1CQUFtQixJQUFBLGdCQUFJLEVBQUMsSUFBQSxxQkFBWSxFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxJQUFBLGdCQUFJLEVBQUMsSUFBQSxxQkFBWSxFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pJLENBQUM7SUFFRCxrR0FBa0c7SUFDbEcsZ0dBQWdHO0lBQ2hHLG1CQUFtQjtJQUNYLGdCQUFnQixDQUFDLE1BQWM7O1FBQ25DLE1BQU0sS0FBSyxHQUFHLE1BQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsbUNBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUztZQUFFLE9BQU87UUFDNUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlILElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hILE1BQUEsTUFBQyxJQUFJLENBQUMsWUFBdUMsRUFBQyxLQUFLLGtEQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDO1lBQUUsT0FBTztRQUMzQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7Q0FDSjtBQW5RRCxnREFtUUM7QUFFWSxRQUFBLGNBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9hZGVkSW5kZXggfSBmcm9tIFwiLi9Mb2FkZWRJbmRleFwiO1xuaW1wb3J0IHsgREVMRVRFRCwgV3JpdGVPdmVybGF5IH0gZnJvbSBcIi4vV3JpdGVPdmVybGF5XCI7XG5pbXBvcnQgdHlwZSB7IFJlYWN0aXZlRGVwcyB9IGZyb20gXCIuL0J1bGtEYXRhYmFzZUJhc2VcIjtcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0VGltZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5pbXBvcnQgeyBibHVlLCByZWQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2xvZ0NvbG9yc1wiO1xuXG5jb25zdCBOVUxMID0gU3RyaW5nLmZyb21DaGFyQ29kZSgwKTtcbmNvbnN0IExPQURfU0lHTkFMID0gTlVMTCArIFwibG9hZFwiO1xuY29uc3QgT1ZFUkxBWV9TSUdOQUwgPSBOVUxMICsgXCJvdmVybGF5XCI7XG5jb25zdCBDT01QQUNUSU5HX1NJR05BTCA9IE5VTEwgKyBcImNvbXBhY3RpbmdcIjtcbmNvbnN0IFRSSUdHRVJfVEhST1RUTEVfRklSU1RfU1RFUF9NUyA9IDE2O1xuXG5mdW5jdGlvbiBudWxsSm9pbihhOiBzdHJpbmcsIGI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGEgKyBOVUxMICsgYjtcbn1cblxuZXhwb3J0IHR5cGUgUmVhZGVyQ29uZmlnID0ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXBzOiBSZWFjdGl2ZURlcHM7XG4gICAgLy8gU2VlIEJ1bGtEYXRhYmFzZTJDb25maWcubWF4VHJpZ2dlclRocm90dGxlTXMuXG4gICAgbWF4VHJpZ2dlclRocm90dGxlTXM/OiBudW1iZXI7XG59O1xuXG4vLyBPd25zIHRoZSBjdXJyZW50IExvYWRlZEluZGV4IGFuZCBXcml0ZU92ZXJsYXkgYW5kIHNlcnZlcyBldmVyeSByZWFkIChhc3luYyArIHN5bmMgcmVhY3RpdmUpLiBBcHBseVxuLy8gd3JpdGVzL2RlbGV0ZXMgdGhyb3VnaCBhcHBseVdyaXRlL2FwcGx5RGVsZXRlIHNvIHRoZSByaWdodCBzaWduYWxzIGZpcmUuIFRoZSBob3N0IHN3YXBzIGluIGEgZnJlc2hcbi8vIExvYWRlZEluZGV4IGF0b21pY2FsbHkgdmlhIHNldEluZGV4IG9uY2UgdGhlIG5ldyBvbmUgaGFzIGZ1bGx5IGJ1aWx0IOKAlCBubyBsYXp5IHJlYnVpbGQgb24gdGhlIG5leHRcbi8vIHJlYWQsIG5vIHN5bmNocm9ub3VzIGxhZyBzcGlrZS5cbmV4cG9ydCBjbGFzcyBCdWxrRGF0YWJhc2VSZWFkZXI8VCBleHRlbmRzIHsga2V5OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2ZnOiBSZWFkZXJDb25maWcpIHsgfVxuXG4gICAgcHVibGljIGluZGV4OiBMb2FkZWRJbmRleDxUPiB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3ZlcmxheSA9IG5ldyBXcml0ZU92ZXJsYXkoKTtcblxuICAgIHByaXZhdGUgZGF0YUdlbiA9IDA7XG4gICAgcHJpdmF0ZSBjb2x1bW5DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93bjsgdGltZTogbnVtYmVyIH1bXT4oKTtcblxuICAgIHByaXZhdGUgcGVuZGluZ1NpZ25hbHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIHRyaWdnZXJUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBjdXJyZW50VHJpZ2dlckRlbGF5ID0gMDtcbiAgICBwcml2YXRlIGxhc3RUcmlnZ2VyVGltZSA9IDA7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jZmcubmFtZTsgfVxuICAgIGdldCBkZXBzKCk6IFJlYWN0aXZlRGVwcyB7IHJldHVybiB0aGlzLmNmZy5kZXBzOyB9XG4gICAgZ2V0IGRhdGFHZW5lcmF0aW9uKCk6IG51bWJlciB7IHJldHVybiB0aGlzLmRhdGFHZW47IH1cblxuICAgIHNldEluZGV4KG5ld0luZGV4OiBMb2FkZWRJbmRleDxUPiwgb3B0aW9uczogeyBkcm9wU3RhbGVGYWxsYmFjaz86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXYgPSB0aGlzLmluZGV4O1xuICAgICAgICBpZiAocHJldiAmJiAhb3B0aW9ucy5kcm9wU3RhbGVGYWxsYmFjaykgbmV3SW5kZXguaW5oZXJpdFN0YWxlRnJvbShwcmV2KTtcbiAgICAgICAgdGhpcy5jZmcuZGVwcy5iYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXkuc3dlZXBDb3ZlcmVkKGtleSA9PiBNYXRoLm1heChcbiAgICAgICAgICAgICAgICBuZXdJbmRleC5yZWFkZXIua2V5VGltZXMuZ2V0KGtleSkgPz8gLUluZmluaXR5LFxuICAgICAgICAgICAgICAgIG5ld0luZGV4LnJlYWRlci5kZWxldGVUaW1lcy5nZXQoa2V5KSA/PyAtSW5maW5pdHksXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICAgIHRoaXMuZGF0YUdlbisrO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5DYWNoZS5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlU2lnbmFsKExPQURfU0lHTkFMKTtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZVNpZ25hbChPVkVSTEFZX1NJR05BTCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFwcGx5V3JpdGUoa2V5OiBzdHJpbmcsIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRpbWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB3YXNMaXZlID0gdGhpcy5pc0xpdmVOb3coa2V5KTtcbiAgICAgICAgY29uc3QgeyBpbnZhbGlkYXRlZENvbHVtbnMgfSA9IHRoaXMub3ZlcmxheS53cml0ZVJvdyhrZXksIHJvdywgdGltZSwgd2FzTGl2ZSk7XG4gICAgICAgIHRoaXMubm90aWZ5T3ZlcmxheU11dGF0aW9uKGtleSwgaW52YWxpZGF0ZWRDb2x1bW5zKTtcbiAgICB9XG5cbiAgICBhcHBseURlbGV0ZShrZXk6IHN0cmluZywgdGltZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdhc0xpdmUgPSB0aGlzLmlzTGl2ZU5vdyhrZXkpO1xuICAgICAgICBjb25zdCB7IGludmFsaWRhdGVkQ29sdW1ucyB9ID0gdGhpcy5vdmVybGF5LmRlbGV0ZUtleShrZXksIHRpbWUsIHdhc0xpdmUpO1xuICAgICAgICB0aGlzLm5vdGlmeU92ZXJsYXlNdXRhdGlvbihrZXksIGludmFsaWRhdGVkQ29sdW1ucyk7XG4gICAgfVxuXG4gICAgaXNLZXlXYXRjaGVkKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNmZy5kZXBzLmlzT2JzZXJ2ZWQ/LihrZXkpID8/IHRydWU7XG4gICAgfVxuXG4gICAgaXNMaXZlTm93KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGUgPSB0aGlzLm92ZXJsYXkuZ2V0KGtleSk7XG4gICAgICAgIGlmIChlKSByZXR1cm4gZS52YWx1ZSAhPT0gREVMRVRFRDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXg/LmlzTGl2ZShrZXkpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGxvY2FsVGltZShrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGUgPSB0aGlzLm92ZXJsYXkuZ2V0KGtleSk7XG4gICAgICAgIGlmIChlKSByZXR1cm4gZS50aW1lO1xuICAgICAgICBjb25zdCBzdCA9IHRoaXMuaW5kZXg/LnN0cmVhbVRpbWVzLmdldChrZXkpO1xuICAgICAgICBpZiAoc3QgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHN0O1xuICAgICAgICByZXR1cm4gLUluZmluaXR5O1xuICAgIH1cblxuICAgIC8vIENvdW50ZXIgKHNvIGNvbmN1cnJlbnQgLyBuZXN0ZWQgbWVyZ2VzIGluIHRoZSBzYW1lIGluc3RhbmNlIGNvbXBvc2UgY29ycmVjdGx5KS4gU2lnbmFsIGZpcmVzXG4gICAgLy8gaW1tZWRpYXRlbHksIG5vdCB0aHJvdWdoIHRoZSB0cmlnZ2VyIHRocm90dGxlIOKAlCBVSSBzcGlubmVycyBzaG91bGQgc2hvdyByaWdodCBhd2F5LlxuICAgIHByaXZhdGUgY29tcGFjdGluZ0NvdW50ID0gMDtcbiAgICBiZWdpbkNvbXBhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29tcGFjdGluZ0NvdW50Kys7XG4gICAgICAgIGlmICh0aGlzLmNvbXBhY3RpbmdDb3VudCA9PT0gMSkgdGhpcy5jZmcuZGVwcy5pbnZhbGlkYXRlKENPTVBBQ1RJTkdfU0lHTkFMKTtcbiAgICB9XG4gICAgZW5kQ29tcGFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb21wYWN0aW5nQ291bnQtLTtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFjdGluZ0NvdW50ID09PSAwKSB0aGlzLmNmZy5kZXBzLmludmFsaWRhdGUoQ09NUEFDVElOR19TSUdOQUwpO1xuICAgIH1cbiAgICBpc0NvbXBhY3RpbmdTeW5jKCk6IGJvb2xlYW4ge1xuICAgICAgICB0aGlzLmNmZy5kZXBzLm9ic2VydmUoQ09NUEFDVElOR19TSUdOQUwpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYWN0aW5nQ291bnQgPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5T3ZlcmxheU11dGF0aW9uKGtleTogc3RyaW5nLCBjb2x1bW5zOiBJdGVyYWJsZTxzdHJpbmc+IHwgXCJhbGxcIik6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGFHZW4rKztcbiAgICAgICAgaWYgKGNvbHVtbnMgPT09IFwiYWxsXCIpIHRoaXMuY29sdW1uQ2FjaGUuY2xlYXIoKTtcbiAgICAgICAgZWxzZSBmb3IgKGNvbnN0IGMgb2YgY29sdW1ucykgdGhpcy5jb2x1bW5DYWNoZS5kZWxldGUoYyk7XG4gICAgICAgIGlmICh0aGlzLmNmZy5kZXBzLmlzT2JzZXJ2ZWQ/LihrZXkpID8/IHRydWUpIHRoaXMuaW52YWxpZGF0ZVNpZ25hbChrZXkpO1xuICAgICAgICB0aGlzLmludmFsaWRhdGVTaWduYWwoT1ZFUkxBWV9TSUdOQUwpO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBhc3luYyByZWFkcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICBhc3luYyBnZXRLZXlzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBhd2FpdCB0aGlzLnJlcXVpcmVJbmRleCgpO1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5LnNpemUgPT09IDApIHJldHVybiBbLi4uaW5kZXgua2V5c107XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQoaW5kZXgua2V5cyk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgZW50cnldIG9mIHRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09PSBERUxFVEVEKSBzZXQuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICBlbHNlIHNldC5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLnNldF07XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29sdW1uPEMgZXh0ZW5kcyBrZXlvZiBUPihjb2x1bW46IEMpOiBQcm9taXNlPHsga2V5OiBzdHJpbmc7IHZhbHVlOiBUW0NdOyB0aW1lOiBudW1iZXIgfVtdPiB7XG4gICAgICAgIGNvbnN0IGNvbCA9IFN0cmluZyhjb2x1bW4pO1xuICAgICAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNvbHVtbkNhY2hlLmdldChjb2wpO1xuICAgICAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkIGFzIHsga2V5OiBzdHJpbmc7IHZhbHVlOiBUW0NdOyB0aW1lOiBudW1iZXIgfVtdO1xuICAgICAgICBjb25zdCBnZW4gPSB0aGlzLmRhdGFHZW47XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBhd2FpdCB0aGlzLnJlcXVpcmVJbmRleCgpO1xuICAgICAgICBsZXQgYmFzZSA9IGF3YWl0IGluZGV4LmdldENvbHVtbihjb2wpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vdmVybGF5LnBhdGNoQ29sdW1uKGJhc2UsIGNvbCkgYXMgeyBrZXk6IHN0cmluZzsgdmFsdWU6IFRbQ107IHRpbWU6IG51bWJlciB9W107XG4gICAgICAgIGNvbnN0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICAgIGlmIChlbGFwc2VkID4gNTApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2JsdWUoYCR7dGhpcy5jZmcubmFtZX0uZ2V0Q29sdW1uKCR7SlNPTi5zdHJpbmdpZnkoY29sdW1uKX0pYCl9IHRvb2sgJHtyZWQoZm9ybWF0VGltZShlbGFwc2VkKSl9ICR7dGhpcy5mb3JtYXRJbmZvKGluZGV4KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZnJlZXplKHJlc3VsdCk7XG4gICAgICAgIGlmICh0aGlzLmRhdGFHZW4gPT09IGdlbikgdGhpcy5jb2x1bW5DYWNoZS5zZXQoY29sLCByZXN1bHQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGFzeW5jIGdldFNpbmdsZUZpZWxkPEMgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IHN0cmluZywgY29sdW1uOiBDKTogUHJvbWlzZTxUW0NdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRTaW5nbGVGaWVsZE9iaihrZXksIGNvbHVtbikpPy52YWx1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRTaW5nbGVGaWVsZE9iajxDIGV4dGVuZHMga2V5b2YgVD4oa2V5OiBzdHJpbmcsIGNvbHVtbjogQyk6IFByb21pc2U8eyBrZXk6IHN0cmluZzsgdmFsdWU6IFRbQ107IHRpbWU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGNvbCA9IFN0cmluZyhjb2x1bW4pO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMub3ZlcmxheS5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSA9PT0gREVMRVRFRCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChjb2wgaW4gZW50cnkudmFsdWUpIHJldHVybiB7IGtleSwgdmFsdWU6IGVudHJ5LnZhbHVlW2NvbF0gYXMgVFtDXSwgdGltZTogZW50cnkudGltZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBhd2FpdCB0aGlzLnJlcXVpcmVJbmRleCgpO1xuICAgICAgICBjb25zdCByID0gYXdhaXQgaW5kZXguZ2V0U2luZ2xlRmllbGQoa2V5LCBjb2wpO1xuICAgICAgICBjb25zdCBlbGFwc2VkID0gRGF0ZS5ub3coKSAtIHN0YXJ0O1xuICAgICAgICBpZiAoZWxhcHNlZCA+IDUwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtibHVlKGAke3RoaXMuY2ZnLm5hbWV9LmdldFNpbmdsZUZpZWxkT2JqKCR7SlNPTi5zdHJpbmdpZnkoa2V5KX0sICR7SlNPTi5zdHJpbmdpZnkoY29sdW1uKX0pYCl9IHRvb2sgJHtyZWQoZm9ybWF0VGltZShlbGFwc2VkKSl9ICR7dGhpcy5mb3JtYXRJbmZvKGluZGV4KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCAmJiBlbnRyeS52YWx1ZSAhPT0gREVMRVRFRCkgcmV0dXJuIHsga2V5LCB2YWx1ZTogdW5kZWZpbmVkIGFzIFRbQ10sIHRpbWU6IGVudHJ5LnRpbWUgfTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogci52YWx1ZSBhcyBUW0NdLCB0aW1lOiByLnRpbWUgfTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgc3luYyAocmVhY3RpdmUpIHJlYWRzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgIGdldFNpbmdsZUZpZWxkU3luYzxDIGV4dGVuZHMga2V5b2YgVD4oa2V5OiBzdHJpbmcsIGNvbHVtbjogQyk6IFRbQ10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTaW5nbGVGaWVsZE9ialN5bmMoa2V5LCBjb2x1bW4pPy52YWx1ZTtcbiAgICB9XG5cbiAgICBnZXRTaW5nbGVGaWVsZE9ialN5bmM8QyBleHRlbmRzIGtleW9mIFQ+KGtleTogc3RyaW5nLCBjb2x1bW46IEMpOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogVFtDXTsgdGltZTogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgICAgICB0aGlzLmNmZy5kZXBzLm9ic2VydmUoTE9BRF9TSUdOQUwpO1xuICAgICAgICB0aGlzLmNmZy5kZXBzLm9ic2VydmUoa2V5KTtcbiAgICAgICAgY29uc3QgY29sID0gU3RyaW5nKGNvbHVtbik7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5vdmVybGF5LmdldChrZXkpO1xuICAgICAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09PSBERUxFVEVEKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGNvbCBpbiBlbnRyeS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXg/LmVuc3VyZUJhc2VGaWVsZChrZXksIGNvbCwgKCkgPT4gdGhpcy5pbnZhbGlkYXRlU2lnbmFsKExPQURfU0lHTkFMKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogZW50cnkudmFsdWVbY29sXSBhcyBUW0NdLCB0aW1lOiBlbnRyeS50aW1lIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICBpZiAoIWluZGV4KSB7XG4gICAgICAgICAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCAmJiBlbnRyeS52YWx1ZSAhPT0gREVMRVRFRCkgcmV0dXJuIHsga2V5LCB2YWx1ZTogdW5kZWZpbmVkIGFzIFRbQ10sIHRpbWU6IGVudHJ5LnRpbWUgfTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmFzZSA9IGluZGV4LmdldEJhc2VGaWVsZChrZXksIGNvbCk7XG4gICAgICAgIC8vIFRyaWdnZXIgbG9hZCBpZiBub3QgbG9hZGVkIE9SIGxvYWRlZCBvbmx5IGZyb20gc3RhbGUgZmFsbGJhY2sgKHJlZnJlc2ggbmVlZGVkKS5cbiAgICAgICAgaWYgKCFiYXNlLmxvYWRlZCB8fCAhYmFzZS5mcmVzaCkgaW5kZXguZW5zdXJlQmFzZUZpZWxkKGtleSwgY29sLCAoKSA9PiB0aGlzLmludmFsaWRhdGVTaWduYWwoTE9BRF9TSUdOQUwpKTtcbiAgICAgICAgaWYgKCFiYXNlLmxvYWRlZCB8fCBiYXNlLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeSAhPT0gdW5kZWZpbmVkICYmIGVudHJ5LnZhbHVlICE9PSBERUxFVEVEKSByZXR1cm4geyBrZXksIHZhbHVlOiB1bmRlZmluZWQgYXMgVFtDXSwgdGltZTogZW50cnkudGltZSB9O1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBrZXksIHZhbHVlOiBiYXNlLnZhbHVlLnZhbHVlIGFzIFRbQ10sIHRpbWU6IGJhc2UudmFsdWUudGltZSB9O1xuICAgIH1cblxuICAgIGdldENvbHVtblN5bmM8QyBleHRlbmRzIGtleW9mIFQ+KGNvbHVtbjogQyk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBUW0NdOyB0aW1lOiBudW1iZXIgfVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgdGhpcy5jZmcuZGVwcy5vYnNlcnZlKExPQURfU0lHTkFMKTtcbiAgICAgICAgdGhpcy5jZmcuZGVwcy5vYnNlcnZlKE9WRVJMQVlfU0lHTkFMKTtcbiAgICAgICAgY29uc3QgY29sID0gU3RyaW5nKGNvbHVtbik7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuY29sdW1uQ2FjaGUuZ2V0KGNvbCk7XG4gICAgICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQgYXMgeyBrZXk6IHN0cmluZzsgdmFsdWU6IFRbQ107IHRpbWU6IG51bWJlciB9W107XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbmRleDtcbiAgICAgICAgaWYgKCFpbmRleCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYmFzZSA9IGluZGV4LmdldEJhc2VDb2x1bW4oY29sKTtcbiAgICAgICAgLy8gVHJpZ2dlciBsb2FkIGlmIG5vdCBmcmVzaCAoZ2VudWluZSBmaXJzdCBsb2FkIE9SIGEgc3RhbGUgZmFsbGJhY2sgYXdhaXRpbmcgcmVmcmVzaCkuXG4gICAgICAgIGlmICghYmFzZSB8fCAhYmFzZS5mcmVzaCkgaW5kZXguZW5zdXJlQmFzZUNvbHVtbihjb2wsICgpID0+IHRoaXMuaW52YWxpZGF0ZVNpZ25hbChMT0FEX1NJR05BTCkpO1xuICAgICAgICBpZiAoIWJhc2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMub3ZlcmxheS5wYXRjaENvbHVtbihiYXNlLmVudHJpZXMsIGNvbCkgYXMgeyBrZXk6IHN0cmluZzsgdmFsdWU6IFRbQ107IHRpbWU6IG51bWJlciB9W107XG4gICAgICAgIGlmIChiYXNlLmZyZXNoKSB7XG4gICAgICAgICAgICBPYmplY3QuZnJlZXplKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbkNhY2hlLnNldChjb2wsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBpc0ZpZWxkTG9hZGVkU3luYzxDIGV4dGVuZHMga2V5b2YgVD4oa2V5OiBzdHJpbmcsIGNvbHVtbjogQyk6IGJvb2xlYW4ge1xuICAgICAgICB0aGlzLmNmZy5kZXBzLm9ic2VydmUoTE9BRF9TSUdOQUwpO1xuICAgICAgICB0aGlzLmNmZy5kZXBzLm9ic2VydmUoa2V5KTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLm92ZXJsYXkuZ2V0KGtleSk7XG4gICAgICAgIGlmIChlbnRyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT09IERFTEVURUQpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgaWYgKFN0cmluZyhjb2x1bW4pIGluIGVudHJ5LnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuaW5kZXg7XG4gICAgICAgIGlmICghaW5kZXgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGluZGV4LmlzQmFzZUZpZWxkTG9hZGVkKGtleSwgU3RyaW5nKGNvbHVtbikpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaW5kZXguZW5zdXJlQmFzZUZpZWxkKGtleSwgU3RyaW5nKGNvbHVtbiksICgpID0+IHRoaXMuaW52YWxpZGF0ZVNpZ25hbChMT0FEX1NJR05BTCkpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNDb2x1bW5Mb2FkZWRTeW5jPEMgZXh0ZW5kcyBrZXlvZiBUPihjb2x1bW46IEMpOiBib29sZWFuIHtcbiAgICAgICAgdGhpcy5jZmcuZGVwcy5vYnNlcnZlKExPQURfU0lHTkFMKTtcbiAgICAgICAgdGhpcy5jZmcuZGVwcy5vYnNlcnZlKE9WRVJMQVlfU0lHTkFMKTtcbiAgICAgICAgY29uc3QgY29sID0gU3RyaW5nKGNvbHVtbik7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbkNhY2hlLmhhcyhjb2wpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICBpZiAoIWluZGV4KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChpbmRleC5pc0Jhc2VDb2x1bW5Mb2FkZWQoY29sKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGluZGV4LmVuc3VyZUJhc2VDb2x1bW4oY29sLCAoKSA9PiB0aGlzLmludmFsaWRhdGVTaWduYWwoTE9BRF9TSUdOQUwpKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBoZWxwZXJzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgIC8vIEJvdGggYXN5bmMgcmVhZHMgYXdhaXQgdGhpcy4gVGhlIGhvc3Qgd2lyZXMgYW4gYGVuc3VyZUluZGV4YCB0aGF0IHRyaWdnZXJzIHRoZSBpbml0aWFsIGJ1aWxkIGlmXG4gICAgLy8gbm8gaW5kZXggaXMgbG9hZGVkIHlldCDigJQgcmVhZHMgdGhhdCByYWNlIHRoZSBmaXJzdCBsb2FkIGFsbCB3YWl0IG9uIHRoZSBzYW1lIHByb21pc2UuXG4gICAgc2V0RW5zdXJlSW5kZXgoZm46ICgpID0+IFByb21pc2U8TG9hZGVkSW5kZXg8VD4+KTogdm9pZCB7IHRoaXMuZW5zdXJlSW5kZXhGbiA9IGZuOyB9XG4gICAgcHJpdmF0ZSBlbnN1cmVJbmRleEZuOiAoKCkgPT4gUHJvbWlzZTxMb2FkZWRJbmRleDxUPj4pIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgYXN5bmMgcmVxdWlyZUluZGV4KCk6IFByb21pc2U8TG9hZGVkSW5kZXg8VD4+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5kZXgpIHJldHVybiB0aGlzLmluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuZW5zdXJlSW5kZXhGbikgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY2ZnLm5hbWV9OiBpbmRleCBub3Qgc2V0IOKAlCBjYWxsIHNldEluZGV4KC4uLikgYmVmb3JlIHJlYWRpbmdgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5zdXJlSW5kZXhGbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0SW5mbyhpbmRleDogTG9hZGVkSW5kZXg8VD4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYChjb2xsZWN0aW9uIGhhcyAke2JsdWUoZm9ybWF0TnVtYmVyKGluZGV4LnJlYWRlci5yb3dDb3VudCkpfSByb3dzLCAke2JsdWUoZm9ybWF0TnVtYmVyKGluZGV4LnJlYWRlci50b3RhbEJ5dGVzKSl9QilgO1xuICAgIH1cblxuICAgIC8vIE5vdGlmaWNhdGlvbnMgYXJlIHJhbXBpbmdseSBkZWxheWVkIHVuZGVyIHN1c3RhaW5lZCBjaGFuZ2VzIChzbyBhIGhpZ2gtcmF0ZSB3cml0ZXIgY2FuJ3QgcmUtcnVuXG4gICAgLy8gd2F0Y2hlcnMgcGVyIGNoYW5nZSkuIFVuZGVybHlpbmcgZGF0YSBpcyBhbHdheXMgY3VycmVudCDigJQgb25seSB0aGUgb2JzZXJ2YWJsZSBub3RpZmljYXRpb24gaXNcbiAgICAvLyBiYXRjaGVkL2RlbGF5ZWQuXG4gICAgcHJpdmF0ZSBpbnZhbGlkYXRlU2lnbmFsKHNpZ25hbDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1heE1zID0gdGhpcy5jZmcubWF4VHJpZ2dlclRocm90dGxlTXMgPz8gMDtcbiAgICAgICAgaWYgKG1heE1zIDw9IDApIHsgdGhpcy5jZmcuZGVwcy5pbnZhbGlkYXRlKHNpZ25hbCk7IHJldHVybjsgfVxuICAgICAgICB0aGlzLnBlbmRpbmdTaWduYWxzLmFkZChzaWduYWwpO1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCBsdWxsID0gbm93IC0gdGhpcy5sYXN0VHJpZ2dlclRpbWUgPiBtYXhNcztcbiAgICAgICAgdGhpcy5sYXN0VHJpZ2dlclRpbWUgPSBub3c7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJUaW1lciAhPT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIHRoaXMuY3VycmVudFRyaWdnZXJEZWxheSA9IGx1bGwgPyAwIDogTWF0aC5taW4obWF4TXMsIE1hdGgubWF4KFRSSUdHRVJfVEhST1RUTEVfRklSU1RfU1RFUF9NUywgdGhpcy5jdXJyZW50VHJpZ2dlckRlbGF5ICogMikpO1xuICAgICAgICB0aGlzLnRyaWdnZXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLnRyaWdnZXJUaW1lciA9IHVuZGVmaW5lZDsgdGhpcy5mbHVzaFNpZ25hbHMoKTsgfSwgdGhpcy5jdXJyZW50VHJpZ2dlckRlbGF5KTtcbiAgICAgICAgKHRoaXMudHJpZ2dlclRpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZsdXNoU2lnbmFscygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1NpZ25hbHMuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBzaWduYWxzID0gWy4uLnRoaXMucGVuZGluZ1NpZ25hbHNdO1xuICAgICAgICB0aGlzLnBlbmRpbmdTaWduYWxzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2ZnLmRlcHMuYmF0Y2goKCkgPT4geyBmb3IgKGNvbnN0IHMgb2Ygc2lnbmFscykgdGhpcy5jZmcuZGVwcy5pbnZhbGlkYXRlKHMpOyB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBSRUFERVJfU0lHTkFMUyA9IHsgTE9BRDogTE9BRF9TSUdOQUwsIE9WRVJMQVk6IE9WRVJMQVlfU0lHTkFMIH07XG5leHBvcnQgeyBudWxsSm9pbiB9O1xuIl19
306
- /* _JS_SOURCE_HASH = "0cdfd5f6e820afcba6ce69c13c93f8bafdd22445a5b426fc26faeaf00fcdc2c7"; */
306
+ /* _JS_SOURCE_HASH = "ca015ad4f2006823b4a0fde28d02fb87b03558ca59a6a2d8696ab7fd52da14e5"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.orderStreamEntries = exports.loadStreamEntries = exports.loadFileReader = exports.makeRawGetRange = exports.LoadedIndex = exports.MissingFileError = void 0;
4
4
  const BulkDatabaseFormat_1 = require("./BulkDatabaseFormat");
@@ -432,4 +432,4 @@ function joinBulkDatabases(databases) {
432
432
  };
433
433
  }
434
434
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGVkSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJMb2FkZWRJbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2REFBa0g7QUFDbEgsNkNBQW9EO0FBQ3BELDJDQUFrRztBQUNsRyxrRUFBaUY7QUFDakYsd0VBQXFFO0FBRXJFLG9JQUFvSTtBQUNwSSxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBTTFDLE1BQWEsZ0JBQWlCLFNBQVEsS0FBSztDQUFJO0FBQS9DLDRDQUErQztBQUMvQyxNQUFNLGlCQUFrQixTQUFRLEtBQUs7Q0FBSTtBQW9CekMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFFNUIsU0FBUyxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDbEMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELHVHQUF1RztBQUN2RyxvR0FBb0c7QUFDcEcsbUdBQW1HO0FBQ25HLDREQUE0RDtBQUM1RCxNQUFhLFdBQVc7SUFDcEIsWUFDb0IsSUFBWSxFQUNaLE9BQW9CLEVBQ3BCLFNBQXlCLEVBQ3pCLFdBQTZCLEVBQzdCLE1BQXNCLEVBQ3RCLFdBQWdDLEVBQ2hDLFdBQWdDLEVBQ2hDLGdCQUF3QixFQUN4QixpQkFBeUIsRUFDekIsU0FBMEI7UUFUMUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBcUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6QixjQUFT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SSxDQUFDLENBQUM7Z0JBQ04sSUFBSSxDQUFDO29CQUNELENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1QsZUFBZSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQy9CLFNBQVM7Z0JBQ2IsQ0FBQztnQkFDRCxJQUFJLENBQUMsS0FBSywyQkFBTTtvQkFBRSxTQUFTO2dCQUMzQixJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUM7b0JBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFBQyxDQUFDO1lBQ2xGLENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3RSxDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpbGVTdG9yYWdlIH0gZnJvbSBcIi4uL0ZpbGVGb2xkZXJBUElcIjtcbmltcG9ydCB7IEFCU0VOVCwgQmFzZUJ1bGtEYXRhYmFzZVJlYWRlciwgRU1QVFlfQlVGRkVSLCBLRVlfQ09MVU1OLCBsb2FkQnVsa0RhdGFiYXNlIH0gZnJvbSBcIi4vQnVsa0RhdGFiYXNlRm9ybWF0XCI7XG5pbXBvcnQgeyBibG9ja0NhY2hlLCBHZXRSYW5nZSB9IGZyb20gXCIuL2Jsb2NrQ2FjaGVcIjtcbmltcG9ydCB7IFNUUkVBTV9FWFRFTlNJT04sIFN0cmVhbUVudHJ5LCBwYXJzZVN0cmVhbSwgc3RyZWFtUmVhZGVyRnJvbUVudHJpZXMgfSBmcm9tIFwiLi9zdHJlYW1Mb2dcIjtcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0VGltZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5pbXBvcnQgeyBibHVlLCByZWQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2xvZ0NvbG9yc1wiO1xuXG4vLyBEdXBsaWNhdGVkIGZyb20gQnVsa0RhdGFiYXNlQmFzZSB0byBhdm9pZCBhIGNpcmN1bGFyIGltcG9ydCDigJQgdXNlZCBvbmx5IHRvIGJ1aWxkIGEgZnVsbGVyIHN0b3JhZ2UtcmVsYXRpdmUgcGF0aCBmb3IgbG9nIG1lc3NhZ2VzLlxuY29uc3QgQlVMS19ST09UX0ZPTERFUiA9IFwiYnVsa0RhdGFiYXNlczJcIjtcblxuZXhwb3J0IHR5cGUgQnVsa0ZpbGVJbmZvID0geyBmaWxlTmFtZTogc3RyaW5nOyBsZXZlbDogbnVtYmVyOyB0aW1lc3RhbXA6IG51bWJlciB9O1xuZXhwb3J0IHR5cGUgU3RyZWFtRmlsZUluZm8gPSB7IGZpbGVOYW1lOiBzdHJpbmc7IHRpbWVzdGFtcDogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBTdHJlYW1SZWFkZXJDYWNoZUVudHJ5ID0geyByZWFkU2l6ZTogbnVtYmVyOyBwYXJzZWRQb3M6IG51bWJlcjsgZW50cmllczogU3RyZWFtRW50cnlbXSB9O1xuXG5leHBvcnQgY2xhc3MgTWlzc2luZ0ZpbGVFcnJvciBleHRlbmRzIEVycm9yIHsgfVxuY2xhc3MgRmlsZXNDaGFuZ2VkRXJyb3IgZXh0ZW5kcyBFcnJvciB7IH1cblxuZXhwb3J0IHR5cGUgUmVzb2x2ZWRSZWFkZXIgPSB7XG4gICAgcm93Q291bnQ6IG51bWJlcjtcbiAgICB0b3RhbEJ5dGVzOiBudW1iZXI7XG4gICAga2V5czogc3RyaW5nW107XG4gICAgcmF3S2V5Q291bnQ6IG51bWJlcjtcbiAgICByZWFkZXJDb3VudDogbnVtYmVyO1xuICAgIGNvbHVtbnM6IHsgY29sdW1uOiBzdHJpbmc7IGJ5dGVTaXplOiBudW1iZXIgfVtdO1xuICAgIGtleVRpbWVzOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAgIGRlbGV0ZVRpbWVzOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAgIGdldENvbHVtbjogKGNvbHVtbjogc3RyaW5nKSA9PiBQcm9taXNlPHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duOyB0aW1lOiBudW1iZXIgfVtdPjtcbiAgICBnZXRTaW5nbGVGaWVsZDogKGtleTogc3RyaW5nLCBjb2x1bW46IHN0cmluZykgPT4gUHJvbWlzZTx7IHZhbHVlOiB1bmtub3duOyB0aW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZD47XG59O1xuXG5leHBvcnQgdHlwZSBTdWJSZWFkZXJDYWNoZXMgPSB7XG4gICAgYnVsazogTWFwPHN0cmluZywgQmFzZUJ1bGtEYXRhYmFzZVJlYWRlcj47XG4gICAgc3RyZWFtOiBNYXA8c3RyaW5nLCBTdHJlYW1SZWFkZXJDYWNoZUVudHJ5Pjtcbn07XG5cbmNvbnN0IE1BWF9SRUFEX0FUVEVNUFRTID0gODtcblxuZnVuY3Rpb24gbnVsbEpvaW4oYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBhICsgU3RyaW5nLmZyb21DaGFyQ29kZSgwKSArIGI7XG59XG5cbi8vIEEgbG9hZGVkIHNuYXBzaG90IG9mIG9uZSBjb2xsZWN0aW9uJ3Mgb24tZGlzayBzdGF0ZTogdGhlIHJlc29sdmVkIHJlYWRlciArIHRoZSBwZXItZmlsZSBkZWNvZGVkIHN1Yi1cbi8vIHJlYWRlcnMgaXQgc3RpdGNoZWQsIHRoZSBzdHJlYW0gZmlsZSBzaXplcy90aW1lcyBpdCBvYnNlcnZlZCwgYW5kIHRoZSBzeW5jIChyZWFjdGl2ZSkgY2FjaGVzIHRoYXRcbi8vIHN1cmZhY2UgY29sdW1uL2ZpZWxkIHJlYWRzLiBCdWlsdCBvbmNlIHZpYSBMb2FkZWRJbmRleC5idWlsZCDigJQgZWFnZXJseSwgc28gdGhlIHN3YXAgaW50byBhIGZyZXNoXG4vLyBMb2FkZWRJbmRleCBuZXZlciBibG9ja3MgYSByZWFkIG9uIGEgc3luY2hyb25vdXMgcmVidWlsZC5cbmV4cG9ydCBjbGFzcyBMb2FkZWRJbmRleDxUIGV4dGVuZHMgeyBrZXk6IHN0cmluZyB9PiB7XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0b3JhZ2U6IEZpbGVTdG9yYWdlLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgYnVsa0ZpbGVzOiBCdWxrRmlsZUluZm9bXSxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0cmVhbUZpbGVzOiBTdHJlYW1GaWxlSW5mb1tdLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcmVhZGVyOiBSZXNvbHZlZFJlYWRlcixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0cmVhbVRpbWVzOiBNYXA8c3RyaW5nLCBudW1iZXI+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RyZWFtU2l6ZXM6IE1hcDxzdHJpbmcsIG51bWJlcj4sXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdHJlYW1Sb3dzT25EaXNrOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdHJlYW1CeXRlc09uRGlzazogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3ViQ2FjaGVzOiBTdWJSZWFkZXJDYWNoZXMsXG4gICAgKSB7XG4gICAgICAgIHRoaXMua2V5cyA9IG5ldyBTZXQocmVhZGVyLmtleXMpO1xuICAgICAgICB0aGlzLmZpbGVTZXQgPSBuZXcgU2V0KFsuLi5idWxrRmlsZXMubWFwKGYgPT4gZi5maWxlTmFtZSksIC4uLnN0cmVhbUZpbGVzLm1hcChmID0+IGYuZmlsZU5hbWUpXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRvbmx5IGtleXM6IFNldDxzdHJpbmc+O1xuICAgIHB1YmxpYyByZWFkb25seSBmaWxlU2V0OiBTZXQ8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgYmFzZUNvbHVtbnMgPSBuZXcgTWFwPHN0cmluZywgeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd247IHRpbWU6IG51bWJlciB9W10+KCk7XG4gICAgcHJpdmF0ZSBiYXNlQ29sdW1uc0xvYWRpbmcgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGJhc2VGaWVsZHMgPSBuZXcgTWFwPHN0cmluZywgeyB2YWx1ZTogdW5rbm93bjsgdGltZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+KCk7XG4gICAgcHJpdmF0ZSBiYXNlRmllbGRzTG9hZGluZyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIC8vIExhc3Qta25vd24gdmFsdWVzIGZyb20gdGhlIHByZXZpb3VzIGluZGV4LCBzZXJ2ZWQgdW50aWwgdGhpcyBpbmRleCBsb2FkcyBpdHMgb3duIGZyZXNoIHZhbHVlLCBzb1xuICAgIC8vIGEgc3dhcCBkb2Vzbid0IGZsYXNoIGVtcHR5IGluIHN5bmMgcmVhZHMuIENsZWFyZWQgcGVyLWVudHJ5IHdoZW4gdGhlIGZyZXNoIHZhbHVlIGxhbmRzLlxuICAgIHByaXZhdGUgc3RhbGVCYXNlQ29sdW1ucyA9IG5ldyBNYXA8c3RyaW5nLCB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93bjsgdGltZTogbnVtYmVyIH1bXT4oKTtcbiAgICBwcml2YXRlIHN0YWxlQmFzZUZpZWxkcyA9IG5ldyBNYXA8c3RyaW5nLCB7IHZhbHVlOiB1bmtub3duOyB0aW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4oKTtcblxuICAgIGdldCB0b3RhbEJ5dGVzKCk6IG51bWJlciB7IHJldHVybiB0aGlzLnJlYWRlci50b3RhbEJ5dGVzOyB9XG4gICAgZ2V0IHJvd0NvdW50KCk6IG51bWJlciB7IHJldHVybiB0aGlzLnJlYWRlci5yb3dDb3VudDsgfVxuXG4gICAgaXNMaXZlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmtleXMuaGFzKGtleSk7IH1cblxuICAgIHN0YXRpYyBhc3luYyBidWlsZDxUIGV4dGVuZHMgeyBrZXk6IHN0cmluZyB9Pihjb25maWc6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBzdG9yYWdlOiBGaWxlU3RvcmFnZTtcbiAgICAgICAgYnVsa0ZpbGVzOiBCdWxrRmlsZUluZm9bXTtcbiAgICAgICAgc3RyZWFtRmlsZXM6IFN0cmVhbUZpbGVJbmZvW107XG4gICAgICAgIHN1YkNhY2hlczogU3ViUmVhZGVyQ2FjaGVzO1xuICAgICAgICBvblVucmVhZGFibGVGaWxlPzogKGZpbGU6IEJ1bGtGaWxlSW5mbywgbWVzc2FnZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIH0pOiBQcm9taXNlPExvYWRlZEluZGV4PFQ+PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgbGV0IHsgYnVsa0ZpbGVzLCBzdHJlYW1GaWxlcyB9ID0gY29uZmlnO1xuICAgICAgICBsZXQgYXR0ZW1wdCA9IDA7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCB0b2xlcmF0ZU1pc3NpbmcgPSBhdHRlbXB0ID49IE1BWF9SRUFEX0FUVEVNUFRTO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsZXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgW2J1bGtSZWFkZXJzUmF3LCBzdHJlYW1EYXRhXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwoYnVsa0ZpbGVzLm1hcChhc3luYyBmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGxvYWRGaWxlUmVhZGVyKGNvbmZpZy5uYW1lLCBjb25maWcuc3RvcmFnZSwgZiwgY29uZmlnLnN1YkNhY2hlcy5idWxrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE1pc3NpbmdGaWxlRXJyb3IpIHsgZmlsZXNDaGFuZ2VkID0gdHJ1ZTsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcub25VbnJlYWRhYmxlRmlsZSkgYXdhaXQgY29uZmlnLm9uVW5yZWFkYWJsZUZpbGUoZiwgKGUgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZFN0cmVhbUVudHJpZXMoY29uZmlnLm5hbWUsIGNvbmZpZy5zdG9yYWdlLCBzdHJlYW1GaWxlcywgY29uZmlnLnN1YkNhY2hlcy5zdHJlYW0pLFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGlmIChzdHJlYW1EYXRhLm1pc3NpbmcpIGZpbGVzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGVzQ2hhbmdlZCAmJiAhdG9sZXJhdGVNaXNzaW5nKSB0aHJvdyBuZXcgRmlsZXNDaGFuZ2VkRXJyb3IoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1bGtSZWFkZXJzID0gYnVsa1JlYWRlcnNSYXcuZmlsdGVyKChyKTogciBpcyBCYXNlQnVsa0RhdGFiYXNlUmVhZGVyID0+ICEhcik7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVhZGVyczogQmFzZUJ1bGtEYXRhYmFzZVJlYWRlcltdID0gW107XG4gICAgICAgICAgICAgICAgbGV0IHN0cmVhbVRpbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmRlcmVkID0gb3JkZXJTdHJlYW1FbnRyaWVzKHN0cmVhbURhdGEuZW50cmllcyk7XG4gICAgICAgICAgICAgICAgaWYgKG9yZGVyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVhbVJlYWRlckZyb21FbnRyaWVzKG9yZGVyZWQsIHN0cmVhbURhdGEudG90YWxCeXRlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaChzdHJlYW0ucmVhZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtVGltZXMgPSBzdHJlYW0udGltZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaCguLi5idWxrUmVhZGVycyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gam9pbkJ1bGtEYXRhYmFzZXMocmVhZGVycyk7XG5cbiAgICAgICAgICAgICAgICBwcnVuZVN1YkNhY2hlcyhidWxrRmlsZXMsIHN0cmVhbUZpbGVzLCBjb25maWcuc3ViQ2FjaGVzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICAgICAgICAgICAgaWYgKGVsYXBzZWQgPiA1MCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYnl0ZXNSZWFkID0gc3RyZWFtRGF0YS50b3RhbEJ5dGVzO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHIgb2YgYnVsa1JlYWRlcnMpIGJ5dGVzUmVhZCArPSByLmNvbHVtbnMuZmluZChjID0+IGMuY29sdW1uID09PSBLRVlfQ09MVU1OKT8uYnl0ZVNpemUgPz8gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYCR7Ymx1ZShjb25maWcubmFtZSl9IGxvYWRlZCBpbiAke3JlZChmb3JtYXRUaW1lKGVsYXBzZWQpKX0gKCR7Ymx1ZShmb3JtYXROdW1iZXIocmVhZGVyLnJvd0NvdW50KSl9IHJvd3MsICR7YnVsa0ZpbGVzLmxlbmd0aH0gYnVsayArICR7c3RyZWFtRmlsZXMubGVuZ3RofSBzdHJlYW0gZmlsZXMsIHJlYWQgJHtibHVlKGZvcm1hdE51bWJlcihieXRlc1JlYWQpKX1CKWApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTG9hZGVkSW5kZXg8VD4oXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcuc3RvcmFnZSxcbiAgICAgICAgICAgICAgICAgICAgYnVsa0ZpbGVzLFxuICAgICAgICAgICAgICAgICAgICBzdHJlYW1GaWxlcyxcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBzdHJlYW1UaW1lcyxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtRGF0YS5zaXplcyxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtRGF0YS5lbnRyaWVzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtRGF0YS50b3RhbEJ5dGVzLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcuc3ViQ2FjaGVzLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBGaWxlc0NoYW5nZWRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBhdHRlbXB0Kys7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRvcHRzIHRoZSBwcmV2aW91cyBpbmRleCdzIGxvYWRlZCBiYXNlIHZhbHVlcyBhcyBTVEFMRSBvbiB0aGlzIG9uZSwgc28gYSBzeW5jIHJlYWQgbWlkLXN3YXAgY2FuXG4gICAgLy8gc2VydmUgdGhlIG9sZCB2YWx1ZSAocGF0Y2hlZCB3aXRoIHRoZSBjdXJyZW50IG92ZXJsYXkpIGluc3RlYWQgb2YgZmxhc2hpbmcgZW1wdHkgd2hpbGUgdGhlIGZyZXNoXG4gICAgLy8gbG9hZCBydW5zLiBQZXItZW50cnk6IGRyb3BwZWQgd2hlbiB0aGUgZnJlc2ggdmFsdWUgbGFuZHMgaGVyZS5cbiAgICBpbmhlcml0U3RhbGVGcm9tKHByZXY6IExvYWRlZEluZGV4PFQ+KTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIHByZXYuYmFzZUNvbHVtbnMpIHRoaXMuc3RhbGVCYXNlQ29sdW1ucy5zZXQoaywgdik7XG4gICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIHByZXYuc3RhbGVCYXNlQ29sdW1ucykgaWYgKCF0aGlzLnN0YWxlQmFzZUNvbHVtbnMuaGFzKGspKSB0aGlzLnN0YWxlQmFzZUNvbHVtbnMuc2V0KGssIHYpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBwcmV2LmJhc2VGaWVsZHMpIHRoaXMuc3RhbGVCYXNlRmllbGRzLnNldChrLCB2KTtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgcHJldi5zdGFsZUJhc2VGaWVsZHMpIGlmICghdGhpcy5zdGFsZUJhc2VGaWVsZHMuaGFzKGspKSB0aGlzLnN0YWxlQmFzZUZpZWxkcy5zZXQoaywgdik7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29sdW1uKGNvbHVtbjogc3RyaW5nKTogUHJvbWlzZTx7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93bjsgdGltZTogbnVtYmVyIH1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIuZ2V0Q29sdW1uKGNvbHVtbik7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0U2luZ2xlRmllbGQoa2V5OiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nKTogUHJvbWlzZTx7IHZhbHVlOiB1bmtub3duOyB0aW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIuZ2V0U2luZ2xlRmllbGQoa2V5LCBjb2x1bW4pO1xuICAgIH1cblxuICAgIGVuc3VyZUJhc2VDb2x1bW4oY29sdW1uOiBzdHJpbmcsIG9uTG9hZGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJhc2VDb2x1bW5zLmhhcyhjb2x1bW4pIHx8IHRoaXMuYmFzZUNvbHVtbnNMb2FkaW5nLmhhcyhjb2x1bW4pKSByZXR1cm47XG4gICAgICAgIHRoaXMuYmFzZUNvbHVtbnNMb2FkaW5nLmFkZChjb2x1bW4pO1xuICAgICAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5yZWFkZXIuZ2V0Q29sdW1uKGNvbHVtbik7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlQ29sdW1ucy5zZXQoY29sdW1uLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFsZUJhc2VDb2x1bW5zLmRlbGV0ZShjb2x1bW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFzZUNvbHVtbnNMb2FkaW5nLmRlbGV0ZShjb2x1bW4pO1xuICAgICAgICAgICAgICAgIG9uTG9hZGVkKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlQ29sdW1uc0xvYWRpbmcuZGVsZXRlKGNvbHVtbik7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGAke3RoaXMubmFtZX0uZ2V0Q29sdW1uU3luYygke0pTT04uc3RyaW5naWZ5KGNvbHVtbil9KSBsb2FkIGZhaWxlZCwgd2lsbCByZXRyeTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG5cbiAgICBlbnN1cmVCYXNlRmllbGQoa2V5OiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCBvbkxvYWRlZDogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjayA9IG51bGxKb2luKGNvbHVtbiwga2V5KTtcbiAgICAgICAgaWYgKHRoaXMuYmFzZUZpZWxkcy5oYXMoY2spIHx8IHRoaXMuYmFzZUZpZWxkc0xvYWRpbmcuaGFzKGNrKSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmJhc2VGaWVsZHNMb2FkaW5nLmFkZChjayk7XG4gICAgICAgIHZvaWQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLnJlYWRlci5nZXRTaW5nbGVGaWVsZChrZXksIGNvbHVtbik7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlRmllbGRzLnNldChjaywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhbGVCYXNlRmllbGRzLmRlbGV0ZShjayk7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlRmllbGRzTG9hZGluZy5kZWxldGUoY2spO1xuICAgICAgICAgICAgICAgIG9uTG9hZGVkKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlRmllbGRzTG9hZGluZy5kZWxldGUoY2spO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLm5hbWV9LmdldFNpbmdsZUZpZWxkU3luYygke0pTT04uc3RyaW5naWZ5KGtleSl9LCAke0pTT04uc3RyaW5naWZ5KGNvbHVtbil9KSBsb2FkIGZhaWxlZCwgd2lsbCByZXRyeTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHRoZSBsb2FkZWQgdmFsdWUgKGZyZXNoIGlmIGF2YWlsYWJsZSwgZWxzZSBsYXN0LWtub3duIHN0YWxlKSBmb3IgdGhlIGNvbHVtbiwgb3IgdW5kZWZpbmVkXG4gICAgLy8gaWYgbmVpdGhlciBpcyBwcmVzZW50IHlldC4gVGhlIGJvb2xlYW4gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJldHVybmVkIHZhbHVlIGlzIGZyZXNoOyBjYWxsZXJzIG1heVxuICAgIC8vIHNraXAgY2FjaGluZyBhIHN0YWxlIHZhbHVlLlxuICAgIGdldEJhc2VDb2x1bW4oY29sdW1uOiBzdHJpbmcpOiB7IGVudHJpZXM6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duOyB0aW1lOiBudW1iZXIgfVtdOyBmcmVzaDogYm9vbGVhbiB9IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgZnJlc2ggPSB0aGlzLmJhc2VDb2x1bW5zLmdldChjb2x1bW4pO1xuICAgICAgICBpZiAoZnJlc2gpIHJldHVybiB7IGVudHJpZXM6IGZyZXNoLCBmcmVzaDogdHJ1ZSB9O1xuICAgICAgICBjb25zdCBzdGFsZSA9IHRoaXMuc3RhbGVCYXNlQ29sdW1ucy5nZXQoY29sdW1uKTtcbiAgICAgICAgaWYgKHN0YWxlKSByZXR1cm4geyBlbnRyaWVzOiBzdGFsZSwgZnJlc2g6IGZhbHNlIH07XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0QmFzZUZpZWxkKGtleTogc3RyaW5nLCBjb2x1bW46IHN0cmluZyk6IHsgdmFsdWU6IHsgdmFsdWU6IHVua25vd247IHRpbWU6IG51bWJlciB9IHwgdW5kZWZpbmVkOyBmcmVzaDogYm9vbGVhbjsgbG9hZGVkOiBib29sZWFuIH0ge1xuICAgICAgICBjb25zdCBjayA9IG51bGxKb2luKGNvbHVtbiwga2V5KTtcbiAgICAgICAgaWYgKHRoaXMuYmFzZUZpZWxkcy5oYXMoY2spKSByZXR1cm4geyB2YWx1ZTogdGhpcy5iYXNlRmllbGRzLmdldChjayksIGZyZXNoOiB0cnVlLCBsb2FkZWQ6IHRydWUgfTtcbiAgICAgICAgaWYgKHRoaXMuc3RhbGVCYXNlRmllbGRzLmhhcyhjaykpIHJldHVybiB7IHZhbHVlOiB0aGlzLnN0YWxlQmFzZUZpZWxkcy5nZXQoY2spLCBmcmVzaDogZmFsc2UsIGxvYWRlZDogdHJ1ZSB9O1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBmcmVzaDogZmFsc2UsIGxvYWRlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpc0Jhc2VDb2x1bW5Mb2FkZWQoY29sdW1uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUNvbHVtbnMuaGFzKGNvbHVtbikgfHwgdGhpcy5zdGFsZUJhc2VDb2x1bW5zLmhhcyhjb2x1bW4pO1xuICAgIH1cblxuICAgIGlzQmFzZUZpZWxkTG9hZGVkKGtleTogc3RyaW5nLCBjb2x1bW46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjayA9IG51bGxKb2luKGNvbHVtbiwga2V5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZpZWxkcy5oYXMoY2spIHx8IHRoaXMuc3RhbGVCYXNlRmllbGRzLmhhcyhjayk7XG4gICAgfVxuXG4gICAgLy8gRHJvcHMgaW4tbWVtb3J5IGxvYWRlZCB2YWx1ZXMgZm9yIHRoaXMgaW5kZXgsIHNvIGEgc3Vic2VxdWVudCByZWFkIHJlbG9hZHMgZnJlc2ggZnJvbSBkaXNrLiBVc2VkXG4gICAgLy8gYnkgcmVsb2FkRnJvbURpc2soKSDigJQgYSBoYXJkIHJlc2V0LCBubyBzdGFsZSBmYWxsYmFjayBzdXJ2aXZlcy5cbiAgICBkcm9wTG9hZGVkVmFsdWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJhc2VDb2x1bW5zLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuYmFzZUNvbHVtbnNMb2FkaW5nLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuYmFzZUZpZWxkcy5jbGVhcigpO1xuICAgICAgICB0aGlzLmJhc2VGaWVsZHNMb2FkaW5nLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuc3RhbGVCYXNlQ29sdW1ucy5jbGVhcigpO1xuICAgICAgICB0aGlzLnN0YWxlQmFzZUZpZWxkcy5jbGVhcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1ha2VSYXdHZXRSYW5nZShzdG9yYWdlOiBGaWxlU3RvcmFnZSwgZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8eyByYXdHZXRSYW5nZTogR2V0UmFuZ2U7IHNpemU6IG51bWJlciB9PiB7XG4gICAgY29uc3QgaW5mbyA9IGF3YWl0IHN0b3JhZ2UuZ2V0SW5mbyhmaWxlTmFtZSk7XG4gICAgaWYgKCFpbmZvKSB0aHJvdyBuZXcgTWlzc2luZ0ZpbGVFcnJvcihgYnVsayBmaWxlICR7ZmlsZU5hbWV9IGlzIG1pc3NpbmdgKTtcbiAgICBjb25zdCByYXdHZXRSYW5nZTogR2V0UmFuZ2UgPSBhc3luYyAoc3RhcnQsIGVuZCkgPT4ge1xuICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gRU1QVFlfQlVGRkVSO1xuICAgICAgICBjb25zdCBidWYgPSBhd2FpdCBzdG9yYWdlLmdldFJhbmdlKGZpbGVOYW1lLCB7IHN0YXJ0LCBlbmQgfSk7XG4gICAgICAgIGlmICghYnVmKSB0aHJvdyBuZXcgTWlzc2luZ0ZpbGVFcnJvcihgcmFuZ2UgWyR7c3RhcnR9LCAke2VuZH0pIG9mICR7ZmlsZU5hbWV9IGlzIG1pc3NpbmdgKTtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9O1xuICAgIHJldHVybiB7IHJhd0dldFJhbmdlLCBzaXplOiBpbmZvLnNpemUgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRGaWxlUmVhZGVyKG5hbWU6IHN0cmluZywgc3RvcmFnZTogRmlsZVN0b3JhZ2UsIGY6IEJ1bGtGaWxlSW5mbywgY2FjaGU6IE1hcDxzdHJpbmcsIEJhc2VCdWxrRGF0YWJhc2VSZWFkZXI+KTogUHJvbWlzZTxCYXNlQnVsa0RhdGFiYXNlUmVhZGVyPiB7XG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGYuZmlsZU5hbWUpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG4gICAgY29uc3QgcmF3ID0gYXdhaXQgbWFrZVJhd0dldFJhbmdlKHN0b3JhZ2UsIGYuZmlsZU5hbWUpO1xuICAgIGNvbnN0IGZpbGVJZCA9IG51bGxKb2luKG5hbWUsIGYuZmlsZU5hbWUpO1xuICAgIGNvbnN0IG9wZW5lZCA9IGF3YWl0IGJsb2NrQ2FjaGUub3BlbihmaWxlSWQsIHJhdy5zaXplLCByYXcucmF3R2V0UmFuZ2UpO1xuICAgIGNvbnN0IHJlYWRlciA9IGF3YWl0IGxvYWRCdWxrRGF0YWJhc2UoeyB0b3RhbEJ5dGVzOiBvcGVuZWQudW5jb21wcmVzc2VkU2l6ZSwgZ2V0UmFuZ2U6IG9wZW5lZC5nZXRSYW5nZSwgbmFtZTogYCR7QlVMS19ST09UX0ZPTERFUn0vJHtuYW1lfS8ke2YuZmlsZU5hbWV9YCB9KTtcbiAgICBjYWNoZS5zZXQoZi5maWxlTmFtZSwgcmVhZGVyKTtcbiAgICByZXR1cm4gcmVhZGVyO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFN0cmVhbUVudHJpZXMoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHN0b3JhZ2U6IEZpbGVTdG9yYWdlLFxuICAgIHN0cmVhbUZpbGVzOiBTdHJlYW1GaWxlSW5mb1tdLFxuICAgIGNhY2hlOiBNYXA8c3RyaW5nLCBTdHJlYW1SZWFkZXJDYWNoZUVudHJ5Pixcbik6IFByb21pc2U8eyBlbnRyaWVzOiB7IHRpbWU6IG51bWJlcjsgZmlsZU5hbWU6IHN0cmluZzsgZW50cnk6IFN0cmVhbUVudHJ5IH1bXTsgdG90YWxCeXRlczogbnVtYmVyOyBtaXNzaW5nOiBib29sZWFuOyBzaXplczogTWFwPHN0cmluZywgbnVtYmVyPiB9PiB7XG4gICAgY29uc3Qgc2l6ZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGlmICghc3RyZWFtRmlsZXMubGVuZ3RoKSByZXR1cm4geyBlbnRyaWVzOiBbXSwgdG90YWxCeXRlczogMCwgbWlzc2luZzogZmFsc2UsIHNpemVzIH07XG4gICAgbGV0IG1pc3NpbmcgPSBmYWxzZTtcbiAgICBjb25zdCBwZXJGaWxlID0gYXdhaXQgUHJvbWlzZS5hbGwoc3RyZWFtRmlsZXMubWFwKGFzeW5jIChmKTogUHJvbWlzZTx7IGZpbGVOYW1lOiBzdHJpbmc7IHNpemU6IG51bWJlcjsgZW50cmllczogU3RyZWFtRW50cnlbXSB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gYXdhaXQgc3RvcmFnZS5nZXRJbmZvKGYuZmlsZU5hbWUpO1xuICAgICAgICAgICAgaWYgKCFpbmZvKSB7IG1pc3NpbmcgPSB0cnVlOyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gICAgICAgICAgICBjb25zdCBzaXplID0gaW5mby5zaXplO1xuICAgICAgICAgICAgc2l6ZXMuc2V0KGYuZmlsZU5hbWUsIHNpemUpO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGYuZmlsZU5hbWUpO1xuICAgICAgICAgICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQucmVhZFNpemUgPT09IHNpemUpIHJldHVybiB7IGZpbGVOYW1lOiBmLmZpbGVOYW1lLCBzaXplLCBlbnRyaWVzOiBjYWNoZWQuZW50cmllcyB9O1xuICAgICAgICAgICAgaWYgKHNpemUgPT09IDApIHsgY2FjaGUuc2V0KGYuZmlsZU5hbWUsIHsgcmVhZFNpemU6IDAsIHBhcnNlZFBvczogMCwgZW50cmllczogW10gfSk7IHJldHVybiB7IGZpbGVOYW1lOiBmLmZpbGVOYW1lLCBzaXplOiAwLCBlbnRyaWVzOiBbXSB9OyB9XG4gICAgICAgICAgICAvLyBBcHBlbmQtb25seTogYSBsYXJnZXIgc2l6ZSBtZWFucyBuZXcgYnl0ZXMgYXQgdGhlIHRhaWwsIHBhcnNlIG9ubHkgdGhvc2UuXG4gICAgICAgICAgICBpZiAoY2FjaGVkICYmIHNpemUgPiBjYWNoZWQucmVhZFNpemUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWZmaXggPSBhd2FpdCBzdG9yYWdlLmdldFJhbmdlKGYuZmlsZU5hbWUsIHsgc3RhcnQ6IGNhY2hlZC5wYXJzZWRQb3MsIGVuZDogc2l6ZSB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXN1ZmZpeCkgeyBtaXNzaW5nID0gdHJ1ZTsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3RyZWFtKHN1ZmZpeCk7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZC5iYWRCeXRlcyA+IDApIGNvbnNvbGUud2FybihgJHtuYW1lfSBzdHJlYW0gZmlsZSAke2YuZmlsZU5hbWV9IGhhZCAke3BhcnNlZC5iYWRCeXRlc30gdHJhaWxpbmcgYmFkL2luY29tcGxldGUgYnl0ZXMgKHN0b3BwZWQgcmVhZGluZyB0aGVyZSlgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gcGFyc2VkLmVudHJpZXMubGVuZ3RoID8gY2FjaGVkLmVudHJpZXMuY29uY2F0KHBhcnNlZC5lbnRyaWVzKSA6IGNhY2hlZC5lbnRyaWVzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFBvcyA9IGNhY2hlZC5wYXJzZWRQb3MgKyAoc3VmZml4Lmxlbmd0aCAtIHBhcnNlZC5iYWRCeXRlcyk7XG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KGYuZmlsZU5hbWUsIHsgcmVhZFNpemU6IHNpemUsIHBhcnNlZFBvcywgZW50cmllcyB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBmaWxlTmFtZTogZi5maWxlTmFtZSwgc2l6ZSwgZW50cmllcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgc3RvcmFnZS5nZXRSYW5nZShmLmZpbGVOYW1lLCB7IHN0YXJ0OiAwLCBlbmQ6IHNpemUgfSk7XG4gICAgICAgICAgICBpZiAoIWJ1ZmZlcikgeyBtaXNzaW5nID0gdHJ1ZTsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VTdHJlYW0oYnVmZmVyKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWQuYmFkQnl0ZXMgPiAwKSBjb25zb2xlLndhcm4oYCR7bmFtZX0gc3RyZWFtIGZpbGUgJHtmLmZpbGVOYW1lfSBoYWQgJHtwYXJzZWQuYmFkQnl0ZXN9IHRyYWlsaW5nIGJhZC9pbmNvbXBsZXRlIGJ5dGVzIChzdG9wcGVkIHJlYWRpbmcgdGhlcmUpYCk7XG4gICAgICAgICAgICBjYWNoZS5zZXQoZi5maWxlTmFtZSwgeyByZWFkU2l6ZTogc2l6ZSwgcGFyc2VkUG9zOiBzaXplIC0gcGFyc2VkLmJhZEJ5dGVzLCBlbnRyaWVzOiBwYXJzZWQuZW50cmllcyB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IGZpbGVOYW1lOiBmLmZpbGVOYW1lLCBzaXplLCBlbnRyaWVzOiBwYXJzZWQuZW50cmllcyB9O1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIG1pc3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICBjb25zdCBlbnRyaWVzOiB7IHRpbWU6IG51bWJlcjsgZmlsZU5hbWU6IHN0cmluZzsgZW50cnk6IFN0cmVhbUVudHJ5IH1bXSA9IFtdO1xuICAgIGxldCB0b3RhbEJ5dGVzID0gMDtcbiAgICBmb3IgKGNvbnN0IHBmIG9mIHBlckZpbGUpIHtcbiAgICAgICAgaWYgKCFwZikgY29udGludWU7XG4gICAgICAgIHRvdGFsQnl0ZXMgKz0gcGYuc2l6ZTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBwZi5lbnRyaWVzKSBlbnRyaWVzLnB1c2goeyB0aW1lOiBlbnRyeS50aW1lLCBmaWxlTmFtZTogcGYuZmlsZU5hbWUsIGVudHJ5IH0pO1xuICAgIH1cbiAgICByZXR1cm4geyBlbnRyaWVzLCB0b3RhbEJ5dGVzLCBtaXNzaW5nLCBzaXplcyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJTdHJlYW1FbnRyaWVzKGVudHJpZXM6IHsgdGltZTogbnVtYmVyOyBmaWxlTmFtZTogc3RyaW5nOyBlbnRyeTogU3RyZWFtRW50cnkgfVtdKTogU3RyZWFtRW50cnlbXSB7XG4gICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLnRpbWUgIT09IGIudGltZSkgcmV0dXJuIGEudGltZSAtIGIudGltZTtcbiAgICAgICAgcmV0dXJuIGEuZmlsZU5hbWUgPCBiLmZpbGVOYW1lICYmIC0xIHx8IGEuZmlsZU5hbWUgPiBiLmZpbGVOYW1lICYmIDEgfHwgMDtcbiAgICB9KTtcbiAgICByZXR1cm4gZW50cmllcy5tYXAoZSA9PiBlLmVudHJ5KTtcbn1cblxuZnVuY3Rpb24gcHJ1bmVTdWJDYWNoZXMoYnVsa0ZpbGVzOiBCdWxrRmlsZUluZm9bXSwgc3RyZWFtRmlsZXM6IFN0cmVhbUZpbGVJbmZvW10sIHN1YkNhY2hlczogU3ViUmVhZGVyQ2FjaGVzKSB7XG4gICAgY29uc3QgbGl2ZUJ1bGsgPSBuZXcgU2V0KGJ1bGtGaWxlcy5tYXAoZiA9PiBmLmZpbGVOYW1lKSk7XG4gICAgY29uc3QgbGl2ZVN0cmVhbSA9IG5ldyBTZXQoc3RyZWFtRmlsZXMubWFwKGYgPT4gZi5maWxlTmFtZSkpO1xuICAgIGZvciAoY29uc3QgbiBvZiBzdWJDYWNoZXMuYnVsay5rZXlzKCkpIGlmICghbGl2ZUJ1bGsuaGFzKG4pKSBzdWJDYWNoZXMuYnVsay5kZWxldGUobik7XG4gICAgZm9yIChjb25zdCBuIG9mIHN1YkNhY2hlcy5zdHJlYW0ua2V5cygpKSBpZiAoIWxpdmVTdHJlYW0uaGFzKG4pKSBzdWJDYWNoZXMuc3RyZWFtLmRlbGV0ZShuKTtcbn1cblxuLy8gQSBjb3JydXB0L3VucmVhZGFibGUgY29sdW1uIGluIE9ORSB1bmRlcmx5aW5nIGZpbGUgbXVzdCBub3QgYnJlYWsgdGhlIHdob2xlIGpvaW5lZCByZWFkLiBXaGVuIGFcbi8vIHNvdXJjZSdzIGNvbHVtbiByZWFkIHRocm93cywgd2UgZHJvcCB0aGF0IHNvdXJjZSBmb3IgdGhhdCBjb2x1bW4gKGZhbGxpbmcgdGhyb3VnaCB0byBvbGRlciByZWFkZXJzLFxuLy8gZXhhY3RseSBhcyBpZiB0aGUgZmlsZSBuZXZlciBzZXQgdGhlIGNvbHVtbikgYW5kIHdhcm4gb25jZSBwZXIgKGZpbGUsIGNvbHVtbikgc28gdGhlIGNvcnJ1cHRpb24gaXNcbi8vIHZpc2libGUgd2l0aG91dCBmbG9vZGluZyB0aGUgbG9nIG9uIGV2ZXJ5IHJlYnVpbGQuXG5jb25zdCB3YXJuZWRDb3JydXB0UmVhZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbmZ1bmN0aW9uIHdhcm5Db3JydXB0UmVhZChkYjogQmFzZUJ1bGtEYXRhYmFzZVJlYWRlciwgY29sdW1uOiBzdHJpbmcsIGU6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBwYXRoID0gZGIubmFtZSB8fCBcIih1bmtub3duIHNvdXJjZSlcIjtcbiAgICBjb25zdCBkZWR1cGVLZXkgPSBudWxsSm9pbihwYXRoLCBjb2x1bW4pO1xuICAgIGlmICh3YXJuZWRDb3JydXB0UmVhZHMuaGFzKGRlZHVwZUtleSkpIHJldHVybjtcbiAgICB3YXJuZWRDb3JydXB0UmVhZHMuYWRkKGRlZHVwZUtleSk7XG4gICAgY29uc29sZS53YXJuKGAke3JlZChcImNvcnJ1cHQgcmVhZFwiKX06IGZpbGUgJHtwYXRofSBjb2x1bW4gJHtKU09OLnN0cmluZ2lmeShjb2x1bW4pfSBjb3VsZCBub3QgYmUgcmVhZCAtIHNraXBwaW5nIGl0IChpdHMgZGF0YSBpcyBkcm9wcGVkIGZyb20gcmVzdWx0cyk6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG59XG5cbmZ1bmN0aW9uIGpvaW5CdWxrRGF0YWJhc2VzKGRhdGFiYXNlczogQmFzZUJ1bGtEYXRhYmFzZVJlYWRlcltdKTogUmVzb2x2ZWRSZWFkZXIge1xuICAgIGNvbnN0IGRlbGV0ZVRpbWUgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGZvciAoY29uc3QgZGIgb2YgZGF0YWJhc2VzKSB7XG4gICAgICAgIGlmICghZGIuZGVsZXRlVGltZXMpIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHRdIG9mIGRiLmRlbGV0ZVRpbWVzKSBkZWxldGVUaW1lLnNldChrZXksIE1hdGgubWF4KGRlbGV0ZVRpbWUuZ2V0KGtleSkgPz8gLUluZmluaXR5LCB0KSk7XG4gICAgfVxuICAgIGNvbnN0IGtleVRpbWUgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGZvciAoY29uc3QgZGIgb2YgZGF0YWJhc2VzKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdF0gb2YgZGIua2V5VGltZXMpIGtleVRpbWUuc2V0KGtleSwgTWF0aC5tYXgoa2V5VGltZS5nZXQoa2V5KSA/PyAtSW5maW5pdHksIHQpKTtcbiAgICB9XG4gICAgY29uc3QgZGVsT2YgPSAoa2V5OiBzdHJpbmcpID0+IGRlbGV0ZVRpbWUuZ2V0KGtleSkgPz8gLUluZmluaXR5O1xuICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBba2V5LCB0XSBvZiBrZXlUaW1lKSBpZiAodCA+IGRlbE9mKGtleSkpIGtleXMucHVzaChrZXkpO1xuXG4gICAgY29uc3QgY29sdW1uczogeyBjb2x1bW46IHN0cmluZzsgYnl0ZVNpemU6IG51bWJlciB9W10gPSBbXTtcbiAgICBjb25zdCBjb2x1bW5CeU5hbWUgPSBuZXcgTWFwPHN0cmluZywgeyBjb2x1bW46IHN0cmluZzsgYnl0ZVNpemU6IG51bWJlciB9PigpO1xuICAgIGZvciAoY29uc3QgZGIgb2YgZGF0YWJhc2VzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIGRiLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGxldCBleGlzdGluZyA9IGNvbHVtbkJ5TmFtZS5nZXQoY29sLmNvbHVtbik7XG4gICAgICAgICAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmcgPSB7IGNvbHVtbjogY29sLmNvbHVtbiwgYnl0ZVNpemU6IDAgfTtcbiAgICAgICAgICAgICAgICBjb2x1bW5CeU5hbWUuc2V0KGNvbC5jb2x1bW4sIGV4aXN0aW5nKTtcbiAgICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goZXhpc3RpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhpc3RpbmcuYnl0ZVNpemUgKz0gY29sLmJ5dGVTaXplO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdG90YWxCeXRlczogZGF0YWJhc2VzLnJlZHVjZSgoYWNjLCBkYikgPT4gYWNjICsgZGIudG90YWxCeXRlcywgMCksXG4gICAgICAgIHJvd0NvdW50OiBrZXlzLmxlbmd0aCxcbiAgICAgICAga2V5cyxcbiAgICAgICAgcmF3S2V5Q291bnQ6IGRhdGFiYXNlcy5yZWR1Y2UoKGFjYywgZGIpID0+IGFjYyArIGRiLmtleVRpbWVzLnNpemUgKyAoZGIuZGVsZXRlVGltZXM/LnNpemUgPz8gMCksIDApLFxuICAgICAgICByZWFkZXJDb3VudDogZGF0YWJhc2VzLmxlbmd0aCxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAga2V5VGltZXM6IGtleVRpbWUsXG4gICAgICAgIGRlbGV0ZVRpbWVzOiBkZWxldGVUaW1lLFxuICAgICAgICBhc3luYyBnZXRDb2x1bW4oY29sdW1uKSB7XG4gICAgICAgICAgICBjb25zdCBwZXJSZWFkZXIgPSBhd2FpdCBQcm9taXNlLmFsbChkYXRhYmFzZXMubWFwKGFzeW5jIGRiID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRiLmNvbHVtbnMuc29tZShjID0+IGMuY29sdW1uID09PSBjb2x1bW4pKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBkYi5nZXRDb2x1bW4oY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXAoZW50cmllcy5tYXAoZSA9PiBbZS5rZXksIHsgdmFsdWU6IGUudmFsdWUsIHRpbWU6IGUudGltZSB9XSkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgd2FybkNvcnJ1cHRSZWFkKGRiLCBjb2x1bW4sIGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBrZXlzLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiZXN0VGltZSA9IC1JbmZpbml0eTtcbiAgICAgICAgICAgICAgICBsZXQgYmVzdFZhbDogdW5rbm93bjtcbiAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgcGVyUmVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBtICYmIG0uZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2VsbCB8fCBjZWxsLnZhbHVlID09PSBBQlNFTlQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbC50aW1lID4gYmVzdFRpbWUpIHsgYmVzdFRpbWUgPSBjZWxsLnRpbWU7IGJlc3RWYWwgPSBjZWxsLnZhbHVlOyBmb3VuZCA9IHRydWU7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbGl2ZSA9IGZvdW5kICYmIGJlc3RUaW1lID4gZGVsT2Yoa2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBrZXksIHZhbHVlOiBsaXZlID8gYmVzdFZhbCA6IHVuZGVmaW5lZCwgdGltZTogbGl2ZSA/IGJlc3RUaW1lIDogKGtleVRpbWUuZ2V0KGtleSkgPz8gMCkgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBnZXRTaW5nbGVGaWVsZChrZXksIGNvbHVtbikge1xuICAgICAgICAgICAgY29uc3Qga3QgPSBrZXlUaW1lLmdldChrZXkpO1xuICAgICAgICAgICAgaWYgKGt0ID09PSB1bmRlZmluZWQgfHwga3QgPD0gZGVsT2Yoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCBiZXN0VGltZSA9IC1JbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXN0VmFsOiB1bmtub3duO1xuICAgICAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRiIG9mIGRhdGFiYXNlcykge1xuICAgICAgICAgICAgICAgIGlmICghZGIuY29sdW1ucy5zb21lKGMgPT4gYy5jb2x1bW4gPT09IGNvbHVtbikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGxldCByO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHIgPSBhd2FpdCBkYi5nZXRTaW5nbGVGaWVsZChrZXksIGNvbHVtbik7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB3YXJuQ29ycnVwdFJlYWQoZGIsIGNvbHVtbiwgZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAociA9PT0gQUJTRU5UKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoci50aW1lID4gYmVzdFRpbWUpIHsgYmVzdFRpbWUgPSByLnRpbWU7IGJlc3RWYWwgPSByLnZhbHVlOyBmb3VuZCA9IHRydWU7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxpdmUgPSBmb3VuZCAmJiBiZXN0VGltZSA+IGRlbE9mKGtleSk7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbGl2ZSA/IGJlc3RWYWwgOiB1bmRlZmluZWQsIHRpbWU6IGxpdmUgPyBiZXN0VGltZSA6IGt0IH07XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ==
435
- /* _JS_SOURCE_HASH = "c52d1b6b1e43defcb89f73dc39fd15811b36582e587100e4afac945c4b3f8d6a"; */
435
+ /* _JS_SOURCE_HASH = "08d023e467f7929194485c2e9e317afa50d1a1153cc906e80e96e8dce7814579"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.WriteOverlay = exports.DELETED = void 0;
4
4
  exports.DELETED = Symbol("deleted");
@@ -55,4 +55,4 @@ class WriteOverlay {
55
55
  }
56
56
  exports.WriteOverlay = WriteOverlay;
57
57
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JpdGVPdmVybGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiV3JpdGVPdmVybGF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUl6QyxxR0FBcUc7QUFDckcsaUdBQWlHO0FBQ2pHLHFHQUFxRztBQUNyRyx1RUFBdUU7QUFDdkUsTUFBYSxZQUFZO0lBQXpCO1FBQ1ksWUFBTyxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO0lBMEN0RCxDQUFDO0lBeENHLElBQUksSUFBSSxLQUFhLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hELEdBQUcsQ0FBQyxHQUFXLElBQThCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLEdBQUcsQ0FBQyxHQUFXLElBQWEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsSUFBSSxLQUErQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0QsUUFBUSxDQUFDLEdBQVcsRUFBRSxHQUE0QixFQUFFLElBQVksRUFBRSxPQUFnQjtRQUM5RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxF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Q0Qsb0NBMkNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERFTEVURUQgPSBTeW1ib2woXCJkZWxldGVkXCIpO1xuXG5leHBvcnQgdHlwZSBPdmVybGF5RW50cnkgPSB7IHRpbWU6IG51bWJlcjsgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdHlwZW9mIERFTEVURUQgfTtcblxuLy8gSW4tbWVtb3J5IHBlbmRpbmcgbXV0YXRpb25zIGxheWVyZWQgb24gdG9wIG9mIGEgTG9hZGVkSW5kZXguIEVhY2ggZW50cnkgY2FycmllcyB0aGUgd3JpdGUncyB1bmlxdWVcbi8vIHRpbWVzdGFtcCBzbyBjcm9zcy10YWIgd3JpdGVzIGNhbiBiZSBvcmRlcmVkICsgdGhlIHN3YXAgY2FuIGRyb3AgZW50cmllcyB0aGUgbmV3IGluZGV4IGFscmVhZHlcbi8vIGNvdmVycy4gTWV0aG9kcyB0aGF0IG11dGF0ZSByZXBvcnQgd2hpY2ggY29sdW1ucyBpbnZhbGlkYXRlIChcImFsbFwiIGlmIHRoZSBrZXkncyBsaXZlbmVzcyBmbGlwcGVkKSxcbi8vIHNvIHRoZSBob3N0IGNhbiBkcm9wIHRoZSByaWdodCBjYWNoZXMgd2l0aG91dCBzY2FubmluZyBldmVyeSBjb2x1bW4uXG5leHBvcnQgY2xhc3MgV3JpdGVPdmVybGF5IHtcbiAgICBwcml2YXRlIGVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgT3ZlcmxheUVudHJ5PigpO1xuXG4gICAgZ2V0IHNpemUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuZW50cmllcy5zaXplOyB9XG4gICAgZ2V0KGtleTogc3RyaW5nKTogT3ZlcmxheUVudHJ5IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuZW50cmllcy5nZXQoa2V5KTsgfVxuICAgIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbnRyaWVzLmhhcyhrZXkpOyB9XG4gICAga2V5cygpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4geyByZXR1cm4gdGhpcy5lbnRyaWVzLmtleXMoKTsgfVxuICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzW1N5bWJvbC5pdGVyYXRvcl0oKTsgfVxuXG4gICAgd3JpdGVSb3coa2V5OiBzdHJpbmcsIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRpbWU6IG51bWJlciwgd2FzTGl2ZTogYm9vbGVhbik6IHsgaW52YWxpZGF0ZWRDb2x1bW5zOiBJdGVyYWJsZTxzdHJpbmc+IHwgXCJhbGxcIiB9IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmVudHJpZXMuZ2V0KGtleSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXhpc3RpbmcgJiYgZXhpc3RpbmcudmFsdWUgIT09IERFTEVURUQgPyB7IC4uLmV4aXN0aW5nLnZhbHVlLCAuLi5yb3cgfSA6IHsgLi4ucm93IH07XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB7IHRpbWUsIHZhbHVlIH0pO1xuICAgICAgICByZXR1cm4geyBpbnZhbGlkYXRlZENvbHVtbnM6IHdhc0xpdmUgPyBPYmplY3Qua2V5cyhyb3cpIDogXCJhbGxcIiB9O1xuICAgIH1cblxuICAgIGRlbGV0ZUtleShrZXk6IHN0cmluZywgdGltZTogbnVtYmVyLCB3YXNMaXZlOiBib29sZWFuKTogeyBpbnZhbGlkYXRlZENvbHVtbnM6IEl0ZXJhYmxlPHN0cmluZz4gfCBcImFsbFwiIH0ge1xuICAgICAgICB0aGlzLmVudHJpZXMuc2V0KGtleSwgeyB0aW1lLCB2YWx1ZTogREVMRVRFRCB9KTtcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZGF0ZWRDb2x1bW5zOiB3YXNMaXZlID8gXCJhbGxcIiA6IFtdIH07XG4gICAgfVxuXG4gICAgY2xlYXIoKTogdm9pZCB7IHRoaXMuZW50cmllcy5jbGVhcigpOyB9XG5cbiAgICAvLyBEcm9wIGVudHJpZXMgdGhlIG5ldyBpbmRleCBhbHJlYWR5IHJlZmxlY3RzIChpdHMga2V5VGltZSBvciBkZWxldGVUaW1lIOKJpSB0aGUgZW50cnkncyB0aW1lKS4gVGhlXG4gICAgLy8gcmVtYWluaW5nIGVudHJpZXMgYXJlIHdyaXRlcyB0aGUgaW5kZXggZG9lc24ndCB5ZXQgc2VlIOKAlCB0aGV5IGhhdmUgdG8ga2VlcCBzZXJ2aW5nIHJlYWRzLlxuICAgIHN3ZWVwQ292ZXJlZChhdXRob3JpdHk6IChrZXk6IHN0cmluZykgPT4gbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgZW50cnldIG9mIHRoaXMuZW50cmllcykge1xuICAgICAgICAgICAgaWYgKGVudHJ5LnRpbWUgPD0gYXV0aG9yaXR5KGtleSkpIHRoaXMuZW50cmllcy5kZWxldGUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFwcGx5IHRoaXMgb3ZlcmxheSBvbnRvIHRoZSBiYXNlIGNvbHVtbiBlbnRyaWVzLiBBIGNvbHVtbi11bnNldCBvdmVybGF5IGVudHJ5IGxlYXZlcyB0aGUgYmFzZVxuICAgIC8vIHZhbHVlK3RpbWUgaW4gcGxhY2UgKGEgcGFydGlhbCB3cml0ZSBvbmx5IG92ZXJyaWRlcyB0aGUgY29sdW1ucyBpdCBzZXQpLlxuICAgIHBhdGNoQ29sdW1uKGJhc2U6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duOyB0aW1lOiBudW1iZXIgfVtdLCBjb2x1bW46IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duOyB0aW1lOiBudW1iZXIgfVtdIHtcbiAgICAgICAgaWYgKHRoaXMuZW50cmllcy5zaXplID09PSAwKSByZXR1cm4gYmFzZTtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcChiYXNlLm1hcChlID0+IFtlLmtleSwgeyB2YWx1ZTogZS52YWx1ZSwgdGltZTogZS50aW1lIH1dKSk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgZW50cnldIG9mIHRoaXMuZW50cmllcykge1xuICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09PSBERUxFVEVEKSB7IG1hcC5kZWxldGUoa2V5KTsgY29udGludWU7IH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4gaW4gZW50cnkudmFsdWUpIG1hcC5zZXQoa2V5LCB7IHZhbHVlOiBlbnRyeS52YWx1ZVtjb2x1bW5dLCB0aW1lOiBlbnRyeS50aW1lIH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoIW1hcC5oYXMoa2V5KSkgbWFwLnNldChrZXksIHsgdmFsdWU6IHVuZGVmaW5lZCwgdGltZTogZW50cnkudGltZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLm1hcF0ubWFwKChba2V5LCB2XSkgPT4gKHsga2V5LCB2YWx1ZTogdi52YWx1ZSwgdGltZTogdi50aW1lIH0pKTtcbiAgICB9XG59XG4iXX0=
58
- /* _JS_SOURCE_HASH = "27e31ba68502db8875862ba0da9673e9dcec9689a254680e9f1ef1cde01a1b2e"; */
58
+ /* _JS_SOURCE_HASH = "209264a8708c7ad5dd2423a93289a7c044b6b8efb117a9e1ba74ae94fdf81902"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.blockCache = exports.BlockCache = exports.encodeCompressedBlocks = void 0;
4
4
  const LZ4_1 = require("socket-function/src/lz4/LZ4");
@@ -176,4 +176,4 @@ exports.BlockCache = BlockCache;
176
176
  // Shared across every BulkDatabase2 collection/file (the 512MB budget is global).
177
177
  exports.blockCache = new BlockCache();
178
178
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tDYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJsb2NrQ2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBRWxELCtGQUErRjtBQUMvRixFQUFFO0FBQ0YsaUdBQWlHO0FBQ2pHLHFHQUFxRztBQUNyRyxzR0FBc0c7QUFDdEcscUZBQXFGO0FBQ3JGLEVBQUU7QUFDRixpRkFBaUY7QUFDakYsRUFBRTtBQUNGLGlHQUFpRztBQUNqRyxxR0FBcUc7QUFDckcsOEZBQThGO0FBQzlGLCtGQUErRjtBQUMvRixFQUFFO0FBQ0YscUdBQXFHO0FBQ3JHLHNDQUFzQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRWhDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFXLENBQUM7QUFheEMsK0VBQStFO0FBQy9FLFNBQWdCLHNCQUFzQixDQUFDLElBQVk7SUFDL0MsSUFBSSxNQUFNLEdBQWdCLEVBQUUsQ0FBQztJQUM3QixJQUFJLFdBQVcsR0FBYSxFQUFFLENBQUM7SUFDL0IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENB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O1lBQ2hELG1GQUFtRjtZQUNuRix5RUFBeUU7WUFDekUsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQywrQkFBK0IsS0FBSyxLQUFLLEdBQUcsUUFBUSxNQUFNLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDaEosQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBM0hELGdDQTJIQztBQUVELGtGQUFrRjtBQUNyRSxRQUFBLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTFo0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbHo0L0xaNFwiO1xuXG4vLyBCbG9jay1hbGlnbmVkLCBwcm9taXNlLWRlZHVwZWQsIGRlY29tcHJlc3NpbmcgcmFuZ2UgY2FjaGUgZm9yIEJ1bGtEYXRhYmFzZTIncyBvbi1kaXNrIGZpbGVzLlxuLy9cbi8vIE9uLWRpc2sgZm9ybWF0IChwcm9kdWNlZCBieSBlbmNvZGVDb21wcmVzc2VkQmxvY2tzKTogdGhlIGxvZ2ljYWwgKHVuY29tcHJlc3NlZCkgYnVsayBidWZmZXIgaXNcbi8vIHNwbGl0IGludG8gZml4ZWQgQkxPQ0tfU0laRSBibG9ja3M7IGVhY2ggYmxvY2sgaXMgTFo0LWNvbXByZXNzZWQgdW5sZXNzIHRoYXQgd291bGRuJ3Qgc2hyaW5rIGl0IGJ5XG4vLyBhdCBsZWFzdCAyeCwgaW4gd2hpY2ggY2FzZSBpdCdzIHN0b3JlZCByYXcuIFRoZSBmaWxlIHN0YXJ0cyB3aXRoIGEgSlNPTiBpbmRleCBtYXBwaW5nIGVhY2ggYmxvY2sgdG9cbi8vIGl0cyBzdG9yZWQgbGVuZ3RoICsgYSBjb21wcmVzc2VkIGZsYWcsIHNvIGEgcmVhZGVyIGNhbiBzZWVrIHN0cmFpZ2h0IHRvIGFueSBibG9jazpcbi8vXG4vLyAgIFt1MzIgaW5kZXhMZW5ndGhdW2luZGV4IEpTT05dW2Jsb2NrIDAgc3RvcmVkIGJ5dGVzXVtibG9jayAxIHN0b3JlZCBieXRlc10uLi5cbi8vXG4vLyBUaGUgY2FjaGUgcHJlc2VudHMgYSAqbG9naWNhbCogZ2V0UmFuZ2UgKG92ZXIgdW5jb21wcmVzc2VkIGJ5dGVzKSBzbyBCdWxrRGF0YWJhc2UyJ3MgcmVhZGVyIGlzXG4vLyBvYmxpdmlvdXMgdG8gY29tcHJlc3Npb24uIEl0IHJlYWRzIGNvbXByZXNzZWQgYnl0ZXMgdmlhIHRoZSB1bmRlcmx5aW5nIGdldFJhbmdlLCBkZWNvbXByZXNzZXMsIGFuZFxuLy8gY2FjaGVzIHRoZSB1bmNvbXByZXNzZWQgYmxvY2tzLiBSZWFkcyBhcmUgcHJvbWlzZS1kZWR1cGVkIGFuZCBjb250aWd1b3VzIG1pc3NpbmcgYmxvY2tzIGFyZVxuLy8gY29hbGVzY2VkIGludG8gb25lIHVuZGVybHlpbmcgcmVhZC4gRmlsZXMgYXJlIGltbXV0YWJsZSwgc28gY2FjaGVkIGJsb2NrcyBhcmUgdmFsaWQgZm9yZXZlci5cbi8vXG4vLyBQZXItYmxvY2sgY29tcHJlc3Npb24gbWFpbmx5IGhlbHBzIHNsb3cgc3RvcmFnZSAoSEREKTogZmV3ZXIgYnl0ZXMgb2ZmIGRpc2sgcGVyIGJsb2NrLCBhdCB0aGUgY29zdFxuLy8gb2YgYSBmYXN0IGluLW1lbW9yeSBMWjQgZGVjb21wcmVzcy5cblxuY29uc3QgQkxPQ0tfU0laRSA9IDI1NiAqIDEwMjQ7XG5jb25zdCBNQVhfQkxPQ0tTID0gTWF0aC5mbG9vcigoNTEyICogMTAyNCAqIDEwMjQpIC8gQkxPQ0tfU0laRSk7XG5jb25zdCBNSU5fQ09NUFJFU1NJT05fUkFUSU8gPSAyO1xuXG5jb25zdCBFTVBUWSA9IEJ1ZmZlci5hbGxvYygwKSBhcyBCdWZmZXI7XG5cbmV4cG9ydCB0eXBlIEdldFJhbmdlID0gKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSA9PiBQcm9taXNlPEJ1ZmZlcj47XG5cbnR5cGUgQmxvY2tNZXRhID0geyBsZW46IG51bWJlcjsgYzogMCB8IDEgfTtcbnR5cGUgRmlsZUluZGV4ID0ge1xuICAgIHVuY29tcHJlc3NlZFNpemU6IG51bWJlcjtcbiAgICBibG9ja1NpemU6IG51bWJlcjtcbiAgICBibG9ja3M6IEJsb2NrTWV0YVtdO1xuICAgIC8vIFN0b3JlZCBieXRlIG9mZnNldCBvZiBlYWNoIGJsb2NrIChvZmZzZXRzW2ldLi5vZmZzZXRzW2ldK2Jsb2Nrc1tpXS5sZW4pLCBmaWxsZWQgaW4gb24gcGFyc2UuXG4gICAgb2Zmc2V0czogbnVtYmVyW107XG59O1xuXG4vLyBXcml0ZXMgYSBsb2dpY2FsIGJ1bGsgYnVmZmVyIGluIHRoZSBjb21wcmVzc2VkLWJsb2NrIGZvcm1hdCBkZXNjcmliZWQgYWJvdmUuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQ29tcHJlc3NlZEJsb2NrcyhkYXRhOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIGxldCBibG9ja3M6IEJsb2NrTWV0YVtdID0gW107XG4gICAgbGV0IHN0b3JlZFBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuICAgIGxldCBibG9ja0NvdW50ID0gTWF0aC5jZWlsKGRhdGEubGVuZ3RoIC8gQkxPQ0tfU0laRSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBibG9ja0NvdW50OyBpKyspIHtcbiAgICAgICAgbGV0IHJhdyA9IGRhdGEuc3ViYXJyYXkoaSAqIEJMT0NLX1NJWkUsIE1hdGgubWluKChpICsgMSkgKiBCTE9DS19TSVpFLCBkYXRhLmxlbmd0aCkpO1xuICAgICAgICBsZXQgY29tcHJlc3NlZCA9IExaNC5jb21wcmVzcyhyYXcpO1xuICAgICAgICAvLyBPbmx5IGtlZXAgdGhlIGNvbXByZXNzZWQgZm9ybSBpZiBpdCBzaHJpbmtzIHRoZSBibG9jayBieSBhdCBsZWFzdCBNSU5fQ09NUFJFU1NJT05fUkFUSU8uXG4gICAgICAgIGlmIChjb21wcmVzc2VkLmxlbmd0aCAqIE1JTl9DT01QUkVTU0lPTl9SQVRJTyA8PSByYXcubGVuZ3RoKSB7XG4gICAgICAgICAgICBzdG9yZWRQYXJ0cy5wdXNoKGNvbXByZXNzZWQpO1xuICAgICAgICAgICAgYmxvY2tzLnB1c2goeyBsZW46IGNvbXByZXNzZWQubGVuZ3RoLCBjOiAxIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RvcmVkUGFydHMucHVzaChyYXcpO1xuICAgICAgICAgICAgYmxvY2tzLnB1c2goeyBsZW46IHJhdy5sZW5ndGgsIGM6IDAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGluZGV4QnVmID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoeyB1bmNvbXByZXNzZWRTaXplOiBkYXRhLmxlbmd0aCwgYmxvY2tTaXplOiBCTE9DS19TSVpFLCBibG9ja3MgfSksIFwidXRmOFwiKTtcbiAgICBsZXQgcHJlZml4ID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIHByZWZpeC53cml0ZVVJbnQzMkxFKGluZGV4QnVmLmxlbmd0aCwgMCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3ByZWZpeCwgaW5kZXhCdWYsIC4uLnN0b3JlZFBhcnRzXSk7XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja0NhY2hlIHtcbiAgICAvLyBVbmNvbXByZXNzZWQgYmxvY2tzOyBpbnNlcnRpb24gb3JkZXIgaXMgTFJVIG9yZGVyIChyZS1pbnNlcnRlZCBvbiBhY2Nlc3MpLlxuICAgIHByaXZhdGUgYmxvY2tzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QnVmZmVyPj4oKTtcbiAgICAvLyBQYXJzZWQgZmlsZSBpbmRleCBwZXIgZmlsZUlkIChzbWFsbDsgbm90IHN1YmplY3QgdG8gdGhlIGJsb2NrIExSVSkuXG4gICAgcHJpdmF0ZSBpbmRleGVzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8RmlsZUluZGV4Pj4oKTtcblxuICAgIHB1YmxpYyBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5ibG9ja3MuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5pbmRleGVzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV2aWN0KGZpbGVJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW5kZXhlcy5kZWxldGUoZmlsZUlkKTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gZmlsZUlkICsgXCI6XCI7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuYmxvY2tzLmtleXMoKSkgaWYgKGtleS5zdGFydHNXaXRoKHByZWZpeCkpIHRoaXMuYmxvY2tzLmRlbGV0ZShrZXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG91Y2goa2V5OiBzdHJpbmcsIHZhbHVlOiBQcm9taXNlPEJ1ZmZlcj4pIHtcbiAgICAgICAgdGhpcy5ibG9ja3MuZGVsZXRlKGtleSk7XG4gICAgICAgIHRoaXMuYmxvY2tzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgd2hpbGUgKHRoaXMuYmxvY2tzLnNpemUgPiBNQVhfQkxPQ0tTKSB7XG4gICAgICAgICAgICBsZXQgb2xkZXN0ID0gdGhpcy5ibG9ja3Mua2V5cygpLm5leHQoKS52YWx1ZTtcbiAgICAgICAgICAgIGlmIChvbGRlc3QgPT09IHVuZGVmaW5lZCkgYnJlYWs7XG4gICAgICAgICAgICB0aGlzLmJsb2Nrcy5kZWxldGUob2xkZXN0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlYWRzICsgdmFsaWRhdGVzIHRoZSBmaWxlIGluZGV4LiBSZWplY3RzIHRoZSBXSE9MRSBmaWxlIGlmIGl0IGlzbid0IGV4YWN0bHkgdGhlIHNpemUgaXRzIGluZGV4XG4gICAgLy8gaW1wbGllcyDigJQgYSB0cnVuY2F0ZWQvcGFydGlhbCB3cml0ZSAoZS5nLiBhIGNyYXNoIG1pZC13cml0ZSkgaXMgZGV0ZWN0ZWQgaGVyZSByYXRoZXIgdGhhblxuICAgIC8vIHNpbGVudGx5IHJldHVybmluZyBjb3JydXB0ZWQgdmFsdWVzIGZvciB0aGUgcm93cyBuZWFyIHRoZSBlbmQuXG4gICAgcHJpdmF0ZSBhc3luYyByZWFkSW5kZXgocmF3R2V0UmFuZ2U6IEdldFJhbmdlLCBmaWxlU2l6ZTogbnVtYmVyKTogUHJvbWlzZTxGaWxlSW5kZXg+IHtcbiAgICAgICAgbGV0IGhlYWQgPSBhd2FpdCByYXdHZXRSYW5nZSgwLCA0KTtcbiAgICAgICAgaWYgKGhlYWQubGVuZ3RoIDwgNCkgdGhyb3cgbmV3IEVycm9yKGBidWxrIGZpbGUgdG9vIHNob3J0IGZvciBhbiBpbmRleCBoZWFkZXIgKCR7ZmlsZVNpemV9IGJ5dGVzKWApO1xuICAgICAgICBsZXQgaW5kZXhMZW5ndGggPSBoZWFkLnJlYWRVSW50MzJMRSgwKTtcbiAgICAgICAgaWYgKGluZGV4TGVuZ3RoIDw9IDAgfHwgNCArIGluZGV4TGVuZ3RoID4gZmlsZVNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYnVsayBmaWxlIGluZGV4IGxlbmd0aCAke2luZGV4TGVuZ3RofSBpcyBpbnZhbGlkIGZvciBhICR7ZmlsZVNpemV9LWJ5dGUgZmlsZWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleEJ1ZiA9IGF3YWl0IHJhd0dldFJhbmdlKDQsIDQgKyBpbmRleExlbmd0aCk7XG4gICAgICAgIGxldCBwYXJzZWQgPSBKU09OLnBhcnNlKGluZGV4QnVmLnRvU3RyaW5nKFwidXRmOFwiKSkgYXMgeyB1bmNvbXByZXNzZWRTaXplOiBudW1iZXI7IGJsb2NrU2l6ZTogbnVtYmVyOyBibG9ja3M6IEJsb2NrTWV0YVtdIH07XG4gICAgICAgIGxldCBkYXRhQmFzZSA9IDQgKyBpbmRleExlbmd0aDtcbiAgICAgICAgbGV0IG9mZnNldHM6IG51bWJlcltdID0gW107XG4gICAgICAgIGxldCBvZmZzZXQgPSBkYXRhQmFzZTtcbiAgICAgICAgZm9yIChsZXQgYmxvY2sgb2YgcGFyc2VkLmJsb2Nrcykge1xuICAgICAgICAgICAgb2Zmc2V0cy5wdXNoKG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gYmxvY2subGVuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBibG9ja3MgbXVzdCBhY2NvdW50IGZvciBleGFjdGx5IHRoZSByZXN0IG9mIHRoZSBmaWxlLiBBbnkgbWlzbWF0Y2ggbWVhbnMgdGhlIGZpbGUgaXNcbiAgICAgICAgLy8gdHJ1bmNhdGVkIG9yIG90aGVyd2lzZSBjb3JydXB0IOKAlCByZWplY3QgaXQgZW50aXJlbHkuXG4gICAgICAgIGlmIChvZmZzZXQgIT09IGZpbGVTaXplKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJ1bGsgZmlsZSBpcyAke2ZpbGVTaXplfSBieXRlcyBidXQgaXRzIGluZGV4IGltcGxpZXMgJHtvZmZzZXR9ICh0cnVuY2F0ZWQvY29ycnVwdClgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5wYXJzZWQsIG9mZnNldHMgfTtcbiAgICB9XG5cbiAgICAvLyBPcGVucyBhbiBpbW11dGFibGUgZmlsZTogcmVhZHMgKyB2YWxpZGF0ZXMgaXRzIGluZGV4IChjYWNoZWQpIGFuZCByZXR1cm5zIHRoZSBsb2dpY2FsXG4gICAgLy8gKHVuY29tcHJlc3NlZCkgc2l6ZSBwbHVzIGEgbG9naWNhbCBnZXRSYW5nZSB0aGF0IHRoZSBjYWxsZXIgY2FuIHVzZSBleGFjdGx5IGxpa2UgYW5cbiAgICAvLyB1bmNvbXByZXNzZWQgZmlsZS4gYGZpbGVTaXplYCBpcyB0aGUgYWN0dWFsIG9uLWRpc2sgYnl0ZSBsZW5ndGgsIHVzZWQgdG8gZGV0ZWN0IHRydW5jYXRpb24uXG4gICAgcHVibGljIGFzeW5jIG9wZW4oZmlsZUlkOiBzdHJpbmcsIGZpbGVTaXplOiBudW1iZXIsIHJhd0dldFJhbmdlOiBHZXRSYW5nZSk6IFByb21pc2U8eyB1bmNvbXByZXNzZWRTaXplOiBudW1iZXI7IGdldFJhbmdlOiBHZXRSYW5nZSB9PiB7XG4gICAgICAgIGxldCBpbmRleFByb21pc2UgPSB0aGlzLmluZGV4ZXMuZ2V0KGZpbGVJZCk7XG4gICAgICAgIGlmICghaW5kZXhQcm9taXNlKSB7XG4gICAgICAgICAgICBpbmRleFByb21pc2UgPSB0aGlzLnJlYWRJbmRleChyYXdHZXRSYW5nZSwgZmlsZVNpemUpO1xuICAgICAgICAgICAgdGhpcy5pbmRleGVzLnNldChmaWxlSWQsIGluZGV4UHJvbWlzZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluZGV4ID0gYXdhaXQgaW5kZXhQcm9taXNlO1xuICAgICAgICByZXR1cm4geyB1bmNvbXByZXNzZWRTaXplOiBpbmRleC51bmNvbXByZXNzZWRTaXplLCBnZXRSYW5nZTogdGhpcy5tYWtlR2V0UmFuZ2UoZmlsZUlkLCBpbmRleCwgcmF3R2V0UmFuZ2UpIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlR2V0UmFuZ2UoZmlsZUlkOiBzdHJpbmcsIGluZGV4OiBGaWxlSW5kZXgsIHJhd0dldFJhbmdlOiBHZXRSYW5nZSk6IEdldFJhbmdlIHtcbiAgICAgICAgbGV0IGJsb2NrU2l6ZSA9IGluZGV4LmJsb2NrU2l6ZTtcbiAgICAgICAgcmV0dXJuIGFzeW5jIChzdGFydCwgZW5kKSA9PiB7XG4gICAgICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICBsZXQgZmlyc3RCbG9jayA9IE1hdGguZmxvb3Ioc3RhcnQgLyBibG9ja1NpemUpO1xuICAgICAgICAgICAgbGV0IGxhc3RCbG9jayA9IE1hdGguZmxvb3IoKGVuZCAtIDEpIC8gYmxvY2tTaXplKTtcblxuICAgICAgICAgICAgbGV0IHBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICAgICAgbGV0IGJsb2NrID0gZmlyc3RCbG9jaztcbiAgICAgICAgICAgIHdoaWxlIChibG9jayA8PSBsYXN0QmxvY2spIHtcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gYCR7ZmlsZUlkfToke2Jsb2NrfWA7XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZCA9IHRoaXMuYmxvY2tzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaChrZXksIGNhY2hlZCk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYXdhaXQgY2FjaGVkKTtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2srKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIENvYWxlc2NlIGEgcnVuIG9mIGNvbnNlY3V0aXZlIG1pc3NpbmcgYmxvY2tzIGludG8gb25lIHVuZGVybHlpbmcgKGNvbXByZXNzZWQpIHJlYWQuXG4gICAgICAgICAgICAgICAgbGV0IHJ1blN0YXJ0ID0gYmxvY2s7XG4gICAgICAgICAgICAgICAgbGV0IHJ1bkVuZCA9IGJsb2NrICsgMTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocnVuRW5kIDw9IGxhc3RCbG9jayAmJiAhdGhpcy5ibG9ja3MuaGFzKGAke2ZpbGVJZH06JHtydW5FbmR9YCkpIHJ1bkVuZCsrO1xuICAgICAgICAgICAgICAgIGxldCBjb21wU3RhcnQgPSBpbmRleC5vZmZzZXRzW3J1blN0YXJ0XTtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdE1ldGEgPSBpbmRleC5ibG9ja3NbcnVuRW5kIC0gMV07XG4gICAgICAgICAgICAgICAgbGV0IGNvbXBFbmQgPSBpbmRleC5vZmZzZXRzW3J1bkVuZCAtIDFdICsgbGFzdE1ldGEubGVuO1xuICAgICAgICAgICAgICAgIGxldCBydW5Db21wcmVzc2VkID0gcmF3R2V0UmFuZ2UoY29tcFN0YXJ0LCBjb21wRW5kKTtcbiAgICAgICAgICAgICAgICAvLyBIb2xkIHRoaXMgcnVuJ3MgcHJvbWlzZXMgbG9jYWxseS4gUmVnaXN0ZXJpbmcgdGhlbSBpbiB0aGUgTFJVIGNhbiBldmljdCBlYXJsaWVyXG4gICAgICAgICAgICAgICAgLy8gYmxvY2tzIG9mIHRoZSBzYW1lIHJ1biAob3Igb2YgYSBjb25jdXJyZW50IHJ1bikgYmVmb3JlIHdlIGdldCB0byBhd2FpdCB0aGVtLCBzb1xuICAgICAgICAgICAgICAgIC8vIHJlYWRpbmcgdGhlbSBiYWNrIG91dCBvZiB0aGUgY2FjaGUgd291bGQgc2lsZW50bHkgZHJvcCBibG9ja3MgYW5kIHJldHVybiBhIHNob3J0XG4gICAgICAgICAgICAgICAgLy8gYnVmZmVyLiBXZSBzdGlsbCByZWdpc3RlciBpbiB0aGUgTFJVIHNvIGNvbmN1cnJlbnQgcmVhZHMgZGVkdXBlIG9udG8gdGhlbS5cbiAgICAgICAgICAgICAgICBsZXQgcnVuUHJvbWlzZXM6IFByb21pc2U8QnVmZmVyPltdID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHJ1blN0YXJ0OyBpIDwgcnVuRW5kOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1ldGEgPSBpbmRleC5ibG9ja3NbaV07XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWxPZmZzZXQgPSBpbmRleC5vZmZzZXRzW2ldIC0gY29tcFN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tQcm9taXNlID0gcnVuQ29tcHJlc3NlZC50aGVuKGJ1ZiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RvcmVkID0gYnVmLnN1YmFycmF5KHJlbE9mZnNldCwgcmVsT2Zmc2V0ICsgbWV0YS5sZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGEuYykgcmV0dXJuIExaNC5kZWNvbXByZXNzKHN0b3JlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmVkO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcnVuUHJvbWlzZXMucHVzaChibG9ja1Byb21pc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoKGAke2ZpbGVJZH06JHtpfWAsIGJsb2NrUHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb21pc2Ugb2YgcnVuUHJvbWlzZXMpIHBhcnRzLnB1c2goYXdhaXQgcHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgYmxvY2sgPSBydW5FbmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb21iaW5lZCA9IHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBwYXJ0c1swXSB8fCBCdWZmZXIuY29uY2F0KHBhcnRzKTtcbiAgICAgICAgICAgIGxldCBzbGljZVN0YXJ0ID0gc3RhcnQgLSBmaXJzdEJsb2NrICogYmxvY2tTaXplO1xuICAgICAgICAgICAgLy8gQSBzaG9ydCBjb21iaW5lZCBidWZmZXIgbWVhbnMgd2UgbG9zdCBibG9ja3M7IHN1YmFycmF5IHdvdWxkIGNsYW1wIGFuZCBoYW5kIGJhY2tcbiAgICAgICAgICAgIC8vIHRydW5jYXRlZCBkYXRhIHRoYXQgZXZlcnkgY2FsbGVyIHRyZWF0cyBhcyB2YWxpZC4gRmFpbCBsb3VkbHkgaW5zdGVhZC5cbiAgICAgICAgICAgIGlmIChjb21iaW5lZC5sZW5ndGggPCBzbGljZVN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtzbGljZVN0YXJ0ICsgKGVuZCAtIHN0YXJ0KX0gYnl0ZXMgb2YgYmxvY2tzIGZvciByYW5nZSBbJHtzdGFydH0sICR7ZW5kfSkgb2YgJHtmaWxlSWR9LCB3YXMgJHtjb21iaW5lZC5sZW5ndGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZWQuc3ViYXJyYXkoc2xpY2VTdGFydCwgc2xpY2VTdGFydCArIChlbmQgLSBzdGFydCkpO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuLy8gU2hhcmVkIGFjcm9zcyBldmVyeSBCdWxrRGF0YWJhc2UyIGNvbGxlY3Rpb24vZmlsZSAodGhlIDUxMk1CIGJ1ZGdldCBpcyBnbG9iYWwpLlxuZXhwb3J0IGNvbnN0IGJsb2NrQ2FjaGUgPSBuZXcgQmxvY2tDYWNoZSgpO1xuIl19
179
- /* _JS_SOURCE_HASH = "ae0872179d992679057d79f1a8bbd404fe3d2ca353467c495d54658fd673e05d"; */
179
+ /* _JS_SOURCE_HASH = "9a96e6fce74c45d2fc49828b785a0df0b264d6ff85be9746eacf6c58d523ce37"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  // Best-effort "only one tab merges this collection at a time" guard. This is purely an efficiency
3
3
  // measure: correctness does NOT depend on it. Reads resolve by per-row write-time, merges write new
4
4
  // files before deleting consumed ones, and a duplicate-heavy region gets re-merged — so two tabs
@@ -146,4 +146,4 @@ async function releaseMergeFileLock(storage, holderId) {
146
146
  }
147
147
  exports.releaseMergeFileLock = releaseMergeFileLock;
148
148
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VMb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyZ2VMb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrR0FBa0c7QUFDbEcsb0dBQW9HO0FBQ3BHLGlHQUFpRztBQUNqRyxzR0FBc0c7QUFDdEcscUdBQXFHO0FBQ3JHLG1HQUFtRztBQUNuRyxxR0FBcUc7QUFDckcsNkZBQTZGO0FBQzdGLEVBQUU7QUFDRixnR0FBZ0c7QUFDaEcsbUdBQW1HO0FBQ25HLG9HQUFvRztBQUNwRyxxR0FBcUc7QUFDckcsc0VBQXNFOzs7QUFJdEUsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUk5QixTQUFTLGNBQWMsQ0FBQyxLQUFhO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsSUFBSSxLQUFLLEdBQUcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGVBQWU7SUFDcEIsSUFBSSxDQUFDO1FBQ0QsT0FBTyxPQUFPLFlBQVksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFFLENBQUM7SUFBQyxXQUFNLENBQUM7UUFDTCxPQUFPLFNBQVMsQ0FBQyxDQUFDLDJEQUEyRDtJQUNqRixDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMs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QUMsUUFBUSxLQUFLLFFBQVE7WUFBRSxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUFDLFFBQVEsWUFBWSxJQUFkLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBTEQsb0RBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCZXN0LWVmZm9ydCBcIm9ubHkgb25lIHRhYiBtZXJnZXMgdGhpcyBjb2xsZWN0aW9uIGF0IGEgdGltZVwiIGd1YXJkLiBUaGlzIGlzIHB1cmVseSBhbiBlZmZpY2llbmN5XG4vLyBtZWFzdXJlOiBjb3JyZWN0bmVzcyBkb2VzIE5PVCBkZXBlbmQgb24gaXQuIFJlYWRzIHJlc29sdmUgYnkgcGVyLXJvdyB3cml0ZS10aW1lLCBtZXJnZXMgd3JpdGUgbmV3XG4vLyBmaWxlcyBiZWZvcmUgZGVsZXRpbmcgY29uc3VtZWQgb25lcywgYW5kIGEgZHVwbGljYXRlLWhlYXZ5IHJlZ2lvbiBnZXRzIHJlLW1lcmdlZCDigJQgc28gdHdvIHRhYnNcbi8vIG1lcmdpbmcgYXQgb25jZSBvbmx5IHdhc3RlIHdvcmsgYW5kIGJyaWVmbHkgZHVwbGljYXRlIGRhdGEsIG5ldmVyIGNvcnJ1cHQgb3IgbG9zZSBpdC4gVGhlIGxvY2sganVzdFxuLy8gc3RvcHMgdGhhdCB3YXN0ZWQgd29yay4gSXQgdXNlcyBsb2NhbFN0b3JhZ2UgKHNoYXJlZCBhY3Jvc3Mgc2FtZS1vcmlnaW4gdGFicykgYW5kIGlzIGEgbm8tb3Agd2hlcmVcbi8vIGxvY2FsU3RvcmFnZSBpcyB1bmF2YWlsYWJsZSAoTm9kZSkg4oCUIHRoZXJlIGNvbmN1cnJlbnQgbWVyZ2VzIGFyZSBoYXJtbGVzcywgd2hpY2ggdGhlIE5vZGUgc3RyZXNzXG4vLyB0ZXN0cyBleGVyY2lzZS4gbG9jYWxTdG9yYWdlIGhhcyBubyBhdG9taWMgY29tcGFyZS1hbmQtc3dhcCwgc28gd2Ugd3JpdGUtdGhlbi1yZXJlYWQgdG8gc2hyaW5rIHRoZVxuLy8gcmFjZSB3aW5kb3csIGFuZCBhIFRUTCBmcmVlcyBhIGxvY2sgbGVmdCBiZWhpbmQgYnkgYSB0YWIgdGhhdCBjcmFzaGVkIG9yIGNsb3NlZCBtaWQtbWVyZ2UuXG4vL1xuLy8gRmlsZS1sb2NrIGxheWVyIChzZWUgYWNxdWlyZU1lcmdlRmlsZUxvY2sgYXQgdGhlIGJvdHRvbSk6IGZvciBjcm9zcy1QUk9DRVNTIHNhZmV0eSAoZGlmZmVyZW50XG4vLyBicm93c2VycywgZGlmZmVyZW50IG1hY2hpbmVzIHBvaW50aW5nIGF0IHRoZSBzYW1lIHJlbW90ZSBzdG9yYWdlKSwgd2UgQUxTTyB3cml0ZSBhIGAubWVyZ2UtbG9ja2Bcbi8vIGZpbGUgaW5zaWRlIHRoZSBjb2xsZWN0aW9uJ3Mgc3RvcmFnZSB3aXRoIG91ciBJRC4gVGhlIHByb3RvY29sIGlzIGNoZWNrLXdyaXRlLXdhaXQtcmVjaGVjayDigJQgbGFzdFxuLy8gd3JpdGVyIHdpbnMgYWZ0ZXIgdGhlIDE1cyBzZXR0bGUgd2luZG93LiBUaGUgbG9jYWxTdG9yYWdlIGxvY2sgYWJvdmUgY292ZXJzIHNhbWUtb3JpZ2luIHRhYnM7IHRoaXNcbi8vIGNvdmVycyBldmVyeXRoaW5nIGVsc2UgKHNlcGFyYXRlIHByb2Nlc3NlcywgcmVtb3RlIHNoYXJlZCBzdG9yYWdlKS5cblxuaW1wb3J0IHR5cGUgeyBGaWxlU3RvcmFnZSB9IGZyb20gXCIuLi9GaWxlRm9sZGVyQVBJXCI7XG5cbmNvbnN0IExPQ0tfVFRMX01TID0gMzAgKiAxMDAwO1xuXG5leHBvcnQgdHlwZSBNZXJnZUxvY2tJbmZvID0geyBob2xkZXJJZDogc3RyaW5nOyBleHBpcmVzSW5NczogbnVtYmVyIH07XG5cbmZ1bmN0aW9uIHBhcnNlTG9ja1Rva2VuKHRva2VuOiBzdHJpbmcpOiB7IGhvbGRlcklkOiBzdHJpbmc7IHRpbWU6IG51bWJlciB9IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb2xvbiA9IHRva2VuLmxhc3RJbmRleE9mKFwiOlwiKTtcbiAgICBpZiAoY29sb24gPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRpbWUgPSBwYXJzZUludCh0b2tlbi5zbGljZShjb2xvbiArIDEpLCAxMCk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodGltZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHsgaG9sZGVySWQ6IHRva2VuLnNsaWNlKDAsIGNvbG9uKSwgdGltZSB9O1xufVxuXG5mdW5jdGlvbiBnZXRMb2NhbFN0b3JhZ2UoKTogU3RvcmFnZSB8IHVuZGVmaW5lZCB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09IFwidW5kZWZpbmVkXCIgPyBsb2NhbFN0b3JhZ2UgOiB1bmRlZmluZWQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIGFjY2Vzc2luZyBsb2NhbFN0b3JhZ2UgY2FuIHRocm93IChlLmcuIGRpc2FibGVkIGNvb2tpZXMpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2NrS2V5KGNvbGxlY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiYnVsa0RhdGFiYXNlMi1tZXJnZTpcIiArIGNvbGxlY3Rpb247XG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBub3cgaG9sZCB0aGUgbG9jayAob3IgdGhlcmUncyBubyBsb2NhbFN0b3JhZ2UgdG8gY29vcmRpbmF0ZSB0aHJvdWdoLCBpbiB3aGljaCBjYXNlXG4vLyB3ZSBwcm9jZWVkIOKAlCBjb25jdXJyZW50IG1lcmdlcyBhcmUgaGFybWxlc3MpLiBSZXR1cm5zIGZhbHNlIG9ubHkgaWYgYSBESUZGRVJFTlQgaG9sZGVyIGhhcyBhIGZyZXNoXG4vLyBsb2NrLiBSZS1zdGFtcGluZyBvdXIgb3duIGxvY2sgYWx3YXlzIHN1Y2NlZWRzLCBzbyB0aGlzIGRvdWJsZXMgYXMgYSBoZWFydGJlYXQ6IGNhbGwgaXQgcGVyaW9kaWNhbGx5XG4vLyBkdXJpbmcgYSBsb25nLCBzcGFjZWQtb3V0IG1lcmdlIHRvIGtlZXAgdGhlIGxvY2sgYWxpdmUgKGFuZCBkZXRlY3QgaWYgYW5vdGhlciB0YWIgdG9vayBpdCBvdmVyKS5cbmV4cG9ydCBmdW5jdGlvbiB0cnlBY3F1aXJlTWVyZ2VMb2NrKGNvbGxlY3Rpb246IHN0cmluZywgaG9sZGVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxzID0gZ2V0TG9jYWxTdG9yYWdlKCk7XG4gICAgaWYgKCFscykgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qga2V5ID0gbG9ja0tleShjb2xsZWN0aW9uKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbHMuZ2V0SXRlbShrZXkpO1xuICAgIGlmIChleGlzdGluZyAmJiAhZXhpc3Rpbmcuc3RhcnRzV2l0aChob2xkZXJJZCArIFwiOlwiKSkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUxvY2tUb2tlbihleGlzdGluZyk7XG4gICAgICAgIGlmIChwYXJzZWQgJiYgbm93IC0gcGFyc2VkLnRpbWUgPCBMT0NLX1RUTF9NUykgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0b2tlbiA9IGhvbGRlcklkICsgXCI6XCIgKyBub3c7XG4gICAgbHMuc2V0SXRlbShrZXksIHRva2VuKTtcbiAgICAvLyBSZS1yZWFkIHRvIGNhdGNoIGEgcmFjaW5nIHNldEl0ZW0gZnJvbSBhbm90aGVyIHRhYiAoYmVzdC1lZmZvcnQsIG5vdCBhdG9taWMpLlxuICAgIHJldHVybiBscy5nZXRJdGVtKGtleSkgPT09IHRva2VuO1xufVxuXG4vLyBOb24tbXV0YXRpbmcgbG9vayBhdCB0aGUgdGFiIGxvY2s6IHdobyBob2xkcyBpdCBhbmQgaG93IGxvbmcgdW50aWwgaXQgZ29lcyBzdGFsZSAobmVnYXRpdmUgPSBhbHJlYWR5XG4vLyBzdGFsZSkuIEZvciBsb2dnaW5nIHdoeSBhIG1lcmdlIHdhcyBza2lwcGVkLlxuZXhwb3J0IGZ1bmN0aW9uIHBlZWtNZXJnZUxvY2soY29sbGVjdGlvbjogc3RyaW5nKTogTWVyZ2VMb2NrSW5mbyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbHMgPSBnZXRMb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAoIWxzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbHMuZ2V0SXRlbShsb2NrS2V5KGNvbGxlY3Rpb24pKTtcbiAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlTG9ja1Rva2VuKGV4aXN0aW5nKTtcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBob2xkZXJJZDogcGFyc2VkLmhvbGRlcklkLCBleHBpcmVzSW5NczogcGFyc2VkLnRpbWUgKyBMT0NLX1RUTF9NUyAtIERhdGUubm93KCkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VNZXJnZUxvY2soY29sbGVjdGlvbjogc3RyaW5nLCBob2xkZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbHMgPSBnZXRMb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAoIWxzKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbG9ja0tleShjb2xsZWN0aW9uKTtcbiAgICBjb25zdCBleGlzdGluZyA9IGxzLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3Rpbmcuc3RhcnRzV2l0aChob2xkZXJJZCArIFwiOlwiKSkgbHMucmVtb3ZlSXRlbShrZXkpO1xufVxuXG4vLyDilIDilIAgRmlsZS1iYXNlZCBsb2NrIChjcm9zcy1wcm9jZXNzIC8gc2hhcmVkIHN0b3JhZ2UpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuY29uc3QgRklMRV9MT0NLX0tFWSA9IFwiLm1lcmdlLWxvY2tcIjtcbmNvbnN0IEZJTEVfTE9DS19UVExfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgRklMRV9MT0NLX1NFVFRMRV9NUyA9IDE1ICogMTAwMDtcbmNvbnN0IEZJTEVfTE9DS19IRUFSVEJFQVRfTVMgPSAyICogNjAgKiAxMDAwO1xuXG5hc3luYyBmdW5jdGlvbiByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlOiBGaWxlU3RvcmFnZSk6IFByb21pc2U8eyBob2xkZXJJZDogc3RyaW5nOyB0aW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IHN0b3JhZ2UuZ2V0KEZJTEVfTE9DS19LRVkpO1xuICAgICAgICBpZiAoIWJ1ZikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHBhcnNlTG9ja1Rva2VuKGJ1Zi50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgIH0gY2F0Y2ggeyByZXR1cm4gdW5kZWZpbmVkOyB9XG59XG5cbi8vIE5vbi1tdXRhdGluZyBsb29rIGF0IHRoZSBjcm9zcy1wcm9jZXNzIGxvY2sgZmlsZSAoc2VlIHBlZWtNZXJnZUxvY2spLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBlZWtNZXJnZUZpbGVMb2NrKHN0b3JhZ2U6IEZpbGVTdG9yYWdlKTogUHJvbWlzZTxNZXJnZUxvY2tJbmZvIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IGhvbGRlcklkOiBleGlzdGluZy5ob2xkZXJJZCwgZXhwaXJlc0luTXM6IGV4aXN0aW5nLnRpbWUgKyBGSUxFX0xPQ0tfVFRMX01TIC0gRGF0ZS5ub3coKSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZU1lcmdlRmlsZUxvY2soc3RvcmFnZTogRmlsZVN0b3JhZ2UsIGhvbGRlcklkOiBzdHJpbmcsIHRpbWU6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN0b3JhZ2Uuc2V0KEZJTEVfTE9DS19LRVksIEJ1ZmZlci5mcm9tKGAke2hvbGRlcklkfToke3RpbWV9YCwgXCJ1dGY4XCIpIGFzIEJ1ZmZlcik7XG59XG5cbi8vIEFjcXVpcmUgdGhlIGNyb3NzLXByb2Nlc3MgZmlsZSBsb2NrLiBSZXNvbHZlcyB0byB0cnVlIE9OTFkgaWYsIGFmdGVyIHdyaXRpbmcgb3VyIElEIGFuZCB3YWl0aW5nXG4vLyBGSUxFX0xPQ0tfU0VUVExFX01TIGZvciBjb25jdXJyZW50IHdyaXRlcnMgdG8gc2V0dGxlLCB0aGUgZmlsZSBzdGlsbCBuYW1lcyB1cy4gQ2FsbGVyIG11c3Rcbi8vIHJlbGVhc2VNZXJnZUZpbGVMb2NrKCkgb24gdGhlIHNhbWUgc3RvcmFnZSArIGhvbGRlcklkIHdoZW4gZG9uZS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlBY3F1aXJlTWVyZ2VGaWxlTG9jayhzdG9yYWdlOiBGaWxlU3RvcmFnZSwgaG9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3RpbmcuaG9sZGVySWQgIT09IGhvbGRlcklkICYmIG5vdyAtIGV4aXN0aW5nLnRpbWUgPCBGSUxFX0xPQ0tfVFRMX01TKSByZXR1cm4gZmFsc2U7XG4gICAgYXdhaXQgd3JpdGVNZXJnZUZpbGVMb2NrKHN0b3JhZ2UsIGhvbGRlcklkLCBub3cpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCBGSUxFX0xPQ0tfU0VUVExFX01TKSk7XG4gICAgY29uc3QgYWZ0ZXIgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICByZXR1cm4gISFhZnRlciAmJiBhZnRlci5ob2xkZXJJZCA9PT0gaG9sZGVySWQ7XG59XG5cbi8vIEtlZXAgdGhlIGxvY2sgZnJlc2guIFRoZSBtZXJnZSBtaWdodCBydW4gbG9uZ2VyIHRoYW4gRklMRV9MT0NLX1RUTF9NUzsgd2l0aG91dCBwZXJpb2RpYyByZS1zdGFtcGluZyxcbi8vIGFub3RoZXIgcHJvY2VzcyB3b3VsZCBzZWUgdGhlIGxvY2sgYXMgc3RhbGUgYW5kIGFjcXVpcmUgaXQuIFJldHVybnMgYSBzdG9wIGZ1bmN0aW9uIHRoZSBjYWxsZXIgY2FsbHNcbi8vIGluIGBmaW5hbGx5YC4gSGVhcnRiZWF0IGlzIGJlc3QtZWZmb3J0OiBhIGZhaWxlZCB3cml0ZSBpcyBsb2dnZWQgYnV0IG5vdCBwcm9wYWdhdGVkLlxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0TWVyZ2VGaWxlTG9ja0hlYXJ0YmVhdChzdG9yYWdlOiBGaWxlU3RvcmFnZSwgaG9sZGVySWQ6IHN0cmluZyk6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICB2b2lkIHdyaXRlTWVyZ2VGaWxlTG9jayhzdG9yYWdlLCBob2xkZXJJZCwgRGF0ZS5ub3coKSkuY2F0Y2goKCkgPT4geyAvKiBiZXN0LWVmZm9ydCAqLyB9KTtcbiAgICB9LCBGSUxFX0xPQ0tfSEVBUlRCRUFUX01TKTtcbiAgICAoaW50ZXJ2YWwgYXMgeyB1bnJlZj86ICgpID0+IHZvaWQgfSkudW5yZWY/LigpO1xuICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbGVhc2VNZXJnZUZpbGVMb2NrKHN0b3JhZ2U6IEZpbGVTdG9yYWdlLCBob2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nICYmIGV4aXN0aW5nLmhvbGRlcklkID09PSBob2xkZXJJZCkgYXdhaXQgc3RvcmFnZS5yZW1vdmUoRklMRV9MT0NLX0tFWSk7XG4gICAgfSBjYXRjaCB7IC8qIGlnbm9yZSAqLyB9XG59XG4iXX0=
149
- /* _JS_SOURCE_HASH = "e7bec42cb036e4af660bca26523aae2328b1f1d898b944ddd3727256033a5b44"; */
149
+ /* _JS_SOURCE_HASH = "2aac3ba2f7436a4c1d62546c0460b7653a910453df0d38de41be658805d69ee3"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  // Deletion markers: how a merge retires the input files it consumed WITHOUT deleting them inline.
3
3
  //
4
4
  // The old approach deleted consumed inputs on a 15-min timer. If the tab closed before the timer fired
@@ -98,4 +98,4 @@ async function processDeleteMarkers(name, storage, markers, allNames) {
98
98
  }
99
99
  exports.processDeleteMarkers = processDeleteMarkers;
100
100
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VNYXJrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyZ2VNYXJrZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrR0FBa0c7QUFDbEcsRUFBRTtBQUNGLHVHQUF1RztBQUN2RyxxR0FBcUc7QUFDckcsa0dBQWtHO0FBQ2xHLG9HQUFvRztBQUNwRyxvRkFBb0Y7QUFDcEYsRUFBRTtBQUNGLHdHQUF3RztBQUN4RyxvQ0FBb0M7QUFDcEMsMkdBQTJHO0FBQzNHLDJHQUEyRztBQUMzRywwR0FBMEc7QUFDMUcseUdBQXlHO0FBQ3pHLDZHQUE2Rzs7O0FBRzdHLHdFQUF5RTtBQUV6RSxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztBQUN4QyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQVN0QyxTQUFnQixZQUFZLENBQUMsSUFBWTtJQUNyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUZELG9DQUVDO0FBRU0sS0FBSyxVQUFVLGlCQUFpQixDQUFDLE9BQW9CLEVBQUUsTUFBdUQ7SUFDakgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsYUFBYSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENB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Q2IsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRyxJQUFJLGNBQWMsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztZQUN4RCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDakgsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssTUFBTSxDQUFDLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQztvQkFBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQUMsQ0FBQztnQkFBQyxRQUFRLGtCQUFrQixJQUFwQixDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM1RSxDQUFDO1lBQ0QsSUFBSSxPQUFPO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFBLGdCQUFJLEVBQUMsSUFBSSxDQUFDLElBQUksSUFBQSxtQkFBTyxFQUFDLFFBQVEsQ0FBQyxhQUFhLE9BQU8sK0JBQStCLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDN0gsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDO0FBdEJELG9EQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlbGV0aW9uIG1hcmtlcnM6IGhvdyBhIG1lcmdlIHJldGlyZXMgdGhlIGlucHV0IGZpbGVzIGl0IGNvbnN1bWVkIFdJVEhPVVQgZGVsZXRpbmcgdGhlbSBpbmxpbmUuXG4vL1xuLy8gVGhlIG9sZCBhcHByb2FjaCBkZWxldGVkIGNvbnN1bWVkIGlucHV0cyBvbiBhIDE1LW1pbiB0aW1lci4gSWYgdGhlIHRhYiBjbG9zZWQgYmVmb3JlIHRoZSB0aW1lciBmaXJlZFxuLy8gdGhlIGlucHV0cyBzdXJ2aXZlZCBBTkQgd2VyZSBzdGlsbCByZWFkIOKAlCBzbyB0aGUgbmV4dCBtZXJnZSByZS1tZXJnZWQgdGhlIHNhbWUgZHVwbGljYXRlcywgZm9yZXZlclxuLy8gKHRoZSBcIjE3MzkgZmlsZXMsIDE1NUdCLCA5OSUgZHVwbGljYXRlXCIgbG9vcCkuIE1hcmtlcnMgZml4IGJvdGggaGFsdmVzOiB0aGUgY29uc3VtZWQgaW5wdXRzIGFyZVxuLy8gRVhDTFVERUQgZnJvbSByZWFkcyB0aGUgbW9tZW50IHRoZSBtYXJrZXIgZXhpc3RzIChzbyB0aGV5J3JlIG5ldmVyIHJlLW1lcmdlZCksIGFuZCB0aGVpciBwaHlzaWNhbFxuLy8gZGVsZXRpb24gaXMgZHJpdmVuIG9mZiB0aGUgbWFya2VyIG9uIGEgbGF0ZXIgcmVhZCBpbnN0ZWFkIG9mIGFuIGluLXByb2Nlc3MgdGltZXIuXG4vL1xuLy8gQSBtYXJrZXIgbmFtZXMgdGhlIGlucHV0IGZpbGVzIGl0IHdhbnRzIGdvbmUgKGBkZWxldGVGaWxlc2ApIGFuZCB0aGUgb3V0cHV0IGZpbGVzIHRoYXQgc3VwZXJzZWRlIHRoZW1cbi8vIChgcmVwbGFjZWRCeWApLiBPbiBldmVyeSByZWFkIHdlOlxuLy8gICAxKSBleGNsdWRlIGV2ZXJ5IGBkZWxldGVGaWxlc2AgZW50cnkgZnJvbSB0aGUgYWN0aXZlIGZpbGUgc2V0ICh1bmNvbmRpdGlvbmFsbHkg4oCUIHRoYXQncyB0aGUgbG9vcCBmaXgpO1xuLy8gICAyKSBkZWxldGUgYSBtYXJrZXIncyBgZGVsZXRlRmlsZXNgIG9uY2UgaXRzIGByZXBsYWNlZEJ5YCBvdXRwdXRzIGFsbCBleGlzdCBPUiB0aGUgbWFya2VyIGlzIG9sZGVyIHRoYW5cbi8vICAgICAgdGhlIGdyYWNlIHdpbmRvdyAoYSBjcmFzaC1zYWZldHkgZmxvb3Igc28gYSBtYXJrZXIgd2hvc2Ugb3V0cHV0cyBuZXZlciBsYW5kZWQgc3RpbGwgZ2V0cyBjbGVhbmVkKTtcbi8vICAgMykgb25jZSBhIG1hcmtlcidzIGBkZWxldGVGaWxlc2AgYXJlIGFsbCBnb25lLCBhbmQgdGhlIG1hcmtlciBoYXMgYWdlZCBwYXN0IHRoZSBncmFjZSB3aW5kb3csIGRlbGV0ZVxuLy8gICAgICB0aGUgbWFya2VyIGl0c2VsZiAoa2VwdCBhcm91bmQgYnJpZWZseSBzbyBhIGNvbmN1cnJlbnQgcmVhZGVyIHN0aWxsIGV4Y2x1ZGVzIHRoZSBmaWxlcyBjb25zaXN0ZW50bHkpLlxuXG5pbXBvcnQgdHlwZSB7IEZpbGVTdG9yYWdlIH0gZnJvbSBcIi4uL0ZpbGVGb2xkZXJBUElcIjtcbmltcG9ydCB7IGJsdWUsIG1hZ2VudGEgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2xvZ0NvbG9yc1wiO1xuXG5jb25zdCBNQVJLRVJfUFJFRklYID0gXCIuZGVsZXRlLW1hcmtlcl9cIjtcbmNvbnN0IE1BUktFUl9HUkFDRV9NUyA9IDUgKiA2MCAqIDEwMDA7XG5cbmV4cG9ydCB0eXBlIERlbGV0ZU1hcmtlciA9IHtcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIGRlbGV0ZUZpbGVzOiBzdHJpbmdbXTtcbiAgICByZXBsYWNlZEJ5OiBzdHJpbmdbXTtcbiAgICB0aW1lOiBudW1iZXI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZXJGaWxlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYW1lLnN0YXJ0c1dpdGgoTUFSS0VSX1BSRUZJWCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZURlbGV0ZU1hcmtlcihzdG9yYWdlOiBGaWxlU3RvcmFnZSwgY29uZmlnOiB7IGRlbGV0ZUZpbGVzOiBzdHJpbmdbXTsgcmVwbGFjZWRCeTogc3RyaW5nW10gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG5hbWUgPSBgJHtNQVJLRVJfUFJFRklYfSR7dGltZX1fJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCl9YDtcbiAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoeyBkZWxldGVGaWxlczogY29uZmlnLmRlbGV0ZUZpbGVzLCByZXBsYWNlZEJ5OiBjb25maWcucmVwbGFjZWRCeSwgdGltZSB9KTtcbiAgICBhd2FpdCBzdG9yYWdlLnNldChuYW1lLCBCdWZmZXIuZnJvbShib2R5LCBcInV0ZjhcIikgYXMgQnVmZmVyKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWREZWxldGVNYXJrZXJzKHN0b3JhZ2U6IEZpbGVTdG9yYWdlLCBhbGxOYW1lczogc3RyaW5nW10pOiBQcm9taXNlPERlbGV0ZU1hcmtlcltdPiB7XG4gICAgY29uc3QgbWFya2VyTmFtZXMgPSBhbGxOYW1lcy5maWx0ZXIoaXNNYXJrZXJGaWxlKTtcbiAgICBjb25zdCBtYXJrZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwobWFya2VyTmFtZXMubWFwKGFzeW5jIChmaWxlTmFtZSk6IFByb21pc2U8RGVsZXRlTWFya2VyIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBidWYgPSBhd2FpdCBzdG9yYWdlLmdldChmaWxlTmFtZSk7XG4gICAgICAgICAgICBpZiAoIWJ1ZikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoYnVmLnRvU3RyaW5nKFwidXRmOFwiKSkgYXMgeyBkZWxldGVGaWxlcz86IHVua25vd247IHJlcGxhY2VkQnk/OiB1bmtub3duOyB0aW1lPzogdW5rbm93biB9O1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZC5kZWxldGVGaWxlcykgfHwgIUFycmF5LmlzQXJyYXkocGFyc2VkLnJlcGxhY2VkQnkpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICBkZWxldGVGaWxlczogcGFyc2VkLmRlbGV0ZUZpbGVzIGFzIHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VkQnk6IHBhcnNlZC5yZXBsYWNlZEJ5IGFzIHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgIHRpbWU6IHR5cGVvZiBwYXJzZWQudGltZSA9PT0gXCJudW1iZXJcIiA/IHBhcnNlZC50aW1lIDogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm4gbWFya2Vycy5maWx0ZXIoKG0pOiBtIGlzIERlbGV0ZU1hcmtlciA9PiAhIW0pO1xufVxuXG4vLyBUaGUgc2V0IG9mIGZpbGVzIHRoYXQgYW55IG1hcmtlciB3YW50cyBkZWxldGVkIOKAlCB0aGVzZSBtdXN0IGJlIGRyb3BwZWQgZnJvbSB0aGUgYWN0aXZlIHJlYWQgc2V0LlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtlckV4Y2x1c2lvbnMobWFya2VyczogRGVsZXRlTWFya2VyW10pOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgZXhjbHVkZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IG0gb2YgbWFya2VycykgZm9yIChjb25zdCBuIG9mIG0uZGVsZXRlRmlsZXMpIGV4Y2x1ZGVkLmFkZChuKTtcbiAgICByZXR1cm4gZXhjbHVkZWQ7XG59XG5cbi8vIEFjdCBvbiBlYWNoIG1hcmtlciAoc2VlIGZpbGUgaGVhZGVyKS4gSWRlbXBvdGVudCBhbmQgYmVzdC1lZmZvcnQ6IGV2ZXJ5IHJlbW92YWwgaXMgZ3VhcmRlZCwgc28gdHdvXG4vLyBwcm9jZXNzZXMgKG9yIHR3byByZWFkcykgcnVubmluZyB0aGlzIGF0IG9uY2UganVzdCByYWNlIHRvIHRoZSBzYW1lIGFscmVhZHktY29ycmVjdCBlbmQgc3RhdGUuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RlbGV0ZU1hcmtlcnMobmFtZTogc3RyaW5nLCBzdG9yYWdlOiBGaWxlU3RvcmFnZSwgbWFya2VyczogRGVsZXRlTWFya2VyW10sIGFsbE5hbWVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByZXNlbnQgPSBuZXcgU2V0KGFsbE5hbWVzKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGZvciAoY29uc3QgbWFya2VyIG9mIG1hcmtlcnMpIHtcbiAgICAgICAgY29uc3Qgc3RpbGxQcmVzZW50ID0gbWFya2VyLmRlbGV0ZUZpbGVzLmZpbHRlcihuID0+IHByZXNlbnQuaGFzKG4pKTtcbiAgICAgICAgaWYgKCFzdGlsbFByZXNlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBUaGUgZmlsZXMgdGhpcyBtYXJrZXIgcmV0aXJlZCBhcmUgZ29uZTsgb25jZSBpdCdzIGFnZWQgcGFzdCB0aGUgZ3JhY2Ugd2luZG93LCByZXRpcmUgdGhlIG1hcmtlciB0b28uXG4gICAgICAgICAgICBpZiAobm93IC0gbWFya2VyLnRpbWUgPiBNQVJLRVJfR1JBQ0VfTVMpIHtcbiAgICAgICAgICAgICAgICB0cnkgeyBhd2FpdCBzdG9yYWdlLnJlbW92ZShtYXJrZXIuZmlsZU5hbWUpOyB9IGNhdGNoIHsgLyogYWxyZWFkeSBnb25lICovIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkRXhpc3RzID0gbWFya2VyLnJlcGxhY2VkQnkubGVuZ3RoID4gMCAmJiBtYXJrZXIucmVwbGFjZWRCeS5ldmVyeShuID0+IHByZXNlbnQuaGFzKG4pKTtcbiAgICAgICAgaWYgKHJlcGxhY2VkRXhpc3RzIHx8IG5vdyAtIG1hcmtlci50aW1lID4gTUFSS0VSX0dSQUNFX01TKSB7XG4gICAgICAgICAgICBjb25zdCByZWFzb24gPSByZXBsYWNlZEV4aXN0cyA/IGByZXBsYWNlbWVudHMgbGFuZGVkYCA6IGBtYXJrZXIgYWdlZCAke01hdGgucm91bmQoKG5vdyAtIG1hcmtlci50aW1lKSAvIDEwMDApfXNgO1xuICAgICAgICAgICAgbGV0IGRlbGV0ZWQgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBuIG9mIHN0aWxsUHJlc2VudCkge1xuICAgICAgICAgICAgICAgIHRyeSB7IGF3YWl0IHN0b3JhZ2UucmVtb3ZlKG4pOyBkZWxldGVkKys7IH0gY2F0Y2ggeyAvKiBhbHJlYWR5IGdvbmUgKi8gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlbGV0ZWQpIGNvbnNvbGUubG9nKGAke2JsdWUobmFtZSl9ICR7bWFnZW50YShcInJldGlyZVwiKX06IGRlbGV0ZWQgJHtkZWxldGVkfSBtZXJnZWQtYXdheSBpbnB1dCBmaWxlKHMpICgke3JlYXNvbn0pYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
101
- /* _JS_SOURCE_HASH = "336bbc6da44e336a5daa341af1dffe2b22768fff60ed4f0db6d036fdd3a61a23"; */
101
+ /* _JS_SOURCE_HASH = "77027f83d4d551a0568e2117f614c13ae4cac060aa7870e7357bbda2526ff717"; */