@stemy/ngx-utils 13.4.1 → 13.4.3

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 (39) hide show
  1. package/bundles/stemy-ngx-utils.umd.js +195 -85
  2. package/bundles/stemy-ngx-utils.umd.js.map +1 -1
  3. package/esm2015/ngx-utils/common-types.js +6 -1
  4. package/esm2015/ngx-utils/pipes/filter.pipe.js +6 -11
  5. package/esm2015/ngx-utils/pipes/find.pipe.js +9 -9
  6. package/esm2015/ngx-utils/services/api.service.js +6 -2
  7. package/esm2015/ngx-utils/services/base-http.service.js +8 -9
  8. package/esm2015/ngx-utils/services/config.service.js +14 -1
  9. package/esm2015/ngx-utils/services/language.service.js +16 -4
  10. package/esm2015/ngx-utils/services/universal.service.js +10 -7
  11. package/esm2015/ngx-utils/utils/object.utils.js +76 -30
  12. package/esm2015/public_api.js +2 -2
  13. package/esm2015/stemy-ngx-utils.js +3 -2
  14. package/esm2020/ngx-utils/common-types.mjs +6 -1
  15. package/esm2020/ngx-utils/pipes/filter.pipe.mjs +6 -11
  16. package/esm2020/ngx-utils/pipes/find.pipe.mjs +9 -9
  17. package/esm2020/ngx-utils/services/api.service.mjs +6 -2
  18. package/esm2020/ngx-utils/services/base-http.service.mjs +7 -8
  19. package/esm2020/ngx-utils/services/config.service.mjs +14 -1
  20. package/esm2020/ngx-utils/services/language.service.mjs +15 -4
  21. package/esm2020/ngx-utils/services/universal.service.mjs +10 -7
  22. package/esm2020/ngx-utils/utils/object.utils.mjs +76 -28
  23. package/esm2020/public_api.mjs +2 -2
  24. package/fesm2015/stemy-ngx-utils.js +143 -65
  25. package/fesm2015/stemy-ngx-utils.js.map +1 -1
  26. package/fesm2015/stemy-ngx-utils.mjs +142 -63
  27. package/fesm2015/stemy-ngx-utils.mjs.map +1 -1
  28. package/fesm2020/stemy-ngx-utils.mjs +141 -63
  29. package/fesm2020/stemy-ngx-utils.mjs.map +1 -1
  30. package/ngx-utils/common-types.d.ts +10 -1
  31. package/ngx-utils/pipes/find.pipe.d.ts +1 -1
  32. package/ngx-utils/services/base-http.service.d.ts +1 -0
  33. package/ngx-utils/services/config.service.d.ts +1 -0
  34. package/ngx-utils/services/language.service.d.ts +3 -3
  35. package/ngx-utils/services/universal.service.d.ts +3 -2
  36. package/ngx-utils/utils/object.utils.d.ts +3 -0
  37. package/package.json +1 -1
  38. package/public_api.d.ts +1 -1
  39. package/stemy-ngx-utils.metadata.json +1 -1
@@ -30,6 +30,11 @@ export function FactoryDependencies(...dependencies) {
30
30
  ReflectUtils.defineMetadata("factoryDependencies", dependencies, target, method);
31
31
  };
32
32
  }
