@elderbyte/ngx-starter 12.12.1 → 12.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/bundles/elderbyte-ngx-starter.umd.js +364 -107
  2. package/bundles/elderbyte-ngx-starter.umd.js.map +1 -1
  3. package/elderbyte-ngx-starter.d.ts +7 -6
  4. package/elderbyte-ngx-starter.metadata.json +1 -1
  5. package/esm2015/elderbyte-ngx-starter.js +8 -7
  6. package/esm2015/lib/common/data/data-context/data-context-active-page.js +1 -1
  7. package/esm2015/lib/common/data/data-context/data-context-auto-starter.js +74 -0
  8. package/esm2015/lib/common/data/data-context/data-context-base.js +10 -2
  9. package/esm2015/lib/common/data/data-context/data-context-builder.js +32 -5
  10. package/esm2015/lib/common/data/data-context/data-context-continuable-base.js +1 -1
  11. package/esm2015/lib/common/data/data-context/data-context-continuable-paged.js +1 -1
  12. package/esm2015/lib/common/data/data-context/data-context-continuable-token.js +2 -2
  13. package/esm2015/lib/common/data/data-context/data-context-life-cycle-binding.js +30 -0
  14. package/esm2015/lib/common/data/data-context/data-context-simple.js +1 -1
  15. package/esm2015/lib/common/data/data-context/data-context-source-auto-reloader.js +12 -0
  16. package/esm2015/lib/common/data/data-context/data-context.js +1 -1
  17. package/esm2015/lib/common/data/data-context/public_api.js +4 -2
  18. package/esm2015/lib/common/data/required-filter-evaluator.js +70 -0
  19. package/esm2015/lib/components/auditing/audited-entity/elder-audited-entity.component.js +2 -2
  20. package/esm2015/lib/components/data-view/base/elder-data-view-base.js +46 -3
  21. package/esm2015/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.js +45 -0
  22. package/esm2015/lib/components/data-view/common/elder-data-common.module.js +6 -3
  23. package/esm2015/lib/components/data-view/grid/elder-grid/elder-grid.component.js +3 -22
  24. package/esm2015/lib/components/data-view/table/elder-table/elder-table.component.js +5 -48
  25. package/esm2015/lib/components/files/blob-viewer/elder-blob-viewer.component.js +4 -3
  26. package/fesm2015/elderbyte-ngx-starter.js +305 -84
  27. package/fesm2015/elderbyte-ngx-starter.js.map +1 -1
  28. package/lib/common/data/data-context/data-context-auto-starter.d.ts +41 -0
  29. package/lib/common/data/data-context/data-context-base.d.ts +7 -1
  30. package/lib/common/data/data-context/data-context-builder.d.ts +9 -1
  31. package/lib/common/data/data-context/data-context-continuable-token.d.ts +1 -1
  32. package/lib/common/data/data-context/data-context-life-cycle-binding.d.ts +33 -0
  33. package/lib/common/data/data-context/data-context-source-auto-reloader.d.ts +8 -0
  34. package/lib/common/data/data-context/data-context.d.ts +4 -0
  35. package/lib/common/data/data-context/public_api.d.ts +3 -1
  36. package/lib/common/data/required-filter-evaluator.d.ts +46 -0
  37. package/lib/components/data-view/base/elder-data-view-base.d.ts +11 -1
  38. package/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.d.ts +29 -0
  39. package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +0 -5
  40. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +5 -10
  41. package/package.json +1 -1
  42. package/src/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.scss +0 -0
  43. package/esm2015/lib/common/data/data-context/data-source-to-data-context-binding.js +0 -20
  44. package/lib/common/data/data-context/data-source-to-data-context-binding.d.ts +0 -12
@@ -86,14 +86,15 @@ export class ElderBlobViewerComponent {
86
86
  this._mimeType$ = new BehaviorSubject(null);
87
87
  this.destroy$ = new Subject();
88
88
  this._displayUnknownAsText = false;
89
- combineLatest([this._url$, this._mimeType$]).pipe(takeUntil(this.destroy$), filter(([url, mimeType]) => !!url), map(([url, mimeType]) => BlobUrl.from(url, mimeType))).subscribe(blobUrl => this.blobUrl = blobUrl);
90
89
  }
