@dyanet/nestjs-config-aws 1.2.0-beta.1 → 1.2.1

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 (45) hide show
  1. package/README.md +5 -0
  2. package/dist/cjs/config-aws/src/config-manager.js +8 -8
  3. package/dist/cjs/config-aws/src/index.js +23 -23
  4. package/dist/cjs/config-aws/src/interfaces/config-manager.interface.js +1 -1
  5. package/dist/cjs/config-aws/src/loaders/env-file.loader.js +5 -5
  6. package/dist/cjs/config-aws/src/loaders/environment.loader.js +1 -1
  7. package/dist/cjs/config-aws/src/loaders/s3.loader.js +8 -8
  8. package/dist/cjs/config-aws/src/loaders/secrets-manager.loader.js +16 -9
  9. package/dist/cjs/config-aws/src/loaders/ssm-parameter-store.loader.js +6 -6
  10. package/dist/cjs/config-aws/src/utils/validation.util.js +6 -6
  11. package/dist/cjs/nestjs-config-aws/src/integration/services/async-config-helper.service.js +14 -6
  12. package/dist/cjs/nestjs-config-aws/src/integration/services/validation-integration.service.js +9 -6
  13. package/dist/esm/config-aws/src/config-manager.js +2 -2
  14. package/dist/esm/config-aws/src/index.js +10 -10
  15. package/dist/esm/config-aws/src/interfaces/config-manager.interface.js +1 -1
  16. package/dist/esm/config-aws/src/loaders/env-file.loader.js +3 -3
  17. package/dist/esm/config-aws/src/loaders/environment.loader.js +1 -1
  18. package/dist/esm/config-aws/src/loaders/s3.loader.js +3 -3
  19. package/dist/esm/config-aws/src/loaders/secrets-manager.loader.js +12 -5
  20. package/dist/esm/config-aws/src/loaders/ssm-parameter-store.loader.js +2 -2
  21. package/dist/esm/config-aws/src/utils/validation.util.js +2 -2
  22. package/dist/esm/nestjs-config-aws/src/integration/services/async-config-helper.service.js +14 -6
  23. package/dist/esm/nestjs-config-aws/src/integration/services/validation-integration.service.js +9 -6
  24. package/dist/esm/package.json +1 -0
  25. package/dist/types/config-aws/src/config-manager.d.ts +1 -1
  26. package/dist/types/config-aws/src/config-manager.d.ts.map +1 -1
  27. package/dist/types/config-aws/src/index.d.ts +16 -16
  28. package/dist/types/config-aws/src/index.d.ts.map +1 -1
  29. package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts +1 -1
  30. package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts.map +1 -1
  31. package/dist/types/config-aws/src/loaders/env-file.loader.d.ts +2 -2
  32. package/dist/types/config-aws/src/loaders/env-file.loader.d.ts.map +1 -1
  33. package/dist/types/config-aws/src/loaders/environment.loader.d.ts +2 -2
  34. package/dist/types/config-aws/src/loaders/environment.loader.d.ts.map +1 -1
  35. package/dist/types/config-aws/src/loaders/s3.loader.d.ts +2 -2
  36. package/dist/types/config-aws/src/loaders/s3.loader.d.ts.map +1 -1
  37. package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts +3 -3
  38. package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts.map +1 -1
  39. package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts +2 -2
  40. package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts.map +1 -1
  41. package/dist/types/config-aws/src/utils/validation.util.d.ts +1 -1
  42. package/dist/types/config-aws/src/utils/validation.util.d.ts.map +1 -1
  43. package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts.map +1 -1
  44. package/dist/types/nestjs-config-aws/src/integration/services/validation-integration.service.d.ts.map +1 -1
  45. package/package.json +5 -5
@@ -78,4 +78,4 @@ export class EnvironmentLoader {
78
78
  return result;
79
79
  }
80
80
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9lbnZpcm9ubWVudC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsZ0JBQWdCO0lBQ0csT0FBTyxDQUEwQjtJQUVwRCxZQUFZLFNBQWtDLEVBQUU7UUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELHdCQUF3QjtZQUN4QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEIsU0FBUztZQUNYLENBQUM7WUFFRCw4Q0FBOEM7WUFDOUMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLFNBQVM7WUFDWCxDQUFDO1lBRUQsMEJBQTBCO1lBQzFCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzNCLHdCQUF3QjtvQkFDeEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzdDLDBEQUEwRDtvQkFDMUQsSUFBSSxXQUFXLEVBQUUsQ0FBQzt3QkFDaEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDOUIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELHdDQUF3QztZQUMxQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sNENBQTRDO2dCQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWdMb2FkZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy1sb2FkZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudExvYWRlckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZW52aXJvbm1lbnQtbG9hZGVyLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogTG9hZGVyIHRoYXQgcmVhZHMgY29uZmlndXJhdGlvbiBmcm9tIHByb2Nlc3MuZW52LlxyXG4gKiBTdXBwb3J0cyBwcmVmaXggZmlsdGVyaW5nIGFuZCBleGNsdXNpb24gbGlzdHMuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gTG9hZCBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZpcm9ubWVudExvYWRlcigpO1xyXG4gKlxyXG4gKiAvLyBMb2FkIG9ubHkgdmFyaWFibGVzIHN0YXJ0aW5nIHdpdGggJ0FQUF8nLCBzdHJpcHBpbmcgdGhlIHByZWZpeFxyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgRW52aXJvbm1lbnRMb2FkZXIoeyBwcmVmaXg6ICdBUFBfJyB9KTtcclxuICpcclxuICogLy8gTG9hZCBhbGwgZXhjZXB0IHNwZWNpZmljIHZhcmlhYmxlc1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgRW52aXJvbm1lbnRMb2FkZXIoeyBleGNsdWRlOiBbJ1BBVEgnLCAnSE9NRSddIH0pO1xyXG4gKlxyXG4gKiAvLyBDb21iaW5lIHByZWZpeCBhbmQgZXhjbHVzaW9uXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZpcm9ubWVudExvYWRlcih7XHJcbiAqICAgcHJlZml4OiAnQVBQXycsXHJcbiAqICAgZXhjbHVkZTogWydBUFBfREVCVUcnXVxyXG4gKiB9KTtcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRMb2FkZXIgaW1wbGVtZW50cyBDb25maWdMb2FkZXIge1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogRW52aXJvbm1lbnRMb2FkZXJDb25maWc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRW52aXJvbm1lbnRMb2FkZXJDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdFbnZpcm9ubWVudExvYWRlcic7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpc0F2YWlsYWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gcHJvY2Vzcy5lbnYuXHJcbiAgICpcclxuICAgKiBXaGVuIGEgcHJlZml4IGlzIHNwZWNpZmllZDpcclxuICAgKiAtIE9ubHkgdmFyaWFibGVzIHN0YXJ0aW5nIHdpdGggdGhlIHByZWZpeCBhcmUgaW5jbHVkZWRcclxuICAgKiAtIFRoZSBwcmVmaXggaXMgc3RyaXBwZWQgZnJvbSB0aGUgcmVzdWx0aW5nIGtleSBuYW1lc1xyXG4gICAqXHJcbiAgICogV2hlbiBhbiBleGNsdXNpb24gbGlzdCBpcyBzcGVjaWZpZWQ6XHJcbiAgICogLSBWYXJpYWJsZXMgaW4gdGhlIGxpc3QgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHJlc3VsdFxyXG4gICAqIC0gRXhjbHVzaW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgb3JpZ2luYWwga2V5IChiZWZvcmUgcHJlZml4IHN0cmlwcGluZylcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBsb2FkZWQgY29uZmlndXJhdGlvblxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xyXG4gICAgY29uc3QgeyBwcmVmaXgsIGV4Y2x1ZGUgPSBbXSB9ID0gdGhpcy5fY29uZmlnO1xyXG4gICAgY29uc3QgZXhjbHVkZVNldCA9IG5ldyBTZXQoZXhjbHVkZSk7XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvY2Vzcy5lbnYpKSB7XHJcbiAgICAgIC8vIFNraXAgdW5kZWZpbmVkIHZhbHVlc1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDaGVjayBleGNsdXNpb24gbGlzdCAoYWdhaW5zdCBvcmlnaW5hbCBrZXkpXHJcbiAgICAgIGlmIChleGNsdWRlU2V0LmhhcyhrZXkpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhhbmRsZSBwcmVmaXggZmlsdGVyaW5nXHJcbiAgICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xyXG4gICAgICAgICAgLy8gU3RyaXAgcHJlZml4IGZyb20ga2V5XHJcbiAgICAgICAgICBjb25zdCBzdHJpcHBlZEtleSA9IGtleS5zbGljZShwcmVmaXgubGVuZ3RoKTtcclxuICAgICAgICAgIC8vIE9ubHkgaW5jbHVkZSBpZiB0aGVyZSdzIGEga2V5IHJlbWFpbmluZyBhZnRlciBzdHJpcHBpbmdcclxuICAgICAgICAgIGlmIChzdHJpcHBlZEtleSkge1xyXG4gICAgICAgICAgICByZXN1bHRbc3RyaXBwZWRLZXldID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFNraXAga2V5cyB0aGF0IGRvbid0IG1hdGNoIHRoZSBwcmVmaXhcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBObyBwcmVmaXggLSBpbmNsdWRlIGFsbCBub24tZXhjbHVkZWQga2V5c1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9lbnZpcm9ubWVudC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsZ0JBQWdCO0lBQ0csT0FBTyxDQUEwQjtJQUVwRCxZQUFZLFNBQWtDLEVBQUU7UUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELHdCQUF3QjtZQUN4QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEIsU0FBUztZQUNYLENBQUM7WUFFRCw4Q0FBOEM7WUFDOUMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLFNBQVM7WUFDWCxDQUFDO1lBRUQsMEJBQTBCO1lBQzFCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzNCLHdCQUF3QjtvQkFDeEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzdDLDBEQUEwRDtvQkFDMUQsSUFBSSxXQUFXLEVBQUUsQ0FBQzt3QkFDaEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDOUIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELHdDQUF3QztZQUMxQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sNENBQTRDO2dCQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWdMb2FkZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy1sb2FkZXIuaW50ZXJmYWNlLmpzJztcclxuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudExvYWRlckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZW52aXJvbm1lbnQtbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcblxyXG4vKipcclxuICogTG9hZGVyIHRoYXQgcmVhZHMgY29uZmlndXJhdGlvbiBmcm9tIHByb2Nlc3MuZW52LlxyXG4gKiBTdXBwb3J0cyBwcmVmaXggZmlsdGVyaW5nIGFuZCBleGNsdXNpb24gbGlzdHMuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gTG9hZCBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZpcm9ubWVudExvYWRlcigpO1xyXG4gKlxyXG4gKiAvLyBMb2FkIG9ubHkgdmFyaWFibGVzIHN0YXJ0aW5nIHdpdGggJ0FQUF8nLCBzdHJpcHBpbmcgdGhlIHByZWZpeFxyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgRW52aXJvbm1lbnRMb2FkZXIoeyBwcmVmaXg6ICdBUFBfJyB9KTtcclxuICpcclxuICogLy8gTG9hZCBhbGwgZXhjZXB0IHNwZWNpZmljIHZhcmlhYmxlc1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgRW52aXJvbm1lbnRMb2FkZXIoeyBleGNsdWRlOiBbJ1BBVEgnLCAnSE9NRSddIH0pO1xyXG4gKlxyXG4gKiAvLyBDb21iaW5lIHByZWZpeCBhbmQgZXhjbHVzaW9uXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZpcm9ubWVudExvYWRlcih7XHJcbiAqICAgcHJlZml4OiAnQVBQXycsXHJcbiAqICAgZXhjbHVkZTogWydBUFBfREVCVUcnXVxyXG4gKiB9KTtcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRMb2FkZXIgaW1wbGVtZW50cyBDb25maWdMb2FkZXIge1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogRW52aXJvbm1lbnRMb2FkZXJDb25maWc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRW52aXJvbm1lbnRMb2FkZXJDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdFbnZpcm9ubWVudExvYWRlcic7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpc0F2YWlsYWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gcHJvY2Vzcy5lbnYuXHJcbiAgICpcclxuICAgKiBXaGVuIGEgcHJlZml4IGlzIHNwZWNpZmllZDpcclxuICAgKiAtIE9ubHkgdmFyaWFibGVzIHN0YXJ0aW5nIHdpdGggdGhlIHByZWZpeCBhcmUgaW5jbHVkZWRcclxuICAgKiAtIFRoZSBwcmVmaXggaXMgc3RyaXBwZWQgZnJvbSB0aGUgcmVzdWx0aW5nIGtleSBuYW1lc1xyXG4gICAqXHJcbiAgICogV2hlbiBhbiBleGNsdXNpb24gbGlzdCBpcyBzcGVjaWZpZWQ6XHJcbiAgICogLSBWYXJpYWJsZXMgaW4gdGhlIGxpc3QgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHJlc3VsdFxyXG4gICAqIC0gRXhjbHVzaW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgb3JpZ2luYWwga2V5IChiZWZvcmUgcHJlZml4IHN0cmlwcGluZylcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBsb2FkZWQgY29uZmlndXJhdGlvblxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xyXG4gICAgY29uc3QgeyBwcmVmaXgsIGV4Y2x1ZGUgPSBbXSB9ID0gdGhpcy5fY29uZmlnO1xyXG4gICAgY29uc3QgZXhjbHVkZVNldCA9IG5ldyBTZXQoZXhjbHVkZSk7XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvY2Vzcy5lbnYpKSB7XHJcbiAgICAgIC8vIFNraXAgdW5kZWZpbmVkIHZhbHVlc1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDaGVjayBleGNsdXNpb24gbGlzdCAoYWdhaW5zdCBvcmlnaW5hbCBrZXkpXHJcbiAgICAgIGlmIChleGNsdWRlU2V0LmhhcyhrZXkpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhhbmRsZSBwcmVmaXggZmlsdGVyaW5nXHJcbiAgICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xyXG4gICAgICAgICAgLy8gU3RyaXAgcHJlZml4IGZyb20ga2V5XHJcbiAgICAgICAgICBjb25zdCBzdHJpcHBlZEtleSA9IGtleS5zbGljZShwcmVmaXgubGVuZ3RoKTtcclxuICAgICAgICAgIC8vIE9ubHkgaW5jbHVkZSBpZiB0aGVyZSdzIGEga2V5IHJlbWFpbmluZyBhZnRlciBzdHJpcHBpbmdcclxuICAgICAgICAgIGlmIChzdHJpcHBlZEtleSkge1xyXG4gICAgICAgICAgICByZXN1bHRbc3RyaXBwZWRLZXldID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFNraXAga2V5cyB0aGF0IGRvbid0IG1hdGNoIHRoZSBwcmVmaXhcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBObyBwcmVmaXggLSBpbmNsdWRlIGFsbCBub24tZXhjbHVkZWQga2V5c1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { GetObjectCommand, S3Client } from '@aws-sdk/client-s3';
2
2
  import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
