ontimize-web-ngx 15.3.1 → 15.3.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 (43) hide show
  1. package/esm2020/lib/components/app-sidenav/index.mjs +2 -1
  2. package/esm2020/lib/components/bar-menu/index.mjs +2 -1
  3. package/esm2020/lib/components/filter-builder/index.mjs +2 -1
  4. package/esm2020/lib/components/form/index.mjs +3 -1
  5. package/esm2020/lib/components/index.mjs +3 -1
  6. package/esm2020/lib/components/input/radio/o-radio.component.mjs +32 -5
  7. package/esm2020/lib/components/o-service-component.class.mjs +42 -21
  8. package/esm2020/lib/components/table/column/o-column.class.mjs +2 -2
  9. package/esm2020/lib/components/table/column/o-table-column.component.mjs +2 -4
  10. package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +2 -2
  11. package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +7 -4
  12. package/esm2020/lib/components/table/o-table.component.mjs +64 -40
  13. package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
  14. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +14 -3
  15. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +2 -1
  16. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +1 -14
  17. package/esm2020/lib/layouts/index.mjs +3 -1
  18. package/esm2020/lib/services/navigation.service.mjs +10 -2
  19. package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +24 -15
  20. package/esm2020/lib/services/state/o-table-component-state.service.mjs +12 -4
  21. package/esm2020/lib/shared/index.mjs +3 -1
  22. package/esm2020/lib/types/form-layout-detail-component-data.type.mjs +1 -1
  23. package/fesm2015/ontimize-web-ngx.mjs +217 -112
  24. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  25. package/fesm2020/ontimize-web-ngx.mjs +199 -103
  26. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  27. package/lib/components/app-sidenav/index.d.ts +1 -0
  28. package/lib/components/bar-menu/index.d.ts +1 -0
  29. package/lib/components/filter-builder/index.d.ts +1 -0
  30. package/lib/components/form/index.d.ts +2 -0
  31. package/lib/components/index.d.ts +2 -0
  32. package/lib/components/input/radio/o-radio.component.d.ts +8 -3
  33. package/lib/components/o-service-component.class.d.ts +2 -2
  34. package/lib/components/table/column/o-table-column.component.d.ts +0 -1
  35. package/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.d.ts +4 -3
  36. package/lib/components/table/o-table.component.d.ts +19 -2
  37. package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +3 -0
  38. package/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.d.ts +0 -1
  39. package/lib/layouts/index.d.ts +2 -0
  40. package/lib/services/navigation.service.d.ts +8 -4
  41. package/lib/shared/index.d.ts +2 -0
  42. package/lib/types/form-layout-detail-component-data.type.d.ts +3 -1
  43. package/package.json +1 -1
@@ -299,19 +299,6 @@ export class OFormLayoutTabGroupComponent {
299
299
  });
300
300
  }
301
301
  }
302
- createDetailComponent(component, paramsObj) {
303
- const newDetailComp = {
304
- params: paramsObj.params,
305
- queryParams: paramsObj.queryParams,
306
- urlSegments: paramsObj.urlSegments,
307
- component: component,
308
- url: paramsObj.url,
309
- id: Util.randomNumber().toString(),
310
- label: paramsObj.label,
311
- innerFormsInfo: {}
312
- };
313
- return newDetailComp;
314
- }
315
302
  getParams() {
316
303
  return Util.isDefined(this.data[0]) ? this.data[0].params : undefined;
317
304
  }
@@ -368,4 +355,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
368
355
  type: ViewChildren,
369
356
  args: [OFormLayoutManagerContentDirective]