33
+ export function ObjectType(type) {
34
+ return function (target) {
35
+ ReflectUtils.defineMetadata("objectType", type, target);
36
+ };
37
+ }
33
38
  export class PaginationItemContext {
34
39
  constructor(item, parallelItem, count, index, dataIndex) {
35
40
  this.item = item;
@@ -116,4 +121,4 @@ export const GLOBAL_TEMPLATES = new InjectionToken("global-templates");
116
121
  // --- Valued promise ---
117
122
  export class ValuedPromise extends Promise {
118
123
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW9DM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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Y0FBYyxDQUFDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7Q0FNMUI7QUFXRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxJQUFJLGNBQWMsQ0FBYyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTdHLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBMkIsSUFBSSxjQUFjLENBQVMsb0JBQW9CLENBQUMsQ0FBQztBQUtyRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHdCQUF3QixDQUFDLENBQUM7QUFjaEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXVCLGtCQUFrQixDQUFDLENBQUM7QUFvQjdGLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8sYUFBaUIsU0FBUSxPQUFVO0NBRS9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTmdab25lLCBQcm92aWRlciwgVGVtcGxhdGVSZWYsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEYXRhLCBSb3V0ZSwgVXJsVHJlZX0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7UmVmbGVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9yZWZsZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuLy8gLS0tIFV0aWxzXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlc29sdmVGYWN0b3J5IHtcclxuICAgIGZ1bmM6IEZ1bmN0aW9uO1xyXG4gICAgdHlwZT86IGFueTtcclxuICAgIHBhcmFtcz86IGFueVtdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FudmFzQ29sb3Ige1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIHI6IG51bWJlciwgcHVibGljIGc6IG51bWJlciwgcHVibGljIGI6IG51bWJlciwgcHVibGljIGE6IG51bWJlciA9IDI1NSkge1xyXG5cclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEljb24gc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSWNvblNlcnZpY2Uge1xyXG4gICAgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIGljb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAgIGdldEljb24oaWNvbjogc3RyaW5nLCBhY3RpdmVJY29uOiBzdHJpbmcsIGFjdGl2ZTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElDT05fU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJSWNvblNlcnZpY2U+KFwiaWNvbi1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIExhbmd1YWdlIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9uIHtcclxuICAgIGxhbmc6IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZ3Mge1xyXG4gICAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcclxuICAgIGRldkxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIHNldHRpbmdzPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNlcnZpY2Uge1xyXG4gICAgY3VycmVudExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBlZGl0TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIGRpc2FibGVUcmFuc2xhdGlvbnM6IGJvb2xlYW47XHJcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIGRpY3Rpb25hcnk6IElUcmFuc2xhdGlvbnM7XHJcbiAgICByZWFkb25seSBsYW5ndWFnZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPjtcclxuICAgIHJlYWRvbmx5IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XHJcbiAgICByZXBsYWNlTGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pOiB2b2lkO1xyXG4gICAgYWRkTGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pOiB2b2lkO1xyXG4gICAgZ2V0VHJhbnNsYXRpb25TeW5jKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogUHJvbWlzZTxzdHJpbmc+O1xyXG4gICAgZ2V0VHJhbnNsYXRpb25zKC4uLmtleXM6IHN0cmluZ1tdKTogUHJvbWlzZTxJVHJhbnNsYXRpb25zPjtcclxuICAgIGdldFRyYW5zbGF0aW9uRnJvbU9iamVjdCh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbnMsIHBhcmFtcz86IGFueSwgbGFuZz86IHN0cmluZyk6IHN0cmluZztcclxuICAgIGdldFRyYW5zbGF0aW9uRnJvbUFycmF5KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9uW10sIHBhcmFtcz86IGFueSwgbGFuZz86IHN0cmluZyk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IExBTkdVQUdFX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElMYW5ndWFnZVNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElMYW5ndWFnZVNlcnZpY2U+KFwibGFuZ3VhZ2Utc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBdXRoIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUF1dGhTZXJ2aWNlIHtcclxuICAgIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcclxuICAgIHVzZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAgIGNoZWNrQXV0aGVudGljYXRlZCgpOiBQcm9taXNlPGJvb2xlYW4+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSb3V0ZVZhbGlkYXRvciA9IChhdXRoOiBJQXV0aFNlcnZpY2UsIHJvdXRlPzogSVJvdXRlLCBuZXh0PzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkgPT4gUHJvbWlzZTxib29sZWFuPjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlRGF0YSBleHRlbmRzIERhdGEge1xyXG4gICAgcmV0dXJuU3RhdGU/OiBzdHJpbmdbXTtcclxuICAgIGd1YXJkcz86IEFycmF5PElSZXNvbHZlRmFjdG9yeSB8IFJvdXRlVmFsaWRhdG9yPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUm91dGUgZXh0ZW5kcyBSb3V0ZSB7XHJcbiAgICBkYXRhPzogSVJvdXRlRGF0YTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFVVEhfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+KFwiYXV0aC1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEFjbCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBY2xDb21wb25lbnQge1xyXG4gICAgb25Vc2VySW5pdGlhbGl6ZWQoKTogdm9pZDtcclxuICAgIG9uVXNlckNoYW5nZWQoKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUm91dGVTdGF0ZUluZm8ge1xyXG4gICAgcm91dGU6IElSb3V0ZTtcclxuICAgIGd1YXJkOiBhbnk7XHJcbiAgICBkaXJ0eTogYm9vbGVhbjtcclxuICAgIGZpcnN0OiBib29sZWFuO1xyXG4gICAgY29tcG9uZW50PzogYW55O1xyXG59XHJcblxyXG4vLyAtLS0gU3RhdGUgU2VydmljZSAtLS1cclxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvblVybFBhcmFtID0gYW55W10gfCBzdHJpbmcgfCBVcmxUcmVlO1xyXG5cclxuLy8gLS0tIFN0b3JhZ2UgU2VydmljZSAtLS1cclxuZXhwb3J0IGVudW0gU3RvcmFnZU1vZGUge1xyXG4gICAgTG9jYWwsXHJcbiAgICBTZXNzaW9uXHJcbn1cclxuXHJcbi8vIC0tLSBUb2FzdGVyIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRvYXN0ZXJTZXJ2aWNlIHtcclxuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCB0aXRsZT86IHN0cmluZyk6IHZvaWQ7XHJcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCB0aXRsZT86IHN0cmluZyk6IHZvaWQ7XHJcbiAgICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCB0aXRsZT86IHN0cmluZyk6IHZvaWQ7XHJcbiAgICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55LCB0aXRsZT86IHN0cmluZyk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBUT0FTVEVSX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SVRvYXN0ZXJTZXJ2aWNlPihcInRvYXN0ZXItc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBQcm9taXNlIFNlcnZpY2UgLS0tXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9taXNlU2VydmljZSB7XHJcbiAgICB6b25lOiBOZ1pvbmU7XHJcbiAgICBjb3VudDogbnVtYmVyO1xyXG4gICAgb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcclxuICAgIGNyZWF0ZTxUPihleGVjdXRvcjogKHJlc29sdmU6ICh2YWx1ZT86IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkKTogUHJvbWlzZTxUPjtcclxuICAgIGFsbChwcm9taXNlczogUHJvbWlzZTxhbnk+W10pOiBQcm9taXNlPGFueT47XHJcbiAgICByZXNvbHZlPFQ+KHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBQcm9taXNlPFQ+O1xyXG4gICAgcmVqZWN0PFQ+KHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBQcm9taXNlPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUFJPTUlTRV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElQcm9taXNlU2VydmljZT4oXCJwcm9taXNlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gV2FzbSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBUeXBlZEFycmF5ID1cclxuICAgIHwgSW50OEFycmF5XHJcbiAgICB8IEludDE2QXJyYXlcclxuICAgIHwgSW50MzJBcnJheVxyXG4gICAgfCBVaW50OEFycmF5XHJcbiAgICB8IFVpbnQ4Q2xhbXBlZEFycmF5XHJcbiAgICB8IFVpbnQxNkFycmF5XHJcbiAgICB8IFVpbnQzMkFycmF5XHJcbiAgICB8IEZsb2F0MzJBcnJheVxyXG4gICAgfCBGbG9hdDY0QXJyYXk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElXYXNtRXhwb3J0cyB7XHJcbiAgICBIRUFQODogSW50OEFycmF5O1xyXG4gICAgSEVBUDE2OiBJbnQxNkFycmF5LFxyXG4gICAgSEVBUDMyOiBJbnQzMkFycmF5LFxyXG4gICAgSEVBUFU4OiBVaW50OEFycmF5O1xyXG4gICAgSEVBUFUxNjogVWludDE2QXJyYXksXHJcbiAgICBIRUFQVTMyOiBVaW50MzJBcnJheSxcclxuICAgIEhFQVBGMzI6IEZsb2F0MzJBcnJheSxcclxuICAgIEhFQVBGNjQ6IEZsb2F0NjRBcnJheSxcclxuICAgIG1lbW9yeTogV2ViQXNzZW1ibHkuTWVtb3J5O1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElXYXNpIHtcclxuICAgIGluc3RhbnRpYXRlKGJ5dGVzOiBBcnJheUJ1ZmZlcik6IFByb21pc2U8SVdhc21FeHBvcnRzPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzbSB7XHJcbiAgICB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXk6IFR5cGVkQXJyYXkpOiBQcm9taXNlPG51bWJlcj4gfCBudW1iZXI7XHJcbiAgICByZWFkQXJyYXlGcm9tTWVtb3J5PFQgPSBUeXBlZEFycmF5Pihwb2ludGVyOiBudW1iZXIsIGFycmF5OiBUKTogUHJvbWlzZTxUPiB8IFQ7XHJcbiAgICBba2V5OiBzdHJpbmddOiAoLi4uYXJnczogYW55W10pID0+IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzbUFzeW5jIHtcclxuICAgIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheTogVHlwZWRBcnJheSk6IFByb21pc2U8bnVtYmVyPjtcclxuICAgIHJlYWRBcnJheUZyb21NZW1vcnk8VCA9IFR5cGVkQXJyYXk+KHBvaW50ZXI6IG51bWJlciwgYXJyYXk6IFQpOiBUO1xyXG4gICAgW2tleTogc3RyaW5nXTogKC4uLmFyZ3M6IGFueVtdKSA9PiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBXQVNJX0lNUExFTUVOVEFUSU9OID0gbmV3IEluamVjdGlvblRva2VuPFR5cGU8SVdhc2k+PihcIndhc2ktaW1wbGVtZW50YXRpb25cIik7XHJcblxyXG4vLyAtLS0gQXN5bmMgbWV0aG9kIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3luY01lc3NhZ2Uge1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgY29udGV4dD86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQXN5bmNNZXRob2QgPSAoY29udGV4dD86IGFueSkgPT4gUHJvbWlzZTxJQXN5bmNNZXNzYWdlPjtcclxuXHJcbi8vIC0tLSBVbm9yZGVyZWQgbGlzdCAtLS1cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVub3JlZGVyZWRMaXN0VGVtcGxhdGUgZXh0ZW5kcyBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIGFic3RyYWN0IHR5cGU6IHN0cmluZztcclxuICAgIGFic3RyYWN0IHNlbGVjdG9yOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVW5vcmRlcmVkTGlzdFRlbXBsYXRlcyB7XHJcbiAgICBbdHlwZTogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVW5vcmRlcmVkTGlzdFN0eWxlID0gXCJ0YWJsZVwiIHwgXCJsaXN0XCI7XHJcblxyXG4vLyAtLS0gQWpheCByZXF1ZXN0ICAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWpheFJlcXVlc3REZXRhaWxzIHtcclxuICAgIHJlcXVlc3Q6IFhNTEh0dHBSZXF1ZXN0LFxyXG4gICAgbWV0aG9kOiBzdHJpbmc7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQWpheFJlcXVlc3RDYWxsYmFjayA9IChkZXRhaWxzOiBJQWpheFJlcXVlc3REZXRhaWxzLCBwYXJhbXM6IGFueSkgPT4gdm9pZDtcclxuXHJcbi8vIC0tLSBMb2FkZXIgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNjcmlwdFByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTFNjcmlwdEVsZW1lbnQ+O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN0eWxlUHJvbWlzZXMge1xyXG4gICAgW3NyYzogc3RyaW5nXTogUHJvbWlzZTxIVE1MTGlua0VsZW1lbnQ+O1xyXG59XHJcblxyXG4vLyAtLS0gT2JzZXJ2YWJsZSB1dGlscyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoT2JzZXJ2YWJsZSB7XHJcbiAgICBzZWFyY2g6IHN0cmluZztcclxuICAgIGdldFNlYXJjaFJlc3VsdHModG9rZW46IHN0cmluZyk6IFByb21pc2U8YW55W10+O1xyXG59XHJcblxyXG4vLyAtLS0gUmVmbGVjdCB1dGlscyAtLS1cclxuZXhwb3J0IGZ1bmN0aW9uIEZhY3RvcnlEZXBlbmRlbmNpZXMoLi4uZGVwZW5kZW5jaWVzOiBBcnJheTxJbmplY3Rpb25Ub2tlbjxhbnk+IHwgUHJvdmlkZXI+KTogTWV0aG9kRGVjb3JhdG9yIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIG1ldGhvZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgUmVmbGVjdFV0aWxzLmRlZmluZU1ldGFkYXRhKFwiZmFjdG9yeURlcGVuZGVuY2llc1wiLCBkZXBlbmRlbmNpZXMsIHRhcmdldCwgbWV0aG9kKTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8vIC0tLSBUaW1lciB1dGlscyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJVGltZXIge1xyXG4gICAgaWQ/OiBhbnk7XHJcbiAgICBmdW5jPzogRnVuY3Rpb247XHJcbiAgICB0aW1lPzogbnVtYmVyO1xyXG4gICAgcnVuPzogKCkgPT4gdm9pZDtcclxuICAgIHNldD86IChmdW5jOiBGdW5jdGlvbiwgdGltZTogbnVtYmVyKSA9PiB2b2lkO1xyXG4gICAgY2xlYXI/OiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG4vLyAtLS0gRXh0cmFJdGVtUHJvcGVydGllcyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJRXh0cmFQcm9wZXJ0aWVzIHtcclxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBHcm91cCBieSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBNYXAge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vLyAtLS0gVHJhbnNsYXRlIC0tLVxyXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvblF1ZXJ5ID0gc3RyaW5nIHwgSVRyYW5zbGF0aW9ucyB8IElUcmFuc2xhdGlvbltdO1xyXG5cclxuLy8gLS0tIFBhZ2luYXRpb24gLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2VJbmZvIHtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICAgIG51bWJlcjogbnVtYmVyO1xyXG4gICAgYWN0aXZlOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uRGF0YSB7XHJcbiAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgaXRlbXM6IGFueVtdO1xyXG4gICAgbWV0YT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvbkRhdGFMb2FkZXIgPSAocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcikgPT4gUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25JdGVtQ29udGV4dCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGl0ZW06IGFueSwgcHVibGljIHBhcmFsbGVsSXRlbTogYW55LCBwdWJsaWMgY291bnQ6IG51bWJlciwgcHVibGljIGluZGV4OiBudW1iZXIsIHB1YmxpYyBkYXRhSW5kZXg6IG51bWJlcikge1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmaXJzdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbGFzdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gdGhpcy5jb3VudCAtIDE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGV2ZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggJSAyID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBvZGQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmV2ZW47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3VwcG9ydCBmb3Igb2xkIGR5bmFtaWMgdGFibGUgaW1wbGVtZW50YXRpb25cclxuICAgIGdldCByb3coKTogYW55IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkR5bmFtaWNUYWJsZSByb3cgaXMgZGVwcmVjYXRlZCB1c2UgaXRlbSBpbnN0ZWFkXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3VwcG9ydCBmb3Igb2xkIGR5bmFtaWMgdGFibGUgaW1wbGVtZW50YXRpb25cclxuICAgIGdldCBwYXJhbGxlbFJvdygpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHBhcmFsbGVsUm93IGlzIGRlcHJlY2F0ZWQgdXNlIHBhcmFsbGVsSXRlbSBpbnN0ZWFkXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFsbGVsSXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXIoZmlsdGVyUng6IFJlZ0V4cCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLml0ZW0pO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLml0ZW1ba2V5XTtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB8fCBPYmplY3RVdGlscy5pc09iamVjdCh2YWx1ZSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb25zdCB0ZXN0VmFsdWUgPSBPYmplY3RVdGlscy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGlmICh0ZXN0VmFsdWUubWF0Y2goZmlsdGVyUngpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyAtLS0gSHR0cCBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwSGVhZGVycyB7XHJcbiAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFBhcmFtcyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlcXVlc3RPcHRpb25zIHtcclxuICAgIG1ldGhvZD86IHN0cmluZztcclxuICAgIGJvZHk/OiBhbnk7XHJcbiAgICBoZWFkZXJzPzogSUh0dHBIZWFkZXJzIHwgSHR0cEhlYWRlcnM7XHJcbiAgICBvcmlnaW5hbEhlYWRlcnM/OiBJSHR0cEhlYWRlcnM7XHJcbiAgICBwYXJhbXM/OiBJSHR0cFBhcmFtcztcclxuICAgIG9ic2VydmU/OiBcImJvZHlcIiB8IFwicmVzcG9uc2VcIjtcclxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcclxuICAgIHJlc3BvbnNlVHlwZT86IFwiYXJyYXlidWZmZXJcIiB8IFwiYmxvYlwiIHwgXCJqc29uXCIgfCBcInRleHRcIjtcclxuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XHJcbiAgICB0aW1lb3V0PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJc3N1ZUNvbnRleHQge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb2dyZXNzIHtcclxuICAgIHBlcmNlbnRhZ2U/OiBudW1iZXI7XHJcbiAgICBsb2FkZWQ/OiBudW1iZXI7XHJcbiAgICB0b3RhbD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NMaXN0ZW5lciA9IChwcm9ncmVzczogSVByb2dyZXNzKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IHR5cGUgUHJvbWlzZUV4ZWN1dG9yID0gKHJlc29sdmU6ICh2YWx1ZT86IGFueSB8IFByb21pc2VMaWtlPGFueT4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCBjbGFzcyBIdHRwUHJvbWlzZSBleHRlbmRzIFByb21pc2U8YW55PiB7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlamVjdEhhbmRsZXI6IChyZWFzb24/OiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZDtcclxuICAgIHByb3RlY3RlZCBoYXNSZWplY3RIYW5kbGVyOiBib29sZWFuO1xyXG4gICAgcHJvdGVjdGVkIGF0dGFjaENvdW50OiBudW1iZXI7XHJcbiAgICBwcm90ZWN0ZWQgcnVuQ291bnQ6IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQsIGV4ZWN1dG9yOiBQcm9taXNlRXhlY3V0b3IpIHtcclxuICAgICAgICBzdXBlcihleGVjdXRvcik7XHJcbiAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyID0gcmVqZWN0SGFuZGxlcjtcclxuICAgICAgICB0aGlzLmF0dGFjaENvdW50ID0gMDtcclxuICAgICAgICB0aGlzLnJ1bkNvdW50ID0gMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGVuPFRSZXN1bHQxLCBUUmVzdWx0Mj4ob25GdWxmaWxsZWQ/OiAoKHZhbHVlOiBhbnkpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0MT4gfCBUUmVzdWx0MSkpIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDI+IHwgVFJlc3VsdDIpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcclxuICAgICAgICB0aGlzLmF0dGFjaENvdW50Kys7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLnRoZW4odmFsdWUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bkNvdW50Kys7XHJcbiAgICAgICAgICAgIHJldHVybiBvbkZ1bGZpbGxlZCA/IG9uRnVsZmlsbGVkKHZhbHVlKSA6IG51bGw7XHJcbiAgICAgICAgfSwgKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSBvblJlamVjdGVkID8gb25SZWplY3RlZChyZWFzb24pIDogbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5oYXNSZWplY3RIYW5kbGVyID0gdGhpcy5oYXNSZWplY3RIYW5kbGVyIHx8IChvblJlamVjdGVkICYmIHJlc3VsdCAhPT0gZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLnJ1bkNvdW50Kys7XHJcbiAgICAgICAgICAgIHRoaXMucmVqZWN0SGFuZGxlcih0aGlzLnJ1bkNvdW50ID09IHRoaXMuYXR0YWNoQ291bnQgJiYgIXRoaXMuaGFzUmVqZWN0SGFuZGxlciA/IHJlYXNvbiA6IG51bGwpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNhdGNoPFRSZXN1bHQgPSBuZXZlcj4ob25SZWplY3RlZD86ICgocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQ+IHwgVFJlc3VsdCkpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8YW55IHwgVFJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBTZXJ2aWNlIHtcclxuICAgIGxhbmd1YWdlOiBJTGFuZ3VhZ2VTZXJ2aWNlO1xyXG4gICAgdXJsKHVybDogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgbWFrZUxpc3RQYXJhbXMocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeT86IHN0cmluZywgb3JkZXJEZXNjZW5kaW5nPzogYm9vbGVhbiwgZmlsdGVyPzogc3RyaW5nKTogSUh0dHBQYXJhbXM7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBFWFBSRVNTX1JFUVVFU1QgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVxdWVzdD4oXCJleHByZXNzLXJlcXVlc3RcIik7XHJcblxyXG4vLyAtLS0gQXBpIHNlcnZpY2UgLS0tXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBcGlTZXJ2aWNlIGV4dGVuZHMgSUh0dHBTZXJ2aWNlIHtcclxuICAgIGNhY2hlOiBhbnk7XHJcbiAgICBjbGllbnQ6IEh0dHBDbGllbnQ7XHJcbiAgICBnZXQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBkZWxldGUodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwb3N0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcHV0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcGF0Y2godXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICB1cGxvYWQodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgbGlzdCh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFQSV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+KFwiYXBpLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gT3BlbkFwaSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hUHJvcGVydHkge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHR5cGU/OiBzdHJpbmc7XHJcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgICBjb2x1bW4/OiBib29sZWFuO1xyXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM/OiBhbnk7XHJcbiAgICAkcmVmPzogc3RyaW5nO1xyXG4gICAgYWxsT2Y/OiBSZWFkb25seUFycmF5PHskcmVmPzogc3RyaW5nfT5cclxuICAgIGl0ZW1zPzogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIGVudW0/OiBzdHJpbmdbXTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYSB7XHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgW25hbWU6IHN0cmluZ106IElPcGVuQXBpU2NoZW1hUHJvcGVydHk7XHJcbiAgICB9O1xyXG4gICAgcmVxdWlyZWQ6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hcyB7XHJcbiAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWE7XHJcbn1cclxuXHJcbi8vIC0tLSBEeW5hbWljIHRhYmxlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbHVtbnMge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlIHtcclxuICAgIGNvbHVtbjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICBwdXJlOiBib29sZWFuO1xyXG4gICAgcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlcyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBJVGFibGVUZW1wbGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVEYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgcm93c1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4sIGZpbHRlcjogc3RyaW5nKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG4vLyAtLS0gUmVzb3VyY2UgaWYgLS0tXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUlmQ29udGV4dCB7XHJcbiAgICByZXNvdXJjZTogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIC0tLSBDb25maWdTZXJ2aWNlIC0tLVxyXG5leHBvcnQgY29uc3QgQVBQX0JBU0VfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXCJhcHAtYmFzZS11cmxcIik7XHJcblxyXG5leHBvcnQgY2xhc3MgSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgY2RuVXJsPzogc3RyaW5nO1xyXG4gICAgYmFzZVVybD86IHN0cmluZztcclxuICAgIGJhc2VEb21haW4/OiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvblVybD86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnU2VydmljZSB7XHJcbiAgICByZWFkb25seSBjb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yO1xyXG4gICAgcmVhZG9ubHkgbG9hZDogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcbiAgICBwcmVwYXJlVXJsKHVybDogc3RyaW5nLCBlbmRpbmc6IHN0cmluZyk6IHN0cmluZztcclxuICAgIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKTogYW55O1xyXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDT05GSUdfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnU2VydmljZT4oXCJjb25maWctc2VydmljZVwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBCQVNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlndXJhdGlvbj4oXCJiYXNlLWNvbmZpZ1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JJUFRfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oXCJzY3JpcHQtcGFyYW1zXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJPT1RfRUxFTUVOVDogSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+ID0gbmV3IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PihcImFwcC1yb290LWVsZW1lbnRcIik7XHJcblxyXG5leHBvcnQgY29uc3QgUkVTSVpFX0RFTEFZOiBJbmplY3Rpb25Ub2tlbjxudW1iZXI+ID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oXCJyZXNpemUtZXZlbnQtZGVsYXlcIik7XHJcblxyXG4vLyAtLS0gRXJyb3IgaGFuZGxlciBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBFcnJvckhhbmRsZXJDYWxsYmFjayA9IChlcnJvcjogc3RyaW5nKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgY29uc3QgRVJST1JfSEFORExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJlcnJvci1oYW5kbGVyLWNhbGxiYWNrXCIpO1xyXG5cclxuLy8gLS0tIEdsb2JhbCB0ZW1wbGF0ZXMgc2VydmljZVxyXG5cclxuZXhwb3J0IHR5cGUgR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIgPSAoY29tcG9uZW50OiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdsb2JhbFRlbXBsYXRlcyB7XHJcbiAgICByZWFkb25seSB0ZW1wbGF0ZXNVcGRhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcbiAgICBnZXQoaWQ6IHN0cmluZywgY29tcG9uZW50PzogYW55KTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGFkZChpZDogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQ7XHJcbiAgICByZW1vdmUoaWQ6IHN0cmluZyk6IHZvaWQ7XHJcbiAgICBhZGRDb21wb25lbnRNb2RpZmllcihpZDogc3RyaW5nLCBtb2RpZmllcjogR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgR0xPQkFMX1RFTVBMQVRFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJnbG9iYWwtdGVtcGxhdGVzXCIpO1xyXG5cclxuLy8gLS0tIE1vZHVsZSAtLS1cclxuZXhwb3J0IHR5cGUgQXBwSW5pdGlhbGl6ZXJGdW5jID0gKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElNb2R1bGVDb25maWcge1xyXG4gICAgYXBpU2VydmljZT86IFR5cGU8SUFwaVNlcnZpY2U+XHJcbiAgICBhdXRoU2VydmljZT86IFR5cGU8SUF1dGhTZXJ2aWNlPjtcclxuICAgIGljb25TZXJ2aWNlPzogVHlwZTxJSWNvblNlcnZpY2U+O1xyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlPzogVHlwZTxJTGFuZ3VhZ2VTZXJ2aWNlPjtcclxuICAgIHRvYXN0ZXJTZXJ2aWNlPzogVHlwZTxJVG9hc3RlclNlcnZpY2U+O1xyXG4gICAgcHJvbWlzZVNlcnZpY2U/OiBUeXBlPElQcm9taXNlU2VydmljZT47XHJcbiAgICBjb25maWdTZXJ2aWNlPzogVHlwZTxJQ29uZmlnU2VydmljZT47XHJcbiAgICBnbG9iYWxUZW1wbGF0ZXM/OiBUeXBlPElHbG9iYWxUZW1wbGF0ZXM+O1xyXG4gICAgd2FzaUltcGxlbWVudGF0aW9uPzogVHlwZTxJV2FzaT47XHJcbiAgICBpbml0aWFsaXplQXBwPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gQXBwSW5pdGlhbGl6ZXJGdW5jO1xyXG4gICAgYmFzZVVybD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IHN0cmluZztcclxuICAgIHJlc2l6ZURlbGF5PzogbnVtYmVyO1xyXG59XHJcblxyXG4vLyAtLS0gVmFsdWVkIHByb21pc2UgLS0tXHJcbmV4cG9ydCBjbGFzcyBWYWx1ZWRQcm9taXNlPFQ+IGV4dGVuZHMgUHJvbWlzZTxUPiB7XHJcbiAgICB2YWx1ZTogVDtcclxufVxyXG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQXlDM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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LEdBQWdDLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBNEN2RyxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QjtBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7Q0FNMUI7QUFhRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxJQUFJLGNBQWMsQ0FBYyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTdHLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBMkIsSUFBSSxjQUFjLENBQVMsb0JBQW9CLENBQUMsQ0FBQztBQUtyRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHdCQUF3QixDQUFDLENBQUM7QUFjaEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXVCLGtCQUFrQixDQUFDLENBQUM7QUFvQjdGLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8sYUFBaUIsU0FBUSxPQUFVO0NBRS9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTmdab25lLCBQcm92aWRlciwgVGVtcGxhdGVSZWYsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEYXRhLCBSb3V0ZSwgVXJsVHJlZX0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7UmVmbGVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9yZWZsZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuLy8gLS0tIFV0aWxzXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlc29sdmVGYWN0b3J5IHtcclxuICAgIGZ1bmM6IEZ1bmN0aW9uO1xyXG4gICAgdHlwZT86IGFueTtcclxuICAgIHBhcmFtcz86IGFueVtdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FudmFzQ29sb3Ige1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIHI6IG51bWJlciwgcHVibGljIGc6IG51bWJlciwgcHVibGljIGI6IG51bWJlciwgcHVibGljIGE6IG51bWJlciA9IDI1NSkge1xyXG5cclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEljb24gc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSWNvblNlcnZpY2Uge1xyXG4gICAgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIGljb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAgIGdldEljb24oaWNvbjogc3RyaW5nLCBhY3RpdmVJY29uOiBzdHJpbmcsIGFjdGl2ZTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElDT05fU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJSWNvblNlcnZpY2U+KFwiaWNvbi1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIExhbmd1YWdlIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9uIHtcclxuICAgIGxhbmc6IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZyB7XHJcbiAgICB1bmF2YWlsYWJsZT86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZ3Mge1xyXG4gICAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcclxuICAgIGRldkxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIHNldHRpbmdzPzoge1tsYW5nOiBzdHJpbmddOiBJTGFuZ3VhZ2VTZXR0aW5nfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlVHJhbnNsYXRpb25zOiBib29sZWFuO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XHJcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcclxuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XHJcbiAgICBndWFyZHM/OiBBcnJheTxJUmVzb2x2ZUZhY3RvcnkgfCBSb3V0ZVZhbGlkYXRvcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlIGV4dGVuZHMgUm91dGUge1xyXG4gICAgZGF0YT86IElSb3V0ZURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBY2wgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcclxuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XHJcbiAgICBvblVzZXJDaGFuZ2VkKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlU3RhdGVJbmZvIHtcclxuICAgIHJvdXRlOiBJUm91dGU7XHJcbiAgICBndWFyZDogYW55O1xyXG4gICAgZGlydHk6IGJvb2xlYW47XHJcbiAgICBmaXJzdDogYm9vbGVhbjtcclxuICAgIGNvbXBvbmVudD86IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25VcmxQYXJhbSA9IGFueVtdIHwgc3RyaW5nIHwgVXJsVHJlZTtcclxuXHJcbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBlbnVtIFN0b3JhZ2VNb2RlIHtcclxuICAgIExvY2FsLFxyXG4gICAgU2Vzc2lvblxyXG59XHJcblxyXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdGVyU2VydmljZSB7XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gUHJvbWlzZSBTZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xyXG4gICAgem9uZTogTmdab25lO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgICBjcmVhdGU8VD4oZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCk6IFByb21pc2U8VD47XHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST01JU0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUHJvbWlzZVNlcnZpY2U+KFwicHJvbWlzZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIFdhc20gc2VydmljZSAtLS1cclxuZXhwb3J0IHR5cGUgVHlwZWRBcnJheSA9XHJcbiAgICB8IEludDhBcnJheVxyXG4gICAgfCBJbnQxNkFycmF5XHJcbiAgICB8IEludDMyQXJyYXlcclxuICAgIHwgVWludDhBcnJheVxyXG4gICAgfCBVaW50OENsYW1wZWRBcnJheVxyXG4gICAgfCBVaW50MTZBcnJheVxyXG4gICAgfCBVaW50MzJBcnJheVxyXG4gICAgfCBGbG9hdDMyQXJyYXlcclxuICAgIHwgRmxvYXQ2NEFycmF5O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzbUV4cG9ydHMge1xyXG4gICAgSEVBUDg6IEludDhBcnJheTtcclxuICAgIEhFQVAxNjogSW50MTZBcnJheSxcclxuICAgIEhFQVAzMjogSW50MzJBcnJheSxcclxuICAgIEhFQVBVODogVWludDhBcnJheTtcclxuICAgIEhFQVBVMTY6IFVpbnQxNkFycmF5LFxyXG4gICAgSEVBUFUzMjogVWludDMyQXJyYXksXHJcbiAgICBIRUFQRjMyOiBGbG9hdDMyQXJyYXksXHJcbiAgICBIRUFQRjY0OiBGbG9hdDY0QXJyYXksXHJcbiAgICBtZW1vcnk6IFdlYkFzc2VtYmx5Lk1lbW9yeTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzaSB7XHJcbiAgICBpbnN0YW50aWF0ZShieXRlczogQXJyYXlCdWZmZXIpOiBQcm9taXNlPElXYXNtRXhwb3J0cz47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVdhc20ge1xyXG4gICAgd3JpdGVBcnJheVRvTWVtb3J5KGFycmF5OiBUeXBlZEFycmF5KTogUHJvbWlzZTxudW1iZXI+IHwgbnVtYmVyO1xyXG4gICAgcmVhZEFycmF5RnJvbU1lbW9yeTxUID0gVHlwZWRBcnJheT4ocG9pbnRlcjogbnVtYmVyLCBhcnJheTogVCk6IFByb21pc2U8VD4gfCBUO1xyXG4gICAgW2tleTogc3RyaW5nXTogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVdhc21Bc3luYyB7XHJcbiAgICB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXk6IFR5cGVkQXJyYXkpOiBQcm9taXNlPG51bWJlcj47XHJcbiAgICByZWFkQXJyYXlGcm9tTWVtb3J5PFQgPSBUeXBlZEFycmF5Pihwb2ludGVyOiBudW1iZXIsIGFycmF5OiBUKTogVDtcclxuICAgIFtrZXk6IHN0cmluZ106ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgV0FTSV9JTVBMRU1FTlRBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPElXYXNpPj4oXCJ3YXNpLWltcGxlbWVudGF0aW9uXCIpO1xyXG5cclxuLy8gLS0tIEFzeW5jIG1ldGhvZCAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGNvbnRleHQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFzeW5jTWV0aG9kID0gKGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG4vLyAtLS0gVW5vcmRlcmVkIGxpc3QgLS0tXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XHJcbiAgICBhYnN0cmFjdCBzZWxlY3Rvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xyXG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xyXG5cclxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XHJcbiAgICByZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCxcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50PjtcclxufVxyXG5cclxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaE9ic2VydmFibGUge1xyXG4gICAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcclxufVxyXG5cclxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBGYWN0b3J5RGVwZW5kZW5jaWVzKC4uLmRlcGVuZGVuY2llczogQXJyYXk8SW5qZWN0aW9uVG9rZW48YW55PiB8IFByb3ZpZGVyPik6IE1ldGhvZERlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gT2JqZWN0VHlwZSh0eXBlOiBzdHJpbmcpOiBDbGFzc0RlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgUmVmbGVjdFV0aWxzLmRlZmluZU1ldGFkYXRhKFwib2JqZWN0VHlwZVwiLCB0eXBlLCB0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gLS0tIFRpbWVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lciB7XHJcbiAgICBpZD86IGFueTtcclxuICAgIGZ1bmM/OiBGdW5jdGlvbjtcclxuICAgIHRpbWU/OiBudW1iZXI7XHJcbiAgICBydW4/OiAoKSA9PiB2b2lkO1xyXG4gICAgc2V0PzogKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHZvaWQ7XHJcbiAgICBjbGVhcj86ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8vIC0tLSBFeHRyYUl0ZW1Qcm9wZXJ0aWVzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElFeHRyYVByb3BlcnRpZXMge1xyXG4gICAgW3Byb3A6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIEdyb3VwIGJ5IC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE1hcCB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBUcmFuc2xhdGUgLS0tXHJcbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uUXVlcnkgPSBzdHJpbmcgfCBJVHJhbnNsYXRpb25zIHwgSVRyYW5zbGF0aW9uW107XHJcblxyXG4vLyAtLS0gUGFnaW5hdGlvbiAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnZUluZm8ge1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgbnVtYmVyOiBudW1iZXI7XHJcbiAgICBhY3RpdmU6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25EYXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBpdGVtczogYW55W107XHJcbiAgICBtZXRhPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uRGF0YUxvYWRlciA9IChwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkl0ZW1Db250ZXh0IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbTogYW55LCBwdWJsaWMgcGFyYWxsZWxJdGVtOiBhbnksIHB1YmxpYyBjb3VudDogbnVtYmVyLCBwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIGRhdGFJbmRleDogbnVtYmVyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZpcnN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSB0aGlzLmNvdW50IC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXZlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCAlIDIgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9kZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZXZlbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHJvdygpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHJvdyBpcyBkZXByZWNhdGVkIHVzZSBpdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHBhcmFsbGVsUm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcGFyYWxsZWxSb3cgaXMgZGVwcmVjYXRlZCB1c2UgcGFyYWxsZWxJdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYWxsZWxJdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcihmaWx0ZXJSeDogUmVnRXhwKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8IE9iamVjdFV0aWxzLmlzT2JqZWN0KHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IE9iamVjdFV0aWxzLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZS5tYXRjaChmaWx0ZXJSeCkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBIdHRwIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBIZWFkZXJzIHtcclxuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwUGFyYW1zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgbWV0aG9kPzogc3RyaW5nO1xyXG4gICAgYm9keT86IGFueTtcclxuICAgIGhlYWRlcnM/OiBJSHR0cEhlYWRlcnMgfCBIdHRwSGVhZGVycztcclxuICAgIG9yaWdpbmFsSGVhZGVycz86IElIdHRwSGVhZGVycztcclxuICAgIHBhcmFtcz86IElIdHRwUGFyYW1zO1xyXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiIHwgXCJyZXNwb25zZVwiO1xyXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2VUeXBlPzogXCJhcnJheWJ1ZmZlclwiIHwgXCJibG9iXCIgfCBcImpzb25cIiB8IFwidGV4dFwiO1xyXG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxuICAgIHRpbWVvdXQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlzc3VlQ29udGV4dCB7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvZ3Jlc3Mge1xyXG4gICAgcGVyY2VudGFnZT86IG51bWJlcjtcclxuICAgIGxvYWRlZD86IG51bWJlcjtcclxuICAgIHRvdGFsPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9ncmVzc0xpc3RlbmVyID0gKHByb2dyZXNzOiBJUHJvZ3Jlc3MpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgdHlwZSBQcm9taXNlRXhlY3V0b3IgPSAocmVzb2x2ZTogKHZhbHVlPzogYW55IHwgUHJvbWlzZUxpa2U8YW55PikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIGhhc1JlamVjdEhhbmRsZXI6IGJvb2xlYW47XHJcbiAgICBwcm90ZWN0ZWQgYXR0YWNoQ291bnQ6IG51bWJlcjtcclxuICAgIHByb3RlY3RlZCBydW5Db3VudDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlamVjdEhhbmRsZXI6IChyZWFzb24/OiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCwgZXhlY3V0b3I6IFByb21pc2VFeGVjdXRvcikge1xyXG4gICAgICAgIHN1cGVyKGV4ZWN1dG9yKTtcclxuICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIgPSByZWplY3RIYW5kbGVyO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMucnVuQ291bnQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoZW48VFJlc3VsdDEsIFRSZXN1bHQyPihvbkZ1bGZpbGxlZD86ICgodmFsdWU6IGFueSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IFRSZXN1bHQxKSkgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBUUmVzdWx0MikpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQrKztcclxuICAgICAgICByZXR1cm4gc3VwZXIudGhlbih2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgcmV0dXJuIG9uRnVsZmlsbGVkID8gb25GdWxmaWxsZWQodmFsdWUpIDogbnVsbDtcclxuICAgICAgICB9LCAocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IG9uUmVqZWN0ZWQgPyBvblJlamVjdGVkKHJlYXNvbikgOiBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmhhc1JlamVjdEhhbmRsZXIgPSB0aGlzLmhhc1JlamVjdEhhbmRsZXIgfHwgKG9uUmVqZWN0ZWQgJiYgcmVzdWx0ICE9PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyKHRoaXMucnVuQ291bnQgPT0gdGhpcy5hdHRhY2hDb3VudCAmJiAhdGhpcy5oYXNSZWplY3RIYW5kbGVyID8gcmVhc29uIDogbnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2F0Y2g8VFJlc3VsdCA9IG5ldmVyPihvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnkgfCBUUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFNlcnZpY2Uge1xyXG4gICAgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2U7XHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBtYWtlTGlzdFBhcmFtcyhwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5Pzogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc/OiBib29sZWFuLCBmaWx0ZXI/OiBzdHJpbmcpOiBJSHR0cFBhcmFtcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1NfUkVRVUVTVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZXF1ZXN0PihcImV4cHJlc3MtcmVxdWVzdFwiKTtcclxuXHJcbi8vIC0tLSBBcGkgc2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFwaVNlcnZpY2UgZXh0ZW5kcyBJSHR0cFNlcnZpY2Uge1xyXG4gICAgY2FjaGU6IGFueTtcclxuICAgIGNsaWVudDogSHR0cENsaWVudDtcclxuICAgIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwdXQodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwYXRjaCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBsaXN0KHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVBJX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4oXCJhcGktc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBPcGVuQXBpIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdHlwZT86IHN0cmluZztcclxuICAgIGZvcm1hdD86IHN0cmluZztcclxuICAgIGNvbHVtbj86IGJvb2xlYW47XHJcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllcz86IGFueTtcclxuICAgICRyZWY/OiBzdHJpbmc7XHJcbiAgICBhbGxPZj86IFJlYWRvbmx5QXJyYXk8eyRyZWY/OiBzdHJpbmd9PlxyXG4gICAgaXRlbXM/OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xyXG4gICAgZW51bT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hIHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIH07XHJcbiAgICByZXF1aXJlZDogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFzIHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBJT3BlbkFwaVNjaGVtYTtcclxufVxyXG5cclxuLy8gLS0tIER5bmFtaWMgdGFibGUgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1ucyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGUge1xyXG4gICAgY29sdW1uOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgIHB1cmU6IGJvb2xlYW47XHJcbiAgICByZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGVzIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IElUYWJsZVRlbXBsYXRlO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUYWJsZURhdGFMb2FkZXIgPSAocGFnZTogbnVtYmVyLCByb3dzUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbiwgZmlsdGVyOiBzdHJpbmcpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbi8vIC0tLSBSZXNvdXJjZSBpZiAtLS1cclxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWZDb250ZXh0IHtcclxuICAgIHJlc291cmNlOiBzdHJpbmc7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuLy8gLS0tIENvbmZpZ1NlcnZpY2UgLS0tXHJcbmV4cG9ydCBjb25zdCBBUFBfQkFTRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcImFwcC1iYXNlLXVybFwiKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBJQ29uZmlndXJhdGlvbiB7XHJcbiAgICBjZG5Vcmw/OiBzdHJpbmc7XHJcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xyXG4gICAgYmFzZURvbWFpbj86IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uVXJsPzogc3RyaW5nO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdTZXJ2aWNlIHtcclxuICAgIHJlYWRvbmx5IGNvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XHJcbiAgICByZWFkb25seSBsb2FkOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuICAgIHJlYWRvbmx5IHJvb3RFbGVtZW50OiBhbnk7XHJcbiAgICBjbG9uZVJvb3RFbGVtKCk6IGFueTtcclxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnk7XHJcbiAgICBnZXRRdWVyeVBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENPTkZJR19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWdTZXJ2aWNlPihcImNvbmZpZy1zZXJ2aWNlXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJBU0VfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWd1cmF0aW9uPihcImJhc2UtY29uZmlnXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNDUklQVF9QQVJBTVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PihcInNjcmlwdC1wYXJhbXNcIik7XHJcblxyXG5leHBvcnQgY29uc3QgUk9PVF9FTEVNRU5UOiBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudD4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+KFwiYXBwLXJvb3QtZWxlbWVudFwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBSRVNJWkVfREVMQVk6IEluamVjdGlvblRva2VuPG51bWJlcj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPihcInJlc2l6ZS1ldmVudC1kZWxheVwiKTtcclxuXHJcbi8vIC0tLSBFcnJvciBoYW5kbGVyIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIEVycm9ySGFuZGxlckNhbGxiYWNrID0gKGVycm9yOiBzdHJpbmcpID0+IGFueTtcclxuXHJcbmV4cG9ydCBjb25zdCBFUlJPUl9IQU5ETEVSID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImVycm9yLWhhbmRsZXItY2FsbGJhY2tcIik7XHJcblxyXG4vLyAtLS0gR2xvYmFsIHRlbXBsYXRlcyBzZXJ2aWNlXHJcblxyXG5leHBvcnQgdHlwZSBHbG9iYWxDb21wb25lbnRNb2RpZmllciA9IChjb21wb25lbnQ6IGFueSkgPT4gYW55O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2xvYmFsVGVtcGxhdGVzIHtcclxuICAgIHJlYWRvbmx5IHRlbXBsYXRlc1VwZGF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICAgIGdldChpZDogc3RyaW5nLCBjb21wb25lbnQ/OiBhbnkpOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgYWRkKGlkOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZDtcclxuICAgIHJlbW92ZShpZDogc3RyaW5nKTogdm9pZDtcclxuICAgIGFkZENvbXBvbmVudE1vZGlmaWVyKGlkOiBzdHJpbmcsIG1vZGlmaWVyOiBHbG9iYWxDb21wb25lbnRNb2RpZmllcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBHTE9CQUxfVEVNUExBVEVTID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImdsb2JhbC10ZW1wbGF0ZXNcIik7XHJcblxyXG4vLyAtLS0gTW9kdWxlIC0tLVxyXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsaXplckZ1bmMgPSAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1vZHVsZUNvbmZpZyB7XHJcbiAgICBhcGlTZXJ2aWNlPzogVHlwZTxJQXBpU2VydmljZT5cclxuICAgIGF1dGhTZXJ2aWNlPzogVHlwZTxJQXV0aFNlcnZpY2U+O1xyXG4gICAgaWNvblNlcnZpY2U/OiBUeXBlPElJY29uU2VydmljZT47XHJcbiAgICBsYW5ndWFnZVNlcnZpY2U/OiBUeXBlPElMYW5ndWFnZVNlcnZpY2U+O1xyXG4gICAgdG9hc3RlclNlcnZpY2U/OiBUeXBlPElUb2FzdGVyU2VydmljZT47XHJcbiAgICBwcm9taXNlU2VydmljZT86IFR5cGU8SVByb21pc2VTZXJ2aWNlPjtcclxuICAgIGNvbmZpZ1NlcnZpY2U/OiBUeXBlPElDb25maWdTZXJ2aWNlPjtcclxuICAgIGdsb2JhbFRlbXBsYXRlcz86IFR5cGU8SUdsb2JhbFRlbXBsYXRlcz47XHJcbiAgICB3YXNpSW1wbGVtZW50YXRpb24/OiBUeXBlPElXYXNpPjtcclxuICAgIGluaXRpYWxpemVBcHA/OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBBcHBJbml0aWFsaXplckZ1bmM7XHJcbiAgICBiYXNlVXJsPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gc3RyaW5nO1xyXG4gICAgcmVzaXplRGVsYXk/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8vIC0tLSBWYWx1ZWQgcHJvbWlzZSAtLS1cclxuZXhwb3J0IGNsYXNzIFZhbHVlZFByb21pc2U8VD4gZXh0ZW5kcyBQcm9taXNlPFQ+IHtcclxuICAgIHZhbHVlOiBUO1xyXG59XHJcbiJdfQ==
@@ -9,25 +9,20 @@ export class FilterPipe {
9
9
  const isObject = ObjectUtils.isObject(values);
10
10
  if (!isObject && !ObjectUtils.isArray(values))
11
11
  return [];
12
- const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, key, params) => {
13
- return ObjectUtils.evaluate(filter, {
14
- value: value,
15
- key: key,
16
- item: value,
17
- index: key,
18
- params: params
19
- });
12
+ const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, key, params, values) => {
13
+ const index = key;
14
+ return ObjectUtils.evaluate(filter, { value, key, params, values, index });
20
15
  };
21
16
  if (isObject) {
22
17
  return Object.keys(values).filter(key => {
23
- return filterFunc(values[key], key, params);
18
+ return filterFunc(values[key], key, params, values);
24
19
  }).reduce((result, key) => {
25
20
  result[key] = values[key];
26
21
  return result;
27
22
  }, {});
28
23
  }
29
24
  return values.filter((value, key) => {
30
- return filterFunc(value, key, params);
25
+ return filterFunc(value, key, params, values);
31
26
  });
32
27
  }
33
28
  }
@@ -39,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
39
34
  name: "filter"
40
35
  }]
41
36
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL2ZpbHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFbEQsTUFBTSxVQUFVLGFBQWE7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUtELE1BQU0sT0FBTyxVQUFVO0lBQ25CLFNBQVMsQ0FBQyxNQUFXLEVBQUUsU0FBYyxhQUFhLEVBQUUsU0FBYyxFQUFFO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDekQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDaEYsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDaEMsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxRQUFRLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1NBQ1Q7UUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDaEMsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3VHQXhCUSxVQUFVO3FHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFIdEIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsUUFBUTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0RmlsdGVyKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6IFwiZmlsdGVyXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHRyYW5zZm9ybSh2YWx1ZXM6IGFueSwgZmlsdGVyOiBhbnkgPSBkZWZhdWx0RmlsdGVyLCBwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcclxuICAgICAgICBjb25zdCBpc09iamVjdCA9IE9iamVjdFV0aWxzLmlzT2JqZWN0KHZhbHVlcyk7XHJcbiAgICAgICAgaWYgKCFpc09iamVjdCAmJiAhT2JqZWN0VXRpbHMuaXNBcnJheSh2YWx1ZXMpKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgZmlsdGVyRnVuYyA9IE9iamVjdFV0aWxzLmlzRnVuY3Rpb24oZmlsdGVyKSA/IGZpbHRlciA6ICh2YWx1ZSwga2V5LCBwYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmV2YWx1YXRlKGZpbHRlciwge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICBpdGVtOiB2YWx1ZSxcclxuICAgICAgICAgICAgICAgIGluZGV4OiBrZXksXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChpc09iamVjdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWVzKS5maWx0ZXIoa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJGdW5jKHZhbHVlc1trZXldLCBrZXksIHBhcmFtcyk7XHJcbiAgICAgICAgICAgIH0pLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWVzW2tleV07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9LCB7fSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIoKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlckZ1bmModmFsdWUsIGtleSwgcGFyYW1zKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL2ZpbHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFbEQsTUFBTSxVQUFVLGFBQWE7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUtELE1BQU0sT0FBTyxVQUFVO0lBQ25CLFNBQVMsQ0FBQyxNQUFXLEVBQUUsU0FBYyxhQUFhLEVBQUUsU0FBYyxFQUFFO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDekQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3hGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNsQixPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxRQUFRLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sTUFBTSxDQUFDO1lBQ2xCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtTQUNUO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2hDLE9BQU8sVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUdBbkJRLFVBQVU7cUdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUh0QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxRQUFRO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRGaWx0ZXIoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJmaWx0ZXJcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlczogYW55LCBmaWx0ZXI6IGFueSA9IGRlZmF1bHRGaWx0ZXIsIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGlzT2JqZWN0ID0gT2JqZWN0VXRpbHMuaXNPYmplY3QodmFsdWVzKTtcclxuICAgICAgICBpZiAoIWlzT2JqZWN0ICYmICFPYmplY3RVdGlscy5pc0FycmF5KHZhbHVlcykpIHJldHVybiBbXTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJGdW5jID0gT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihmaWx0ZXIpID8gZmlsdGVyIDogKHZhbHVlLCBrZXksIHBhcmFtcywgdmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0ga2V5O1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZXZhbHVhdGUoZmlsdGVyLCB7dmFsdWUsIGtleSwgcGFyYW1zLCB2YWx1ZXMsIGluZGV4fSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoaXNPYmplY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHZhbHVlcykuZmlsdGVyKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyRnVuYyh2YWx1ZXNba2V5XSwga2V5LCBwYXJhbXMsIHZhbHVlcyk7XHJcbiAgICAgICAgICAgIH0pLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWVzW2tleV07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9LCB7fSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIoKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlckZ1bmModmFsdWUsIGtleSwgcGFyYW1zLCB2YWx1ZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -5,17 +5,17 @@ export function defaultFilter() {
5
5
  return true;
6
6
  }