3
- import { EnvFileParser } from '../utils/env-file-parser.util';
4
- import { AWSServiceError, ConfigurationLoadError } from '../errors';
3
+ import { EnvFileParser } from '../utils/env-file-parser.util.js';
4
+ import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
5
5
  /**
6
6
  * Loader that reads configuration from S3 buckets.
7
7
  * Supports JSON and .env file formats with auto-detection.
@@ -138,4 +138,4 @@ export class S3Loader {
138
138
  }
139
139
  }
140
140
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9zMy5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUNuQixnQkFBZ0I7SUFDRyxPQUFPLENBQTJCO0lBQ3JELGdCQUFnQjtJQUNHLE9BQU8sQ0FBVztJQUVyQyxZQUFZLE1BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO1lBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxXQUFXO1lBQ2pFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU07U0FDaEMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDMUIsV0FBVyxFQUFFLHFCQUFxQixFQUFFO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxD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dENvbW1hbmQsIFMzQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcclxuaW1wb3J0IHsgZnJvbU5vZGVQcm92aWRlckNoYWluIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgdHlwZSB7IENvbmZpZ0xvYWRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLWxvYWRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgdHlwZSB7IFMzTG9hZGVyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zMy1sb2FkZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRW52RmlsZVBhcnNlciB9IGZyb20gJy4uL3V0aWxzL2Vudi1maWxlLXBhcnNlci51dGlsJztcclxuaW1wb3J0IHsgQVdTU2VydmljZUVycm9yLCBDb25maWd1cmF0aW9uTG9hZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcclxuXHJcbi8qKlxyXG4gKiBMb2FkZXIgdGhhdCByZWFkcyBjb25maWd1cmF0aW9uIGZyb20gUzMgYnVja2V0cy5cclxuICogU3VwcG9ydHMgSlNPTiBhbmQgLmVudiBmaWxlIGZvcm1hdHMgd2l0aCBhdXRvLWRldGVjdGlvbi5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiAvLyBMb2FkIEpTT04gY29uZmlnIGZyb20gUzNcclxuICogY29uc3QgbG9hZGVyID0gbmV3IFMzTG9hZGVyKHtcclxuICogICBidWNrZXQ6ICdteS1jb25maWctYnVja2V0JyxcclxuICogICBrZXk6ICdjb25maWcvYXBwLmpzb24nLFxyXG4gKiAgIGZvcm1hdDogJ2pzb24nXHJcbiAqIH0pO1xyXG4gKlxyXG4gKiAvLyBMb2FkIC5lbnYgZmlsZSBmcm9tIFMzIHdpdGggYXV0by1kZXRlY3Rpb25cclxuICogY29uc3QgbG9hZGVyID0gbmV3IFMzTG9hZGVyKHtcclxuICogICBidWNrZXQ6ICdteS1jb25maWctYnVja2V0JyxcclxuICogICBrZXk6ICdjb25maWcvLmVudidcclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3VzZS1lbnZpcm9ubWVudC1maWxlLmh0bWxcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTM0xvYWRlciBpbXBsZW1lbnRzIENvbmZpZ0xvYWRlciB7XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfY29uZmlnOiBSZXF1aXJlZDxTM0xvYWRlckNvbmZpZz47XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfY2xpZW50OiBTM0NsaWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBTM0xvYWRlckNvbmZpZykge1xyXG4gICAgdGhpcy5fY29uZmlnID0ge1xyXG4gICAgICBidWNrZXQ6IGNvbmZpZy5idWNrZXQsXHJcbiAgICAgIGtleTogY29uZmlnLmtleSxcclxuICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uIHx8IHByb2Nlc3MuZW52WydBV1NfUkVHSU9OJ10gfHwgJ3VzLWVhc3QtMScsXHJcbiAgICAgIGZvcm1hdDogY29uZmlnLmZvcm1hdCB8fCAnYXV0bycsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuX2NsaWVudCA9IG5ldyBTM0NsaWVudCh7XHJcbiAgICAgIGNyZWRlbnRpYWxzOiBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4oKSxcclxuICAgICAgcmVnaW9uOiB0aGlzLl9jb25maWcucmVnaW9uLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYFMzTG9hZGVyKHMzOi8vJHt0aGlzLl9jb25maWcuYnVja2V0fS8ke3RoaXMuX2NvbmZpZy5rZXl9KWA7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgdGhpcyBsb2FkZXIgaXMgYXZhaWxhYmxlIGJ5IHZlcmlmeWluZyBBV1MgY3JlZGVudGlhbHMuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdHJ1ZSBpZiBBV1MgY3JlZGVudGlhbHMgYXJlIGF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIGFzeW5jIGlzQXZhaWxhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5fY2xpZW50LmNvbmZpZy5jcmVkZW50aWFscygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBTMy5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byBjb25maWd1cmF0aW9uIGtleS12YWx1ZSBwYWlyc1xyXG4gICAqIEB0aHJvd3MgQVdTU2VydmljZUVycm9yIGlmIFMzIG9wZXJhdGlvbiBmYWlsc1xyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkxvYWRFcnJvciBpZiBjb250ZW50IGNhbm5vdCBiZSBwYXJzZWRcclxuICAgKi9cclxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0T2JqZWN0Q29tbWFuZCh7XHJcbiAgICAgICAgQnVja2V0OiB0aGlzLl9jb25maWcuYnVja2V0LFxyXG4gICAgICAgIEtleTogdGhpcy5fY29uZmlnLmtleSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuX2NsaWVudC5zZW5kKGNvbW1hbmQpO1xyXG5cclxuICAgICAgaWYgKCFyZXNwb25zZS5Cb2R5KSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVzcG9uc2UuQm9keS50cmFuc2Zvcm1Ub1N0cmluZygpO1xyXG5cclxuICAgICAgaWYgKCFjb250ZW50IHx8IGNvbnRlbnQudHJpbSgpID09PSAnJykge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDb250ZW50KGNvbnRlbnQpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQ29uZmlndXJhdGlvbkxvYWRFcnJvcikge1xyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnTm9TdWNoS2V5JyB8fCBlcnJvci5uYW1lID09PSAnTm9TdWNoQnVja2V0Jykge1xyXG4gICAgICAgICAgLy8gT2JqZWN0IG9yIGJ1Y2tldCBkb2Vzbid0IGV4aXN0IC0gcmV0dXJuIGVtcHR5IGNvbmZpZ1xyXG4gICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWQnKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgQVdTU2VydmljZUVycm9yKFxyXG4gICAgICAgICAgICBgQWNjZXNzIGRlbmllZCB3aGVuIHJldHJpZXZpbmcgczM6Ly8ke3RoaXMuX2NvbmZpZy5idWNrZXR9LyR7dGhpcy5fY29uZmlnLmtleX0uIENoZWNrIEFXUyBjcmVkZW50aWFscyBhbmQgcGVybWlzc2lvbnMuYCxcclxuICAgICAgICAgICAgJ1MzJyxcclxuICAgICAgICAgICAgJ0dldE9iamVjdCcsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBzMzovLyR7dGhpcy5fY29uZmlnLmJ1Y2tldH0vJHt0aGlzLl9jb25maWcua2V5fTogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCxcclxuICAgICAgICAnUzMnLFxyXG4gICAgICAgICdHZXRPYmplY3QnLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIGNvbnRlbnQgYmFzZWQgb24gZm9ybWF0IHNldHRpbmcgb3IgYXV0by1kZXRlY3Rpb24uXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHBhcnNlQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XHJcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLl9jb25maWcuZm9ybWF0ID09PSAnYXV0bycgPyB0aGlzLmRldGVjdEZvcm1hdChjb250ZW50KSA6IHRoaXMuX2NvbmZpZy5mb3JtYXQ7XHJcblxyXG4gICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlSnNvbihjb250ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBFbnZGaWxlUGFyc2VyLnBhcnNlKGNvbnRlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZWN0IGNvbnRlbnQgZm9ybWF0IGJhc2VkIG9uIHN0cnVjdHVyZS5cclxuICAgKiBKU09OIGNvbnRlbnQgc3RhcnRzIHdpdGggJ3snIGFmdGVyIHRyaW1taW5nIHdoaXRlc3BhY2UuXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRldGVjdEZvcm1hdChjb250ZW50OiBzdHJpbmcpOiAnanNvbicgfCAnZW52JyB7XHJcbiAgICBjb25zdCB0cmltbWVkID0gY29udGVudC50cmltKCk7XHJcbiAgICBpZiAodHJpbW1lZC5zdGFydHNXaXRoKCd7JykpIHtcclxuICAgICAgcmV0dXJuICdqc29uJztcclxuICAgIH1cclxuICAgIHJldHVybiAnZW52JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIEpTT04gY29udGVudC5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGFyc2VKc29uKGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoY29udGVudCk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHBhcnNlZCA9PT0gJ29iamVjdCcgJiYgcGFyc2VkICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcclxuICAgICAgICByZXR1cm4gcGFyc2VkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJZiBub3QgYW4gb2JqZWN0LCB3cmFwIGl0XHJcbiAgICAgIHJldHVybiB7IENPTkZJR19WQUxVRTogcGFyc2VkIH07XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkxvYWRFcnJvcihcclxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIEpTT04gZnJvbSBzMzovLyR7dGhpcy5fY29uZmlnLmJ1Y2tldH0vJHt0aGlzLl9jb25maWcua2V5fTogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCxcclxuICAgICAgICB0aGlzLmdldE5hbWUoKSxcclxuICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9zMy5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25CLGdCQUFnQjtJQUNHLE9BQU8sQ0FBMkI7SUFDckQsZ0JBQWdCO0lBQ0csT0FBTyxDQUFXO0lBRXJDLFlBQVksTUFBc0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7WUFDZixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLFdBQVc7WUFDakUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTTtTQUNoQyxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQztZQUMxQixXQUFXLEVBQUUscUJBQXFCLEVBQUU7WUFDcEMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8saUJBQWlCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFH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ZWN0Q29tbWFuZCwgUzNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xyXG5pbXBvcnQgeyBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4gfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWctbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcbmltcG9ydCB0eXBlIHsgUzNMb2FkZXJDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3MzLWxvYWRlci5pbnRlcmZhY2UuanMnO1xyXG5pbXBvcnQgeyBFbnZGaWxlUGFyc2VyIH0gZnJvbSAnLi4vdXRpbHMvZW52LWZpbGUtcGFyc2VyLnV0aWwuanMnO1xyXG5pbXBvcnQgeyBBV1NTZXJ2aWNlRXJyb3IsIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvaW5kZXguanMnO1xyXG5cclxuLyoqXHJcbiAqIExvYWRlciB0aGF0IHJlYWRzIGNvbmZpZ3VyYXRpb24gZnJvbSBTMyBidWNrZXRzLlxyXG4gKiBTdXBwb3J0cyBKU09OIGFuZCAuZW52IGZpbGUgZm9ybWF0cyB3aXRoIGF1dG8tZGV0ZWN0aW9uLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIC8vIExvYWQgSlNPTiBjb25maWcgZnJvbSBTM1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgUzNMb2FkZXIoe1xyXG4gKiAgIGJ1Y2tldDogJ215LWNvbmZpZy1idWNrZXQnLFxyXG4gKiAgIGtleTogJ2NvbmZpZy9hcHAuanNvbicsXHJcbiAqICAgZm9ybWF0OiAnanNvbidcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIExvYWQgLmVudiBmaWxlIGZyb20gUzMgd2l0aCBhdXRvLWRldGVjdGlvblxyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgUzNMb2FkZXIoe1xyXG4gKiAgIGJ1Y2tldDogJ215LWNvbmZpZy1idWNrZXQnLFxyXG4gKiAgIGtleTogJ2NvbmZpZy8uZW52J1xyXG4gKiB9KTtcclxuICogYGBgXHJcbiAqXHJcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdXNlLWVudmlyb25tZW50LWZpbGUuaHRtbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFMzTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IFJlcXVpcmVkPFMzTG9hZGVyQ29uZmlnPjtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFMzQ2xpZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFMzTG9hZGVyQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSB7XHJcbiAgICAgIGJ1Y2tldDogY29uZmlnLmJ1Y2tldCxcclxuICAgICAga2V5OiBjb25maWcua2V5LFxyXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgcHJvY2Vzcy5lbnZbJ0FXU19SRUdJT04nXSB8fCAndXMtZWFzdC0xJyxcclxuICAgICAgZm9ybWF0OiBjb25maWcuZm9ybWF0IHx8ICdhdXRvJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5fY2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpLFxyXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgUzNMb2FkZXIoczM6Ly8ke3RoaXMuX2NvbmZpZy5idWNrZXR9LyR7dGhpcy5fY29uZmlnLmtleX0pYDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGxvYWRlciBpcyBhdmFpbGFibGUgYnkgdmVyaWZ5aW5nIEFXUyBjcmVkZW50aWFscy5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0cnVlIGlmIEFXUyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgYXN5bmMgaXNBdmFpbGFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9jbGllbnQuY29uZmlnLmNyZWRlbnRpYWxzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIFMzLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24ga2V5LXZhbHVlIHBhaXJzXHJcbiAgICogQHRocm93cyBBV1NTZXJ2aWNlRXJyb3IgaWYgUzMgb3BlcmF0aW9uIGZhaWxzXHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uTG9hZEVycm9yIGlmIGNvbnRlbnQgY2Fubm90IGJlIHBhcnNlZFxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRPYmplY3RDb21tYW5kKHtcclxuICAgICAgICBCdWNrZXQ6IHRoaXMuX2NvbmZpZy5idWNrZXQsXHJcbiAgICAgICAgS2V5OiB0aGlzLl9jb25maWcua2V5LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5fY2xpZW50LnNlbmQoY29tbWFuZCk7XHJcblxyXG4gICAgICBpZiAoIXJlc3BvbnNlLkJvZHkpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZXNwb25zZS5Cb2R5LnRyYW5zZm9ybVRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudC50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNvbnRlbnQoY29udGVudCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBDb25maWd1cmF0aW9uTG9hZEVycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdOb1N1Y2hLZXknIHx8IGVycm9yLm5hbWUgPT09ICdOb1N1Y2hCdWNrZXQnKSB7XHJcbiAgICAgICAgICAvLyBPYmplY3Qgb3IgYnVja2V0IGRvZXNuJ3QgZXhpc3QgLSByZXR1cm4gZW1wdHkgY29uZmlnXHJcbiAgICAgICAgICByZXR1cm4ge307XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0FjY2Vzc0RlbmllZCcpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgICAgIGBBY2Nlc3MgZGVuaWVkIHdoZW4gcmV0cmlldmluZyBzMzovLyR7dGhpcy5fY29uZmlnLmJ1Y2tldH0vJHt0aGlzLl9jb25maWcua2V5fS4gQ2hlY2sgQVdTIGNyZWRlbnRpYWxzIGFuZCBwZXJtaXNzaW9ucy5gLFxyXG4gICAgICAgICAgICAnUzMnLFxyXG4gICAgICAgICAgICAnR2V0T2JqZWN0JyxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICBgRmFpbGVkIHRvIHJldHJpZXZlIHMzOi8vJHt0aGlzLl9jb25maWcuYnVja2V0fS8ke3RoaXMuX2NvbmZpZy5rZXl9OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLFxyXG4gICAgICAgICdTMycsXHJcbiAgICAgICAgJ0dldE9iamVjdCcsXHJcbiAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgY29udGVudCBiYXNlZCBvbiBmb3JtYXQgc2V0dGluZyBvciBhdXRvLWRldGVjdGlvbi5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGFyc2VDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcclxuICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuX2NvbmZpZy5mb3JtYXQgPT09ICdhdXRvJyA/IHRoaXMuZGV0ZWN0Rm9ybWF0KGNvbnRlbnQpIDogdGhpcy5fY29uZmlnLmZvcm1hdDtcclxuXHJcbiAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFyc2VKc29uKGNvbnRlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIEVudkZpbGVQYXJzZXIucGFyc2UoY29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlY3QgY29udGVudCBmb3JtYXQgYmFzZWQgb24gc3RydWN0dXJlLlxyXG4gICAqIEpTT04gY29udGVudCBzdGFydHMgd2l0aCAneycgYWZ0ZXIgdHJpbW1pbmcgd2hpdGVzcGFjZS5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGV0ZWN0Rm9ybWF0KGNvbnRlbnQ6IHN0cmluZyk6ICdqc29uJyB8ICdlbnYnIHtcclxuICAgIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcclxuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xyXG4gICAgICByZXR1cm4gJ2pzb24nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdlbnYnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgSlNPTiBjb250ZW50LlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwYXJzZUpzb24oY29udGVudDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiBwYXJzZWQgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZWQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIElmIG5vdCBhbiBvYmplY3QsIHdyYXAgaXRcclxuICAgICAgcmV0dXJuIHsgQ09ORklHX1ZBTFVFOiBwYXJzZWQgfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uTG9hZEVycm9yKFxyXG4gICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgSlNPTiBmcm9tIHMzOi8vJHt0aGlzLl9jb25maWcuYnVja2V0fS8ke3RoaXMuX2NvbmZpZy5rZXl9OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLFxyXG4gICAgICAgIHRoaXMuZ2V0TmFtZSgpLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,6 +1,6 @@
1
1
  import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
2
  import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
3
- import { AWSServiceError, ConfigurationLoadError } from '../errors';
3
+ import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
4
4
  /**
5
5
  * Loader that reads configuration from AWS Secrets Manager.
6
6
  * Supports environment-aware path construction.
@@ -51,11 +51,18 @@ export class SecretsManagerLoader {
51
51
  }
52
52
  /**
53
53
  * Get the name of this loader for logging and debugging.
54
- * @returns The loader name with secret path
54
+ * @returns The loader name with secret path or base secret name if path cannot be built
55
55
  */
56
56
  getName() {
57
- const secretName = this.buildSecretName();
58
- return `SecretsManagerLoader(${secretName})`;
57
+ // Avoid calling buildSecretName() to prevent stack overflow when
58
+ // environment mapping is missing - buildSecretName() throws an error
59
+ // that includes getName() in the message, causing infinite recursion.
60
+ const envPrefix = this._config.environmentMapping[this._appEnv];
61
+ if (envPrefix) {
62
+ return `SecretsManagerLoader(/${envPrefix}${this._config.secretName})`;
63
+ }
64
+ // Fallback to base secret name when environment mapping is unavailable
65
+ return `SecretsManagerLoader(${this._config.secretName})`;
59
66
  }