370
357
  }] } });
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC90YWJncm91cC9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3RhYmdyb3VwL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXFCLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFHNUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJ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MEJBK0JFLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDOzRDQXRCM0MsV0FBVyxNQUNLLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDNkIsY0FBYztzQkFBL0QsWUFBWTt1QkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQsIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29uY2F0TWFwLCBkZWxheSwgZnJvbSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJNb2RlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItbW9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zLCBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJCYXNlIH0gZnJvbSAnLi4vby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9UQUJHUk9VUCA9IFtcbiAgJ3RpdGxlJyxcbiAgJ29wdGlvbnMnLFxuICAnc3RyZXRjaFRhYnM6IHN0cmV0Y2gtdGFicydcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9UQUJHUk9VUCA9IFtcbiAgJ29uTWFpblRhYlNlbGVjdGVkJyxcbiAgJ29uU2VsZWN0ZWRUYWJDaGFuZ2UnLFxuICAnb25DbG9zZVRhYidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAnLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfVEFCR1JPVVAsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX1RBQkdST1VQLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC10YWJncm91cF0nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPRm9ybUxheW91dFRhYkdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgZGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGFbXSA9IFtdO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgcHVibGljIG9wdGlvbnM6IGFueTtcbiAgcHVibGljIHNob3dMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgc3RyZXRjaFRhYnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG4gIEBWaWV3Q2hpbGRyZW4oT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSkgdGFic0RpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlPjtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuXG4gIHB1YmxpYyBvbk1haW5UYWJTZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uU2VsZWN0ZWRUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvbkNsb3NlVGFiOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBwcmV2aW91c1NlbGVjdGVkSW5kZXg6IG51bWJlcjtcblxuICBwdWJsaWMgdXBkYXRlVGFiQ29tcG9uZW50c1N0YXRlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwdWJsaWMgdGFic01vZGlmaWNhdGlvbnNDYWNoZTogYW55W10gPSBbXTtcbiAgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGxvY2F0aW9uOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPRm9ybUxheW91dE1hbmFnZXJCYXNlKSkgcHVibGljIGZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlXG4gICkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgdGhpcy5hY3RSb3V0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zdGF0ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnRhYnNEaXJlY3RpdmVzLmNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgaWYgKHRoaXMudGFic0RpcmVjdGl2ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHRhYkl0ZW0gPSB0aGlzLnRhYnNEaXJlY3RpdmVzLmxhc3Q7XG4gICAgICAgIGNvbnN0IHRhYkRhdGEgPSB0aGlzLmRhdGFbdGFiSXRlbS5pbmRleF07XG4gICAgICAgIGlmICh0YWJEYXRhICYmICF0YWJEYXRhLnJlbmRlcmVkKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVUYWJDb21wb25lbnQodGFiRGF0YSwgdGFiSXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1haW5UYWJUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5vcHRpb25zLnRpdGxlIHx8IHRoaXMudGl0bGUgfHwgJ0xBWU9VVF9NQU5BTkdFUi5NQUlOX1RBQl9MQUJFTCcpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlQW5pbWF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmRpc2FibGVBbmltYXRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhlYWRlclBvc2l0aW9uKCkge1xuICAgIGxldCBoZWFkZXJQb3NpdGlvbjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5oZWFkZXJQb3NpdGlvbikge1xuICAgICAgaGVhZGVyUG9zaXRpb24gPSB0aGlzLm9wdGlvbnMuaGVhZGVyUG9zaXRpb247XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJQb3NpdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29sb3IoKSB7XG4gICAgbGV0IGNvbG9yO1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmNvbG9yKSB7XG4gICAgICBjb2xvciA9IHRoaXMub3B0aW9ucy5jb2xvcjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG5cbiAgcHVibGljIGdldCBiYWNrZ3JvdW5kQ29sb3IoKSB7XG4gICAgbGV0IGJhY2tncm91bmRDb2xvcjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGJhY2tncm91bmRDb2xvciA9IHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlbXBsYXRlTWF0VGFiTGFiZWwoKSB7XG4gICAgbGV0IHRlbXBsYXRlTWF0VGFiTGFiZWw7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMudGVtcGxhdGVNYXRUYWJMYWJlbCkge1xuICAgICAgdGVtcGxhdGVNYXRUYWJMYWJlbCA9IHRoaXMub3B0aW9ucy50ZW1wbGF0ZU1hdFRhYkxhYmVsO1xuICAgIH1cbiAgICByZXR1cm4gdGVtcGxhdGVNYXRUYWJMYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWNvbigpIHtcbiAgICBsZXQgaWNvbjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5pY29uKSB7XG4gICAgICBpY29uID0gdGhpcy5vcHRpb25zLmljb247XG4gICAgfVxuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ljb25Qb3NpdGlvbkxlZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaWNvblBvc2l0aW9uID09PSAnbGVmdCc7XG4gIH1cblxuICBnZXQgbWF4VGFicygpOiBudW1iZXIge1xuICAgIGxldCBtYXhUYWJzO1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm1heFRhYnMpIHtcbiAgICAgIG1heFRhYnMgPSB0aGlzLm9wdGlvbnMubWF4VGFicztcbiAgICB9XG4gICAgcmV0dXJuIG1heFRhYnM7XG4gIH1cblxuICBhZGRUYWIoY29tcERhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKSB7XG4gICAgbGV0IGFkZE5ld0NvbXAgPSB0cnVlO1xuICAgIGlmIChjb21wRGF0YS5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICBjb25zdCBhbHJlYWR5RXhpc3RpbmdJbnNlcnRpb25UYWIgPSBVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGEuZmluZChpdGVtID0+IGl0ZW0uaW5zZXJ0aW9uTW9kZSkpO1xuICAgICAgYWRkTmV3Q29tcCA9ICFhbHJlYWR5RXhpc3RpbmdJbnNlcnRpb25UYWI7XG4gICAgfVxuICAgIGNvbnN0IG5ld0NvbXBQYXJhbXMgPSBjb21wRGF0YS5wYXJhbXM7XG4gICAgaWYgKGFkZE5ld0NvbXApIHtcbiAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKGNvbXAgPT4ge1xuICAgICAgICBjb25zdCBjdXJyUGFyYW1zID0gY29tcC5wYXJhbXMgfHwge307XG4gICAgICAgIGxldCBzb21lRGlmZlBhcmFtcyA9IHRydWU7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhjdXJyUGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc29tZURpZmZQYXJhbXMgPSBPYmplY3Qua2V5cyhjdXJyUGFyYW1zKS5zb21lKGtleSA9PiBjdXJyUGFyYW1zW2tleV0gIT0gbmV3Q29tcFBhcmFtc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgICBhZGROZXdDb21wID0gYWRkTmV3Q29tcCAmJiBzb21lRGlmZlBhcmFtcztcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoYWRkTmV3Q29tcCkge1xuICAgICAgdGhpcy5kYXRhLnB1c2goY29tcERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZFRhYihjb21wRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkVGFiKGNvbXBEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIGxldCBjb21wSW5kZXggPSAtMTtcbiAgICBjb25zdCBjb21wUGFyYW1zID0gY29tcERhdGEucGFyYW1zO1xuICAgIHRoaXMuZGF0YS5mb3JFYWNoKChjb21wLCBpKSA9PiB7XG4gICAgICBjb25zdCBjdXJyUGFyYW1zID0gY29tcC5wYXJhbXMgfHwge307XG4gICAgICBjb25zdCBzYW1lUGFyYW1zID0gVXRpbC5pc0VxdWl2YWxlbnQoY3VyclBhcmFtcywgY29tcFBhcmFtcyk7XG4gICAgICBpZiAoc2FtZVBhcmFtcykge1xuICAgICAgICBjb21wSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChjb21wSW5kZXggPj0gMCkge1xuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gKGNvbXBJbmRleCArIDEpO1xuICAgIH1cbiAgfVxuXG4gIG9uVGFiU2VsZWN0Q2hhbmdlKGFyZzogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlciAmJiB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPT09IDApIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIudXBkYXRlSWZOZWVkZWQoKTtcbiAgICAgIHRoaXMub25NYWluVGFiU2VsZWN0ZWQuZW1pdCgpO1xuICAgIH1cbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLnNob3dMb2FkaW5nLmdldFZhbHVlKCk7XG4gICAgaWYgKGlzTG9hZGluZyAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnRhYnNEYXRhKSAmJlxuICAgICAgYXJnLmluZGV4ID09PSB0aGlzLnN0YXRlLnRhYnNEYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgb25jZSB3aGVuIGFsbCB0YWJzIGFyZSBsb2FkZWRcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRJbmRleDtcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcubmV4dChmYWxzZSk7XG4gICAgfVxuICAgIGlmICghaXNMb2FkaW5nKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh7XG4gICAgICAgIGRhdGE6IHRoaXMuZGF0YVt0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggLSAxXSxcbiAgICAgICAgaW5kZXg6IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgcHJldmlvdXNJbmRleDogdGhpcy5wcmV2aW91c1NlbGVjdGVkSW5kZXhcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRJbmRleCA9IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYkRhdGEgPSB0aGlzLmRhdGFbaW5kZXhdO1xuICAgIGNvbnN0IG9uQ2xvc2VUYWJBY2NlcHRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQob25DbG9zZVRhYkFjY2VwdGVkLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLmRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5vbkNsb3NlVGFiLmVtaXQoe1xuICAgICAgICAgIGRhdGE6IHRhYkRhdGEsXG4gICAgICAgICAgaW5kZXg6IGluZGV4ICsgMVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGFiRGF0YSkgJiYgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5oYXNUb0NvbmZpcm1FeGl0KHRhYkRhdGEsIG9wdGlvbnMpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdNRVNTQUdFUy5GT1JNX0NIQU5HRVNfV0lMTF9CRV9MT1NUJykudGhlbihyZXMgPT4ge1xuICAgICAgICBvbkNsb3NlVGFiQWNjZXB0ZWQuZW1pdChyZXMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2xvc2VUYWJBY2NlcHRlZC5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVRhYkNvbXBvbmVudCh0YWJEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSwgY29udGVudDogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSkge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRhYkRhdGEuY29tcG9uZW50O1xuICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYgPSBjb250ZW50LnZpZXdDb250YWluZXJSZWY7XG4gICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgdGFiRGF0YS5yZW5kZXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXRGb3JtQ2FjaGVEYXRhKCk6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmxlbmd0aCA+IDAgPyB0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlID0gW107XG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggJiYgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID4gMCkge1xuICAgICAgY29uc3QgdXJsU2VnbWVudHMgPSB0aGlzLmRhdGFbdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMV0udXJsU2VnbWVudHMgfHwgW107XG4gICAgICB1cmxTZWdtZW50cy5mb3JFYWNoKChzZWdtZW50KSA9PiB7XG4gICAgICAgIHJvdXRlLnB1c2goc2VnbWVudC5wYXRoKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJvdXRlO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBzZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyOiBzdHJpbmcsIG1vZGlmaWVkOiBib29sZWFuLCBjb25maXJtRXhpdDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSB0aGlzLmRhdGFbdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMV07XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoc2VsZWN0ZWREYXRhKSkge1xuICAgICAgICBzZWxlY3RlZERhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdID0ge1xuICAgICAgICAgIG1vZGlmaWVkOiBtb2RpZmllZCxcbiAgICAgICAgICBjb25maXJtT25FeGl0OiBjb25maXJtRXhpdFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU/OiBib29sZWFuKSB7XG4gICAgbGV0IGluZGV4O1xuICAgIGlmIChpbnNlcnRpb25Nb2RlKSB7XG4gICAgICBpbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5pbnNlcnRpb25Nb2RlICE9PSBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBPYmplY3Qua2V5cyhrZXlzVmFsdWVzKS5ldmVyeShrZXkgPT4ga2V5c1ZhbHVlc1trZXldID09IGl0ZW0ucGFyYW1zW2tleV0pKTtcbiAgICB9XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgIC8qKiBJbiBjYXNlIG9mIHRoZSB0cmVlLCB0aGUgbGFiZWwgc2hvd24gaW4gdGhlIGRpYWxvZyBvciBpbiB0aGUgdGFiIGlzIHRoZSBsYWJlbCBvZiB0aGUgbm9kZSB0aGF0XG4gICAgICAgKiAgaXMgc3RvcmVkIGluIG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuY29udGV4dCAqL1xuICAgICAgY29uc3QgY29udGV4dCA9IG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuY29udGV4dDtcbiAgICAgIGxldCBsYWJlbCA9IGNvbnRleHQ/LmxhYmVsIHx8IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0TGFiZWxGcm9tRGF0YShkYXRhKTtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IChpbmRleCArIDEpO1xuICAgICAgbGFiZWwgPSBsYWJlbC5sZW5ndGggPyBsYWJlbCA6IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0TGFiZWxGcm9tVXJsUGFyYW1zKHRoaXMuZGF0YVtpbmRleF0ucGFyYW1zKTtcbiAgICAgIHRoaXMuZGF0YVtpbmRleF0ubGFiZWwgPSBsYWJlbDtcbiAgICAgIHRoaXMuZGF0YVtpbmRleF0uaW5zZXJ0aW9uTW9kZSA9IGluc2VydGlvbk1vZGU7XG4gICAgICBpZiAoT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmRhdGFbaW5kZXhdLmZvcm1EYXRhQnlMYWJlbENvbHVtbnMgPSB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldEZvcm1EYXRhRnJvbUxhYmVsQ29sdW1ucyhkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVBY3RpdmVEYXRhKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhW2luZGV4XSkpIHtcbiAgICAgIHRoaXMuZGF0YVtpbmRleF0gPSBPYmplY3QuYXNzaWduKHRoaXMuZGF0YVtpbmRleF0sIGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGFUb1N0b3JlKCk6IGFueSB7XG4gICAgLy8gSXNzdWUgIzg4NCBhdm9pZCBzdG9yaW5nIGluc2VydGlvbk1vZGUgdGFic1xuICAgIGNvbnN0IHRhYnNEYXRhID0gdGhpcy5kYXRhXG4gICAgICAuZmlsdGVyKChkYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkgPT4gIWRhdGEuaW5zZXJ0aW9uTW9kZSlcbiAgICAgIC5tYXAoKGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKSA9PiAoe1xuICAgICAgICBwYXJhbXM6IGRhdGEucGFyYW1zLFxuICAgICAgICBxdWVyeVBhcmFtczogZGF0YS5xdWVyeVBhcmFtcyxcbiAgICAgICAgdXJsU2VnbWVudHM6IGRhdGEudXJsU2VnbWVudHMsXG4gICAgICAgIHVybDogZGF0YS51cmwsXG4gICAgICAgIGxhYmVsOiBkYXRhLmxhYmVsLFxuICAgICAgICBpbnNlcnRpb25Nb2RlOiBkYXRhLmluc2VydGlvbk1vZGVcbiAgICAgIH0pKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGFic0RhdGE6IHRhYnNEYXRhLFxuICAgICAgc2VsZWN0ZWRJbmRleDogdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4XG4gICAgfTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUpIHx8ICFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnRhYnNEYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElzc3VlICM4ODQgZW5zdXJpbmcgdGhhdCBhIGluc2VydGlvbiBtb2RlIHRhYiB0aGF0IG1pZ2h0IGJlIHByZXZpb3VzbHkgc3RvcmVkIHdvbnQgYmUgY3JlYXRlZFxuICAgIHRoaXMuc3RhdGUudGFic0RhdGEgPSB0aGlzLnN0YXRlLnRhYnNEYXRhLmZpbHRlcih0YWJEYXRhID0+ICF0YWJEYXRhLmluc2VydGlvbk1vZGUpXG5cbiAgICBpZiAodGhpcy5zdGF0ZS50YWJzRGF0YS5sZW5ndGggPj0gMSAmJiAodGhpcy5zdGF0ZS50YWJzRGF0YVswXS51cmwgfHwgJycpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcubmV4dCh0cnVlKTtcblxuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gICAgICBmcm9tKHRoaXMuc3RhdGUudGFic0RhdGEpLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCh0YWIgPT4gb2YodGFiKS5waXBlKGRlbGF5KDEwMCkpKVxuICAgICAgKS5zdWJzY3JpYmUoKHRhYikgPT4ge1xuICAgICAgICBjb25zdCBleHRyYXMgPSB7fVxuICAgICAgICBleHRyYXNbJ3JlbGF0aXZlVG8nXSA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gdGFiLnF1ZXJ5UGFyYW1zO1xuICAgICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXVtDb2Rlcy5JTlNFUlRJT05fTU9ERV0gPSB0YWIuaW5zZXJ0aW9uTW9kZTtcblxuICAgICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuc2V0QXNBY3RpdmVGb3JtTGF5b3V0TWFuYWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIHpvbmUucnVuKCgpID0+XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RhYi51cmxdLCBleHRyYXMpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLnNob3dMb2FkaW5nLm5leHQoZmFsc2UpKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd0xvYWRpbmcubmV4dCh0cnVlKSlcbiAgICAgICAgKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZURldGFpbENvbXBvbmVudChjb21wb25lbnQ6IGFueSwgcGFyYW1zT2JqOiBhbnkpIHtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zT2JqLnBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXNPYmoucXVlcnlQYXJhbXMsXG4gICAgICB1cmxTZWdtZW50czogcGFyYW1zT2JqLnVybFNlZ21lbnRzLFxuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICB1cmw6IHBhcmFtc09iai51cmwsXG4gICAgICBpZDogVXRpbC5yYW5kb21OdW1iZXIoKS50b1N0cmluZygpLFxuICAgICAgbGFiZWw6IHBhcmFtc09iai5sYWJlbCxcbiAgICAgIGlubmVyRm9ybXNJbmZvOiB7fVxuICAgIH07XG4gICAgcmV0dXJuIG5ld0RldGFpbENvbXA7XG4gIH1cblxuICBnZXRQYXJhbXMoKTogYW55IHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhWzBdKSA/IHRoaXMuZGF0YVswXS5wYXJhbXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpc01haW5Db21wb25lbnQoY29tcDogSUxheW91dE1hbmFnZXJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaXJzdFRhYiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtdGFiLWJvZHknKVswXTtcbiAgICByZXR1cm4gZmlyc3RUYWIgJiYgY29tcC5lbGVtZW50UmVmICYmIGZpcnN0VGFiLmNvbnRhaW5zKGNvbXAuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG9wZW5EZXRhaWwoZGV0YWlsOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIHRoaXMuYWRkVGFiKGRldGFpbCk7XG4gIH1cblxuICBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucykge1xuICAgIHRoaXMuY2xvc2VUYWIodGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMSwgb3B0aW9ucyk7XG4gIH1cblxuICBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgLy8gVGhlIG1heCB0YWJzIG51bWJlciBpbmNsdWRlcyB0aGUgbWFpbiB0YWJcbiAgICBjb25zdCBtYXhSZWFjaGVkID0gKHRoaXMuZGF0YS5sZW5ndGggKyAxKSA+PSB0aGlzLm1heFRhYnM7XG4gICAgaWYgKG1heFJlYWNoZWQpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKCdJTkZPJywgJ0xBWU9VVF9NQU5BTkdFUi5NQVhfVEFCU19OVU1CRVJfUkVBQ0hFRCcpXG4gICAgfVxuICAgIHJldHVybiAhbWF4UmVhY2hlZDtcbiAgfVxuXG4gIGlzVGFiRGF0YU1vZGlmaWVkKHRhYkRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRhYkRhdGEuaW5uZXJGb3Jtc0luZm8pLnNvbWUoZm9ybUF0dHIgPT4gdGFiRGF0YS5pbm5lckZvcm1zSW5mb1tmb3JtQXR0cl0ubW9kaWZpZWQpO1xuICB9XG5cbiAgY2xvc2VEZXRhaWxzKGRldGFpbHNLZXlzRGF0YTogYW55W10gPSBbXSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpIHtcbiAgICBkZXRhaWxzS2V5c0RhdGEuZm9yRWFjaCgoZGV0YWlsRGF0YSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KChpdGVtKSA9PiBVdGlsLmlzRXF1aXZhbGVudChkZXRhaWxEYXRhLCBpdGVtLnBhcmFtcyB8fCB7fSkpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmNsb3NlVGFiKGluZGV4LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV0gPyB0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdLmlkIDogdGhpcy5kYXRhLmxlbmd0aC50b1N0cmluZygpO1xuICB9XG59XG4iLCI8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgb1RhYkdyb3VwPVwib250aW1pemVcIiBmeEZpbGwgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiU2VsZWN0Q2hhbmdlKCRldmVudClcIiBbY29sb3JdPVwiY29sb3JcIlxuICBbYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRDb2xvclwiIFtoZWFkZXJQb3NpdGlvbl09XCJoZWFkZXJQb3NpdGlvblwiIFtALmRpc2FibGVkXT1cImRpc2FibGVBbmltYXRpb25cIiBbbWF0LXN0cmV0Y2gtdGFic109XCJzdHJldGNoVGFic1wiPlxuICA8bWF0LXRhYiBsYWJlbD1cInt7IG1haW5UYWJUaXRsZSB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvbWF0LXRhYj5cbiAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYkRhdGEgb2YgZGF0YTsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0YWItbGFiZWxcIiBbY2xhc3MubW9kaWZpZWRdPVwiaXNUYWJEYXRhTW9kaWZpZWQodGFiRGF0YSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImljb24gJiYgaXNJY29uUG9zaXRpb25MZWZ0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlTWF0VGFiTGFiZWwgJiYgdGFiRGF0YS5mb3JtRGF0YUJ5TGFiZWxDb2x1bW5zICYmICF0YWJEYXRhLmluc2VydGlvbk1vZGUgXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlTWF0VGFiTGFiZWw7Y29udGV4dDp7JGltcGxpY2l0OnRhYkRhdGEuZm9ybURhdGFCeUxhYmVsQ29sdW1uc31cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGVNYXRUYWJMYWJlbCB8fCB0YWJEYXRhLmluc2VydGlvbk1vZGVcIj5cbiAgICAgICAgICB7eyB0YWJEYXRhLmxhYmVsIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvbiAmJiAhaXNJY29uUG9zaXRpb25MZWZ0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJncmFkaWVudC1sYXllclwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VUYWIoaSlcIiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIG8tZm9ybS1sYXlvdXQtbWFuYWdlci1jb250ZW50IFtpbmRleF09XCJpXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9tYXQtdGFiPlxuPC9tYXQtdGFiLWdyb3VwPlxuPGRpdiAqbmdJZj1cInNob3dMb2FkaW5nIHwgYXN5bmNcIiBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBzdHJva2VXaWR0aD1cIjNcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuPC9kaXY+XG4iXX0=
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC90YWJncm91cC9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3RhYmdyb3VwL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXFCLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFHNUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJ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LEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1RyxDQUFDOzswSEEvV1UsNEJBQTRCLG9HQTZCN0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDOzhHQTdCdkMsNEJBQTRCLG1kQVN6QixrQ0FBa0MsZ0RDaEVsRCxtckRBK0JBO0FEOEJFO0lBQUMscUJBQXFCLEVBQUU7O2lFQUNZOzRGQVB6Qiw0QkFBNEI7a0JBWHhDLFNBQVM7K0JBQ0Usd0JBQXdCLFVBQzFCLHFDQUFxQyxXQUNwQyxzQ0FBc0MsaUJBR2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osZ0NBQWdDLEVBQUUsTUFBTTtxQkFDekM7OzBCQStCRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs0Q0F0QjNDLFdBQVcsTUFDSyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQzZCLGNBQWM7c0JBQS9ELFlBQVk7dUJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50LCBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbmNhdE1hcCwgZGVsYXksIGZyb20sIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucywgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9mb3JtLWxheW91dC1kZXRhaWwtY29tcG9uZW50LWRhdGEudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4uL28tZm9ybS1sYXlvdXQtbWFuYWdlci1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfVEFCR1JPVVAgPSBbXG4gICd0aXRsZScsXG4gICdvcHRpb25zJyxcbiAgJ3N0cmV0Y2hUYWJzOiBzdHJldGNoLXRhYnMnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fRk9STV9MQVlPVVRfVEFCR1JPVVAgPSBbXG4gICdvbk1haW5UYWJTZWxlY3RlZCcsXG4gICdvblNlbGVjdGVkVGFiQ2hhbmdlJyxcbiAgJ29uQ2xvc2VUYWInXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWZvcm0tbGF5b3V0LXRhYmdyb3VwJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX1RBQkdST1VQLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9UQUJHUk9VUCxcbiAgdGVtcGxhdGVVcmw6ICcuL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZm9ybS1sYXlvdXQtdGFiZ3JvdXBdJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXRUYWJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9Gb3JtTGF5b3V0TWFuYWdlck1vZGUsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhW10gPSBbXTtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBvcHRpb25zOiBhbnk7XG4gIHB1YmxpYyBzaG93TG9hZGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHN0cmV0Y2hUYWJzOiBib29sZWFuID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJykgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuICBAVmlld0NoaWxkcmVuKE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUpIHRhYnNEaXJlY3RpdmVzOiBRdWVyeUxpc3Q8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZT47XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcblxuICBwdWJsaWMgb25NYWluVGFiU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvblNlbGVjdGVkVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25DbG9zZVRhYjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgcHJldmlvdXNTZWxlY3RlZEluZGV4OiBudW1iZXI7XG5cbiAgcHVibGljIHVwZGF0ZVRhYkNvbXBvbmVudHNTdGF0ZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHVibGljIHRhYnNNb2RpZmljYXRpb25zQ2FjaGU6IGFueVtdID0gW107XG4gIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBsb2NhdGlvbjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSkpIHB1YmxpYyBmb3JtTGF5b3V0TWFuYWdlcjogT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZVxuICApIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSBpbmplY3Rvci5nZXQoRGlhbG9nU2VydmljZSk7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIHRoaXMuYWN0Um91dGUgPSB0aGlzLmluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSk7XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuc3RhdGU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50YWJzRGlyZWN0aXZlcy5jaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2VzID0+IHtcbiAgICAgIGlmICh0aGlzLnRhYnNEaXJlY3RpdmVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB0YWJJdGVtID0gdGhpcy50YWJzRGlyZWN0aXZlcy5sYXN0O1xuICAgICAgICBjb25zdCB0YWJEYXRhID0gdGhpcy5kYXRhW3RhYkl0ZW0uaW5kZXhdO1xuICAgICAgICBpZiAodGFiRGF0YSAmJiAhdGFiRGF0YS5yZW5kZXJlZCkge1xuICAgICAgICAgIHRoaXMuY3JlYXRlVGFiQ29tcG9uZW50KHRhYkRhdGEsIHRhYkl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtYWluVGFiVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMub3B0aW9ucy50aXRsZSB8fCB0aGlzLnRpdGxlIHx8ICdMQVlPVVRfTUFOQU5HRVIuTUFJTl9UQUJfTEFCRUwnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZUFuaW1hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5kaXNhYmxlQW5pbWF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBoZWFkZXJQb3NpdGlvbigpIHtcbiAgICBsZXQgaGVhZGVyUG9zaXRpb247XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaGVhZGVyUG9zaXRpb24pIHtcbiAgICAgIGhlYWRlclBvc2l0aW9uID0gdGhpcy5vcHRpb25zLmhlYWRlclBvc2l0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyUG9zaXRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbG9yKCkge1xuICAgIGxldCBjb2xvcjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5jb2xvcikge1xuICAgICAgY29sb3IgPSB0aGlzLm9wdGlvbnMuY29sb3I7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYmFja2dyb3VuZENvbG9yKCkge1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yO1xuICAgIH1cbiAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZW1wbGF0ZU1hdFRhYkxhYmVsKCkge1xuICAgIGxldCB0ZW1wbGF0ZU1hdFRhYkxhYmVsO1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLnRlbXBsYXRlTWF0VGFiTGFiZWwpIHtcbiAgICAgIHRlbXBsYXRlTWF0VGFiTGFiZWwgPSB0aGlzLm9wdGlvbnMudGVtcGxhdGVNYXRUYWJMYWJlbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlTWF0VGFiTGFiZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGljb24oKSB7XG4gICAgbGV0IGljb247XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaWNvbikge1xuICAgICAgaWNvbiA9IHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cbiAgICByZXR1cm4gaWNvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNJY29uUG9zaXRpb25MZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnO1xuICB9XG5cbiAgZ2V0IG1heFRhYnMoKTogbnVtYmVyIHtcbiAgICBsZXQgbWF4VGFicztcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5tYXhUYWJzKSB7XG4gICAgICBtYXhUYWJzID0gdGhpcy5vcHRpb25zLm1heFRhYnM7XG4gICAgfVxuICAgIHJldHVybiBtYXhUYWJzO1xuICB9XG5cbiAgYWRkVGFiKGNvbXBEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIGxldCBhZGROZXdDb21wID0gdHJ1ZTtcbiAgICBpZiAoY29tcERhdGEuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0aW5nSW5zZXJ0aW9uVGFiID0gVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhLmZpbmQoaXRlbSA9PiBpdGVtLmluc2VydGlvbk1vZGUpKTtcbiAgICAgIGFkZE5ld0NvbXAgPSAhYWxyZWFkeUV4aXN0aW5nSW5zZXJ0aW9uVGFiO1xuICAgIH1cbiAgICBjb25zdCBuZXdDb21wUGFyYW1zID0gY29tcERhdGEucGFyYW1zO1xuICAgIGlmIChhZGROZXdDb21wKSB7XG4gICAgICB0aGlzLmRhdGEuZm9yRWFjaChjb21wID0+IHtcbiAgICAgICAgY29uc3QgY3VyclBhcmFtcyA9IGNvbXAucGFyYW1zIHx8IHt9O1xuICAgICAgICBsZXQgc29tZURpZmZQYXJhbXMgPSB0cnVlO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoY3VyclBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNvbWVEaWZmUGFyYW1zID0gT2JqZWN0LmtleXMoY3VyclBhcmFtcykuc29tZShrZXkgPT4gY3VyclBhcmFtc1trZXldICE9IG5ld0NvbXBQYXJhbXNba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkTmV3Q29tcCA9IGFkZE5ld0NvbXAgJiYgc29tZURpZmZQYXJhbXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWRkTmV3Q29tcCkge1xuICAgICAgdGhpcy5kYXRhLnB1c2goY29tcERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZFRhYihjb21wRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkVGFiKGNvbXBEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIGxldCBjb21wSW5kZXggPSAtMTtcbiAgICBjb25zdCBjb21wUGFyYW1zID0gY29tcERhdGEucGFyYW1zO1xuICAgIHRoaXMuZGF0YS5mb3JFYWNoKChjb21wLCBpKSA9PiB7XG4gICAgICBjb25zdCBjdXJyUGFyYW1zID0gY29tcC5wYXJhbXMgfHwge307XG4gICAgICBjb25zdCBzYW1lUGFyYW1zID0gVXRpbC5pc0VxdWl2YWxlbnQoY3VyclBhcmFtcywgY29tcFBhcmFtcyk7XG4gICAgICBpZiAoc2FtZVBhcmFtcykge1xuICAgICAgICBjb21wSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGNvbXBJbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSAoY29tcEluZGV4ICsgMSk7XG4gICAgfVxuICB9XG5cbiAgb25UYWJTZWxlY3RDaGFuZ2UoYXJnOiBNYXRUYWJDaGFuZ2VFdmVudCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyICYmIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9PT0gMCkge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci51cGRhdGVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy5vbk1haW5UYWJTZWxlY3RlZC5lbWl0KCk7XG4gICAgfVxuICAgIGNvbnN0IGlzTG9hZGluZyA9IHRoaXMuc2hvd0xvYWRpbmcuZ2V0VmFsdWUoKTtcbiAgICBpZiAoaXNMb2FkaW5nICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUudGFic0RhdGEpICYmXG4gICAgICBhcmcuaW5kZXggPT09IHRoaXMuc3RhdGUudGFic0RhdGEubGVuZ3RoIC0gMSkge1xuICAgICAgLy8gdGhpcyBpcyBvbmx5IHRyaWdnZXJlZCBvbmNlIHdoZW4gYWxsIHRhYnMgYXJlIGxvYWRlZFxuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEluZGV4O1xuICAgICAgdGhpcy5zaG93TG9hZGluZy5uZXh0KGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKCFpc0xvYWRpbmcpIHtcbiAgICAgIHRoaXMub25TZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHtcbiAgICAgICAgZGF0YTogdGhpcy5kYXRhW3RoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAtIDFdLFxuICAgICAgICBpbmRleDogdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4LFxuICAgICAgICBwcmV2aW91c0luZGV4OiB0aGlzLnByZXZpb3VzU2VsZWN0ZWRJbmRleFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZEluZGV4ID0gdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4O1xuXG4gIH1cblxuICBjbG9zZVRhYihpbmRleDogbnVtYmVyLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucykge1xuICAgIGlmICghdGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWJEYXRhID0gdGhpcy5kYXRhW2luZGV4XTtcbiAgICBjb25zdCBvbkNsb3NlVGFiQWNjZXB0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKG9uQ2xvc2VUYWJBY2NlcHRlZC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMub25DbG9zZVRhYi5lbWl0KHtcbiAgICAgICAgICBkYXRhOiB0YWJEYXRhLFxuICAgICAgICAgIGluZGV4OiBpbmRleCArIDFcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRhYkRhdGEpICYmIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuaGFzVG9Db25maXJtRXhpdCh0YWJEYXRhLCBvcHRpb25zKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnTUVTU0FHRVMuRk9STV9DSEFOR0VTX1dJTExfQkVfTE9TVCcpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgb25DbG9zZVRhYkFjY2VwdGVkLmVtaXQocmVzKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbkNsb3NlVGFiQWNjZXB0ZWQuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVUYWJDb21wb25lbnQodGFiRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEsIGNvbnRlbnQ6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0YWJEYXRhLmNvbXBvbmVudDtcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmID0gY29udGVudC52aWV3Q29udGFpbmVyUmVmO1xuICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIHRhYkRhdGEucmVuZGVyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0Rm9ybUNhY2hlRGF0YSgpOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5sZW5ndGggPiAwID8gdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFJvdXRlT2ZBY3RpdmVJdGVtKCk6IGFueVtdIHtcbiAgICBjb25zdCByb3V0ZSA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA+IDApIHtcbiAgICAgIGNvbnN0IHVybFNlZ21lbnRzID0gdGhpcy5kYXRhW3RoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAtIDFdLnVybFNlZ21lbnRzIHx8IFtdO1xuICAgICAgdXJsU2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xuICAgICAgICByb3V0ZS5wdXNoKHNlZ21lbnQucGF0aCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByb3V0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0cjogc3RyaW5nLCBtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID4gMCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5kYXRhW3RoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAtIDFdO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHNlbGVjdGVkRGF0YSkpIHtcbiAgICAgICAgc2VsZWN0ZWREYXRhLmlubmVyRm9ybXNJbmZvW2Zvcm1BdHRyXSA9IHtcbiAgICAgICAgICBtb2RpZmllZDogbW9kaWZpZWQsXG4gICAgICAgICAgY29uZmlybU9uRXhpdDogY29uZmlybUV4aXRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVOYXZpZ2F0aW9uKGRhdGE6IGFueSwga2V5c1ZhbHVlczogYW55LCBpbnNlcnRpb25Nb2RlPzogYm9vbGVhbikge1xuICAgIGxldCBpbmRleDtcbiAgICBpZiAoaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgaW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uaW5zZXJ0aW9uTW9kZSAhPT0gZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gT2JqZWN0LmtleXMoa2V5c1ZhbHVlcykuZXZlcnkoa2V5ID0+IGtleXNWYWx1ZXNba2V5XSA9PSBpdGVtLnBhcmFtc1trZXldKSk7XG4gICAgfVxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAvKiogSW4gY2FzZSBvZiB0aGUgdHJlZSwgdGhlIGxhYmVsIHNob3duIGluIHRoZSBkaWFsb2cgb3IgaW4gdGhlIHRhYiBpcyB0aGUgbGFiZWwgb2YgdGhlIG5vZGUgdGhhdFxuICAgICAgICogIGlzIHN0b3JlZCBpbiBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmNvbnRleHQgKi9cbiAgICAgIGNvbnN0IGNvbnRleHQgPSBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmNvbnRleHQ7XG4gICAgICBsZXQgbGFiZWwgPSBjb250ZXh0Py5sYWJlbCB8fCB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldExhYmVsRnJvbURhdGEoZGF0YSk7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSAoaW5kZXggKyAxKTtcbiAgICAgIGxhYmVsID0gbGFiZWwubGVuZ3RoID8gbGFiZWwgOiB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldExhYmVsRnJvbVVybFBhcmFtcyh0aGlzLmRhdGFbaW5kZXhdLnBhcmFtcyk7XG4gICAgICB0aGlzLmRhdGFbaW5kZXhdLmxhYmVsID0gbGFiZWw7XG4gICAgICB0aGlzLmRhdGFbaW5kZXhdLmluc2VydGlvbk1vZGUgPSBpbnNlcnRpb25Nb2RlO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5kYXRhW2luZGV4XS5mb3JtRGF0YUJ5TGFiZWxDb2x1bW5zID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRGb3JtRGF0YUZyb21MYWJlbENvbHVtbnMoZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQWN0aXZlRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAtIDE7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuZGF0YVtpbmRleF0pKSB7XG4gICAgICB0aGlzLmRhdGFbaW5kZXhdID0gT2JqZWN0LmFzc2lnbih0aGlzLmRhdGFbaW5kZXhdLCBkYXRhKTtcbiAgICB9XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIC8vIElzc3VlICM4ODQgYXZvaWQgc3RvcmluZyBpbnNlcnRpb25Nb2RlIHRhYnNcbiAgICBjb25zdCB0YWJzRGF0YSA9IHRoaXMuZGF0YVxuICAgICAgLmZpbHRlcigoZGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpID0+ICFkYXRhLmluc2VydGlvbk1vZGUpXG4gICAgICAubWFwKChkYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkgPT4gKHtcbiAgICAgICAgcGFyYW1zOiBkYXRhLnBhcmFtcyxcbiAgICAgICAgcXVlcnlQYXJhbXM6IGRhdGEucXVlcnlQYXJhbXMsXG4gICAgICAgIHVybFNlZ21lbnRzOiBkYXRhLnVybFNlZ21lbnRzLFxuICAgICAgICB1cmw6IGRhdGEudXJsLFxuICAgICAgICBsYWJlbDogZGF0YS5sYWJlbCxcbiAgICAgICAgaW5zZXJ0aW9uTW9kZTogZGF0YS5pbnNlcnRpb25Nb2RlXG4gICAgICB9KSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhYnNEYXRhOiB0YWJzRGF0YSxcbiAgICAgIHNlbGVjdGVkSW5kZXg6IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleFxuICAgIH07XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlKSB8fCAhVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS50YWJzRGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjODg0IGVuc3VyaW5nIHRoYXQgYSBpbnNlcnRpb24gbW9kZSB0YWIgdGhhdCBtaWdodCBiZSBwcmV2aW91c2x5IHN0b3JlZCB3b250IGJlIGNyZWF0ZWRcbiAgICB0aGlzLnN0YXRlLnRhYnNEYXRhID0gdGhpcy5zdGF0ZS50YWJzRGF0YS5maWx0ZXIodGFiRGF0YSA9PiAhdGFiRGF0YS5pbnNlcnRpb25Nb2RlKVxuXG4gICAgaWYgKHRoaXMuc3RhdGUudGFic0RhdGEubGVuZ3RoID49IDEgJiYgKHRoaXMuc3RhdGUudGFic0RhdGFbMF0udXJsIHx8ICcnKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNob3dMb2FkaW5nLm5leHQodHJ1ZSk7XG5cbiAgICAgIGNvbnN0IHpvbmUgPSB0aGlzLmluamVjdG9yLmdldChOZ1pvbmUpO1xuICAgICAgZnJvbSh0aGlzLnN0YXRlLnRhYnNEYXRhKS5waXBlKFxuICAgICAgICBjb25jYXRNYXAodGFiID0+IG9mKHRhYikucGlwZShkZWxheSgxMDApKSlcbiAgICAgICkuc3Vic2NyaWJlKCh0YWIpID0+IHtcbiAgICAgICAgY29uc3QgZXh0cmFzID0ge31cbiAgICAgICAgZXh0cmFzWydyZWxhdGl2ZVRvJ10gPSB0aGlzLmFjdFJvdXRlO1xuICAgICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IHRhYi5xdWVyeVBhcmFtcztcbiAgICAgICAgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU11bQ29kZXMuSU5TRVJUSU9OX01PREVdID0gdGFiLmluc2VydGlvbk1vZGU7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB6b25lLnJ1bigoKSA9PlxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0YWIudXJsXSwgZXh0cmFzKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5zaG93TG9hZGluZy5uZXh0KGZhbHNlKSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLnNob3dMb2FkaW5nLm5leHQodHJ1ZSkpXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhcmFtcygpOiBhbnkge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGFbMF0pID8gdGhpcy5kYXRhWzBdLnBhcmFtcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpcnN0VGFiID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hdC10YWItYm9keScpWzBdO1xuICAgIHJldHVybiBmaXJzdFRhYiAmJiBjb21wLmVsZW1lbnRSZWYgJiYgZmlyc3RUYWIuY29udGFpbnMoY29tcC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgb3BlbkRldGFpbChkZXRhaWw6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKSB7XG4gICAgdGhpcy5hZGRUYWIoZGV0YWlsKTtcbiAgfVxuXG4gIGNsb3NlRGV0YWlsKG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKSB7XG4gICAgdGhpcy5jbG9zZVRhYih0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggLSAxLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNhbkFkZERldGFpbENvbXBvbmVudCgpOiBib29sZWFuIHtcbiAgICAvLyBUaGUgbWF4IHRhYnMgbnVtYmVyIGluY2x1ZGVzIHRoZSBtYWluIHRhYlxuICAgIGNvbnN0IG1heFJlYWNoZWQgPSAodGhpcy5kYXRhLmxlbmd0aCArIDEpID49IHRoaXMubWF4VGFicztcbiAgICBpZiAobWF4UmVhY2hlZCkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oJ0lORk8nLCAnTEFZT1VUX01BTkFOR0VSLk1BWF9UQUJTX05VTUJFUl9SRUFDSEVEJylcbiAgICB9XG4gICAgcmV0dXJuICFtYXhSZWFjaGVkO1xuICB9XG5cbiAgaXNUYWJEYXRhTW9kaWZpZWQodGFiRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGFiRGF0YS5pbm5lckZvcm1zSW5mbykuc29tZShmb3JtQXR0ciA9PiB0YWJEYXRhLmlubmVyRm9ybXNJbmZvW2Zvcm1BdHRyXS5tb2RpZmllZCk7XG4gIH1cblxuICBjbG9zZURldGFpbHMoZGV0YWlsc0tleXNEYXRhOiBhbnlbXSA9IFtdLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucykge1xuICAgIGRldGFpbHNLZXlzRGF0YS5mb3JFYWNoKChkZXRhaWxEYXRhKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgoKGl0ZW0pID0+IFV0aWwuaXNFcXVpdmFsZW50KGRldGFpbERhdGEsIGl0ZW0ucGFyYW1zIHx8IHt9KSk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMuY2xvc2VUYWIoaW5kZXgsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SWRPZkFjdGl2ZUl0ZW0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXSA/IHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV0uaWQgOiB0aGlzLmRhdGEubGVuZ3RoLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBvVGFiR3JvdXA9XCJvbnRpbWl6ZVwiIGZ4RmlsbCAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJTZWxlY3RDaGFuZ2UoJGV2ZW50KVwiIFtjb2xvcl09XCJjb2xvclwiXG4gIFtiYWNrZ3JvdW5kQ29sb3JdPVwiYmFja2dyb3VuZENvbG9yXCIgW2hlYWRlclBvc2l0aW9uXT1cImhlYWRlclBvc2l0aW9uXCIgW0AuZGlzYWJsZWRdPVwiZGlzYWJsZUFuaW1hdGlvblwiIFttYXQtc3RyZXRjaC10YWJzXT1cInN0cmV0Y2hUYWJzXCI+XG4gIDxtYXQtdGFiIGxhYmVsPVwie3sgbWFpblRhYlRpdGxlIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtdGFiPlxuICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiRGF0YSBvZiBkYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICA8c3BhbiBjbGFzcz1cInRhYi1sYWJlbFwiIFtjbGFzcy5tb2RpZmllZF09XCJpc1RhYkRhdGFNb2RpZmllZCh0YWJEYXRhKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvbiAmJiBpc0ljb25Qb3NpdGlvbkxlZnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+e3sgaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVNYXRUYWJMYWJlbCAmJiB0YWJEYXRhLmZvcm1EYXRhQnlMYWJlbENvbHVtbnMgJiYgIXRhYkRhdGEuaW5zZXJ0aW9uTW9kZSBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVNYXRUYWJMYWJlbDtjb250ZXh0OnskaW1wbGljaXQ6dGFiRGF0YS5mb3JtRGF0YUJ5TGFiZWxDb2x1bW5zfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZW1wbGF0ZU1hdFRhYkxhYmVsIHx8IHRhYkRhdGEuaW5zZXJ0aW9uTW9kZVwiPlxuICAgICAgICAgIHt7IHRhYkRhdGEubGFiZWwgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpY29uICYmICFpc0ljb25Qb3NpdGlvbkxlZnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+e3sgaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdyYWRpZW50LWxheWVyXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjbG9zZVRhYihpKVwiIHN2Z0ljb249XCJvbnRpbWl6ZTpjbG9zZVwiPjwvbWF0LWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbnRlbnQgW2luZGV4XT1cImlcIj48L25nLXRlbXBsYXRlPlxuICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG48ZGl2ICpuZ0lmPVwic2hvd0xvYWRpbmcgfCBhc3luY1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIHN0cm9rZVdpZHRoPVwiM1wiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG48L2Rpdj5cbiJdfQ==
@@ -2,6 +2,7 @@ export * from './app-layout/app-layout-header/o-app-layout-header.component';
2
2
  export * from './app-layout/app-layout-sidenav/o-app-layout-sidenav.component';
3
3
  export * from './app-layout/o-app-layout.component';
4
4
  export * from './app-layout/o-app-layout.module';
5
+ export * from './app-layout/o-app-layout-base.class';
5
6
  export * from './card-menu-layout/o-card-menu-layout.component';
6
7
  export * from './card-menu-layout/o-card-menu-layout.module';
7
8
  export * from './form-layout/dialog/o-form-layout-dialog.component';
@@ -10,8 +11,9 @@ export * from './form-layout/directives/o-form-layout-manager-content.directive'
10
11
  export * from './form-layout/guards/o-form-layout-can-activate-child.guard';
11
12
  export * from './form-layout/o-form-layout-manager.component';
12
13
  export * from './form-layout/o-form-layout-manager.module';
14
+ export * from './form-layout/o-form-layout-manager-base.class';
13
15
  export * from './form-layout/tabgroup/o-form-layout-tabgroup.component';
14
16
  export * from './form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive';
15
17
  export * from './form-layout/split-pane/o-form-layout-split-pane.component';
16
18
  export * from './form-layout/split-pane/options/o-form-layout-split-pane-options.directive';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMseUVBQXlFLENBQUM7QUFDeEYsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLDZFQUE2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHAtbGF5b3V0L2FwcC1sYXlvdXQtaGVhZGVyL28tYXBwLWxheW91dC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWxheW91dC9hcHAtbGF5b3V0LXNpZGVuYXYvby1hcHAtbGF5b3V0LXNpZGVuYXYuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWxheW91dC9vLWFwcC1sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWxheW91dC9vLWFwcC1sYXlvdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1tZW51LWxheW91dC9vLWNhcmQtbWVudS1sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1tZW51LWxheW91dC9vLWNhcmQtbWVudS1sYXlvdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbGF5b3V0L2RpYWxvZy9vcHRpb25zL28tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvZGlyZWN0aXZlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWxheW91dC9ndWFyZHMvby1mb3JtLWxheW91dC1jYW4tYWN0aXZhdGUtY2hpbGQuZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvby1mb3JtLWxheW91dC1tYW5hZ2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbGF5b3V0L3RhYmdyb3VwL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvdGFiZ3JvdXAvb3B0aW9ucy9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwLW9wdGlvbnMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvc3BsaXQtcGFuZS9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvc3BsaXQtcGFuZS9vcHRpb25zL28tZm9ybS1sYXlvdXQtc3BsaXQtcGFuZS1vcHRpb25zLmRpcmVjdGl2ZSc7XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyw2RUFBNkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwLWxheW91dC9hcHAtbGF5b3V0LWhlYWRlci9vLWFwcC1sYXlvdXQtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1sYXlvdXQvYXBwLWxheW91dC1zaWRlbmF2L28tYXBwLWxheW91dC1zaWRlbmF2LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1sYXlvdXQvby1hcHAtbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1sYXlvdXQvby1hcHAtbGF5b3V0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1sYXlvdXQvby1hcHAtbGF5b3V0LWJhc2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLW1lbnUtbGF5b3V0L28tY2FyZC1tZW51LWxheW91dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLW1lbnUtbGF5b3V0L28tY2FyZC1tZW51LWxheW91dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWxheW91dC9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvZGlhbG9nL29wdGlvbnMvby1mb3JtLWxheW91dC1kaWFsb2ctb3B0aW9ucy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWxheW91dC9kaXJlY3RpdmVzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbGF5b3V0L2d1YXJkcy9vLWZvcm0tbGF5b3V0LWNhbi1hY3RpdmF0ZS1jaGlsZC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1sYXlvdXQvby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWxheW91dC90YWJncm91cC9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbGF5b3V0L3RhYmdyb3VwL29wdGlvbnMvby1mb3JtLWxheW91dC10YWJncm91cC1vcHRpb25zLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbGF5b3V0L3NwbGl0LXBhbmUvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbGF5b3V0L3NwbGl0LXBhbmUvb3B0aW9ucy9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUtb3B0aW9ucy5kaXJlY3RpdmUnO1xuIl19
@@ -1,7 +1,7 @@
1
1
  import { Location } from '@angular/common';
2
2
  import { EventEmitter, Injectable, Injector } from '@angular/core';
3
3
  import { NavigationEnd, Router } from '@angular/router';
4
- import { ReplaySubject } from 'rxjs';
4
+ import { BehaviorSubject, ReplaySubject } from 'rxjs';
5
5
  import { filter, map } from 'rxjs/operators';
6
6
  import { ObservableWrapper } from '../util/async';
7
7
  import { Codes } from '../util/codes';
@@ -74,6 +74,8 @@ export class NavigationService {
74
74
  this._titleEmitter = new EventEmitter();
75
75
  this._visibleEmitter = new EventEmitter();
76
76
  this._sidenavEmitter = new EventEmitter();
77
+ this.isNavigationSubject = new BehaviorSubject(false);
78
+ this.isNavigation$ = this.isNavigationSubject.asObservable();
77
79
  this.router = this.injector.get(Router);
78
80
  this.oBreadcrumbService = this.injector.get(OBreadcrumbService);
79
81
  this.localStorageService = this.injector.get(LocalStorageService);
@@ -94,6 +96,12 @@ export class NavigationService {
94
96
  }
95
97
  });
96
98
  }
99
+ set isNavigating(value) {
100
+ this.isNavigationSubject.next(value);
101
+ }
102
+ get isNavigating() {
103
+ return this.isNavigationSubject.getValue();
104
+ }
97
105
  initialize() {
98
106
  this.router.events.pipe(filter(event => event instanceof NavigationEnd), map(() => this.router.routerState.root), map(route => {
99
107
  while (route.firstChild) {
@@ -299,4 +307,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
299
307
  providedIn: 'root'
300
308
  }]
301
309
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBMEIsYUFBYSxFQUFFLE1BQU0sRUFBYyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVU1RCxNQUFNLE9BQU8sZUFBZTtJQVMxQixZQUFZLEtBQVU7UUFDcEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7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O1FBQzFCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDeEQsWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsT0FBTyxLQUFLLEtBQUssWUFBWSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxNQUFNLENBQUM7UUFDWCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNoRTtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFvQjtRQUN2QyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7QUExUmEsd0NBQXNCLEdBQVcsYUFBYSxDQUFDOytHQUZsRCxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFVybFNlZ21lbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElMb2NhbFN0b3JhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xvY2FsLXN0b3JhZ2UtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBPQnJlYWRjcnVtYiB9IGZyb20gJy4uL3R5cGVzL28tYnJlYWRjcnVtYi1pdGVtLnR5cGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVdyYXBwZXIgfSBmcm9tICcuLi91dGlsL2FzeW5jJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPQnJlYWRjcnVtYlNlcnZpY2UgfSBmcm9tICcuL28tYnJlYWRjcnVtYi5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgT05hdmlnYXRpb25Sb3V0ZXMgPSB7XG4gIG1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudD86IGJvb2xlYW47XG4gIGlzTWFpbk5hdmlnYXRpb25Db21wb25lbnQ/OiBib29sZWFuO1xuICBkZXRhaWxGb3JtUm91dGU6IHN0cmluZztcbiAgZWRpdEZvcm1Sb3V0ZTogc3RyaW5nO1xuICBpbnNlcnRGb3JtUm91dGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBPTmF2aWdhdGlvbkl0ZW0ge1xuICB1cmw6IHN0cmluZztcbiAgcXVlcnlQYXJhbXM6IG9iamVjdDtcbiAgYWN0aXZlRm9ybU1vZGU6IHN0cmluZztcbiAgZm9ybVJvdXRlczogT05hdmlnYXRpb25Sb3V0ZXM7XG4gIGZvcm1MYXlvdXRSb3V0ZXM6IE9OYXZpZ2F0aW9uUm91dGVzO1xuICBrZXlzVmFsdWVzOiBhbnk7XG4gIHF1ZXJ5Q29uZmlndXJhdGlvbjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnVybCA9IHZhbHVlLnVybCA/IHZhbHVlLnVybCA6ICcnO1xuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB2YWx1ZVtDb2Rlcy5RVUVSWV9QQVJBTVNdID8gdmFsdWVbQ29kZXMuUVVFUllfUEFSQU1TXSA6IHt9O1xuICAgIHRoaXMuZm9ybVJvdXRlcyA9IHZhbHVlLmZvcm1Sb3V0ZXM7XG4gICAgdGhpcy5mb3JtTGF5b3V0Um91dGVzID0gdmFsdWUuZm9ybUxheW91dFJvdXRlcztcbiAgICB0aGlzLmFjdGl2ZUZvcm1Nb2RlID0gdmFsdWUuYWN0aXZlRm9ybU1vZGU7XG4gICAgdGhpcy5rZXlzVmFsdWVzID0gdmFsdWUua2V5c1ZhbHVlcztcbiAgICB0aGlzLnF1ZXJ5Q29uZmlndXJhdGlvbiA9IHZhbHVlLnF1ZXJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIGdldEFjdGl2ZU1vZGVQYXRoKCk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5hY3RpdmVGb3JtTW9kZSkpIHtcbiAgICAgIHJlc3VsdCA9ICh0aGlzLmZvcm1Sb3V0ZXMgfHwge30pW3RoaXMuYWN0aXZlRm9ybU1vZGVdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaXNJbnNlcnRGb3JtUm91dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRm9ybU1vZGUgPT09ICdpbnNlcnRGb3JtUm91dGUnO1xuICB9XG5cbiAgZ2V0SW5zZXJ0Rm9ybVJvdXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVzID0gdGhpcy5mb3JtUm91dGVzO1xuICAgIHJldHVybiByb3V0ZXMgPyAocm91dGVzLmluc2VydEZvcm1Sb3V0ZSB8fCBDb2Rlcy5ERUZBVUxUX0lOU0VSVF9ST1VURSkgOiBDb2Rlcy5ERUZBVUxUX0lOU0VSVF9ST1VURTtcbiAgfVxuXG4gIGdldEVkaXRGb3JtUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZXMgPSB0aGlzLmZvcm1Sb3V0ZXM7XG4gICAgcmV0dXJuIHJvdXRlcyA/IChyb3V0ZXMuZWRpdEZvcm1Sb3V0ZSB8fCBDb2Rlcy5ERUZBVUxUX0VESVRfUk9VVEUpIDogQ29kZXMuREVGQVVMVF9FRElUX1JPVVRFO1xuICB9XG5cbiAgZ2V0RGV0YWlsRm9ybVJvdXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVzID0gdGhpcy5mb3JtUm91dGVzO1xuICAgIHJldHVybiByb3V0ZXMgPyAocm91dGVzLmRldGFpbEZvcm1Sb3V0ZSB8fCBDb2Rlcy5ERUZBVUxUX0RFVEFJTF9ST1VURSkgOiBDb2Rlcy5ERUZBVUxUX0RFVEFJTF9ST1VURTtcbiAgfVxuXG4gIGlzTWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm1MYXlvdXRSb3V0ZXMpO1xuICB9XG5cbiAgaXNNYWluTmF2aWdhdGlvbkNvbXBvbmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5mb3JtUm91dGVzKSAmJiB0aGlzLmZvcm1Sb3V0ZXMuaXNNYWluTmF2aWdhdGlvbkNvbXBvbmVudDtcbiAgfVxuXG4gIGdldEZvcm1Sb3V0ZXMoKTogT05hdmlnYXRpb25Sb3V0ZXMge1xuICAgIHJldHVybiB0aGlzLmZvcm1Sb3V0ZXM7XG4gIH1cblxuICBzZXRGb3JtUm91dGVzKGFyZzogT05hdmlnYXRpb25Sb3V0ZXMpIHtcbiAgICBpZiAoYXJnICYmIGFyZy5tYWluRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dFJvdXRlcyA9IGFyZztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtUm91dGVzID0gYXJnO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUFjdGl2ZUZvcm1Nb2RlKCkge1xuICAgIHRoaXMuYWN0aXZlRm9ybU1vZGUgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuY29uc3QgTUFYSU1JVU1fTkFWSUdBVElPTl9IRUFQX1NJWkUgPSAxNTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IHtcblxuICBwdWJsaWMgc3RhdGljIE5BVklHQVRJT05fU1RPUkFHRV9LRVk6IHN0cmluZyA9ICduYXZfc2VydmljZSc7XG5cbiAgcHVibGljIGN1cnJlbnRUaXRsZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHByb3RlY3RlZCBuYXZpZ2F0aW9uSXRlbXM6IEFycmF5PE9OYXZpZ2F0aW9uSXRlbT4gPSBbXTtcbiAgcHJvdGVjdGVkIGFsbE5hdmlnYXRpb25JdGVtczogT05hdmlnYXRpb25JdGVtW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XG5cbiAgcHJvdGVjdGVkIG9CcmVhZGNydW1iU2VydmljZTogT0JyZWFkY3J1bWJTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZTtcbiAgcHJvdGVjdGVkIGxvY2F0aW9uOiBMb2NhdGlvbjtcblxuICBwdWJsaWMgbmF2aWdhdGlvbkV2ZW50cyQ6IFJlcGxheVN1YmplY3Q8QXJyYXk8T05hdmlnYXRpb25JdGVtPj4gPSBuZXcgUmVwbGF5U3ViamVjdDxBcnJheTxPTmF2aWdhdGlvbkl0ZW0+PigxKTtcblxuICBwcml2YXRlIF90aXRsZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIF92aXNpYmxlRW1pdHRlcjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBwcml2YXRlIF9zaWRlbmF2RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgdGhpcy5vQnJlYWRjcnVtYlNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPQnJlYWRjcnVtYlNlcnZpY2UpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuICAgIHRoaXMubG9jYXRpb24gPSB0aGlzLmluamVjdG9yLmdldChMb2NhdGlvbik7XG4gICAgdGhpcy5sb2NhdGlvbi5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzUm91dGUgPSB0aGlzLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgICBjb25zdCBxUGFyYW1zID0gT2JqZWN0LmtleXMocHJldmlvdXNSb3V0ZS5xdWVyeVBhcmFtcyk7XG4gICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgIHFQYXJhbXMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICBhcnIucHVzaChgJHtwfT0ke3ByZXZpb3VzUm91dGUucXVlcnlQYXJhbXNbcF19YCk7XG4gICAgICB9KTtcbiAgICAgIGxldCBmdWxsVXJsID0gYC8ke3ByZXZpb3VzUm91dGUudXJsfWA7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZnVsbFVybCA9IGAvJHtwcmV2aW91c1JvdXRlLnVybH0/JHthcnIuam9pbignJicpfWA7XG4gICAgICB9XG4gICAgICBpZiAoZnVsbFVybCA9PT0gdmFsLnVybCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5wb3AoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290KSxcbiAgICAgIG1hcChyb3V0ZSA9PiB7XG4gICAgICAgIHdoaWxlIChyb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKHJvdXRlID0+IHJvdXRlLm91dGxldCA9PT0gJ3ByaW1hcnknKVxuICAgICkuc3Vic2NyaWJlKHRoaXMucGFyc2VOYXZpZ2F0aW9uSXRlbXMuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCcmVhZGNydW1ic0ZvclJvdXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgY29uc3QgYnJlYWRjcnVtYnM6IE9CcmVhZGNydW1iW10gPSBbXTtcbiAgICBsZXQgdXJsID0gJyc7XG4gICAgbGV0IHJvdXRlID0gYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB3aGlsZSAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgaWYgKHJvdXRlLnVybC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcFJvdXRlID0gdGhpcy5wYXJzZVJvdXRlKHVybCwgcm91dGUpO1xuICAgICAgICBicmVhZGNydW1icy5wdXNoKHBSb3V0ZSk7XG4gICAgICAgIHVybCA9IHBSb3V0ZS5yb3V0ZTtcbiAgICAgIH1cbiAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkUm91dGUgPSB0aGlzLnBhcnNlUm91dGUodXJsLCByb3V0ZSk7XG4gICAgYnJlYWRjcnVtYnMucHVzaChwYXJzZWRSb3V0ZSk7XG5cbiAgICB0aGlzLm9CcmVhZGNydW1iU2VydmljZS5icmVhZGNydW1icyQubmV4dChicmVhZGNydW1icyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VSb3V0ZShyb3V0ZTogc3RyaW5nLCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9CcmVhZGNydW1iIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gYWN0aXZhdGVkUm91dGUudXJsLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBzZWdtZW50OiBVcmxTZWdtZW50ID0gYWN0aXZhdGVkUm91dGUudXJsW2ldO1xuICAgICAgaWYgKGxhYmVsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBsYWJlbCA9IGxhYmVsLmxlbmd0aCA+IDAgPyAoJy8nICsgc2VnbWVudC5wYXRoKSA6IHNlZ21lbnQucGF0aDtcbiAgICAgICAgcm91dGUgKz0gJy8nICsgc2VnbWVudC5wYXRoO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyByb3V0ZSwgbGFiZWwsIHF1ZXJ5UGFyYW1zOiBhY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcyB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlTmF2aWdhdGlvbkl0ZW1zKCkge1xuICAgIGNvbnN0IHN0b3JlZE5hdmlnYXRpb246IE9OYXZpZ2F0aW9uSXRlbVtdID0gdGhpcy5nZXRTdG9yZWREYXRhKCk7XG4gICAgY29uc3Qgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LnNuYXBzaG90O1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybC5zcGxpdCgnPycpWzBdO1xuICAgIHRoaXMuYnVpbGRCcmVhZGNydW1ic0ZvclJvdXRlKHJvdXRlKTtcbiAgICBjb25zdCBsYXN0U3RvcmVkOiBhbnkgPSBzdG9yZWROYXZpZ2F0aW9uW3N0b3JlZE5hdmlnYXRpb24ubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFsYXN0U3RvcmVkIHx8IGxhc3RTdG9yZWQudXJsICE9PSB1cmwpIHtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25JdGVtID0gbmV3IE9OYXZpZ2F0aW9uSXRlbSh7IHVybCwgcXVlcnlQYXJhbXM6IHJvdXRlLnF1ZXJ5UGFyYW1zIH0pO1xuXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5wdXNoKG5hdmlnYXRpb25JdGVtKTtcbiAgICAgIHRoaXMuc2V0TmF2aWdhdGlvbkl0ZW1zKHRoaXMubmF2aWdhdGlvbkl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9pZiBsYXN0U3RvcmVkLnVybCA9PSB1cmwsIGl0IGlzIGJlY2F1c2UgdGhlIHBhZ2UgaXMgcmVsb2FkZWRcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zID0gc3RvcmVkTmF2aWdhdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TmF2aWdhdGlvbkl0ZW1zKG5hdmlnYXRpb25JdGVtczogT05hdmlnYXRpb25JdGVtW10pIHtcbiAgICB0aGlzLm5hdmlnYXRpb25JdGVtcyA9IG5hdmlnYXRpb25JdGVtcztcbiAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbigpO1xuICAgIHRoaXMubmF2aWdhdGlvbkV2ZW50cyQubmV4dChuYXZpZ2F0aW9uSXRlbXMpO1xuICB9XG5cbiAgcHVibGljIGdldERhdGFUb1N0b3JlKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBOYXZpZ2F0aW9uU2VydmljZS5OQVZJR0FUSU9OX1NUT1JBR0VfS0VZO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3JlTmF2aWdhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRpdGxlID0gdGl0bGU7XG4gICAgdGhpcy5fZW1pdFRpdGxlQ2hhbmdlZCh0aGlzLmN1cnJlbnRUaXRsZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICB0aGlzLl9lbWl0VmlzaWJsZUNoYW5nZWQodGhpcy52aXNpYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuU2lkZW5hdigpIHtcbiAgICB0aGlzLl9lbWl0T3BlblNpZGVuYXYoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVNpZGVuYXYoKSB7XG4gICAgdGhpcy5fZW1pdENsb3NlU2lkZW5hdigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aXRsZSB1cGRhdGVzXG4gICAqL1xuICBwdWJsaWMgb25UaXRsZUNoYW5nZShvbk5leHQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogb2JqZWN0IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHRoaXMuX3RpdGxlRW1pdHRlciwgb25OZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBvblZpc2libGVDaGFuZ2Uob25OZXh0OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiBvYmplY3Qge1xuICAgIHJldHVybiBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5fdmlzaWJsZUVtaXR0ZXIsIG9uTmV4dCk7XG4gIH1cblxuICBwdWJsaWMgb25TaWRlbmF2Q2hhbmdlKG9uTmV4dDogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiBvYmplY3Qge1xuICAgIHJldHVybiBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5fc2lkZW5hdkVtaXR0ZXIsIG9uTmV4dCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0VGl0bGVDaGFuZ2VkKHRpdGxlKTogdm9pZCB7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5fdGl0bGVFbWl0dGVyLCB0aXRsZSk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0VmlzaWJsZUNoYW5nZWQodmlzaWJsZSk6IHZvaWQge1xuICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMuX3Zpc2libGVFbWl0dGVyLCB2aXNpYmxlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRPcGVuU2lkZW5hdigpIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLl9zaWRlbmF2RW1pdHRlciwgJ29wZW4nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRDbG9zZVNpZGVuYXYoKSB7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5fc2lkZW5hdkVtaXR0ZXIsICdjbG9zZScpO1xuICB9XG5cbiAgc3RvcmVGb3JtUm91dGVzKHJvdXRlczogT05hdmlnYXRpb25Sb3V0ZXMsIGFjdGl2ZU1vZGU6IHN0cmluZywgcXVlcnlDb25mPzogYW55KSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zW3RoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDFdLnNldEZvcm1Sb3V0ZXMocm91dGVzKTtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zW3RoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDFdLmFjdGl2ZUZvcm1Nb2RlID0gYWN0aXZlTW9kZTtcbiAgICAgIGlmIChxdWVyeUNvbmYpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXNbdGhpcy5uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoIC0gMV0ua2V5c1ZhbHVlcyA9IHF1ZXJ5Q29uZi5rZXlzVmFsdWVzO1xuICAgICAgICBkZWxldGUgcXVlcnlDb25mLmtleXNWYWx1ZXM7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zW3RoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDFdLnF1ZXJ5Q29uZmlndXJhdGlvbiA9IE9iamVjdC5rZXlzKHF1ZXJ5Q29uZikubGVuZ3RoID4gMCA/IHF1ZXJ5Q29uZiA6IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTdG9yZWREYXRhKCk6IGFueVtdIHtcbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldENvbXBvbmVudFN0b3JhZ2UodGhpcyk7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgT2JqZWN0LmtleXMoc3RvcmFnZURhdGEpLmZvckVhY2goa2V5ID0+IHJlc3VsdC5wdXNoKG5ldyBPTmF2aWdhdGlvbkl0ZW0oc3RvcmFnZURhdGFba2V5XSkpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0UHJldmlvdXNSb3V0ZURhdGEoKTogT05hdmlnYXRpb25JdGVtIHtcbiAgICBsZXQgcmVzdWx0OiBPTmF2aWdhdGlvbkl0ZW07XG4gICAgY29uc3QgbGVuID0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoO1xuICAgIGlmIChsZW4gPj0gMikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uYXZpZ2F0aW9uSXRlbXNbbGVuIC0gMl07XG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5mb3JtUm91dGVzICYmIHJlc3VsdC5mb3JtUm91dGVzLm1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCAmJiB0aGlzLm5hdmlnYXRpb25JdGVtc1tsZW4gLSAzXSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm5hdmlnYXRpb25JdGVtc1tsZW4gLSAzXTtcbiAgICAgICAgaWYgKHBhcmVudC5pc01haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtYWluIG5hdmlnYXRpb24gcm91dGUgZGF0YSB0aGF0IG1hdGNoZXMgdGhlIG1vc3Qgd2l0aCB0aGUgY3VycmVudCByb3V0ZVxuICAgKi9cbiAgZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk6IE9OYXZpZ2F0aW9uSXRlbSB7XG4gICAgY29uc3Qgcm91dGVNYXRjaGVzID0gW107XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLm5hdmlnYXRpb25JdGVtcy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICBsZXQgY3VycmVudExvY2F0aW9uID0gdGhpcy5sb2NhdGlvbi5wYXRoKCkuc3Vic3RyKDEpO1xuICAgICAgICBpZiAoY3VycmVudExvY2F0aW9uLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24uc3Vic3RyaW5nKDAsIGN1cnJlbnRMb2NhdGlvbi5pbmRleE9mKCc/JykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcGFyZSBjdXJyZW50IHJvdXRlIHdpdGggaXRlbSByb3V0ZSBhbmQgY291bnQgc2VnbWVudCBtYXRjaGVzXG4gICAgICAgIGNvbnN0IGFycjEgPSBpdGVtLnVybC5zdWJzdHIoMSkuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgYXJyMiA9IGN1cnJlbnRMb2NhdGlvbi5zcGxpdCgnLycpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDw9IGFycjEubGVuZ3RoICYmIGluZGV4IDw9IGFycjIubGVuZ3RoKSB7XG4gICAgICAgICAgcm91dGVNYXRjaGVzW2ldID0gKGFycjFbaW5kZXhdID09PSBhcnIyW2luZGV4XSkgPyByZXN1bHQrKyA6IHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG5cbiAgICBpZiAoIXJvdXRlTWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGxldCBtYXhNYXRjaGVzID0gcm91dGVNYXRjaGVzLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuICAgIGNvbnN0IGxhc3ROYXZJdGVtID0gdGhpcy5uYXZpZ2F0aW9uSXRlbXNbdGhpcy5uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFsYXN0TmF2SXRlbS5pc01haW5OYXZpZ2F0aW9uQ29tcG9uZW50KCkgJiYgIWxhc3ROYXZJdGVtLmlzTWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50KCkpIHtcbiAgICAgIG1heE1hdGNoZXMtLTtcbiAgICB9XG4gICAgbGV0IGl0ZW1SZXN1bHQgPSB2b2lkIDA7XG4gICAgd2hpbGUgKCFpdGVtUmVzdWx0ICYmIG1heE1hdGNoZXMgPj0gMCkge1xuICAgICAgaXRlbVJlc3VsdCA9IGl0ZW1zLmZpbmQoKGl0ZW0sIGkpID0+IChpdGVtLmlzTWFpbk5hdmlnYXRpb25Db21wb25lbnQoKSB8fCBpdGVtLmlzTWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50KCkpICYmIHJvdXRlTWF0Y2hlc1tpXSA9PT0gbWF4TWF0Y2hlcyk7XG4gICAgICBtYXhNYXRjaGVzLS07XG4gICAgfVxuICAgIHJldHVybiBpdGVtUmVzdWx0O1xuICB9XG5cbiAgcmVtb3ZlTGFzdEl0ZW0oKSB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMucG9wKCk7XG4gICAgdGhpcy5zdG9yZU5hdmlnYXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUxhc3RJdGVtc1VudGlsTWFpbigpIHtcbiAgICBjb25zdCBsYXN0TWFpbiA9IHRoaXMuZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChsYXN0TWFpbikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm5hdmlnYXRpb25JdGVtcy5pbmRleE9mKGxhc3RNYWluKTtcbiAgICB0aGlzLm5hdmlnYXRpb25JdGVtcyA9IHRoaXMubmF2aWdhdGlvbkl0ZW1zLnNsaWNlKDAsIGluZGV4ICsgMSk7XG4gICAgdGhpcy5zdG9yZU5hdmlnYXRpb24oKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlzQ3VycmVudFJvdXRlKHJvdXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsO1xuICAgIGN1cnJlbnRSb3V0ZSA9IGN1cnJlbnRSb3V0ZS5zcGxpdCgnPycpWzBdO1xuICAgIHJldHVybiByb3V0ZSA9PT0gY3VycmVudFJvdXRlO1xuICB9XG5cbiAgZ2V0TGFzdEl0ZW0oKTogT05hdmlnYXRpb25JdGVtIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5hdmlnYXRpb25JdGVtc1t0aGlzLm5hdmlnYXRpb25JdGVtcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGRlbGV0ZUFjdGl2ZUZvcm1Nb2RlKGFyZzogT05hdmlnYXRpb25JdGVtKSB7XG4gICAgYXJnLmRlbGV0ZUFjdGl2ZUZvcm1Nb2RlKCk7XG4gICAgdGhpcy5zdG9yZU5hdmlnYXRpb24oKTtcbiAgfVxuXG59XG4iXX0=
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBMEIsYUFBYSxFQUFFLE1BQU0sRUFBYyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFVNUQsTUFBTSxPQUFPLGVBQWU7SUFTMUIsWUFBWSxLQUFVO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMs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bXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFVybFNlZ21lbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSUxvY2FsU3RvcmFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvbG9jYWwtc3RvcmFnZS1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9CcmVhZGNydW1iIH0gZnJvbSAnLi4vdHlwZXMvby1icmVhZGNydW1iLWl0ZW0udHlwZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlV3JhcHBlciB9IGZyb20gJy4uL3V0aWwvYXN5bmMnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9CcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4vby1icmVhZGNydW1iLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBPTmF2aWdhdGlvblJvdXRlcyA9IHtcbiAgbWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50PzogYm9vbGVhbjtcbiAgaXNNYWluTmF2aWdhdGlvbkNvbXBvbmVudD86IGJvb2xlYW47XG4gIGRldGFpbEZvcm1Sb3V0ZTogc3RyaW5nO1xuICBlZGl0Rm9ybVJvdXRlOiBzdHJpbmc7XG4gIGluc2VydEZvcm1Sb3V0ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIE9OYXZpZ2F0aW9uSXRlbSB7XG4gIHVybDogc3RyaW5nO1xuICBxdWVyeVBhcmFtczogb2JqZWN0O1xuICBhY3RpdmVGb3JtTW9kZTogc3RyaW5nO1xuICBmb3JtUm91dGVzOiBPTmF2aWdhdGlvblJvdXRlcztcbiAgZm9ybUxheW91dFJvdXRlczogT05hdmlnYXRpb25Sb3V0ZXM7XG4gIGtleXNWYWx1ZXM6IGFueTtcbiAgcXVlcnlDb25maWd1cmF0aW9uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IGFueSkge1xuICAgIHRoaXMudXJsID0gdmFsdWUudXJsID8gdmFsdWUudXJsIDogJyc7XG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHZhbHVlW0NvZGVzLlFVRVJZX1BBUkFNU10gPyB2YWx1ZVtDb2Rlcy5RVUVSWV9QQVJBTVNdIDoge307XG4gICAgdGhpcy5mb3JtUm91dGVzID0gdmFsdWUuZm9ybVJvdXRlcztcbiAgICB0aGlzLmZvcm1MYXlvdXRSb3V0ZXMgPSB2YWx1ZS5mb3JtTGF5b3V0Um91dGVzO1xuICAgIHRoaXMuYWN0aXZlRm9ybU1vZGUgPSB2YWx1ZS5hY3RpdmVGb3JtTW9kZTtcbiAgICB0aGlzLmtleXNWYWx1ZXMgPSB2YWx1ZS5rZXlzVmFsdWVzO1xuICAgIHRoaXMucXVlcnlDb25maWd1cmF0aW9uID0gdmFsdWUucXVlcnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgZ2V0QWN0aXZlTW9kZVBhdGgoKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmFjdGl2ZUZvcm1Nb2RlKSkge1xuICAgICAgcmVzdWx0ID0gKHRoaXMuZm9ybVJvdXRlcyB8fCB7fSlbdGhpcy5hY3RpdmVGb3JtTW9kZV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpc0luc2VydEZvcm1Sb3V0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGb3JtTW9kZSA9PT0gJ2luc2VydEZvcm1Sb3V0ZSc7XG4gIH1cblxuICBnZXRJbnNlcnRGb3JtUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZXMgPSB0aGlzLmZvcm1Sb3V0ZXM7XG4gICAgcmV0dXJuIHJvdXRlcyA/IChyb3V0ZXMuaW5zZXJ0Rm9ybVJvdXRlIHx8IENvZGVzLkRFRkFVTFRfSU5TRVJUX1JPVVRFKSA6IENvZGVzLkRFRkFVTFRfSU5TRVJUX1JPVVRFO1xuICB9XG5cbiAgZ2V0RWRpdEZvcm1Sb3V0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdXRlcyA9IHRoaXMuZm9ybVJvdXRlcztcbiAgICByZXR1cm4gcm91dGVzID8gKHJvdXRlcy5lZGl0Rm9ybVJvdXRlIHx8IENvZGVzLkRFRkFVTFRfRURJVF9ST1VURSkgOiBDb2Rlcy5ERUZBVUxUX0VESVRfUk9VVEU7XG4gIH1cblxuICBnZXREZXRhaWxGb3JtUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZXMgPSB0aGlzLmZvcm1Sb3V0ZXM7XG4gICAgcmV0dXJuIHJvdXRlcyA/IChyb3V0ZXMuZGV0YWlsRm9ybVJvdXRlIHx8IENvZGVzLkRFRkFVTFRfREVUQUlMX1JPVVRFKSA6IENvZGVzLkRFRkFVTFRfREVUQUlMX1JPVVRFO1xuICB9XG5cbiAgaXNNYWluRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHRoaXMuZm9ybUxheW91dFJvdXRlcyk7XG4gIH1cblxuICBpc01haW5OYXZpZ2F0aW9uQ29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm1Sb3V0ZXMpICYmIHRoaXMuZm9ybVJvdXRlcy5pc01haW5OYXZpZ2F0aW9uQ29tcG9uZW50O1xuICB9XG5cbiAgZ2V0Rm9ybVJvdXRlcygpOiBPTmF2aWdhdGlvblJvdXRlcyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVJvdXRlcztcbiAgfVxuXG4gIHNldEZvcm1Sb3V0ZXMoYXJnOiBPTmF2aWdhdGlvblJvdXRlcykge1xuICAgIGlmIChhcmcgJiYgYXJnLm1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCkge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0Um91dGVzID0gYXJnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Sb3V0ZXMgPSBhcmc7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlQWN0aXZlRm9ybU1vZGUoKSB7XG4gICAgdGhpcy5hY3RpdmVGb3JtTW9kZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5jb25zdCBNQVhJTUlVTV9OQVZJR0FUSU9OX0hFQVBfU0laRSA9IDE1O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uU2VydmljZSBpbXBsZW1lbnRzIElMb2NhbFN0b3JhZ2VDb21wb25lbnQge1xuXG4gIHB1YmxpYyBzdGF0aWMgTkFWSUdBVElPTl9TVE9SQUdFX0tFWTogc3RyaW5nID0gJ25hdl9zZXJ2aWNlJztcblxuICBwdWJsaWMgY3VycmVudFRpdGxlOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHJvdGVjdGVkIG5hdmlnYXRpb25JdGVtczogQXJyYXk8T05hdmlnYXRpb25JdGVtPiA9IFtdO1xuICBwcm90ZWN0ZWQgYWxsTmF2aWdhdGlvbkl0ZW1zOiBPTmF2aWdhdGlvbkl0ZW1bXSA9IFtdO1xuXG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcblxuICBwcm90ZWN0ZWQgb0JyZWFkY3J1bWJTZXJ2aWNlOiBPQnJlYWRjcnVtYlNlcnZpY2U7XG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uO1xuXG4gIHB1YmxpYyBuYXZpZ2F0aW9uRXZlbnRzJDogUmVwbGF5U3ViamVjdDxBcnJheTxPTmF2aWdhdGlvbkl0ZW0+PiA9IG5ldyBSZXBsYXlTdWJqZWN0PEFycmF5PE9OYXZpZ2F0aW9uSXRlbT4+KDEpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpdGxlRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Zpc2libGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NpZGVuYXZFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gIHByb3RlY3RlZCBpc05hdmlnYXRpb25TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGlzTmF2aWdhdGlvbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzTmF2aWdhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgdGhpcy5vQnJlYWRjcnVtYlNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPQnJlYWRjcnVtYlNlcnZpY2UpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuICAgIHRoaXMubG9jYXRpb24gPSB0aGlzLmluamVjdG9yLmdldChMb2NhdGlvbik7XG4gICAgdGhpcy5sb2NhdGlvbi5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzUm91dGUgPSB0aGlzLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgICBjb25zdCBxUGFyYW1zID0gT2JqZWN0LmtleXMocHJldmlvdXNSb3V0ZS5xdWVyeVBhcmFtcyk7XG4gICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgIHFQYXJhbXMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICBhcnIucHVzaChgJHtwfT0ke3ByZXZpb3VzUm91dGUucXVlcnlQYXJhbXNbcF19YCk7XG4gICAgICB9KTtcbiAgICAgIGxldCBmdWxsVXJsID0gYC8ke3ByZXZpb3VzUm91dGUudXJsfWA7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZnVsbFVybCA9IGAvJHtwcmV2aW91c1JvdXRlLnVybH0/JHthcnIuam9pbignJicpfWA7XG4gICAgICB9XG4gICAgICBpZiAoZnVsbFVybCA9PT0gdmFsLnVybCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5wb3AoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldCBpc05hdmlnYXRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTmF2aWdhdGlvblN1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IGlzTmF2aWdhdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc05hdmlnYXRpb25TdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290KSxcbiAgICAgIG1hcChyb3V0ZSA9PiB7XG4gICAgICAgIHdoaWxlIChyb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKHJvdXRlID0+IHJvdXRlLm91dGxldCA9PT0gJ3ByaW1hcnknKVxuICAgICkuc3Vic2NyaWJlKHRoaXMucGFyc2VOYXZpZ2F0aW9uSXRlbXMuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCcmVhZGNydW1ic0ZvclJvdXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgY29uc3QgYnJlYWRjcnVtYnM6IE9CcmVhZGNydW1iW10gPSBbXTtcbiAgICBsZXQgdXJsID0gJyc7XG4gICAgbGV0IHJvdXRlID0gYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB3aGlsZSAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgaWYgKHJvdXRlLnVybC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcFJvdXRlID0gdGhpcy5wYXJzZVJvdXRlKHVybCwgcm91dGUpO1xuICAgICAgICBicmVhZGNydW1icy5wdXNoKHBSb3V0ZSk7XG4gICAgICAgIHVybCA9IHBSb3V0ZS5yb3V0ZTtcbiAgICAgIH1cbiAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkUm91dGUgPSB0aGlzLnBhcnNlUm91dGUodXJsLCByb3V0ZSk7XG4gICAgYnJlYWRjcnVtYnMucHVzaChwYXJzZWRSb3V0ZSk7XG5cbiAgICB0aGlzLm9CcmVhZGNydW1iU2VydmljZS5icmVhZGNydW1icyQubmV4dChicmVhZGNydW1icyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VSb3V0ZShyb3V0ZTogc3RyaW5nLCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9CcmVhZGNydW1iIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gYWN0aXZhdGVkUm91dGUudXJsLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBzZWdtZW50OiBVcmxTZWdtZW50ID0gYWN0aXZhdGVkUm91dGUudXJsW2ldO1xuICAgICAgaWYgKGxhYmVsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBsYWJlbCA9IGxhYmVsLmxlbmd0aCA+IDAgPyAoJy8nICsgc2VnbWVudC5wYXRoKSA6IHNlZ21lbnQucGF0aDtcbiAgICAgICAgcm91dGUgKz0gJy8nICsgc2VnbWVudC5wYXRoO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyByb3V0ZSwgbGFiZWwsIHF1ZXJ5UGFyYW1zOiBhY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcyB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlTmF2aWdhdGlvbkl0ZW1zKCkge1xuICAgIGNvbnN0IHN0b3JlZE5hdmlnYXRpb246IE9OYXZpZ2F0aW9uSXRlbVtdID0gdGhpcy5nZXRTdG9yZWREYXRhKCk7XG4gICAgY29uc3Qgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LnNuYXBzaG90O1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybC5zcGxpdCgnPycpWzBdO1xuICAgIHRoaXMuYnVpbGRCcmVhZGNydW1ic0ZvclJvdXRlKHJvdXRlKTtcbiAgICBjb25zdCBsYXN0U3RvcmVkOiBhbnkgPSBzdG9yZWROYXZpZ2F0aW9uW3N0b3JlZE5hdmlnYXRpb24ubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFsYXN0U3RvcmVkIHx8IGxhc3RTdG9yZWQudXJsICE9PSB1cmwpIHtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25JdGVtID0gbmV3IE9OYXZpZ2F0aW9uSXRlbSh7IHVybCwgcXVlcnlQYXJhbXM6IHJvdXRlLnF1ZXJ5UGFyYW1zIH0pO1xuXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5wdXNoKG5hdmlnYXRpb25JdGVtKTtcbiAgICAgIHRoaXMuc2V0TmF2aWdhdGlvbkl0ZW1zKHRoaXMubmF2aWdhdGlvbkl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9pZiBsYXN0U3RvcmVkLnVybCA9PSB1cmwsIGl0IGlzIGJlY2F1c2UgdGhlIHBhZ2UgaXMgcmVsb2FkZWRcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zID0gc3RvcmVkTmF2aWdhdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TmF2aWdhdGlvbkl0ZW1zKG5hdmlnYXRpb25JdGVtczogT05hdmlnYXRpb25JdGVtW10pIHtcbiAgICB0aGlzLm5hdmlnYXRpb25JdGVtcyA9IG5hdmlnYXRpb25JdGVtcztcbiAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbigpO1xuICAgIHRoaXMubmF2aWdhdGlvbkV2ZW50cyQubmV4dChuYXZpZ2F0aW9uSXRlbXMpO1xuICB9XG5cbiAgcHVibGljIGdldERhdGFUb1N0b3JlKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBOYXZpZ2F0aW9uU2VydmljZS5OQVZJR0FUSU9OX1NUT1JBR0VfS0VZO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3JlTmF2aWdhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFRpdGxlID0gdGl0bGU7XG4gICAgdGhpcy5fZW1pdFRpdGxlQ2hhbmdlZCh0aGlzLmN1cnJlbnRUaXRsZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICB0aGlzLl9lbWl0VmlzaWJsZUNoYW5nZWQodGhpcy52aXNpYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuU2lkZW5hdigpIHtcbiAgICB0aGlzLl9lbWl0T3BlblNpZGVuYXYoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVNpZGVuYXYoKSB7XG4gICAgdGhpcy5fZW1pdENsb3NlU2lkZW5hdigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aXRsZSB1cGRhdGVzXG4gICAqL1xuICBwdWJsaWMgb25UaXRsZUNoYW5nZShvbk5leHQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogb2JqZWN0IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHRoaXMuX3RpdGxlRW1pdHRlciwgb25OZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBvblZpc2libGVDaGFuZ2Uob25OZXh0OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiBvYmplY3Qge1xuICAgIHJldHVybiBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5fdmlzaWJsZUVtaXR0ZXIsIG9uTmV4dCk7XG4gIH1cblxuICBwdWJsaWMgb25TaWRlbmF2Q2hhbmdlKG9uTmV4dDogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiBvYmplY3Qge1xuICAgIHJldHVybiBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5fc2lkZW5hdkVtaXR0ZXIsIG9uTmV4dCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0VGl0bGVDaGFuZ2VkKHRpdGxlKTogdm9pZCB7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5fdGl0bGVFbWl0dGVyLCB0aXRsZSk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0VmlzaWJsZUNoYW5nZWQodmlzaWJsZSk6IHZvaWQge1xuICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMuX3Zpc2libGVFbWl0dGVyLCB2aXNpYmxlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRPcGVuU2lkZW5hdigpIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLl9zaWRlbmF2RW1pdHRlciwgJ29wZW4nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRDbG9zZVNpZGVuYXYoKSB7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5fc2lkZW5hdkVtaXR0ZXIsICdjbG9zZScpO1xuICB9XG5cbiAgc3RvcmVGb3JtUm91dGVzKHJvdXRlczogT05hdmlnYXRpb25Sb3V0ZXMsIGFjdGl2ZU1vZGU6IHN0cmluZywgcXVlcnlDb25mPzogYW55KSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zW3RoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDFdLnNldEZvcm1Sb3V0ZXMocm91dGVzKTtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zW3RoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDFdLmFjdGl2ZUZvcm1Nb2RlID0gYWN0aXZlTW9kZTtcbiAgICAgIGlmIChxdWVyeUNvbmYpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXNbdGhpcy5uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoIC0gMV0ua2V5c1ZhbHVlcyA9IHF1ZXJ5Q29uZi5rZXlzVmFsdWVzO1xuICAgICAgICBkZWxldGUgcXVlcnlDb25mLmtleXNWYWx1ZXM7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zW3RoaXMubmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDFdLnF1ZXJ5Q29uZmlndXJhdGlvbiA9IE9iamVjdC5rZXlzKHF1ZXJ5Q29uZikubGVuZ3RoID4gMCA/IHF1ZXJ5Q29uZiA6IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTdG9yZWREYXRhKCk6IGFueVtdIHtcbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldENvbXBvbmVudFN0b3JhZ2UodGhpcyk7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgT2JqZWN0LmtleXMoc3RvcmFnZURhdGEpLmZvckVhY2goa2V5ID0+IHJlc3VsdC5wdXNoKG5ldyBPTmF2aWdhdGlvbkl0ZW0oc3RvcmFnZURhdGFba2V5XSkpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0UHJldmlvdXNSb3V0ZURhdGEoKTogT05hdmlnYXRpb25JdGVtIHtcbiAgICBsZXQgcmVzdWx0OiBPTmF2aWdhdGlvbkl0ZW07XG4gICAgY29uc3QgbGVuID0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoO1xuICAgIGlmIChsZW4gPj0gMikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uYXZpZ2F0aW9uSXRlbXNbbGVuIC0gMl07XG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5mb3JtUm91dGVzICYmIHJlc3VsdC5mb3JtUm91dGVzLm1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCAmJiB0aGlzLm5hdmlnYXRpb25JdGVtc1tsZW4gLSAzXSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm5hdmlnYXRpb25JdGVtc1tsZW4gLSAzXTtcbiAgICAgICAgaWYgKHBhcmVudC5pc01haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtYWluIG5hdmlnYXRpb24gcm91dGUgZGF0YSB0aGF0IG1hdGNoZXMgdGhlIG1vc3Qgd2l0aCB0aGUgY3VycmVudCByb3V0ZVxuICAgKi9cbiAgZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk6IE9OYXZpZ2F0aW9uSXRlbSB7XG4gICAgY29uc3Qgcm91dGVNYXRjaGVzID0gW107XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLm5hdmlnYXRpb25JdGVtcy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICBsZXQgY3VycmVudExvY2F0aW9uID0gdGhpcy5sb2NhdGlvbi5wYXRoKCkuc3Vic3RyKDEpO1xuICAgICAgICBpZiAoY3VycmVudExvY2F0aW9uLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24uc3Vic3RyaW5nKDAsIGN1cnJlbnRMb2NhdGlvbi5pbmRleE9mKCc/JykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcGFyZSBjdXJyZW50IHJvdXRlIHdpdGggaXRlbSByb3V0ZSBhbmQgY291bnQgc2VnbWVudCBtYXRjaGVzXG4gICAgICAgIGNvbnN0IGFycjEgPSBpdGVtLnVybC5zdWJzdHIoMSkuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgYXJyMiA9IGN1cnJlbnRMb2NhdGlvbi5zcGxpdCgnLycpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDw9IGFycjEubGVuZ3RoICYmIGluZGV4IDw9IGFycjIubGVuZ3RoKSB7XG4gICAgICAgICAgcm91dGVNYXRjaGVzW2ldID0gKGFycjFbaW5kZXhdID09PSBhcnIyW2luZGV4XSkgPyByZXN1bHQrKyA6IHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG5cbiAgICBpZiAoIXJvdXRlTWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGxldCBtYXhNYXRjaGVzID0gcm91dGVNYXRjaGVzLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuICAgIGNvbnN0IGxhc3ROYXZJdGVtID0gdGhpcy5uYXZpZ2F0aW9uSXRlbXNbdGhpcy5uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFsYXN0TmF2SXRlbS5pc01haW5OYXZpZ2F0aW9uQ29tcG9uZW50KCkgJiYgIWxhc3ROYXZJdGVtLmlzTWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50KCkpIHtcbiAgICAgIG1heE1hdGNoZXMtLTtcbiAgICB9XG4gICAgbGV0IGl0ZW1SZXN1bHQgPSB2b2lkIDA7XG4gICAgd2hpbGUgKCFpdGVtUmVzdWx0ICYmIG1heE1hdGNoZXMgPj0gMCkge1xuICAgICAgaXRlbVJlc3VsdCA9IGl0ZW1zLmZpbmQoKGl0ZW0sIGkpID0+IChpdGVtLmlzTWFpbk5hdmlnYXRpb25Db21wb25lbnQoKSB8fCBpdGVtLmlzTWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50KCkpICYmIHJvdXRlTWF0Y2hlc1tpXSA9PT0gbWF4TWF0Y2hlcyk7XG4gICAgICBtYXhNYXRjaGVzLS07XG4gICAgfVxuICAgIHJldHVybiBpdGVtUmVzdWx0O1xuICB9XG5cbiAgcmVtb3ZlTGFzdEl0ZW0oKSB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMucG9wKCk7XG4gICAgdGhpcy5zdG9yZU5hdmlnYXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUxhc3RJdGVtc1VudGlsTWFpbigpIHtcbiAgICBjb25zdCBsYXN0TWFpbiA9IHRoaXMuZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChsYXN0TWFpbikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm5hdmlnYXRpb25JdGVtcy5pbmRleE9mKGxhc3RNYWluKTtcbiAgICB0aGlzLm5hdmlnYXRpb25JdGVtcyA9IHRoaXMubmF2aWdhdGlvbkl0ZW1zLnNsaWNlKDAsIGluZGV4ICsgMSk7XG4gICAgdGhpcy5zdG9yZU5hdmlnYXRpb24oKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlzQ3VycmVudFJvdXRlKHJvdXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsO1xuICAgIGN1cnJlbnRSb3V0ZSA9IGN1cnJlbnRSb3V0ZS5zcGxpdCgnPycpWzBdO1xuICAgIHJldHVybiByb3V0ZSA9PT0gY3VycmVudFJvdXRlO1xuICB9XG5cbiAgZ2V0TGFzdEl0ZW0oKTogT05hdmlnYXRpb25JdGVtIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5hdmlnYXRpb25JdGVtc1t0aGlzLm5hdmlnYXRpb25JdGVtcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGRlbGV0ZUFjdGl2ZUZvcm1Nb2RlKGFyZzogT05hdmlnYXRpb25JdGVtKSB7XG4gICAgYXJnLmRlbGV0ZUFjdGl2ZUZvcm1Nb2RlKCk7XG4gICAgdGhpcy5zdG9yZU5hdmlnYXRpb24oKTtcbiAgfVxuXG59XG4iXX0=
@@ -36,23 +36,32 @@ export class OntimizeEEPermissionsService extends OntimizeBasePermissionsService
36
36
  };
37
37
  const self = this;
38
38
  const dataObservable = new Observable(_innerObserver => {
39
- self.httpClient.get(url, options).subscribe((res) => {
40
- let permissions = {};
41
- if ((res.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) && Util.isDefined(res.data)) {
42
- const response = res.data;
43
- if ((response.length === 1) && Util.isObject(response[0])) {
44
- try {
45
- permissions = JSON.parse(response[0][OntimizeEEPermissionsService.PERMISSIONS_KEY]);
46
- }
47
- catch (e) {
48
- console.warn('[OntimizeEEPermissionsService: permissions parsing failed]');
39
+ self.httpClient.get(url, options).subscribe({
40
+ next: (res) => {
41
+ let permissions = {};
42
+ if ((res.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) && Util.isDefined(res.data)) {
43
+ const response = res.data;
44
+ if ((response.length === 1) && Util.isObject(response[0])) {
45
+ const rawPermissions = response[0][OntimizeEEPermissionsService.PERMISSIONS_KEY];
46
+ try {
47
+ permissions = JSON.parse(rawPermissions);
48
+ }
49
+ catch (e) {
50
+ if (Util.isDefined(rawPermissions)) {
51
+ console.warn('[OntimizeEEPermissionsService: permissions parsing failed]');
52
+ }
53
+ }
49
54
  }
50
55
  }
56
+ _innerObserver.next(permissions);
57
+ },
58
+ error: (error) => {
59
+ _innerObserver.error(error);
60
+ },
61
+ complete: () => {
62
+ _innerObserver.complete();
51
63
  }
52
- _innerObserver.next(permissions);
53
- }, error => {
54
- _innerObserver.error(error);
55
- }, () => _innerObserver.complete());
64
+ });
56
65
  });
57
66
  return dataObservable.pipe(share());
58
67
  }
@@ -75,4 +84,4 @@ OntimizeEEPermissionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "
75
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OntimizeEEPermissionsService, decorators: [{
76
85
  type: Injectable
77
86
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib250aW1pemUtZWUtcGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy9wZXJtaXNzaW9ucy9vbnRpbWl6ZS1lZS1wZXJtaXNzaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQUczRixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsOEJBQThCO0lBVTlFLFlBQXNCLFFBQWtCO1FBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMakMsU0FBSSxHQUFXLEVBQUUsQ0FBQztJQU96QixDQUFDO0lBRUQsOEJBQThCLENBQUMsaUJBQThDO1FBQzNFLE1BQU0sV0FBVyxHQUFXLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUV0RixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxF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U0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7QUF2RWEscURBQXdCLEdBQUcsa0JBQWtCLENBQUM7QUFDOUMsNENBQWUsR0FBRyxZQUFZLENBQUM7MEhBSGxDLDRCQUE0Qjs4SEFBNUIsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSVBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGVybWlzc2lvbnMtc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT250aW1pemVFRVBlcm1pc3Npb25zQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvb250aW1pemUtZWUtcGVybWlzc2lvbnMtY29uZmlnLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT250aW1pemVCYXNlUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9vbnRpbWl6ZS1iYXNlLXBlcm1pc3Npb25zLXNlcnZpY2UuY2xhc3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT250aW1pemVFRVBlcm1pc3Npb25zU2VydmljZSBleHRlbmRzIE9udGltaXplQmFzZVBlcm1pc3Npb25zU2VydmljZSBpbXBsZW1lbnRzIElQZXJtaXNzaW9uc1NlcnZpY2Uge1xuXG4gIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9QRVJNSVNTSU9OU19QQVRIID0gJy9sb2FkUGVybWlzc2lvbnMnO1xuICBwdWJsaWMgc3RhdGljIFBFUk1JU1NJT05TX0tFWSA9ICdwZXJtaXNzaW9uJztcblxuICBwdWJsaWMgcGF0aDogc3RyaW5nID0gJyc7XG5cbiAgcHJvdGVjdGVkIF91c2VyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdXJsQmFzZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBnZXREZWZhdWx0U2VydmljZUNvbmZpZ3VyYXRpb24ocGVybWlzc2lvbnNDb25maWc6IE9udGltaXplRUVQZXJtaXNzaW9uc0NvbmZpZyk6IGFueSB7XG4gICAgY29uc3Qgc2VydmljZU5hbWU6IHN0cmluZyA9IHBlcm1pc3Npb25zQ29uZmlnID8gcGVybWlzc2lvbnNDb25maWcuc2VydmljZSA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gdGhpcy5hdXRoU2VydmljZTtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlnLmdldFNlcnZpY2VDb25maWd1cmF0aW9uKCk7XG5cbiAgICBsZXQgc2VydkNvbmZpZyA9IHt9O1xuICAgIGlmIChzZXJ2aWNlTmFtZSAmJiBjb25maWd1cmF0aW9uLmhhc093blByb3BlcnR5KHNlcnZpY2VOYW1lKSkge1xuICAgICAgc2VydkNvbmZpZyA9IGNvbmZpZ3VyYXRpb25bc2VydmljZU5hbWVdO1xuICAgIH1cbiAgICBzZXJ2Q29uZmlnW0NvZGVzLlNFU1NJT05fS0VZXSA9IGF1dGhTZXJ2aWNlLmdldFNlc3Npb25JbmZvKCk7XG4gICAgcmV0dXJuIHNlcnZDb25maWc7XG4gIH1cblxuICBjb25maWd1cmVTZXJ2aWNlKHBlcm1pc3Npb25zQ29uZmlnOiBPbnRpbWl6ZUVFUGVybWlzc2lvbnNDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldERlZmF1bHRTZXJ2aWNlQ29uZmlndXJhdGlvbihwZXJtaXNzaW9uc0NvbmZpZyk7XG4gICAgdGhpcy5fdXJsQmFzZSA9IGNvbmZpZy51cmxCYXNlID8gY29uZmlnLnVybEJhc2UgOiB0aGlzLl9hcHBDb25maWcuYXBpRW5kcG9pbnQ7XG4gICAgdGhpcy5fdXNlciA9IGNvbmZpZy5zZXNzaW9uID8gY29uZmlnLnNlc3Npb24udXNlciA6ICcnO1xuICAgIHRoaXMucGF0aCA9IGNvbmZpZy5wYXRoID8gY29uZmlnLnBhdGggOiBPbnRpbWl6ZUVFUGVybWlzc2lvbnNTZXJ2aWNlLkRFRkFVTFRfUEVSTUlTU0lPTlNfUEFUSDtcbiAgfVxuXG4gIGxvYWRQZXJtaXNzaW9ucygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuX3VybEJhc2UgKyB0aGlzLnBhdGg7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuYnVpbGRIZWFkZXJzKClcbiAgICB9O1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGRhdGFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4gPSBuZXcgT2JzZXJ2YWJsZShfaW5uZXJPYnNlcnZlciA9PiB7XG4gICAgICBzZWxmLmh0dHBDbGllbnQuZ2V0KHVybCwgb3B0aW9ucykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBsZXQgcGVybWlzc2lvbnMgPSB7fTtcbiAgICAgICAgaWYgKChyZXMuY29kZSA9PT0gQ29kZXMuT05USU1JWkVfU1VDQ0VTU0ZVTF9DT0RFKSAmJiBVdGlsLmlzRGVmaW5lZChyZXMuZGF0YSkpIHtcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgIGlmICgocmVzcG9uc2UubGVuZ3RoID09PSAxKSAmJiBVdGlsLmlzT2JqZWN0KHJlc3BvbnNlWzBdKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcGVybWlzc2lvbnMgPSBKU09OLnBhcnNlKHJlc3BvbnNlWzBdW09udGltaXplRUVQZXJtaXNzaW9uc1NlcnZpY2UuUEVSTUlTU0lPTlNfS0VZXSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignW09udGltaXplRUVQZXJtaXNzaW9uc1NlcnZpY2U6IHBlcm1pc3Npb25zIHBhcnNpbmcgZmFpbGVkXScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfaW5uZXJPYnNlcnZlci5uZXh0KHBlcm1pc3Npb25zKTtcblxuICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICBfaW5uZXJPYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICB9LCAoKSA9PiBfaW5uZXJPYnNlcnZlci5jb21wbGV0ZSgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YU9ic2VydmFibGUucGlwZShzaGFyZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCdcbiAgICB9KTtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFNlc3Npb25JbmZvKCkuaWQ7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHNlc3Npb25JZCkpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHNlc3Npb25JZCk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib250aW1pemUtZWUtcGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy9wZXJtaXNzaW9ucy9vbnRpbWl6ZS1lZS1wZXJtaXNzaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQUczRixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsOEJBQThCO0lBVTlFLFlBQXNCLFFBQWtCO1FBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMakMsU0FBSSxHQUFXLEVBQUUsQ0FBQztJQU96QixDQUFDO0lBRUQsOEJBQThCLENBQUMsaUJBQThDO1FBQzNFLE1BQU0sV0FBVyxHQUFXLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUV0RixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxF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Q0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHUyxZQUFZO1FBQ3BCLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzVCLDZCQUE2QixFQUFFLEdBQUc7WUFDbEMsY0FBYyxFQUFFLGdDQUFnQztTQUNqRCxDQUFDLENBQUM7UUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQztTQUNsRTtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O0FBbEZhLHFEQUF3QixHQUFHLGtCQUFrQixDQUFDO0FBQzlDLDRDQUFlLEdBQUcsWUFBWSxDQUFDOzBIQUhsQyw0QkFBNEI7OEhBQTVCLDRCQUE0Qjs0RkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Blcm1pc3Npb25zLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9udGltaXplRUVQZXJtaXNzaW9uc0NvbmZpZyB9IGZyb20gJy4uLy4uL3R5cGVzL29udGltaXplLWVlLXBlcm1pc3Npb25zLWNvbmZpZy50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9udGltaXplQmFzZVBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vb250aW1pemUtYmFzZS1wZXJtaXNzaW9ucy1zZXJ2aWNlLmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9udGltaXplRUVQZXJtaXNzaW9uc1NlcnZpY2UgZXh0ZW5kcyBPbnRpbWl6ZUJhc2VQZXJtaXNzaW9uc1NlcnZpY2UgaW1wbGVtZW50cyBJUGVybWlzc2lvbnNTZXJ2aWNlIHtcblxuICBwdWJsaWMgc3RhdGljIERFRkFVTFRfUEVSTUlTU0lPTlNfUEFUSCA9ICcvbG9hZFBlcm1pc3Npb25zJztcbiAgcHVibGljIHN0YXRpYyBQRVJNSVNTSU9OU19LRVkgPSAncGVybWlzc2lvbic7XG5cbiAgcHVibGljIHBhdGg6IHN0cmluZyA9ICcnO1xuXG4gIHByb3RlY3RlZCBfdXNlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3VybEJhc2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdFNlcnZpY2VDb25maWd1cmF0aW9uKHBlcm1pc3Npb25zQ29uZmlnOiBPbnRpbWl6ZUVFUGVybWlzc2lvbnNDb25maWcpOiBhbnkge1xuICAgIGNvbnN0IHNlcnZpY2VOYW1lOiBzdHJpbmcgPSBwZXJtaXNzaW9uc0NvbmZpZyA/IHBlcm1pc3Npb25zQ29uZmlnLnNlcnZpY2UgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhdXRoU2VydmljZSA9IHRoaXMuYXV0aFNlcnZpY2U7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuX2NvbmZpZy5nZXRTZXJ2aWNlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbGV0IHNlcnZDb25maWcgPSB7fTtcbiAgICBpZiAoc2VydmljZU5hbWUgJiYgY29uZmlndXJhdGlvbi5oYXNPd25Qcm9wZXJ0eShzZXJ2aWNlTmFtZSkpIHtcbiAgICAgIHNlcnZDb25maWcgPSBjb25maWd1cmF0aW9uW3NlcnZpY2VOYW1lXTtcbiAgICB9XG4gICAgc2VydkNvbmZpZ1tDb2Rlcy5TRVNTSU9OX0tFWV0gPSBhdXRoU2VydmljZS5nZXRTZXNzaW9uSW5mbygpO1xuICAgIHJldHVybiBzZXJ2Q29uZmlnO1xuICB9XG5cbiAgY29uZmlndXJlU2VydmljZShwZXJtaXNzaW9uc0NvbmZpZzogT250aW1pemVFRVBlcm1pc3Npb25zQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5nZXREZWZhdWx0U2VydmljZUNvbmZpZ3VyYXRpb24ocGVybWlzc2lvbnNDb25maWcpO1xuICAgIHRoaXMuX3VybEJhc2UgPSBjb25maWcudXJsQmFzZSA/IGNvbmZpZy51cmxCYXNlIDogdGhpcy5fYXBwQ29uZmlnLmFwaUVuZHBvaW50O1xuICAgIHRoaXMuX3VzZXIgPSBjb25maWcuc2Vzc2lvbiA/IGNvbmZpZy5zZXNzaW9uLnVzZXIgOiAnJztcbiAgICB0aGlzLnBhdGggPSBjb25maWcucGF0aCA/IGNvbmZpZy5wYXRoIDogT250aW1pemVFRVBlcm1pc3Npb25zU2VydmljZS5ERUZBVUxUX1BFUk1JU1NJT05TX1BBVEg7XG4gIH1cblxuICBsb2FkUGVybWlzc2lvbnMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLl91cmxCYXNlICsgdGhpcy5wYXRoO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiB0aGlzLmJ1aWxkSGVhZGVycygpXG4gICAgfTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIGNvbnN0IGRhdGFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4gPSBuZXcgT2JzZXJ2YWJsZShfaW5uZXJPYnNlcnZlciA9PiB7XG4gICAgICBzZWxmLmh0dHBDbGllbnQuZ2V0KHVybCwgb3B0aW9ucykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IHBlcm1pc3Npb25zID0ge307XG4gICAgICAgICAgaWYgKChyZXMuY29kZSA9PT0gQ29kZXMuT05USU1JWkVfU1VDQ0VTU0ZVTF9DT0RFKSAmJiBVdGlsLmlzRGVmaW5lZChyZXMuZGF0YSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICBpZiAoKHJlc3BvbnNlLmxlbmd0aCA9PT0gMSkgJiYgVXRpbC5pc09iamVjdChyZXNwb25zZVswXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmF3UGVybWlzc2lvbnMgPSByZXNwb25zZVswXVtPbnRpbWl6ZUVFUGVybWlzc2lvbnNTZXJ2aWNlLlBFUk1JU1NJT05TX0tFWV07XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgPSBKU09OLnBhcnNlKHJhd1Blcm1pc3Npb25zKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChyYXdQZXJtaXNzaW9ucykpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignW09udGltaXplRUVQZXJtaXNzaW9uc1NlcnZpY2U6IHBlcm1pc3Npb25zIHBhcnNpbmcgZmFpbGVkXScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBfaW5uZXJPYnNlcnZlci5uZXh0KHBlcm1pc3Npb25zKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgX2lubmVyT2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIF9pbm5lck9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGFPYnNlcnZhYmxlLnBpcGUoc2hhcmUoKSk7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBidWlsZEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCdcbiAgICB9KTtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFNlc3Npb25JbmZvKCkuaWQ7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHNlc3Npb25JZCkpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHNlc3Npb25JZCk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbn1cbiJdfQ==