7
7
  export class FindPipe {
8
- transform(values, filter = defaultFilter, params = {}) {
8
+ transform(values, filter = defaultFilter, params) {
9
9
  if (!ObjectUtils.isArray(values))
10
10
  return [];
11
- const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, index, params) => {
12
- return ObjectUtils.evaluate(filter, {
13
- value: value,
14
- index: index,
15
- params: params
16
- });
11
+ params = params || {};
12
+ if (ObjectUtils.isObject(params)) {
13
+ params.values = values;
14
+ }
15
+ const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, index, params, values) => {
16
+ return ObjectUtils.evaluate(filter, { value, index, params, values });
17
17
  };
18
- return values.find((value, index) => filterFunc(value, index, params));
18
+ return values.find((value, index) => filterFunc(value, index, params, values));
19
19
  }
20
20
  }
21
21
  FindPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FindPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
26
26
  name: "find"
27
27
  }]
28
28
  }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9waXBlcy9maW5kLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUVsRCxNQUFNLFVBQVUsYUFBYTtJQUN6QixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBS0QsTUFBTSxPQUFPLFFBQVE7SUFDakIsU0FBUyxDQUFDLE1BQWEsRUFBRSxTQUFjLGFBQWEsRUFBRSxTQUFjLEVBQUU7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbEYsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDaEMsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDOztxR0FYUSxRQUFRO21HQUFSLFFBQVE7MkZBQVIsUUFBUTtrQkFIcEIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsTUFBTTtpQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRGaWx0ZXIoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJmaW5kXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbmRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWVzOiBhbnlbXSwgZmlsdGVyOiBhbnkgPSBkZWZhdWx0RmlsdGVyLCBwYXJhbXM6IGFueSA9IHt9KTogYW55W10ge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNBcnJheSh2YWx1ZXMpKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgZmlsdGVyRnVuYyA9IE9iamVjdFV0aWxzLmlzRnVuY3Rpb24oZmlsdGVyKSA/IGZpbHRlciA6ICh2YWx1ZSwgaW5kZXgsIHBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZXZhbHVhdGUoZmlsdGVyLCB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmluZCgodmFsdWUsIGluZGV4KSA9PiBmaWx0ZXJGdW5jKHZhbHVlLCBpbmRleCwgcGFyYW1zKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9waXBlcy9maW5kLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUVsRCxNQUFNLFVBQVUsYUFBYTtJQUN6QixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBS0QsTUFBTSxPQUFPLFFBQVE7SUFDakIsU0FBUyxDQUFDLE1BQWEsRUFBRSxTQUFjLGFBQWEsRUFBRSxNQUFZO1FBQzlELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUMxQjtRQUNELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxRixPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDOztxR0FYUSxRQUFRO21HQUFSLFFBQVE7MkZBQVIsUUFBUTtrQkFIcEIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsTUFBTTtpQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRGaWx0ZXIoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJmaW5kXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbmRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWVzOiBhbnlbXSwgZmlsdGVyOiBhbnkgPSBkZWZhdWx0RmlsdGVyLCBwYXJhbXM/OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNBcnJheSh2YWx1ZXMpKSByZXR1cm4gW107XHJcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xyXG4gICAgICAgIGlmIChPYmplY3RVdGlscy5pc09iamVjdChwYXJhbXMpKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy52YWx1ZXMgPSB2YWx1ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZpbHRlckZ1bmMgPSBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGZpbHRlcikgPyBmaWx0ZXIgOiAodmFsdWUsIGluZGV4LCBwYXJhbXMsIHZhbHVlcykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZXZhbHVhdGUoZmlsdGVyLCB7dmFsdWUsIGluZGV4LCBwYXJhbXMsIHZhbHVlc30pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5maW5kKCh2YWx1ZSwgaW5kZXgpID0+IGZpbHRlckZ1bmModmFsdWUsIGluZGV4LCBwYXJhbXMsIHZhbHVlcykpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -6,7 +6,11 @@ export class ApiService extends BaseHttpService {
6
6
  return "api";
7
7
  }
8
8
  url(url) {
9
- return this.expressRequestUrl(`/api/${url}`);
9
+ const baseUrl = this.expressRequestUrl(`/api/${url}`);
10
+ if (url == "api-docs" || url == "socket") {
11
+ return baseUrl.replace("/api/", "/");
12
+ }
13
+ return baseUrl;
10
14
  }
11
15
  get(url, options, body) {
12
16
  return this.getPromise(url, options, body);
@@ -35,4 +39,4 @@ ApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
35
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ApiService, decorators: [{
36
40
  type: Injectable
37
41
  }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUlwRCxNQUFNLE9BQU8sVUFBVyxTQUFRLGVBQWU7SUFFM0MsSUFBSSxJQUFJO1FBQ0osT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQXlCLEVBQUUsSUFBVTtRQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUF5QixFQUFFLElBQVU7UUFDckQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBVSxFQUFFLE9BQXlCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxPQUF5QjtRQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVcsRUFBRSxJQUFVLEVBQUUsT0FBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLFFBQTJCLEVBQUUsT0FBeUI7UUFDakYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLENBQUMsR0FBVyxFQUFFLE1BQW1CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7dUdBcENRLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtJQXBpU2VydmljZSwgSUh0dHBQYXJhbXMsIElSZXF1ZXN0T3B0aW9ucywgUHJvZ3Jlc3NMaXN0ZW5lcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0Jhc2VIdHRwU2VydmljZX0gZnJvbSBcIi4vYmFzZS1odHRwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJUGFnaW5hdGlvbkRhdGF9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2UgZXh0ZW5kcyBCYXNlSHR0cFNlcnZpY2UgaW1wbGVtZW50cyBJQXBpU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gXCJhcGlcIjtcclxuICAgIH1cclxuXHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3NSZXF1ZXN0VXJsKGAvYXBpLyR7dXJsfWApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgYm9keT86IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvbWlzZSh1cmwsIG9wdGlvbnMsIGJvZHkpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgYm9keT86IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlUHJvbWlzZSh1cmwsIG9wdGlvbnMsIGJvZHkpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RQcm9taXNlKHVybCwgYm9keSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHV0KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wdXRQcm9taXNlKHVybCwgYm9keSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2godXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhdGNoUHJvbWlzZSh1cmwsIGJvZHksIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZFByb21pc2UodXJsLCBib2R5LCBsaXN0ZW5lciwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdCh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFByb21pc2UodXJsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUlwRCxNQUFNLE9BQU8sVUFBVyxTQUFRLGVBQWU7SUFFM0MsSUFBSSxJQUFJO1FBQ0osT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLEdBQUcsSUFBSSxVQUFVLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRTtZQUN0QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsT0FBeUIsRUFBRSxJQUFVO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVyxFQUFFLE9BQXlCLEVBQUUsSUFBVTtRQUNyRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQVcsRUFBRSxJQUFVLEVBQUUsT0FBeUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBVSxFQUFFLE9BQXlCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxPQUF5QjtRQUNwRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsUUFBMkIsRUFBRSxPQUF5QjtRQUNqRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsTUFBbUI7UUFDakMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDOzt1R0F4Q1EsVUFBVTsyR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQge0lBcGlTZXJ2aWNlLCBJSHR0cFBhcmFtcywgSVJlcXVlc3RPcHRpb25zLCBQcm9ncmVzc0xpc3RlbmVyfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7QmFzZUh0dHBTZXJ2aWNlfSBmcm9tIFwiLi9iYXNlLWh0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQge0lQYWdpbmF0aW9uRGF0YX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBpU2VydmljZSBleHRlbmRzIEJhc2VIdHRwU2VydmljZSBpbXBsZW1lbnRzIElBcGlTZXJ2aWNlIHtcclxuXHJcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBcImFwaVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuZXhwcmVzc1JlcXVlc3RVcmwoYC9hcGkvJHt1cmx9YCk7XHJcbiAgICAgICAgaWYgKHVybCA9PSBcImFwaS1kb2NzXCIgfHwgdXJsID09IFwic29ja2V0XCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGJhc2VVcmwucmVwbGFjZShcIi9hcGkvXCIsIFwiL1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGJhc2VVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm9taXNlKHVybCwgb3B0aW9ucywgYm9keSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVQcm9taXNlKHVybCwgb3B0aW9ucywgYm9keSk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zdCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdFByb21pc2UodXJsLCBib2R5LCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwdXQodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnB1dFByb21pc2UodXJsLCBib2R5LCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0Y2hQcm9taXNlKHVybCwgYm9keSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBsb2FkKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkUHJvbWlzZSh1cmwsIGJvZHksIGxpc3RlbmVyLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBsaXN0KHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5saXN0UHJvbWlzZSh1cmwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -188,8 +188,8 @@ export class BaseHttpService {
188
188
  // If we use token auth
189
189
  if (this.client.renewTokenFunc && headers.has(authKey)) {
190
190
  const currentTime = new Date().getTime();
191
- const userTokenTime = this.storage.get("userTokenTime") || currentTime;
192
- // And the last request was a long long time ago
191
+ const userTokenTime = this.getUserTokenTime() || currentTime;
192
+ // And the last request was a long-long time ago
193
193
  if (currentTime - 600000 > userTokenTime) {
194
194
  this.client.renewTokenFunc();
195
195
  }
@@ -217,6 +217,9 @@ export class BaseHttpService {
217
217
  });
218
218
  });
219
219
  }