60
67
  /**
61
68
  * Check if this loader is available in the current environment.
@@ -155,4 +162,4 @@ export class SecretsManagerLoader {
155
162
  return { ...this._config.environmentMapping };
156
163
  }
157
164
  }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy1tYW5hZ2VyLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy1hd3Mvc3JjL2xvYWRlcnMvc2VjcmV0cy1tYW5hZ2VyLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixnQkFBZ0I7SUFDRyxPQUFPLENBQXVCO0lBQ2pELGdCQUFnQjtJQUNHLE9BQU8sQ0FBdUM7SUFDakUsZ0JBQWdCO0lBQ0csT0FBTyxDQUFTO0lBRW5DLFlBQVksU0FBcUMsRUFBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUM7UUFFNUUsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxvQkFBb0I7WUFDckQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxXQUFXO1lBQ2pFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSTtnQkFDL0MsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxZQUFZO2FBQ3pCO1NBQ0YsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsT0FB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ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XHJcbmltcG9ydCB7IGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWctbG9hZGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB0eXBlIHsgU2VjcmV0c01hbmFnZXJMb2FkZXJDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlY3JldHMtbWFuYWdlci1sb2FkZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQVdTU2VydmljZUVycm9yLCBDb25maWd1cmF0aW9uTG9hZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcclxuXHJcbi8qKlxyXG4gKiBMb2FkZXIgdGhhdCByZWFkcyBjb25maWd1cmF0aW9uIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlci5cclxuICogU3VwcG9ydHMgZW52aXJvbm1lbnQtYXdhcmUgcGF0aCBjb25zdHJ1Y3Rpb24uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gQmFzaWMgdXNhZ2VcclxuICogY29uc3QgbG9hZGVyID0gbmV3IFNlY3JldHNNYW5hZ2VyTG9hZGVyKHtcclxuICogICBzZWNyZXROYW1lOiAnL215LWFwcC9jb25maWcnLFxyXG4gKiAgIHJlZ2lvbjogJ3VzLWVhc3QtMSdcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIFdpdGggZW52aXJvbm1lbnQgbWFwcGluZ1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgU2VjcmV0c01hbmFnZXJMb2FkZXIoe1xyXG4gKiAgIHNlY3JldE5hbWU6ICcvbXktYXBwL2NvbmZpZycsXHJcbiAqICAgZW52aXJvbm1lbnRNYXBwaW5nOiB7XHJcbiAqICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAqICAgICBzdGFnaW5nOiAnc3RnJyxcclxuICogICAgIHByb2R1Y3Rpb246ICdwcm9kJ1xyXG4gKiAgIH1cclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNlY3JldHNNYW5hZ2VyTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFNlY3JldHNNYW5hZ2VyQ2xpZW50O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogUmVxdWlyZWQ8U2VjcmV0c01hbmFnZXJMb2FkZXJDb25maWc+O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FwcEVudjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFNlY3JldHNNYW5hZ2VyTG9hZGVyQ29uZmlnID0ge30pIHtcclxuICAgIHRoaXMuX2FwcEVudiA9IHByb2Nlc3MuZW52WydBUFBfRU5WJ10gfHwgcHJvY2Vzcy5lbnZbJ05PREVfRU5WJ10gfHwgJ2xvY2FsJztcclxuXHJcbiAgICAvLyBTZXQgZGVmYXVsdCBjb25maWd1cmF0aW9uXHJcbiAgICB0aGlzLl9jb25maWcgPSB7XHJcbiAgICAgIHNlY3JldE5hbWU6IGNvbmZpZy5zZWNyZXROYW1lIHx8ICcvbmVzdGpzLWNvbmZpZy1hd3MnLFxyXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgcHJvY2Vzcy5lbnZbJ0FXU19SRUdJT04nXSB8fCAndXMtZWFzdC0xJyxcclxuICAgICAgZW52aXJvbm1lbnRNYXBwaW5nOiBjb25maWcuZW52aXJvbm1lbnRNYXBwaW5nIHx8IHtcclxuICAgICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAgICAgICAgdGVzdDogJ3Rlc3QnLFxyXG4gICAgICAgIHByb2R1Y3Rpb246ICdwcm9kdWN0aW9uJyxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIGNsaWVudFxyXG4gICAgdGhpcy5fY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHtcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpLFxyXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhpcyBsb2FkZXIgZm9yIGxvZ2dpbmcgYW5kIGRlYnVnZ2luZy5cclxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVyIG5hbWUgd2l0aCBzZWNyZXQgcGF0aFxyXG4gICAqL1xyXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlY3JldE5hbWUgPSB0aGlzLmJ1aWxkU2VjcmV0TmFtZSgpO1xyXG4gICAgcmV0dXJuIGBTZWNyZXRzTWFuYWdlckxvYWRlcigke3NlY3JldE5hbWV9KWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGxvYWRlciBpcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdHJ1ZSBpZiBub3QgaW4gbG9jYWwgZW52aXJvbm1lbnQgYW5kIEFXUyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgYXN5bmMgaXNBdmFpbGFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBTa2lwIGluIGxvY2FsIGVudmlyb25tZW50XHJcbiAgICBpZiAodGhpcy5fYXBwRW52ID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBUZXN0IEFXUyBjcmVkZW50aWFscyBieSBhdHRlbXB0aW5nIHRvIGdldCBjYWxsZXIgaWRlbnRpdHlcclxuICAgICAgYXdhaXQgdGhpcy5fY2xpZW50LmNvbmZpZy5jcmVkZW50aWFscygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24ga2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIHNlY3JldFxyXG4gICAqIEB0aHJvd3MgQVdTU2VydmljZUVycm9yIGlmIEFXUyBvcGVyYXRpb24gZmFpbHNcclxuICAgKiBAdGhyb3dzIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgaWYgc2VjcmV0IGNhbm5vdCBiZSBwYXJzZWRcclxuICAgKi9cclxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcclxuICAgIC8vIFNraXAgbG9hZGluZyBpbiBsb2NhbCBlbnZpcm9ubWVudFxyXG4gICAgaWYgKHRoaXMuX2FwcEVudiA9PT0gJ2xvY2FsJykge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VjcmV0TmFtZSA9IHRoaXMuYnVpbGRTZWNyZXROYW1lKCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQoeyBTZWNyZXRJZDogc2VjcmV0TmFtZSB9KTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9jbGllbnQuc2VuZChjb21tYW5kKTtcclxuXHJcbiAgICAgIGlmICghcmVzcG9uc2UuU2VjcmV0U3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBUcnkgdG8gcGFyc2UgYXMgSlNPTiwgZmFsbGJhY2sgdG8gc3RyaW5nIHZhbHVlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyZXNwb25zZS5TZWNyZXRTdHJpbmcpO1xyXG5cclxuICAgICAgICAvLyBFbnN1cmUgd2UgcmV0dXJuIGFuIG9iamVjdCBmb3IgY29uZmlndXJhdGlvbiBtZXJnaW5nXHJcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnICYmIHBhcnNlZCAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XHJcbiAgICAgICAgICByZXR1cm4gcGFyc2VkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBJZiBpdCdzIG5vdCBhbiBvYmplY3QsIHdyYXAgaXQgaW4gYSBjb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAgICAgICAgcmV0dXJuIHsgU0VDUkVUX1ZBTFVFOiBwYXJzZWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIC8vIElmIEpTT04gcGFyc2luZyBmYWlscywgdHJlYXQgYXMgYSBzaW5nbGUgc3RyaW5nIHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHsgU0VDUkVUX1ZBTFVFOiByZXNwb25zZS5TZWNyZXRTdHJpbmcgfTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gSGFuZGxlIHNwZWNpZmljIEFXUyBlcnJvcnNcclxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKSB7XHJcbiAgICAgICAgICAvLyBTZWNyZXQgZG9lc24ndCBleGlzdCAtIHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yIGluIGFsbCBlbnZpcm9ubWVudHNcclxuICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnQWNjZXNzRGVuaWVkRXhjZXB0aW9uJykge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICAgICAgYEFjY2VzcyBkZW5pZWQgd2hlbiByZXRyaWV2aW5nIHNlY3JldCAnJHtzZWNyZXROYW1lfScuIENoZWNrIEFXUyBjcmVkZW50aWFscyBhbmQgcGVybWlzc2lvbnMuYCxcclxuICAgICAgICAgICAgJ1NlY3JldHNNYW5hZ2VyJyxcclxuICAgICAgICAgICAgJ0dldFNlY3JldFZhbHVlJyxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdJbnZhbGlkUmVxdWVzdEV4Y2VwdGlvbicpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgICAgIGBJbnZhbGlkIHJlcXVlc3Qgd2hlbiByZXRyaWV2aW5nIHNlY3JldCAnJHtzZWNyZXROYW1lfScuIENoZWNrIHNlY3JldCBuYW1lIGZvcm1hdC5gLFxyXG4gICAgICAgICAgICAnU2VjcmV0c01hbmFnZXInLFxyXG4gICAgICAgICAgICAnR2V0U2VjcmV0VmFsdWUnLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBGb3Igb3RoZXIgZXJyb3JzLCB3cmFwIGluIEFXU1NlcnZpY2VFcnJvclxyXG4gICAgICB0aHJvdyBuZXcgQVdTU2VydmljZUVycm9yKFxyXG4gICAgICAgIGBGYWlsZWQgdG8gcmV0cmlldmUgc2VjcmV0ICcke3NlY3JldE5hbWV9JyBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXI6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXHJcbiAgICAgICAgJ1NlY3JldHNNYW5hZ2VyJyxcclxuICAgICAgICAnR2V0U2VjcmV0VmFsdWUnLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkIHRoZSBlbnZpcm9ubWVudC1hd2FyZSBzZWNyZXQgbmFtZS9wYXRoLlxyXG4gICAqIEByZXR1cm5zIFRoZSBmdWxsIHNlY3JldCBuYW1lIHdpdGggZW52aXJvbm1lbnQgcHJlZml4XHJcbiAgICovXHJcbiAgYnVpbGRTZWNyZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlbnZQcmVmaXggPSB0aGlzLl9jb25maWcuZW52aXJvbm1lbnRNYXBwaW5nW3RoaXMuX2FwcEVudl07XHJcblxyXG4gICAgaWYgKCFlbnZQcmVmaXgpIHtcclxuICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IoXHJcbiAgICAgICAgYE5vIGVudmlyb25tZW50IG1hcHBpbmcgZm91bmQgZm9yIEFQUF9FTlYgJyR7dGhpcy5fYXBwRW52fScuIGAgK1xyXG4gICAgICAgICAgYEF2YWlsYWJsZSBlbnZpcm9ubWVudHM6ICR7T2JqZWN0LmtleXModGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZykuam9pbignLCAnKX1gLFxyXG4gICAgICAgIHRoaXMuZ2V0TmFtZSgpLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBgLyR7ZW52UHJlZml4fSR7dGhpcy5fY29uZmlnLnNlY3JldE5hbWV9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCBhcHAgZW52aXJvbm1lbnQuXHJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgQVBQX0VOViBvciBOT0RFX0VOViB2YWx1ZVxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FwcEVudjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZW52aXJvbm1lbnQgbWFwcGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBlbnZpcm9ubWVudCBtYXBwaW5nIHJlY29yZFxyXG4gICAqL1xyXG4gIGdldEVudmlyb25tZW50TWFwcGluZygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuX2NvbmZpZy5lbnZpcm9ubWVudE1hcHBpbmcgfTtcclxuICB9XHJcbn1cclxuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy1tYW5hZ2VyLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy1hd3Mvc3JjL2xvYWRlcnMvc2VjcmV0cy1tYW5hZ2VyLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLGdCQUFnQjtJQUNHLE9BQU8sQ0FBdUI7SUFDakQsZ0JBQWdCO0lBQ0csT0FBTyxDQUF1QztJQUNqRSxnQkFBZ0I7SUFDRyxPQUFPLENBQVM7SUFFbkMsWUFBWSxTQUFxQyxFQUFFO1FBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQztRQUU1RSw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLG9CQUFvQjtZQUNyRCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLFdBQVc7WUFDakUsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixJQUFJO2dCQUMvQyxXQUFXLEVBQUUsS0FBSztnQkFDbEIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osVUFBVSxFQUFFLFlBQVk7YUFDekI7U0FDRixDQUFDO1FBRUYsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxP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O0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XHJcbmltcG9ydCB7IGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWctbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcbmltcG9ydCB0eXBlIHsgU2VjcmV0c01hbmFnZXJMb2FkZXJDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlY3JldHMtbWFuYWdlci1sb2FkZXIuaW50ZXJmYWNlLmpzJztcclxuaW1wb3J0IHsgQVdTU2VydmljZUVycm9yLCBDb25maWd1cmF0aW9uTG9hZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL2luZGV4LmpzJztcclxuXHJcbi8qKlxyXG4gKiBMb2FkZXIgdGhhdCByZWFkcyBjb25maWd1cmF0aW9uIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlci5cclxuICogU3VwcG9ydHMgZW52aXJvbm1lbnQtYXdhcmUgcGF0aCBjb25zdHJ1Y3Rpb24uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gQmFzaWMgdXNhZ2VcclxuICogY29uc3QgbG9hZGVyID0gbmV3IFNlY3JldHNNYW5hZ2VyTG9hZGVyKHtcclxuICogICBzZWNyZXROYW1lOiAnL215LWFwcC9jb25maWcnLFxyXG4gKiAgIHJlZ2lvbjogJ3VzLWVhc3QtMSdcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIFdpdGggZW52aXJvbm1lbnQgbWFwcGluZ1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgU2VjcmV0c01hbmFnZXJMb2FkZXIoe1xyXG4gKiAgIHNlY3JldE5hbWU6ICcvbXktYXBwL2NvbmZpZycsXHJcbiAqICAgZW52aXJvbm1lbnRNYXBwaW5nOiB7XHJcbiAqICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAqICAgICBzdGFnaW5nOiAnc3RnJyxcclxuICogICAgIHByb2R1Y3Rpb246ICdwcm9kJ1xyXG4gKiAgIH1cclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNlY3JldHNNYW5hZ2VyTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFNlY3JldHNNYW5hZ2VyQ2xpZW50O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogUmVxdWlyZWQ8U2VjcmV0c01hbmFnZXJMb2FkZXJDb25maWc+O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FwcEVudjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFNlY3JldHNNYW5hZ2VyTG9hZGVyQ29uZmlnID0ge30pIHtcclxuICAgIHRoaXMuX2FwcEVudiA9IHByb2Nlc3MuZW52WydBUFBfRU5WJ10gfHwgcHJvY2Vzcy5lbnZbJ05PREVfRU5WJ10gfHwgJ2xvY2FsJztcclxuXHJcbiAgICAvLyBTZXQgZGVmYXVsdCBjb25maWd1cmF0aW9uXHJcbiAgICB0aGlzLl9jb25maWcgPSB7XHJcbiAgICAgIHNlY3JldE5hbWU6IGNvbmZpZy5zZWNyZXROYW1lIHx8ICcvbmVzdGpzLWNvbmZpZy1hd3MnLFxyXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgcHJvY2Vzcy5lbnZbJ0FXU19SRUdJT04nXSB8fCAndXMtZWFzdC0xJyxcclxuICAgICAgZW52aXJvbm1lbnRNYXBwaW5nOiBjb25maWcuZW52aXJvbm1lbnRNYXBwaW5nIHx8IHtcclxuICAgICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAgICAgICAgdGVzdDogJ3Rlc3QnLFxyXG4gICAgICAgIHByb2R1Y3Rpb246ICdwcm9kdWN0aW9uJyxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIGNsaWVudFxyXG4gICAgdGhpcy5fY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHtcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpLFxyXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhpcyBsb2FkZXIgZm9yIGxvZ2dpbmcgYW5kIGRlYnVnZ2luZy5cclxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVyIG5hbWUgd2l0aCBzZWNyZXQgcGF0aCBvciBiYXNlIHNlY3JldCBuYW1lIGlmIHBhdGggY2Fubm90IGJlIGJ1aWx0XHJcbiAgICovXHJcbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgLy8gQXZvaWQgY2FsbGluZyBidWlsZFNlY3JldE5hbWUoKSB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IHdoZW5cclxuICAgIC8vIGVudmlyb25tZW50IG1hcHBpbmcgaXMgbWlzc2luZyAtIGJ1aWxkU2VjcmV0TmFtZSgpIHRocm93cyBhbiBlcnJvclxyXG4gICAgLy8gdGhhdCBpbmNsdWRlcyBnZXROYW1lKCkgaW4gdGhlIG1lc3NhZ2UsIGNhdXNpbmcgaW5maW5pdGUgcmVjdXJzaW9uLlxyXG4gICAgY29uc3QgZW52UHJlZml4ID0gdGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZ1t0aGlzLl9hcHBFbnZdO1xyXG4gICAgaWYgKGVudlByZWZpeCkge1xyXG4gICAgICByZXR1cm4gYFNlY3JldHNNYW5hZ2VyTG9hZGVyKC8ke2VudlByZWZpeH0ke3RoaXMuX2NvbmZpZy5zZWNyZXROYW1lfSlgO1xyXG4gICAgfVxyXG4gICAgLy8gRmFsbGJhY2sgdG8gYmFzZSBzZWNyZXQgbmFtZSB3aGVuIGVudmlyb25tZW50IG1hcHBpbmcgaXMgdW5hdmFpbGFibGVcclxuICAgIHJldHVybiBgU2VjcmV0c01hbmFnZXJMb2FkZXIoJHt0aGlzLl9jb25maWcuc2VjcmV0TmFtZX0pYDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoaXMgbG9hZGVyIGlzIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0cnVlIGlmIG5vdCBpbiBsb2NhbCBlbnZpcm9ubWVudCBhbmQgQVdTIGNyZWRlbnRpYWxzIGFyZSBhdmFpbGFibGVcclxuICAgKi9cclxuICBhc3luYyBpc0F2YWlsYWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vIFNraXAgaW4gbG9jYWwgZW52aXJvbm1lbnRcclxuICAgIGlmICh0aGlzLl9hcHBFbnYgPT09ICdsb2NhbCcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRlc3QgQVdTIGNyZWRlbnRpYWxzIGJ5IGF0dGVtcHRpbmcgdG8gZ2V0IGNhbGxlciBpZGVudGl0eVxyXG4gICAgICBhd2FpdCB0aGlzLl9jbGllbnQuY29uZmlnLmNyZWRlbnRpYWxzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gY29uZmlndXJhdGlvbiBrZXktdmFsdWUgcGFpcnMgZnJvbSB0aGUgc2VjcmV0XHJcbiAgICogQHRocm93cyBBV1NTZXJ2aWNlRXJyb3IgaWYgQVdTIG9wZXJhdGlvbiBmYWlsc1xyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkxvYWRFcnJvciBpZiBzZWNyZXQgY2Fubm90IGJlIHBhcnNlZFxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgLy8gU2tpcCBsb2FkaW5nIGluIGxvY2FsIGVudmlyb25tZW50XHJcbiAgICBpZiAodGhpcy5fYXBwRW52ID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWNyZXROYW1lID0gdGhpcy5idWlsZFNlY3JldE5hbWUoKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7IFNlY3JldElkOiBzZWNyZXROYW1lIH0pO1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuX2NsaWVudC5zZW5kKGNvbW1hbmQpO1xyXG5cclxuICAgICAgaWYgKCFyZXNwb25zZS5TZWNyZXRTdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRyeSB0byBwYXJzZSBhcyBKU09OLCBmYWxsYmFjayB0byBzdHJpbmcgdmFsdWVcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3BvbnNlLlNlY3JldFN0cmluZyk7XHJcblxyXG4gICAgICAgIC8vIEVuc3VyZSB3ZSByZXR1cm4gYW4gb2JqZWN0IGZvciBjb25maWd1cmF0aW9uIG1lcmdpbmdcclxuICAgICAgICBpZiAodHlwZW9mIHBhcnNlZCA9PT0gJ29iamVjdCcgJiYgcGFyc2VkICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcclxuICAgICAgICAgIHJldHVybiBwYXJzZWQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIElmIGl0J3Mgbm90IGFuIG9iamVjdCwgd3JhcCBpdCBpbiBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICAgICAgICByZXR1cm4geyBTRUNSRVRfVkFMVUU6IHBhcnNlZCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgLy8gSWYgSlNPTiBwYXJzaW5nIGZhaWxzLCB0cmVhdCBhcyBhIHNpbmdsZSBzdHJpbmcgdmFsdWVcclxuICAgICAgICByZXR1cm4geyBTRUNSRVRfVkFMVUU6IHJlc3BvbnNlLlNlY3JldFN0cmluZyB9O1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBIYW5kbGUgc3BlY2lmaWMgQVdTIGVycm9yc1xyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbicpIHtcclxuICAgICAgICAgIC8vIFNlY3JldCBkb2Vzbid0IGV4aXN0IC0gdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgYW4gZXJyb3IgaW4gYWxsIGVudmlyb25tZW50c1xyXG4gICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgQVdTU2VydmljZUVycm9yKFxyXG4gICAgICAgICAgICBgQWNjZXNzIGRlbmllZCB3aGVuIHJldHJpZXZpbmcgc2VjcmV0ICcke3NlY3JldE5hbWV9Jy4gQ2hlY2sgQVdTIGNyZWRlbnRpYWxzIGFuZCBwZXJtaXNzaW9ucy5gLFxyXG4gICAgICAgICAgICAnU2VjcmV0c01hbmFnZXInLFxyXG4gICAgICAgICAgICAnR2V0U2VjcmV0VmFsdWUnLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0ludmFsaWRSZXF1ZXN0RXhjZXB0aW9uJykge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICAgICAgYEludmFsaWQgcmVxdWVzdCB3aGVuIHJldHJpZXZpbmcgc2VjcmV0ICcke3NlY3JldE5hbWV9Jy4gQ2hlY2sgc2VjcmV0IG5hbWUgZm9ybWF0LmAsXHJcbiAgICAgICAgICAgICdTZWNyZXRzTWFuYWdlcicsXHJcbiAgICAgICAgICAgICdHZXRTZWNyZXRWYWx1ZScsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEZvciBvdGhlciBlcnJvcnMsIHdyYXAgaW4gQVdTU2VydmljZUVycm9yXHJcbiAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBzZWNyZXQgJyR7c2VjcmV0TmFtZX0nIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlcjogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCxcclxuICAgICAgICAnU2VjcmV0c01hbmFnZXInLFxyXG4gICAgICAgICdHZXRTZWNyZXRWYWx1ZScsXHJcbiAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnVpbGQgdGhlIGVudmlyb25tZW50LWF3YXJlIHNlY3JldCBuYW1lL3BhdGguXHJcbiAgICogQHJldHVybnMgVGhlIGZ1bGwgc2VjcmV0IG5hbWUgd2l0aCBlbnZpcm9ubWVudCBwcmVmaXhcclxuICAgKi9cclxuICBidWlsZFNlY3JldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVudlByZWZpeCA9IHRoaXMuX2NvbmZpZy5lbnZpcm9ubWVudE1hcHBpbmdbdGhpcy5fYXBwRW52XTtcclxuXHJcbiAgICBpZiAoIWVudlByZWZpeCkge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkxvYWRFcnJvcihcclxuICAgICAgICBgTm8gZW52aXJvbm1lbnQgbWFwcGluZyBmb3VuZCBmb3IgQVBQX0VOViAnJHt0aGlzLl9hcHBFbnZ9Jy4gYCArXHJcbiAgICAgICAgICBgQXZhaWxhYmxlIGVudmlyb25tZW50czogJHtPYmplY3Qua2V5cyh0aGlzLl9jb25maWcuZW52aXJvbm1lbnRNYXBwaW5nKS5qb2luKCcsICcpfWAsXHJcbiAgICAgICAgdGhpcy5nZXROYW1lKCksXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAvJHtlbnZQcmVmaXh9JHt0aGlzLl9jb25maWcuc2VjcmV0TmFtZX1gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IGFwcCBlbnZpcm9ubWVudC5cclxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBBUFBfRU5WIG9yIE5PREVfRU5WIHZhbHVlXHJcbiAgICovXHJcbiAgZ2V0QXBwRW52KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBwRW52O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBlbnZpcm9ubWVudCBtYXBwaW5nIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogQHJldHVybnMgVGhlIGVudmlyb25tZW50IG1hcHBpbmcgcmVjb3JkXHJcbiAgICovXHJcbiAgZ2V0RW52aXJvbm1lbnRNYXBwaW5nKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZyB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { GetParametersByPathCommand, SSMClient } from '@aws-sdk/client-ssm';
2
2
  import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
3
- import { AWSServiceError, ConfigurationLoadError } from '../errors';
3
+ import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
4
4
  /**
5
5
  * Loader that reads configuration from AWS SSM Parameter Store.
6
6
  * Supports environment-aware path construction, pagination, and decryption options.
@@ -192,4 +192,4 @@ export class SSMParameterStoreLoader {
192
192
  return { ...this._config.environmentMapping };
193
193
  }
194
194
  }
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NtLXBhcmFtZXRlci1zdG9yZS5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9jb25maWctYXdzL3NyYy9sb2FkZXJzL3NzbS1wYXJhbWV0ZXItc3RvcmUubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxnQkFBZ0I7SUFDRyxPQUFPLENBQVk7SUFDdEMsZ0JBQWdCO0lBQ0csT0FBTyxDQUEwQztJQUNwRSxnQkFBZ0I7SUFDRyxPQUFPLENBQVM7SUFFbkMsWUFBWSxTQUF3QyxFQUFFO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQztRQUU1RSw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLGFBQWE7WUFDcEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxXQUFXO1lBQ2pFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSTtnQkFDL0MsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxZQUFZO2FBQ3pCO1lBQ0QsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFB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QUFFLEVBQ3RGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDZixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssc0JBQXNCLENBQUMsYUFBaUMsRUFBRSxVQUFrQjtRQUNsRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQseUJBQXlCO1FBQ3pCLElBQUksR0FBRyxHQUFHLGFBQWEsQ0FBQztRQUN4QixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMvQixHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsK0NBQStDO1FBQy9DLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU1Qyw2QkFBNkI7UUFDN0IsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxxQkFBcUI7UUFDbkIsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ2hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdldFBhcmFtZXRlcnNCeVBhdGhDb21tYW5kLCBTU01DbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3NtJztcclxuaW1wb3J0IHsgZnJvbU5vZGVQcm92aWRlckNoYWluIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBDb25maWdMb2FkZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy1sb2FkZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHR5cGUgeyBTU01QYXJhbWV0ZXJTdG9yZUxvYWRlckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvc3NtLXBhcmFtZXRlci1zdG9yZS1sb2FkZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQVdTU2VydmljZUVycm9yLCBDb25maWd1cmF0aW9uTG9hZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcclxuXHJcbi8qKlxyXG4gKiBMb2FkZXIgdGhhdCByZWFkcyBjb25maWd1cmF0aW9uIGZyb20gQVdTIFNTTSBQYXJhbWV0ZXIgU3RvcmUuXHJcbiAqIFN1cHBvcnRzIGVudmlyb25tZW50LWF3YXJlIHBhdGggY29uc3RydWN0aW9uLCBwYWdpbmF0aW9uLCBhbmQgZGVjcnlwdGlvbiBvcHRpb25zLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIC8vIEJhc2ljIHVzYWdlXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBTU01QYXJhbWV0ZXJTdG9yZUxvYWRlcih7XHJcbiAqICAgcGFyYW1ldGVyUGF0aDogJy9teS1hcHAvY29uZmlnJyxcclxuICogICByZWdpb246ICd1cy1lYXN0LTEnXHJcbiAqIH0pO1xyXG4gKlxyXG4gKiAvLyBXaXRoIGVudmlyb25tZW50IG1hcHBpbmdcclxuICogY29uc3QgbG9hZGVyID0gbmV3IFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyKHtcclxuICogICBwYXJhbWV0ZXJQYXRoOiAnL215LWFwcC9jb25maWcnLFxyXG4gKiAgIGVudmlyb25tZW50TWFwcGluZzoge1xyXG4gKiAgICAgZGV2ZWxvcG1lbnQ6ICdkZXYnLFxyXG4gKiAgICAgc3RhZ2luZzogJ3N0ZycsXHJcbiAqICAgICBwcm9kdWN0aW9uOiAncHJvZCdcclxuICogICB9XHJcbiAqIH0pO1xyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTU01QYXJhbWV0ZXJTdG9yZUxvYWRlciBpbXBsZW1lbnRzIENvbmZpZ0xvYWRlciB7XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfY2xpZW50OiBTU01DbGllbnQ7XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfY29uZmlnOiBSZXF1aXJlZDxTU01QYXJhbWV0ZXJTdG9yZUxvYWRlckNvbmZpZz47XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfYXBwRW52OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogU1NNUGFyYW1ldGVyU3RvcmVMb2FkZXJDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5fYXBwRW52ID0gcHJvY2Vzcy5lbnZbJ0FQUF9FTlYnXSB8fCBwcm9jZXNzLmVudlsnTk9ERV9FTlYnXSB8fCAnbG9jYWwnO1xyXG5cclxuICAgIC8vIFNldCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cclxuICAgIHRoaXMuX2NvbmZpZyA9IHtcclxuICAgICAgcGFyYW1ldGVyUGF0aDogY29uZmlnLnBhcmFtZXRlclBhdGggfHwgJy9jb25maWctYXdzJyxcclxuICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uIHx8IHByb2Nlc3MuZW52WydBV1NfUkVHSU9OJ10gfHwgJ3VzLWVhc3QtMScsXHJcbiAgICAgIGVudmlyb25tZW50TWFwcGluZzogY29uZmlnLmVudmlyb25tZW50TWFwcGluZyB8fCB7XHJcbiAgICAgICAgZGV2ZWxvcG1lbnQ6ICdkZXYnLFxyXG4gICAgICAgIHRlc3Q6ICd0ZXN0JyxcclxuICAgICAgICBwcm9kdWN0aW9uOiAncHJvZHVjdGlvbicsXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpdGhEZWNyeXB0aW9uOiBjb25maWcud2l0aERlY3J5cHRpb24gPz8gdHJ1ZSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBBV1MgU1NNIGNsaWVudFxyXG4gICAgdGhpcy5fY2xpZW50ID0gbmV3IFNTTUNsaWVudCh7XHJcbiAgICAgIGNyZWRlbnRpYWxzOiBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4oKSxcclxuICAgICAgcmVnaW9uOiB0aGlzLl9jb25maWcucmVnaW9uLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBuYW1lIG9mIHRoaXMgbG9hZGVyIGZvciBsb2dnaW5nIGFuZCBkZWJ1Z2dpbmcuXHJcbiAgICogQHJldHVybnMgVGhlIGxvYWRlciBuYW1lIHdpdGggcGFyYW1ldGVyIHBhdGhcclxuICAgKi9cclxuICBnZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBwYXJhbWV0ZXJQYXRoID0gdGhpcy5idWlsZFBhcmFtZXRlclBhdGgoKTtcclxuICAgICAgcmV0dXJuIGBTU01QYXJhbWV0ZXJTdG9yZUxvYWRlcigke3BhcmFtZXRlclBhdGh9KWA7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgLy8gRmFsbGJhY2sgaWYgcGF0aCBjb25zdHJ1Y3Rpb24gZmFpbHMgKGUuZy4sIG1pc3NpbmcgZW52IG1hcHBpbmcpXHJcbiAgICAgIHJldHVybiBgU1NNUGFyYW1ldGVyU3RvcmVMb2FkZXIoJHt0aGlzLl9jb25maWcucGFyYW1ldGVyUGF0aH0pYDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoaXMgbG9hZGVyIGlzIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0cnVlIGlmIG5vdCBpbiBsb2NhbCBlbnZpcm9ubWVudCBhbmQgQVdTIGNyZWRlbnRpYWxzIGFyZSBhdmFpbGFibGVcclxuICAgKi9cclxuICBhc3luYyBpc0F2YWlsYWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vIFNraXAgaW4gbG9jYWwgZW52aXJvbm1lbnRcclxuICAgIGlmICh0aGlzLl9hcHBFbnYgPT09ICdsb2NhbCcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRlc3QgQVdTIGNyZWRlbnRpYWxzIGJ5IGF0dGVtcHRpbmcgdG8gZ2V0IGNhbGxlciBpZGVudGl0eVxyXG4gICAgICBhd2FpdCB0aGlzLl9jbGllbnQuY29uZmlnLmNyZWRlbnRpYWxzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIEFXUyBTU00gUGFyYW1ldGVyIFN0b3JlLlxyXG4gICAqIEltcGxlbWVudHMgcmVjdXJzaXZlIHBhcmFtZXRlciBmZXRjaGluZyB3aXRoIE5leHRUb2tlbiBoYW5kbGluZyBmb3IgcGFnaW5hdGlvbi5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byBjb25maWd1cmF0aW9uIGtleS12YWx1ZSBwYWlycyBmcm9tIHBhcmFtZXRlcnNcclxuICAgKiBAdGhyb3dzIEFXU1NlcnZpY2VFcnJvciBpZiBBV1Mgb3BlcmF0aW9uIGZhaWxzXHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uTG9hZEVycm9yIGlmIHBhcmFtZXRlciBwYXRoIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZFxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgLy8gU2tpcCBsb2FkaW5nIGluIGxvY2FsIGVudmlyb25tZW50XHJcbiAgICBpZiAodGhpcy5fYXBwRW52ID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJhbWV0ZXJQYXRoID0gdGhpcy5idWlsZFBhcmFtZXRlclBhdGgoKTtcclxuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG4gICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldFBhcmFtZXRlcnNCeVBhdGhDb21tYW5kKHtcclxuICAgICAgICAgIFBhdGg6IHBhcmFtZXRlclBhdGgsXHJcbiAgICAgICAgICBSZWN1cnNpdmU6IHRydWUsXHJcbiAgICAgICAgICBXaXRoRGVjcnlwdGlvbjogdGhpcy5fY29uZmlnLndpdGhEZWNyeXB0aW9uLFxyXG4gICAgICAgICAgTmV4dFRva2VuOiBuZXh0VG9rZW4sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5fY2xpZW50LnNlbmQoY29tbWFuZCk7XHJcblxyXG4gICAgICAgIGlmICghcmVzcG9uc2UuUGFyYW1ldGVycykge1xyXG4gICAgICAgICAgLy8gTm8gcGFyYW1ldGVycyBmb3VuZCAtIHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFByb2Nlc3MgZWFjaCBwYXJhbWV0ZXJcclxuICAgICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHJlc3BvbnNlLlBhcmFtZXRlcnMpIHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMudHJhbnNmb3JtUGFyYW1ldGVyTmFtZShwYXJhbS5OYW1lLCBwYXJhbWV0ZXJQYXRoKTtcclxuXHJcbiAgICAgICAgICBpZiAoa2V5ICYmIHBhcmFtLlZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBwYXJhbS5WYWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5leHRUb2tlbiA9IHJlc3BvbnNlLk5leHRUb2tlbjtcclxuICAgICAgfSB3aGlsZSAobmV4dFRva2VuKTtcclxuXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBIYW5kbGUgc3BlY2lmaWMgQVdTIGVycm9yc1xyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbicgfHwgZXJyb3IubmFtZSA9PT0gJ1BhcmFtZXRlck5vdEZvdW5kJykge1xyXG4gICAgICAgICAgLy8gTm8gcGFyYW1ldGVycyBmb3VuZCBhdCBwYXRoIC0gdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgYW4gZXJyb3JcclxuICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnQWNjZXNzRGVuaWVkRXhjZXB0aW9uJykge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICAgICAgYEFjY2VzcyBkZW5pZWQgd2hlbiByZXRyaWV2aW5nIHBhcmFtZXRlcnMgZnJvbSBwYXRoICcke3BhcmFtZXRlclBhdGh9Jy4gQ2hlY2sgQVdTIGNyZWRlbnRpYWxzIGFuZCBwZXJtaXNzaW9ucy5gLFxyXG4gICAgICAgICAgICAnU1NNJyxcclxuICAgICAgICAgICAgJ0dldFBhcmFtZXRlcnNCeVBhdGgnLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0ludmFsaWRGaWx0ZXJLZXknIHx8IGVycm9yLm5hbWUgPT09ICdJbnZhbGlkRmlsdGVyVmFsdWUnKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgQVdTU2VydmljZUVycm9yKFxyXG4gICAgICAgICAgICBgSW52YWxpZCBwYXJhbWV0ZXIgcGF0aCAnJHtwYXJhbWV0ZXJQYXRofScuIENoZWNrIHBhdGggZm9ybWF0LmAsXHJcbiAgICAgICAgICAgICdTU00nLFxyXG4gICAgICAgICAgICAnR2V0UGFyYW1ldGVyc0J5UGF0aCcsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEZvciBvdGhlciBlcnJvcnMsIHdyYXAgaW4gQVdTU2VydmljZUVycm9yXHJcbiAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBwYXJhbWV0ZXJzIGZyb20gcGF0aCAnJHtwYXJhbWV0ZXJQYXRofScgaW4gQVdTIFNTTSBQYXJhbWV0ZXIgU3RvcmU6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXHJcbiAgICAgICAgJ1NTTScsXHJcbiAgICAgICAgJ0dldFBhcmFtZXRlcnNCeVBhdGgnLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCdWlsZCB0aGUgZW52aXJvbm1lbnQtYXdhcmUgcGFyYW1ldGVyIHBhdGguXHJcbiAgICogQHJldHVybnMgVGhlIGZ1bGwgcGFyYW1ldGVyIHBhdGggd2l0aCBlbnZpcm9ubWVudCBwcmVmaXhcclxuICAgKiBAdGhyb3dzIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgaWYgbm8gZW52aXJvbm1lbnQgbWFwcGluZyBmb3VuZFxyXG4gICAqL1xyXG4gIGJ1aWxkUGFyYW1ldGVyUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZW52UHJlZml4ID0gdGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZ1t0aGlzLl9hcHBFbnZdO1xyXG5cclxuICAgIGlmICghZW52UHJlZml4KSB7XHJcbiAgICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uTG9hZEVycm9yKFxyXG4gICAgICAgIGBObyBlbnZpcm9ubWVudCBtYXBwaW5nIGZvdW5kIGZvciBBUFBfRU5WICcke3RoaXMuX2FwcEVudn0nLiBgICtcclxuICAgICAgICAgIGBBdmFpbGFibGUgZW52aXJvbm1lbnRzOiAke09iamVjdC5rZXlzKHRoaXMuX2NvbmZpZy5lbnZpcm9ubWVudE1hcHBpbmcpLmpvaW4oJywgJyl9YCxcclxuICAgICAgICB0aGlzLmdldE5hbWUoKSxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYC8ke2VudlByZWZpeH0ke3RoaXMuX2NvbmZpZy5wYXJhbWV0ZXJQYXRofWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFuc2Zvcm0gcGFyYW1ldGVyIG5hbWUgYnkgcmVtb3ZpbmcgdGhlIHByZWZpeCBhbmQgY29udmVydGluZyB0byB1cHBlcmNhc2UuXHJcbiAgICogRXhhbXBsZTogJy9kZXYvY29uZmlnLWF3cy9kYXRhYmFzZS9ob3N0JyAtPiAnREFUQUJBU0VfSE9TVCdcclxuICAgKiBAcGFyYW0gcGFyYW1ldGVyTmFtZSBUaGUgZnVsbCBwYXJhbWV0ZXIgbmFtZSBmcm9tIEFXU1xyXG4gICAqIEBwYXJhbSBwYXRoUHJlZml4IFRoZSBwYXRoIHByZWZpeCB0byByZW1vdmVcclxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgcGFyYW1ldGVyIG5hbWUgb3IgbnVsbCBpZiBpbnZhbGlkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1QYXJhbWV0ZXJOYW1lKHBhcmFtZXRlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGF0aFByZWZpeDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIXBhcmFtZXRlck5hbWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRoZSBwYXRoIHByZWZpeFxyXG4gICAgbGV0IGtleSA9IHBhcmFtZXRlck5hbWU7XHJcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocGF0aFByZWZpeCkpIHtcclxuICAgICAga2V5ID0ga2V5LnN1YnN0cmluZyhwYXRoUHJlZml4Lmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIGxlYWRpbmcgc2xhc2ggaWYgcHJlc2VudFxyXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAga2V5ID0ga2V5LnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0IHNsYXNoZXMgdG8gdW5kZXJzY29yZXMgYW5kIHVwcGVyY2FzZVxyXG4gICAga2V5ID0ga2V5LnJlcGxhY2UoL1xcLy9nLCAnXycpLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgLy8gUmV0dXJuIG51bGwgZm9yIGVtcHR5IGtleXNcclxuICAgIHJldHVybiBrZXkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCBhcHAgZW52aXJvbm1lbnQuXHJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgQVBQX0VOViBvciBOT0RFX0VOViB2YWx1ZVxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FwcEVudjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZW52aXJvbm1lbnQgbWFwcGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBlbnZpcm9ubWVudCBtYXBwaW5nIHJlY29yZFxyXG4gICAqL1xyXG4gIGdldEVudmlyb25tZW50TWFwcGluZygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuX2NvbmZpZy5lbnZpcm9ubWVudE1hcHBpbmcgfTtcclxuICB9XHJcbn1cclxuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NtLXBhcmFtZXRlci1zdG9yZS5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9jb25maWctYXdzL3NyYy9sb2FkZXJzL3NzbS1wYXJhbWV0ZXItc3RvcmUubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLGdCQUFnQjtJQUNHLE9BQU8sQ0FBWTtJQUN0QyxnQkFBZ0I7SUFDRyxPQUFPLENBQTBDO0lBQ3BFLGdCQUFnQjtJQUNHLE9BQU8sQ0FBUztJQUVuQyxZQUFZLFNBQXdDLEVBQUU7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDO1FBRTVFLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLElBQUksYUFBYTtZQUNwRCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLFdBQVc7WUFDakUsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixJQUFJO2dCQUMvQyxXQUFXLEVBQUUsS0FBSztnQkFDbEIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osVUFBVSxFQUFFLFlBQVk7YUFDekI7WUFDRCxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxJ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LEVBQUUsRUFDdEYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUNmLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxzQkFBc0IsQ0FBQyxhQUFpQyxFQUFFLFVBQWtCO1FBQ2xGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDO1FBQ3hCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQy9CLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTVDLDZCQUE2QjtRQUM3QixPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQjtRQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDaEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0UGFyYW1ldGVyc0J5UGF0aENvbW1hbmQsIFNTTUNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xyXG5pbXBvcnQgeyBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4gfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XHJcblxyXG5pbXBvcnQgdHlwZSB7IENvbmZpZ0xvYWRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLWxvYWRlci5pbnRlcmZhY2UuanMnO1xyXG5pbXBvcnQgdHlwZSB7IFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zc20tcGFyYW1ldGVyLXN0b3JlLWxvYWRlci5pbnRlcmZhY2UuanMnO1xyXG5pbXBvcnQgeyBBV1NTZXJ2aWNlRXJyb3IsIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvaW5kZXguanMnO1xyXG5cclxuLyoqXHJcbiAqIExvYWRlciB0aGF0IHJlYWRzIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU1NNIFBhcmFtZXRlciBTdG9yZS5cclxuICogU3VwcG9ydHMgZW52aXJvbm1lbnQtYXdhcmUgcGF0aCBjb25zdHJ1Y3Rpb24sIHBhZ2luYXRpb24sIGFuZCBkZWNyeXB0aW9uIG9wdGlvbnMuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gQmFzaWMgdXNhZ2VcclxuICogY29uc3QgbG9hZGVyID0gbmV3IFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyKHtcclxuICogICBwYXJhbWV0ZXJQYXRoOiAnL215LWFwcC9jb25maWcnLFxyXG4gKiAgIHJlZ2lvbjogJ3VzLWVhc3QtMSdcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIFdpdGggZW52aXJvbm1lbnQgbWFwcGluZ1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgU1NNUGFyYW1ldGVyU3RvcmVMb2FkZXIoe1xyXG4gKiAgIHBhcmFtZXRlclBhdGg6ICcvbXktYXBwL2NvbmZpZycsXHJcbiAqICAgZW52aXJvbm1lbnRNYXBwaW5nOiB7XHJcbiAqICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAqICAgICBzdGFnaW5nOiAnc3RnJyxcclxuICogICAgIHByb2R1Y3Rpb246ICdwcm9kJ1xyXG4gKiAgIH1cclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFNTTUNsaWVudDtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IFJlcXVpcmVkPFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyQ29uZmlnPjtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hcHBFbnY6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBTU01QYXJhbWV0ZXJTdG9yZUxvYWRlckNvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLl9hcHBFbnYgPSBwcm9jZXNzLmVudlsnQVBQX0VOViddIHx8IHByb2Nlc3MuZW52WydOT0RFX0VOViddIHx8ICdsb2NhbCc7XHJcblxyXG4gICAgLy8gU2V0IGRlZmF1bHQgY29uZmlndXJhdGlvblxyXG4gICAgdGhpcy5fY29uZmlnID0ge1xyXG4gICAgICBwYXJhbWV0ZXJQYXRoOiBjb25maWcucGFyYW1ldGVyUGF0aCB8fCAnL2NvbmZpZy1hd3MnLFxyXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgcHJvY2Vzcy5lbnZbJ0FXU19SRUdJT04nXSB8fCAndXMtZWFzdC0xJyxcclxuICAgICAgZW52aXJvbm1lbnRNYXBwaW5nOiBjb25maWcuZW52aXJvbm1lbnRNYXBwaW5nIHx8IHtcclxuICAgICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAgICAgICAgdGVzdDogJ3Rlc3QnLFxyXG4gICAgICAgIHByb2R1Y3Rpb246ICdwcm9kdWN0aW9uJyxcclxuICAgICAgfSxcclxuICAgICAgd2l0aERlY3J5cHRpb246IGNvbmZpZy53aXRoRGVjcnlwdGlvbiA/PyB0cnVlLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIEFXUyBTU00gY2xpZW50XHJcbiAgICB0aGlzLl9jbGllbnQgPSBuZXcgU1NNQ2xpZW50KHtcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpLFxyXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhpcyBsb2FkZXIgZm9yIGxvZ2dpbmcgYW5kIGRlYnVnZ2luZy5cclxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVyIG5hbWUgd2l0aCBwYXJhbWV0ZXIgcGF0aFxyXG4gICAqL1xyXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHBhcmFtZXRlclBhdGggPSB0aGlzLmJ1aWxkUGFyYW1ldGVyUGF0aCgpO1xyXG4gICAgICByZXR1cm4gYFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyKCR7cGFyYW1ldGVyUGF0aH0pYDtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICAvLyBGYWxsYmFjayBpZiBwYXRoIGNvbnN0cnVjdGlvbiBmYWlscyAoZS5nLiwgbWlzc2luZyBlbnYgbWFwcGluZylcclxuICAgICAgcmV0dXJuIGBTU01QYXJhbWV0ZXJTdG9yZUxvYWRlcigke3RoaXMuX2NvbmZpZy5wYXJhbWV0ZXJQYXRofSlgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgdGhpcyBsb2FkZXIgaXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50LlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRydWUgaWYgbm90IGluIGxvY2FsIGVudmlyb25tZW50IGFuZCBBV1MgY3JlZGVudGlhbHMgYXJlIGF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIGFzeW5jIGlzQXZhaWxhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gU2tpcCBpbiBsb2NhbCBlbnZpcm9ubWVudFxyXG4gICAgaWYgKHRoaXMuX2FwcEVudiA9PT0gJ2xvY2FsJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gVGVzdCBBV1MgY3JlZGVudGlhbHMgYnkgYXR0ZW1wdGluZyB0byBnZXQgY2FsbGVyIGlkZW50aXR5XHJcbiAgICAgIGF3YWl0IHRoaXMuX2NsaWVudC5jb25maWcuY3JlZGVudGlhbHMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gQVdTIFNTTSBQYXJhbWV0ZXIgU3RvcmUuXHJcbiAgICogSW1wbGVtZW50cyByZWN1cnNpdmUgcGFyYW1ldGVyIGZldGNoaW5nIHdpdGggTmV4dFRva2VuIGhhbmRsaW5nIGZvciBwYWdpbmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24ga2V5LXZhbHVlIHBhaXJzIGZyb20gcGFyYW1ldGVyc1xyXG4gICAqIEB0aHJvd3MgQVdTU2VydmljZUVycm9yIGlmIEFXUyBvcGVyYXRpb24gZmFpbHNcclxuICAgKiBAdGhyb3dzIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgaWYgcGFyYW1ldGVyIHBhdGggY2Fubm90IGJlIGNvbnN0cnVjdGVkXHJcbiAgICovXHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XHJcbiAgICAvLyBTa2lwIGxvYWRpbmcgaW4gbG9jYWwgZW52aXJvbm1lbnRcclxuICAgIGlmICh0aGlzLl9hcHBFbnYgPT09ICdsb2NhbCcpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtZXRlclBhdGggPSB0aGlzLmJ1aWxkUGFyYW1ldGVyUGF0aCgpO1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XHJcbiAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgZG8ge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0UGFyYW1ldGVyc0J5UGF0aENvbW1hbmQoe1xyXG4gICAgICAgICAgUGF0aDogcGFyYW1ldGVyUGF0aCxcclxuICAgICAgICAgIFJlY3Vyc2l2ZTogdHJ1ZSxcclxuICAgICAgICAgIFdpdGhEZWNyeXB0aW9uOiB0aGlzLl9jb25maWcud2l0aERlY3J5cHRpb24sXHJcbiAgICAgICAgICBOZXh0VG9rZW46IG5leHRUb2tlbixcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9jbGllbnQuc2VuZChjb21tYW5kKTtcclxuXHJcbiAgICAgICAgaWYgKCFyZXNwb25zZS5QYXJhbWV0ZXJzKSB7XHJcbiAgICAgICAgICAvLyBObyBwYXJhbWV0ZXJzIGZvdW5kIC0gdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgYW4gZXJyb3JcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUHJvY2VzcyBlYWNoIHBhcmFtZXRlclxyXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgcmVzcG9uc2UuUGFyYW1ldGVycykge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy50cmFuc2Zvcm1QYXJhbWV0ZXJOYW1lKHBhcmFtLk5hbWUsIHBhcmFtZXRlclBhdGgpO1xyXG5cclxuICAgICAgICAgIGlmIChrZXkgJiYgcGFyYW0uVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IHBhcmFtLlZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbmV4dFRva2VuID0gcmVzcG9uc2UuTmV4dFRva2VuO1xyXG4gICAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xyXG5cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIC8vIEhhbmRsZSBzcGVjaWZpYyBBV1MgZXJyb3JzXHJcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uJyB8fCBlcnJvci5uYW1lID09PSAnUGFyYW1ldGVyTm90Rm91bmQnKSB7XHJcbiAgICAgICAgICAvLyBObyBwYXJhbWV0ZXJzIGZvdW5kIGF0IHBhdGggLSB0aGlzIGlzIG5vdCBuZWNlc3NhcmlseSBhbiBlcnJvclxyXG4gICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgQVdTU2VydmljZUVycm9yKFxyXG4gICAgICAgICAgICBgQWNjZXNzIGRlbmllZCB3aGVuIHJldHJpZXZpbmcgcGFyYW1ldGVycyBmcm9tIHBhdGggJyR7cGFyYW1ldGVyUGF0aH0nLiBDaGVjayBBV1MgY3JlZGVudGlhbHMgYW5kIHBlcm1pc3Npb25zLmAsXHJcbiAgICAgICAgICAgICdTU00nLFxyXG4gICAgICAgICAgICAnR2V0UGFyYW1ldGVyc0J5UGF0aCcsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnSW52YWxpZEZpbHRlcktleScgfHwgZXJyb3IubmFtZSA9PT0gJ0ludmFsaWRGaWx0ZXJWYWx1ZScpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgICAgIGBJbnZhbGlkIHBhcmFtZXRlciBwYXRoICcke3BhcmFtZXRlclBhdGh9Jy4gQ2hlY2sgcGF0aCBmb3JtYXQuYCxcclxuICAgICAgICAgICAgJ1NTTScsXHJcbiAgICAgICAgICAgICdHZXRQYXJhbWV0ZXJzQnlQYXRoJyxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRm9yIG90aGVyIGVycm9ycywgd3JhcCBpbiBBV1NTZXJ2aWNlRXJyb3JcclxuICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICBgRmFpbGVkIHRvIHJldHJpZXZlIHBhcmFtZXRlcnMgZnJvbSBwYXRoICcke3BhcmFtZXRlclBhdGh9JyBpbiBBV1MgU1NNIFBhcmFtZXRlciBTdG9yZTogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCxcclxuICAgICAgICAnU1NNJyxcclxuICAgICAgICAnR2V0UGFyYW1ldGVyc0J5UGF0aCcsXHJcbiAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkIHRoZSBlbnZpcm9ubWVudC1hd2FyZSBwYXJhbWV0ZXIgcGF0aC5cclxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBwYXJhbWV0ZXIgcGF0aCB3aXRoIGVudmlyb25tZW50IHByZWZpeFxyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkxvYWRFcnJvciBpZiBubyBlbnZpcm9ubWVudCBtYXBwaW5nIGZvdW5kXHJcbiAgICovXHJcbiAgYnVpbGRQYXJhbWV0ZXJQYXRoKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlbnZQcmVmaXggPSB0aGlzLl9jb25maWcuZW52aXJvbm1lbnRNYXBwaW5nW3RoaXMuX2FwcEVudl07XHJcblxyXG4gICAgaWYgKCFlbnZQcmVmaXgpIHtcclxuICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IoXHJcbiAgICAgICAgYE5vIGVudmlyb25tZW50IG1hcHBpbmcgZm91bmQgZm9yIEFQUF9FTlYgJyR7dGhpcy5fYXBwRW52fScuIGAgK1xyXG4gICAgICAgICAgYEF2YWlsYWJsZSBlbnZpcm9ubWVudHM6ICR7T2JqZWN0LmtleXModGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZykuam9pbignLCAnKX1gLFxyXG4gICAgICAgIHRoaXMuZ2V0TmFtZSgpLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBgLyR7ZW52UHJlZml4fSR7dGhpcy5fY29uZmlnLnBhcmFtZXRlclBhdGh9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zZm9ybSBwYXJhbWV0ZXIgbmFtZSBieSByZW1vdmluZyB0aGUgcHJlZml4IGFuZCBjb252ZXJ0aW5nIHRvIHVwcGVyY2FzZS5cclxuICAgKiBFeGFtcGxlOiAnL2Rldi9jb25maWctYXdzL2RhdGFiYXNlL2hvc3QnIC0+ICdEQVRBQkFTRV9IT1NUJ1xyXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJOYW1lIFRoZSBmdWxsIHBhcmFtZXRlciBuYW1lIGZyb20gQVdTXHJcbiAgICogQHBhcmFtIHBhdGhQcmVmaXggVGhlIHBhdGggcHJlZml4IHRvIHJlbW92ZVxyXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCBwYXJhbWV0ZXIgbmFtZSBvciBudWxsIGlmIGludmFsaWRcclxuICAgKi9cclxuICBwcml2YXRlIHRyYW5zZm9ybVBhcmFtZXRlck5hbWUocGFyYW1ldGVyTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBwYXRoUHJlZml4OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghcGFyYW1ldGVyTmFtZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdGhlIHBhdGggcHJlZml4XHJcbiAgICBsZXQga2V5ID0gcGFyYW1ldGVyTmFtZTtcclxuICAgIGlmIChrZXkuc3RhcnRzV2l0aChwYXRoUHJlZml4KSkge1xyXG4gICAgICBrZXkgPSBrZXkuc3Vic3RyaW5nKHBhdGhQcmVmaXgubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgbGVhZGluZyBzbGFzaCBpZiBwcmVzZW50XHJcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgICBrZXkgPSBrZXkuc3Vic3RyaW5nKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENvbnZlcnQgc2xhc2hlcyB0byB1bmRlcnNjb3JlcyBhbmQgdXBwZXJjYXNlXHJcbiAgICBrZXkgPSBrZXkucmVwbGFjZSgvXFwvL2csICdfJykudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAvLyBSZXR1cm4gbnVsbCBmb3IgZW1wdHkga2V5c1xyXG4gICAgcmV0dXJuIGtleSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IGFwcCBlbnZpcm9ubWVudC5cclxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBBUFBfRU5WIG9yIE5PREVfRU5WIHZhbHVlXHJcbiAgICovXHJcbiAgZ2V0QXBwRW52KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBwRW52O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBlbnZpcm9ubWVudCBtYXBwaW5nIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogQHJldHVybnMgVGhlIGVudmlyb25tZW50IG1hcHBpbmcgcmVjb3JkXHJcbiAgICovXHJcbiAgZ2V0RW52aXJvbm1lbnRNYXBwaW5nKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZyB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { ValidationError } from '../errors';
1
+ import { ValidationError } from '../errors/index.js';
2
2
  /**
3
3
  * Framework-agnostic validation utility for configuration values.
4
4
  * Provides methods for validating configuration objects against Zod schemas.
@@ -109,4 +109,4 @@ export class ConfigValidationUtil {
109
109
  }
110
110
  }
111
111
  }
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvdXRpbHMvdmFsaWRhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFNUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQjs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixNQUFTLEVBQ1QsS0FBYyxFQUNkLE9BQWdCO1FBRWhCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sY0FBYyxHQUFHLE9BQU87WUFDNUIsQ0FBQyxDQUFDLHVDQUF1QyxPQUFPLEVBQUU7WUFDbEQsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDO1FBRXRDLE1BQU0sSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQ2pCLE1BQVMsRUFDVCxLQUFjO1FBRWQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENB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LENBQUM7UUFFSCxPQUFPLEdBQUcsYUFBYSxnQ0FBZ0MsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUMxQixNQUFTLEVBQ1QsS0FBYyxFQUNkLE1BQWM7UUFFZCxJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRSxDQUFDO2dCQUNyQyw0Q0FBNEM7Z0JBQzVDLE1BQU0sZUFBZSxHQUFHLCtDQUErQyxNQUFNLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNuRyxNQUFNLElBQUksZUFBZSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRSxDQUFDO1lBQ0QsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBab2RUeXBlLCBab2RFcnJvciwgVHlwZU9mIH0gZnJvbSAnem9kJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcclxuXHJcbi8qKlxyXG4gKiBGcmFtZXdvcmstYWdub3N0aWMgdmFsaWRhdGlvbiB1dGlsaXR5IGZvciBjb25maWd1cmF0aW9uIHZhbHVlcy5cclxuICogUHJvdmlkZXMgbWV0aG9kcyBmb3IgdmFsaWRhdGluZyBjb25maWd1cmF0aW9uIG9iamVjdHMgYWdhaW5zdCBab2Qgc2NoZW1hcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBDb25maWdWYWxpZGF0aW9uVXRpbCB7XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIGEgdmFsdWUgYWdhaW5zdCBhIFpvZCBzY2hlbWEuXHJcbiAgICogQHBhcmFtIHNjaGVtYSBUaGUgWm9kIHNjaGVtYSB0byB2YWxpZGF0ZSBhZ2FpbnN0XHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxyXG4gICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIGNvbnRleHQgZm9yIGVycm9yIG1lc3NhZ2VzXHJcbiAgICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBhbmQgdHJhbnNmb3JtZWQgdmFsdWVcclxuICAgKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICovXHJcbiAgc3RhdGljIHZhbGlkYXRlPFQgZXh0ZW5kcyBab2RUeXBlPihcclxuICAgIHNjaGVtYTogVCxcclxuICAgIHZhbHVlOiB1bmtub3duLFxyXG4gICAgY29udGV4dD86IHN0cmluZyxcclxuICApOiBUeXBlT2Y8VD4ge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmZvcm1hdFZhbGlkYXRpb25FcnJvcnMocmVzdWx0LmVycm9yKTtcclxuICAgIGNvbnN0IGNvbnRleHRNZXNzYWdlID0gY29udGV4dFxyXG4gICAgICA/IGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkIGZvciAke2NvbnRleHR9YFxyXG4gICAgICA6ICdDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkJztcclxuXHJcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGNvbnRleHRNZXNzYWdlLCBlcnJvcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2FmZWx5IHZhbGlkYXRlcyBhIHZhbHVlIGFnYWluc3QgYSBab2Qgc2NoZW1hIHdpdGhvdXQgdGhyb3dpbmcuXHJcbiAgICogQHBhcmFtIHNjaGVtYSBUaGUgWm9kIHNjaGVtYSB0byB2YWxpZGF0ZSBhZ2FpbnN0XHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxyXG4gICAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHN1Y2Nlc3MgZmxhZyBhbmQgZWl0aGVyIGRhdGEgb3IgZXJyb3JcclxuICAgKi9cclxuICBzdGF0aWMgc2FmZVZhbGlkYXRlPFQgZXh0ZW5kcyBab2RUeXBlPihcclxuICAgIHNjaGVtYTogVCxcclxuICAgIHZhbHVlOiB1bmtub3duLFxyXG4gICk6IHsgc3VjY2VzczogdHJ1ZTsgZGF0YTogVHlwZU9mPFQ+IH0gfCB7IHN1Y2Nlc3M6IGZhbHNlOyBlcnJvcjogVmFsaWRhdGlvbkVycm9yIH0ge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHJlc3VsdC5kYXRhIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtYXRWYWxpZGF0aW9uRXJyb3JzKHJlc3VsdC5lcnJvcik7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3IgPSBuZXcgVmFsaWRhdGlvbkVycm9yKCdDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkJywgZXJyb3JzKTtcclxuXHJcbiAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IHZhbGlkYXRpb25FcnJvciB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBab2QgdmFsaWRhdGlvbiBlcnJvcnMgaW50byBhIHN0cnVjdHVyZWQgZm9ybWF0LlxyXG4gICAqIEBwYXJhbSBlcnJvciBUaGUgWm9kRXJyb3IgdG8gZm9ybWF0XHJcbiAgICogQHJldHVybnMgRm9ybWF0dGVkIGVycm9yIG9iamVjdCBvciBzdHJpbmdcclxuICAgKi9cclxuICBzdGF0aWMgZm9ybWF0VmFsaWRhdGlvbkVycm9ycyhlcnJvcjogWm9kRXJyb3IpOiB1bmtub3duIHtcclxuICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgZXJyb3IgYXQgdGhlIHJvb3QgbGV2ZWwsIHJldHVybiBqdXN0IHRoZSBtZXNzYWdlXHJcbiAgICBpZiAoZXJyb3IuaXNzdWVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBjb25zdCBpc3N1ZSA9IGVycm9yLmlzc3Vlc1swXTtcclxuICAgICAgaWYgKGlzc3VlICYmIEFycmF5LmlzQXJyYXkoaXNzdWUucGF0aCkgJiYgaXNzdWUucGF0aC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvciBtdWx0aXBsZSBlcnJvcnMgb3IgbmVzdGVkIHBhdGhzLCBjcmVhdGUgYSBzdHJ1Y3R1cmVkIG9iamVjdFxyXG4gICAgcmV0dXJuIGVycm9yLmlzc3Vlcy5yZWR1Y2UoXHJcbiAgICAgIChlcnJvcnMsIGlzc3VlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IGlzc3VlLnBhdGguam9pbignLicpO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IHBhdGggfHwgJ3Jvb3QnO1xyXG5cclxuICAgICAgICBpZiAoIWVycm9yc1trZXldKSB7XHJcbiAgICAgICAgICBlcnJvcnNba2V5XSA9IFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZXJyb3JzW2tleV0ucHVzaCh7XHJcbiAgICAgICAgICBtZXNzYWdlOiBpc3N1ZS5tZXNzYWdlLFxyXG4gICAgICAgICAgY29kZTogaXNzdWUuY29kZSxcclxuICAgICAgICAgIHBhdGg6IGlzc3VlLnBhdGgsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIEFycmF5PHsgbWVzc2FnZTogc3RyaW5nOyBjb2RlOiBzdHJpbmc7IHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10gfT4+LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIGZvciBjb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbHVyZXMuXHJcbiAgICogQHBhcmFtIGVycm9yIFRoZSBab2RFcnJvciB0byBjcmVhdGUgYSBtZXNzYWdlIGZvclxyXG4gICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIGNvbnRleHQgZm9yIHRoZSBlcnJvclxyXG4gICAqIEByZXR1cm5zIERldGFpbGVkIGVycm9yIG1lc3NhZ2Ugc3RyaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGNyZWF0ZURldGFpbGVkRXJyb3JNZXNzYWdlKGVycm9yOiBab2RFcnJvciwgY29udGV4dD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb250ZXh0UHJlZml4ID0gY29udGV4dCA/IGAke2NvbnRleHR9OiBgIDogJyc7XHJcblxyXG4gICAgaWYgKGVycm9yLmlzc3Vlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgaXNzdWUgPSBlcnJvci5pc3N1ZXNbMF07XHJcbiAgICAgIGlmIChpc3N1ZSkge1xyXG4gICAgICAgIGNvbnN0IHBhdGhTdHIgPSBpc3N1ZS5wYXRoLmxlbmd0aCA+IDAgPyBgIGF0ICcke2lzc3VlLnBhdGguam9pbignLicpfSdgIDogJyc7XHJcbiAgICAgICAgcmV0dXJuIGAke2NvbnRleHRQcmVmaXh9JHtpc3N1ZS5tZXNzYWdlfSR7cGF0aFN0cn1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlcyA9IGVycm9yLmlzc3Vlcy5tYXAoKGlzc3VlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhdGhTdHIgPSBpc3N1ZS5wYXRoLmxlbmd0aCA+IDAgPyBgIGF0ICcke2lzc3VlLnBhdGguam9pbignLicpfSdgIDogJyc7XHJcbiAgICAgIHJldHVybiBgICAtICR7aXNzdWUubWVzc2FnZX0ke3BhdGhTdHJ9YDtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBgJHtjb250ZXh0UHJlZml4fU11bHRpcGxlIHZhbGlkYXRpb24gZXJyb3JzOlxcbiR7ZXJyb3JNZXNzYWdlcy5qb2luKCdcXG4nKX1gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIGNvbmZpZ3VyYXRpb24gd2l0aCBlbmhhbmNlZCBlcnJvciBjb250ZXh0LlxyXG4gICAqIEBwYXJhbSBzY2hlbWEgVGhlIFpvZCBzY2hlbWEgdG8gdmFsaWRhdGUgYWdhaW5zdFxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gdmFsaWRhdGVcclxuICAgKiBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2YgdGhlIGNvbmZpZ3VyYXRpb24gKGUuZy4sICdlbnZpcm9ubWVudCcsICdzZWNyZXRzLW1hbmFnZXInKVxyXG4gICAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgY29uZmlndXJhdGlvblxyXG4gICAqIEB0aHJvd3MgVmFsaWRhdGlvbkVycm9yIHdpdGggZW5oYW5jZWQgY29udGV4dFxyXG4gICAqL1xyXG4gIHN0YXRpYyB2YWxpZGF0ZUNvbmZpZ3VyYXRpb248VCBleHRlbmRzIFpvZFR5cGU+KFxyXG4gICAgc2NoZW1hOiBULFxyXG4gICAgdmFsdWU6IHVua25vd24sXHJcbiAgICBzb3VyY2U6IHN0cmluZyxcclxuICApOiBUeXBlT2Y8VD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc2NoZW1hLCB2YWx1ZSwgYCR7c291cmNlfSBjb25maWd1cmF0aW9uYCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IpIHtcclxuICAgICAgICAvLyBFbmhhbmNlIHRoZSBlcnJvciB3aXRoIHNvdXJjZSBpbmZvcm1hdGlvblxyXG4gICAgICAgIGNvbnN0IGVuaGFuY2VkTWVzc2FnZSA9IGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkIGZvciBzb3VyY2UgJyR7c291cmNlfSc6ICR7ZXJyb3IubWVzc2FnZX1gO1xyXG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZW5oYW5jZWRNZXNzYWdlLCBlcnJvci52YWxpZGF0aW9uRXJyb3JzKTtcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvdXRpbHMvdmFsaWRhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9COzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUNiLE1BQVMsRUFDVCxLQUFjLEVBQ2QsT0FBZ0I7UUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsTUFBTSxjQUFjLEdBQUcsT0FBTztZQUM1QixDQUFDLENBQUMsdUNBQXVDLE9BQU8sRUFBRTtZQUNsRCxDQUFDLENBQUMsaUNBQWlDLENBQUM7UUFFdEMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FDakIsTUFBUyxFQUNULEtBQWM7UUFFZCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUMsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUks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QUMsQ0FBQztRQUVILE9BQU8sR0FBRyxhQUFhLGdDQUFnQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQzFCLE1BQVMsRUFDVCxLQUFjLEVBQ2QsTUFBYztRQUVkLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxLQUFLLFlBQVksZUFBZSxFQUFFLENBQUM7Z0JBQ3JDLDRDQUE0QztnQkFDNUMsTUFBTSxlQUFlLEdBQUcsK0NBQStDLE1BQU0sTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25HLE1BQU0sSUFBSSxlQUFlLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFDRCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFpvZFR5cGUsIFpvZEVycm9yLCBUeXBlT2YgfSBmcm9tICd6b2QnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvaW5kZXguanMnO1xyXG5cclxuLyoqXHJcbiAqIEZyYW1ld29yay1hZ25vc3RpYyB2YWxpZGF0aW9uIHV0aWxpdHkgZm9yIGNvbmZpZ3VyYXRpb24gdmFsdWVzLlxyXG4gKiBQcm92aWRlcyBtZXRob2RzIGZvciB2YWxpZGF0aW5nIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyBhZ2FpbnN0IFpvZCBzY2hlbWFzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbmZpZ1ZhbGlkYXRpb25VdGlsIHtcclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgYSB2YWx1ZSBhZ2FpbnN0IGEgWm9kIHNjaGVtYS5cclxuICAgKiBAcGFyYW0gc2NoZW1hIFRoZSBab2Qgc2NoZW1hIHRvIHZhbGlkYXRlIGFnYWluc3RcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlXHJcbiAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgY29udGV4dCBmb3IgZXJyb3IgbWVzc2FnZXNcclxuICAgKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGFuZCB0cmFuc2Zvcm1lZCB2YWx1ZVxyXG4gICAqIEB0aHJvd3MgVmFsaWRhdGlvbkVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcclxuICAgKi9cclxuICBzdGF0aWMgdmFsaWRhdGU8VCBleHRlbmRzIFpvZFR5cGU+KFxyXG4gICAgc2NoZW1hOiBULFxyXG4gICAgdmFsdWU6IHVua25vd24sXHJcbiAgICBjb250ZXh0Pzogc3RyaW5nLFxyXG4gICk6IFR5cGVPZjxUPiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBzY2hlbWEuc2FmZVBhcnNlKHZhbHVlKTtcclxuXHJcbiAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZm9ybWF0VmFsaWRhdGlvbkVycm9ycyhyZXN1bHQuZXJyb3IpO1xyXG4gICAgY29uc3QgY29udGV4dE1lc3NhZ2UgPSBjb250ZXh0XHJcbiAgICAgID8gYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQgZm9yICR7Y29udGV4dH1gXHJcbiAgICAgIDogJ0NvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQnO1xyXG5cclxuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoY29udGV4dE1lc3NhZ2UsIGVycm9ycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYWZlbHkgdmFsaWRhdGVzIGEgdmFsdWUgYWdhaW5zdCBhIFpvZCBzY2hlbWEgd2l0aG91dCB0aHJvd2luZy5cclxuICAgKiBAcGFyYW0gc2NoZW1hIFRoZSBab2Qgc2NoZW1hIHRvIHZhbGlkYXRlIGFnYWluc3RcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlXHJcbiAgICogQHJldHVybnMgT2JqZWN0IHdpdGggc3VjY2VzcyBmbGFnIGFuZCBlaXRoZXIgZGF0YSBvciBlcnJvclxyXG4gICAqL1xyXG4gIHN0YXRpYyBzYWZlVmFsaWRhdGU8VCBleHRlbmRzIFpvZFR5cGU+KFxyXG4gICAgc2NoZW1hOiBULFxyXG4gICAgdmFsdWU6IHVua25vd24sXHJcbiAgKTogeyBzdWNjZXNzOiB0cnVlOyBkYXRhOiBUeXBlT2Y8VD4gfSB8IHsgc3VjY2VzczogZmFsc2U7IGVycm9yOiBWYWxpZGF0aW9uRXJyb3IgfSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBzY2hlbWEuc2FmZVBhcnNlKHZhbHVlKTtcclxuXHJcbiAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZGF0YTogcmVzdWx0LmRhdGEgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmZvcm1hdFZhbGlkYXRpb25FcnJvcnMocmVzdWx0LmVycm9yKTtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0NvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQnLCBlcnJvcnMpO1xyXG5cclxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogdmFsaWRhdGlvbkVycm9yIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIFpvZCB2YWxpZGF0aW9uIGVycm9ycyBpbnRvIGEgc3RydWN0dXJlZCBmb3JtYXQuXHJcbiAgICogQHBhcmFtIGVycm9yIFRoZSBab2RFcnJvciB0byBmb3JtYXRcclxuICAgKiBAcmV0dXJucyBGb3JtYXR0ZWQgZXJyb3Igb2JqZWN0IG9yIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyBmb3JtYXRWYWxpZGF0aW9uRXJyb3JzKGVycm9yOiBab2RFcnJvcik6IHVua25vd24ge1xyXG4gICAgLy8gSWYgdGhlcmUncyBvbmx5IG9uZSBlcnJvciBhdCB0aGUgcm9vdCBsZXZlbCwgcmV0dXJuIGp1c3QgdGhlIG1lc3NhZ2VcclxuICAgIGlmIChlcnJvci5pc3N1ZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IGlzc3VlID0gZXJyb3IuaXNzdWVzWzBdO1xyXG4gICAgICBpZiAoaXNzdWUgJiYgQXJyYXkuaXNBcnJheShpc3N1ZS5wYXRoKSAmJiBpc3N1ZS5wYXRoLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRm9yIG11bHRpcGxlIGVycm9ycyBvciBuZXN0ZWQgcGF0aHMsIGNyZWF0ZSBhIHN0cnVjdHVyZWQgb2JqZWN0XHJcbiAgICByZXR1cm4gZXJyb3IuaXNzdWVzLnJlZHVjZShcclxuICAgICAgKGVycm9ycywgaXNzdWUpID0+IHtcclxuICAgICAgICBjb25zdCBwYXRoID0gaXNzdWUucGF0aC5qb2luKCcuJyk7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gcGF0aCB8fCAncm9vdCc7XHJcblxyXG4gICAgICAgIGlmICghZXJyb3JzW2tleV0pIHtcclxuICAgICAgICAgIGVycm9yc1trZXldID0gW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlcnJvcnNba2V5XS5wdXNoKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IGlzc3VlLm1lc3NhZ2UsXHJcbiAgICAgICAgICBjb2RlOiBpc3N1ZS5jb2RlLFxyXG4gICAgICAgICAgcGF0aDogaXNzdWUucGF0aCxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgICAgfSxcclxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgQXJyYXk8eyBtZXNzYWdlOiBzdHJpbmc7IGNvZGU6IHN0cmluZzsgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXSB9Pj4sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UgZm9yIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsdXJlcy5cclxuICAgKiBAcGFyYW0gZXJyb3IgVGhlIFpvZEVycm9yIHRvIGNyZWF0ZSBhIG1lc3NhZ2UgZm9yXHJcbiAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgY29udGV4dCBmb3IgdGhlIGVycm9yXHJcbiAgICogQHJldHVybnMgRGV0YWlsZWQgZXJyb3IgbWVzc2FnZSBzdHJpbmdcclxuICAgKi9cclxuICBzdGF0aWMgY3JlYXRlRGV0YWlsZWRFcnJvck1lc3NhZ2UoZXJyb3I6IFpvZEVycm9yLCBjb250ZXh0Pzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNvbnRleHRQcmVmaXggPSBjb250ZXh0ID8gYCR7Y29udGV4dH06IGAgOiAnJztcclxuXHJcbiAgICBpZiAoZXJyb3IuaXNzdWVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBjb25zdCBpc3N1ZSA9IGVycm9yLmlzc3Vlc1swXTtcclxuICAgICAgaWYgKGlzc3VlKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aFN0ciA9IGlzc3VlLnBhdGgubGVuZ3RoID4gMCA/IGAgYXQgJyR7aXNzdWUucGF0aC5qb2luKCcuJyl9J2AgOiAnJztcclxuICAgICAgICByZXR1cm4gYCR7Y29udGV4dFByZWZpeH0ke2lzc3VlLm1lc3NhZ2V9JHtwYXRoU3RyfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvck1lc3NhZ2VzID0gZXJyb3IuaXNzdWVzLm1hcCgoaXNzdWUpID0+IHtcclxuICAgICAgY29uc3QgcGF0aFN0ciA9IGlzc3VlLnBhdGgubGVuZ3RoID4gMCA/IGAgYXQgJyR7aXNzdWUucGF0aC5qb2luKCcuJyl9J2AgOiAnJztcclxuICAgICAgcmV0dXJuIGAgIC0gJHtpc3N1ZS5tZXNzYWdlfSR7cGF0aFN0cn1gO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGAke2NvbnRleHRQcmVmaXh9TXVsdGlwbGUgdmFsaWRhdGlvbiBlcnJvcnM6XFxuJHtlcnJvck1lc3NhZ2VzLmpvaW4oJ1xcbicpfWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgY29uZmlndXJhdGlvbiB3aXRoIGVuaGFuY2VkIGVycm9yIGNvbnRleHQuXHJcbiAgICogQHBhcmFtIHNjaGVtYSBUaGUgWm9kIHNjaGVtYSB0byB2YWxpZGF0ZSBhZ2FpbnN0XHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB0byB2YWxpZGF0ZVxyXG4gICAqIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvZiB0aGUgY29uZmlndXJhdGlvbiAoZS5nLiwgJ2Vudmlyb25tZW50JywgJ3NlY3JldHMtbWFuYWdlcicpXHJcbiAgICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBjb25maWd1cmF0aW9uXHJcbiAgICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3Igd2l0aCBlbmhhbmNlZCBjb250ZXh0XHJcbiAgICovXHJcbiAgc3RhdGljIHZhbGlkYXRlQ29uZmlndXJhdGlvbjxUIGV4dGVuZHMgWm9kVHlwZT4oXHJcbiAgICBzY2hlbWE6IFQsXHJcbiAgICB2YWx1ZTogdW5rbm93bixcclxuICAgIHNvdXJjZTogc3RyaW5nLFxyXG4gICk6IFR5cGVPZjxUPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzY2hlbWEsIHZhbHVlLCBgJHtzb3VyY2V9IGNvbmZpZ3VyYXRpb25gKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvcikge1xyXG4gICAgICAgIC8vIEVuaGFuY2UgdGhlIGVycm9yIHdpdGggc291cmNlIGluZm9ybWF0aW9uXHJcbiAgICAgICAgY29uc3QgZW5oYW5jZWRNZXNzYWdlID0gYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQgZm9yIHNvdXJjZSAnJHtzb3VyY2V9JzogJHtlcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlbmhhbmNlZE1lc3NhZ2UsIGVycm9yLnZhbGlkYXRpb25FcnJvcnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -293,8 +293,18 @@ let AsyncConfigHelperService = AsyncConfigHelperService_1 = class AsyncConfigHel
293
293
  this.logger.warn('Lazy factory called while loading, returning empty config');
294
294
  return {};
295
295
  }
296
- // Start loading configuration
297
- loadingPromise = this.loadConfigurationLazily();
296
+ // Start loading configuration and update cache when complete
297
+ loadingPromise = this.loadConfigurationLazily()
298
+ .then((config) => {
299
+ cachedConfig = config;
300
+ loadingPromise = null;
301
+ return config;
302
+ })
303
+ .catch((error) => {
304
+ loadingPromise = null;
305
+ this.logger.error('Lazy loading failed:', error);
306
+ return {};
307
+ });
298
308
  // Return empty config for now (will be populated on next call)
299
309
  this.logger.debug('Started lazy loading, returning empty config');
300
310
  return {};
@@ -309,10 +319,8 @@ let AsyncConfigHelperService = AsyncConfigHelperService_1 = class AsyncConfigHel
309
319
  this.logger.debug('Loading configuration lazily');
310
320
  const awsFactory = await this.createAsyncConfigFactory();
311
321
  const config = awsFactory();
312
- // Cache the configuration
313
- const cachedConfig = config;
314
322
  this.logger.debug('Lazy configuration loading completed');
315
- return cachedConfig;
323
+ return config;
316
324
  }
317
325
  catch (error) {
318
326
  const lazyError = error instanceof Error ? error : new Error(String(error));
@@ -352,4 +360,4 @@ AsyncConfigHelperService = AsyncConfigHelperService_1 = __decorate([
352
360
  __metadata("design:paramtypes", [FactoryRegistrationService, Object])
353
361
  ], AsyncConfigHelperService);
354
362
  export { AsyncConfigHelperService };
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtY29uZmlnLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uL3NlcnZpY2VzL2FzeW5jLWNvbmZpZy1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVGOzs7O0dBSUc7QUFFSSxJQUFNLHdCQUF3QixnQ0FBOUIsTUFBTSx3QkFBd0I7SUFJaEI7SUFFQTtJQUxGLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQywwQkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRSxZQUNtQiwwQkFBc0QsRUFFdEQsVUFBOEIsRUFBRTtRQUZoQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBRXRELFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQ2hELENBQUM7SUFFSjs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUM7WUFDSCwrQ0FBK0M7WUFDL0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUUvRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENB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SW5qZWN0YWJsZSwgTG9nZ2VyLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdGYWN0b3J5LCBDb25maWdNb2R1bGVPcHRpb25zIH0gZnJvbSAnQG5lc3Rqcy9jb25maWcnO1xyXG5pbXBvcnQgeyBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSB9IGZyb20gJy4vZmFjdG9yeS1yZWdpc3RyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVncmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZWdyYXRpb24tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBORVNUSlNfQ09ORklHX0FXU19JTlRFR1JBVElPTl9PUFRJT05TIH0gZnJvbSAnLi4vbmVzdGpzLWNvbmZpZy1pbnRlZ3JhdGlvbi5tb2R1bGUnO1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBzZXJ2aWNlIGZvciBhc3luYyBjb25maWd1cmF0aW9uIHN1cHBvcnQgd2l0aCBAbmVzdGpzL2NvbmZpZy5cclxuICogVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgY3JlYXRpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXNcclxuICogYW5kIG1hbmFnaW5nIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGluIGFzeW5jIHNjZW5hcmlvcy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFzeW5jQ29uZmlnSGVscGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKEFzeW5jQ29uZmlnSGVscGVyU2VydmljZS5uYW1lKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhY3RvcnlSZWdpc3RyYXRpb25TZXJ2aWNlOiBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkVTVEpTX0NPTkZJR19BV1NfSU5URUdSQVRJT05fT1BUSU9OUykgXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEludGVncmF0aW9uT3B0aW9ucyA9IHt9XHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5IHRoYXQgbG9hZHMgQVdTIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogVGhpcyBmYWN0b3J5IGNhbiBiZSB1c2VkIHdpdGggQG5lc3Rqcy9jb25maWcncyBsb2FkIGFycmF5LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24gZmFjdG9yeVxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jQ29uZmlnRmFjdG9yeSgpOiBQcm9taXNlPENvbmZpZ0ZhY3Rvcnk+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gUmVnaXN0ZXIgQVdTIGZhY3RvcmllcyBhbmQgZ2V0IHRoZSBmaXJzdCBvbmVcclxuICAgICAgY29uc3QgYXdzRmFjdG9yaWVzID0gYXdhaXQgdGhpcy5mYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZS5yZWdpc3RlckZhY3RvcmllcygpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGF3c0ZhY3Rvcmllcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdObyBBV1MgZmFjdG9yaWVzIGF2YWlsYWJsZSwgY3JlYXRpbmcgZW1wdHkgZmFjdG9yeScpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgYSBjb21iaW5lZCBmYWN0b3J5IHRoYXQgbWVyZ2VzIGFsbCBBV1MgZmFjdG9yaWVzXHJcbiAgICAgIGNvbnN0IGNvbWJpbmVkRmFjdG9yeTogQ29uZmlnRmFjdG9yeSA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZvciAoY29uc3QgZmFjdG9yeSBvZiBhd3NGYWN0b3JpZXMpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnlDb25maWcgPSBmYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29tYmluZWRDb25maWcsIGZhY3RvcnlDb25maWcpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYEVycm9yIGV4ZWN1dGluZyBBV1MgZmFjdG9yeTpgLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBjb21iaW5lZENvbmZpZztcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkIGFzeW5jIGNvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoICR7YXdzRmFjdG9yaWVzLmxlbmd0aH0gQVdTIGZhY3Rvcmllc2ApO1xyXG4gICAgICByZXR1cm4gY29tYmluZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgZmFjdG9yeUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3Rvcnk6JywgZmFjdG9yeUVycm9yKTtcclxuICAgICAgXHJcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBiYXNlZCBvbiBvcHRpb25zXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBmYWN0b3J5IGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGVtcHR5IGZhY3RvcnkgZHVlIHRvIEFXUyBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgbXVsdGlwbGUgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXMgZm9yIG5hbWVzcGFjZXMuXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBzZXBhcmF0ZSBmYWN0b3JpZXMgZm9yIGVhY2ggbmFtZXNwYWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gQXJyYXkgb2YgbmFtZXNwYWNlIG5hbWVzXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gYXJyYXkgb2YgbmFtZXNwYWNlZCBjb25maWd1cmF0aW9uIGZhY3Rvcmllc1xyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jTmFtZXNwYWNlZEZhY3RvcmllcyhuYW1lc3BhY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeVtdPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgbmFtZXNwYWNlZCBmYWN0b3JpZXMgZm9yOiAke25hbWVzcGFjZXMuam9pbignLCAnKX1gKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJOYW1lc3BhY2VkRmFjdG9yaWVzKG5hbWVzcGFjZXMpO1xyXG4gICAgICBcclxuICAgICAgaWYgKG5hbWVzcGFjZWRGYWN0b3JpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignTm8gbmFtZXNwYWNlZCBmYWN0b3JpZXMgYXZhaWxhYmxlLCBjcmVhdGluZyBlbXB0eSBmYWN0b3JpZXMnKTtcclxuICAgICAgICByZXR1cm4gbmFtZXNwYWNlcy5tYXAoKCkgPT4gKCkgPT4gKHt9KSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkICR7bmFtZXNwYWNlZEZhY3Rvcmllcy5sZW5ndGh9IGFzeW5jIG5hbWVzcGFjZWQgZmFjdG9yaWVzYCk7XHJcbiAgICAgIHJldHVybiBuYW1lc3BhY2VkRmFjdG9yaWVzO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBuYW1lc3BhY2VkIGZhY3RvcmllczonLCBuYW1lc3BhY2VkRXJyb3IpO1xyXG4gICAgICBcclxuICAgICAgLy8gSGFuZGxlIGVycm9yIGJhc2VkIG9uIG9wdGlvbnNcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mYWlsT25Bd3NFcnJvcikge1xyXG4gICAgICAgIHRocm93IG5hbWVzcGFjZWRFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGVtcHR5IGZhY3RvcmllcyBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBlbXB0eSBuYW1lc3BhY2VkIGZhY3RvcmllcyBkdWUgdG8gQVdTIGVycm9yJyk7XHJcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZXMubWFwKCgpID0+ICgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBuYW1lc3BhY2VkRXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggZGVwZW5kZW5jeSBpbmplY3Rpb24uXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIGZhY3RvcnkgdGhhdCBjYW4gcmVjZWl2ZSBpbmplY3RlZCBkZXBlbmRlbmNpZXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRlcGVuZGVuY2llcyAtIEFycmF5IG9mIGRlcGVuZGVuY3kgdG9rZW5zIHRvIGluamVjdFxyXG4gICAqIEByZXR1cm5zIEFzeW5jIGZhY3RvcnkgZnVuY3Rpb25cclxuICAgKi9cclxuICBjcmVhdGVBc3luY0ZhY3RvcnlXaXRoRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llczogYW55W10gPSBbXSk6ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxDb25maWdNb2R1bGVPcHRpb25zPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoICR7ZGVwZW5kZW5jaWVzLmxlbmd0aH0gZGVwZW5kZW5jaWVzYCk7XHJcbiAgICBcclxuICAgIHJldHVybiBhc3luYyAoLi4uX2luamVjdGVkRGVwZW5kZW5jaWVzOiBhbnlbXSk6IFByb21pc2U8Q29uZmlnTW9kdWxlT3B0aW9ucz4gPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFeGVjdXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcycpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENyZWF0ZSBBV1MgY29uZmlndXJhdGlvbiBmYWN0b3J5XHJcbiAgICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gQ3JlYXRlIGVuaGFuY2VkIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ09wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBsb2FkOiBbYXdzRmFjdG9yeV0sXHJcbiAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgIGNhY2hlOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRWYXJpYWJsZXM6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uZXhwYW5kVmFyaWFibGVzID8/IHRydWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcyBleGVjdXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICByZXR1cm4gY29uZmlnT3B0aW9ucztcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIGFzeW5jIGZhY3Rvcnkgd2l0aCBkZXBlbmRlbmNpZXM6JywgZGVwZW5kZW5jeUVycm9yKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICAgIHRocm93IGRlcGVuZGVuY3lFcnJvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gUmV0dXJuIGJhc2ljIGNvbmZpZ3VyYXRpb24gYXMgZmFsbGJhY2tcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2ljIGNvbmZpZ3VyYXRpb24gZHVlIHRvIGRlcGVuZGVuY3kgZXJyb3InKTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxvYWQ6IFtdLFxyXG4gICAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgY2FjaGU6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgZXhwYW5kVmFyaWFibGVzOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmV4cGFuZFZhcmlhYmxlcyA/PyB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhyb3cgZGVwZW5kZW5jeUVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFuIGFzeW5jIGZhY3RvcnkgdGhhdCBtZXJnZXMgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmYWN0b3J5IHRoYXQgY2FuIGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbiBzb3VyY2VzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBleGlzdGluZ0ZhY3RvcnkgLSBFeGlzdGluZyBjb25maWd1cmF0aW9uIGZhY3RvcnkgdG8gbWVyZ2Ugd2l0aFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIG1lcmdlZCBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgKi9cclxuICBhc3luYyBjcmVhdGVNZXJnZWRBc3luY0ZhY3RvcnkoZXhpc3RpbmdGYWN0b3J5PzogQ29uZmlnRmFjdG9yeSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeT4ge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIG1lcmdlZCBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBJZiBubyBleGlzdGluZyBmYWN0b3J5LCByZXR1cm4gQVdTIGZhY3RvcnlcclxuICAgICAgaWYgKCFleGlzdGluZ0ZhY3RvcnkpIHtcclxuICAgICAgICByZXR1cm4gYXdzRmFjdG9yeTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gQ3JlYXRlIG1lcmdlZCBmYWN0b3J5XHJcbiAgICAgIGNvbnN0IG1lcmdlZEZhY3Rvcnk6IENvbmZpZ0ZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXdzQ29uZmlnID0gYXdzRmFjdG9yeSgpO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gZXhpc3RpbmdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gTWVyZ2UgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gcHJlY2VkZW5jZVxyXG4gICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLm9wdGlvbnMucHJlY2VkZW5jZSB8fCAnYXdzLWZpcnN0JztcclxuICAgICAgICBcclxuICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gJ2F3cy1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmV4aXN0aW5nQ29uZmlnLCAuLi5hd3NDb25maWcgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByZWNlZGVuY2UgPT09ICdsb2NhbC1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmF3c0NvbmZpZywgLi4uZXhpc3RpbmdDb25maWcgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gbWVyZ2UgLSBkZWVwIG1lcmdlIGJvdGggY29uZmlndXJhdGlvbnNcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlZXBNZXJnZShleGlzdGluZ0NvbmZpZywgYXdzQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBtZXJnZWQgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5Jyk7XHJcbiAgICAgIHJldHVybiBtZXJnZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbWVyZ2VFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgbWVyZ2VkIGFzeW5jIGZhY3Rvcnk6JywgbWVyZ2VFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgbWVyZ2VFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGV4aXN0aW5nIGZhY3Rvcnkgb3IgZW1wdHkgZmFjdG9yeSBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBleGlzdGluZyBmYWN0b3J5IGR1ZSB0byBtZXJnZSBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiBleGlzdGluZ0ZhY3RvcnkgfHwgKCgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBtZXJnZUVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYXN5bmMgbW9kdWxlIHNldHVwLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ29uZmlnTW9kdWxlLmZvclJvb3QoKS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gYmFzZU9wdGlvbnMgLSBCYXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmhhbmNlXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gZW5oYW5jZWQgY29uZmlndXJhdGlvbiBvcHRpb25zXHJcbiAgICovXHJcbiAgYXN5bmMgY3JlYXRlQXN5bmNDb25maWdPcHRpb25zKGJhc2VPcHRpb25zOiBDb25maWdNb2R1bGVPcHRpb25zID0ge30pOiBQcm9taXNlPENvbmZpZ01vZHVsZU9wdGlvbnM+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBNZXJnZSB3aXRoIGV4aXN0aW5nIGxvYWQgYXJyYXlcclxuICAgICAgY29uc3QgZXhpc3RpbmdMb2FkID0gYmFzZU9wdGlvbnMubG9hZCB8fCBbXTtcclxuICAgICAgY29uc3QgZW5oYW5jZWRMb2FkID0gWy4uLmV4aXN0aW5nTG9hZCwgYXdzRmFjdG9yeV07XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgZW5oYW5jZWQgb3B0aW9uc1xyXG4gICAgICBjb25zdCBlbmhhbmNlZE9wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4uYmFzZU9wdGlvbnMsXHJcbiAgICAgICAgbG9hZDogZW5oYW5jZWRMb2FkLFxyXG4gICAgICAgIGlzR2xvYmFsOiBiYXNlT3B0aW9ucy5pc0dsb2JhbCAhPT0gdW5kZWZpbmVkID8gYmFzZU9wdGlvbnMuaXNHbG9iYWwgOiAodGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSksXHJcbiAgICAgICAgY2FjaGU6IGJhc2VPcHRpb25zLmNhY2hlICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5jYWNoZSA6ICh0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUpLFxyXG4gICAgICAgIGV4cGFuZFZhcmlhYmxlczogYmFzZU9wdGlvbnMuZXhwYW5kVmFyaWFibGVzICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5leHBhbmRWYXJpYWJsZXMgOiAodGhpcy5vcHRpb25zLmZhY3RvcnlPcHRpb25zPy5leHBhbmRWYXJpYWJsZXMgPz8gdHJ1ZSksXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgICAgcmV0dXJuIGVuaGFuY2VkT3B0aW9ucztcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnNFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgYXN5bmMgY29uZmlndXJhdGlvbiBvcHRpb25zOicsIG9wdGlvbnNFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgb3B0aW9uc0Vycm9yO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBSZXR1cm4gYmFzZSBvcHRpb25zIGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2Ugb3B0aW9ucyBkdWUgdG8gYXN5bmMgZXJyb3InKTtcclxuICAgICAgICByZXR1cm4gYmFzZU9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRocm93IG9wdGlvbnNFcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIEFXUyBjb25maWd1cmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYXN5bmMgbG9hZGluZy5cclxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgQVdTIGludGVncmF0aW9uIHNob3VsZCBiZSBlbmFibGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGF2YWlsYWJpbGl0eSBzdGF0dXNcclxuICAgKi9cclxuICBhc3luYyBjaGVja0FzeW5jQXZhaWxhYmlsaXR5KCk6IFByb21pc2U8e1xyXG4gICAgaXNBdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBmYWN0b3JpZXNDb3VudDogbnVtYmVyO1xyXG4gICAgZXJyb3JzOiBzdHJpbmdbXTtcclxuICB9PiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2hlY2tpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBhdmFpbGFiaWxpdHknKTtcclxuICAgIFxyXG4gICAgY29uc3Qgc3RhdHVzID0ge1xyXG4gICAgICBpc0F2YWlsYWJsZTogZmFsc2UsXHJcbiAgICAgIGZhY3Rvcmllc0NvdW50OiAwLFxyXG4gICAgICBlcnJvcnM6IFtdIGFzIHN0cmluZ1tdXHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRyeSB0byByZWdpc3RlciBmYWN0b3JpZXMgdG8gY2hlY2sgYXZhaWxhYmlsaXR5XHJcbiAgICAgIGNvbnN0IGZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJGYWN0b3JpZXMoKTtcclxuICAgICAgXHJcbiAgICAgIHN0YXR1cy5pc0F2YWlsYWJsZSA9IGZhY3Rvcmllcy5sZW5ndGggPiAwO1xyXG4gICAgICBzdGF0dXMuZmFjdG9yaWVzQ291bnQgPSBmYWN0b3JpZXMubGVuZ3RoO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEFzeW5jIGF2YWlsYWJpbGl0eSBjaGVjazogYXZhaWxhYmxlPSR7c3RhdHVzLmlzQXZhaWxhYmxlfSwgZmFjdG9yaWVzPSR7c3RhdHVzLmZhY3Rvcmllc0NvdW50fWApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgYXZhaWxhYmlsaXR5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHN0YXR1cy5lcnJvcnMucHVzaChhdmFpbGFiaWxpdHlFcnJvci5tZXNzYWdlKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0FzeW5jIGF2YWlsYWJpbGl0eSBjaGVjayBmYWlsZWQ6JywgYXZhaWxhYmlsaXR5RXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgbG9hZHMgY29uZmlndXJhdGlvbiBvbi1kZW1hbmQuXHJcbiAgICogVGhpcyBmYWN0b3J5IGRlbGF5cyBBV1MgY29uZmlndXJhdGlvbiBsb2FkaW5nIHVudGlsIGl0J3MgYWN0dWFsbHkgbmVlZGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIENvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoIGxhenkgbG9hZGluZ1xyXG4gICAqL1xyXG4gIGNyZWF0ZUxhenlBc3luY0ZhY3RvcnkoKTogQ29uZmlnRmFjdG9yeSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRpbmcgbGF6eSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgbGV0IGNhY2hlZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGxvYWRpbmdQcm9taXNlOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIC8vIFJldHVybiBjYWNoZWQgY29uZmlnIGlmIGF2YWlsYWJsZVxyXG4gICAgICBpZiAoY2FjaGVkQ29uZmlnICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZENvbmZpZztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gSWYgYWxyZWFkeSBsb2FkaW5nLCB3YWl0IGZvciB0aGUgcHJvbWlzZVxyXG4gICAgICBpZiAobG9hZGluZ1Byb21pc2UpIHtcclxuICAgICAgICAvLyBGb3Igc3luY2hyb25vdXMgZmFjdG9yeSwgd2UgY2FuJ3Qgd2FpdCBmb3IgYXN5bmMgb3BlcmF0aW9uc1xyXG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgYW5kIGxldCB0aGUgcHJvbWlzZSByZXNvbHZlIGluIGJhY2tncm91bmRcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdMYXp5IGZhY3RvcnkgY2FsbGVkIHdoaWxlIGxvYWRpbmcsIHJldHVybmluZyBlbXB0eSBjb25maWcnKTtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFN0YXJ0IGxvYWRpbmcgY29uZmlndXJhdGlvblxyXG4gICAgICBsb2FkaW5nUHJvbWlzZSA9IHRoaXMubG9hZENvbmZpZ3VyYXRpb25MYXppbHkoKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgZm9yIG5vdyAod2lsbCBiZSBwb3B1bGF0ZWQgb24gbmV4dCBjYWxsKVxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU3RhcnRlZCBsYXp5IGxvYWRpbmcsIHJldHVybmluZyBlbXB0eSBjb25maWcnKTtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgY29uZmlndXJhdGlvbiBsYXppbHkgZm9yIHRoZSBsYXp5IGZhY3RvcnkuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gY29uZmlndXJhdGlvbiBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29uZmlndXJhdGlvbkxhemlseSgpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdMb2FkaW5nIGNvbmZpZ3VyYXRpb24gbGF6aWx5Jyk7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBhd3NGYWN0b3J5ID0gYXdhaXQgdGhpcy5jcmVhdGVBc3luY0NvbmZpZ0ZhY3RvcnkoKTtcclxuICAgICAgY29uc3QgY29uZmlnID0gYXdzRmFjdG9yeSgpO1xyXG4gICAgICBcclxuICAgICAgLy8gQ2FjaGUgdGhlIGNvbmZpZ3VyYXRpb25cclxuICAgICAgY29uc3QgY2FjaGVkQ29uZmlnID0gY29uZmlnO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0xhenkgY29uZmlndXJhdGlvbiBsb2FkaW5nIGNvbXBsZXRlZCcpO1xyXG4gICAgICByZXR1cm4gY2FjaGVkQ29uZmlnO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbGF6eUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignTGF6eSBjb25maWd1cmF0aW9uIGxvYWRpbmcgZmFpbGVkOicsIGxhenlFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBSZXR1cm4gZW1wdHkgY29uZmlnIG9uIGVycm9yXHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZXAgbWVyZ2UgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cy5cclxuICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGFyZ2V0IG9iamVjdFxyXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBTb3VyY2Ugb2JqZWN0XHJcbiAgICogQHJldHVybnMgTWVyZ2VkIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVlcE1lcmdlKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55Piwgc291cmNlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLnRhcmdldCB9O1xyXG5cclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZSkpIHtcclxuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKHJlc3VsdFtrZXldICYmIHR5cGVvZiByZXN1bHRba2V5XSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocmVzdWx0W2tleV0pKSB7XHJcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHRoaXMuZGVlcE1lcmdlKHJlc3VsdFtrZXldLCB2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdFtrZXldID0geyAuLi52YWx1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn0iXX0=
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtY29uZmlnLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uL3NlcnZpY2VzL2FzeW5jLWNvbmZpZy1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVGOzs7O0dBSUc7QUFFSSxJQUFNLHdCQUF3QixnQ0FBOUIsTUFBTSx3QkFBd0I7SUFJaEI7SUFFQTtJQUxGLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQywwQkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRSxZQUNtQiwwQkFBc0QsRUFFdEQsVUFBOEIsRUFBRTtRQUZoQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBRXRELFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQ2hELENBQUM7SUFFSjs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUM7WUFDSCwrQ0FBK0M7WUFDL0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUUvRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENB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LENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7QUFuWVksd0JBQXdCO0lBRHBDLFVBQVUsRUFBRTtJQU1SLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFBRSxXQUFBLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO3FDQURiLDBCQUEwQjtHQUo5RCx3QkFBd0IsQ0FtWXBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTG9nZ2VyLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdGYWN0b3J5LCBDb25maWdNb2R1bGVPcHRpb25zIH0gZnJvbSAnQG5lc3Rqcy9jb25maWcnO1xyXG5pbXBvcnQgeyBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSB9IGZyb20gJy4vZmFjdG9yeS1yZWdpc3RyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVncmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZWdyYXRpb24tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBORVNUSlNfQ09ORklHX0FXU19JTlRFR1JBVElPTl9PUFRJT05TIH0gZnJvbSAnLi4vbmVzdGpzLWNvbmZpZy1pbnRlZ3JhdGlvbi5tb2R1bGUnO1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBzZXJ2aWNlIGZvciBhc3luYyBjb25maWd1cmF0aW9uIHN1cHBvcnQgd2l0aCBAbmVzdGpzL2NvbmZpZy5cclxuICogVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgY3JlYXRpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXNcclxuICogYW5kIG1hbmFnaW5nIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGluIGFzeW5jIHNjZW5hcmlvcy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFzeW5jQ29uZmlnSGVscGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKEFzeW5jQ29uZmlnSGVscGVyU2VydmljZS5uYW1lKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhY3RvcnlSZWdpc3RyYXRpb25TZXJ2aWNlOiBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkVTVEpTX0NPTkZJR19BV1NfSU5URUdSQVRJT05fT1BUSU9OUykgXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEludGVncmF0aW9uT3B0aW9ucyA9IHt9XHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5IHRoYXQgbG9hZHMgQVdTIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogVGhpcyBmYWN0b3J5IGNhbiBiZSB1c2VkIHdpdGggQG5lc3Rqcy9jb25maWcncyBsb2FkIGFycmF5LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24gZmFjdG9yeVxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jQ29uZmlnRmFjdG9yeSgpOiBQcm9taXNlPENvbmZpZ0ZhY3Rvcnk+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gUmVnaXN0ZXIgQVdTIGZhY3RvcmllcyBhbmQgZ2V0IHRoZSBmaXJzdCBvbmVcclxuICAgICAgY29uc3QgYXdzRmFjdG9yaWVzID0gYXdhaXQgdGhpcy5mYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZS5yZWdpc3RlckZhY3RvcmllcygpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGF3c0ZhY3Rvcmllcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdObyBBV1MgZmFjdG9yaWVzIGF2YWlsYWJsZSwgY3JlYXRpbmcgZW1wdHkgZmFjdG9yeScpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgYSBjb21iaW5lZCBmYWN0b3J5IHRoYXQgbWVyZ2VzIGFsbCBBV1MgZmFjdG9yaWVzXHJcbiAgICAgIGNvbnN0IGNvbWJpbmVkRmFjdG9yeTogQ29uZmlnRmFjdG9yeSA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZvciAoY29uc3QgZmFjdG9yeSBvZiBhd3NGYWN0b3JpZXMpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnlDb25maWcgPSBmYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29tYmluZWRDb25maWcsIGZhY3RvcnlDb25maWcpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYEVycm9yIGV4ZWN1dGluZyBBV1MgZmFjdG9yeTpgLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBjb21iaW5lZENvbmZpZztcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkIGFzeW5jIGNvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoICR7YXdzRmFjdG9yaWVzLmxlbmd0aH0gQVdTIGZhY3Rvcmllc2ApO1xyXG4gICAgICByZXR1cm4gY29tYmluZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgZmFjdG9yeUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3Rvcnk6JywgZmFjdG9yeUVycm9yKTtcclxuICAgICAgXHJcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBiYXNlZCBvbiBvcHRpb25zXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBmYWN0b3J5IGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGVtcHR5IGZhY3RvcnkgZHVlIHRvIEFXUyBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgbXVsdGlwbGUgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXMgZm9yIG5hbWVzcGFjZXMuXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBzZXBhcmF0ZSBmYWN0b3JpZXMgZm9yIGVhY2ggbmFtZXNwYWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gQXJyYXkgb2YgbmFtZXNwYWNlIG5hbWVzXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gYXJyYXkgb2YgbmFtZXNwYWNlZCBjb25maWd1cmF0aW9uIGZhY3Rvcmllc1xyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jTmFtZXNwYWNlZEZhY3RvcmllcyhuYW1lc3BhY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeVtdPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgbmFtZXNwYWNlZCBmYWN0b3JpZXMgZm9yOiAke25hbWVzcGFjZXMuam9pbignLCAnKX1gKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJOYW1lc3BhY2VkRmFjdG9yaWVzKG5hbWVzcGFjZXMpO1xyXG4gICAgICBcclxuICAgICAgaWYgKG5hbWVzcGFjZWRGYWN0b3JpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignTm8gbmFtZXNwYWNlZCBmYWN0b3JpZXMgYXZhaWxhYmxlLCBjcmVhdGluZyBlbXB0eSBmYWN0b3JpZXMnKTtcclxuICAgICAgICByZXR1cm4gbmFtZXNwYWNlcy5tYXAoKCkgPT4gKCkgPT4gKHt9KSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkICR7bmFtZXNwYWNlZEZhY3Rvcmllcy5sZW5ndGh9IGFzeW5jIG5hbWVzcGFjZWQgZmFjdG9yaWVzYCk7XHJcbiAgICAgIHJldHVybiBuYW1lc3BhY2VkRmFjdG9yaWVzO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBuYW1lc3BhY2VkIGZhY3RvcmllczonLCBuYW1lc3BhY2VkRXJyb3IpO1xyXG4gICAgICBcclxuICAgICAgLy8gSGFuZGxlIGVycm9yIGJhc2VkIG9uIG9wdGlvbnNcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mYWlsT25Bd3NFcnJvcikge1xyXG4gICAgICAgIHRocm93IG5hbWVzcGFjZWRFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGVtcHR5IGZhY3RvcmllcyBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBlbXB0eSBuYW1lc3BhY2VkIGZhY3RvcmllcyBkdWUgdG8gQVdTIGVycm9yJyk7XHJcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZXMubWFwKCgpID0+ICgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBuYW1lc3BhY2VkRXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggZGVwZW5kZW5jeSBpbmplY3Rpb24uXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIGZhY3RvcnkgdGhhdCBjYW4gcmVjZWl2ZSBpbmplY3RlZCBkZXBlbmRlbmNpZXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRlcGVuZGVuY2llcyAtIEFycmF5IG9mIGRlcGVuZGVuY3kgdG9rZW5zIHRvIGluamVjdFxyXG4gICAqIEByZXR1cm5zIEFzeW5jIGZhY3RvcnkgZnVuY3Rpb25cclxuICAgKi9cclxuICBjcmVhdGVBc3luY0ZhY3RvcnlXaXRoRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llczogYW55W10gPSBbXSk6ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxDb25maWdNb2R1bGVPcHRpb25zPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoICR7ZGVwZW5kZW5jaWVzLmxlbmd0aH0gZGVwZW5kZW5jaWVzYCk7XHJcbiAgICBcclxuICAgIHJldHVybiBhc3luYyAoLi4uX2luamVjdGVkRGVwZW5kZW5jaWVzOiBhbnlbXSk6IFByb21pc2U8Q29uZmlnTW9kdWxlT3B0aW9ucz4gPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFeGVjdXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcycpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENyZWF0ZSBBV1MgY29uZmlndXJhdGlvbiBmYWN0b3J5XHJcbiAgICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gQ3JlYXRlIGVuaGFuY2VkIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ09wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBsb2FkOiBbYXdzRmFjdG9yeV0sXHJcbiAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgIGNhY2hlOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRWYXJpYWJsZXM6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uZXhwYW5kVmFyaWFibGVzID8/IHRydWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcyBleGVjdXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICByZXR1cm4gY29uZmlnT3B0aW9ucztcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIGFzeW5jIGZhY3Rvcnkgd2l0aCBkZXBlbmRlbmNpZXM6JywgZGVwZW5kZW5jeUVycm9yKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICAgIHRocm93IGRlcGVuZGVuY3lFcnJvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gUmV0dXJuIGJhc2ljIGNvbmZpZ3VyYXRpb24gYXMgZmFsbGJhY2tcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2ljIGNvbmZpZ3VyYXRpb24gZHVlIHRvIGRlcGVuZGVuY3kgZXJyb3InKTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxvYWQ6IFtdLFxyXG4gICAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgY2FjaGU6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgZXhwYW5kVmFyaWFibGVzOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmV4cGFuZFZhcmlhYmxlcyA/PyB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhyb3cgZGVwZW5kZW5jeUVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFuIGFzeW5jIGZhY3RvcnkgdGhhdCBtZXJnZXMgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmYWN0b3J5IHRoYXQgY2FuIGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbiBzb3VyY2VzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBleGlzdGluZ0ZhY3RvcnkgLSBFeGlzdGluZyBjb25maWd1cmF0aW9uIGZhY3RvcnkgdG8gbWVyZ2Ugd2l0aFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIG1lcmdlZCBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgKi9cclxuICBhc3luYyBjcmVhdGVNZXJnZWRBc3luY0ZhY3RvcnkoZXhpc3RpbmdGYWN0b3J5PzogQ29uZmlnRmFjdG9yeSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeT4ge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIG1lcmdlZCBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBJZiBubyBleGlzdGluZyBmYWN0b3J5LCByZXR1cm4gQVdTIGZhY3RvcnlcclxuICAgICAgaWYgKCFleGlzdGluZ0ZhY3RvcnkpIHtcclxuICAgICAgICByZXR1cm4gYXdzRmFjdG9yeTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gQ3JlYXRlIG1lcmdlZCBmYWN0b3J5XHJcbiAgICAgIGNvbnN0IG1lcmdlZEZhY3Rvcnk6IENvbmZpZ0ZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXdzQ29uZmlnID0gYXdzRmFjdG9yeSgpO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gZXhpc3RpbmdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gTWVyZ2UgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gcHJlY2VkZW5jZVxyXG4gICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLm9wdGlvbnMucHJlY2VkZW5jZSB8fCAnYXdzLWZpcnN0JztcclxuICAgICAgICBcclxuICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gJ2F3cy1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmV4aXN0aW5nQ29uZmlnLCAuLi5hd3NDb25maWcgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByZWNlZGVuY2UgPT09ICdsb2NhbC1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmF3c0NvbmZpZywgLi4uZXhpc3RpbmdDb25maWcgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gbWVyZ2UgLSBkZWVwIG1lcmdlIGJvdGggY29uZmlndXJhdGlvbnNcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlZXBNZXJnZShleGlzdGluZ0NvbmZpZywgYXdzQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBtZXJnZWQgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5Jyk7XHJcbiAgICAgIHJldHVybiBtZXJnZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbWVyZ2VFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgbWVyZ2VkIGFzeW5jIGZhY3Rvcnk6JywgbWVyZ2VFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgbWVyZ2VFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGV4aXN0aW5nIGZhY3Rvcnkgb3IgZW1wdHkgZmFjdG9yeSBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBleGlzdGluZyBmYWN0b3J5IGR1ZSB0byBtZXJnZSBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiBleGlzdGluZ0ZhY3RvcnkgfHwgKCgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBtZXJnZUVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYXN5bmMgbW9kdWxlIHNldHVwLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ29uZmlnTW9kdWxlLmZvclJvb3QoKS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gYmFzZU9wdGlvbnMgLSBCYXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmhhbmNlXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gZW5oYW5jZWQgY29uZmlndXJhdGlvbiBvcHRpb25zXHJcbiAgICovXHJcbiAgYXN5bmMgY3JlYXRlQXN5bmNDb25maWdPcHRpb25zKGJhc2VPcHRpb25zOiBDb25maWdNb2R1bGVPcHRpb25zID0ge30pOiBQcm9taXNlPENvbmZpZ01vZHVsZU9wdGlvbnM+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBNZXJnZSB3aXRoIGV4aXN0aW5nIGxvYWQgYXJyYXlcclxuICAgICAgY29uc3QgZXhpc3RpbmdMb2FkID0gYmFzZU9wdGlvbnMubG9hZCB8fCBbXTtcclxuICAgICAgY29uc3QgZW5oYW5jZWRMb2FkID0gWy4uLmV4aXN0aW5nTG9hZCwgYXdzRmFjdG9yeV07XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgZW5oYW5jZWQgb3B0aW9uc1xyXG4gICAgICBjb25zdCBlbmhhbmNlZE9wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4uYmFzZU9wdGlvbnMsXHJcbiAgICAgICAgbG9hZDogZW5oYW5jZWRMb2FkLFxyXG4gICAgICAgIGlzR2xvYmFsOiBiYXNlT3B0aW9ucy5pc0dsb2JhbCAhPT0gdW5kZWZpbmVkID8gYmFzZU9wdGlvbnMuaXNHbG9iYWwgOiAodGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSksXHJcbiAgICAgICAgY2FjaGU6IGJhc2VPcHRpb25zLmNhY2hlICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5jYWNoZSA6ICh0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUpLFxyXG4gICAgICAgIGV4cGFuZFZhcmlhYmxlczogYmFzZU9wdGlvbnMuZXhwYW5kVmFyaWFibGVzICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5leHBhbmRWYXJpYWJsZXMgOiAodGhpcy5vcHRpb25zLmZhY3RvcnlPcHRpb25zPy5leHBhbmRWYXJpYWJsZXMgPz8gdHJ1ZSksXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgICAgcmV0dXJuIGVuaGFuY2VkT3B0aW9ucztcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnNFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgYXN5bmMgY29uZmlndXJhdGlvbiBvcHRpb25zOicsIG9wdGlvbnNFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgb3B0aW9uc0Vycm9yO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBSZXR1cm4gYmFzZSBvcHRpb25zIGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2Ugb3B0aW9ucyBkdWUgdG8gYXN5bmMgZXJyb3InKTtcclxuICAgICAgICByZXR1cm4gYmFzZU9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRocm93IG9wdGlvbnNFcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIEFXUyBjb25maWd1cmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYXN5bmMgbG9hZGluZy5cclxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgQVdTIGludGVncmF0aW9uIHNob3VsZCBiZSBlbmFibGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGF2YWlsYWJpbGl0eSBzdGF0dXNcclxuICAgKi9cclxuICBhc3luYyBjaGVja0FzeW5jQXZhaWxhYmlsaXR5KCk6IFByb21pc2U8e1xyXG4gICAgaXNBdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBmYWN0b3JpZXNDb3VudDogbnVtYmVyO1xyXG4gICAgZXJyb3JzOiBzdHJpbmdbXTtcclxuICB9PiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2hlY2tpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBhdmFpbGFiaWxpdHknKTtcclxuICAgIFxyXG4gICAgY29uc3Qgc3RhdHVzID0ge1xyXG4gICAgICBpc0F2YWlsYWJsZTogZmFsc2UsXHJcbiAgICAgIGZhY3Rvcmllc0NvdW50OiAwLFxyXG4gICAgICBlcnJvcnM6IFtdIGFzIHN0cmluZ1tdXHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRyeSB0byByZWdpc3RlciBmYWN0b3JpZXMgdG8gY2hlY2sgYXZhaWxhYmlsaXR5XHJcbiAgICAgIGNvbnN0IGZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJGYWN0b3JpZXMoKTtcclxuICAgICAgXHJcbiAgICAgIHN0YXR1cy5pc0F2YWlsYWJsZSA9IGZhY3Rvcmllcy5sZW5ndGggPiAwO1xyXG4gICAgICBzdGF0dXMuZmFjdG9yaWVzQ291bnQgPSBmYWN0b3JpZXMubGVuZ3RoO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEFzeW5jIGF2YWlsYWJpbGl0eSBjaGVjazogYXZhaWxhYmxlPSR7c3RhdHVzLmlzQXZhaWxhYmxlfSwgZmFjdG9yaWVzPSR7c3RhdHVzLmZhY3Rvcmllc0NvdW50fWApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgYXZhaWxhYmlsaXR5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHN0YXR1cy5lcnJvcnMucHVzaChhdmFpbGFiaWxpdHlFcnJvci5tZXNzYWdlKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0FzeW5jIGF2YWlsYWJpbGl0eSBjaGVjayBmYWlsZWQ6JywgYXZhaWxhYmlsaXR5RXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgbG9hZHMgY29uZmlndXJhdGlvbiBvbi1kZW1hbmQuXHJcbiAgICogVGhpcyBmYWN0b3J5IGRlbGF5cyBBV1MgY29uZmlndXJhdGlvbiBsb2FkaW5nIHVudGlsIGl0J3MgYWN0dWFsbHkgbmVlZGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIENvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoIGxhenkgbG9hZGluZ1xyXG4gICAqL1xyXG4gIGNyZWF0ZUxhenlBc3luY0ZhY3RvcnkoKTogQ29uZmlnRmFjdG9yeSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRpbmcgbGF6eSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgbGV0IGNhY2hlZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGxvYWRpbmdQcm9taXNlOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIC8vIFJldHVybiBjYWNoZWQgY29uZmlnIGlmIGF2YWlsYWJsZVxyXG4gICAgICBpZiAoY2FjaGVkQ29uZmlnICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZENvbmZpZztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gSWYgYWxyZWFkeSBsb2FkaW5nLCB3YWl0IGZvciB0aGUgcHJvbWlzZVxyXG4gICAgICBpZiAobG9hZGluZ1Byb21pc2UpIHtcclxuICAgICAgICAvLyBGb3Igc3luY2hyb25vdXMgZmFjdG9yeSwgd2UgY2FuJ3Qgd2FpdCBmb3IgYXN5bmMgb3BlcmF0aW9uc1xyXG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgYW5kIGxldCB0aGUgcHJvbWlzZSByZXNvbHZlIGluIGJhY2tncm91bmRcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdMYXp5IGZhY3RvcnkgY2FsbGVkIHdoaWxlIGxvYWRpbmcsIHJldHVybmluZyBlbXB0eSBjb25maWcnKTtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFN0YXJ0IGxvYWRpbmcgY29uZmlndXJhdGlvbiBhbmQgdXBkYXRlIGNhY2hlIHdoZW4gY29tcGxldGVcclxuICAgICAgbG9hZGluZ1Byb21pc2UgPSB0aGlzLmxvYWRDb25maWd1cmF0aW9uTGF6aWx5KClcclxuICAgICAgICAudGhlbigoY29uZmlnKSA9PiB7XHJcbiAgICAgICAgICBjYWNoZWRDb25maWcgPSBjb25maWc7XHJcbiAgICAgICAgICBsb2FkaW5nUHJvbWlzZSA9IG51bGw7XHJcbiAgICAgICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgbG9hZGluZ1Byb21pc2UgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0xhenkgbG9hZGluZyBmYWlsZWQ6JywgZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGVtcHR5IGNvbmZpZyBmb3Igbm93ICh3aWxsIGJlIHBvcHVsYXRlZCBvbiBuZXh0IGNhbGwpXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTdGFydGVkIGxhenkgbG9hZGluZywgcmV0dXJuaW5nIGVtcHR5IGNvbmZpZycpO1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGxhemlseSBmb3IgdGhlIGxhenkgZmFjdG9yeS5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byBjb25maWd1cmF0aW9uIGRhdGFcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGxvYWRDb25maWd1cmF0aW9uTGF6aWx5KCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0xvYWRpbmcgY29uZmlndXJhdGlvbiBsYXppbHknKTtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGF3c0ZhY3RvcnkgPSBhd2FpdCB0aGlzLmNyZWF0ZUFzeW5jQ29uZmlnRmFjdG9yeSgpO1xyXG4gICAgICBjb25zdCBjb25maWcgPSBhd3NGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTGF6eSBjb25maWd1cmF0aW9uIGxvYWRpbmcgY29tcGxldGVkJyk7XHJcbiAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zdCBsYXp5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdMYXp5IGNvbmZpZ3VyYXRpb24gbG9hZGluZyBmYWlsZWQ6JywgbGF6eUVycm9yKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgb24gZXJyb3JcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVlcCBtZXJnZSB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzLlxyXG4gICAqIEBwYXJhbSB0YXJnZXQgLSBUYXJnZXQgb2JqZWN0XHJcbiAgICogQHBhcmFtIHNvdXJjZSAtIFNvdXJjZSBvYmplY3RcclxuICAgKiBAcmV0dXJucyBNZXJnZWQgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZWVwTWVyZ2UodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHsgLi4udGFyZ2V0IH07XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlKSkge1xyXG4gICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBpZiAocmVzdWx0W2tleV0gJiYgdHlwZW9mIHJlc3VsdFtrZXldID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXN1bHRba2V5XSkpIHtcclxuICAgICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5kZWVwTWVyZ2UocmVzdWx0W2tleV0sIHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB7IC4uLnZhbHVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufSJdfQ==