sliftutils 1.7.94 → 1.7.95

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 (46) hide show
  1. package/dist/treeSummary.ts.cache +2 -2
  2. package/misc/dist/environment.ts.cache +2 -2
  3. package/misc/dist/getSecret.ts.cache +2 -2
  4. package/misc/dist/strings.ts.cache +2 -2
  5. package/misc/dist/zip.ts.cache +2 -2
  6. package/misc/https/dist/certs.ts.cache +2 -2
  7. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  8. package/package.json +1 -1
  9. package/render-utils/dist/observer.tsx.cache +2 -2
  10. package/storage/dist/ArchivesDisk.ts.cache +2 -2
  11. package/storage/dist/FileFolderAPI.tsx.cache +2 -2
  12. package/storage/dist/IArchives.ts.cache +2 -2
  13. package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
  14. package/storage/dist/JSONStorage.ts.cache +2 -2
  15. package/storage/dist/LogMap.ts.cache +2 -2
  16. package/storage/dist/PendingManager.tsx.cache +2 -2
  17. package/storage/dist/TransactionStorage.ts.cache +2 -2
  18. package/storage/dist/archiveHelpers.ts.cache +2 -2
  19. package/storage/dist/backblaze.ts.cache +2 -2
  20. package/storage/dist/fileSystemPointer.ts.cache +2 -2
  21. package/storage/dist/remoteFileStorage.ts.cache +2 -2
  22. package/storage/remoteStorage/createArchives.ts +21 -32
  23. package/storage/remoteStorage/dist/ArchivesDelayed.ts.cache +2 -2
  24. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
  25. package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
  26. package/storage/remoteStorage/dist/accessStats.ts.cache +2 -2
  27. package/storage/remoteStorage/dist/blobStore.ts.cache +2 -2
  28. package/storage/remoteStorage/dist/bucketDisk.ts.cache +2 -2
  29. package/storage/remoteStorage/dist/certTrustModal.tsx.cache +2 -2
  30. package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
  31. package/storage/remoteStorage/dist/createArchives.ts.cache +34 -38
  32. package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
  33. package/storage/remoteStorage/dist/intermediateManagement.ts.cache +2 -2
  34. package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
  35. package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
  36. package/storage/remoteStorage/dist/serverConfig.ts.cache +2 -2
  37. package/storage/remoteStorage/dist/sourceWrapper.ts.cache +2 -2
  38. package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
  39. package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
  40. package/storage/remoteStorage/dist/storageController.ts.cache +2 -2
  41. package/storage/remoteStorage/dist/storageServerState.ts.cache +2 -2
  42. package/storage/remoteStorage/dist/storeConfig.ts.cache +2 -2
  43. package/storage/remoteStorage/dist/storePlan.ts.cache +2 -2
  44. package/storage/remoteStorage/dist/storeSources.ts.cache +2 -2
  45. package/storage/remoteStorage/dist/storeSync.ts.cache +2 -2
  46. package/storage/remoteStorage/dist/validation.ts.cache +2 -2
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -748,4 +748,4 @@ async function tryToLoadPointer(pointer) {
748
748
  }
749
749
  exports.tryToLoadPointer = tryToLoadPointer;
750
750
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUZvbGRlckFQSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZpbGVGb2xkZXJBUEkudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztBQUVwQyxvREFBNEI7QUFDNUIsMkRBQTZHO0FBQzdHLCtCQUFrQztBQUNsQyx1REFBb0Q7QUFDcEQseURBQTBEO0FBQzFELDZDQUEwQztBQUUxQywyREFBMkQ7QUFDM0QscUVBQWlFO0FBQ2pFLDJEQUFvRztBQUNwRyw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBc0J4Qix1RUFBdUU7QUFDdkUsd0ZBQXdGO0FBQ3hGLCtCQUErQjtBQUMvQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFFN0IscUdBQXFHO0FBQ3JHLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQXFDMUMsSUFBSSxXQUFXLEdBQUcsSUFBQSxpQkFBVSxFQUFDO0lBQ3pCLEVBQUUsRUFBRSxTQUFpRDtDQUN4RCxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRS9CLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUNwQixTQUFTLGFBQWE7SUFDbEIsSUFBSSxDQUFDLFVBQVU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRKQUE0SixDQUFDLENBQUM7SUFDL0wsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQWdCLGFBQWEsQ0FBQyxHQUFXO0lBQ3JDLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDckIsQ0FBQztBQUZELHNDQUVDO0FBRUQsK0VBQStFO0FBQy9FLGtGQUFrRjtBQUNsRixrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLG1GQUFtRjtBQUNuRixtRkFBbUY7QUFDbkYseUNBQXlDO0FBQ3pDLElBQUksbUJBQTBELENBQUM7QUFDL0QsU0FBZ0Isc0JBQXNC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QWUsRUFBRSxFQUFFO1FBQzdCLElBQUksSUFBSSxHQUFxQixJQUFJLENBQUM7UUFDbEMsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsSUFBSTtnQkFBRSxTQUFTO1lBQ3BCLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQVZELGtFQVVDO0FBRU0sS0FBSyxVQUFVLGdCQUFnQixDQUFDLE9BQWU7SUFDbEQsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFBLHdDQUFvQixFQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU87SUFDcEIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxnQkFBZ0IsRUFBRSxDQUFBLENBQUM7SUFDOUMsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPO0lBQ3BCLE9BQU8sTUFBaUMsQ0FBQztBQUM3QyxDQUFDO0FBTkQsNENBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJwcm9jZXNzLmVudi5OT0RFX0VOViA9IFwicHJvZHVjdGlvblwiO1xuXG5pbXBvcnQgcHJlYWN0IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IGZpbmRHcmFudGVkUG9pbnRlckhhbmRsZSwgZ2V0RmlsZVN5c3RlbVBvaW50ZXIsIHN0b3JlRmlsZVN5c3RlbVBvaW50ZXIgfSBmcm9tIFwiLi9maWxlU3lzdGVtUG9pbnRlclwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCIuLi9yZW5kZXItdXRpbHMvb2JzZXJ2ZXJcIjtcbmltcG9ydCB7IGNhY2hlLCBsYXp5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgY3NzLCBpc05vZGUgfSBmcm9tIFwidHlwZXNhZmVjc3NcIjtcbmltcG9ydCB7IElTdG9yYWdlUmF3IH0gZnJvbSBcIi4vSVN0b3JhZ2VcIjtcbmltcG9ydCB7IHJ1bkluU2VyaWFsIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYmF0Y2hpbmdcIjtcbmltcG9ydCB7IGdldEZpbGVTdG9yYWdlSW5kZXhEQiB9IGZyb20gXCIuL0luZGV4ZWREQkZpbGVGb2xkZXJBUElcIjtcbmltcG9ydCB7IGdldFJlbW90ZURpcmVjdG9yeUhhbmRsZSwgdGVzdFJlbW90ZUNvbm5lY3Rpb24sIFJlbW90ZU9wdGlvbnMgfSBmcm9tIFwiLi9yZW1vdGVGaWxlU3RvcmFnZVwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBzaG93U2F2ZUZpbGVQaWNrZXIoY29uZmlnPzoge1xuICAgICAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nOyBhY2NlcHQ6IHsgW21pbWVUeXBlOiBzdHJpbmddOiBzdHJpbmdbXSB9XG4gICAgICAgICAgICB9W107XG4gICAgICAgIH0pOiBQcm9taXNlPEZpbGVTeXN0ZW1GaWxlSGFuZGxlPjtcbiAgICAgICAgc2hvd0RpcmVjdG9yeVBpY2tlcigpOiBQcm9taXNlPEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU+O1xuICAgICAgICBzaG93T3BlbkZpbGVQaWNrZXIoY29uZmlnPzoge1xuICAgICAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nOyBhY2NlcHQ6IHsgW21pbWVUeXBlOiBzdHJpbmddOiBzdHJpbmdbXSB9XG4gICAgICAgICAgICB9W107XG4gICAgICAgIH0pOiBQcm9taXNlPEZpbGVTeXN0ZW1GaWxlSGFuZGxlW10+O1xuICAgIH1cbiAgICBpbnRlcmZhY2UgRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSB7XG4gICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uKGNvbmZpZz86IHsgbW9kZTogXCJyZWFkXCIgfCBcInJlYWR3cml0ZVwiIH0pOiBQcm9taXNlPFBlcm1pc3Npb25TdGF0ZT47XG4gICAgfVxufVxuXG5cbi8vIE5PVEU6IEluZGV4ZWREQiBpcyByZXF1aXJlZCBmb3IgaU9TLCBhdCBsZWFzdC4gV2UgTUlHSFQgd2FudCB0byBtYWtlXG4vLyAgdGhpcyBhIHVzZXIgc3VwcG9ydGVkIHRvZ2dsZSB0b28sIHNvIHRoZXkgY2FuIGNob29zZSBkdXJpbmcgcnVudGltZSBpZiB0aGV5IHdhbnQgaXQuXG4vLyBETyBOT1QgZW5hYmxlIHRoaXMgaXMgaXNOb2RlXG5jb25zdCBVU0VfSU5ERVhFRF9EQiA9IGZhbHNlO1xuXG4vLyBIb3cgb2Z0ZW4gYSB3b3JrZXIgcmVjaGVja3MgdGhlIHBvaW50ZXIgSW5kZXhlZERCIGZvciBhIGdyYW50ZWQgaGFuZGxlIHdoZW4gbm9uZSBpcyBhdmFpbGFibGUgeWV0LlxuY29uc3QgV09SS0VSX1BPTExfSU5URVJWQUxfTVMgPSA2MCAqIDEwMDA7XG5cbi8vIFRoZXNlIG1pcnJvciB0aGUgc3Vic2V0IG9mIHRoZSBuYXRpdmUgRmlsZVN5c3RlbUZpbGVIYW5kbGUgLyBGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlIEFQSSB3ZSB1c2UsIHNvIHRoZSBuYXRpdmUgYnJvd3NlciBoYW5kbGVzLCB0aGUgTm9kZSBoYW5kbGVzLCBhbmQgdGhlIHJlbW90ZSBoYW5kbGVzIGFyZSBhbGwgaW50ZXJjaGFuZ2VhYmxlIOKAlCBhbmQgY29kZSB3cml0dGVuIGFnYWluc3QgdGhlIG5hdGl2ZSBoYW5kbGUgKGUuZy4gYSByZWN1cnNpdmUgd2FsayBvdmVyIGBoYW5kbGUuZW50cmllcygpYCkgd29ya3Mgb24gYW55IG9mIHRoZW0uIGtpbmQvbmFtZSBhbmQgZW50cmllcygpIGFyZSBwYXJ0IG9mIHRoYXQgY29udHJhY3QuXG5leHBvcnQgdHlwZSBGaWxlV3JhcHBlciA9IHtcbiAgICByZWFkb25seSBraW5kOiBcImZpbGVcIjtcbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gICAgZ2V0RmlsZSgpOiBQcm9taXNlPHtcbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgICAgICBsYXN0TW9kaWZpZWQ6IG51bWJlcjtcbiAgICAgICAgYXJyYXlCdWZmZXIoKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj47XG4gICAgICAgIC8vIE1hdGNoZXMgQmxvYi5zbGljZSAod2hpY2ggdGhlIG5hdGl2ZSBGaWxlIG9iamVjdCBwcm92aWRlcyksIHNvIHRoZSBicm93c2VyXG4gICAgICAgIC8vICBpbXBsZW1lbnRhdGlvbiB3b3JrcyB2YW5pbGxhLiBFbmQgaXMgZXhjbHVzaXZlLCBib3RoIGNsYW1wZWQgdG8gdGhlIGZpbGUgc2l6ZS5cbiAgICAgICAgc2xpY2Uoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiB7IGFycmF5QnVmZmVyKCk6IFByb21pc2U8QXJyYXlCdWZmZXI+IH07XG4gICAgfT47XG4gICAgY3JlYXRlV3JpdGFibGUoY29uZmlnPzogeyBrZWVwRXhpc3RpbmdEYXRhPzogYm9vbGVhbiB9KTogUHJvbWlzZTx7XG4gICAgICAgIHNlZWsob2Zmc2V0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICB3cml0ZSh2YWx1ZTogQnVmZmVyKTogUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgICB9PjtcbiAgICAvLyBSZXR1cm5zIGEgVVJMIGZvciB0aGUgZmlsZSdzIGJ5dGVzLCB1c2FibGUgaW4gPHZpZGVvPi88aW1nPi9mZXRjaC4gT3B0aW9uYWwg4oCUIHRoZSBuYXRpdmUgYnJvd3NlciBGaWxlU3lzdGVtRmlsZUhhbmRsZSBoYXMgbm8gc3VjaCBtZXRob2QsIHNvIHByZWZlciB0aGUgZ2V0RmlsZVVSTCgpIGhlbHBlciwgd2hpY2ggZmFsbHMgYmFjayB0byBhIGJsb2I6IFVSTCB2aWEgY3JlYXRlT2JqZWN0VVJMIGZvciBuYXRpdmUgaGFuZGxlcy4gQWx3YXlzIHJlbGVhc2UgaXQgd2l0aCBkaXNwb3NlRmlsZVVSTCB3aGVuIGRvbmUuXG4gICAgZ2V0VVJMPygpOiBQcm9taXNlPHN0cmluZz47XG59O1xuZXhwb3J0IHR5cGUgRGlyZWN0b3J5V3JhcHBlciA9IHtcbiAgICByZWFkb25seSBraW5kOiBcImRpcmVjdG9yeVwiO1xuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICAvLyBGdWxsIHBhdGggZnJvbSB0aGUgc3RvcmFnZSByb290LCBmb3IgZGlhZ25vc3RpY3MvbG9nZ2luZyAodGhlIG5hdGl2ZSBoYW5kbGUgZG9lc24ndCBleHBvc2UgcGF0aHMsIHNvIGl0J3Mgb3B0aW9uYWwpLiBlLmcuIFwiYnVsa0RhdGFiYXNlczIvbXlDb2xsZWN0aW9uXCIuXG4gICAgcmVhZG9ubHkgZnVsbFBhdGg/OiBzdHJpbmc7XG4gICAgLy8gVHJ1ZSB3aGVuIHRoaXMgc3RvcmFnZSBpcyBzZXJ2ZWQgb3ZlciB0aGUgbmV0d29yayAoYSByZW1vdGUgc2VydmVyKSByYXRoZXIgdGhhbiBhIGxvY2FsIGRpc2ssIHNvIGNhbGxlcnMgY2FuIGFkYXB0IGZvciB0aGUgaGlnaGVyIGxhdGVuY3kvY29zdCAobG9jYWwvbmF0aXZlIGhhbmRsZXMgbGVhdmUgaXQgdW5kZWZpbmVkID0gZmFsc2UpLlxuICAgIHJlYWRvbmx5IGlzUmVtb3RlPzogYm9vbGVhbjtcbiAgICByZW1vdmVFbnRyeShrZXk6IHN0cmluZywgb3B0aW9ucz86IHsgcmVjdXJzaXZlPzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPjtcbiAgICBnZXRGaWxlSGFuZGxlKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBjcmVhdGU/OiBib29sZWFuIH0pOiBQcm9taXNlPEZpbGVXcmFwcGVyPjtcbiAgICBnZXREaXJlY3RvcnlIYW5kbGUoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNyZWF0ZT86IGJvb2xlYW4gfSk6IFByb21pc2U8RGlyZWN0b3J5V3JhcHBlcj47XG4gICAgLy8gRWFjaCBlbnRyeSBJUyBhIGhhbmRsZSAoZmlsZSBvciBkaXJlY3RvcnkpLCBzbyBhIHJlY3Vyc2l2ZSB3YWxrIGtlZXBzIHdvcmtpbmcgYXQgZXZlcnkgbGV2ZWwuXG4gICAgZW50cmllcygpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgRmlsZVdyYXBwZXIgfCBEaXJlY3RvcnlXcmFwcGVyXT47XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgRmlsZVdyYXBwZXIgfCBEaXJlY3RvcnlXcmFwcGVyXT47XG59O1xuXG5sZXQgZGlzcGxheURhdGEgPSBvYnNlcnZhYmxlKHtcbiAgICB1aTogdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB8IHByZWFjdC5Db21wb25lbnRDaGlsZHJlbixcbn0sIHVuZGVmaW5lZCwgeyBkZWVwOiBmYWxzZSB9KTtcblxubGV0IGZpbGVBUElLZXkgPSBcIlwiO1xuZnVuY3Rpb24gZ2V0RmlsZUFQSUtleSgpIHtcbiAgICBpZiAoIWZpbGVBUElLZXkpIHRocm93IG5ldyBFcnJvcihcIk11c3QgY2FsbCBzZXRGaWxlQVBJS2V5IGJlZm9yZSB1c2luZyBmaWxlIHN5c3RlbS4gSnVzdCBwYXNzIGFueSBrZXkuIFRoaXMgcHJldmVudHMgcmV1c2luZyB0aGUgZmlsZSBzeXN0ZW0gYXBpIHRoYXQgb3RoZXIgZGV2ZWxvcG1lbnQgYXBwcyBtaWdodCBiZSB1c2luZy5cIik7XG4gICAgcmV0dXJuIGZpbGVBUElLZXk7XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsZUFQSUtleShrZXk6IHN0cmluZykge1xuICAgIGZpbGVBUElLZXkgPSBrZXk7XG59XG5cbi8vIEEgZGlyZWN0b3J5IGhhbmRsZSB0byBzZXJ2ZSBhcyB0aGUgc3RvcmFnZSByb290IGluc3RlYWQgb2YgcmVzb2x2aW5nIG9uZSB2aWFcbi8vIHRoZSBwaWNrZXIgLyBzdG9yZWQtcG9pbnRlciAvIHJlbW90ZSBmbG93LiBTZXQgdGhpcyBpbiBhIGNvbnRleHQgdGhhdCBjYW4ndCBydW5cbi8vIHRoZSBpbnRlcmFjdGl2ZSByZXNvbHV0aW9uIOKAlCBtb3N0IGltcG9ydGFudGx5IGEgV2ViIFdvcmtlciwgd2hpY2ggaGFzIG5vIERPTSB0b1xuLy8gcHJvbXB0IHdpdGggYW5kIG5vIGxvY2FsU3RvcmFnZSBwb2ludGVyLiBUaGUgb3duaW5nIHdpbmRvdyByZXNvbHZlcyB0aGUgaGFuZGxlXG4vLyAod2l0aCBpdHMgcGVybWlzc2lvbiBncmFudCkgYW5kIHBvc3RNZXNzYWdlcyBpdCBpbjsgdGhlIHdvcmtlciBjYWxscyB0aGlzIGJlZm9yZVxuLy8gdG91Y2hpbmcgYW55IHN0b3JhZ2UuIFdoZW4gc2V0LCBnZXREaXJlY3RvcnlIYW5kbGUgcmV0dXJucyBpdCBkaXJlY3RseSBhbmQgc2tpcHNcbi8vIGV2ZXJ5IERPTSAvIGxvY2FsU3RvcmFnZSBicmFuY2ggYmVsb3cuXG5sZXQgc3RvcmFnZVJvb3RPdmVycmlkZTogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBzZXRTdG9yYWdlUm9vdE92ZXJyaWRlKGhhbmRsZTogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHN0b3JhZ2VSb290T3ZlcnJpZGUgPSBoYW5kbGU7XG59XG5cbi8vIC0tLS0gcmVtb3RlIChzZXJ2ZXIpIHN0b3JhZ2UgY29uZmlnIC0tLS1cbi8vIEluc3RlYWQgb2YgYSBsb2NhbCBmb2xkZXIsIHRoZSB1c2VyIGNhbiBwb2ludCBhdCBhIHJlbW90ZUZpbGVTZXJ2ZXIuanMgaW5zdGFuY2UgKFVSTCArIHBhc3N3b3JkKS4gV2hlbiBjb25maWd1cmVkLCBnZXRGaWxlU3RvcmFnZU5lc3RlZDIgc2VydmVzIGV2ZXJ5dGhpbmcgZnJvbSB0aGF0IHNlcnZlci4gUGVyc2lzdGVkIGluIGxvY2FsU3RvcmFnZS5cbnR5cGUgUmVtb3RlQ29uZmlnID0geyB1cmw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuZnVuY3Rpb24gcmVtb3RlQ29uZmlnS2V5KCkgeyByZXR1cm4gZ2V0RmlsZUFQSUtleSgpICsgXCI6cmVtb3RlXCI7IH1cbmZ1bmN0aW9uIGxvYWRSZW1vdGVDb25maWcoKTogUmVtb3RlQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0ocmVtb3RlQ29uZmlnS2V5KCkpO1xuICAgICAgICBpZiAoIXMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGMgPSBKU09OLnBhcnNlKHMpO1xuICAgICAgICBpZiAoYyAmJiB0eXBlb2YgYy51cmwgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGMucGFzc3dvcmQgPT09IFwic3RyaW5nXCIpIHJldHVybiBjO1xuICAgIH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBzYXZlUmVtb3RlQ29uZmlnKGM6IFJlbW90ZUNvbmZpZykgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShyZW1vdGVDb25maWdLZXkoKSwgSlNPTi5zdHJpbmdpZnkoYykpOyB9XG5cbi8vIFRoZSBzZXJ2ZXIgaXMgYWx3YXlzIEhUVFBTIG9uIHRoZSBmaWxlaG9zdGVyJ3MgZGVmYXVsdCBwb3J0LCBzbyB0aGUgdXNlciBvbmx5IG5lZWRzIHRvIHR5cGUgdGhlIGhvc3QgKGUuZy4gXCI2NS4xMDkuOTMuMTEzXCIpLiBXZSBzdHJpcCBhbnkgc2NoZW1lL3BhdGggdGhleSBpbmNsdWRlIGFuZCBkZWZhdWx0IHRoZSBwb3J0IGlmIG9taXR0ZWQuXG5jb25zdCBERUZBVUxUX1JFTU9URV9QT1JUID0gODc4NzsgLy8gbWF0Y2hlcyByZW1vdGVGaWxlU2VydmVyLmpzJ3MgZGVmYXVsdFxuZnVuY3Rpb24gbm9ybWFsaXplU2VydmVyVXJsKHJhdzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcyA9IHJhdy50cmltKCkucmVwbGFjZSgvXlxcdys6XFwvXFwvLywgXCJcIikucmVwbGFjZSgvXFwvLiokLywgXCJcIik7XG4gICAgaWYgKCFzKSByZXR1cm4gXCJcIjtcbiAgICBpZiAoIS86XFxkKyQvLnRlc3QocykpIHMgKz0gXCI6XCIgKyBERUZBVUxUX1JFTU9URV9QT1JUO1xuICAgIHJldHVybiBcImh0dHBzOi8vXCIgKyBzO1xufVxuXG4vLyBPbmUgc2hhcmVkIHJlbW90ZSBEaXJlY3RvcnlXcmFwcGVyIChhbmQgdGhlcmVmb3JlIG9uZSBzaGFyZWQgcmFuZ2UgY2FjaGUpIHBlciByZW1vdGUgY29uZmlnLlxubGV0IHJlbW90ZUhhbmRsZTogeyBrZXk6IHN0cmluZzsgaGFuZGxlOiBEaXJlY3RvcnlXcmFwcGVyIH0gfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBnZXRSZW1vdGVIYW5kbGUocmVtb3RlOiBSZW1vdGVDb25maWcpOiBEaXJlY3RvcnlXcmFwcGVyIHtcbiAgICBjb25zdCBrZXkgPSByZW1vdGUudXJsICsgXCJcXDBcIiArIHJlbW90ZS5wYXNzd29yZDtcbiAgICBpZiAoIXJlbW90ZUhhbmRsZSB8fCByZW1vdGVIYW5kbGUua2V5ICE9PSBrZXkpIHtcbiAgICAgICAgcmVtb3RlSGFuZGxlID0geyBrZXksIGhhbmRsZTogZ2V0UmVtb3RlRGlyZWN0b3J5SGFuZGxlKHJlbW90ZS51cmwsIHJlbW90ZS5wYXNzd29yZCkgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlbW90ZUhhbmRsZS5oYW5kbGU7XG59XG5cbkBvYnNlcnZlclxuY2xhc3MgRGlyZWN0b3J5UHJvbXB0ZXIgZXh0ZW5kcyBwcmVhY3QuQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmICghZGlzcGxheURhdGEudWkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgICAgY3NzLnBvc2l0aW9uKFwiZml4ZWRcIikucG9zKDAsIDApLnNpemUoXCIxMDB2d1wiLCBcIjEwMHZoXCIpXG4gICAgICAgICAgICAgICAgICAgIC56SW5kZXgoMjE0NzQ4MzY0NylcbiAgICAgICAgICAgICAgICAgICAgLmJhY2tncm91bmQoXCJ3aGl0ZVwiKVxuICAgICAgICAgICAgICAgICAgICAuY2VudGVyXG4gICAgICAgICAgICAgICAgICAgIC5mb250U2l6ZSg0MClcbiAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXlEYXRhLnVpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vLyBcIkNvbm5lY3QgdG8gYSBzZXJ2ZXJcIiBvcHRpb24gZm9yIHRoZSBkaXJlY3RvcnkgcHJvbXB0OiBjb2xsYXBzZXMgdG8gYSBidXR0b24sIGV4cGFuZHMgdG8gYWRkcmVzcyArIHBhc3N3b3JkIGZpZWxkcy4gT24gY29ubmVjdCBpdCBBQ1RVQUxMWSBjb25uZWN0cyAodGVzdFJlbW90ZUNvbm5lY3Rpb24pOyBvbmx5IG9uIHN1Y2Nlc3MgZG9lcyBpdCBwZXJzaXN0IHRoZSBjb25maWcgYW5kIGNhbGwgb25Db25uZWN0ZWQsIHNvIHRoZSBjYWxsZXIgKGdldERpcmVjdG9yeUhhbmRsZSkgcmVzb2x2ZXMgd2l0aCBhIHdvcmtpbmcgcmVtb3RlIGhhbmRsZS4gRmFpbHVyZXMgYXJlIHNob3duIHRvIHRoZSB1c2VyIChhbmQgbG9nZ2VkLCB3aXRob3V0IHRoZSBwYXNzd29yZCksIG5ldmVyIHN3YWxsb3dlZC4gYGluaXRpYWxgIHByZS1maWxscyArIGV4cGFuZHMgdGhlIGZvcm0gKHVzZWQgdG8gcmV0cnkgYSByZW1lbWJlcmVkIHNlcnZlciB0aGF0IHN0b3BwZWQgd29ya2luZykuXG5Ab2JzZXJ2ZXJcbmNsYXNzIFNlcnZlckNvbm5lY3RGb3JtIGV4dGVuZHMgcHJlYWN0LkNvbXBvbmVudDx7IG9uQ29ubmVjdGVkOiAoY29uZmlnOiBSZW1vdGVDb25maWcpID0+IHZvaWQ7IGluaXRpYWw/OiBSZW1vdGVDb25maWcgfT4ge1xuICAgIHByaXZhdGUgb2JzID0gb2JzZXJ2YWJsZSh7XG4gICAgICAgIGV4cGFuZGVkOiAhIXRoaXMucHJvcHMuaW5pdGlhbCxcbiAgICAgICAgdXJsOiB0aGlzLnByb3BzLmluaXRpYWw/LnVybCB8fCBcIlwiLFxuICAgICAgICBwYXNzd29yZDogdGhpcy5wcm9wcy5pbml0aWFsPy5wYXNzd29yZCB8fCBcIlwiLFxuICAgICAgICBlcnJvcjogXCJcIiwgY29ubmVjdGluZzogZmFsc2UsIG5lZWRzQ2VydDogZmFsc2UsIHNob3dQYXNzd29yZDogZmFsc2UsXG4gICAgfSk7XG4gICAgcHJpdmF0ZSBjbGVhblVybCgpIHsgcmV0dXJuIG5vcm1hbGl6ZVNlcnZlclVybCh0aGlzLm9icy51cmwpOyB9XG4gICAgcHJpdmF0ZSBjb25uZWN0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzID0gdGhpcy5vYnM7XG4gICAgICAgIHMuZXJyb3IgPSBcIlwiO1xuICAgICAgICBzLm5lZWRzQ2VydCA9IGZhbHNlO1xuICAgICAgICBzLmNvbm5lY3RpbmcgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5jbGVhblVybCgpO1xuICAgICAgICAgICAgaWYgKCF1cmwpIHsgcy5lcnJvciA9IFwiRW50ZXIgYSBzZXJ2ZXIgYWRkcmVzcy5cIjsgcmV0dXJuOyB9XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZXN0UmVtb3RlQ29ubmVjdGlvbih1cmwsIHMucGFzc3dvcmQudHJpbSgpKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcIm9rXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWc6IFJlbW90ZUNvbmZpZyA9IHsgdXJsLCBwYXNzd29yZDogcy5wYXNzd29yZC50cmltKCkgfTtcbiAgICAgICAgICAgICAgICBzYXZlUmVtb3RlQ29uZmlnKGNvbmZpZyk7ICAgICAgICAgICAgIC8vIHJlbWVtYmVyIGZvciBuZXh0IHNlc3Npb25cbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ29ubmVjdGVkKGNvbmZpZyk7ICAgICAgIC8vIGhhbmQgdGhlIHZlcmlmaWVkIHNlcnZlciBiYWNrIHRvIGdldERpcmVjdG9yeUhhbmRsZVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInVuYXV0aG9yaXplZFwiKSB7XG4gICAgICAgICAgICAgICAgcy5lcnJvciA9IFwiVGhlIHNlcnZlciByZWplY3RlZCB0aGF0IHBhc3N3b3JkLlwiO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJSZW1vdGUgY29ubmVjdDogdW5hdXRob3JpemVkIGZvclwiLCB1cmwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBHb3Qgbm90aGluZyBiYWNrIOKAlCB1c3VhbGx5IHRoZSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBpc24ndCB0cnVzdGVkIHlldCwgYnV0IHNob3cgdGhlIGFjdHVhbCBlcnJvciB0b28gc28gYSB3cm9uZyBhZGRyZXNzIC8gZG93biBzZXJ2ZXIgLyBDT1JTIGlzc3VlIGlzIGRpYWdub3NhYmxlLlxuICAgICAgICAgICAgICAgIHMubmVlZHNDZXJ0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzLmVycm9yID0gXCJDb3VsZG4ndCByZWFjaCB0aGUgc2VydmVyOiBcIiArIHJlc3VsdC5lcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUmVtb3RlIGNvbm5lY3Q6IHVucmVhY2hhYmxlXCIsIHVybCwgXCItXCIsIHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHMuZXJyb3IgPSBcIkNvbm5lY3Rpb24gZXJyb3I6IFwiICsgKChlIGFzIEVycm9yKS5tZXNzYWdlIHx8IFN0cmluZyhlKSk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUmVtb3RlIGNvbm5lY3QgdGhyZXc6XCIsIGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgcy5jb25uZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgcyA9IHRoaXMub2JzO1xuICAgICAgICBjb25zdCBpbnB1dENzcyA9IGNzcy5mb250U2l6ZSgyOCkucGFkMigyNCwgMTQpLndpZHRoKDU2MCkubWF4V2lkdGgoXCI4MHZ3XCIpO1xuICAgICAgICBjb25zdCBidG5Dc3MgPSBjc3MuZm9udFNpemUoMzIpLnBhZDIoNjAsIDMwKTtcbiAgICAgICAgaWYgKCFzLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gPGJ1dHRvbiBjbGFzc05hbWU9e2J0bkNzc30gb25DbGljaz17KCkgPT4gcy5leHBhbmRlZCA9IHRydWV9PkNvbm5lY3QgdG8gYSBzZXJ2ZXI8L2J1dHRvbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MudmJveCgxNikuY2VudGVyfT5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPXtpbnB1dENzc30gcGxhY2Vob2xkZXI9XCJzZXJ2ZXIgYWRkcmVzcyAoZS5nLiA2NS4xMDkuOTMuMTEzLCBvciBob3N0OnBvcnQpXCIgdmFsdWU9e3MudXJsfVxuICAgICAgICAgICAgICAgICAgICBvbklucHV0PXtlID0+IHMudXJsID0gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlfSAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MuaGJveCgxMCkuY2VudGVyfT5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT17aW5wdXRDc3N9IHR5cGU9e3Muc2hvd1Bhc3N3b3JkID8gXCJ0ZXh0XCIgOiBcInBhc3N3b3JkXCJ9IHBsYWNlaG9sZGVyPVwicGFzc3dvcmQgKHNpeCB3b3JkcylcIiB2YWx1ZT17cy5wYXNzd29yZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uSW5wdXQ9e2UgPT4gcy5wYXNzd29yZCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2Nzcy5mb250U2l6ZSgyMikucGFkMigyNCwgMTIpfSBvbkNsaWNrPXsoKSA9PiBzLnNob3dQYXNzd29yZCA9ICFzLnNob3dQYXNzd29yZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cy5zaG93UGFzc3dvcmQgPyBcIkhpZGVcIiA6IFwiU2hvd1wifVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7cy5lcnJvciA/IDxkaXYgY2xhc3NOYW1lPXtjc3MuZm9udFNpemUoMjIpLmNvbG9yKFwicmVkXCIpLm1heFdpZHRoKFwiODB2d1wiKX0+e3MuZXJyb3J9PC9kaXY+IDogbnVsbH1cbiAgICAgICAgICAgICAgICB7cy5uZWVkc0NlcnQgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MudmJveCgxMCkuY2VudGVyLmZvbnRTaXplKDIwKS5tYXhXaWR0aCg2MjApLm1heFdpZHRoKFwiODB2d1wiKS50ZXh0QWxpZ24oXCJjZW50ZXJcIikuY29sb3IoXCJoc2woMCwgMCUsIDI1JSlcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5UaGlzIHNlcnZlciB1c2VzIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUsIHNvIHlvdXIgYnJvd3NlciBoYXMgdG8gdHJ1c3QgaXQgb25jZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+MS4gT3BlbiB0aGUgc2VydmVyIGluIGEgbmV3IHRhYiAoYnV0dG9uIGJlbG93KS4gJm5ic3A7IDIuIEFjY2VwdCB0aGUgc2VjdXJpdHkgd2FybmluZyAoQWR2YW5jZWQg4oaSIFByb2NlZWQpLiAmbmJzcDsgMy4gQ29tZSBiYWNrIGFuZCBjbGljayBSZXRyeS48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtjc3MuZm9udFNpemUoMjYpLnBhZDIoNDAsIDIwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7IGNvbnN0IHUgPSB0aGlzLmNsZWFuVXJsKCk7IGlmICh1KSB3aW5kb3cub3Blbih1ICsgXCIvXCIsIFwiX2JsYW5rXCIpOyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIHNlcnZlciAmYW1wOyBhY2NlcHQgY2VydGlmaWNhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y3NzLmhib3goMTYpfT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2J0bkNzc30gZGlzYWJsZWQ9e3MuY29ubmVjdGluZ30gb25DbGljaz17dGhpcy5jb25uZWN0fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzLmNvbm5lY3RpbmcgPyBcIkNvbm5lY3RpbmfigKZcIiA6IHMubmVlZHNDZXJ0ID8gXCJSZXRyeVwiIDogXCJDb25uZWN0XCJ9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YnRuQ3NzfSBvbkNsaWNrPXsoKSA9PiB7IHMuZXhwYW5kZWQgPSBmYWxzZTsgcy5lcnJvciA9IFwiXCI7IHMubmVlZHNDZXJ0ID0gZmFsc2U7IH19PkJhY2s8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vZGVKU0ZpbGVIYW5kbGVXcmFwcGVyIGltcGxlbWVudHMgRmlsZVdyYXBwZXIge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIH1cbiAgICByZWFkb25seSBraW5kID0gXCJmaWxlXCIgYXMgY29uc3Q7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiBwYXRoLmJhc2VuYW1lKHRoaXMuZmlsZVBhdGgpOyB9XG5cbiAgICBhc3luYyBnZXRGaWxlKCkge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQodGhpcy5maWxlUGF0aCk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNpemU6IHN0YXRzLnNpemUsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IHN0YXRzLm10aW1lTXMsXG4gICAgICAgICAgICBhcnJheUJ1ZmZlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGZpbGVQYXRoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLmJ1ZmZlci5zbGljZShidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVPZmZzZXQgKyBidWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2xpY2U6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4gKHtcbiAgICAgICAgICAgICAgICBhcnJheUJ1ZmZlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkU3RhcnQgPSBNYXRoLm1pbihNYXRoLm1heChzdGFydCwgMCksIHN0YXRzLnNpemUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkRW5kID0gTWF0aC5taW4oTWF0aC5tYXgoZW5kLCBjbGFtcGVkU3RhcnQpLCBzdGF0cy5zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gY2xhbXBlZEVuZCAtIGNsYW1wZWRTdGFydDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZUhhbmRsZSA9IGF3YWl0IGZzLnByb21pc2VzLm9wZW4oZmlsZVBhdGgsIFwiclwiKTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhsZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmlsZUhhbmRsZS5yZWFkKGJ1ZmZlciwgMCwgbGVuZ3RoLCBjbGFtcGVkU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5idWZmZXIuc2xpY2UoYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlT2Zmc2V0ICsgYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmlsZUhhbmRsZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRVUkwoKSB7XG4gICAgICAgIHJldHVybiBcImZpbGU6Ly9cIiArIHBhdGgucmVzb2x2ZSh0aGlzLmZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVXcml0YWJsZShjb25maWc/OiB7IGtlZXBFeGlzdGluZ0RhdGE/OiBib29sZWFuIH0pIHtcbiAgICAgICAgbGV0IGZpbGVIYW5kbGU6IGZzLnByb21pc2VzLkZpbGVIYW5kbGU7XG4gICAgICAgIGNvbnN0IGZsYWdzID0gY29uZmlnPy5rZWVwRXhpc3RpbmdEYXRhID8gXCJyK1wiIDogXCJ3XCI7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHBhdGguZGlybmFtZSh0aGlzLmZpbGVQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAgICAgLy8gT3BlbiBvciBjcmVhdGUgdGhlIGZpbGVcbiAgICAgICAgaWYgKGNvbmZpZz8ua2VlcEV4aXN0aW5nRGF0YSAmJiBhd2FpdCBmcy5wcm9taXNlcy5hY2Nlc3ModGhpcy5maWxlUGF0aCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSkpIHtcbiAgICAgICAgICAgIGZpbGVIYW5kbGUgPSBhd2FpdCBmcy5wcm9taXNlcy5vcGVuKHRoaXMuZmlsZVBhdGgsIGZsYWdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGVIYW5kbGUgPSBhd2FpdCBmcy5wcm9taXNlcy5vcGVuKHRoaXMuZmlsZVBhdGgsIFwid1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IDA7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlZWs6IGFzeW5jIChvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gb2Zmc2V0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdyaXRlOiBhc3luYyAodmFsdWU6IEJ1ZmZlcikgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZpbGVIYW5kbGUud3JpdGUodmFsdWUsIDAsIHZhbHVlLmxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbG9zZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZpbGVIYW5kbGUuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyIGltcGxlbWVudHMgRGlyZWN0b3J5V3JhcHBlciB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb290UGF0aDogc3RyaW5nKSB7XG4gICAgfVxuICAgIHJlYWRvbmx5IGtpbmQgPSBcImRpcmVjdG9yeVwiIGFzIGNvbnN0O1xuICAgIGdldCBuYW1lKCkgeyByZXR1cm4gcGF0aC5iYXNlbmFtZSh0aGlzLnJvb3RQYXRoKTsgfVxuICAgIGdldCBmdWxsUGF0aCgpIHsgcmV0dXJuIHRoaXMucm9vdFBhdGg7IH1cbiAgICBlbnRyaWVzKCkgeyByZXR1cm4gdGhpc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsgfVxuXG4gICAgYXN5bmMgcmVtb3ZlRW50cnkoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IHJlY3Vyc2l2ZT86IGJvb2xlYW4gfSkge1xuICAgICAgICBjb25zdCBlbnRyeVBhdGggPSBwYXRoLmpvaW4odGhpcy5yb290UGF0aCwga2V5KTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0oZW50cnlQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy51bmxpbmsoZW50cnlQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldEZpbGVIYW5kbGUoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNyZWF0ZT86IGJvb2xlYW4gfSk6IFByb21pc2U8RmlsZVdyYXBwZXI+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5yb290UGF0aCwga2V5KTtcblxuICAgICAgICBjb25zdCBleGlzdHMgPSBhd2FpdCBmcy5wcm9taXNlcy5hY2Nlc3MoZmlsZVBhdGgpLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuXG4gICAgICAgIGlmICghZXhpc3RzICYmIG9wdGlvbnM/LmNyZWF0ZSkge1xuICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgZmlsZVxuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGVQYXRoLCBCdWZmZXIuYWxsb2MoMCkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgICAgIC8vIFRhZyBhcyBFTk9FTlQgc28gcmVhZFdpdGhSZXRyeSB0cmVhdHMgaXQgYXMgYSBnZW51aW5lbHktbWlzc2luZyBmaWxlIChyZXR1cm4gdW5kZWZpbmVkIG5vdykgcmF0aGVyIHRoYW4gYSB0cmFuc2llbnQgcmVhZCBmYWlsdXJlIHRvIHJldHJ5IDbDlyB3aXRoIGJhY2tvZmYg4oCUIG1pc3NpbmcgZmlsZXMgYXJlIG5vcm1hbCAoYSBjb25jdXJyZW50IG1lcmdlIGRlbGV0ZXMgYSBmaWxlIG1pZC1yZWFkKSwgYW5kIHJldHJ5aW5nIHRoZW0gaXMgY2F0YXN0cm9waGljYWxseSBzbG93LlxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKSBhcyBFcnJvciAmIHsgY29kZT86IHN0cmluZyB9O1xuICAgICAgICAgICAgZXJyLmNvZGUgPSBcIkVOT0VOVFwiO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlSlNGaWxlSGFuZGxlV3JhcHBlcihmaWxlUGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RGlyZWN0b3J5SGFuZGxlKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBjcmVhdGU/OiBib29sZWFuIH0pOiBQcm9taXNlPERpcmVjdG9yeVdyYXBwZXI+IHtcbiAgICAgICAgY29uc3QgZGlyUGF0aCA9IHBhdGguam9pbih0aGlzLnJvb3RQYXRoLCBrZXkpO1xuXG4gICAgICAgIGlmIChvcHRpb25zPy5jcmVhdGUpIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKGRpclBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gYXdhaXQgZnMucHJvbWlzZXMuYWNjZXNzKGRpclBhdGgpLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpcmVjdG9yeSBub3QgZm91bmQ6ICR7ZGlyUGF0aH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgTm9kZUpTRGlyZWN0b3J5SGFuZGxlV3JhcHBlcihkaXJQYXRoKTtcbiAgICB9XG5cbiAgICBhc3luYyAqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgRmlsZVdyYXBwZXIgfCBEaXJlY3RvcnlXcmFwcGVyXT4ge1xuICAgICAgICAvLyBFbnN1cmUgZGlyZWN0b3J5IGV4aXN0c1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2Rpcih0aGlzLnJvb3RQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgICAgICBjb25zdCBlbnRyaWVzID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcih0aGlzLnJvb3RQYXRoLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBwYXRoLmpvaW4odGhpcy5yb290UGF0aCwgZW50cnkubmFtZSk7XG4gICAgICAgICAgICBpZiAoZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBbZW50cnkubmFtZSwgbmV3IE5vZGVKU0ZpbGVIYW5kbGVXcmFwcGVyKGNoaWxkUGF0aCldO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgW2VudHJ5Lm5hbWUsIG5ldyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyKGNoaWxkUGF0aCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vIFdoZW4gc2V0LCBnZXREaXJlY3RvcnlIYW5kbGUgc2tpcHMgZXZlcnkgcHJvbXB0ICsgcmVtb3RlIGNoZWNrIGFuZCBzZXJ2ZXMgZnJvbSB0aGUgYnJvd3NlcidzIE9yaWdpbiBQcml2YXRlIEZpbGUgU3lzdGVtIChPUEZTKS4gT25lIG5hbWVkIHN1YmZvbGRlciBpcyBcImN1cnJlbnRcIiBwZXIgZmlsZUFQSUtleTsgcGlja1ByaXZhdGVGb2xkZXIgLyByZXNldFN0b3JhZ2VMb2NhdGlvbiBzd2l0Y2ggd2hpY2ggb25lLiBTZXQgdGhpcyBpbiBhcHAgc3RhcnR1cCBCRUZPUkUgdGhlIGZpcnN0IGdldERpcmVjdG9yeUhhbmRsZS5cbmxldCBvcGZzRW5hYmxlZCA9IGZhbHNlO1xuY29uc3QgT1BGU19GT0xERVJTX0RJUiA9IFwiZm9sZGVyc1wiO1xuY29uc3QgT1BGU19ERUZBVUxUX0ZPTERFUiA9IFwiZGVmYXVsdFwiO1xuZnVuY3Rpb24gb3Bmc0N1cnJlbnRLZXkoKSB7IHJldHVybiBnZXRGaWxlQVBJS2V5KCkgKyBcIjpvcGZzOmN1cnJlbnRcIjsgfVxuZnVuY3Rpb24gZ2V0Q3VycmVudE9wZnNGb2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0ob3Bmc0N1cnJlbnRLZXkoKSkgfHwgT1BGU19ERUZBVUxUX0ZPTERFUjtcbn1cbmZ1bmN0aW9uIHNldEN1cnJlbnRPcGZzRm9sZGVyKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG9wZnNDdXJyZW50S2V5KCksIG5hbWUpO1xufVxuXG4vLyBTd2l0Y2hlcyBnZXREaXJlY3RvcnlIYW5kbGUgdG8gdGhlIE9yaWdpbiBQcml2YXRlIEZpbGUgU3lzdGVtLiBObyBkaXJlY3RvcnkgcGlja2VyLCBubyBwZXJtaXNzaW9uIHByb21wdCwgbm8gcmVtb3RlIHNlcnZlciBjaGVjay4gUGVyc2lzdHMgbm90aGluZyDigJQgY2FsbCBvbiBldmVyeSBhcHAgc3RhcnQgYmVmb3JlIHJlYWRpbmcgc3RvcmFnZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcml2YXRlRmlsZVN5c3RlbSgpOiB2b2lkIHtcbiAgICBvcGZzRW5hYmxlZCA9IHRydWU7XG59XG5cbi8vIFdoZXRoZXIgdGhlIE9QRlMgYnJhbmNoIGlzIGluIGVmZmVjdCAoc28gb3RoZXIgY2FsbGVycyBjYW4gYWRhcHQg4oCUIGUuZy4gc2tpcCB0aGUgXCJmaW5kIGRhdGEgc3ViZGlyXCIgaGFjayBpbiBnZXRGaWxlU3RvcmFnZU5lc3RlZDIgc2luY2UgT1BGUyBpcyBhbHdheXMgYSBjbGVhbiByb290IHdlIG93biBlbmQtdG8tZW5kKS5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaXZhdGVGaWxlU3lzdGVtQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvcGZzRW5hYmxlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3Bmc0ZvbGRlcnNEaXIoKTogUHJvbWlzZTxGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3Iuc3RvcmFnZT8uZ2V0RGlyZWN0b3J5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByaXZhdGUgRmlsZSBTeXN0ZW0gQWNjZXNzIEFQSSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbiAgICB9XG4gICAgaWYgKGxvY2F0aW9uLnByb3RvY29sID09PSBcImZpbGU6XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUHJpdmF0ZSBGaWxlIFN5c3RlbSBBUEkgaXMgZGlzYWxsb3dlZCBpbiBmaWxlOi8vIGxvY2F0aW9ucy4gSG9zdCBvbiBhbiBhY3R1YWwgb3JpZ2luLlwiKTtcbiAgICB9XG4gICAgY29uc3Qgcm9vdCA9IGF3YWl0IG5hdmlnYXRvci5zdG9yYWdlLmdldERpcmVjdG9yeSgpO1xuICAgIGNvbnN0IGtleWVkID0gYXdhaXQgcm9vdC5nZXREaXJlY3RvcnlIYW5kbGUoZ2V0RmlsZUFQSUtleSgpLCB7IGNyZWF0ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gYXdhaXQga2V5ZWQuZ2V0RGlyZWN0b3J5SGFuZGxlKE9QRlNfRk9MREVSU19ESVIsIHsgY3JlYXRlOiB0cnVlIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50T3Bmc0hhbmRsZSgpOiBQcm9taXNlPERpcmVjdG9yeVdyYXBwZXI+IHtcbiAgICBjb25zdCBmb2xkZXJzID0gYXdhaXQgZ2V0T3Bmc0ZvbGRlcnNEaXIoKTtcbiAgICBjb25zdCBmb2xkZXIgPSBhd2FpdCBmb2xkZXJzLmdldERpcmVjdG9yeUhhbmRsZShnZXRDdXJyZW50T3Bmc0ZvbGRlcigpLCB7IGNyZWF0ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gZm9sZGVyIGFzIHVua25vd24gYXMgRGlyZWN0b3J5V3JhcHBlcjtcbn1cblxuLy8gQWxsIHByZXZpb3VzbHktdXNlZCBPUEZTIHN1YmZvbGRlcnMgdW5kZXIgdGhpcyBmaWxlQVBJS2V5LCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgKHRpbWVzdGFtcC1uYW1lZCBhdXRvLWdlbmVyYXRlZCBmb2xkZXJzIHRoZXJlZm9yZSBzb3J0IGNocm9ub2xvZ2ljYWxseSkuIFVzZSB0aGlzIHRvIHN1cmZhY2UgYSBsaXN0LCB0aGVuIGNhbGwgcGlja1ByaXZhdGVGb2xkZXIobmFtZSkgdG8gc3dpdGNoLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RQcml2YXRlRm9sZGVycygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3Iuc3RvcmFnZT8uZ2V0RGlyZWN0b3J5KSByZXR1cm4gW107XG4gICAgbGV0IGZvbGRlcnM6IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU7XG4gICAgdHJ5IHsgZm9sZGVycyA9IGF3YWl0IGdldE9wZnNGb2xkZXJzRGlyKCk7IH0gY2F0Y2ggeyByZXR1cm4gW107IH1cbiAgICBjb25zdCBuYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IFtuYW1lLCBoYW5kbGVdIG9mIChmb2xkZXJzIGFzIHVua25vd24gYXMgQXN5bmNJdGVyYWJsZTxbc3RyaW5nLCB7IGtpbmQ6IHN0cmluZyB9XT4pKSB7XG4gICAgICAgIGlmIChoYW5kbGUua2luZCA9PT0gXCJkaXJlY3RvcnlcIikgbmFtZXMucHVzaChuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWVzLnNvcnQoKTtcbn1cblxuLy8gU3dpdGNoIHRvIGEgc3BlY2lmaWMgT1BGUyBzdWJmb2xkZXIgYW5kIHJlbG9hZCBzbyBnZXREaXJlY3RvcnlIYW5kbGUgcmUtcmVzb2x2ZXMgdG8gaXQuIFRoZSBmb2xkZXIgaXMgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrUHJpdmF0ZUZvbGRlcihuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzZXRDdXJyZW50T3Bmc0ZvbGRlcihuYW1lKTtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG59XG5cbi8vIFJldHVybnMgdGhlIGRpcmVjdG9yeSBoYW5kbGUgdG8gdXNlIOKAlCBsb2NhbCAoTm9kZSAvIHBpY2tlZCBmb2xkZXIpIE9SIGEgcmVtb3RlIHNlcnZlciwgYm90aCBhcyB0aGUgc2FtZSBEaXJlY3RvcnlXcmFwcGVyLCBzbyBjYWxsZXJzIGRvbid0IGtub3cgb3IgY2FyZSB3aGljaCBpdCBpcy4gQSByZW1lbWJlcmVkIHNlcnZlciBpcyBWRVJJRklFRCAod2UgYWN0dWFsbHkgY29ubmVjdCkgYmVmb3JlIHVzZTsgaWYgaXQgbm8gbG9uZ2VyIHdvcmtzIHdlIHJlLXByb21wdCwganVzdCBsaWtlIGEgbG9jYWwgZm9sZGVyIHdob3NlIHBlcm1pc3Npb24gd2FzIGxvc3QuIEJsb2NrcyB1bnRpbCByZWFkeSAob3IgdGhlIHVzZXIgZGlzbWlzc2VzLCB3aGljaCByZWplY3RzKS5cbmV4cG9ydCBjb25zdCBnZXREaXJlY3RvcnlIYW5kbGUgPSBsYXp5KGFzeW5jIGZ1bmN0aW9uIGdldERpcmVjdG9yeUhhbmRsZSgpOiBQcm9taXNlPERpcmVjdG9yeVdyYXBwZXI+IHtcbiAgICAvLyBBbiBpbmplY3RlZCByb290IChlLmcuIGEgV2ViIFdvcmtlciBoYW5kZWQgdGhlIGhhbmRsZSBieSBpdHMgb3duaW5nIHdpbmRvdylcbiAgICAvLyBzaG9ydC1jaXJjdWl0cyB0aGUgd2hvbGUgaW50ZXJhY3RpdmUgcmVzb2x1dGlvbiDigJQgbm8gcGlja2VyLCBubyBET00sIG5vXG4gICAgLy8gbG9jYWxTdG9yYWdlLiBNdXN0IGNvbWUgZmlyc3Qgc28gYSB3b3JrZXIgbmV2ZXIgcmVhY2hlcyB0aGUgYnJhbmNoZXMgYmVsb3cuXG4gICAgaWYgKHN0b3JhZ2VSb290T3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2VSb290T3ZlcnJpZGUgYXMgdW5rbm93biBhcyBEaXJlY3RvcnlXcmFwcGVyO1xuICAgIH1cbiAgICAvLyBBIHdvcmtlciBjYW4ndCBzaG93IHRoZSBwaWNrZXIgKG5vIERPTSAvIG5vIHVzZXIgYWN0aXZhdGlvbikgYW5kIGNhbid0IHJlYWQgbG9jYWxTdG9yYWdlLCBidXQgaXQgQ0FOIG9wZW4gdGhlIHBvaW50ZXIgSW5kZXhlZERCIHRoZSBtYWluLXRocmVhZCBwaWNrZXIgcGVyc2lzdHMgdG8uIFBvbGwgaXQgZm9yIGEgaGFuZGxlIHdob3NlIHBlcm1pc3Npb24gaXMgYWxyZWFkeSBncmFudGVkOyB0aGUgb3duaW5nIHdpbmRvdyBtYXkgYWxzbyBwb3N0TWVzc2FnZSBhIGhhbmRsZSBpbiBtaWQtcG9sbCAoY2hlY2tlZCBlYWNoIGl0ZXJhdGlvbikuIFRoaXMgaGFzIHRvIGNvbWUgYmVmb3JlIHRoZSBpc05vZGUgYnJhbmNoOiB0eXBlc2FmZWNzcydzIGlzTm9kZSgpIHJldHVybnMgdHJ1ZSBpbiB3b3JrZXJzICh3aW5kb3cgaXMgdW5kZWZpbmVkKSwgc28gYSB3b3JrZXIgd291bGQgb3RoZXJ3aXNlIGZhbGwgaW50byB0aGUgTm9kZSBicmFuY2ggYW5kIHRyeSB0byB1c2UgZnMvcGF0aC5cbiAgICBpZiAoXCJXb3JrZXJHbG9iYWxTY29wZVwiIGluIGdsb2JhbFRoaXMpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzdG9yYWdlUm9vdE92ZXJyaWRlKSByZXR1cm4gc3RvcmFnZVJvb3RPdmVycmlkZSBhcyB1bmtub3duIGFzIERpcmVjdG9yeVdyYXBwZXI7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0gYXdhaXQgZmluZEdyYW50ZWRQb2ludGVySGFuZGxlKFwicmVhZHdyaXRlXCIpO1xuICAgICAgICAgICAgaWYgKGhhbmRsZSkgcmV0dXJuIGhhbmRsZSBhcyB1bmtub3duIGFzIERpcmVjdG9yeVdyYXBwZXI7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgV09SS0VSX1BPTExfSU5URVJWQUxfTVMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyKHBhdGgucmVzb2x2ZShcIi4vZGF0YS9cIikpO1xuICAgIH1cbiAgICBpZiAob3Bmc0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRPcGZzSGFuZGxlKCk7XG4gICAgfVxuXG4gICAgLy8gQSBzZXJ2ZXIgY29ubmVjdGVkIGluIGEgcHJldmlvdXMgc2Vzc2lvbjogb25seSByZXVzZSBpdCBpZiBpdCBzdGlsbCBhY3R1YWxseSB3b3Jrcy5cbiAgICBjb25zdCBzYXZlZFJlbW90ZSA9IGxvYWRSZW1vdGVDb25maWcoKTtcbiAgICBpZiAoc2F2ZWRSZW1vdGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGVzdFJlbW90ZUNvbm5lY3Rpb24oc2F2ZWRSZW1vdGUudXJsLCBzYXZlZFJlbW90ZS5wYXNzd29yZCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcIm9rXCIpIHJldHVybiBnZXRSZW1vdGVIYW5kbGUoc2F2ZWRSZW1vdGUpO1xuICAgICAgICBjb25zb2xlLndhcm4oYFNhdmVkIHJlbW90ZSBzZXJ2ZXIgZGlkbid0IGNvbm5lY3QgKCR7cmVzdWx0LnN0YXR1c30pJHtyZXN1bHQuc3RhdHVzID09PSBcInVucmVhY2hhYmxlXCIgPyBcIjogXCIgKyByZXN1bHQuZXJyb3IgOiBcIlwifSDigJQgcmUtcHJvbXB0aW5nLmApO1xuICAgIH1cblxuICAgIGxldCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpO1xuICAgIHByZWFjdC5yZW5kZXIoPERpcmVjdG9yeVByb21wdGVyIC8+LCByb290KTtcbiAgICB0cnkge1xuICAgICAgICBsZXQgcmVzb2x2ZUhhbmRsZSE6IChoOiBEaXJlY3RvcnlXcmFwcGVyKSA9PiB2b2lkO1xuICAgICAgICBsZXQgcmVqZWN0SGFuZGxlITogKGU6IEVycm9yKSA9PiB2b2lkO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8RGlyZWN0b3J5V3JhcHBlcj4oKHJlcywgcmVqKSA9PiB7IHJlc29sdmVIYW5kbGUgPSByZXM7IHJlamVjdEhhbmRsZSA9IHJlajsgfSk7XG5cbiAgICAgICAgY29uc3QgcGlja0xvY2FsID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGUgPSBhd2FpdCB3aW5kb3cuc2hvd0RpcmVjdG9yeVBpY2tlcigpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGhhbmRsZS5yZXF1ZXN0UGVybWlzc2lvbih7IG1vZGU6IFwicmVhZHdyaXRlXCIgfSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVkSWQgPSBhd2FpdCBzdG9yZUZpbGVTeXN0ZW1Qb2ludGVyKHsgbW9kZTogXCJyZWFkd3JpdGVcIiwgaGFuZGxlIH0pO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGdldEZpbGVBUElLZXkoKSwgc3RvcmVkSWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVIYW5kbGUoaGFuZGxlIGFzIGFueSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkRpcmVjdG9yeSBwaWNrIGZhaWxlZC9jYW5jZWxsZWQ6XCIsIGUpOyAvLyBzdGF5IG9uIHRoZSBwcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25Db25uZWN0ZWQgPSAoY29uZmlnOiBSZW1vdGVDb25maWcpID0+IHsgc2F2ZVJlbW90ZUNvbmZpZyhjb25maWcpOyByZXNvbHZlSGFuZGxlKGdldFJlbW90ZUhhbmRsZShjb25maWcpKTsgfTtcbiAgICAgICAgLy8gVGhlIHRocmVlIG9wdGlvbnMsIHJlbmRlcmVkIGZyZXNoIGVhY2ggdGltZS4gSWYgYSBzYXZlZCBzZXJ2ZXIganVzdCBmYWlsZWQsIHByZS1maWxsICsgZXhwYW5kIHRoZSBjb25uZWN0IGZvcm0gc28gdGhlIHVzZXIgY2FuIHJldHJ5IG9yIGZpeCBpdC5cbiAgICAgICAgY29uc3QgcmVuZGVyT3B0aW9ucyA9ICgpID0+IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2Nzcy5mb250U2l6ZSg0MCkucGFkMig4MCwgNDApfSBvbkNsaWNrPXtwaWNrTG9jYWx9PlBpY2sgRGF0YSBEaXJlY3Rvcnk8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8U2VydmVyQ29ubmVjdEZvcm0gb25Db25uZWN0ZWQ9e29uQ29ubmVjdGVkfSBpbml0aWFsPXtzYXZlZFJlbW90ZX0gLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17Y3NzLmZvbnRTaXplKDQwKS5wYWQyKDgwLCA0MCl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlamVjdEhhbmRsZShuZXcgRXJyb3IoXCJVc2VyIGRpc21pc3NlZCBmaWxlIHN5c3RlbSBhY2Nlc3MgcHJvbXB0XCIpKX0+RGlzbWlzczwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQSBwcmV2aW91c2x5LXBpY2tlZCBsb2NhbCBmb2xkZXI6IHRyeSB0byByZXN0b3JlIGl0IChtYXkgbmVlZCBhIGNsaWNrKS4gU2tpcHBlZCB3aGVuIGEgc2F2ZWQgc2VydmVyIGZhaWxlZCDigJQgdGhhdCB1c2VyIHdhbnRzIHRoZSBzZXJ2ZXIsIHNvIGdvIHN0cmFpZ2h0IHRvIHRoZSAocHJlLWZpbGxlZCkgcHJvbXB0LlxuICAgICAgICBjb25zdCBzdG9yZWRJZCA9ICFzYXZlZFJlbW90ZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShnZXRGaWxlQVBJS2V5KCkpO1xuICAgICAgICBpZiAoc3RvcmVkSWQpIHtcbiAgICAgICAgICAgIGxldCBkb25lTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IGlmICghZG9uZUxvYWQpIGRpc3BsYXlEYXRhLnVpID0gXCJDbGljayBhbnl3aGVyZSB0byBhbGxvdyBmaWxlIHN5c3RlbSBhY2Nlc3NcIjsgfSwgNTAwKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gYXdhaXQgdHJ5VG9Mb2FkUG9pbnRlcihzdG9yZWRJZCk7XG4gICAgICAgICAgICAgICAgZG9uZUxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGU7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgZG9uZUxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuICAgICAgICAgICAgICAgIGlmIChtc2cuaW5jbHVkZXMoXCJ1c2VyIGFjdGl2YXRpb25cIikgfHwgbXNnLmluY2x1ZGVzKFwiVXNlciBhY3RpdmF0aW9uXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlEYXRhLnVpID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Nzcy52Ym94KDIwKS5jZW50ZXJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtjc3MuZm9udFNpemUoNDApLnBhZDIoODAsIDQwKX0gb25DbGljaz17YXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RGF0YS51aSA9IFwiTG9hZGluZy4uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaCA9IGF3YWl0IHRyeVRvTG9hZFBvaW50ZXIoc3RvcmVkSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgpIHsgcmVzb2x2ZUhhbmRsZShoKTsgcmV0dXJuOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHJldHJ5RXJyb3IpIHsgY29uc29sZS5lcnJvcihcIlJldHJ5IGZhaWxlZDpcIiwgcmV0cnlFcnJvcik7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheURhdGEudWkgPSA8ZGl2IGNsYXNzTmFtZT17Y3NzLnZib3goMjApLmNlbnRlcn0+e3JlbmRlck9wdGlvbnMoKX08L2Rpdj47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+Q2xpY2sgdG8gcmVzdG9yZSBmaWxlIHN5c3RlbSBhY2Nlc3M8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyT3B0aW9ucygpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwcm9taXNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkaXNwbGF5RGF0YS51aSA9IDxkaXYgY2xhc3NOYW1lPXtjc3MudmJveCgyMCkuY2VudGVyfT57cmVuZGVyT3B0aW9ucygpfTwvZGl2PjtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcHJlYWN0LnJlbmRlcihudWxsLCByb290KTtcbiAgICAgICAgcm9vdC5yZW1vdmUoKTtcbiAgICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGVTdG9yYWdlTmVzdGVkID0gY2FjaGUoYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZVN0b3JhZ2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RvcmFnZT4ge1xuICAgIGxldCBiYXNlID0gYXdhaXQgZ2V0RGlyZWN0b3J5SGFuZGxlKCk7XG4gICAgZm9yIChsZXQgcGFydCBvZiBwYXRoLnNwbGl0KFwiL1wiKSkge1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBiYXNlID0gYXdhaXQgYmFzZS5nZXREaXJlY3RvcnlIYW5kbGUocGFydCwgeyBjcmVhdGU6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwSGFuZGxlKGJhc2UpO1xufSk7XG4vLyBTdXBwb3J0cyBpZiB0aGUgdXNlciBzZWxlY3RzIHRoZSBmb2xkZXIgdGhhdCBjb250YWlucyB0aGUgZGF0YSBmb2xkZXIgb3IgdGhlIGRhdGEgZm9sZGVyIGRpcmVjdGx5LiBJZiBwYXRoU3RyIGlzIGFuIGFic29sdXRlIHBhdGggKGFuZCB3ZSdyZSBpbiBub2RlanMpIHdlIHVzZSBpdCBkaXJlY3RseS5cbmV4cG9ydCBjb25zdCBnZXRGaWxlU3RvcmFnZU5lc3RlZDIgPSBjYWNoZShhc3luYyBmdW5jdGlvbiBnZXRGaWxlU3RvcmFnZShwYXRoU3RyOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiB7XG4gICAgbGV0IGJhc2U6IERpcmVjdG9yeVdyYXBwZXI7XG4gICAgcGF0aFN0ciA9IHBhdGhTdHIucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuICAgIGlmIChpc05vZGUoKSkge1xuICAgICAgICBpZiAocGF0aC5pc0Fic29sdXRlKHBhdGhTdHIpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcEhhbmRsZShuZXcgTm9kZUpTRGlyZWN0b3J5SGFuZGxlV3JhcHBlcihwYXRoU3RyKSk7XG4gICAgICAgIH1cbiAgICAgICAgYmFzZSA9IG5ldyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyKHBhdGgucmVzb2x2ZShcIi4vZGF0YS9cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2UgPSBhd2FpdCBnZXREaXJlY3RvcnlIYW5kbGUoKTtcbiAgICAgICAgLy8gU2tpcCB0aGUgXCJmaW5kIGRhdGEgc3ViZGlyXCIgaGFjayB1bmRlciBPUEZTIOKAlCB0aGF0J3MgZm9yIHBpY2tlZCBkaXJlY3RvcmllcyB3aGVyZSB0aGUgdXNlciBtaWdodCBoYXZlIHNlbGVjdGVkIGEgZm9sZGVyIHdpdGggdW5yZWxhdGVkIGZpbGVzOyBPUEZTIGlzIGEgY2xlYW4gcm9vdCB3ZSBvd24gZW5kLXRvLWVuZC5cbiAgICAgICAgaWYgKCFvcGZzRW5hYmxlZCkge1xuICAgICAgICAgICAgbGV0IGRpcnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICBsZXQgYWxsczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgW25hbWUsIGVudHJ5XSBvZiBiYXNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LmtpbmQgPT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlycy5wdXNoKG5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhbGxzLnB1c2gobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBIQUNLOiBJZiB0aGVyZSBhcmUgZW5vdWdoIGZpbGVzLCBpdCdzIGFsbW9zdCBjZXJ0YWlubHkgbm90IGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgY29sbGVjdGlvbnMuIEl0J3MgcHJvYmFibHkgdGhlIHVzZXIncyBkYXRhIGluc3RlYWRcbiAgICAgICAgICAgIGlmIChkaXJzLmluY2x1ZGVzKFwiLmdpdFwiKSB8fCBkaXJzLmluY2x1ZGVzKFwiZGF0YVwiKSB8fCBhbGxzLmxlbmd0aCA+IDEwMCkge1xuICAgICAgICAgICAgICAgIGJhc2UgPSBhd2FpdCBiYXNlLmdldERpcmVjdG9yeUhhbmRsZShcImRhdGFcIiwgeyBjcmVhdGU6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgcGFydCBvZiBwYXRoU3RyLnNwbGl0KFwiL1wiKSkge1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBiYXNlID0gYXdhaXQgYmFzZS5nZXREaXJlY3RvcnlIYW5kbGUocGFydCwgeyBjcmVhdGU6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwSGFuZGxlKGJhc2UpO1xufSk7XG5leHBvcnQgY29uc3QgZ2V0RmlsZVN0b3JhZ2UgPSBsYXp5KGFzeW5jIGZ1bmN0aW9uIGdldEZpbGVTdG9yYWdlKCk6IFByb21pc2U8RmlsZVN0b3JhZ2U+IHtcbiAgICBpZiAoVVNFX0lOREVYRURfREIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldEZpbGVTdG9yYWdlSW5kZXhEQigpO1xuICAgIH1cbiAgICBsZXQgaGFuZGxlID0gYXdhaXQgZ2V0RGlyZWN0b3J5SGFuZGxlKCk7XG4gICAgcmV0dXJuIHdyYXBIYW5kbGUoaGFuZGxlKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0U3RvcmFnZUxvY2F0aW9uKCkge1xuICAgIGlmIChvcGZzRW5hYmxlZCkge1xuICAgICAgICAvLyBEb24ndCBkZWxldGUgcHJldmlvdXMgZm9sZGVyIOKAlCBsaXN0UHJpdmF0ZUZvbGRlcnMgLyBwaWNrUHJpdmF0ZUZvbGRlciBzdGlsbCBuZWVkIGl0LiBKdXN0IHBvaW50IFwiY3VycmVudFwiIGF0IGEgZnJlc2ggdGltZXN0YW1wLW5hbWVkIG9uZSBzbyB0aGUgbmV4dCByZWxvYWQgc3RhcnRzIGNsZWFuLlxuICAgICAgICBzZXRDdXJyZW50T3Bmc0ZvbGRlcihuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvWzouXS9nLCBcIi1cIikpO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZ2V0RmlsZUFQSUtleSgpKTtcbiAgICB0cnkgeyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShyZW1vdGVDb25maWdLZXkoKSk7IH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfVxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuZXhwb3J0IHR5cGUgTmVzdGVkRmlsZVN0b3JhZ2UgPSB7XG4gICAgaGFzS2V5KGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICBnZXRTdG9yYWdlKGtleTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RvcmFnZT47XG4gICAgcmVtb3ZlU3RvcmFnZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgZ2V0S2V5cyhpbmNsdWRlRm9sZGVycz86IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZ1tdPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbGVTdG9yYWdlID0gSVN0b3JhZ2VSYXcgJiB7XG4gICAgZm9sZGVyOiBOZXN0ZWRGaWxlU3RvcmFnZTtcbiAgICAvLyBNaXJyb3JzIERpcmVjdG9yeVdyYXBwZXIuaXNSZW1vdGU6IHRydWUgd2hlbiB0aGlzIHN0b3JhZ2UgaXMgc2VydmVkIG92ZXIgdGhlIG5ldHdvcmsuIExldHMgY2FsbGVycyAoZS5nLiBCdWxrRGF0YWJhc2UyLCB3aGljaCBza2lwcyBhdXRvbWF0aWMgY29tcGFjdGlvbiBvdmVyIHRoZSBuZXR3b3JrIGJ5IGRlZmF1bHQpIGFkYXB0LlxuICAgIGlzUmVtb3RlPzogYm9vbGVhbjtcbn07XG5cbmxldCBhcHBlbmRRdWV1ZSA9IGNhY2hlKChrZXk6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBydW5JblNlcmlhbCgoZm5jOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSA9PiBmbmMoKSk7XG59KTtcblxuXG5hc3luYyBmdW5jdGlvbiBmaXhlZEdldEZpbGVIYW5kbGUoY29uZmlnOiB7XG4gICAgaGFuZGxlOiBEaXJlY3RvcnlXcmFwcGVyO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGNyZWF0ZTogdHJ1ZTtcbn0pOiBQcm9taXNlPEZpbGVXcmFwcGVyPjtcbmFzeW5jIGZ1bmN0aW9uIGZpeGVkR2V0RmlsZUhhbmRsZShjb25maWc6IHtcbiAgICBoYW5kbGU6IERpcmVjdG9yeVdyYXBwZXI7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgY3JlYXRlPzogYm9vbGVhbjtcbn0pOiBQcm9taXNlPEZpbGVXcmFwcGVyIHwgdW5kZWZpbmVkPjtcbmFzeW5jIGZ1bmN0aW9uIGZpeGVkR2V0RmlsZUhhbmRsZShjb25maWc6IHtcbiAgICBoYW5kbGU6IERpcmVjdG9yeVdyYXBwZXI7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgY3JlYXRlPzogYm9vbGVhbjtcbn0pOiBQcm9taXNlPEZpbGVXcmFwcGVyIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKGNvbmZpZy5rZXkuaW5jbHVkZXMoXCIvXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVzZSBmb2xkZXJzIGRpcmVjdGx5IGluIGZpbGUgc3lzdGVtIHJlYWQgLyB3cml0ZXMuIFVzZSBhIHdyYXBwZXIgd2hpY2ggaGFuZGxlcyB0aGUgZm9sZGVyIG5hdmlnYXRpb24uIFBhdGggd2FzICR7SlNPTi5zdHJpbmdpZnkoY29uZmlnLmtleSl9YCk7XG4gICAgfVxuICAgIC8vIEFMV0FZUyB0cnkgd2l0aG91dCBjcmVhdGUsIGJlY2F1c2UgdGhlIHNzaGZzLXdpbiBzdWNrcyBhbmQgZG9lc24ndCBzdXBwb3J0IGBjcmVhdGU6IHRydWVgPyBXdGYuLi5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgY29uZmlnLmhhbmRsZS5nZXRGaWxlSGFuZGxlKGNvbmZpZy5rZXkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICBpZiAoIWNvbmZpZy5jcmVhdGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjb25maWcuaGFuZGxlLmdldEZpbGVIYW5kbGUoY29uZmlnLmtleSwgeyBjcmVhdGU6IHRydWUgfSk7XG59XG5cbi8vIEEgZmlsZSB0aGF0IGdlbnVpbmVseSBkb2VzIG5vdCBleGlzdC4gV2UgbXVzdCBOT1QgcmV0cnkgdGhlc2UsIG90aGVyd2lzZSByZWFkaW5nIG1hbnkgbWlzc2luZyBmaWxlcyAoYSBjb21tb24gcGF0dGVybikgZ2V0cyBjYXRhc3Ryb3BoaWNhbGx5IHNsb3cuXG5mdW5jdGlvbiBpc01pc3NpbmdFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGxldCBuYW1lID0gKGVycm9yIGFzIHsgbmFtZT86IHN0cmluZyB9KT8ubmFtZTtcbiAgICBsZXQgY29kZSA9IChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSk/LmNvZGU7XG4gICAgcmV0dXJuIG5hbWUgPT09IFwiTm90Rm91bmRFcnJvclwiIHx8IGNvZGUgPT09IFwiRU5PRU5UXCI7XG59XG5cbmNvbnN0IE1BWF9SRUFEX1JFVFJJRVMgPSA2O1xuXG4vLyBUaGUgYnJvd3NlciBGaWxlIFN5c3RlbSBBY2Nlc3MgQVBJIGNhbiB0cmFuc2llbnRseSBmYWlsIHJlYWRzIHVuZGVyIGhlYXZ5IGxvYWQgKGl0IGFwcGVhcnMgdG8gdGhyb3R0bGUgd2hlbiBhIHBhZ2UgaXNzdWVzIG1hbnkgcmVhZHMgYXQgb25jZSkuIFRob3NlIGZhaWx1cmVzIHN1cmZhY2UgYXMgZXJyb3JzIE9USEVSIHRoYW4gXCJub3QgZm91bmRcIiwgc28gd2UgcmV0cnkgdGhlbSB3aXRoIGJhY2tvZmYuIEEgcmVhbCBtaXNzaW5nIGZpbGUgKE5vdEZvdW5kRXJyb3IgLyBFTk9FTlQpIHJldHVybnMgdW5kZWZpbmVkIGltbWVkaWF0ZWx5IHdpdGggbm8gcmV0cnkuXG5hc3luYyBmdW5jdGlvbiByZWFkV2l0aFJldHJ5PFQ+KGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCByZWFkOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IGJhY2tvZmYgPSAyNTtcbiAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgOyBhdHRlbXB0KyspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCByZWFkKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoaXNNaXNzaW5nRXJyb3IoZXJyb3IpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSAoZXJyb3IgYXMgeyBuYW1lPzogc3RyaW5nIH0pPy5uYW1lIHx8IFwiRXJyb3JcIjtcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGF0dGVtcHQgPj0gTUFYX1JFQURfUkVUUklFUykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtsYWJlbH0gZ2F2ZSB1cCBvbiAke0pTT04uc3RyaW5naWZ5KGtleSl9IGFmdGVyICR7YXR0ZW1wdH0gcmV0cmllcyAoJHtuYW1lfSk6ICR7bWVzc2FnZS5zbGljZSgwLCAyMDApfWApO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7bGFiZWx9IHJldHJ5aW5nICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gKGF0dGVtcHQgJHthdHRlbXB0ICsgMX0sICR7bmFtZX0pOiAke21lc3NhZ2Uuc2xpY2UoMCwgMjAwKX1gKTtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiYWNrb2ZmKSk7XG4gICAgICAgICAgICBiYWNrb2ZmID0gTWF0aC5taW4oYmFja29mZiAqIDIsIDEwMDApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiB3cmFwSGFuZGxlRmlsZXMoaGFuZGxlOiBEaXJlY3RvcnlXcmFwcGVyKTogSVN0b3JhZ2VSYXcge1xuICAgIC8vIExvZyB0aGUgZnVsbCBwYXRoIChyb290ICsgZmlsZW5hbWUpIHdoZW4gYXZhaWxhYmxlLCBzbyBhIGZhaWxpbmcgZmlsZSBpcyBpZGVudGlmaWFibGUuXG4gICAgY29uc3QgcGF0aE9mID0gKGtleTogc3RyaW5nKSA9PiBoYW5kbGUuZnVsbFBhdGggPyBoYW5kbGUuZnVsbFBhdGggKyBcIi9cIiArIGtleSA6IGtleTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVhZFdpdGhSZXRyeShcImdldEluZm9cIiwgcGF0aE9mKGtleSksIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgaGFuZGxlLmdldEZpbGVIYW5kbGUoa2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IGZpbGUuZ2V0RmlsZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGVDb250ZW50LnNpemUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZUNvbnRlbnQubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgICAgIHJldHVybiByZWFkV2l0aFJldHJ5KFwiZ2V0XCIsIHBhdGhPZihrZXkpLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGhhbmRsZS5nZXRGaWxlSGFuZGxlKGtleSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBhd2FpdCBmaWxlLmdldEZpbGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGVDb250ZW50LmFycmF5QnVmZmVyKCk7XG4gICAgICAgICAgICAgICAgLy8gVW5kZXIgbG9hZCB0aGUgRlMgQWNjZXNzIEFQSSBjYW4gcmVzb2x2ZSB3aXRoIGEgdHJ1bmNhdGVkIGJ1ZmZlciBhbmQgbm8gZXJyb3IuIFRyZWF0IGEgc2hvcnQgcmVhZCBhcyB0cmFuc2llbnQgc28gcmVhZFdpdGhSZXRyeSByZXRyaWVzIGl0LlxuICAgICAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoICE9PSBmaWxlQ29udGVudC5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGBTaG9ydCByZWFkOiBnb3QgJHthcnJheUJ1ZmZlci5ieXRlTGVuZ3RofSBvZiAke2ZpbGVDb250ZW50LnNpemV9IGJ5dGVzYCksIHsgbmFtZTogXCJTaG9ydFJlYWRFcnJvclwiIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgZ2V0UmFuZ2Uoa2V5OiBzdHJpbmcsIGNvbmZpZzogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9KTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgICAgIHJldHVybiByZWFkV2l0aFJldHJ5KFwiZ2V0UmFuZ2VcIiwgcGF0aE9mKGtleSksIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgaGFuZGxlLmdldEZpbGVIYW5kbGUoa2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IGZpbGUuZ2V0RmlsZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRTdGFydCA9IE1hdGgubWluKE1hdGgubWF4KGNvbmZpZy5zdGFydCwgMCksIGZpbGVDb250ZW50LnNpemUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRFbmQgPSBNYXRoLm1pbihNYXRoLm1heChjb25maWcuZW5kLCBjbGFtcGVkU3RhcnQpLCBmaWxlQ29udGVudC5zaXplKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGVDb250ZW50LnNsaWNlKGNvbmZpZy5zdGFydCwgY29uZmlnLmVuZCkuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCAhPT0gY2xhbXBlZEVuZCAtIGNsYW1wZWRTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgU2hvcnQgcmFuZ2UgcmVhZDogZ290ICR7YXJyYXlCdWZmZXIuYnl0ZUxlbmd0aH0gb2YgJHtjbGFtcGVkRW5kIC0gY2xhbXBlZFN0YXJ0fSBieXRlc2ApLCB7IG5hbWU6IFwiU2hvcnRSZWFkRXJyb3JcIiB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIGFwcGVuZChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgYXdhaXQgYXBwZW5kUXVldWUoa2V5KShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gTk9URTogSW50ZXJlc3RpbmcgcG9pbnQuIENocm9tZSBkb2Vzbid0IG9wdGltaXplIHRoaXMgdG8gYmUgYW4gYXBwZW5kLCBhbmQgaW5zdGVhZCByZXdyaXRlcyB0aGUgZW50aXJlIGZpbGUuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZpeGVkR2V0RmlsZUhhbmRsZSh7IGhhbmRsZSwga2V5LCBjcmVhdGU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd3JpdGFibGUgPSBhd2FpdCBmaWxlLmNyZWF0ZVdyaXRhYmxlKHsga2VlcEV4aXN0aW5nRGF0YTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKGF3YWl0IGZpbGUuZ2V0RmlsZSgpKS5zaXplO1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLnNlZWsob2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0YWJsZS53cml0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZpeGVkR2V0RmlsZUhhbmRsZSh7IGhhbmRsZSwga2V5LCBjcmVhdGU6IHRydWUgfSk7XG4gICAgICAgICAgICBjb25zdCB3cml0YWJsZSA9IGF3YWl0IGZpbGUuY3JlYXRlV3JpdGFibGUoKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRlKHZhbHVlKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLmNsb3NlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgcmVtb3ZlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgICBhd2FpdCBoYW5kbGUucmVtb3ZlRW50cnkoa2V5KTtcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBnZXRLZXlzKGluY2x1ZGVGb2xkZXJzOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IFtuYW1lLCBlbnRyeV0gb2YgaGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5raW5kID09PSBcImZpbGVcIiB8fCBpbmNsdWRlRm9sZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGVudHJ5Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IChlcnJvciBhcyB7IG5hbWU/OiBzdHJpbmcgfSk/Lm5hbWUgfHwgXCJFcnJvclwiO1xuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpO1xuICAgICAgICAgICAgICAgIC8vIEEgZmFpbHVyZSBtaWQtaXRlcmF0aW9uIHdvdWxkIHNpbGVudGx5IHRydW5jYXRlIHRoZSBsaXN0aW5nLCBzbyBzdXJmYWNlIGl0IGxvdWRseS5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBnZXRLZXlzIGRpcmVjdG9yeSBpdGVyYXRpb24gZmFpbGVkIGFmdGVyICR7a2V5cy5sZW5ndGh9IGVudHJpZXMgKCR7bmFtZX0pOiAke21lc3NhZ2Uuc2xpY2UoMCwgMzAwKX1gKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICAgICAgZm9yIGF3YWl0IChjb25zdCBbbmFtZSwgZW50cnldIG9mIGhhbmRsZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGhhbmRsZS5yZW1vdmVFbnRyeShlbnRyeS5uYW1lLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiB3cmFwSGFuZGxlTmVzdGVkKGhhbmRsZTogRGlyZWN0b3J5V3JhcHBlcik6IE5lc3RlZEZpbGVTdG9yYWdlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhc3luYyBoYXNLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZShrZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgZ2V0U3RvcmFnZShrZXk6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0b3JhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YkRpcmVjdG9yeSA9IGF3YWl0IGhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUoa2V5LCB7IGNyZWF0ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB3cmFwSGFuZGxlKHN1YkRpcmVjdG9yeSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgcmVtb3ZlU3RvcmFnZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlLnJlbW92ZUVudHJ5KGtleSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIGF3YWl0IChjb25zdCBbbmFtZSwgZW50cnldIG9mIGhhbmRsZSkge1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5raW5kID09PSBcImRpcmVjdG9yeVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChlbnRyeS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcEhhbmRsZShoYW5kbGU6IERpcmVjdG9yeVdyYXBwZXIpOiBGaWxlU3RvcmFnZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4ud3JhcEhhbmRsZUZpbGVzKGhhbmRsZSksXG4gICAgICAgIGZvbGRlcjogd3JhcEhhbmRsZU5lc3RlZChoYW5kbGUpLFxuICAgICAgICBpc1JlbW90ZTogaGFuZGxlLmlzUmVtb3RlLFxuICAgIH07XG59XG5cbi8vIFJldHVybnMgYSBVUkwgZm9yIGEgZmlsZSdzIGJ5dGVzLCByZWFkeSB0byBkcm9wIGludG8gPHZpZGVvPi88aW1nPi9mZXRjaC4gQSBuYXRpdmUgKGxvY2FsKSBmaWxlIGJlY29tZXMgYW4gaW4tbWVtb3J5IGJsb2I6IFVSTDsgYSByZW1vdGUgZmlsZSBiZWNvbWVzIGFuIGh0dHBzIFVSTCBpbnRvIHRoZSBzZXJ2ZXIncyByYW5nZS1jYXBhYmxlIC9tZWRpYSBlbmRwb2ludCAoYXV0aCB0b2tlbiBpbiB0aGUgcXVlcnksIHNpbmNlIGEgbWVkaWEgZWxlbWVudCBjYW4ndCBzZW5kIGhlYWRlcnMpLiBCb3RoIHN1cHBvcnQgSFRUUCByYW5nZSAvIHNlZWtpbmcuIEFMV0FZUyBoYW5kIHRoZSByZXN1bHQgdG8gZGlzcG9zZUZpbGVVUkwgd2hlbiBmaW5pc2hlZCDigJQgZm9yIGJsb2I6IFVSTHMgdGhhdCBmcmVlcyBtZW1vcnkuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZVVSTChmaWxlOiBGaWxlV3JhcHBlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKGZpbGUuZ2V0VVJMKSByZXR1cm4gZmlsZS5nZXRVUkwoKTtcbiAgICAvLyBOYXRpdmUgRmlsZVN5c3RlbUZpbGVIYW5kbGUgKG9yIGFueSBCbG9iLWJhY2tlZCBmaWxlKTogYSBibG9iOiBVUkwgb3ZlciB0aGUgRmlsZSBpdHNlbGYuXG4gICAgY29uc3QgZiA9IGF3YWl0IGZpbGUuZ2V0RmlsZSgpO1xuICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGYgYXMgdW5rbm93biBhcyBCbG9iKTtcbn1cblxuLy8gUmVsZWFzZXMgYSBVUkwgZnJvbSBnZXRGaWxlVVJMLiBibG9iOiBVUkxzIGxlYWsgdW50aWwgdGhlIGRvY3VtZW50IGlzIGdvbmUgdW5sZXNzIHJldm9rZWQ7IGh0dHBzL2ZpbGU6IFVSTHMgbmVlZCBubyBjbGVhbnVwLCBzbyB0aGlzIGlzIGEgbm8tb3AgZm9yIHRoZW0uXG5leHBvcnQgZnVuY3Rpb24gZGlzcG9zZUZpbGVVUkwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXCJibG9iOlwiKSkge1xuICAgICAgICB0cnkgeyBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7IH0gY2F0Y2ggeyAvKiBub3QgaW4gYSBicm93c2VyLCBvciBhbHJlYWR5IHJldm9rZWQgKi8gfVxuICAgIH1cbn1cblxuLy8gQSBTdG9yYWdlRmFjdG9yeSBiYWNrZWQgYnkgYSByZW1vdGUgc2VydmVyIChwYXRoIC0+IEZpbGVTdG9yYWdlKSwgZm9yIGNvZGUgdGhhdCBpbmplY3RzIGl0cyBvd24gc3RvcmFnZSBpbnRvIEJ1bGtEYXRhYmFzZTIgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCB0aGUgZGlyZWN0b3J5IHByb21wdC5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW1vdGVGaWxlU3RvcmFnZUZhY3RvcnkodXJsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIG9wdGlvbnM/OiBSZW1vdGVPcHRpb25zKTogKHBhdGhTdHI6IHN0cmluZykgPT4gUHJvbWlzZTxGaWxlU3RvcmFnZT4ge1xuICAgIGNvbnN0IHJvb3QgPSBnZXRSZW1vdGVEaXJlY3RvcnlIYW5kbGUodXJsLCBwYXNzd29yZCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGFzeW5jIChwYXRoU3RyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGJhc2U6IERpcmVjdG9yeVdyYXBwZXIgPSByb290O1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGF0aFN0ci5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikuc3BsaXQoXCIvXCIpKSB7XG4gICAgICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgYmFzZSA9IGF3YWl0IGJhc2UuZ2V0RGlyZWN0b3J5SGFuZGxlKHBhcnQsIHsgY3JlYXRlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3cmFwSGFuZGxlKGJhc2UpO1xuICAgIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlUb0xvYWRQb2ludGVyKHBvaW50ZXI6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQgPSBhd2FpdCBnZXRGaWxlU3lzdGVtUG9pbnRlcih7IHBvaW50ZXIgfSk7XG4gICAgaWYgKCFyZXN1bHQpIHJldHVybjtcbiAgICBsZXQgaGFuZGxlID0gYXdhaXQgcmVzdWx0Py5vblVzZXJBY3RpdmF0aW9uKCk7XG4gICAgaWYgKCFoYW5kbGUpIHJldHVybjtcbiAgICByZXR1cm4gaGFuZGxlIGFzIGFueSBhcyBEaXJlY3RvcnlXcmFwcGVyO1xufSJdfQ==
751
- /* _JS_SOURCE_HASH = "75c8e6414439d8fe38f6f4220f9932f80d4a8ff3aedf0a28faf2cb93cb9dd164"; */
751
+ /* _JS_SOURCE_HASH = "40f30251e3193734da28d8ef206eaca3f4e342e7c10875277cd8232e4e819682"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  // The important operations of an archive bucket (extracted from ArchivesBackblaze), so other backends (e.g. our own remote storage server) can be used interchangeably.
3
3
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
4
4
  //exports.copyArchiveFile = exports.bufferChunkStream = exports.LARGE_SET_THRESHOLD = exports.windowsAcceptWrites = exports.windowAcceptsWrites = exports.VARIABLE_SHARD = exports.FULL_ROUTE = exports.STORAGE_NOT_CONFIGURED = exports.STORAGE_WRONG_ROUTE = exports.STORAGE_WRONG_VALID_WINDOW = exports.FULL_VALID_WINDOW = exports.assertValidLastModified = exports.IMMUTABLE_CACHE_TIME = exports.MAX_LAST_MODIFIED_FUTURE = void 0;
@@ -59,4 +59,4 @@ exports.bufferChunkStream = bufferChunkStream;
59
59
  var archiveHelpers_1 = require("./archiveHelpers");
60
60
  Object.defineProperty(exports, "copyArchiveFile", { enumerable: true, get: function () { return archiveHelpers_1.copyArchiveFile; } , configurable: true});
61
61
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUFyY2hpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSUFyY2hpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3S0FBd0s7OztBQUV4SyxzSkFBc0o7QUFDekksUUFBQSx3QkFBd0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUV2RCx5TEFBeUw7QUFDNUssUUFBQSxvQkFBb0IsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pELFNBQWdCLHVCQUF1QixDQUFDLFlBQW9CO0lBQ3hELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxnQ0FBd0IsQ0FBQztJQUNoRCxJQUFJLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxZQUFZLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFHLENBQUM7QUFDTCxDQUFDO0FBTEQsMERBS0M7QUF1RlksUUFBQSxpQkFBaUIsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFtSGhGLHdYQUF3WDtBQUMzVyxRQUFBLDBCQUEwQixHQUFHLDRDQUE0QyxDQUFDO0FBRXZGLDhMQUE4TDtBQUNqTCxRQUFBLG1CQUFtQixHQUFHLHFDQUFxQyxDQUFDO0FBRXpFLHVXQUF1VztBQUMxVixRQUFBLHNCQUFzQixHQUFHLHdDQUF3QyxDQUFDO0FBRWxFLFFBQUEsVUFBVSxHQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVuRCwyUkFBMlI7QUFDOVEsUUFBQSxjQUFjLEdBQUcsNkNBQTZDLENBQUM7QUFDNUUsb0xBQW9MO0FBQ3BMLDhKQUE4SjtBQUM5SixTQUFnQixtQkFBbUIsQ0FBQyxXQUF5QztJQUN6RSxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBSEQsa0RBR0M7QUFDRCxpTkFBaU47QUFDak4sU0FBZ0IsbUJBQW1CLENBQUMsWUFBZ0M7SUFDaEUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELGtEQUVDO0FBRUQsd0tBQXdLO0FBQzNKLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFbkQsbVJBQW1SO0FBQ25SLFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDMUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsT0FBTztRQUNILFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNwQixJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM1QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsMkJBQW1CLENBQUMsQ0FBQztZQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtZQUNoQixNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDO0FBYkQsOENBYUM7QUFFRCx3SkFBd0o7QUFDeEosbURBQW1EO0FBQTFDLGlIQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBpbXBvcnRhbnQgb3BlcmF0aW9ucyBvZiBhbiBhcmNoaXZlIGJ1Y2tldCAoZXh0cmFjdGVkIGZyb20gQXJjaGl2ZXNCYWNrYmxhemUpLCBzbyBvdGhlciBiYWNrZW5kcyAoZS5nLiBvdXIgb3duIHJlbW90ZSBzdG9yYWdlIHNlcnZlcikgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5LlxuXG4vLyBBIHdyaXRlIG1heSBub3QgYmUgc3RhbXBlZCBtb3JlIHRoYW4gdGhpcyBmYXIgaW4gdGhlIGZ1dHVyZSwgb3IgY2xvY2sgc2tldyBiZXR3ZWVuIG1hY2hpbmVzIHdvdWxkIGxldCBhIGJhZCB0aW1lc3RhbXAgYmxvY2sgd3JpdGVzIGZvciBhIGxvbmcgdGltZS5cbmV4cG9ydCBjb25zdCBNQVhfTEFTVF9NT0RJRklFRF9GVVRVUkUgPSAxNSAqIDYwICogMTAwMDtcblxuLy8gSG93IGxvbmcgYnJvd3NlcnMgbWF5IGNhY2hlIGZpbGVzIGZyb20gaW1tdXRhYmxlIGJ1Y2tldHMgKHRoZSBDYWNoZS1Db250cm9sIG1heC1hZ2UpLCBzaGFyZWQgYnkgZXZlcnkgaG9zdGluZyBwYXRoIChiYWNrYmxhemUgYnVja2V0IHNldHRpbmdzIGFuZCBvdXIgb3duIHN0b3JhZ2Ugc2VydmVyJ3MgSFRUUCByb3V0ZSlcbmV4cG9ydCBjb25zdCBJTU1VVEFCTEVfQ0FDSEVfVElNRSA9IDg2NDAwICogMTAwMDtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZExhc3RNb2RpZmllZChsYXN0TW9kaWZpZWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBtYXggPSBEYXRlLm5vdygpICsgTUFYX0xBU1RfTU9ESUZJRURfRlVUVVJFO1xuICAgIGlmIChsYXN0TW9kaWZpZWQgPiBtYXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBsYXN0TW9kaWZpZWQgaXMgdG9vIGZhciBpbiB0aGUgZnV0dXJlOiAke2xhc3RNb2RpZmllZH0gPiAke21heH0gKG5vdyArIDE1IG1pbnV0ZXMpYCk7XG4gICAgfVxufVxuXG5cbmV4cG9ydCB0eXBlIFJlbW90ZUNvbmZpZyA9IHtcbiAgICAvLyBOT1RFOiBWZXJzaW9uIGlzIHVzZWQgd2hlbiB1cGRhdGluZyB0aGUgY29uZmlndXJhdGlvbi4gVGhlIG5ld2VyIHZlcnNpb24gaXMgYWx3YXlzIHRha2VuLiBBIG1pc3NpbmcgdmVyc2lvbiBjb3VudHMgYXMgdmVyc2lvbiAtMS5cbiAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgIHNvdXJjZXM6IFJlbW90ZUNvbmZpZ0Jhc2VbXTtcbn07XG5cbi8qKlxuICAgIHN0cmluZyBhcmd1bWVudHMgd2lsbCBiZSBhIHVybCwgbG9va2luZyBsaWtlOlxuICAgICAgICBodHRwczovL3N0b3JhZ2UyLnZpZGdyaWR3ZWIuY29tOjQ0NDUvZmlsZS9leGFtcGxlYWNjb3VudC9leGFtcGxlYnVja2V0L3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgICAgICBodHRwczovL2YwMDIuYmFja2JsYXplYjIuY29tL2ZpbGUvcXVlcnlzdWJ0ZXN0LWNvbS1wdWJsaWMtaW1tdXRhYmxlL3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgICAgICAtIFRoZXNlIG1hcCB0byB7IHVybCB9LCB3aXRoIHRoZSB0eXBlIGluZmVycmVkIGZyb20gdGhlIHVybFxuICAgICAgICAtIEhvc3RlZCB1cmxzIGFyZSAvZmlsZS88YWNjb3VudD4vPGJ1Y2tldE5hbWU+Ly4uLiwgYmFja2JsYXplIHVybHMgYXJlIC9maWxlLzxidWNrZXROYW1lPi8uLi5cblxuICAgIE5PVEU6IElmIHdlIGRvIG5vdCBoYXZlIHJpZ2h0IGFjY2VzcyB0byB0aGVzZSwgdGhlbiBpdCBiZWNvbWVzIGEgcmVhZC1vbmx5IElBcmNoaXZlcywgd2hlcmUgd2Ugc29sZWx5IHJlYWQgdXNpbmcgdGhlIHVybCBmb3JtICh3aGljaCBtaWdodCB0aHJvdyBkdWUgdG8gbm90IGhhdmluZyBhY2Nlc3MgYXMgd2VsbCkuIFVOTEVTUyBPdXIgY29uZmlndXJhdGlvbiBleHBsaWNpdGx5IGhhcyBwdWJsaWM6IGZhbHNlLCBpbiB3aGljaCBjYXNlLCB3ZSBkb24ndCBldmVuIGhpdCB0aGUgVVJMIGFuZCB3ZSB0aHJvdyBvbiBhY2Nlc3MuXG5cbiAgICBOT1RFOiBJZiB3ZSdyZSBpbiB0aGUgYnJvd3Nlciwgd2Ugc2hvdWxkIGFsbG93IGRvd25sb2FkaW5nIHRoZSBmaWxlcyB2aWEgdGhlIFVSTCBmb3JtIChpZiBpdCdzIGEgcHVibGljIGJ1Y2tldCksIGhvd2V2ZXIsIHdlIHdvbid0IGFsbG93IHdyaXRpbmcsIGJlY2F1c2UgdGhlaXIgc2VydmVycyBkbyBub3QgYWxsb3cgc2VjdXJlIGJyb3dzZXIgd3JpdGVzLlxuKi9cbmV4cG9ydCB0eXBlIFJlbW90ZUNvbmZpZ0Jhc2UgPSBzdHJpbmcgfCBTb3VyY2VDb25maWc7XG5cbi8qKiBPbmUgY29uZmlndXJlZCBzb3VyY2UgaW4gYSByb3V0aW5nIGNvbmZpZzogYSBob3N0ZWQgKG91ciBzdG9yYWdlIHNlcnZlcikgb3IgYmFja2JsYXplIGVudHJ5LiBSZXF1ZXN0cyBjYXJyeSB0aGUgZXhhY3QgU291cmNlQ29uZmlnIHRoZXkgc2VsZWN0ZWQsIGFuZCB0aGUgc2VydmVyIG1hdGNoZXMgaXQgYWdhaW5zdCBpdHMgb3duIGVudHJpZXMgdG8gcGljayB0aGUgYmFja2luZyBzdG9yZS4gKi9cbmV4cG9ydCB0eXBlIFNvdXJjZUNvbmZpZyA9IEhvc3RlZENvbmZpZyB8IEJhY2tibGF6ZUNvbmZpZztcblxuZXhwb3J0IHR5cGUgQ29tbW9uQ29uZmlnID0ge1xuICAgIC8qKlxuICAgICAqIFRoZSBzdG9yYWdlIHRoaXMgZW50cnkgbmFtZXMsIGFzIG9wcG9zZWQgdG8gdGhlIHJ1bGVzIGZvciB1c2luZyBpdC4gRXZlcnkgZW50cnkgd2l0aCB0aGUgc2FtZVxuICAgICAqIG5hbWUgKGZvciB0aGUgc2FtZSBhY2NvdW50IGFuZCBidWNrZXQpIElTIHRoZSBzYW1lIHN0b3JhZ2U6IG9uZSBmb2xkZXIgb24gdGhlIHNlcnZlciwgb25lXG4gICAgICogc3RvcmUsIG9uZSBpbmRleCAtIGhvd2V2ZXIgbWFueSBlbnRyaWVzIHRoZXJlIGFyZSBhbmQgd2hhdGV2ZXIgdGhlaXIgd2luZG93cyBhbmQgcm91dGVzIHNheS5cbiAgICAgKiBFdmVyeXRoaW5nIGFib3V0IFdIRU4gYW5kIFdISUNIIEtFWVMgKHZhbGlkV2luZG93LCByb3V0ZSkgaXMgcG9saWN5IGxheWVyZWQgb24gdG9wIG9mIGl0LCBhbmRcbiAgICAgKiBjaGFuZ2luZyB0aGF0IHBvbGljeSBuZXZlciBtb3ZlcyBkYXRhLlxuICAgICAqXG4gICAgICogTGV0dGVycywgbnVtYmVycywgdW5kZXJzY29yZSwgZGFzaCBhbmQgcGVyaW9kcywgdXAgdG8gNjQgY2hhcmFjdGVycyAtIHNvIGEgaG9zdCBvciBhIHZlcnNpb25cbiAgICAgKiBjYW4gYmUgdXNlZCBhcy1pcy4gSXQgaXMgdGhlIGZvbGRlciBuYW1lLCBzbyBpdCBtdXN0IHN0YXkgdW5pcXVlIGFuZCBtdXN0IG5ldmVyIGJlIHJldXNlZCBmb3JcbiAgICAgKiBkaWZmZXJlbnQgc3RvcmFnZTpcbiAgICAgKiBwb2ludGluZyB0d28gdW5yZWxhdGVkIGVudHJpZXMgYXQgb25lIG5hbWUgbWVyZ2VzIHRoZWlyIGRhdGEsIGFuZCByZS11c2luZyBhIHJldGlyZWQgbmFtZVxuICAgICAqIGhhbmRzIHRoZSBuZXcgZW50cnkgdGhlIHJldGlyZWQgb25lJ3MgZmlsZXMuIERlY2lkaW5nIHRoYXQgaXMgdGhlIGRldmVsb3BlcidzIGpvYiAtIHRoZSBzZXJ2ZXJcbiAgICAgKiBvbmx5IGV2ZXIgZG9lcyB3aGF0IHRoZSBuYW1lIHNheXMuXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBCeSBkZWZhdWx0IGEgc2VydmVyIGhvc3RpbmcgdGhpcyBidWNrZXQgZWFnZXJseSBjb3BpZXMgdGhpcyBzb3VyY2UncyBmdWxsIGNvbnRlbnRzIG9udG8gaXRzIG93biBkaXNrIChvbiB0b3Agb2YgdGhlIGxhenkgcmVhZC10aHJvdWdoIGNhY2hpbmcpLiBTZXQgdGhpcyB0byBiZSBhIGZyb250IGVuZCBmb3IgYSB2ZXJ5IGxhcmdlIGRhdGFiYXNlIHdpdGhvdXQgY29weWluZyB0aGUgZnVsbCBkYXRhYmFzZSAtIHJlYWRzIHN0aWxsIGRvd24tY2FjaGUgaW5kaXZpZHVhbCBmaWxlcyBvbiBkZW1hbmQuICovXG4gICAgbm9GdWxsU3luYz86IGJvb2xlYW47XG4gICAgLyoqIEJ5dGVzIG9mIHJlYWQtY2FjaGUgdGhpcyBzZXJ2ZXIncyBkaXNrIG1heSBob2xkOyBsZWFzdC1yZWNlbnRseS11c2VkIGZpbGVzIGFyZSBkZWxldGVkIGZyb20gZGlzayB0byBzdGF5IHVuZGVyIGl0IChvbmx5IGV2ZXIgd2hlbiBhbm90aGVyIHNvdXJjZSB2ZXJpZmlhYmx5IGhvbGRzIHRoZSBmaWxlIC0gdGhlIG9ubHkgY29weSBpcyBuZXZlciBkZWxldGVkKS4gUmVxdWlyZXMgbm9GdWxsU3luYyAoYSBmdWxsIGNvcHkgY2FuJ3QgYmUgYm91bmRlZCkuICovXG4gICAgcmVhZGVyRGlza0xpbWl0PzogbnVtYmVyO1xuICAgIC8qKiBUaGUgd3JpdGUgdGltZXMgKFtzdGFydE1zLCBlbmRNc10pIHRoaXMgc291cmNlIGlzIHZhbGlkIGZvciAoc2VlIEFyY2hpdmVzU291cmNlLnZhbGlkV2luZG93IGZvciB0aGUgc3luY2hyb25pemF0aW9uIHNlbWFudGljcykuIFJlcXVpcmVkIG9uIG9iamVjdCBjb25maWdzOiBjb25maWd1cmF0aW9uIGNoYW5nZXMgbXVzdCBiZSBTQ0hFRFVMRUQgKGEgbmV3IHNvdXJjZSBiZWNvbWVzIHZhbGlkIGF0IGEgZnV0dXJlIHRpbWUgd2hpbGUgdGhlIG9sZCBvbmUncyB3aW5kb3cgZW5kcyksIG5vdCBmbGlwcGVkIGluc3RhbnRseS4gUGxhaW4gVVJMLXN0cmluZyBzb3VyY2VzIGRlZmF1bHQgdG8gRlVMTF9WQUxJRF9XSU5ET1cgLSBvbmNlIHlvdSdyZSB3cml0aW5nIG9iamVjdCBjb25maWdzLCB5b3UncmUgZG9pbmcgc29tZXRoaW5nIGNvbXBsaWNhdGVkIGVub3VnaCB0byB0aGluayBhYm91dCB3aGVuIHRoaW5ncyBjaGFuZ2UuICovXG4gICAgdmFsaWRXaW5kb3c6IFtudW1iZXIsIG51bWJlcl07XG4gICAgLyoqIFNoYXJkaW5nOiB0aGUgZnJhY3Rpb24gb2YgdGhlIGtleSBzcGFjZSB0aGlzIHNvdXJjZSBoYW5kbGVzLCBhcyBbc3RhcnQsIGVuZCkgb3ZlciBbMCwgMSkgKGtleXMgYXJlIHJvdXRlZCBieSBnZXRSb3V0ZSBpbiByZW1vdGVDb25maWcudHMpLiBEZWZhdWx0cyB0byBGVUxMX1JPVVRFICh1bnNoYXJkZWQpLiBBdCBldmVyeSBwb2ludCBpbiB0aW1lIHRoZSBzb3VyY2VzJyByb3V0ZXMgbXVzdCBmdWxseSBjb3ZlciBbMCwgMSksIG9yIHNvbWUga2V5cyBjb3VsZCBuZXZlciBiZSByZWFkLiAqL1xuICAgIHJvdXRlPzogW251bWJlciwgbnVtYmVyXTtcbiAgICAvKiogU2V0IG9uIGVudHJpZXMgaW5qZWN0ZWQgaW50byB0aGUgaW4tbWVtb3J5IGNvbmZpZyBieSBhbiBvdmVybGF5IChhIGRlcGxveSBzd2l0Y2hvdmVyJ3MgYWx0ZXJuYXRlLXBvcnQgd2luZG93KS4gTmV2ZXIgd3JpdHRlbiB0byBkaXNrOiByZXNvbHZlSW50ZXJtZWRpYXRlU291cmNlcyBzdHJpcHMgdGhlc2UgYW5kIHJlam9pbnMgdGhlIHdpbmRvd3MgYXJvdW5kIHRoZW0sIHdoaWNoIGlzIGFsc28gaG93IGEgY2xpZW50IHRlbGxzIHdoZXRoZXIgYW4gdXBkYXRlIGlzIGEgcmVhbCBjb25maWd1cmF0aW9uIGNoYW5nZSBvciBqdXN0IGFuIG92ZXJsYXkuIFRoZSBWQUxVRSBpcyB0aGUgdXJsIG9mIHRoZSBzb3VyY2UgdGhpcyBpbnRlcm1lZGlhdGUgd2FzIHNwbGl0IG91dCBvZiAoaXRzIGFsdGVybmF0ZS1wb3J0IHZpZXcpIC0gc28gYSByZXF1ZXN0IG5hbWluZyB0aGUgaW50ZXJtZWRpYXRlIHN0aWxsIHJlc29sdmVzIHRvIHRoZSBPUklHSU5BTCBzb3VyY2UsIGV2ZW4gYWZ0ZXIgdGhlIGludGVybWVkaWF0ZSByZWpvaW5zIGFuZCB0aGUgZW50cnkgaXMgZ29uZS4gKi9cbiAgICBpbnRlcm1lZGlhdGU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBIb3N0ZWRDb25maWcgPSBDb21tb25Db25maWcgJiB7XG4gICAgdHlwZTogXCJyZW1vdGVcIjtcblxuICAgIC8vIEV4OiBodHRwczovLzk5LTI1MC0xMjQtOTEucXVlcnlzdWJ0ZXN0LmNvbTo1MjMzL2ZpbGUvcm9vdC91bmlxdWVidWNrZXRuYW1lL3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgIC8vIE5PVEU6IFRoZSBhY2NvdW50IGFuZCBidWNrZXQgbmFtZSBhcmUgb2J0YWluZWQgZnJvbSB0aGUgVVJMLlxuICAgIHVybDogc3RyaW5nO1xuXG4gICAgLy8gTk9URTogQXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBieSBjZXJ0LnRzLCB2aWEgaGF2aW5nIHlvdXIgbWFjaGluZSB0cnVzdGVkIHRvIGFjY2VzcyB0aGlzIGFjY291bnQuIFxuXG4gICAgcHVibGljPzogYm9vbGVhbjtcbiAgICAvLyBGYXN0IG1vZGU6IHRoZSBzZXJ2ZXIgYWNrbm93bGVkZ2VzIHdyaXRlcyBvbmNlIHRoZXkgYXJlIGluIG1lbW9yeSwgZmx1c2hpbmcgdG8gZGlzayBhZnRlciB3cml0ZURlbGF5IChkZWZhdWx0IDUgbWludXRlcykgYW5kIGNvYWxlc2Npbmcgd3JpdGVzIHRvIHRoZSBzYW1lIGZpbGUuIEEgc2VydmVyIGNyYXNoIGxvc2VzIHdyaXRlcyB0aGF0IGhhdmVuJ3QgZmx1c2hlZCB5ZXQuXG4gICAgZmFzdD86IGJvb2xlYW47XG4gICAgd3JpdGVEZWxheT86IG51bWJlcjtcbiAgICAvLyBXcml0ZXMgdG8gcGF0aHMgdGhhdCBhbHJlYWR5IGV4aXN0IGFyZSBkaXNhbGxvd2VkIChkZWxldGVzIHN0aWxsIHdvcmspLlxuICAgIGltbXV0YWJsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBCYWNrYmxhemVDb25maWcgPSBDb21tb25Db25maWcgJiB7XG4gICAgdHlwZTogXCJiYWNrYmxhemVcIjtcbiAgICAvLyBFeDogaHR0cHM6Ly9mMDAyLmJhY2tibGF6ZWIyLmNvbS9maWxlL3F1ZXJ5c3VidGVzdC1jb20tcHVibGljLWltbXV0YWJsZS9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb25cbiAgICAvLyBOT1RFOiBUaGUgYnVja2V0IG5hbWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgVVJMLlxuICAgIHVybDogc3RyaW5nO1xuICAgIC8vIFB1YmxpYyBidWNrZXRzIGFyZSBzZXJ2ZWQgb3ZlciBwbGFpbiBIVFRQUyBHRVRzIChnZXRVUkwpLiBQcml2YXRlIGJ1Y2tldHMgYXJlIEFQSS1hY2Nlc3Mgb25seS5cbiAgICBwdWJsaWM/OiBib29sZWFuO1xuICAgIC8vIE5PVEU6IFRoaXMgaXNuJ3QgZW5mb3JjZWQgb24gdGhlIGJhY2tibGF6ZSBsZXZlbCwgc28gdGhpcyBpcyBqdXN0IGEgY2xpZW50LXNpZGUgZ3VhcmFudGVlLiBUaGlzIGNhbiBjaGFuZ2UgaG93IHdlIGNhY2hlIGZpbGVzLlxuICAgIC8vICAtIEJhY2tibGF6ZSBkb2VzIHN1cHBvcnQgaW1tdXRhYmlsaXR5LiBIb3dldmVyLCBhcHBhcmVudGx5LCBvbmNlIHdlIGVuYWJsZSBpdCBvbiBhIGJ1Y2tldCwgd2UgY2FuJ3QgZGlzYWJsZSBpdCwgd2hpY2ggaXMgcmVhbGx5IGJhZCwgYXMgaXQgbWVhbnMgaWYgb3VyIGNvZGUgY291bGQgZXZlciBlbmFibGUgaXQgYW5kIHdlIGFjY2lkZW50YWxseSBlbmFibGUgaXQgb24gYW4gaW1wb3J0YW50IGJ1Y2tldCwgd2UgZXNzZW50aWFsbHkganVzdCBicmlja2VkIHRoYXQgYnVja2V0LiBTbyB3ZSBzaG91bGQgbmV2ZXIgd3JpdGUgYW55IGNvZGUgdGhhdCBldmVyIHRyaWVzIHRvIHVzZSBiYWNrYmxhemUgdG8gbWFrZSB0aGluZ3MgaW1tdXRhYmxlLiBcbiAgICBpbW11dGFibGU/OiBib29sZWFuO1xuICAgIC8vIENPUlMgb3JpZ2lucyBhbGxvd2VkIHRvIGNvbnN1bWUgdGhlIGJ1Y2tldCdzIGZpbGVzIGluIGEgYnJvd3Nlci4gTm90IGEgc2VjdXJpdHkgYm91bmRhcnkgKGFjY2VzcyBpcyBnYXRlZCBieSB0aGUgQVBJIGtleSAvIHNpZ25lZCBVUkxzLCBuZWl0aGVyIG9mIHdoaWNoIHJpZGVzIGluIGNvb2tpZXMpIC0gaXQgb25seSBjb250cm9scyB3aGljaCBzaXRlcycgaW4tcGFnZSBKYXZhU2NyaXB0IGNhbiByZWFkIHJlc3BvbnNlcy4gRGVmYXVsdHMgdG8gYW55IEhUVFBTIG9yaWdpbi5cbiAgICBhbGxvd2VkT3JpZ2lucz86IHN0cmluZ1tdO1xuXG4gICAgLy8gTk9URTogV2Ugd2lsbCBhY2Nlc3MgdGhlIGFwaSBrZXkgZnJvbSBnZXRTZWNyZXQsIHNlZSBiYWNrYmxhemUudHMgZm9yIHRoZSBzcGVjaWZpYyBrZXlzLlxufTtcblxuXG5leHBvcnQgY29uc3QgRlVMTF9WQUxJRF9XSU5ET1c6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdO1xuXG5cblxuXG5leHBvcnQgdHlwZSBHZXRDb25maWcgPSB7XG4gICAgcmFuZ2U/OiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH07XG4gICAgLyoqIFJlYWQgT05MWSBmcm9tIHRoZSBwcmltYXJ5IHNvdXJjZSAtIHRoZSBvbmUgd3JpdGVzIHdvdWxkIHRhcmdldCAtIGluc3RlYWQgb2YgZmFsbGluZyBiYWNrIGFjcm9zcyB0aGUgcmVkdW5kYW50IHNvdXJjZXMuIFVzZSB0aGlzIHdoZW4geW91IHdhbnQgeW91ciByZWFkcyBhbmQgd3JpdGVzIHRvIGJlIHNvbWV3aGF0IGF0b21pYzogdGhlcmUgd2lsbCBzdGlsbCBiZSBpc3N1ZXMgd2l0aCB0aGUgcm91bmQgdHJpcCwgYnV0IHdpdGhvdXQgaXQgeW91IGNvdWxkIHRhbGsgdG8gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBub2RlIGFuZCBnZXQgYSBtdWNoIG9sZGVyIHZhbHVlLiBNb3N0IHJlYWRzIGFyZW4ndCBmb2xsb3dlZCBieSBhIHdyaXRlIHRob3VnaCwgc28gZm9yIG1vc3QgY2FzZXMgaXQncyBiZXR0ZXIgdG8gZ2V0IGEgdmFsdWUgdGhhbiB0byBoYXZlIHRvIHdhaXQgKG9yIGV2ZW4gdGhyb3cpIHdoZW4gdGhlIHByaW1hcnkgbm9kZSBpcyBub3QgYXZhaWxhYmxlLiAqL1xuICAgIG5vRmFsbGJhY2tzPzogYm9vbGVhbjtcbiAgICAvKiogU3RvcmUtdG8tc3RvcmUgY2FsbDogdGhlIHNlcnZpbmcgbm9kZSBhbnN3ZXJzIHB1cmVseSBmcm9tIGl0cyBvd24gZGlzaywgY29tcGxldGVseSBzaG9ydC1jaXJjdWl0aW5nIGl0cyBpbmRleCBob2xkZXJzIC0gY2hhc2luZyBpdHMgb3duIHJlbW90ZSBob2xkZXJzIHdoaWxlIGFuc3dlcmluZyBhbm90aGVyIHN0b3JlIGlzIGhvdyBpbmZpbml0ZSBnZXQgbG9vcHMgYmV0d2VlbiBzdG9yZXMgZm9ybSAoQSBhc2tzIEIsIEIncyBpbmRleCBwb2ludHMgYmFjayBhdCBBLCAuLi4pLiBObyB3aW5kb3cgb3Igcm91dGUgY2hlY2tzIG9uIHJlYWRzOiBpZiB0aGUgYnl0ZXMgYXJlIG9uIGl0cyBkaXNrLCB0aGUgY2FsbGVyIG1heSBoYXZlIHRoZW0uICovXG4gICAgaW50ZXJuYWw/OiBib29sZWFuO1xuICAgIC8qKiBBbHNvIHJldHVybiBzaXplLTAgcmVzdWx0cyAodG9tYnN0b25lcyAtIGFuIGVtcHR5IGZpbGUgSVMgYSBtaXNzaW5nIGZpbGUpIGluc3RlYWQgb2YgdHJlYXRpbmcgdGhlbSBhcyBhYnNlbnQuIE9mZiBieSBkZWZhdWx0LCBtYXRjaGluZyBnZXRJbmZvJ3MgZmxhZyBvZiB0aGUgc2FtZSBuYW1lLiBTeW5jaHJvbml6YXRpb24gcGFzc2VzIHRoaXMgc28gYSBERUxFVEVEIGZpbGUgKHdpdGggaXRzIHdyaXRlIHRpbWUpIGlzIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgZmlsZSB0aGF0IG5ldmVyIGV4aXN0ZWQuICovXG4gICAgaW5jbHVkZVRvbWJzdG9uZXM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRmluZENvbmZpZyA9IHtcbiAgICBzaGFsbG93PzogYm9vbGVhbjtcbiAgICB0eXBlPzogXCJmaWxlc1wiIHwgXCJmb2xkZXJzXCI7XG4gICAgLyoqIExpc3RpbmdzIG5vcm1hbGx5IGNvbWUgT05MWSBmcm9tIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZXMgKHRoZSBzYW1lIG5vZGVzIHdyaXRlcyBnbyB0byAtIHJlYWQteW91ci13cml0ZXMpLiBXaXRoIGZhbGxiYWNrcywgYSBmYWlsaW5nIHNoYXJkJ3Mgcm91dGVzIGFyZSBjb3ZlcmVkIGJ5IHRoZSBuZXh0IHNvdXJjZSBob2xkaW5nIHRoZW0gKGUuZy4gYSB3aWRlIHJlYWQgcmVwbGljYSkgaW5zdGVhZCBvZiB0aGUgY2FsbCBmYWlsaW5nIC0gaGlnaCBhdmFpbGFiaWxpdHkgYXQgdGhlIGNvc3Qgb2YgcG9zc2libHkgbWlzc2luZyBqdXN0LXdyaXR0ZW4gZGF0YS4gU2luZ2xlLXNvdXJjZSBhcmNoaXZlcyBpZ25vcmUgdGhlIGZsYWcuICovXG4gICAgZmFsbGJhY2tzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlbENvbmZpZyA9IHtcbiAgICAvKiogU3RhbXBzIHRoZSBkZWxldGlvbiAoaXRzIHRvbWJzdG9uZSkgd2l0aCB0aGlzIHdyaXRlIHRpbWUgaW5zdGVhZCBvZiBub3cuIFN5bmNocm9uaXphdGlvbiBwYXNzZXMgdGhlIE9SSUdJTkFMIGRlbGV0aW9uIHRpbWUsIHNvIGRlbGV0aW9uIG9yZGVyaW5nIHN1cnZpdmVzIHByb3BhZ2F0aW9uIGV4YWN0bHkgbGlrZSBhbnkgb3RoZXIgd3JpdGUncyBvcmRlcmluZy4gKi9cbiAgICBsYXN0TW9kaWZpZWQ/OiBudW1iZXI7XG4gICAgLyoqIFNlZSBTZXRDb25maWcuaW50ZXJuYWwuICovXG4gICAgaW50ZXJuYWw/OiBib29sZWFuO1xuICAgIC8qKiBTZWUgU2V0Q29uZmlnLm5vQ2hlY2tzLiAqL1xuICAgIG5vQ2hlY2tzPzogYm9vbGVhbjtcbiAgICAvKiogU2VlIFNldENvbmZpZy5mYWxsYmFja3MuICovXG4gICAgZmFsbGJhY2tzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdldEluZm9Db25maWcgPSB7XG4gICAgLyoqIEFsc28gcmVwb3J0IHNpemUtMCBlbnRyaWVzICh0b21ic3RvbmVzIC0gYW4gZW1wdHkgZmlsZSBJUyBhIG1pc3NpbmcgZmlsZSkuIE9mZiBieSBkZWZhdWx0LCBzbyBhIGRlbGV0ZWQga2V5IHJlcG9ydHMgdW5kZWZpbmVkLCBtYXRjaGluZyBnZXQuIFN5bmNocm9uaXphdGlvbi1zdHlsZSBjYWxsZXJzIHBhc3MgdGhpcyB3aGVuIHRoZXkgbmVlZCBhIGRlbGV0aW9uJ3Mgd3JpdGUgdGltZSAoZS5nLiB0byBjb21wYXJlIGl0IGFnYWluc3QgYSB3cml0ZSB0aGV5IGFyZSBhYm91dCB0byBtYWtlKS4gKi9cbiAgICBpbmNsdWRlVG9tYnN0b25lcz86IGJvb2xlYW47XG4gICAgLyoqIFNlZSBHZXRDb25maWcubm9GYWxsYmFja3M6IGFuc3dlciBPTkxZIGZyb20gdGhlIHByaW1hcnkgc291cmNlICh0aGUgb25lIHdyaXRlcyB3b3VsZCB0YXJnZXQpIGluc3RlYWQgb2YgZmFsbGluZyBiYWNrIGFjcm9zcyB0aGUgcmVkdW5kYW50IHNvdXJjZXMuICovXG4gICAgbm9GYWxsYmFja3M/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbmdlc0FmdGVyQ29uZmlnID0ge1xuICAgIHRpbWU6IG51bWJlcjtcbiAgICAvKiogT25seSBrZXlzIHJvdXRpbmcgaW50byBvbmUgb2YgdGhlc2UgW3N0YXJ0LCBlbmQpIHJhbmdlcy4gT25seSBzY2FubmluZyBwYXNzZXMgdGhpcyAtIGl0IGxldHMgYSBzdG9yZSBzeW5jaW5nIGEgcGFydGlhbCBzaGFyZCBhc2sgZm9yIGp1c3QgaXRzIHNsaWNlLiAqL1xuICAgIHJvdXRlcz86IFtudW1iZXIsIG51bWJlcl1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNldENvbmZpZyA9IHtcbiAgICBsYXN0TW9kaWZpZWQ/OiBudW1iZXI7XG4gICAgLyoqIE1ha2VzIHRoZSB3cml0ZSBhY2NlcHRhYmxlIG9uIGltbXV0YWJsZSB0YXJnZXRzOiBhbiBleGlzdGluZyBwYXRoIGlzIHNpbXBseSBrZXB0IChpbW11dGFiaWxpdHkgd2lucyAtIG5vdGhpbmcgaXMgb3ZlcndyaXR0ZW4pIGluc3RlYWQgb2YgdGhlIHdyaXRlIHRocm93aW5nLiBSZXF1aXJlcyBsYXN0TW9kaWZpZWQuIFN5bmNocm9uaXphdGlvbiBNVVNUIHBhc3MgdGhpcyBvbiBldmVyeSBwdXNoIC0gYSBwbGFpbiBzZXQgdGhyb3dzIG9uIGltbXV0YWJsZSB0YXJnZXRzLCB3aGljaCB3b3VsZCBhYm9ydCByZWNvbmNpbGlhdGlvbiB3aGVuZXZlciBvbmUgc291cmNlIGluIGEgY2hhaW4gaXMgaW1tdXRhYmxlLiAqL1xuICAgIGZvcmNlU2V0SW1tdXRhYmxlPzogYm9vbGVhbjtcbiAgICAvKiogU2tpcHMgUkVEVU5EQU5UIHRhcmdldC1zaWRlIHNhZmV0eSByZWFkcyBhcm91bmQgdGhlIHdyaXRlIChiYWNrYmxhemU6IHRoZSBwb3N0LXVwbG9hZCBleGlzdGVuY2UgcG9sbCkuIEl0IGRvZXMgTk9UIHNraXAgY2hlY2tzIHRoYXQgYXJlIHRoZSB0YXJnZXQncyBvbmx5IG9yZGVyaW5nIGd1YXJkOiBiYWNrYmxhemUncyBwcmUtd3JpdGUgY29tcGFyaXNvbiBzdGF5cywgYmVjYXVzZSBiMiBoYXMgbm8gc2VydmVyIG9mIG91cnMgZW5mb3JjaW5nIG9ubHktdGFrZS10aGUtbGF0ZXN0IC0gd2l0aG91dCBpdCBhIHN0YWxlIHB1c2ggbGFuZHMgb3ZlciBhIG5ld2VyIHZhbHVlIG9yIHRvbWJzdG9uZSBhbmQgYjIncyBzZWxmLXN0YW1wZWQgdXBsb2FkIHRpbWUgbGF1bmRlcnMgaXQgaW50byB0aGUgbmV3ZXN0IGNvcHkgaW4gdGhlIHN5c3RlbSAoZ2xvYmFsIHJlc3VycmVjdGlvbikuIEhvc3RlZCB0YXJnZXRzIHJlLWNoZWNrIHNlcnZlci1zaWRlLCBzbyB0aGVpciBjbGllbnQtc2lkZSBzaG9ydGN1dHMgYXJlIHNhZmUuICovXG4gICAgbm9DaGVja3M/OiBib29sZWFuO1xuICAgIC8qKiBTdG9yZS10by1zdG9yZSBwdXNoOiB0aGUgcmVjZWl2aW5nIG5vZGUgd3JpdGVzIHB1cmVseSB0byBpdHMgb3duIGRpc2sgYW5kIGluZGV4LCB3aXRoIE5PIGRvd25zdHJlYW0gZmFuLW91dCAodGhlIHB1c2hpbmcgc3RvcmUgb3ducyBwcm9wYWdhdGlvbiAtIGZhbm5pbmcgaXRzIHB1c2hlcyBiYWNrIG91dCBpcyBob3cgd3JpdGUgbG9vcHMgYmV0d2VlbiBzdG9yZXMgZm9ybSkuIFdpbmRvdyBhbmQgcm91dGUgQVJFIHN0aWxsIGNoZWNrZWQ6IHRoZSBzdGFtcCBtdXN0IGZhbGwgaW5zaWRlIG9uZSBvZiB0aGUgcmVjZWl2ZXIncyBjb25maWd1cmVkIHdpbmRvd3MgYW5kIHJvdXRlcywgc28gYSBjb25mdXNlZCBwZWVyIGNhbm5vdCBzdHVmZiBkYXRhIG9udG8gYSBub2RlIHRoYXQgd2FzIG5ldmVyIG1lYW50IHRvIGhvbGQgaXQuIFJlcXVpcmVzIGxhc3RNb2RpZmllZC4gKi9cbiAgICBpbnRlcm5hbD86IGJvb2xlYW47XG4gICAgLyoqIFdyaXRlcyBub3JtYWxseSBnbyBPTkxZIHRvIHRoZSB3cml0ZSBub2RlICh0aGUgZmlyc3QgY3VycmVudC13aW5kb3cgc291cmNlIGNvdmVyaW5nIHRoZSBrZXkpLCByZXRyeWluZyBpdCBldmVuIHdoaWxlIGl0IGlzIGRvd24gLSBjb25zaXN0ZW50LCBidXQgdW5hdmFpbGFibGUgd2hlbiB0aGF0IG5vZGUgaXMuIFdpdGggZmFsbGJhY2tzLCB0aGUgd3JpdGUgbm9kZSBpcyBzdGlsbCB0cmllZCBmaXJzdCwgYnV0IG9uIGZhaWx1cmUgdGhlIHdyaXRlIGxhbmRzIG9uIHRoZSBuZXh0IGN1cnJlbnQtd2luZG93IHNvdXJjZSBjb3ZlcmluZyB0aGUga2V5IChzeW5jaHJvbml6YXRpb24gbW92ZXMgaXQgdG8gdGhlIHdyaXRlIG5vZGUgbGF0ZXIpIC0gYXZhaWxhYmlsaXR5IGF0IHRoZSBjb3N0IG9mIHJlYWRzIHBvc3NpYmx5IG1pc3NpbmcgdGhlIHdyaXRlIHVudGlsIGl0IHByb3BhZ2F0ZXMuIFNpbmdsZS1zb3VyY2UgYXJjaGl2ZXMgaWdub3JlIHRoZSBmbGFnLiAqL1xuICAgIGZhbGxiYWNrcz86IGJvb2xlYW47XG59O1xuXG4vKiogc2V0TGFyZ2VGaWxlJ3MgY29uZmlnOiBhIFNldENvbmZpZyAoaXQgSVMgYSBzZXQgLSB0aGUgc2FtZSBpbW11dGFiaWxpdHksIG9yZGVyaW5nLCBpbnRlcm5hbCwgYW5kIGZhbGxiYWNrcyBydWxlcyBhcHBseSkgcGx1cyB0aGUgc3RyZWFtIGNhcnJ5aW5nIHRoZSBieXRlcy4gKi9cbmV4cG9ydCB0eXBlIFNldExhcmdlRmlsZUNvbmZpZyA9IFNldENvbmZpZyAmIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgZ2V0TmV4dERhdGEoKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+O1xuICAgIC8qKiBSZXdpbmRzIHRoZSBzdHJlYW0gdG8gaXRzIGZpcnN0IGJ5dGUuIFdpdGhvdXQgaXQgdGhlIHdyaXRlIGdldHMgZXhhY3RseSBPTkUgYXR0ZW1wdDogYSByZXRyeSAoYSBmYWxsYmFjayBzb3VyY2UsIG9yIHRoZSB3cml0ZSBub2RlIGNvbWluZyBiYWNrKSB3b3VsZCB1cGxvYWQgd2hhdGV2ZXIgaXMgbGVmdCBvZiBhbiBhbHJlYWR5LWNvbnN1bWVkIHN0cmVhbSBhcyBpZiBpdCB3ZXJlIHRoZSB3aG9sZSBmaWxlLiBDYWxsZXJzIGhvbGRpbmcgdGhlIGRhdGEgKGEgYnVmZmVyLCBvciBhIHNvdXJjZSB0aGV5IGNhbiByZS1yZWFkKSBhbHdheXMgcGFzcyBpdCAtIGEgbGFyZ2Ugc2V0IHdpdGggZmFsbGJhY2tzIGlzIG9ubHkgYXMgYXZhaWxhYmxlIGFzIHRoaXMuICovXG4gICAgcmVzdGFydFN0cmVhbT8oKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG59O1xuXG4vLyBjcmVhdGVUaW1lIGlzIGEgbWlzbm9tZXIga2VwdCBmb3IgY29tcGF0aWJpbGl0eSDigJQgaXQgaXMgcmVhbGx5IHRoZSBMQVNULVdSSVRFIHRpbWUsIHNhbWUgYXMgZ2V0SW5mbydzIHdyaXRlVGltZS4gTmVpdGhlciBCYWNrYmxhemUgbm9yIG91ciByZW1vdGUgc3RvcmFnZSB0cmFja3MgYSBkaXN0aW5jdCBjcmVhdGlvbiBkYXRlOiBlYWNoIHdyaXRlIHN0YW1wcyBhIGZyZXNoIHRpbWVzdGFtcCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uLCBzbyBib3RoIGZpZWxkcyBhcmUganVzdCBcIndoZW4gdGhlIGJ5dGVzIHNlcnZlZCBieSBnZXQoKSB3ZXJlIG1vc3QgcmVjZW50bHkgd3JpdHRlblwiLlxuZXhwb3J0IHR5cGUgQXJjaGl2ZUZpbGVJbmZvID0geyBwYXRoOiBzdHJpbmc7IGNyZWF0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH07XG5cbi8vIEFuIGluLXByb2dyZXNzIGJhY2tncm91bmQgc3luY2hyb25pemF0aW9uIHRhc2sgKHNlZSBBcmNoaXZlc0NvbmZpZy5zeW5jaW5nKVxuZXhwb3J0IHR5cGUgU3luY0FjdGl2aXR5ID0ge1xuICAgIC8vIEEgbWV0YWRhdGEgc2NhbiBpcyBhIHNpbmdsZSBsaXN0aW5nIGNhbGwsIHNvIGl0IGhhcyBubyBpbmNyZW1lbnRhbCBwcm9ncmVzcyAtIGp1c3QgdGhhdCBpdCdzIHJ1bm5pbmcgYW5kIHNpbmNlIHdoZW4uIEEgZnVsbCBzeW5jIGtub3dzIGl0cyBleGFjdCBmaWxlL2J5dGUgcHJvZ3Jlc3MuXG4gICAgdHlwZTogXCJtZXRhZGF0YVNjYW5cIiB8IFwiZnVsbFN5bmNcIjtcbiAgICBzb3VyY2VEZWJ1Z05hbWU6IHN0cmluZztcbiAgICBzdGFydFRpbWU6IG51bWJlcjtcbiAgICBkb25lRmlsZXM/OiBudW1iZXI7XG4gICAgdG90YWxGaWxlcz86IG51bWJlcjtcbiAgICBkb25lQnl0ZXM/OiBudW1iZXI7XG4gICAgdG90YWxCeXRlcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFyY2hpdmVzQ29uZmlnID0ge1xuICAgIC8vIFdoZXRoZXIgZ2V0Q2hhbmdlc0FmdGVyMiBpcyBuYXRpdmVseSBpbmRleC1iYWNrZWQgKGZhc3QgY2hhbmdlIHBvbGxpbmc7IGV2ZXJ5IGJhY2tlbmQgc3RpbGwgc2VydmVzIGl0LCBidXQgdGhlIG90aGVycyBlbXVsYXRlIGl0IHdpdGggYSBmdWxsIGxpc3RpbmcpXG4gICAgc3VwcG9ydHNDaGFuZ2VzQWZ0ZXI/OiBib29sZWFuO1xuICAgIC8vIFRoZSBidWNrZXQncyBmdWxsIHJvdXRpbmcgY29uZmlnIChST1VUSU5HX0ZJTEUpLiBBYnNlbnQgZm9yIHNvdXJjZXMgdGhhdCBkb24ndCBoYXZlIG9uZSAoYSBiYXJlIGRpc2sgc291cmNlLCBvciBhIGJ1Y2tldCB0aGF0IGRvZXNuJ3QgZXhpc3QgeWV0KS5cbiAgICByZW1vdGVDb25maWc/OiBSZW1vdGVDb25maWc7XG4gICAgLy8gTGl2ZSBpbmRleCB0b3RhbHMgKHRvbWJzdG9uZXMgZXhjbHVkZWQpLCBrZXB0IHVwIHRvIGRhdGUgaW4gbWVtb3J5IG9uIGV2ZXJ5IG11dGF0aW9uIGFuZCByZWNvbXB1dGVkIG9uIGxvYWQgLSBzbyBhbnkgZHJpZnQgaGVhbHMgb24gcmVzdGFydFxuICAgIGluZGV4PzogeyBmaWxlQ291bnQ6IG51bWJlcjsgYnl0ZUNvdW50OiBudW1iZXIgfTtcbiAgICAvLyBUaGUgc2FtZSB0b3RhbHMgYnJva2VuIGRvd24gYnkgd2hpY2ggc291cmNlIGN1cnJlbnRseSBob2xkcyBlYWNoIGZpbGUncyBieXRlcyAodGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBzZXJ2ZXIncyBvd24gZGlzaylcbiAgICBpbmRleFNvdXJjZXM/OiB7IGRlYnVnTmFtZTogc3RyaW5nOyBmaWxlQ291bnQ6IG51bWJlcjsgYnl0ZUNvdW50OiBudW1iZXIgfVtdO1xuICAgIC8vIFRoZSBzZXJ2ZXIncyBjb25maWd1cmVkIHJlYWRlckRpc2tMaW1pdCwgd2hlbiBpdCBydW5zIGFzIGEgYm91bmRlZCByZWFkIGNhY2hlXG4gICAgcmVhZGVyRGlza0xpbWl0PzogbnVtYmVyO1xuICAgIC8vIEJhY2tncm91bmQgc3luY2hyb25pemF0aW9uIGN1cnJlbnRseSBpbiBwcm9ncmVzcyAoZW1wdHkgd2hlbiBpZGxlKVxuICAgIHN5bmNpbmc/OiBTeW5jQWN0aXZpdHlbXTtcbn07XG5cbi8vIEEgc3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiBhIEJsb2JTdG9yZSAod2hpY2ggc3luY2hyb25pemVzIGFuIGluZGV4ICsgbG9jYWwgY2FjaGUgZnJvbSB0aGVtKVxuZXhwb3J0IHR5cGUgQXJjaGl2ZXNTb3VyY2UgPSB7XG4gICAgc291cmNlOiBJQXJjaGl2ZXM7XG4gICAgLyoqIFRoZSBwZXJzaXN0ZW50IGlkZW50aXR5IG9mIHRoZSBlbmRwb2ludDogaXRzIHJvdXRpbmcgVVJMIChob3N0ZWQvYmFja2JsYXplKSwgb3IgdGhlIGRpc2sgZm9sZGVyIHBhdGggZm9yIHRoZSBiYXNlIGRpc2sgc291cmNlLiBUaGUgc3RvcmUgcGVyc2lzdHMgdGhpcyAodmlhIGl0cyBhcHBlbmQtb25seSBzb3VyY2VzIGxpc3QpIGFzIEluZGV4RW50cnkuc291cmNlc0xpc3RJbmRleCwgc28gaXQgbXVzdCBtZWFuIHRoZSBzYW1lIGVuZHBvaW50IGZvcmV2ZXIuICovXG4gICAgdXJsOiBzdHJpbmc7XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnLCBidXQgQUxMIG9mIHRoZW06IHRoZSBzYW1lIGVuZHBvaW50IChzYW1lIHVybCtyb3V0ZSwgaWdub3JpbmcgdGhlIHdpbmRvdykgY2FuIGFwcGVhciBpbiB0aGUgcm91dGluZyBjb25maWcgdW5kZXIgc2V2ZXJhbCB3aW5kb3dzIGF0IG9uY2UgLSBtb3N0IGNvbW1vbmx5IHdoZW4gYSBkZXBsb3kgc3dpdGNob3ZlciBoYXMgc3BsaXQgb25lIHdpbmRvdyBpbiB0d28gYXJvdW5kIGFuIGludGVybWVkaWF0ZS4gSXQgaXMgT05FIHNvdXJjZSB0aGF0IGtub3dzIGFsbCBpdHMgd2luZG93cywgbmV2ZXIgc2V2ZXJhbCBzb3VyY2VzLiBUaGUgd2luZG93IHJvdXRlcyBXUklURVM6IHRoZSBzb3VyY2UgcmVjZWl2ZXMgd3JpdGVzIHdoaWxlIEFOWSBvZiBpdHMgd2luZG93cyBpcyBzdGlsbCBvcGVuIChzZWUgd2luZG93c0FjY2VwdFdyaXRlcykuIFdpbmRvd3MgZG8gTk9UIGZpbHRlciBzY2FubmluZzogYSBzY2FuIGlzIHVzIGFza2luZyB0aGUgc291cmNlIHdoYXQgaXQgYWxyZWFkeSBob2xkcywgYW5kIGV4aXN0aW5nIHZhbHVlcyBzeW5jaHJvbml6ZSByZWdhcmRsZXNzIG9mIHRoZWlyIHdyaXRlIHRpbWVzICh0aGUgc2FtZSByZWFzb25pbmcgdGhhdCBsZXRzIHN5bmNocm9uaXphdGlvbiBpZ25vcmUgdGhlIGltbXV0YWJsZSBmbGFnKS5cbiAgICB2YWxpZFdpbmRvd3M6IFtudW1iZXIsIG51bWJlcl1bXTtcbiAgICAvLyBGcm9tIHRoZSBzb3VyY2UncyBDb21tb25Db25maWcgKGludGVyc2VjdGVkIHdpdGggdGhlIG93bmluZyBzdG9yZSdzIG93biByb3V0ZSk6IG9ubHkga2V5cyByb3V0aW5nIGludG8gW3N0YXJ0LCBlbmQpIGFyZSBhY2NlcHRlZCBmcm9tIHRoaXMgc291cmNlJ3Mgc2NhbnMgYW5kIHNlbnQgdG8gaXQgaW4gd3JpdGVzL3JlY29uY2lsaWF0aW9uLiBUaGUgcm91dGluZyBmaWxlIGlzIGV4ZW1wdCAtIGNvbmZpZyBmbG93cyBldmVyeXdoZXJlLiBBYnNlbnQgPSBhbGwga2V5cy5cbiAgICByb3V0ZT86IFtudW1iZXIsIG51bWJlcl07XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnOyBzZWUgdGhlcmUuXG4gICAgbm9GdWxsU3luYz86IGJvb2xlYW47XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnOiBhIGRlcGxveSBzd2l0Y2hvdmVyJ3MgdGVtcG9yYXJ5IGFsdGVybmF0ZS1wb3J0IGVudHJ5ICh0aGUgdmFsdWUgaXMgdGhlIHVybCBvZiB0aGUgc291cmNlIGl0IHdhcyBzcGxpdCBvdXQgb2YpLiBPbmNlIGl0cyB3aW5kb3cgaXMgcGFzdCwgdGhlIHBvcnQgaXQgcG9pbnRzIGF0IGlzIGdvbmUgZm9yIGdvb2QgLSBzbyBpdCBpcyBuZXZlciBzY2FubmVkIHRoZW4sIGFuZCBzY2FuIGZhaWx1cmVzIGFyZSBuZXZlciByZXRyaWVkLlxuICAgIGludGVybWVkaWF0ZT86IHN0cmluZztcbiAgICAvLyBUaGUgcm91dGluZy1jb25maWcgZW50cnkgdGhpcyBzb3VyY2Ugd2FzIGJ1aWx0IGZyb20gKGFic2VudCBmb3IgdGhlIGJhc2UgZGlzayBzb3VyY2UpLiBJdHMgYHR5cGVgIGRlY2lkZXMgZmFzdC13cml0ZSBmbHVzaCB0aW1pbmc6IHR5cGUtXCJyZW1vdGVcIiBkb3duc3RyZWFtIHNvdXJjZXMgKG91ciBvd24gc3RvcmFnZSBzZXJ2ZXJzKSBmbHVzaCBxdWlja2x5IChjaGVhcCwgYW5kIHdlIHdhbnQgY3Jvc3Mtbm9kZSByZWR1bmRhbmN5IGZhc3QpLCB3aGlsZSBvdGhlcnMgKGUuZy4gYmFja2JsYXplKSBrZWVwIHRoZSBmdWxsIHdyaXRlRGVsYXkgc28gZXhwZW5zaXZlIGV4dGVybmFsIHdyaXRlcyBzdGF5IGNvYWxlc2NlZC4gVGhlIHdpbmRvdy9yb3V0ZSBPTiB0aGlzIGNvbmZpZyBhcmUgdGhlIFNPVVJDRSdzIG93bjsgQXJjaGl2ZXNTb3VyY2UudmFsaWRXaW5kb3cvcm91dGUgYXJlIHdoYXQgdGhlIG93bmluZyBzdG9yZSBhY3R1YWxseSB1c2VzIChyb3V0ZSBpcyBpbnRlcnNlY3RlZCB3aXRoIHRoZSBzdG9yZSdzIHJvdXRlKS5cbiAgICBzb3VyY2VDb25maWc/OiBTb3VyY2VDb25maWc7XG4gICAgLy8gU3RhYmxlIGlkZW50aXR5IG9mIHRoZSB1bmRlcmx5aW5nIGVuZHBvaW50IChpdHMgY29uZmlnIHdpdGggd2luZG93cy9yb3V0ZXMgc3RyaXBwZWQpIC0gaG93IEJsb2JTdG9yZS51cGRhdGVTb3VyY2VzIHJlY29nbml6ZXMgYSBzb3VyY2UgYWNyb3NzIGNvbmZpZyBjaGFuZ2VzIHNvIGl0IGNhbiB1cGRhdGUgaXQgaW4gcGxhY2UgaW5zdGVhZCBvZiByZW1vdmluZyBhbmQgcmUtYWRkaW5nIGl0XG4gICAgaWRlbnRpdHk/OiBzdHJpbmc7XG59O1xuXG4vLyBFcnJvciBtYXJrZXIgYSBzZXJ2ZXIgaW5jbHVkZXMgd2hlbiBhIGZyZXNobHktc3RhbXBlZCB3cml0ZSByZWFjaGVzIGl0IG91dHNpZGUgaXRzIHZhbGlkIHdpbmRvd3MgKHRoZSBjbGllbnQgcmVzb2x2ZWQgaXRzIHRhcmdldCwgdGhlbiB0aW1lIGNyb3NzZWQgYSB3aW5kb3cgYm91bmRhcnkgYmVmb3JlIHRoZSB3cml0ZSBsYW5kZWQpLiBDbGllbnRzIGRldGVjdCB0aGlzIG1hcmtlciBhbmQgcmUtcmVzb2x2ZSB0aGUgY3VycmVudGx5LXZhbGlkIHNvdXJjZSwgcmV0cnlpbmcgT05DRSAtIGJvdW5kYXJpZXMgYXJlIGZhciBhcGFydCwgc28gaGl0dGluZyBpdCB0d2ljZSBpbiBvbmUgYXR0ZW1wdCBtZWFucyBzb21ldGhpbmcgaXMgYWN0dWFsbHkgd3JvbmcuXG5leHBvcnQgY29uc3QgU1RPUkFHRV9XUk9OR19WQUxJRF9XSU5ET1cgPSBcIlJFTU9URV9TVE9SQUdFX1dST05HX1ZBTElEX1dJTkRPV19hN2MxZjA0ZVwiO1xuXG4vLyBFcnJvciBtYXJrZXIgYSBzZXJ2ZXIgaW5jbHVkZXMgd2hlbiBhIGZyZXNobHktc3RhbXBlZCB3cml0ZSdzIGtleSByb3V0ZXMgb3V0c2lkZSB0aGUgc2hhcmRzIHRoaXMgc2VydmVyIGhhbmRsZXMgKHRoZSBjbGllbnQncyBjb25maWcgZGlzYWdyZWVzIHdpdGggdGhlIHNlcnZlcidzIC0gY2xpZW50cyByZS1yZXNvbHZlIG9uY2UpXG5leHBvcnQgY29uc3QgU1RPUkFHRV9XUk9OR19ST1VURSA9IFwiUkVNT1RFX1NUT1JBR0VfV1JPTkdfUk9VVEVfYzk0ZDJlMTdcIjtcblxuLy8gRXJyb3IgbWFya2VyIGEgc2VydmVyIGluY2x1ZGVzIHdoZW4gYSB3cml0ZSByZWFjaGVzIGEgc3RvcmUgd2hvc2Ugb3duIHJvdXRpbmcgY29uZmlnIGhhcyBOTyBlbnRyeSBmb3IgaXQgb24gdGhhdCBzZXJ2ZXIgKG9yIHRoYXQgaGFzIG5vIHJvdXRpbmcgY29uZmlnIGF0IGFsbCkgLSBhY2NlcHRpbmcgdGhlIHdyaXRlIHdvdWxkIHN0b3JlIGRhdGEgbm90aGluZyBzY2FucyBvciByZWNvbmNpbGVzLiBDbGllbnRzIHJlLXJlc29sdmUgb25jZSwgZXhhY3RseSBsaWtlIHRoZSBtYXJrZXJzIGFib3ZlOiB0aGUgdXN1YWwgY2F1c2UgaXMgdGhlIGNsaWVudCBydW5uaW5nIGEgZGlmZmVyZW50IGNvbmZpZyB0aGFuIHRoZSBzdG9yZS5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX05PVF9DT05GSUdVUkVEID0gXCJSRU1PVEVfU1RPUkFHRV9OT1RfQ09ORklHVVJFRF9lNTFiN2Q5MlwiO1xuXG5leHBvcnQgY29uc3QgRlVMTF9ST1VURTogW251bWJlciwgbnVtYmVyXSA9IFswLCAxXTtcblxuLy8gQSBrZXkgY29udGFpbmluZyB0aGlzIHNlbnRpbmVsIGRvZXNuJ3QgaGF2ZSBhIGZpeGVkIHNoYXJkOiBzZXRWYXJpYWJsZVNoYXJkIHBpY2tzIHRoZSAobG93ZXN0IGxhdGVuY3ksIHVwKSB3cml0ZSBzaGFyZCwgYXBwZW5kcyBcIl88dmFsdWUgaW4gdGhlIHNoYXJkJ3Mgcm91dGU+XCIgZGlyZWN0bHkgYWZ0ZXIgdGhlIHNlbnRpbmVsLCBhbmQgcmV0dXJucyB0aGUgbWF0ZXJpYWxpemVkIGtleS4gZ2V0Um91dGUgdHJlYXRzIHRoYXQgc3VmZml4IGFzIGEgY29tcGxldGUgcm91dGUgb3ZlcnJpZGUuXG5leHBvcnQgY29uc3QgVkFSSUFCTEVfU0hBUkQgPSBcIlZBUklBQkxFX1NIQVJEX2YwMjM0amZhaDA4Zmd5aGZneXNzZGRzODNubXBcIjtcbi8vIE5vIGdyYWNlIHBhc3QgdGhlIGVuZDogYSB3aW5kb3cgYm91bmRhcnkgaXMgYSBoYXJkIGhhbmRvZmYgKGNsaWVudHMgcmV0cnkgYSByZWplY3RlZCB3cml0ZSBhZ2FpbnN0IHRoZSBuZXdseS12YWxpZCBzb3VyY2UsIHNvIGxlbmllbmN5IGhlcmUgd291bGQgb25seSBkZXN5bmNocm9uaXplIHRoZSBoYW5kb2ZmKVxuLy8gIC0gV3JpdGluZyB0byBvbGRlciB2YWxpZCBzdGF0ZSB3aW5kb3dzIGlzIGZpbmUsIHRob3VnaC4gV2UgbmVlZCB0aGlzIHRvIGluZ2VzdCB0aGUgb2xkIGRhdGEgd2hlbiB3ZSdyZSBzeW5jaHJvbml6aW5nIG5vZGVzIHRvIGdldCB0aGVtIHVwIHRvIGRhdGUgYW55d2F5LiBcbmV4cG9ydCBmdW5jdGlvbiB3aW5kb3dBY2NlcHRzV3JpdGVzKHZhbGlkV2luZG93OiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWxpZFdpbmRvdykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHZhbGlkV2luZG93WzFdID4gRGF0ZS5ub3coKTtcbn1cbi8vIEEgc291cmNlICh3aGljaCBjYW4gaG9sZCBzZXZlcmFsIHdpbmRvd3MpIGFjY2VwdHMgd3JpdGVzIHdoaWxlIEFOWSBvZiBpdHMgd2luZG93cyBpcyBzdGlsbCBvcGVuLiBObyB3aW5kb3dzID0gdGhlIGJhc2UgZGlzayBvZiBhbiBpbmVydCBzdG9yZSAobm90IGluIHRoZSBjb25maWcpLCB3aGljaCBuZXZlciByZWNlaXZlcyBmYW4tb3V0IHdyaXRlcyBhbnl3YXkuXG5leHBvcnQgZnVuY3Rpb24gd2luZG93c0FjY2VwdFdyaXRlcyh2YWxpZFdpbmRvd3M6IFtudW1iZXIsIG51bWJlcl1bXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWxpZFdpbmRvd3Muc29tZSh3aW5kb3dBY2NlcHRzV3JpdGVzKTtcbn1cblxuLy8gQWJvdmUgdGhpcywgc2V0IHRyYW5zcGFyZW50bHkgc3RyZWFtcyB0aHJvdWdoIHNldExhcmdlRmlsZTogb25lIGdpYW50IHdpcmUgbWVzc2FnZSB3b3VsZCBleGNlZWQgdGhlIHRyYW5zcG9ydCBsaW1pdCBhbmQgbGFnIGV2ZXJ5IG90aGVyIGNsaWVudCBzaGFyaW5nIHRoZSBjb25uZWN0aW9uXG5leHBvcnQgY29uc3QgTEFSR0VfU0VUX1RIUkVTSE9MRCA9IDggKiAxMDI0ICogMTAyNDtcblxuLyoqIFRoZSBzZXRMYXJnZUZpbGUgc3RyZWFtIG92ZXIgYW4gaW4tbWVtb3J5IGJ1ZmZlciwgaW4gTEFSR0VfU0VUX1RIUkVTSE9MRCBzbGljZXMgLSBob3cgc2V0IHRyYW5zcGFyZW50bHkgYmVjb21lcyBzZXRMYXJnZUZpbGUgZm9yIGxhcmdlIGJ1ZmZlcnMuIFNwcmVhZCBpbnRvIHRoZSBjb25maWc6IGl0IHByb3ZpZGVzIGJvdGggZ2V0TmV4dERhdGEgYW5kIHJlc3RhcnRTdHJlYW0gKHRoZSBidWZmZXIgaXMgc3RpbGwgaGVsZCwgc28gYSByZXRyeSBjb3N0cyBub3RoaW5nKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJDaHVua1N0cmVhbShkYXRhOiBCdWZmZXIpOiB7IGdldE5leHREYXRhKCk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPjsgcmVzdGFydFN0cmVhbSgpOiB2b2lkIH0ge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldE5leHREYXRhOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ID49IGRhdGEubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGNodW5rID0gZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIExBUkdFX1NFVF9USFJFU0hPTEQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IGNodW5rLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBjaHVuaztcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdGFydFN0cmVhbTogKCkgPT4ge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG4vLyBSZS1leHBvcnRlZCBmb3IgdGhlIGV4aXN0aW5nIGltcG9ydGVycyAtIHRoZSBpbXBsZW1lbnRhdGlvbnMgKGFuZCBtb3ZlQXJjaGl2ZUZpbGUpIGxpdmUgaW4gYXJjaGl2ZUhlbHBlcnMudHMsIGJlc2lkZSB0aGlzIGludGVyZmFjZSByYXRoZXIgdGhhbiBpbiBpdFxuZXhwb3J0IHsgY29weUFyY2hpdmVGaWxlIH0gZnJvbSBcIi4vYXJjaGl2ZUhlbHBlcnNcIjtcblxuLyoqIG1vdmUncyBjb25maWcuIFRoZXJlIGlzIGRlbGliZXJhdGVseSBubyBsYXN0TW9kaWZpZWQ6IHRoZSBkZXN0aW5hdGlvbiBpcyBBTFdBWVMgc3RhbXBlZCBmcmVzaCAoc2VlIElBcmNoaXZlcy5tb3ZlKSAtIGEgbW92ZSBpcyBhIG5ldyB3cml0ZSBhdCB0aGUgbmV3IHBhdGgsIGFuZCBhIHByZXNlcnZlZCBvbGQgc3RhbXAgaXMgaG93IGEgbW92ZWQgZmlsZSBsb3NlcyB0byBhIHN0YWxlIHRvbWJzdG9uZSB0aGVyZSBhbmQgdmFuaXNoZXMuICovXG5leHBvcnQgdHlwZSBNb3ZlRmlsZUNvbmZpZyA9IHtcbiAgICBmcm9tUGF0aDogc3RyaW5nO1xuICAgIHRvUGF0aDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXJjaGl2ZXNTeW5jU291cmNlU3RhdHVzID0ge1xuICAgIGRlYnVnTmFtZTogc3RyaW5nO1xuICAgIHZhbGlkV2luZG93czogW251bWJlciwgbnVtYmVyXVtdO1xuICAgIHJvdXRlPzogW251bWJlciwgbnVtYmVyXTtcbiAgICBub0Z1bGxTeW5jPzogYm9vbGVhbjtcbiAgICBzdXBwb3J0c0NoYW5nZXNBZnRlcjogYm9vbGVhbjtcbiAgICBpbml0aWFsU2NhbkNvbXBsZXRlOiBib29sZWFuO1xuICAgIC8vIEZpbGVzIHNlZW4gaW4gdGhpcyBzb3VyY2UncyBzY2FucyAvIGNoYW5nZSBwb2xscyBzbyBmYXJcbiAgICBzY2FubmVkQ291bnQ6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBBcmNoaXZlc1N5bmNTdGF0dXMgPSB7XG4gICAgYWxsU2NhbnNDb21wbGV0ZTogYm9vbGVhbjtcbiAgICAvLyBOdW1iZXIgb2YgZmlsZXMgaW4gdGhlIGluZGV4XG4gICAgaW5kZXhTaXplOiBudW1iZXI7XG4gICAgc291cmNlczogQXJjaGl2ZXNTeW5jU291cmNlU3RhdHVzW107XG59O1xuXG4vLyBOT1RFOiBXZSBkb24ndCBwcmVzZW50bHkgaGF2ZSBhbiBhcHBlbmQgZnVuY3Rpb24gaGVyZSBiZWNhdXNlIGEgc3VycHJpc2luZyBudW1iZXIgb2Ygc3RvcmFnZSBzeXN0ZW1zIGRvbid0IHN1cHBvcnQgaXQgKGJhY2tibGF6ZSwgZmlsZSBzeXN0ZW0gYXBpKS4gSXQgd291bGQgYWxzbyBjb21wbGljYXRlIHRoaW5ncyBhcyBub3cgdGhlcmUgbmVlZHMgdG8gYmUgcmVhbGx5IGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBvZiBhIGZpbGUsIGFuZCBpZiB5b3UgYXBwZW5kIHRvIHRoZSB3cm9uZyBzaW5nbGUgc291cmNlIG9mIHRydXRoLCB0aGluZ3MganVzdCBiZWNvbWUgdmVyeSBjb21wbGljYXRlZC4gXG5leHBvcnQgaW50ZXJmYWNlIElBcmNoaXZlcyB7XG4gICAgZ2V0RGVidWdOYW1lKCk6IHN0cmluZztcbiAgICAvKiogV2hldGhlciB3cml0ZXMgd291bGQgYmUgYWNjZXB0ZWQgKGNyZWRlbnRpYWxzIGV4aXN0LCB0aGUgYWNjb3VudCB0cnVzdHMgdGhpcyBtYWNoaW5lLCBldGMpLiBDaGVja2VkIHdpdGhvdXQgd3JpdGluZyBhbnl0aGluZy4gKi9cbiAgICBoYXNXcml0ZUFjY2VzcygpOiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIC8qKlxuICAgICAqIFJlYWRzIGF1dG9tYXRpY2FsbHkgZmFsbCBiYWNrIGFjcm9zcyB0aGUgcmVkdW5kYW50IHNvdXJjZXMgdW5sZXNzIGNvbmZpZy5ub0ZhbGxiYWNrcyBpcyBzZXQuXG4gICAgICogQSBmYWxsYmFjayBjb3B5IGNhbiBsYWcgdGhlIHdyaXRlIHRhcmdldCwgc28gYSBjYWxsZXIgcmVhZGluZyBzdGF0ZSBpbiBvcmRlciB0byBtdXRhdGUgaXRcbiAgICAgKiAoZS5nLiB4KyspLCB3aGVyZSBhY3Rpbmcgb24gcHJldmlvdXMgc3RhdGUgd291bGQgY2F1c2UgYmlnIGlzc3Vlcywgc2hvdWxkIHBhc3Mgbm9GYWxsYmFja3MgLVxuICAgICAqIGFuZCB0cnkvY2F0Y2ggdGhlIHJlYWQsIGhhbmRsaW5nIHRoZSBjYXRjaCBjYXNlIChhIGRvd24gcHJpbWFyeSBpcyByZXRyaWVkIGZvciBhIHdoaWxlLCB0aGVuXG4gICAgICogdGhyb3dzIGluc3RlYWQgb2YgZGVncmFkaW5nIHRvIGEgc3RhbGUgY29weSkuXG4gICAgICovXG4gICAgZ2V0KGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldENvbmZpZyk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPjtcbiAgICAvKiogU2VlIGdldCBmb3IgdGhlIGZhbGxiYWNrIHNlbWFudGljcyAoYW5kIHdoZW4gdG8gcGFzcyBub0ZhbGxiYWNrcykuIHVybCBpcyB0aGUgY29uZmlnIFVSTCBvZiB0aGUgc291cmNlIHRoYXQgYW5zd2VyZWQgLSB0aGUgYXV0aG9yaXR5IHRoZSBkYXRhIChvciB0aGUgXCJkb2VzIG5vdCBleGlzdFwiKSBjYW1lIGZyb20uIE11bHRpLXNvdXJjZSBpbXBsZW1lbnRhdGlvbnMgKEFyY2hpdmVzQ2hhaW4pIEFMV0FZUyByZXR1cm4gYW4gb2JqZWN0OiB3aGVuIHRoZSB2YWx1ZSBkb2Vzbid0IGV4aXN0IHRoZXJlIGlzIHN0aWxsIGEgc2VydmVyIHNheWluZyBpdCBkb2Vzbid0IGV4aXN0LCBzbyB0aGV5IHJldHVybiB7IHVybCB9IGFsb25lIHJhdGhlciB0aGFuIHVuZGVmaW5lZC4gU2luZ2xlLXNvdXJjZSBiYWNrZW5kcyByZXR1cm4gdW5kZWZpbmVkIGZvciBhYnNlbnQgKHRoZXkgQVJFIHRoZSBhdXRob3JpdHkpLiAqL1xuICAgIGdldDIoZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0Q29uZmlnKTogUHJvbWlzZTx7IGRhdGE6IEJ1ZmZlcjsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlcjsgdXJsPzogc3RyaW5nIH0gfCB7IGRhdGE/OiB1bmRlZmluZWQ7IHdyaXRlVGltZT86IHVuZGVmaW5lZDsgc2l6ZT86IHVuZGVmaW5lZDsgdXJsOiBzdHJpbmcgfSB8IHVuZGVmaW5lZD47XG4gICAgLyoqXG4gICAgICogbGFzdE1vZGlmaWVkIHN0YW1wcyB0aGUgd3JpdGUgd2l0aCB0aGF0IGxhc3Qtd3JpdGUgdGltZSBpbnN0ZWFkIG9mIG5vdy4gSWYgaXQgaXMgT0xERVIgdGhhblxuICAgICAqIHRoZSBmaWxlJ3MgY3VycmVudCBsYXN0LXdyaXRlIHRpbWUgdGhlIHdyaXRlIG5vLW9wcyAoc28gZGVsYXllZCAvIHN5bmNocm9uaXplZCB3cml0ZXMgY2FuXG4gICAgICogbmV2ZXIgY2xvYmJlciBuZXdlciBkYXRhKS4gVGltZXMgbW9yZSB0aGFuIDE1IG1pbnV0ZXMgaW4gdGhlIGZ1dHVyZSBhcmUgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBmdWxsIGtleSBhY3R1YWxseSB3cml0dGVuIC0gaWRlbnRpY2FsIHRvIGZpbGVOYW1lLCBFWENFUFQgZm9yIGtleXMgY29udGFpbmluZ1xuICAgICAqIFZBUklBQkxFX1NIQVJELCB3aGVyZSB0aGUgc2hhcmQgdmFsdWUgaXMgbWF0ZXJpYWxpemVkIGludG8gdGhlIGtleSAocGlja2VkIGJ5IHNoYXJkIGxhdGVuY3ksXG4gICAgICogc2VlIEFyY2hpdmVzQ2hhaW4pIGFuZCB0aGUgY2FsbGVyIG5lZWRzIHRoZSByZXR1cm5lZCBrZXkgdG8gZXZlciByZWFkIHRoZSB2YWx1ZSBiYWNrLlxuICAgICAqL1xuICAgIC8qKlxuICAgICAqIFRIUk9XUyBvbiBhbiBlbXB0eSBidWZmZXI6IGFuIGVtcHR5IGZpbGUgSVMgYSBkZWxldGlvbiBpbiB0aGlzIHN5c3RlbSAodGhlIHRvbWJzdG9uZSksIHNvIGFcbiAgICAgKiBzZXQtZW1wdHkgd291bGQgcmVhZCBiYWNrIGFzIFwidGhlIGZpbGUgaXMgZ29uZVwiIC0gd2hpY2ggaXMganVzdCBhc2tpbmcgZm9yIHByb2JsZW1zLiBJZiB5b3VcbiAgICAgKiB3YW50IHRoZSBmaWxlIGRlbGV0ZWQsIGNhbGwgZGVsOyBkZWxldGlvbnMgdGFrZSB0aGVpciBvd24gcGF0aC5cbiAgICAgKi9cbiAgICBzZXQoZmlsZU5hbWU6IHN0cmluZywgZGF0YTogQnVmZmVyLCBjb25maWc/OiBTZXRDb25maWcpOiBQcm9taXNlPHN0cmluZz47XG4gICAgZGVsKGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IERlbENvbmZpZyk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIE1vdmVzIGEgZmlsZSB0byBhIG5ldyBwYXRoIHdpdGhpbiBUSElTIGFyY2hpdmVzLCBiYWNrZW5kLXNpZGUgd2hlcmUgdGhlIGJhY2tlbmQgY2FuIChiYWNrYmxhemUgY29waWVzIHNlcnZlci1zaWRlLCBkaXNrIHJlbmFtZXMsIHRoZSBzdG9yYWdlIHNlcnZlciByZWxvY2F0ZXMgbm9kZS1zaWRlKSAtIHRoZSBieXRlcyBuZXZlciB0cmF2ZWwgdGhyb3VnaCB0aGUgY2FsbGVyLiBUaGUgZGVzdGluYXRpb24gaXMgc3RhbXBlZCB3aXRoIGEgRlJFU0ggd3JpdGUgdGltZSwgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGlvbiAoYSByZW5hbWUpIHdvdWxkIHByZXNlcnZlIHRoZSBvbGQgb25lLCBzbyB0aGUgbW92ZWQgZmlsZSBjYW5ub3QgaW1tZWRpYXRlbHkgbG9zZSB0byBzb21ldGhpbmcgbmV3ZXIgc2l0dGluZyBhdCBpdHMgbmV3IHBhdGggKGUuZy4gdGhlIHRvbWJzdG9uZSBvZiBhbiBlYXJsaWVyIGRlbGV0aW9uIHRoZXJlKTsgdGhlIHNvdXJjZSBpcyB0aGVuIGRlbGV0ZWQsIGV4YWN0bHkgbGlrZSBkZWwuIFRIUk9XUyB3aGVuIHRoZSBzb3VyY2UgZmlsZSBkb2VzIG5vdCBleGlzdC4gT3B0aW9uYWwgLSBjYWxsZXJzIGdvIHRocm91Z2ggbW92ZUFyY2hpdmVGaWxlIChhcmNoaXZlSGVscGVycy50cyksIHdoaWNoIGZhbGxzIGJhY2sgdG8gY29weSArIGNvbmZpcm0gKyBkZWxldGUuICovXG4gICAgbW92ZT8oY29uZmlnOiBNb3ZlRmlsZUNvbmZpZyk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIFN0cmVhbXMgYSBmaWxlIHRvbyBsYXJnZSB0byBob2xkIGluIG1lbW9yeS4gZ2V0TmV4dERhdGEgcmV0dXJucyB1bmRlZmluZWQgd2hlbiBkb25lLiBUaGlzIG9ubHkgbmVlZHMgdG8gYmUgY2FsbGVkIHdoZW4geW91IENBTk5PVCBtYXRlcmlhbGl6ZSB0aGUgZW50aXJlIGZpbGUgaW4gbWVtb3J5IC0gaWYgeW91IGNhbiwganVzdCBjYWxsIHNldDogYWJvdmUgTEFSR0VfU0VUX1RIUkVTSE9MRCBpdCBzdHJlYW1zIHRocm91Z2ggc2V0TGFyZ2VGaWxlIGludGVybmFsbHksIGtlZXBpbmcgdGhlIGNsaWVudCByZXNwb25zaXZlIGFuZCBub3Qgb3ZlcndoZWxtaW5nIHRoZSBzZXJ2ZXIuIFRoZSByZXN0IG9mIHRoZSBjb25maWcgaXMgYSBwbGFpbiBTZXRDb25maWcgYW5kIG1lYW5zIGV4YWN0bHkgd2hhdCBpdCBtZWFucyBvbiBzZXQgKHRoYXQgaXMgd2hhdCBtYWtlcyBhIGxhcmdlIHNldCBiZWhhdmUgbGlrZSBhIHNtYWxsIG9uZSBpbnN0ZWFkIG9mIHF1aWV0bHkgbG9zaW5nIGltbXV0YWJpbGl0eSwgb3JkZXJpbmcsIGludGVybmFsLCBvciBmYWxsYmFja3Mgc2VtYW50aWNzIGFzIHRoZSBmaWxlIGNyb3NzZXMgdGhlIHRocmVzaG9sZCk7IGJhY2tlbmRzIHRoYXQgc3RhbXAgdGhlaXIgb3duIHRpbWVzIChiYWNrYmxhemUpIGFjY2VwdCBhbmQgaWdub3JlIGxhc3RNb2RpZmllZC4gVEhST1dTIHdoZW4gdGhlIHN0cmVhbSBwcm9kdWNlcyBubyBkYXRhIGF0IGFsbCAtIHNhbWUgcnVsZSBhcyBzZXQ6IGFuIGVtcHR5IGZpbGUgSVMgYSBkZWxldGlvbiBhbmQgd291bGQgcmVhZCBiYWNrIGFzIG1pc3NpbmcuICovXG4gICAgc2V0TGFyZ2VGaWxlKGNvbmZpZzogU2V0TGFyZ2VGaWxlQ29uZmlnKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogd3JpdGVUaW1lIGlzIHRoZSBsYXN0LXdyaXRlIHRpbWUg4oCUIHNlZSBBcmNoaXZlRmlsZUluZm8uY3JlYXRlVGltZSwgd2hpY2ggaXMgdGhlIHNhbWUgdmFsdWUuIHVybCBhcyBpbiBnZXQyLiBTaXplLTAgZW50cmllcyAodG9tYnN0b25lcykgcmVwb3J0IHVuZGVmaW5lZCB1bmxlc3MgY29uZmlnLmluY2x1ZGVUb21ic3RvbmVzLiAqL1xuICAgIGdldEluZm8oZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0SW5mb0NvbmZpZyk6IFByb21pc2U8eyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyOyB1cmw/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD47XG4gICAgLyoqXG4gICAgICogRW1wdHkgKHNpemUtMCkgZmlsZXMgYXJlIE5FVkVSIHJldHVybmVkIGJ5IGluZGV4LWJhY2tlZCBzdG9yZXMgKEJsb2JTdG9yZSwgYW5kIHRoZXJlZm9yZSB0aGVcbiAgICAgKiBjaGFpbik6IGFuIGVtcHR5IGZpbGUgSVMgYSBtaXNzaW5nIGZpbGUgLSB0aGUgdG9tYnN0b25lIG9mIGEgZGVsZXRpb24uIElmIHlvdSB3YW50IGEgbWFya2VyXG4gICAgICogZmlsZSB0aGF0IHNob3dzIHVwIGluIGxpc3RpbmdzLCBhZGQgc29tZSBjb250ZW50IHRvIGl0LiBSYXcgc291cmNlcyAoZGlzaywgYmFja2JsYXplKSBETyBsaXN0XG4gICAgICogdGhlaXIgZW1wdHkgZmlsZXMgLSB0aGF0IGlzIGhvdyBzY2FucyBsZWFybiBvZiBkZWxldGlvbnMgLSBidXQgbm90aGluZyBidWlsdCBvbiB0aGUgaW5kZXhcbiAgICAgKiBldmVyIHN1cmZhY2VzIHRoZW0uXG4gICAgICovXG4gICAgZmluZChwcmVmaXg6IHN0cmluZywgY29uZmlnPzogRmluZENvbmZpZyk6IFByb21pc2U8c3RyaW5nW10+O1xuICAgIC8qKiBTZWUgZmluZCBmb3IgdGhlIGVtcHR5LWZpbGUgKHRvbWJzdG9uZSkgcnVsZS4gKi9cbiAgICBmaW5kSW5mbyhwcmVmaXg6IHN0cmluZywgY29uZmlnPzogRmluZENvbmZpZyk6IFByb21pc2U8QXJjaGl2ZUZpbGVJbmZvW10+O1xuICAgIC8qKiBPbmx5IHdvcmtzIGZvciBwdWJsaWMgYnVja2V0cyAocHJpdmF0ZSBidWNrZXRzIGFyZSBBUEktYWNjZXNzIG9ubHkpLiAqL1xuICAgIGdldFVSTChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XG4gICAgLyoqIFRoZSBidWNrZXQncyBjb25maWd1cmF0aW9uLCB3aGljaCB0ZWxscyB3aGV0aGVyIHRoZSBvcHRpb25hbCBmdW5jdGlvbnMgYXJlIHN1cHBvcnRlZC4gKi9cbiAgICBnZXRDb25maWcoKTogUHJvbWlzZTxBcmNoaXZlc0NvbmZpZz47XG4gICAgLyoqXG4gICAgICogQWxsIGZpbGVzIGNoYW5nZWQgYWZ0ZXIgY29uZmlnLnRpbWUsIG9wdGlvbmFsbHkgcmVzdHJpY3RlZCB0byBrZXlzIHJvdXRpbmcgaW50byBvbmUgb2ZcbiAgICAgKiBjb25maWcucm91dGVzICh1c2VkIGJ5IHNjYW5uaW5nLCBzbyBwYXJ0aWFsbHktb3ZlcmxhcHBpbmcgc2hhcmRzIG9ubHkgcmVjZWl2ZSB0aGVpciBzbGljZSkuXG4gICAgICogV2hlbiBnZXRDb25maWcoKS5zdXBwb3J0c0NoYW5nZXNBZnRlciwgdGhpcyBpcyBiYWNrZWQgYnkgYW4gaW5kZXggKGZhc3QsIGFuZCBkZWxldGlvbnMgQVJFXG4gICAgICogcmVwb3J0ZWQsIGFzIHNpemUtMCB0b21ic3RvbmUgZW50cmllcykuIEV2ZXJ5IG90aGVyIGJhY2tlbmQgZW11bGF0ZXMgaXQ6IGEgZnVsbCBmaW5kSW5mb1xuICAgICAqIGxpc3RpbmcgZmlsdGVyZWQgaW4gbWVtb3J5IC0gY29ycmVjdCwgYnV0IG5vIGNoZWFwZXIgdGhhbiB0aGUgbGlzdGluZyBpdHNlbGYuXG4gICAgICovXG4gICAgZ2V0Q2hhbmdlc0FmdGVyMihjb25maWc6IENoYW5nZXNBZnRlckNvbmZpZyk6IFByb21pc2U8QXJjaGl2ZUZpbGVJbmZvW10+O1xuICAgIC8qKiBTeW5jaHJvbml6YXRpb24gaW50cm9zcGVjdGlvbiwgZm9yIGJhY2tlbmRzIHRoYXQgc3luY2hyb25pemUgZnJvbSBzb3VyY2VzIChzZWUgQmxvYlN0b3JlKS4gKi9cbiAgICBnZXRTeW5jU3RhdHVzPygpOiBQcm9taXNlPEFyY2hpdmVzU3luY1N0YXR1cz47XG59XG4iXX0=
62
- /* _JS_SOURCE_HASH = "0cd5644cc5e59eff06528b0bd0e9f9ac1f827b1575ff09d2c2bd160182fcb796"; */
62
+ /* _JS_SOURCE_HASH = "beba44f0830b1c08d51eb32675e8598daa4d624582802d2c6698dcf25c4a3d76"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.getFileStorageIndexDB = void 0;
4
4
  const caching_1 = require("socket-function/src/caching");
@@ -145,4 +145,4 @@ exports.getFileStorageIndexDB = (0, caching_1.lazy)(async () => {
145
145
  return new VirtualFileStorage(db, "/");
146
146
  });
147
147
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5kZXhlZERCRmlsZUZvbGRlckFQSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkluZGV4ZWREQkZpbGVGb2xkZXJBUEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQW1EO0FBSW5ELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUM5QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBT3JCLE1BQU0sa0JBQWtCO0lBR3BCLFlBQ0ksRUFBZSxFQUNDLEVBQVU7UUFBVixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBOEc5QixtQ0FBbUM7UUFDbkMsV0FBTSxHQUFHO1lBQ0wsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFXLEVBQW9CLEVBQUU7Z0JBQzVDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUVELFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBVyxFQUF3QixFQUFFO2dCQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ3BDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFFRCxhQUFhLEVBQUUsS0FBSyxFQUFFLEdBQVcsRUFBaUIsRUFBRTtnQkFDaEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBRUQsT0FBTyxFQUFFLEtBQUssSUFBdUIsRUFBRTtnQkFDbkMsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO2dCQUNuQyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7d0JBQUUsU0FBUztvQkFDakMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDM0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsQ0FBQztTQUNKLENBQUM7UUF4SUUsSUFBSSxDQUFDLEVBQUU7WUFBRSxRQUFRLENBQUM7UUFDbEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUEyQixVQUFVO1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxPQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLE9BQU8sQ0FBSSxPQUFzQjtRQUNyQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0QsNkJBQTZCO0lBQzdCLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNqQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUF5QixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLFNBQVMsR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxDQUFDO1FBQzdCLElBQUksU0FBUztZQUFFLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxNQUFzQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNsQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQXlCLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVqRixNQUFNLFNBQVMsR0FBZTtZQUMxQixJQUFJLEVBQUUsUUFBUTtnQkFDVixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxLQUFLO1lBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7U0FDM0IsQ0FBQztRQUVGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQWU7WUFDdkIsSUFBSSxFQUFFLEtBQUs7WUFDWCxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtTQUMzQixDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFXO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBYztRQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFeEUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV4QyxPQUFPLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQzlCLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1QsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQWEsQ0FBQztvQkFDbEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbEIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixDQUFDO1lBQ0wsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDVCxJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVztRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUF5QixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwRixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRTlCLE9BQU87WUFDSCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ3hCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtTQUNwQyxDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1AsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0NBK0JKO0FBRVksUUFBQSxxQkFBcUIsR0FBRyxJQUFBLGNBQUksRUFBQyxLQUFLLElBQTBCLEVBQUU7SUFDdkUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUMxRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVwRCxPQUFPLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxELE9BQU8sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQyxNQUFNLEVBQUUsR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxNQUFNLENBQUM7WUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXp5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgSVN0b3JhZ2VSYXcgfSBmcm9tIFwiLi9JU3RvcmFnZVwiO1xuaW1wb3J0IHsgRmlsZVN0b3JhZ2UgfSBmcm9tIFwiLi9GaWxlRm9sZGVyQVBJXCI7XG5cbmNvbnN0IERCX05BTUUgPSBcIkZpbGVTdG9yYWdlXCI7XG5jb25zdCBTVE9SRV9OQU1FID0gXCJmaWxlc1wiO1xuY29uc3QgREJfVkVSU0lPTiA9IDE7XG5cbmludGVyZmFjZSBGaWxlUmVjb3JkIHtcbiAgICBkYXRhOiBCdWZmZXI7XG4gICAgbGFzdE1vZGlmaWVkOiBudW1iZXI7XG59XG5cbmNsYXNzIFZpcnR1YWxGaWxlU3RvcmFnZSBpbXBsZW1lbnRzIEZpbGVTdG9yYWdlIHtcbiAgICBwcml2YXRlIGRiOiBJREJEYXRhYmFzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBkYjogSURCRGF0YWJhc2UsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGlmICghZGIpIGRlYnVnZ2VyO1xuICAgICAgICB0aGlzLmRiID0gZGI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdG9yZShtb2RlOiBJREJUcmFuc2FjdGlvbk1vZGUgPSBcInJlYWRvbmx5XCIpIHtcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRiLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsIG1vZGUpO1xuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXF1ZXN0PFQ+KHJlcXVlc3Q6IElEQlJlcXVlc3Q8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCk7XG4gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgLy8gSVN0b3JhZ2VSYXcgaW1wbGVtZW50YXRpb25cbiAgICBhc3luYyBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0U3RvcmUoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PEZpbGVSZWNvcmQgfCB1bmRlZmluZWQ+KHN0b3JlLmdldCh0aGlzLmlkICsga2V5KSk7XG4gICAgICAgIGxldCBiYWRCdWZmZXIgPSByZXN1bHQ/LmRhdGE7XG4gICAgICAgIGlmIChiYWRCdWZmZXIpIGJhZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhZEJ1ZmZlcik7XG4gICAgICAgIHJldHVybiBiYWRCdWZmZXI7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UmFuZ2Uoa2V5OiBzdHJpbmcsIGNvbmZpZzogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9KTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZlciA9IGF3YWl0IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghZnVsbEJ1ZmZlcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmZXIuc3ViYXJyYXkoY29uZmlnLnN0YXJ0LCBjb25maWcuZW5kKTtcbiAgICB9XG5cbiAgICBhc3luYyBhcHBlbmQoa2V5OiBzdHJpbmcsIHZhbHVlOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKFwicmVhZHdyaXRlXCIpO1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHRoaXMuaWQgKyBrZXk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXF1ZXN0PEZpbGVSZWNvcmQgfCB1bmRlZmluZWQ+KHN0b3JlLmdldChmdWxsUGF0aCkpO1xuXG4gICAgICAgIGNvbnN0IG5ld1JlY29yZDogRmlsZVJlY29yZCA9IHtcbiAgICAgICAgICAgIGRhdGE6IGV4aXN0aW5nXG4gICAgICAgICAgICAgICAgPyBCdWZmZXIuY29uY2F0KFtleGlzdGluZy5kYXRhLCB2YWx1ZV0pXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKVxuICAgICAgICB9O1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdChzdG9yZS5wdXQobmV3UmVjb3JkLCBmdWxsUGF0aCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0U3RvcmUoXCJyZWFkd3JpdGVcIik7XG4gICAgICAgIGNvbnN0IHJlY29yZDogRmlsZVJlY29yZCA9IHtcbiAgICAgICAgICAgIGRhdGE6IHZhbHVlLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdChzdG9yZS5wdXQocmVjb3JkLCB0aGlzLmlkICsga2V5KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVtb3ZlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShcInJlYWR3cml0ZVwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXF1ZXN0KHN0b3JlLmRlbGV0ZSh0aGlzLmlkICsga2V5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRLZXlzV2l0aFByZWZpeChwcmVmaXg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKCk7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQocHJlZml4LCBwcmVmaXggKyBcIlxcdWZmZmZcIiwgZmFsc2UsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IocmFuZ2UpO1xuXG4gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdLZXkgPSBjdXJzb3Iua2V5IGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgbmV3S2V5ID0gbmV3S2V5LnNsaWNlKHRoaXMuaWQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKG5ld0tleSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGxldCBrZXlzID0gYXdhaXQgdGhpcy5nZXRLZXlzV2l0aFByZWZpeCh0aGlzLmlkKTtcbiAgICAgICAgcmV0dXJuIGtleXMuZmlsdGVyKHggPT4gIXguaW5jbHVkZXMoXCIvXCIpKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKTogUHJvbWlzZTx7IHNpemU6IG51bWJlcjsgbGFzdE1vZGlmaWVkOiBudW1iZXI7IH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDxGaWxlUmVjb3JkIHwgdW5kZWZpbmVkPihzdG9yZS5nZXQodGhpcy5pZCArIGtleSkpO1xuXG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaXplOiByZXN1bHQuZGF0YS5sZW5ndGgsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IHJlc3VsdC5sYXN0TW9kaWZpZWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGtleXMgPSBhd2FpdCB0aGlzLmdldEtleXNXaXRoUHJlZml4KHRoaXMuaWQpO1xuICAgICAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lc3RlZEZpbGVTdG9yYWdlIGltcGxlbWVudGF0aW9uXG4gICAgZm9sZGVyID0ge1xuICAgICAgICBoYXNLZXk6IGFzeW5jIChrZXk6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9sZGVyUGF0aCA9IHRoaXMuaWQgKyBrZXkgKyBcIi9cIjtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBhd2FpdCB0aGlzLmdldEtleXNXaXRoUHJlZml4KGZvbGRlclBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoID4gMDtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRTdG9yYWdlOiBhc3luYyAoa2V5OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoID0gdGhpcy5pZCArIGtleSArIFwiL1wiO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsRmlsZVN0b3JhZ2UodGhpcy5kYiwgbmV3UGF0aCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlU3RvcmFnZTogYXN5bmMgKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBsZXQgbmVzdGVkID0gbmV3IFZpcnR1YWxGaWxlU3RvcmFnZSh0aGlzLmRiLCB0aGlzLmlkICsga2V5ICsgXCIvXCIpO1xuICAgICAgICAgICAgYXdhaXQgbmVzdGVkLnJlc2V0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0S2V5czogYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nW10+ID0+IHtcbiAgICAgICAgICAgIGxldCBrZXlzID0gYXdhaXQgdGhpcy5nZXRLZXlzV2l0aFByZWZpeCh0aGlzLmlkKTtcbiAgICAgICAgICAgIGxldCBmb2xkZXJLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgICAgIGlmICgha2V5LmluY2x1ZGVzKFwiL1wiKSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnRzID0ga2V5LnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgICAgICBmb2xkZXJLZXlzLmFkZChwYXJ0c1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShmb2xkZXJLZXlzKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlU3RvcmFnZUluZGV4REIgPSBsYXp5KGFzeW5jICgpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiA9PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBuZXcgUHJvbWlzZTxJREJEYXRhYmFzZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oREJfTkFNRSwgREJfVkVSU0lPTik7XG5cbiAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuXG4gICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYiA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xuICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFNUT1JFX05BTUUpKSB7XG4gICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFZpcnR1YWxGaWxlU3RvcmFnZShkYiwgXCIvXCIpO1xufSk7Il19
148
- /* _JS_SOURCE_HASH = "35575d7b40168300db97c6a012ddab111b6b1f19daab4bd2d621c420b88e500f"; */
148
+ /* _JS_SOURCE_HASH = "f375f0d5b5dc5c7a444768190f00b186c2e98df5aeb0fcd88db18e769960452a"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.JSONStorage = void 0;
4
4
  class JSONStorage {
@@ -39,4 +39,4 @@ class JSONStorage {
39
39
  }
40
40
  exports.JSONStorage = JSONStorage;
41
41
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTlN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJKU09OU3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLFdBQVc7SUFDcEIsWUFBb0IsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBSSxDQUFDO0lBQzNDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVztRQUN4QixJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsQ0FBQztJQUNMLENBQUM7SUFDTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFRO1FBQ2xDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNNLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVztRQUMzQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDTSxLQUFLLENBQUMsT0FBTztRQUNoQixPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBQ00sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQzVCLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR00sV0FBVyxDQUFDLFFBQW9COztRQUNuQyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sRUFBQyxXQUFXLG1EQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0o7QUFsQ0Qsa0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVN0b3JhZ2UgfSBmcm9tIFwiLi9JU3RvcmFnZVwiO1xuXG5leHBvcnQgY2xhc3MgSlNPTlN0b3JhZ2U8VD4gaW1wbGVtZW50cyBJU3RvcmFnZTxUPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlOiBJU3RvcmFnZTxCdWZmZXI+KSB7IH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBidWZmZXIgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KGtleSk7XG4gICAgICAgIGlmIChidWZmZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYnVmZmVyLnRvU3RyaW5nKCkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBwYXJzZSBKU09OIGZvciBrZXk6ICR7a2V5fWAsIGJ1ZmZlci50b1N0cmluZygpLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KGtleSwgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodmFsdWUpKSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZShrZXkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0S2V5cygpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mbyhrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zdG9yYWdlLmdldEluZm8oa2V5KTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyB3YXRjaFJlc3luYyhjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JhZ2Uud2F0Y2hSZXN5bmM/LihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVzZXQoKTtcbiAgICB9XG59Il19
42
- /* _JS_SOURCE_HASH = "f03428270acaeee0f8ce5c36431ab07129e822c838b99d45a1a085eb16bfaf86"; */
42
+ /* _JS_SOURCE_HASH = "7a9cf8297fe980da38910179b8b66f49e41f098183e7244868f5e4b41487096a"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -209,4 +209,4 @@ class LogMap {
209
209
  }
210
210
  exports.LogMap = LogMap;
211
211
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTG9nTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIseURBQW1EO0FBRW5ELG9iQUFvYjtBQUNwYixFQUFFO0FBQ0Ysb0tBQW9LO0FBRXBLLCtJQUErSTtBQUMvSSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFDeEIsOEZBQThGO0FBQzlGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQ2pDLHNMQUFzTDtBQUN0TCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFrQnhCLE1BQWEsTUFBTTtJQUNmLFlBQW9CLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFNUIsV0FBTSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQ3hDLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQUNsRCw0R0FBNEc7UUFDcEcsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFFL0IsZ0dBQWdHO1FBQ3hGLGVBQVUsR0FBa0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXRELDhGQUE4RjtRQUN2RixTQUFJLEdBQUcsSUFBQSxjQUFJLEVBQUMsS0FBSyxJQUFJLEVBQUU7WUFDMUIsSUFBSSxJQUFZLENBQUM7WUFDakIsSUFBSSxDQUFDO2dCQUNELElBQUksR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1QsSUFBSyxDQUF1QixDQUFDLElBQUksS0FBSyxRQUFRO29CQUFFLE9BQU87Z0JBQ3ZELE1BQU0sQ0FBQyxDQUFDO1lBQ1osQ0FBQztZQUNELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJ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bXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgbGF6eSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2NhY2hpbmdcIjtcblxuLy8gQSBwZXJzaXN0ZW50IE1hcCB0aGF0IGtub3dzIGFib3V0IHRpbWUgYW5kIGFib3V0IGRlbGV0aW9ucy4gRXZlcnkgdmFsdWUgY2FycmllcyB0aGUgdGltZSBpdCB3YXMgd3JpdHRlbiwgc28gYSB3cml0ZSB0aGF0IGFycml2ZXMgb3V0IG9mIG9yZGVyIGlzIHNpbXBseSBub3QgYXBwbGllZCAtIHRoZSBtYXAgY2Fubm90IGJlIG1hZGUgdG8gZ28gYmFja3dhcmRzLiBBIGRlbGV0ZWQga2V5IGtlZXBzIGl0cyB0aW1lIHRvbywgYXMgYSB0b21ic3RvbmUgaW4gYSBzZWNvbmQgbWFwLCBzbyBcIndhcyB0aGlzIGRlbGV0ZWQsIGFuZCB3aGVuXCIgaXMgYXMgY2hlYXAgdG8gYXNrIGFzIFwiZG9lcyB0aGlzIGV4aXN0XCIsIGFuZCBleHBpcmluZyBvbGQgdG9tYnN0b25lcyBpcyBhIHdhbGsgb2YgdGhlIHRvbWJzdG9uZXMgYWxvbmUgcmF0aGVyIHRoYW4gb2YgZXZlcnl0aGluZy5cbi8vXG4vLyBPbiBkaXNrIGl0IGlzIG9uZSBhcHBlbmQtb25seSBsb2cgb2YgdGhlIHNldHMsIGRlbGV0ZXMgYW5kIHB1cmdlcyB0aGF0IHByb2R1Y2VkIGJvdGggbWFwcywgcmV3cml0dGVuIGZyb20gdGhlbSB3aGVuZXZlciBpdCBoYXMgZ3Jvd24gdG8gc2V2ZXJhbCB0aW1lcyB0aGVpciBzaXplLlxuXG4vLyBUaGUgbG9nIGlzIHJld3JpdHRlbiBvbmNlIGl0IGhvbGRzIHRoaXMgbWFueSB0aW1lcyBtb3JlIHJlY29yZHMgdGhhbiB0aGVyZSBhcmUga2V5cyAoYSBsb2cgb2YgMyByZWNvcmRzIHBlciBzdXJ2aXZpbmcga2V5IGlzIG1vc3RseSBoaXN0b3J5KVxuY29uc3QgQ09NUEFDVF9SQVRJTyA9IDM7XG4vLyAuLi5idXQgbmV2ZXIgZm9yIGEgc21hbGwgbG9nLCB3aGVyZSB0aGUgcmV3cml0ZSB3b3VsZCBjb3N0IG1vcmUgdGhhbiB0aGUgaGlzdG9yeSBpdCByZW1vdmVzXG5jb25zdCBNSU5fQ09NUEFDVF9SRUNPUkRTID0gMTAwMDtcbi8vIEFwcGVuZHMgYXJlIGNvYWxlc2NlZCBmb3IgdGhpcyBsb25nLiBBIGNyYXNoIGxvc2VzIGF0IG1vc3QgdGhpcyBtdWNoIC0gdGhlIGNhbGxlcnMgb2YgdGhpcyBjbGFzcyB0cmVhdCB0aGVpciBkYXRhIGFzIHJlY29uc3RydWN0aWJsZSAtIGFuZCB0aGUgYWx0ZXJuYXRpdmUgaXMgYSBmaWxlIHdyaXRlIHBlciBzZXQuXG5jb25zdCBGTFVTSF9ERUxBWSA9IDUwMDtcblxuLyoqIEEgbGl2ZSB2YWx1ZTogd2hhdCB3YXMgc3RvcmVkLCB3aGVuIGl0IHdhcyB3cml0dGVuICh0aGUgY2FsbGVyJ3Mgb3JkZXJpbmcpLCBhbmQgd2hlbiB3ZSBsYXN0IGNoYW5nZWQgaXQgKG91cnMpLiAqL1xuZXhwb3J0IHR5cGUgTG9nRW50cnk8VD4gPSB7IHZhbHVlOiBUOyB0aW1lOiBudW1iZXI7IGNoYW5nZWRBdDogbnVtYmVyIH07XG4vKiogQSBkZWxldGVkIGtleTogd2hlbiBpdCB3YXMgZGVsZXRlZCwgYW5kIHdoZW4gd2UgbGVhcm5lZC4gVGhlIHZhbHVlIGlzIGdvbmU7IHRoZSB0aW1lIGlzIHRoZSBwb2ludCBvZiBhIHRvbWJzdG9uZS4gKi9cbmV4cG9ydCB0eXBlIExvZ1RvbWJzdG9uZSA9IHsgdGltZTogbnVtYmVyOyBjaGFuZ2VkQXQ6IG51bWJlciB9O1xuXG4vLyBPbmUgbGluZSBvZiB0aGUgbG9nLiBKU09OLnN0cmluZ2lmeSBlc2NhcGVzIG5ld2xpbmVzIGluc2lkZSBrZXlzIGFuZCB2YWx1ZXMsIHNvIGEgcmVjb3JkIGNhbiBuZXZlciBjb250YWluIHRoZSBzZXBhcmF0b3IuXG50eXBlIExvZ1JlY29yZDxUPiA9IHtcbiAgICBrOiBzdHJpbmc7XG4gICAgLy8gVGhlIGNhbGxlcidzIHRpbWUgZm9yIHRoaXMgY2hhbmdlIC0gd2hhdCBvcmRlcmluZyBpcyBkZWNpZGVkIGJ5XG4gICAgdDogbnVtYmVyO1xuICAgIC8vIEEgc2V0IGNhcnJpZXMgdGhlIHZhbHVlOyBhIGRlbGV0ZSBjYXJyaWVzIGQ7IGEgcHVyZ2UgY2FycmllcyBwIChmb3JnZXQgdGhlIGtleSBlbnRpcmVseSwgdG9tYnN0b25lIGluY2x1ZGVkKVxuICAgIHY/OiBUO1xuICAgIGQ/OiAxO1xuICAgIHA/OiAxO1xufTtcblxuZXhwb3J0IGNsYXNzIExvZ01hcDxUPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlUGF0aDogc3RyaW5nKSB7IH1cblxuICAgIHByaXZhdGUgdmFsdWVzID0gbmV3IE1hcDxzdHJpbmcsIExvZ0VudHJ5PFQ+PigpO1xuICAgIHByaXZhdGUgZGVsZXRlZCA9IG5ldyBNYXA8c3RyaW5nLCBMb2dUb21ic3RvbmU+KCk7XG4gICAgLy8gUmVjb3JkcyB0aGUgbG9nIGhvbGRzICh3cml0dGVuIHBsdXMgcGVuZGluZykgLSB3aGF0IGNvbXBhY3Rpb24gaXMgZGVjaWRlZCBhZ2FpbnN0LCBOT1QgdGhlIG51bWJlciBvZiBrZXlzXG4gICAgcHJpdmF0ZSBsb2dSZWNvcmRzID0gMDtcbiAgICBwcml2YXRlIHBlbmRpbmc6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBmbHVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgICAvLyBTZXJpYWxpemVzIGV2ZXJ5dGhpbmcgdGhhdCB0b3VjaGVzIHRoZSBmaWxlLCBzbyBhbiBhcHBlbmQgY2FuIG5ldmVyIGludGVybGVhdmUgd2l0aCBhIHJld3JpdGVcbiAgICBwcml2YXRlIHdyaXRlQ2hhaW46IFByb21pc2U8dm9pZD4gPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgIC8qKiBSZWFkcyB0aGUgbG9nIGFuZCByZXBsYXlzIGl0IGludG8gbWVtb3J5LiBFdmVyeSBvdGhlciBtZXRob2QgYXNzdW1lcyB0aGlzIGhhcyBmaW5pc2hlZC4gKi9cbiAgICBwdWJsaWMgbG9hZCA9IGxhenkoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgZGF0YTogc3RyaW5nO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGF0YSA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKHRoaXMuZmlsZVBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKChlIGFzIHsgY29kZT86IHN0cmluZyB9KS5jb2RlID09PSBcIkVOT0VOVFwiKSByZXR1cm47XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhcHBsaWVkID0gMDtcbiAgICAgICAgbGV0IGRhbWFnZWQgPSAwO1xuICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGRhdGEuc3BsaXQoXCJcXG5cIikpIHtcbiAgICAgICAgICAgIGlmICghbGluZSkgY29udGludWU7XG4gICAgICAgICAgICBsZXQgcmVjb3JkOiBMb2dSZWNvcmQ8VD4gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlY29yZCA9IEpTT04ucGFyc2UobGluZSkgYXMgTG9nUmVjb3JkPFQ+O1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gQSBjcmFzaCBtaWQtYXBwZW5kIGxlYXZlcyBhIHRvcm4gZmluYWwgbGluZTsgYW55dGhpbmcgZWFybGllciBtZWFucyByZWFsIGRhbWFnZS4gRWl0aGVyIHdheSB0aGUgcmVzdCBvZiB0aGUgbG9nIGlzIHN0aWxsIHdvcnRoIGhhdmluZyAtIHRoaXMgaXMgYW4gaW5kZXgsIGFuZCBzY2FubmluZyByZWJ1aWxkcyB3aGF0ZXZlciB3ZSBsb3NlLlxuICAgICAgICAgICAgICAgIGRhbWFnZWQrKztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcGxpZWQrKztcbiAgICAgICAgICAgIC8vIFJlcGxheWVkIHRocm91Z2ggdGhlIHNhbWUgb3JkZXJpbmcgcnVsZXMgdGhhdCBwcm9kdWNlZCBpdCwgc28gYSBsb2cgd3JpdHRlbiBvdXQgb2Ygb3JkZXIgc3RpbGwgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGVcbiAgICAgICAgICAgIGlmIChyZWNvcmQucCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLmRlbGV0ZShyZWNvcmQuayk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGVkLmRlbGV0ZShyZWNvcmQuayk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseURlbGV0ZShyZWNvcmQuaywgcmVjb3JkLnQsIHJlY29yZC50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlTZXQocmVjb3JkLmssIHJlY29yZC52LCByZWNvcmQudCwgcmVjb3JkLnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nUmVjb3JkcyA9IGFwcGxpZWQ7XG4gICAgICAgIGlmIChkYW1hZ2VkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke2RhbWFnZWR9IGRhbWFnZWQgcmVjb3JkKHMpIGluICR7dGhpcy5maWxlUGF0aH0gd2VyZSBza2lwcGVkOyAke2FwcGxpZWR9IGFwcGxpZWQsIGxlYXZpbmcgJHt0aGlzLnZhbHVlcy5zaXplfSB2YWx1ZXMgYW5kICR7dGhpcy5kZWxldGVkLnNpemV9IHRvbWJzdG9uZXNgKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqIFRoZSBsaXZlIHZhbHVlLCBvciB1bmRlZmluZWQgd2hlbiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGhlcmUgKGRlbGV0ZWQgaW5jbHVkZWQgLSBhIGRlbGV0aW9uIGlzIGFuIGFic2VuY2UsIHNlZSBnZXREZWxldGVkIGZvciBpdHMgdGltZSkuICovXG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IExvZ0VudHJ5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldChrZXkpO1xuICAgIH1cbiAgICAvKiogV2hlbiB0aGUga2V5IHdhcyBkZWxldGVkLCBpZiBpdCB3YXMuIEFic2VudCBib3RoIGhlcmUgYW5kIGluIGdldCBtZWFucyB3ZSBoYXZlIG5ldmVyIGhlYXJkIG9mIGl0LiAqL1xuICAgIHB1YmxpYyBnZXREZWxldGVkKGtleTogc3RyaW5nKTogTG9nVG9tYnN0b25lIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlZC5nZXQoa2V5KTtcbiAgICB9XG4gICAgLyoqIFRoZSB0aW1lIHRoZSBrZXkgbGFzdCBjaGFuZ2VkIGVpdGhlciB3YXksIG9yIDAgaWYgd2UgaGF2ZSBuZXZlciBoZWFyZCBvZiBpdCAtIHdoYXQgYSBuZXcgd3JpdGUgaGFzIHRvIGJlYXQuICovXG4gICAgcHVibGljIHRpbWVPZihrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGxldCBsaXZlID0gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChsaXZlKSByZXR1cm4gbGl2ZS50aW1lO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVkLmdldChrZXkpPy50aW1lIHx8IDA7XG4gICAgfVxuXG4gICAgLyoqIE8oMSksIGFuZCBjb3VudHMgb25seSB3aGF0IGV4aXN0cy4gKi9cbiAgICBwdWJsaWMgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnNpemU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGVsZXRlZFNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlZC5zaXplO1xuICAgIH1cbiAgICAvKiogTGl2ZSB2YWx1ZXMgb25seS4gTGl2ZSwgaW4gaW5zZXJ0aW9uIG9yZGVyIC0gZGVsZXRpbmcgZHVyaW5nIGl0ZXJhdGlvbiBpcyBzYWZlIChKUyBza2lwcyBlbnRyaWVzIHJlbW92ZWQgYmVmb3JlIHRoZXkgYXJlIHJlYWNoZWQpLCB3aGljaCBpcyB3aGF0IHRoZSBwYXNzZXMgdGhhdCB3YWxrIGV2ZXJ5dGhpbmcgYW5kIHBydW5lIGFzIHRoZXkgZ28gcmVseSBvbi4gKi9cbiAgICBwdWJsaWMgZW50cmllcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFtzdHJpbmcsIExvZ0VudHJ5PFQ+XT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuZW50cmllcygpO1xuICAgIH1cbiAgICAvKiogVGhlIHRvbWJzdG9uZXMsIHdoaWNoIGlzIGEgbXVjaCBzbWFsbGVyIHdhbGsgdGhhbiB0aGUgdmFsdWVzIC0gc28gZXhwaXJpbmcgdGhlbSwgb3IgbGlzdGluZyB3aGF0IHdhcyBkZWxldGVkIHNpbmNlIHNvbWUgdGltZSwgY29zdHMgd2hhdCBpdCBzaG91bGQuICovXG4gICAgcHVibGljIGRlbGV0ZWRFbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgTG9nVG9tYnN0b25lXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVkLmVudHJpZXMoKTtcbiAgICB9XG5cbiAgICAvKiogU3RvcmVzIGEgdmFsdWUgYXMgb2YgYHRpbWVgLiBSZXR1cm5zIGZhbHNlIHdoZW4gc29tZXRoaW5nIGF0IGxlYXN0IGFzIG5ldyBpcyBhbHJlYWR5IGhlcmUsIGluIHdoaWNoIGNhc2Ugbm90aGluZyBjaGFuZ2VkIC0gYW4gb3V0LW9mLW9yZGVyIHdyaXRlIGlzIG5vdCBhbiBlcnJvciwgaXQgaXMganVzdCBsYXRlLiAqL1xuICAgIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBULCB0aW1lOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmFwcGx5U2V0KGtleSwgdmFsdWUsIHRpbWUsIERhdGUubm93KCkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRoaXMuYXBwZW5kKHsgazoga2V5LCB0OiB0aW1lLCB2OiB2YWx1ZSB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqIERlbGV0ZXMgYXMgb2YgYHRpbWVgLCBrZWVwaW5nIHRoZSB0b21ic3RvbmUuIFJldHVybnMgZmFsc2Ugd2hlbiBzb21ldGhpbmcgYXQgbGVhc3QgYXMgbmV3IGlzIGFscmVhZHkgaGVyZS4gKi9cbiAgICBwdWJsaWMgZGVsZXRlKGtleTogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmFwcGx5RGVsZXRlKGtleSwgdGltZSwgRGF0ZS5ub3coKSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdGhpcy5hcHBlbmQoeyBrOiBrZXksIHQ6IHRpbWUsIGQ6IDEgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBGb3JnZXRzIHRoZSBrZXkgZW50aXJlbHksIHRvbWJzdG9uZSBpbmNsdWRlZCAtIGZvciBhIHRvbWJzdG9uZSBvbGQgZW5vdWdoIHRoYXQgbm9ib2R5IG5lZWRzIHRvIGhlYXIgYWJvdXQgdGhlIGRlbGV0aW9uIGFueSBtb3JlLCBhbmQgZm9yIGFuIGVudHJ5IHRoYXQgdHVybmVkIG91dCBuZXZlciB0byBoYXZlIGV4aXN0ZWQuIE5vdCBhIGRlbGV0aW9uOiBpdCBsZWF2ZXMgbm90aGluZyBiZWhpbmQgdG8gcHJvcGFnYXRlLiAqL1xuICAgIHB1YmxpYyBwdXJnZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBsZXQgaGFkID0gdGhpcy52YWx1ZXMuZGVsZXRlKGtleSk7XG4gICAgICAgIGhhZCA9IHRoaXMuZGVsZXRlZC5kZWxldGUoa2V5KSB8fCBoYWQ7XG4gICAgICAgIGlmICghaGFkKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXBwZW5kKHsgazoga2V5LCB0OiBEYXRlLm5vdygpLCBwOiAxIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlTZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBULCB0aW1lOiBudW1iZXIsIGNoYW5nZWRBdDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aW1lIDwgdGhpcy50aW1lT2Yoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLmRlbGV0ZWQuZGVsZXRlKGtleSk7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldChrZXksIHsgdmFsdWUsIHRpbWUsIGNoYW5nZWRBdCB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseURlbGV0ZShrZXk6IHN0cmluZywgdGltZTogbnVtYmVyLCBjaGFuZ2VkQXQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGltZSA8IHRoaXMudGltZU9mKGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdGhpcy52YWx1ZXMuZGVsZXRlKGtleSk7XG4gICAgICAgIHRoaXMuZGVsZXRlZC5zZXQoa2V5LCB7IHRpbWUsIGNoYW5nZWRBdCB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmQocmVjb3JkOiBMb2dSZWNvcmQ8VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nLnB1c2goSlNPTi5zdHJpbmdpZnkocmVjb3JkKSk7XG4gICAgICAgIHRoaXMubG9nUmVjb3JkcysrO1xuICAgICAgICB0aGlzLnNjaGVkdWxlRmx1c2goKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjaGVkdWxlRmx1c2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZsdXNoVGltZXIgIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmZsdXNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmx1c2hUaW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpLmNhdGNoKChlOiBFcnJvcikgPT4gY29uc29sZS5lcnJvcihgRmx1c2hpbmcgJHt0aGlzLmZpbGVQYXRofSBmYWlsZWQ6ICR7ZS5zdGFjayA/PyBlfWApKTtcbiAgICAgICAgfSwgRkxVU0hfREVMQVkpO1xuICAgICAgICAodGhpcy5mbHVzaFRpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICAvKiogV3JpdGVzIGV2ZXJ5dGhpbmcgcGVuZGluZyAocmV3cml0aW5nIHRoZSBsb2cgZmlyc3QgaWYgaXQgaGFzIGdyb3duIHRvbyBmYXIgcGFzdCB3aGF0IGl0IGRlc2NyaWJlcykuICovXG4gICAgcHVibGljIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy53cml0ZUNoYWluLnRoZW4oKCkgPT4gdGhpcy53cml0ZSgpKTtcbiAgICAgICAgLy8gVGhlIGNoYWluIG9ubHkgZXhpc3RzIHRvIHNlcmlhbGl6ZSB3cml0ZXMsIHNvIGl0IG11c3Qgbm90IHN0YXkgcmVqZWN0ZWQ6IGEgZmFpbHVyZSBiZWxvbmdzIHRvIHRoZSBjYWxsZXIgdGhhdCBhc2tlZCBmb3IgdGhpcyBmbHVzaCwgbm90IHRvIGV2ZXJ5IGZsdXNoIGFmdGVyIGl0XG4gICAgICAgIHRoaXMud3JpdGVDaGFpbiA9IHJlc3VsdC5jYXRjaCgoKSA9PiB7IH0pO1xuICAgICAgICBhd2FpdCByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXJlY3RvcnkgPSBsYXp5KGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIocGF0aC5kaXJuYW1lKHRoaXMuZmlsZVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgYXN5bmMgd3JpdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmxvZ1JlY29yZHMgPiBNYXRoLm1heChNSU5fQ09NUEFDVF9SRUNPUkRTLCAodGhpcy52YWx1ZXMuc2l6ZSArIHRoaXMuZGVsZXRlZC5zaXplKSAqIENPTVBBQ1RfUkFUSU8pKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbXBhY3QoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmFwcGVuZFBlbmRpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGFwcGVuZFBlbmRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5wZW5kaW5nLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBsZXQgcmVjb3JkcyA9IHRoaXMucGVuZGluZztcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gW107XG4gICAgICAgIGF3YWl0IHRoaXMuZGlyZWN0b3J5KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5hcHBlbmRGaWxlKHRoaXMuZmlsZVBhdGgsIHJlY29yZHMuam9pbihcIlxcblwiKSArIFwiXFxuXCIpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBQdXQgdGhlbSBiYWNrIHJhdGhlciB0aGFuIGxvc2UgdGhlbTogdGhlIHZhbHVlcyBhcmUgc3RpbGwgaW4gbWVtb3J5LCBzbyBhbGwgdGhhdCBpcyBhdCByaXNrIGlzIGhhdmluZyB0byByZWJ1aWxkIHRoZW0gYnkgc2Nhbm5pbmdcbiAgICAgICAgICAgIHRoaXMucGVuZGluZyA9IHJlY29yZHMuY29uY2F0KHRoaXMucGVuZGluZyk7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlRmx1c2goKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXdyaXRlcyB0aGUgbG9nIGFzIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIGJvdGggbWFwcy4gVGhleSBhcmUgdGhlIHRydXRoIC0gdGhlIGxvZyBvbmx5IGV4aXN0cyB0byByZWJ1aWxkIHRoZW0gLSBzbyB0aGUgc25hcHNob3QgSVMgdGhlIG5ldyBsb2cuXG4gICAgcHJpdmF0ZSBhc3luYyBjb21wYWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVjb3Jkczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgW2tleSwgZW50cnldIG9mIHRoaXMudmFsdWVzKSB7XG4gICAgICAgICAgICByZWNvcmRzLnB1c2goSlNPTi5zdHJpbmdpZnkoeyBrOiBrZXksIHQ6IGVudHJ5LnRpbWUsIHY6IGVudHJ5LnZhbHVlIH0gc2F0aXNmaWVzIExvZ1JlY29yZDxUPikpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IFtrZXksIHRvbWJzdG9uZV0gb2YgdGhpcy5kZWxldGVkKSB7XG4gICAgICAgICAgICByZWNvcmRzLnB1c2goSlNPTi5zdHJpbmdpZnkoeyBrOiBrZXksIHQ6IHRvbWJzdG9uZS50aW1lLCBkOiAxIH0gc2F0aXNmaWVzIExvZ1JlY29yZDxUPikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENsZWFyZWQgd2l0aCB0aGUgc25hcHNob3Q6IGV2ZXJ5IHBlbmRpbmcgcmVjb3JkIGlzIGFscmVhZHkgcmVmbGVjdGVkIGluIHRoZSBtYXBzLCBzbyB0aGUgc25hcHNob3QgY29udGFpbnMgaXQuIEFueXRoaW5nIGFwcGVuZGVkIGZyb20gaGVyZSBvbiBpcyBOT1QgaW4gdGhlIHNuYXBzaG90LCBhbmQgbGFuZHMgaW4gdGhlIG5ldyBsb2cgYWZ0ZXIgdGhlIHJlbmFtZS5cbiAgICAgICAgdGhpcy5wZW5kaW5nID0gW107XG4gICAgICAgIGxldCBzdGFydGVkV2l0aCA9IHRoaXMubG9nUmVjb3JkcztcbiAgICAgICAgbGV0IHRlbXBQYXRoID0gYCR7dGhpcy5maWxlUGF0aH0uY29tcGFjdGluZ2A7XG4gICAgICAgIGF3YWl0IHRoaXMuZGlyZWN0b3J5KCk7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZSh0ZW1wUGF0aCwgcmVjb3Jkcy5sZW5ndGggJiYgYCR7cmVjb3Jkcy5qb2luKFwiXFxuXCIpfVxcbmAgfHwgXCJcIik7XG4gICAgICAgIC8vIFJlcGxhY2VzIHRoZSBvbGQgbG9nIGluIG9uZSBzdGVwLCBzbyBhIGNyYXNoIGxlYXZlcyBlaXRoZXIgdGhlIHdob2xlIG9sZCBsb2cgb3IgdGhlIHdob2xlIG5ldyBvbmVcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucmVuYW1lKHRlbXBQYXRoLCB0aGlzLmZpbGVQYXRoKTtcbiAgICAgICAgdGhpcy5sb2dSZWNvcmRzID0gcmVjb3Jkcy5sZW5ndGggKyB0aGlzLnBlbmRpbmcubGVuZ3RoO1xuICAgICAgICBjb25zb2xlLmxvZyhgUmV3cm90ZSAke3RoaXMuZmlsZVBhdGh9OiAke3N0YXJ0ZWRXaXRofSBsb2cgcmVjb3JkcyBmb3IgJHt0aGlzLnZhbHVlcy5zaXplfSB2YWx1ZXMgYW5kICR7dGhpcy5kZWxldGVkLnNpemV9IHRvbWJzdG9uZXNgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBlbmRQZW5kaW5nKCk7XG4gICAgfVxufVxuIl19
212
- /* _JS_SOURCE_HASH = "aeba79c00c289c774d94ca3a91c2d66c41614210f4534b7e06025a13d8e8cf00"; */
212
+ /* _JS_SOURCE_HASH = "cf7867c2061db5a9dfb55ce0dbbf096c3fcc3a949c1a308ac91b23c19f784b36"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -70,4 +70,4 @@ exports.PendingDisplay = PendingDisplay = __decorate([
70
70
  observer_1.observer
71
71
  ], PendingDisplay);
72
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVuZGluZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJQZW5kaW5nTWFuYWdlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRXBDLG1EQUE0RDtBQUM1RCwrQkFBa0M7QUFDbEMsb0RBQTRCO0FBQzVCLDZDQUFrQztBQUNsQyx1REFBb0Q7QUFDcEQsa0VBQW1FO0FBRW5FLElBQUksVUFBVSxHQUFHLElBQUEsaUJBQVUsRUFBQztJQUN4QixPQUFPLEVBQUUsRUFBaUM7Q0FDN0MsQ0FBQyxDQUFDO0FBQ0gsSUFBSSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFFaEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFFN0MsOEJBQThCO0FBQzlCLFNBQWdCLFVBQVUsQ0FBQyxLQUFhLEVBQUUsT0FBZTtJQUNyRCxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqQyxLQUFLLGNBQWMsRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFIRCxnQ0FHQztBQUVELFNBQWdCLFVBQVU7SUFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFGRCxnQ0FFQztBQUVELHlLQUF5SztBQUN6SyxNQUFNLGNBQWMsR0FBRyxJQUFBLHVCQUFnQixFQUFDLEdBQUcsRUFBRSxTQUFTLGNBQWM7SUFDaEUsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUNwQyxJQUFJLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwSixDQUFDO2dCQUNELGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNKLDZDQUE2QztZQUM3QyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQztBQUdJLElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxnQkFBTSxDQUFDLFNBQVM7SUFDaEQsTUFBTTtRQUNGLDZEQUE2RDtRQUM3RCxPQUFPLHdDQUFLLFNBQVMsRUFBRSxpQkFBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDMUMsd0NBQUssU0FBUyxFQUFFLGlCQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRixLQUFLOztZQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQ2pDLENBQ1QsQ0FBQyxDQUNBLENBQUM7SUFDWCxDQUFDO0NBQ0osQ0FBQTtBQVhZLHdDQUFjO3lCQUFkLGNBQWM7SUFEMUIsbUJBQVE7R0FDSSxjQUFjLENBVzFCIiwic291cmNlc0NvbnRlbnQiOlsicHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSBcInByb2R1Y3Rpb25cIjtcblxuaW1wb3J0IHsgdGhyb3R0bGVGdW5jdGlvbiB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHByZWFjdCBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBjc3MgfSBmcm9tIFwidHlwZXNhZmVjc3NcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIi4uL3JlbmRlci11dGlscy9vYnNlcnZlclwiO1xuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5cbmxldCB3YXRjaFN0YXRlID0gb2JzZXJ2YWJsZSh7XG4gICAgcGVuZGluZzoge30gYXMgeyBbZ3JvdXA6IHN0cmluZ106IHN0cmluZyB9XG59KTtcbmxldCBwZW5kaW5nTGFzdFNldHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG5sZXQgcGVuZGluZ0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuLy8gXCJcIiBjbGVhcnMgdGhlIHBlbmRpbmcgdmFsdWVcbmV4cG9ydCBmdW5jdGlvbiBzZXRQZW5kaW5nKGdyb3VwOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHBlbmRpbmdDYWNoZS5zZXQoZ3JvdXAsIG1lc3NhZ2UpO1xuICAgIHZvaWQgc2V0UGVuZGluZ0Jhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1BlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHdhdGNoU3RhdGUucGVuZGluZykubGVuZ3RoID4gMDtcbn1cblxuLy8gTk9URTogVGhpcyBub3Qgb25seSBwcmV2ZW50cyByZW5kZXIgb3ZlcmxvYWQsIGJ1dCBhbHNvIG1lYW5zIGFueSBwZW5kaW5nIHRoYXQgYXJlIDwgdGhpcyBkZWxheSBkb24ndCBzaG93IHVwICh3aGljaCBpcyB1c2VmdWwgdG8gcmVkdWNlIHVubmVjZXNzYXJ5IHBlbmRpbmcgbWVzc2FnZXMpLlxuY29uc3Qgc2V0UGVuZGluZ0Jhc2UgPSB0aHJvdHRsZUZ1bmN0aW9uKDUwMCwgZnVuY3Rpb24gc2V0UGVuZGluZ0Jhc2UoKSB7XG4gICAgZm9yIChsZXQgW2dyb3VwLCBtZXNzYWdlXSBvZiBwZW5kaW5nQ2FjaGUpIHtcblxuICAgICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGxldCBsYXN0U2V0ID0gcGVuZGluZ0xhc3RTZXRzLmdldChncm91cCk7XG4gICAgICAgICAgICBpZiAobGFzdFNldCkge1xuICAgICAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBsYXN0U2V0O1xuICAgICAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+IDUwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgc2xvdyB0YXNrIGFmdGVyICR7Zm9ybWF0VGltZShkdXJhdGlvbil9OiAke0pTT04uc3RyaW5naWZ5KGdyb3VwKX0sIGxhc3QgaXMgJHtKU09OLnN0cmluZ2lmeSh3YXRjaFN0YXRlLnBlbmRpbmdbZ3JvdXBdKX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGVuZGluZ0xhc3RTZXRzLmRlbGV0ZShncm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgd2F0Y2hTdGF0ZS5wZW5kaW5nW2dyb3VwXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwic2V0UGVuZGluZ1wiLCBncm91cCwgbWVzc2FnZSk7XG4gICAgICAgICAgICBpZiAoIShncm91cCBpbiB3YXRjaFN0YXRlLnBlbmRpbmcpKSB7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0xhc3RTZXRzLnNldChncm91cCwgRGF0ZS5ub3coKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3YXRjaFN0YXRlLnBlbmRpbmdbZ3JvdXBdID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwZW5kaW5nQ2FjaGUuY2xlYXIoKTtcbn0pO1xuXG5Ab2JzZXJ2ZXJcbmV4cG9ydCBjbGFzcyBQZW5kaW5nRGlzcGxheSBleHRlbmRzIHByZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgLy8gU2luZ2xlIGxpbmUsIGdpdmluZyBlcXVhbCBzcGFjZSwgYW5kIGVsbGlwc2lzIGZvciBvdmVyZmxvd1xuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2Nzcy5oYm94KDEwKX0+XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMod2F0Y2hTdGF0ZS5wZW5kaW5nKS5tYXAoZ3JvdXAgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MuY2VudGVyLnRleHRPdmVyZmxvdyhcImVsbGlwc2lzXCIpLmJvcmRlcihcIjFweCBzb2xpZCBibGFja1wiKS5wYWQyKDYsIDIpfT5cbiAgICAgICAgICAgICAgICAgICAge2dyb3VwfToge3dhdGNoU3RhdGUucGVuZGluZ1tncm91cF19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+O1xuICAgIH1cbn0iXX0=
73
- /* _JS_SOURCE_HASH = "6f964fe2d67ead5a148c0cd1928308c38b1b3fa5ee2adca22b8b70648f83cd44"; */
73
+ /* _JS_SOURCE_HASH = "996761e332800c2e1a6c41718c030620fbc3e18bc8a35683dbc3562e7c6e74ba"; */