220
+ getUserTokenTime() {
221
+ return this.storage.get("userTokenTime");
222
+ }
220
223
  pushFailedRequest(url, options, req) {
221
224
  if (url.indexOf("token") >= 0 || url === "user")
222
225
  return false;
@@ -259,11 +262,7 @@ export class BaseHttpService {
259
262
  return this.url(url).replace(/(?:((?!:).\/)\/)/g, "$1");
260
263
  }
261
264
  async absoluteUrl(url, options) {
262
- const absoluteUrl = this.parseUrl(url);
263
- if (url == "api-docs") {
264
- return absoluteUrl.replace("/api", "");
265
- }
266
- return absoluteUrl;
265
+ return this.parseUrl(url);
267
266
  }
268
267
  expressRequestUrl(url) {
269
268
  const req = this.request;
@@ -299,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
299
298
  type: Inject,
300
299
  args: [EXPRESS_REQUEST]
301
300
  }] }]; } });
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2Jhc2UtaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQW9CLGFBQWEsRUFBd0MsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RyxPQUFPLEVBQ0gsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBVVgsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDbEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUFHbEMsTUFBTSxPQUFPLGVBQWU7SUF5QnhCLFlBQTZDLE1BQXNCLEVBQ3RCLE9BQXVCLEVBQ3JCLFFBQTBCLEVBQzNCLE9BQXdCLEVBQ3pCLE9BQXVCLEVBQ1YsVUFBbUIsSUFBSTtRQUxwQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRTdFLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxD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LGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBSZXNwb25zZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7UmVxdWVzdH0gZnJvbSBcImV4cHJlc3NcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDT05GSUdfU0VSVklDRSxcclxuICAgIEVYUFJFU1NfUkVRVUVTVCxcclxuICAgIEh0dHBQcm9taXNlLFxyXG4gICAgSUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBJSHR0cEhlYWRlcnMsXHJcbiAgICBJSHR0cFBhcmFtcyxcclxuICAgIElIdHRwU2VydmljZSxcclxuICAgIElJc3N1ZUNvbnRleHQsXHJcbiAgICBJTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgSVBhZ2luYXRpb25EYXRhLFxyXG4gICAgSVJlcXVlc3RPcHRpb25zLFxyXG4gICAgSVRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgTEFOR1VBR0VfU0VSVklDRSxcclxuICAgIFByb2dyZXNzTGlzdGVuZXIsXHJcbiAgICBUT0FTVEVSX1NFUlZJQ0VcclxufSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7TWF0aFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC51dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtCYXNlSHR0cENsaWVudH0gZnJvbSBcIi4vYmFzZS1odHRwLmNsaWVudFwiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U3RvcmFnZVNlcnZpY2V9IGZyb20gXCIuL3N0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQge3RpbWVvdXR9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge1RpbWVvdXRFcnJvcn0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VIdHRwU2VydmljZSBpbXBsZW1lbnRzIElIdHRwU2VydmljZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBmYWlsZWRSZXF1ZXN0czogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcclxuXHJcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBcImJhc2VcIjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IHdpdGhDcmVkZW50aWFscygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXF1ZXN0SGVhZGVyczogSUh0dHBIZWFkZXJzO1xyXG4gICAgcmVxdWVzdFBhcmFtczogSUh0dHBQYXJhbXM7XHJcbiAgICBjYWNoZTogYW55O1xyXG5cclxuICAgIHByb3RlY3RlZCBzdGF0aWMgcmV0cnlGYWlsZWRSZXF1ZXN0cygpOiB2b2lkIHtcclxuICAgICAgICBCYXNlSHR0cFNlcnZpY2UuZmFpbGVkUmVxdWVzdHMuZm9yRWFjaChyID0+IHIoKSk7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHVuaXZlcnNhbCgpOiBVbml2ZXJzYWxTZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnVuaXZlcnNhbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEJhc2VIdHRwQ2xpZW50KSByZWFkb25seSBjbGllbnQ6IEJhc2VIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChTdG9yYWdlU2VydmljZSkgcmVhZG9ubHkgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KExBTkdVQUdFX1NFUlZJQ0UpIHJlYWRvbmx5IGxhbmd1YWdlOiBJTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChUT0FTVEVSX1NFUlZJQ0UpIHJlYWRvbmx5IHRvYXN0ZXI6IElUb2FzdGVyU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoQ09ORklHX1NFUlZJQ0UpIHJlYWRvbmx5IGNvbmZpZ3M6IElDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChFWFBSRVNTX1JFUVVFU1QpIHJlYWRvbmx5IHJlcXVlc3Q6IFJlcXVlc3QgPSBudWxsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnJlcXVlc3RIZWFkZXJzID0ge307XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0UGFyYW1zID0ge307XHJcbiAgICAgICAgdGhpcy5jYWNoZSA9IHt9O1xyXG4gICAgICAgIHRoaXMuaW5pdFNlcnZpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW5pdFNlcnZpY2UoKTogdm9pZCB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHVybDtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogSUh0dHBQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmNsaWVudC5tYWtlUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgICAgY29uc3QgcXVlcnkgPSBodHRwUGFyYW1zLmtleXMoKS5tYXAoa2V5ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke2tleX09JHtodHRwUGFyYW1zLmdldChrZXkpfWA7XHJcbiAgICAgICAgfSkuam9pbihcIiZcIik7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudXJsKHVybCl9PyR7cXVlcnl9YDtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlTGlzdFBhcmFtcyhwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBzdHJpbmcgPSBudWxsLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4gPSBudWxsLCBmaWx0ZXI6IHN0cmluZyA9IG51bGwpOiBJSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBJSHR0cFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgcGFnZTogKHBhZ2UgLSAxKSxcclxuICAgICAgICAgICAgbGltaXQ6IGl0ZW1zUGVyUGFnZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZChvcmRlckJ5KSAmJiAhT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob3JkZXJEZXNjZW5kaW5nKSkge1xyXG4gICAgICAgICAgICBwYXJhbXMuc29ydCA9IGAke29yZGVyRGVzY2VuZGluZyA/IFwiLVwiIDogXCJcIn0ke29yZGVyQnl9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZChmaWx0ZXIpKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5maWx0ZXIgPSBmaWx0ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldFByb21pc2UodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMsIGJvZHk/OiBhbnkpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJHRVRcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGRlbGV0ZVByb21pc2UodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMsIGJvZHk/OiBhbnkpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJERUxFVEVcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBvc3RQcm9taXNlKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiUE9TVFwiLCBib2R5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHV0UHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBVVFwiLCBib2R5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGF0Y2hQcm9taXNlKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiUEFUQ0hcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwbG9hZFByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnM6IGFueSA9IHt9O1xyXG4gICAgICAgIGlmIChib2R5IGluc3RhbmNlb2YgQmxvYikge1xyXG4gICAgICAgICAgICBoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdID0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMoT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlXHJcbiAgICAgICAgfSwgb3B0aW9ucyksIFwiUE9TVFwiLCBib2R5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zLCBsaXN0ZW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGxpc3RQcm9taXNlKHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPihyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRQcm9taXNlKHVybCwge3BhcmFtczogcGFyYW1zfSkudGhlbihkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHt9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IGRhdGEubWV0YT8udG90YWwgfHwgZGF0YT8udG90YWwgfHwgZGF0YS5pdGVtcz8ubGVuZ3RoIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGRhdGEuaXRlbXMgfHwgW10sXHJcbiAgICAgICAgICAgICAgICAgICAgbWV0YTogZGF0YS5tZXRhIHx8IHt9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSwgcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAzMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJOb3QgaW1wbGVtZW50ZWQuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHt9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge31cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaGFuZGxlVW5hdXRob3JpemVkRXJyb3IoYWJzb2x1dGVVcmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zLCByZWplY3Q6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICByZWplY3QoKTtcclxuICAgICAgICBpZiAoQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHJldHVybjtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlVzZXIgYXV0aCBlcnJvclwiLCBhYnNvbHV0ZVVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHRvYXN0V2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCwgcmVhc29uOiBhbnksIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuaW5nKG1lc3NhZ2UsIHtpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9uc30pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b2FzdEVycm9yKG1lc3NhZ2U6IHN0cmluZywgaXNzdWVDb250ZXh0OiBJSXNzdWVDb250ZXh0LCByZWFzb246IGFueSwgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLndhcm5pbmcobWVzc2FnZSwge2lzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHRvUHJvbWlzZSh1cmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zLCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgY29uc3QgaXNzdWVDb250ZXh0OiBJSXNzdWVDb250ZXh0ID0ge3VybDogXCJcIn07XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFByb21pc2UocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiWW91IG1heSBub3QgbmVlZCBhIHJlamVjdCBIYW5kbGVyIGZvciB0aGlzIHJlcXVlc3QhXCIsIHRoaXMubmFtZSwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCByZWFzb24gPSByZXNwb25zZS5lcnJvciB8fCB7fTtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAzMDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RXYXJuaW5nKGAke3VybH0gZW5kcG9pbnQgaXMgbm90IGltcGxlbWVudGVkISBDbGljayBoZXJlLCB0byBxdWlja2x5IGNyZWF0ZSBhbiBpc3N1ZS5gLCBpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVnZXggPSAvKChFMTEwMDAgZHVwbGljYXRlIGtleSBlcnJvciBjb2xsZWN0aW9uOiAoLikrXFwuKXwoXzEgZHVwIGtleTooLikrKSkvZztcclxuICAgICAgICAgICAgaWYgKHJlYXNvbi5tZXNzYWdlICYmIHJlZ2V4LnRlc3QocmVhc29uLm1lc3NhZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0RXJyb3IoXCJtZXNzYWdlLmR1cGxpY2F0ZS1rZXkuZXJyb3IuXCIgKyByZWFzb24ubWVzc2FnZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKS5yZXBsYWNlKFwiIGluZGV4OiBcIiwgXCItXCIpLCBpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50b2FzdFdhcm5pbmcoYCR7dXJsfSBlbmRwb2ludCBlcnJvciBpcyBub3QgaGFuZGxlZCBwcm9wZXJseSEgQ2xpY2sgaGVyZSwgdG8gcXVpY2tseSBjcmVhdGUgYW4gaXNzdWUuYCwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgIH0sIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hYnNvbHV0ZVVybCh1cmwsIG9wdGlvbnMpLnRoZW4oYWJzb2x1dGVVcmwgPT4ge1xyXG4gICAgICAgICAgICAgICAgaXNzdWVDb250ZXh0LnVybCA9IGFic29sdXRlVXJsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuY2xpZW50LnJlcXVlc3Qob3B0aW9ucy5tZXRob2QsIGFic29sdXRlVXJsLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsUmVxdWVzdCA9IE9iamVjdFV0aWxzLmlzTnVtYmVyKG9wdGlvbnMudGltZW91dCkgJiYgb3B0aW9ucy50aW1lb3V0ID4gMFxyXG4gICAgICAgICAgICAgICAgICAgID8gcmVxdWVzdC5waXBlKHRpbWVvdXQob3B0aW9ucy50aW1lb3V0KSkgOiByZXF1ZXN0O1xyXG4gICAgICAgICAgICAgICAgZmluYWxSZXF1ZXN0LnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnJlcG9ydFByb2dyZXNzICYmIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlOiBNYXRoVXRpbHMucm91bmQoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwsIDIsIDAuMDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiBldmVudC5sb2FkZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogZXZlbnQudG90YWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcihwcm9ncmVzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMucGFyc2VSZXNwb25zZShldmVudCwgdXJsLCBvcHRpb25zKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyBhcyBIdHRwSGVhZGVycztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRoS2V5ID0gXCJBdXRob3JpemF0aW9uXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgdXNlIHRva2VuIGF1dGhcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGllbnQucmVuZXdUb2tlbkZ1bmMgJiYgaGVhZGVycy5oYXMoYXV0aEtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclRva2VuVGltZSA9IHRoaXMuc3RvcmFnZS5nZXQoXCJ1c2VyVG9rZW5UaW1lXCIpIHx8IGN1cnJlbnRUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbmQgdGhlIGxhc3QgcmVxdWVzdCB3YXMgYSBsb25nIGxvbmcgdGltZSBhZ29cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lIC0gNjAwMDAwID4gdXNlclRva2VuVGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGllbnQucmVuZXdUb2tlbkZ1bmMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UgfCBUaW1lb3V0RXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IgfHwgcmVzcG9uc2Uuc3RhdHVzID09IDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09IDMwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgYXMgSHR0cEhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aEtleSA9IFwiQXV0aG9yaXphdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGFuIGF1dGhvcml6YXRpb24gaGVhZGVyIGV4aXN0cywgYW5kIHdlIHN0aWxsIGhhdmUgYW4gVW5hdXRob3JpemVkIHJlc3BvbnNlIHByb21wdCB0aGUgdXNlciB0byBsb2cgaW4gYWdhaW5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVycy5oYXMoYXV0aEtleSkgJiYgcmVzcG9uc2Uuc3RhdHVzID09IDQwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdXNoZWQgPSB0aGlzLnB1c2hGYWlsZWRSZXF1ZXN0KHVybCwgb3B0aW9ucywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5tYWtlSGVhZGVycyhvcHRpb25zLm9yaWdpbmFsSGVhZGVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMsIGxpc3RlbmVyKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHVzaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVuYXV0aG9yaXplZEVycm9yKGFic29sdXRlVXJsLCBvcHRpb25zLCAoKSA9PiByZWplY3QocmVzcG9uc2UpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwdXNoRmFpbGVkUmVxdWVzdCh1cmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zLCByZXE6ICgpID0+IHZvaWQpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodXJsLmluZGV4T2YoXCJ0b2tlblwiKSA+PSAwIHx8IHVybCA9PT0gXCJ1c2VyXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBCYXNlSHR0cFNlcnZpY2UuZmFpbGVkUmVxdWVzdHMucHVzaChyZXEpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjaGVja0hlYWRlcnMoaGVhZGVyczogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFoZWFkZXJzIHx8ICFoZWFkZXJzLmNvb2tpZSB8fCAhaGVhZGVycy5yZWZlcmVyIHx8ICFoZWFkZXJzLmhvc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGVhZGVycy5yZWZlcmVyLmluZGV4T2YoaGVhZGVycy5ob3N0KSA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBtYWtlT3B0aW9ucyhvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBtZXRob2Q6IHN0cmluZyA9IFwiR0VUXCIsIGJvZHk/OiBhbnkpOiBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgICAgIC8vIFNldCBiYXNlIG9wdGlvbnNcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyA/IHsuLi5vcHRpb25zfSA6IHt9O1xyXG4gICAgICAgIG9wdGlvbnMubWV0aG9kID0gbWV0aG9kO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9IG9wdGlvbnMub2JzZXJ2ZSB8fCBcImJvZHlcIjtcclxuICAgICAgICBvcHRpb25zLm9yaWdpbmFsSGVhZGVycyA9IG9wdGlvbnMub3JpZ2luYWxIZWFkZXJzIHx8IChvcHRpb25zLmhlYWRlcnMgYXMgSUh0dHBIZWFkZXJzKSB8fCB7fTtcclxuICAgICAgICBvcHRpb25zLndpdGhDcmVkZW50aWFscyA9IE9iamVjdFV0aWxzLmlzQm9vbGVhbihvcHRpb25zLndpdGhDcmVkZW50aWFscykgPyBvcHRpb25zLndpdGhDcmVkZW50aWFscyA6IHRoaXMud2l0aENyZWRlbnRpYWxzO1xyXG4gICAgICAgIG9wdGlvbnMuYm9keSA9IGJvZHkgfHwge307XHJcbiAgICAgICAgLy8gU2V0IGNvb2tpZXMgZnJvbSBzZXJ2ZXIgc2lkZSByZXF1ZXN0XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9ICF0aGlzLnJlcXVlc3QgPyBudWxsIDogdGhpcy5yZXF1ZXN0LmhlYWRlcnM7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tIZWFkZXJzKGhlYWRlcnMpKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIkNvb2tpZVwiXSA9IGhlYWRlcnMuY29va2llO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSB0aGlzLm1ha2VIZWFkZXJzKG9wdGlvbnMpO1xyXG4gICAgICAgIG9wdGlvbnMucGFyYW1zID0gdGhpcy5tYWtlUGFyYW1zKG9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBtYWtlSGVhZGVycyhvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50Lm1ha2VIZWFkZXJzKE9iamVjdC5hc3NpZ24oe30sIHRoaXMucmVxdWVzdEhlYWRlcnMsIG9wdGlvbnM/LmhlYWRlcnMgfHwge30pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZVBhcmFtcyhvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUGFyYW1zIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jbGllbnQubWFrZVBhcmFtcyhPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlcXVlc3RQYXJhbXMsIG9wdGlvbnM/LnBhcmFtcyB8fCB7fSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwYXJzZVJlc3BvbnNlKHJlc3BvbnNlOiBhbnksIHVybDogc3RyaW5nLCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGFyc2VVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVybCh1cmwpLnJlcGxhY2UoLyg/OigoPyE6KS5cXC8pXFwvKS9nLCBcIiQxXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBhYnNvbHV0ZVVybCh1cmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBhYnNvbHV0ZVVybCA9IHRoaXMucGFyc2VVcmwodXJsKTtcclxuICAgICAgICBpZiAodXJsID09IFwiYXBpLWRvY3NcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gYWJzb2x1dGVVcmwucmVwbGFjZShcIi9hcGlcIiwgXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhYnNvbHV0ZVVybDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZXhwcmVzc1JlcXVlc3RVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJlcSA9IHRoaXMucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcSB8fCAhdXJsIHx8IHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSB8fCB1cmwuc3RhcnRzV2l0aChcIi8vXCIpKSByZXR1cm4gdXJsO1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIjtcclxuICAgICAgICByZXR1cm4gYCR7cmVxLnByb3RvY29sfTovLyR7cmVxLmdldChcImhvc3RcIil9JHtzZXBhcmF0b3J9JHt1cmx9YDtcclxuICAgIH1cclxufVxyXG4iXX0=
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2Jhc2UtaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQW9CLGFBQWEsRUFBd0MsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RyxPQUFPLEVBQ0gsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBVVgsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDbEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUFHbEMsTUFBTSxPQUFPLGVBQWU7SUF5QnhCLFlBQTZDLE1BQXNCLEVBQ3RCLE9BQXVCLEVBQ3JCLFFBQTBCLEVBQzNCLE9BQXdCLEVBQ3pCLE9BQXVCLEVBQ1YsVUFBbUIsSUFBSTtRQUxwQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRTdFLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxD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QixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ09ORklHX1NFUlZJQ0UsXHJcbiAgICBFWFBSRVNTX1JFUVVFU1QsXHJcbiAgICBIdHRwUHJvbWlzZSxcclxuICAgIElDb25maWdTZXJ2aWNlLFxyXG4gICAgSUh0dHBIZWFkZXJzLFxyXG4gICAgSUh0dHBQYXJhbXMsXHJcbiAgICBJSHR0cFNlcnZpY2UsXHJcbiAgICBJSXNzdWVDb250ZXh0LFxyXG4gICAgSUxhbmd1YWdlU2VydmljZSxcclxuICAgIElQYWdpbmF0aW9uRGF0YSxcclxuICAgIElSZXF1ZXN0T3B0aW9ucyxcclxuICAgIElUb2FzdGVyU2VydmljZSxcclxuICAgIExBTkdVQUdFX1NFUlZJQ0UsXHJcbiAgICBQcm9ncmVzc0xpc3RlbmVyLFxyXG4gICAgVE9BU1RFUl9TRVJWSUNFXHJcbn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge01hdGhVdGlsc30gZnJvbSBcIi4uL3V0aWxzL21hdGgudXRpbHNcIjtcclxuXHJcbmltcG9ydCB7QmFzZUh0dHBDbGllbnR9IGZyb20gXCIuL2Jhc2UtaHR0cC5jbGllbnRcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHt0aW1lb3V0fSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtUaW1lb3V0RXJyb3J9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlSHR0cFNlcnZpY2UgaW1wbGVtZW50cyBJSHR0cFNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBzdGF0aWMgZmFpbGVkUmVxdWVzdHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XHJcblxyXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gXCJiYXNlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCB3aXRoQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdEhlYWRlcnM6IElIdHRwSGVhZGVycztcclxuICAgIHJlcXVlc3RQYXJhbXM6IElIdHRwUGFyYW1zO1xyXG4gICAgY2FjaGU6IGFueTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHJldHJ5RmFpbGVkUmVxdWVzdHMoKTogdm9pZCB7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLmZvckVhY2gociA9PiByKCkpO1xyXG4gICAgICAgIEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB1bml2ZXJzYWwoKTogVW5pdmVyc2FsU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS51bml2ZXJzYWw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChCYXNlSHR0cENsaWVudCkgcmVhZG9ubHkgY2xpZW50OiBCYXNlSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoU3RvcmFnZVNlcnZpY2UpIHJlYWRvbmx5IHN0b3JhZ2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChMQU5HVUFHRV9TRVJWSUNFKSByZWFkb25seSBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoVE9BU1RFUl9TRVJWSUNFKSByZWFkb25seSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRVhQUkVTU19SRVFVRVNUKSByZWFkb25seSByZXF1ZXN0OiBSZXF1ZXN0ID0gbnVsbFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVycyA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVxdWVzdFBhcmFtcyA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcclxuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRTZXJ2aWNlKCk6IHZvaWQge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5jbGllbnQubWFrZVBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gaHR0cFBhcmFtcy5rZXlzKCkubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtrZXl9PSR7aHR0cFBhcmFtcy5nZXQoa2V5KX1gO1xyXG4gICAgICAgIH0pLmpvaW4oXCImXCIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnVybCh1cmwpfT8ke3F1ZXJ5fWA7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUxpc3RQYXJhbXMocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nID0gbnVsbCwgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuID0gbnVsbCwgZmlsdGVyOiBzdHJpbmcgPSBudWxsKTogSUh0dHBQYXJhbXMge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogSUh0dHBQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IChwYWdlIC0gMSksXHJcbiAgICAgICAgICAgIGxpbWl0OiBpdGVtc1BlclBhZ2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob3JkZXJCeSkgJiYgIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9yZGVyRGVzY2VuZGluZykpIHtcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnQgPSBgJHtvcmRlckRlc2NlbmRpbmcgPyBcIi1cIiA6IFwiXCJ9JHtvcmRlckJ5fWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQoZmlsdGVyKSkge1xyXG4gICAgICAgICAgICBwYXJhbXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiR0VUXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBkZWxldGVQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiREVMRVRFXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwb3N0UHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHB1dFByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJQVVRcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhdGNoUHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBBVENIXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1cGxvYWRQcm9taXNlKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBhbnkgPSB7fTtcclxuICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcclxuICAgICAgICAgICAgaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgICAgIH0sIG9wdGlvbnMpLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucywgbGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBsaXN0UHJvbWlzZSh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJvbWlzZSh1cmwsIHtwYXJhbXM6IHBhcmFtc30pLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogZGF0YS5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLm1ldGE/LnRvdGFsIHx8IGRhdGE/LnRvdGFsIHx8IGRhdGEuaXRlbXM/Lmxlbmd0aCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zIHx8IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IGRhdGEubWV0YSB8fCB7fVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiTm90IGltcGxlbWVudGVkLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHt9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGhhbmRsZVVuYXV0aG9yaXplZEVycm9yKGFic29sdXRlVXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVqZWN0OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgaWYgKEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJVc2VyIGF1dGggZXJyb3JcIiwgYWJzb2x1dGVVcmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b2FzdFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBpc3N1ZUNvbnRleHQ6IElJc3N1ZUNvbnRleHQsIHJlYXNvbjogYW55LCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXIud2FybmluZyhtZXNzYWdlLCB7aXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnN9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9hc3RFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCwgcmVhc29uOiBhbnksIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuaW5nKG1lc3NhZ2UsIHtpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9uc30pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b1Byb21pc2UodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIGNvbnN0IGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCA9IHt1cmw6IFwiXCJ9O1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBQcm9taXNlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIllvdSBtYXkgbm90IG5lZWQgYSByZWplY3QgSGFuZGxlciBmb3IgdGhpcyByZXF1ZXN0IVwiLCB0aGlzLm5hbWUsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVhc29uID0gcmVzcG9uc2UuZXJyb3IgfHwge307XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0V2FybmluZyhgJHt1cmx9IGVuZHBvaW50IGlzIG5vdCBpbXBsZW1lbnRlZCEgQ2xpY2sgaGVyZSwgdG8gcXVpY2tseSBjcmVhdGUgYW4gaXNzdWUuYCwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLygoRTExMDAwIGR1cGxpY2F0ZSBrZXkgZXJyb3IgY29sbGVjdGlvbjogKC4pK1xcLil8KF8xIGR1cCBrZXk6KC4pKykpL2c7XHJcbiAgICAgICAgICAgIGlmIChyZWFzb24ubWVzc2FnZSAmJiByZWdleC50ZXN0KHJlYXNvbi5tZXNzYWdlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdEVycm9yKFwibWVzc2FnZS5kdXBsaWNhdGUta2V5LmVycm9yLlwiICsgcmVhc29uLm1lc3NhZ2UucmVwbGFjZShyZWdleCwgXCJcIikucmVwbGFjZShcIiBpbmRleDogXCIsIFwiLVwiKSwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RXYXJuaW5nKGAke3VybH0gZW5kcG9pbnQgZXJyb3IgaXMgbm90IGhhbmRsZWQgcHJvcGVybHkhIENsaWNrIGhlcmUsIHRvIHF1aWNrbHkgY3JlYXRlIGFuIGlzc3VlLmAsIGlzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zKTtcclxuICAgICAgICB9LCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWJzb2x1dGVVcmwodXJsLCBvcHRpb25zKS50aGVuKGFic29sdXRlVXJsID0+IHtcclxuICAgICAgICAgICAgICAgIGlzc3VlQ29udGV4dC51cmwgPSBhYnNvbHV0ZVVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmNsaWVudC5yZXF1ZXN0KG9wdGlvbnMubWV0aG9kLCBhYnNvbHV0ZVVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFJlcXVlc3QgPSBPYmplY3RVdGlscy5pc051bWJlcihvcHRpb25zLnRpbWVvdXQpICYmIG9wdGlvbnMudGltZW91dCA+IDBcclxuICAgICAgICAgICAgICAgICAgICA/IHJlcXVlc3QucGlwZSh0aW1lb3V0KG9wdGlvbnMudGltZW91dCkpIDogcmVxdWVzdDtcclxuICAgICAgICAgICAgICAgIGZpbmFsUmVxdWVzdC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZXBvcnRQcm9ncmVzcyAmJiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZTogTWF0aFV0aWxzLnJvdW5kKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsLCAyLCAwLjAxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZXZlbnQubG9hZGVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IGV2ZW50LnRvdGFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIocHJvZ3Jlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnBhcnNlUmVzcG9uc2UoZXZlbnQsIHVybCwgb3B0aW9ucykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgYXMgSHR0cEhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aEtleSA9IFwiQXV0aG9yaXphdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHVzZSB0b2tlbiBhdXRoXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jICYmIGhlYWRlcnMuaGFzKGF1dGhLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJUb2tlblRpbWUgPSB0aGlzLmdldFVzZXJUb2tlblRpbWUoKSB8fCBjdXJyZW50VGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIHRoZSBsYXN0IHJlcXVlc3Qgd2FzIGEgbG9uZy1sb25nIHRpbWUgYWdvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZSAtIDYwMDAwMCA+IHVzZXJUb2tlblRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgVGltZW91dEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgVGltZW91dEVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAzMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIGFzIEh0dHBIZWFkZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhLZXkgPSBcIkF1dGhvcml6YXRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhdXRob3JpemF0aW9uIGhlYWRlciBleGlzdHMsIGFuZCB3ZSBzdGlsbCBoYXZlIGFuIFVuYXV0aG9yaXplZCByZXNwb25zZSBwcm9tcHQgdGhlIHVzZXIgdG8gbG9nIGluIGFnYWluXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcnMuaGFzKGF1dGhLZXkpICYmIHJlc3BvbnNlLnN0YXR1cyA9PSA0MDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHVzaGVkID0gdGhpcy5wdXNoRmFpbGVkUmVxdWVzdCh1cmwsIG9wdGlvbnMsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IHRoaXMubWFrZUhlYWRlcnMob3B0aW9ucy5vcmlnaW5hbEhlYWRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zLCBsaXN0ZW5lcikudGhlbihyZXNvbHZlLCByZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1c2hlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVbmF1dGhvcml6ZWRFcnJvcihhYnNvbHV0ZVVybCwgb3B0aW9ucywgKCkgPT4gcmVqZWN0KHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0VXNlclRva2VuVGltZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KFwidXNlclRva2VuVGltZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHVzaEZhaWxlZFJlcXVlc3QodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVxOiAoKSA9PiB2b2lkKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKFwidG9rZW5cIikgPj0gMCB8fCB1cmwgPT09IFwidXNlclwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLnB1c2gocmVxKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY2hlY2tIZWFkZXJzKGhlYWRlcnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghaGVhZGVycyB8fCAhaGVhZGVycy5jb29raWUgfHwgIWhlYWRlcnMucmVmZXJlciB8fCAhaGVhZGVycy5ob3N0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhlYWRlcnMucmVmZXJlci5pbmRleE9mKGhlYWRlcnMuaG9zdCkgPj0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZU9wdGlvbnMob3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgbWV0aG9kOiBzdHJpbmcgPSBcIkdFVFwiLCBib2R5PzogYW55KTogSVJlcXVlc3RPcHRpb25zIHtcclxuICAgICAgICAvLyBTZXQgYmFzZSBvcHRpb25zXHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgPyB7Li4ub3B0aW9uc30gOiB7fTtcclxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IG1ldGhvZDtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSBvcHRpb25zLm9ic2VydmUgfHwgXCJib2R5XCI7XHJcbiAgICAgICAgb3B0aW9ucy5vcmlnaW5hbEhlYWRlcnMgPSBvcHRpb25zLm9yaWdpbmFsSGVhZGVycyB8fCAob3B0aW9ucy5oZWFkZXJzIGFzIElIdHRwSGVhZGVycykgfHwge307XHJcbiAgICAgICAgb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSBPYmplY3RVdGlscy5pc0Jvb2xlYW4ob3B0aW9ucy53aXRoQ3JlZGVudGlhbHMpID8gb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgOiB0aGlzLndpdGhDcmVkZW50aWFscztcclxuICAgICAgICBvcHRpb25zLmJvZHkgPSBib2R5IHx8IHt9O1xyXG4gICAgICAgIC8vIFNldCBjb29raWVzIGZyb20gc2VydmVyIHNpZGUgcmVxdWVzdFxyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSAhdGhpcy5yZXF1ZXN0ID8gbnVsbCA6IHRoaXMucmVxdWVzdC5oZWFkZXJzO1xyXG4gICAgICAgIGlmICh0aGlzLmNoZWNrSGVhZGVycyhoZWFkZXJzKSkge1xyXG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDb29raWVcIl0gPSBoZWFkZXJzLmNvb2tpZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5tYWtlSGVhZGVycyhvcHRpb25zKTtcclxuICAgICAgICBvcHRpb25zLnBhcmFtcyA9IHRoaXMubWFrZVBhcmFtcyhvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gb3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZUhlYWRlcnMob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNsaWVudC5tYWtlSGVhZGVycyhPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlcXVlc3RIZWFkZXJzLCBvcHRpb25zPy5oZWFkZXJzIHx8IHt9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG1ha2VQYXJhbXMob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50Lm1ha2VQYXJhbXMoT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZXF1ZXN0UGFyYW1zLCBvcHRpb25zPy5wYXJhbXMgfHwge30pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZShyZXNwb25zZTogYW55LCB1cmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogYW55IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhcnNlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cmwodXJsKS5yZXBsYWNlKC8oPzooKD8hOikuXFwvKVxcLykvZywgXCIkMVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgYWJzb2x1dGVVcmwodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVcmwodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZXhwcmVzc1JlcXVlc3RVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJlcSA9IHRoaXMucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcSB8fCAhdXJsIHx8IHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSB8fCB1cmwuc3RhcnRzV2l0aChcIi8vXCIpKSByZXR1cm4gdXJsO1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIjtcclxuICAgICAgICByZXR1cm4gYCR7cmVxLnByb3RvY29sfTovLyR7cmVxLmdldChcImhvc3RcIil9JHtzZXBhcmF0b3J9JHt1cmx9YDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -72,6 +72,19 @@ export class ConfigService {
72
72
  prepareConfig(config) {
73
73
  return Promise.resolve(config);
74
74
  }
75
+ cloneRootElem() {
76
+ if (this.rootElement instanceof HTMLElement) {
77
+ const clone = this.rootElement.cloneNode(true);
78
+ const children = Array.from(clone.childNodes);
79
+ children.forEach(child => {
80
+ if (child instanceof HTMLElement) {
81
+ child.remove();
82
+ }
83
+ });
84
+ return clone;
85
+ }
86
+ return this.rootElement.cloneNode(true);
87
+ }
75
88
  prepareUrl(url, ending) {
76
89
  const project = !this.loadedConfig ? "" : this.loadedConfig.project;
77
90
  const needsProtocol = url?.startsWith("//") ?? false;
@@ -114,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
114
127
  type: Inject,
115
128
  args: [SCRIPT_PARAMS]
116
129
  }] }]; } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFFLFdBQVcsRUFBa0IsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBR2xELE1BQU0sT0FBTyxhQUFhO0lBb0J0QixZQUFxQixJQUFnQixFQUNoQixTQUEyQixFQUMzQixRQUFrQixFQUNJLFdBQWdCLEVBQ2hCLE9BQWUsRUFDYixhQUE2QixJQUFJLEVBQy9CLGVBQW9CLElBQUk7UUFObEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0ksZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUd0RCxLQUFLLE1BQU0sR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUNsQixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUN4QyxVQUFVLEVBQUUsS0FBSzthQUNwQixDQUFDLENBQUM7U0FDTjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJ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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLG1CQUFtQixDQUFDLEVBQ3pELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzQixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7MEdBckdRLGFBQWEsb0dBdUJGLFlBQVksYUFDWixZQUFZLGFBQ0EsV0FBVyw2QkFDWCxhQUFhOzhHQTFCcEMsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkF3Qk0sTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXOzswQkFDOUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBpc0Rldk1vZGUsIE9wdGlvbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgKiBhcyBKU09ONSBmcm9tIFwianNvbjVcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge0FQUF9CQVNFX1VSTCwgQkFTRV9DT05GSUcsIElDb25maWdTZXJ2aWNlLCBJQ29uZmlndXJhdGlvbiwgUk9PVF9FTEVNRU5ULCBTQ1JJUFRfUEFSQU1TfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7U3RyaW5nVXRpbHN9IGZyb20gXCIuLi91dGlscy9zdHJpbmcudXRpbHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJQ29uZmlnU2VydmljZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGJhc2VDb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcHJvdGVjdGVkIGxvYWRlZENvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICBwcm90ZWN0ZWQgc2NyaXB0UGFyYW1ldGVyczogYW55O1xyXG4gICAgcHJvdGVjdGVkIGxvYWRlcjogUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGVyRnVuYzogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcblxyXG4gICAgZ2V0IGxvYWQoKTogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlckZ1bmM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbmZpZygpOiBJQ29uZmlndXJhdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkQ29uZmlnO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25maWdVcmwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5sb2FkZWRDb25maWcuYmFzZVVybH1jb25maWcvY29uZmlnLmpzb25gO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KFJPT1RfRUxFTUVOVCkgcmVhZG9ubHkgcm9vdEVsZW1lbnQ6IGFueSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoQVBQX0JBU0VfVVJMKSByZWFkb25seSBiYXNlVXJsOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEJBU0VfQ09ORklHKSBiYXNlQ29uZmlnOiBJQ29uZmlndXJhdGlvbiA9IG51bGwsXHJcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNDUklQVF9QQVJBTVMpIHNjcmlwdFBhcmFtczogYW55ID0gbnVsbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIFtdKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYmFzZUNvbmZpZyA9IGJhc2VDb25maWcgfHwge307XHJcbiAgICAgICAgdGhpcy5sb2FkZWRDb25maWcgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAhdGhpcy5iYXNlVXJsID8ge30gOiB7YmFzZVVybDogdGhpcy5iYXNlVXJsLCBiYXNlRG9tYWluOiBTdHJpbmdVdGlscy5wYXJzZURvbWFpbih0aGlzLmJhc2VVcmwpfSxcclxuICAgICAgICAgICAgdGhpcy5iYXNlQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNjcmlwdFBhcmFtZXRlcnMgPSBzY3JpcHRQYXJhbXMgfHwge307XHJcbiAgICAgICAgdGhpcy5sb2FkZXJGdW5jID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRoaXMubG9hZGVyIHx8IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkSnNvbigpLnRoZW4oY29uZmlnID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5sb2FkZWRDb25maWcsIGNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQ29uZmlnKGNvbmZpZykudGhlbihjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRDb25maWcgPSBjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJhc2VVcmwgPSBjLmJhc2VVcmwgfHwgXCIvXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LCByZWplY3QpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5pbml0U2VydmljZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBpbml0U2VydmljZSgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGxvYWRKc29uKCk6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcclxuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmxvYWRlZENvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbmZpZ1VybCA9IHRoaXMuY29uZmlnVXJsO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZzUgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KGlzRGV2TW9kZSgpID8gYCR7Y29uZmlnVXJsfTVgIDogY29uZmlnVXJsLCB7cmVzcG9uc2VUeXBlOiBcInRleHRcIn0pLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTjUucGFyc2UoY29uZmlnNSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5odHRwLmdldChjb25maWdVcmwpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENhbid0IHBhcnNlIGpzb241IGNvbmZpZzogJHtlfWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25maWcgZmlsZSBub3QgZm91bmQgYXQ6ICR7Y29uZmlnVXJsfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwcmVwYXJlQ29uZmlnKGNvbmZpZzogSUNvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElDb25maWd1cmF0aW9uPiB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gIXRoaXMubG9hZGVkQ29uZmlnID8gXCJcIiA6IHRoaXMubG9hZGVkQ29uZmlnLnByb2plY3Q7XHJcbiAgICAgICAgY29uc3QgbmVlZHNQcm90b2NvbCA9IHVybD8uc3RhcnRzV2l0aChcIi8vXCIpID8/IGZhbHNlO1xyXG4gICAgICAgIHVybCA9ICFuZWVkc1Byb3RvY29sICYmIHVybD8uc3RhcnRzV2l0aChcIi9cIikgPyB0aGlzLmxvYWRlZENvbmZpZy5iYXNlRG9tYWluICsgdXJsLnN1YnN0cigxKSA6IHVybCB8fCBcIlwiO1xyXG4gICAgICAgIHVybCA9IGAke3VybC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfSR7ZW5kaW5nfWAucmVwbGFjZShcIltwcm9qZWN0XVwiLCBwcm9qZWN0KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIgJiYgbmVlZHNQcm90b2NvbCA/IGBodHRwOiR7dXJsfWAgOiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbmZpZ1trZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFF1ZXJ5UGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdXJsPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICB1cmwgPSB1cmwgfHwgKHRoaXMudW5pdmVyc2FsLmlzQnJvd3NlciA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogXCJcIik7XHJcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW1xcXV0vZywgXCJcXFxcJCZcIik7XHJcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKFwiWz8mXVwiICsgbmFtZSArIFwiKD0oW14mI10qKXwmfCN8JClcIiksXHJcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZWdleC5leGVjKHVybCk7XHJcbiAgICAgICAgaWYgKCFyZXN1bHRzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiBcIlwiO1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0c1syXS5yZXBsYWNlKC9cXCsvZywgXCIgXCIpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFFLFdBQVcsRUFBa0IsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBR2xELE1BQU0sT0FBTyxhQUFhO0lBb0J0QixZQUFxQixJQUFnQixFQUNoQixTQUEyQixFQUMzQixRQUFrQixFQUNJLFdBQWdCLEVBQ2hCLE9BQWUsRUFDYixhQUE2QixJQUFJLEVBQy9CLGVBQW9CLElBQUk7UUFObEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0ksZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUd0RCxLQUFLLE1BQU0sR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUNsQixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUN4QyxVQUFVLEVBQUUsS0FBSzthQUNwQixDQUFDLENBQUM7U0FDTjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJ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OzBCQXdCTSxNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUM5QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGlzRGV2TW9kZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCAqIGFzIEpTT041IGZyb20gXCJqc29uNVwiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QVBQX0JBU0VfVVJMLCBCQVNFX0NPTkZJRywgSUNvbmZpZ1NlcnZpY2UsIElDb25maWd1cmF0aW9uLCBST09UX0VMRU1FTlQsIFNDUklQVF9QQVJBTVN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSBcIi4uL3V0aWxzL3N0cmluZy51dGlsc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElDb25maWdTZXJ2aWNlIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYmFzZUNvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICBwcm90ZWN0ZWQgbG9hZGVkQ29uZmlnOiBJQ29uZmlndXJhdGlvbjtcclxuICAgIHByb3RlY3RlZCBzY3JpcHRQYXJhbWV0ZXJzOiBhbnk7XHJcbiAgICBwcm90ZWN0ZWQgbG9hZGVyOiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkZXJGdW5jOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuXHJcbiAgICBnZXQgbG9hZCgpOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyRnVuYztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29uZmlnKCk6IElDb25maWd1cmF0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZWRDb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbmZpZ1VybCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmxvYWRlZENvbmZpZy5iYXNlVXJsfWNvbmZpZy9jb25maWcuanNvbmA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IHVuaXZlcnNhbDogVW5pdmVyc2FsU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoUk9PVF9FTEVNRU5UKSByZWFkb25seSByb290RWxlbWVudDogYW55LFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChBUFBfQkFTRV9VUkwpIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQkFTRV9DT05GSUcpIGJhc2VDb25maWc6IElDb25maWd1cmF0aW9uID0gbnVsbCxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU0NSSVBUX1BBUkFNUykgc2NyaXB0UGFyYW1zOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gW10pIHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5iYXNlQ29uZmlnID0gYmFzZUNvbmZpZyB8fCB7fTtcclxuICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgICF0aGlzLmJhc2VVcmwgPyB7fSA6IHtiYXNlVXJsOiB0aGlzLmJhc2VVcmwsIGJhc2VEb21haW46IFN0cmluZ1V0aWxzLnBhcnNlRG9tYWluKHRoaXMuYmFzZVVybCl9LFxyXG4gICAgICAgICAgICB0aGlzLmJhc2VDb25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2NyaXB0UGFyYW1ldGVycyA9IHNjcmlwdFBhcmFtcyB8fCB7fTtcclxuICAgICAgICB0aGlzLmxvYWRlckZ1bmMgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gdGhpcy5sb2FkZXIgfHwgbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRKc29uKCkudGhlbihjb25maWcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkQ29uZmlnID0gY29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmxvYWRlZENvbmZpZywgY29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVDb25maWcoY29uZmlnKS50aGVuKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuYmFzZVVybCA9IGMuYmFzZVVybCB8fCBcIi9cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXI7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRTZXJ2aWNlKCk6IHZvaWQge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgbG9hZEpzb24oKTogUHJvbWlzZTxJQ29uZmlndXJhdGlvbj4ge1xyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMubG9hZGVkQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29uZmlnVXJsID0gdGhpcy5jb25maWdVcmw7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlnNSA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoaXNEZXZNb2RlKCkgPyBgJHtjb25maWdVcmx9NWAgOiBjb25maWdVcmwsIHtyZXNwb25zZVR5cGU6IFwidGV4dFwifSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09ONS5wYXJzZShjb25maWc1KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KGNvbmZpZ1VybCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FuJ3QgcGFyc2UganNvbjUgY29uZmlnOiAke2V9YCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlIG5vdCBmb3VuZCBhdDogJHtjb25maWdVcmx9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHByZXBhcmVDb25maWcoY29uZmlnOiBJQ29uZmlndXJhdGlvbik6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvbmVSb290RWxlbSgpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3RFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xvbmUgPSB0aGlzLnJvb3RFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudFxyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20oY2xvbmUuY2hpbGROb2Rlcyk7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjbG9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gIXRoaXMubG9hZGVkQ29uZmlnID8gXCJcIiA6IHRoaXMubG9hZGVkQ29uZmlnLnByb2plY3Q7XHJcbiAgICAgICAgY29uc3QgbmVlZHNQcm90b2NvbCA9IHVybD8uc3RhcnRzV2l0aChcIi8vXCIpID8/IGZhbHNlO1xyXG4gICAgICAgIHVybCA9ICFuZWVkc1Byb3RvY29sICYmIHVybD8uc3RhcnRzV2l0aChcIi9cIikgPyB0aGlzLmxvYWRlZENvbmZpZy5iYXNlRG9tYWluICsgdXJsLnN1YnN0cigxKSA6IHVybCB8fCBcIlwiO1xyXG4gICAgICAgIHVybCA9IGAke3VybC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfSR7ZW5kaW5nfWAucmVwbGFjZShcIltwcm9qZWN0XVwiLCBwcm9qZWN0KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIgJiYgbmVlZHNQcm90b2NvbCA/IGBodHRwOiR7dXJsfWAgOiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbmZpZ1trZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFF1ZXJ5UGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdXJsPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICB1cmwgPSB1cmwgfHwgKHRoaXMudW5pdmVyc2FsLmlzQnJvd3NlciA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogXCJcIik7XHJcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW1xcXV0vZywgXCJcXFxcJCZcIik7XHJcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKFwiWz8mXVwiICsgbmFtZSArIFwiKD0oW14mI10qKXwmfCN8JClcIiksXHJcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZWdleC5leGVjKHVybCk7XHJcbiAgICAgICAgaWYgKCFyZXN1bHRzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiBcIlwiO1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0c1syXS5yZXBsYWNlKC9cXCsvZywgXCIgXCIpKTtcclxuICAgIH1cclxufVxyXG4iXX0=