91
90
  /***************************************************************************
92
91
  * *
93
92
  * Life Cycle *
94
93
  * *
95
94
  **************************************************************************/
96
- ngOnInit() { }
95
+ ngOnInit() {
96
+ combineLatest([this._url$, this._mimeType$]).pipe(takeUntil(this.destroy$), filter(([url, mimeType]) => !!url), map(([url, mimeType]) => BlobUrl.from(url, mimeType))).subscribe(blobUrl => this.blobUrl = blobUrl);
97
+ }
97
98
  ngOnDestroy() {
98
99
  this.destroy$.next();
99
100
  this.destroy$.complete();
@@ -223,4 +224,4 @@ ElderBlobViewerComponent.propDecorators = {
223
224
  url: [{ type: Input }],
224
225
  mimeType: [{ type: Input }]
225
226
  };
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9ibG9iLXZpZXdlci9lbGRlci1ibG9iLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBQyxZQUFZLEVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxXQUFXO0lBZ0JmLFlBQ2tCLE9BQWdCLEVBQ2hCLFFBQXNCLEVBQ3RCLE9BQWUsSUFBSTtRQUZuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBZTtJQUVyQyxDQUFDO0lBbkJNLE1BQU0sQ0FBQyxRQUFRLENBQ3BCLElBQVksRUFDWixRQUFzQjtRQUV0QixPQUFPLElBQUksV0FBVyxDQUFDLElB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QUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQXNCO1FBRTdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRGLDhFQUE4RTtRQUM5RSxvRUFBb0U7UUFDcEUsd0ZBQXdGO1FBRXhGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxXQUFtQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtZQUN4QyxZQUFZLEVBQUUsTUFBTTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFoTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLDJtRUFBaUQ7Z0JBRWpELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBOUZPLGtCQUFrQjtZQUpsQixZQUFZO1lBS1osaUJBQWlCOzs7bUNBMkp0QixLQUFLO21CQWNMLEtBQUs7c0JBU0wsS0FBSztrQkFVTCxLQUFLO3VCQVNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0Jsb2JVcmx9IGZyb20gJy4uL2Jsb2ItdXJsJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtIdHRwQ2xpZW50UHJpc3RpbmV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9odHRwL2h0dHAtY2xpZW50LXByaXN0aW5lJztcbmltcG9ydCB7RWxkZXJUb2FzdFNlcnZpY2V9IGZyb20gJy4uLy4uL3RvYXN0cy9lbGRlci10b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmNsYXNzIEJsb2JDb250ZXh0IHtcblxuICBwdWJsaWMgc3RhdGljIHRleHRCbG9iKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBtaW1lVHlwZTogQmxvYk1pbWVUeXBlXG4gICkge1xuICAgIHJldHVybiBuZXcgQmxvYkNvbnRleHQobnVsbCwgbWltZVR5cGUsIHRleHQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzYWZlVXJsKFxuICAgIHNhZmVVcmw6IFNhZmVVcmwsXG4gICAgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSxcbiAgKTogQmxvYkNvbnRleHQge1xuICAgIHJldHVybiBuZXcgQmxvYkNvbnRleHQoc2FmZVVybCwgbWltZVR5cGUsIG51bGwpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHNhZmVVcmw6IFNhZmVVcmwsXG4gICAgcHVibGljIHJlYWRvbmx5IG1pbWVUeXBlOiBCbG9iTWltZVR5cGUsXG4gICAgcHVibGljIHJlYWRvbmx5IHRleHQ6IHN0cmluZyA9IG51bGxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlBc1RleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50ZXh0O1xuICB9XG5cbiAgcHVibGljIGdldCBjYW50RGlzcGxheSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheUFzVGV4dCAmJiAhdGhpcy5kaXNwbGF5RW1iZWRkZWRcbiAgICAgICYmICF0aGlzLm1pbWVUeXBlLmlzQXVkaW8gJiYgIXRoaXMubWltZVR5cGUuaXNJbWFnZSAmJiAhdGhpcy5taW1lVHlwZS5pc1ZpZGVvO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5RW1iZWRkZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWltZVR5cGUuaXNQZGY7XG4gIH1cblxufVxuXG5jbGFzcyBCbG9iTWltZVR5cGUge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0NURVRfU1RSRUFNID0gbmV3IEJsb2JNaW1lVHlwZSgnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZShtaW1lVHlwZTogc3RyaW5nKTogQmxvYk1pbWVUeXBlIHtcbiAgICBpZiAobWltZVR5cGUpIHtcbiAgICAgIHJldHVybiBuZXcgQmxvYk1pbWVUeXBlKG1pbWVUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEJsb2JNaW1lVHlwZS5PQ1RFVF9TVFJFQU07XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmdcbiAgKSB7ICB9XG5cbiAgcHVibGljIGdldCBpc09jdGV0U3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1ZpZGVvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ3ZpZGVvLycpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ltYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0F1ZGlvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0pzb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vanNvbicpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1BkZigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9wZGYnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ3RleHQvJykgfHwgdGhpcy5pc0pzb247XG4gIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1ibG9iLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1ibG9iLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyQmxvYlZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJsb2JDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QmxvYkNvbnRleHQ+KG51bGwpO1xuXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdXJsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWltZVR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZGlzcGxheVVua25vd25Bc1RleHQgPSBmYWxzZTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBQcmlzdGluZTogSHR0cENsaWVudFByaXN0aW5lLFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IEVsZGVyVG9hc3RTZXJ2aWNlXG4gICkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3VybCQsIHRoaXMuX21pbWVUeXBlJF0pLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBmaWx0ZXIoKFt1cmwsIG1pbWVUeXBlXSkgPT4gISF1cmwpLFxuICAgICAgbWFwKChbdXJsLCBtaW1lVHlwZV0pID0+IEJsb2JVcmwuZnJvbSh1cmwsIG1pbWVUeXBlKSlcbiAgICApLnN1YnNjcmliZShcbiAgICAgIGJsb2JVcmwgPT4gdGhpcy5ibG9iVXJsID0gYmxvYlVybFxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7ICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIGRpc3BsYXkgdW5rbm93biBibG9icyBhcyB0ZXh0LiAoaS5lLiBtaW1lLXR5cGUgaXMgb2N0ZXQtc3RyZWFtKVxuICAgKiBAcGFyYW0gdW5rbm93bkFzVGV4dFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5VW5rbm93bkFzVGV4dCh1bmtub3duQXNUZXh0OiBib29sZWFuKSB7XG5cbiAgICAvLyBUT0RPIEZJWCBSQUNFIENPTkRJVElPTjpcbiAgICAvLyAgICBTaW5jZSB0aGlzIHByb3BlcnR5IGlzIG5vdCByZWFjdGl2ZSwgaXQgbXVzdCBiZSBzZXQgZmlyc3QuXG4gICAgLy8gICAgT3RoZXJ3aXNlLCBpdCB3aWxsIHN0aWxsIGJlIGZhbHNlLCBldmVuIGlmIHNldCB0byB0cnVlIVxuXG4gICAgdGhpcy5fZGlzcGxheVVua25vd25Bc1RleHQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodW5rbm93bkFzVGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgaW4gbWVtb3J5IGJsb2IgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYihibG9iOiBCbG9iKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iKGJsb2IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIGJsb2ItdXJsIHRvIGRpc3BsYXkuXG4gICAqIEBwYXJhbSBibG9iVXJsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJsb2JVcmwoYmxvYlVybDogQmxvYlVybCkge1xuICAgIHRoaXMuaGFuZGxlQmxvYlVybChibG9iVXJsKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFNldCBhIHVybCB0byBkaXNwbGF5LiBSZXF1aXJlcyB0aGUgbWltZVR5cGUgdG8gYmUgc2V0IGFzd2VsbC5cbiAgICogQHBhcmFtIHVybFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cmwkLm5leHQodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1pbWUtdHlwZSBmb3IgdGhlIHVybCB0byBkaXNwbGF5LiBPbmx5IGNvbnNpZGVyZWQgaWYgdXJsIGlzIHNldC5cbiAgICogQHBhcmFtIG1pbWVUeXBlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbWVUeXBlKG1pbWVUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9taW1lVHlwZSQubmV4dChtaW1lVHlwZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4gIHByaXZhdGUgaGFuZGxlQmxvYihibG9iOiBCbG9iKTogdm9pZCB7XG5cbiAgICBjb25zdCBzYWZlVXJsID0gdGhpcy5jcmVhdGVTYWZlVXJsRnJvbUJsb2IoYmxvYik7XG4gICAgY29uc3QgbWltZVR5cGUgPSBCbG9iTWltZVR5cGUucGFyc2UoYmxvYi50eXBlKTtcblxuICAgIGlmICh0aGlzLmNhbkRpc3BsYXlBc1RleHQobWltZVR5cGUpKSB7XG4gICAgICB0aGlzLnRleHRDb250ZXh0KGJsb2IsIG1pbWVUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZXh0QmxvYihcbiAgICAgICAgQmxvYkNvbnRleHQuc2FmZVVybChzYWZlVXJsLCBtaW1lVHlwZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0ZXh0Q29udGV4dChibG9iOiBCbG9iLCBtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogdm9pZCB7XG4gICAgYmxvYi50ZXh0KCkudGhlbihcbiAgICAgIHRleHQgPT4ge1xuICAgICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICAgIEJsb2JDb250ZXh0LnRleHRCbG9iKHRleHQsIG1pbWVUeXBlKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUJsb2JVcmwoYmxvYlVybDogQmxvYlVybCk6IHZvaWQge1xuXG4gICAgY29uc3Qgc2FmZVVybCA9IHRoaXMuY3JlYXRlU2FmZVVybEZyb21EYXRhVXJsKGJsb2JVcmwudXJsKTtcbiAgICBjb25zdCBtaW1lVHlwZSA9IEJsb2JNaW1lVHlwZS5wYXJzZShibG9iVXJsLm1pbWVUeXBlKTtcblxuICAgIGlmICh0aGlzLmNhbkRpc3BsYXlBc1RleHQobWltZVR5cGUpKSB7XG4gICAgICB0aGlzLmxvYWRBc1RleHQoYmxvYlVybC51cmwsIG1pbWVUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZXh0QmxvYihcbiAgICAgICAgQmxvYkNvbnRleHQuc2FmZVVybChzYWZlVXJsLCBtaW1lVHlwZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0QmxvYihibG9iQ29udGV4dDogQmxvYkNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmJsb2JDb250ZXh0JC5uZXh0KGJsb2JDb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU2FmZVVybEZyb21CbG9iKGJsb2I6IEJsb2IpOiBTYWZlVXJsIHtcbiAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGJsb2JVcmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbURhdGFVcmwodXJsOiBzdHJpbmcpOiBTYWZlVXJsIHtcbiAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRBc1RleHQocHJpc3RpbmVVcmw6IHN0cmluZywgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSk6IHZvaWQge1xuXG4gICAgdGhpcy5uZXh0QmxvYihcbiAgICAgIEJsb2JDb250ZXh0LnRleHRCbG9iKCdMb2FkaW5nLi4uJywgbWltZVR5cGUpXG4gICAgKTtcblxuICAgIHRoaXMuZG93bmxvYWRBc1RleHQocHJpc3RpbmVVcmwpLnN1YnNjcmliZShcbiAgICAgIHRleHQgPT4ge1xuICAgICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICAgIEJsb2JDb250ZXh0LnRleHRCbG9iKHRleHQsIG1pbWVUeXBlKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGVyciA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoXG4gICAgICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IoJ0ZhaWxlZCB0byBkb3dubG9hZCBjb250ZW50IScsIG1pbWVUeXBlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS53YXJuKCdGYWlsZWQgdG8gZG93bmxvYWQgY29udGVudCEnLCBlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNhbkRpc3BsYXlBc1RleHQobWltZVR5cGU6IEJsb2JNaW1lVHlwZSk6IGJvb2xlYW4ge1xuXG4gICAgY29uc3QgY2FuID0gbWltZVR5cGUuaXNUZXh0IHx8ICh0aGlzLl9kaXNwbGF5VW5rbm93bkFzVGV4dCAmJiBtaW1lVHlwZS5pc09jdGV0U3RyZWFtKTtcblxuICAgIC8vIFRPRE8gX2Rpc3BsYXlVbmtub3duQXNUZXh0IG1pZ2h0IGJlIG51bGwgZHVlIHJhY2UgY29uZGl0aW9uIHNlZSB0b2RvIGFib3ZlLlxuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdjYW5EaXNwbGF5QXNUZXh0KCcgKyBtaW1lVHlwZS52YWx1ZSArICcpIC0tPiAnXG4gICAgLy8gICsgY2FuICsgJyAtLS0+IHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0OicgKyB0aGlzLl9kaXNwbGF5VW5rbm93bkFzVGV4dCwgbWltZVR5cGUpO1xuXG4gICAgcmV0dXJuIGNhbjtcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWRBc1RleHQocHJpc3RpbmVVcmw6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFByaXN0aW5lLmdldChwcmlzdGluZVVybCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICB9KTtcbiAgfVxufVxuIl19
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9ibG9iLXZpZXdlci9lbGRlci1ibG9iLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBQyxZQUFZLEVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxXQUFXO0lBZ0JmLFlBQ2tCLE9BQWdCLEVBQ2hCLFFBQXNCLEVBQ3RCLE9BQWUsSUFBSTtRQUZuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBZTtJQUVyQyxDQUFDO0lBbkJNLE1BQU0sQ0FBQyxRQUFRLENBQ3BCLElBQVksRUFDWixRQUFzQjtRQUV0QixPQUFPLElBQUksV0FBVyxDQUFDLElB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QyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBc0I7UUFFN0MsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEYsOEVBQThFO1FBQzlFLG9FQUFvRTtRQUNwRSx3RkFBd0Y7UUFFeEYsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQW1CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3hDLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQWhORixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsMm1FQUFpRDtnQkFFakQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE5Rk8sa0JBQWtCO1lBSmxCLFlBQVk7WUFLWixpQkFBaUI7OzttQ0EySnRCLEtBQUs7bUJBY0wsS0FBSztzQkFTTCxLQUFLO2tCQVVMLEtBQUs7dUJBU0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QmxvYlVybH0gZnJvbSAnLi4vYmxvYi11cmwnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0h0dHBDbGllbnRQcmlzdGluZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2h0dHAvaHR0cC1jbGllbnQtcHJpc3RpbmUnO1xuaW1wb3J0IHtFbGRlclRvYXN0U2VydmljZX0gZnJvbSAnLi4vLi4vdG9hc3RzL2VsZGVyLXRvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuY2xhc3MgQmxvYkNvbnRleHQge1xuXG4gIHB1YmxpYyBzdGF0aWMgdGV4dEJsb2IoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIG1pbWVUeXBlOiBCbG9iTWltZVR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBCbG9iQ29udGV4dChudWxsLCBtaW1lVHlwZSwgdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNhZmVVcmwoXG4gICAgc2FmZVVybDogU2FmZVVybCxcbiAgICBtaW1lVHlwZTogQmxvYk1pbWVUeXBlLFxuICApOiBCbG9iQ29udGV4dCB7XG4gICAgcmV0dXJuIG5ldyBCbG9iQ29udGV4dChzYWZlVXJsLCBtaW1lVHlwZSwgbnVsbCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2FmZVVybDogU2FmZVVybCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWltZVR5cGU6IEJsb2JNaW1lVHlwZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGV4dDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheUFzVGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRleHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhbnREaXNwbGF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5QXNUZXh0ICYmICF0aGlzLmRpc3BsYXlFbWJlZGRlZFxuICAgICAgJiYgIXRoaXMubWltZVR5cGUuaXNBdWRpbyAmJiAhdGhpcy5taW1lVHlwZS5pc0ltYWdlICYmICF0aGlzLm1pbWVUeXBlLmlzVmlkZW87XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlFbWJlZGRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5taW1lVHlwZS5pc1BkZjtcbiAgfVxuXG59XG5cbmNsYXNzIEJsb2JNaW1lVHlwZSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPQ1RFVF9TVFJFQU0gPSBuZXcgQmxvYk1pbWVUeXBlKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTtcblxuICBwdWJsaWMgc3RhdGljIHBhcnNlKG1pbWVUeXBlOiBzdHJpbmcpOiBCbG9iTWltZVR5cGUge1xuICAgIGlmIChtaW1lVHlwZSkge1xuICAgICAgcmV0dXJuIG5ldyBCbG9iTWltZVR5cGUobWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gQmxvYk1pbWVUeXBlLk9DVEVUX1NUUkVBTTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZ1xuICApIHsgIH1cblxuICBwdWJsaWMgZ2V0IGlzT2N0ZXRTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmlkZW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndmlkZW8vJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSW1hZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXVkaW8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgnYXVkaW8vJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSnNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9qc29uJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUGRmKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJ2FwcGxpY2F0aW9uL3BkZicpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1RleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc3RhcnRzV2l0aCgndGV4dC8nKSB8fCB0aGlzLmlzSnNvbjtcbiAgfVxuXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWJsb2Itdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWJsb2Itdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItYmxvYi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJCbG9iVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYmxvYkNvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCbG9iQ29udGV4dD4obnVsbCk7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF91cmwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW1lVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9kaXNwbGF5VW5rbm93bkFzVGV4dCA9IGZhbHNlO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cFByaXN0aW5lOiBIdHRwQ2xpZW50UHJpc3RpbmUsXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogRWxkZXJUb2FzdFNlcnZpY2VcbiAgKSB7ICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3VybCQsIHRoaXMuX21pbWVUeXBlJF0pLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBmaWx0ZXIoKFt1cmwsIG1pbWVUeXBlXSkgPT4gISF1cmwpLFxuICAgICAgbWFwKChbdXJsLCBtaW1lVHlwZV0pID0+IEJsb2JVcmwuZnJvbSh1cmwsIG1pbWVUeXBlKSlcbiAgICApLnN1YnNjcmliZShcbiAgICAgIGJsb2JVcmwgPT4gdGhpcy5ibG9iVXJsID0gYmxvYlVybFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gZGlzcGxheSB1bmtub3duIGJsb2JzIGFzIHRleHQuIChpLmUuIG1pbWUtdHlwZSBpcyBvY3RldC1zdHJlYW0pXG4gICAqIEBwYXJhbSB1bmtub3duQXNUZXh0XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlVbmtub3duQXNUZXh0KHVua25vd25Bc1RleHQ6IGJvb2xlYW4pIHtcblxuICAgIC8vIFRPRE8gRklYIFJBQ0UgQ09ORElUSU9OOlxuICAgIC8vICAgIFNpbmNlIHRoaXMgcHJvcGVydHkgaXMgbm90IHJlYWN0aXZlLCBpdCBtdXN0IGJlIHNldCBmaXJzdC5cbiAgICAvLyAgICBPdGhlcndpc2UsIGl0IHdpbGwgc3RpbGwgYmUgZmFsc2UsIGV2ZW4gaWYgc2V0IHRvIHRydWUhXG5cbiAgICB0aGlzLl9kaXNwbGF5VW5rbm93bkFzVGV4dCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh1bmtub3duQXNUZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBpbiBtZW1vcnkgYmxvYiB0byBkaXNwbGF5LlxuICAgKiBAcGFyYW0gYmxvYlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBibG9iKGJsb2I6IEJsb2IpIHtcbiAgICB0aGlzLmhhbmRsZUJsb2IoYmxvYik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgYmxvYi11cmwgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGJsb2JVcmxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmxvYlVybChibG9iVXJsOiBCbG9iVXJsKSB7XG4gICAgdGhpcy5oYW5kbGVCbG9iVXJsKGJsb2JVcmwpO1xuICB9XG5cblxuICAvKipcbiAgICogU2V0IGEgdXJsIHRvIGRpc3BsYXkuIFJlcXVpcmVzIHRoZSBtaW1lVHlwZSB0byBiZSBzZXQgYXN3ZWxsLlxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3VybCQubmV4dCh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWltZS10eXBlIGZvciB0aGUgdXJsIHRvIGRpc3BsYXkuIE9ubHkgY29uc2lkZXJlZCBpZiB1cmwgaXMgc2V0LlxuICAgKiBAcGFyYW0gbWltZVR5cGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWltZVR5cGUobWltZVR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuX21pbWVUeXBlJC5uZXh0KG1pbWVUeXBlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgcHJpdmF0ZSBoYW5kbGVCbG9iKGJsb2I6IEJsb2IpOiB2b2lkIHtcblxuICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmNyZWF0ZVNhZmVVcmxGcm9tQmxvYihibG9iKTtcbiAgICBjb25zdCBtaW1lVHlwZSA9IEJsb2JNaW1lVHlwZS5wYXJzZShibG9iLnR5cGUpO1xuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMudGV4dENvbnRleHQoYmxvYiwgbWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICBCbG9iQ29udGV4dC5zYWZlVXJsKHNhZmVVcmwsIG1pbWVUeXBlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRleHRDb250ZXh0KGJsb2I6IEJsb2IsIG1pbWVUeXBlOiBCbG9iTWltZVR5cGUpOiB2b2lkIHtcbiAgICBibG9iLnRleHQoKS50aGVuKFxuICAgICAgdGV4dCA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoXG4gICAgICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQmxvYlVybChibG9iVXJsOiBCbG9iVXJsKTogdm9pZCB7XG5cbiAgICBjb25zdCBzYWZlVXJsID0gdGhpcy5jcmVhdGVTYWZlVXJsRnJvbURhdGFVcmwoYmxvYlVybC51cmwpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gQmxvYk1pbWVUeXBlLnBhcnNlKGJsb2JVcmwubWltZVR5cGUpO1xuXG4gICAgaWYgKHRoaXMuY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZSkpIHtcbiAgICAgIHRoaXMubG9hZEFzVGV4dChibG9iVXJsLnVybCwgbWltZVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgICBCbG9iQ29udGV4dC5zYWZlVXJsKHNhZmVVcmwsIG1pbWVUeXBlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRCbG9iKGJsb2JDb250ZXh0OiBCbG9iQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuYmxvYkNvbnRleHQkLm5leHQoYmxvYkNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTYWZlVXJsRnJvbUJsb2IoYmxvYjogQmxvYik6IFNhZmVVcmwge1xuICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoYmxvYlVybCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNhZmVVcmxGcm9tRGF0YVVybCh1cmw6IHN0cmluZyk6IFNhZmVVcmwge1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nLCBtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogdm9pZCB7XG5cbiAgICB0aGlzLm5leHRCbG9iKFxuICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IoJ0xvYWRpbmcuLi4nLCBtaW1lVHlwZSlcbiAgICApO1xuXG4gICAgdGhpcy5kb3dubG9hZEFzVGV4dChwcmlzdGluZVVybCkuc3Vic2NyaWJlKFxuICAgICAgdGV4dCA9PiB7XG4gICAgICAgIHRoaXMubmV4dEJsb2IoXG4gICAgICAgICAgQmxvYkNvbnRleHQudGV4dEJsb2IodGV4dCwgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5uZXh0QmxvYihcbiAgICAgICAgICBCbG9iQ29udGV4dC50ZXh0QmxvYignRmFpbGVkIHRvIGRvd25sb2FkIGNvbnRlbnQhJywgbWltZVR5cGUpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLndhcm4oJ0ZhaWxlZCB0byBkb3dubG9hZCBjb250ZW50IScsIGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRGlzcGxheUFzVGV4dChtaW1lVHlwZTogQmxvYk1pbWVUeXBlKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBjYW4gPSBtaW1lVHlwZS5pc1RleHQgfHwgKHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0ICYmIG1pbWVUeXBlLmlzT2N0ZXRTdHJlYW0pO1xuXG4gICAgLy8gVE9ETyBfZGlzcGxheVVua25vd25Bc1RleHQgbWlnaHQgYmUgbnVsbCBkdWUgcmFjZSBjb25kaXRpb24gc2VlIHRvZG8gYWJvdmUuXG4gICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ2NhbkRpc3BsYXlBc1RleHQoJyArIG1pbWVUeXBlLnZhbHVlICsgJykgLS0+ICdcbiAgICAvLyAgKyBjYW4gKyAnIC0tLT4gdGhpcy5fZGlzcGxheVVua25vd25Bc1RleHQ6JyArIHRoaXMuX2Rpc3BsYXlVbmtub3duQXNUZXh0LCBtaW1lVHlwZSk7XG5cbiAgICByZXR1cm4gY2FuO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZEFzVGV4dChwcmlzdGluZVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwUHJpc3RpbmUuZ2V0KHByaXN0aW5lVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0J1xuICAgIH0pO1xuICB9XG59XG4iXX0=