ontimize-web-ngx 15.7.1 → 15.8.0

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 (38) hide show
  1. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +1 -1
  2. package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +1 -1
  3. package/esm2020/lib/components/o-service-base-component.class.mjs +1 -1
  4. package/esm2020/lib/components/o-service-component.class.mjs +1 -1
  5. package/esm2020/lib/components/table/column/cell-renderer/cell-renderer.mjs +11 -4
  6. package/esm2020/lib/components/table/column/cell-renderer/chip/o-table-cell-renderer-chip.component.mjs +65 -0
  7. package/esm2020/lib/components/table/column/cell-renderer/index.mjs +3 -1
  8. package/esm2020/lib/components/table/column/cell-renderer/list/o-table-cell-renderer-list.component.mjs +41 -0
  9. package/esm2020/lib/components/table/column/o-table-column.component.mjs +8 -2
  10. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +3 -3
  11. package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +3 -1
  12. package/esm2020/lib/components/table/o-table.component.mjs +262 -71
  13. package/esm2020/lib/components/table/o-table.module.mjs +35 -33
  14. package/esm2020/lib/interfaces/column-filter-change-event.interface.mjs +2 -0
  15. package/esm2020/lib/interfaces/index.mjs +2 -1
  16. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +1 -1
  17. package/esm2020/lib/types/table/o-table-global-config.type.mjs +1 -1
  18. package/fesm2015/ontimize-web-ngx.mjs +376 -78
  19. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  20. package/fesm2020/ontimize-web-ngx.mjs +374 -78
  21. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  22. package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +1 -1
  23. package/lib/components/filter-builder/o-filter-builder.component.d.ts +1 -1
  24. package/lib/components/o-service-base-component.class.d.ts +1 -1
  25. package/lib/components/o-service-component.class.d.ts +1 -1
  26. package/lib/components/table/column/cell-renderer/cell-renderer.d.ts +5 -1
  27. package/lib/components/table/column/cell-renderer/chip/o-table-cell-renderer-chip.component.d.ts +23 -0
  28. package/lib/components/table/column/cell-renderer/index.d.ts +2 -0
  29. package/lib/components/table/column/cell-renderer/list/o-table-cell-renderer-list.component.d.ts +14 -0
  30. package/lib/components/table/column/o-table-column.component.d.ts +2 -1
  31. package/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.d.ts +2 -1
  32. package/lib/components/table/o-table.component.d.ts +22 -3
  33. package/lib/components/table/o-table.module.d.ts +48 -46
  34. package/lib/interfaces/column-filter-change-event.interface.d.ts +6 -0
  35. package/lib/interfaces/index.d.ts +1 -0
  36. package/lib/types/table/o-table-global-config.type.d.ts +2 -0
  37. package/package.json +1 -1
  38. package/theme.scss +0 -2
@@ -0,0 +1,41 @@
1
+ import { ChangeDetectionStrategy, Component, Injector, TemplateRef, ViewChild } from '@angular/core';
2
+ import { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';
3
+ import * as i0 from "@angular/core";
4
+ export const O_TABLE_CELL_RENDERER_LIST = ['config'];
5
+ export class OTableCellRendererListComponent extends OBaseTableCellRenderer {
6
+ constructor(injector) {
7
+ super(injector);
8
+ this.injector = injector;
9
+ this.tableColumn.type = 'list';
10
+ }
11
+ initialize() {
12
+ super.initialize();
13
+ }
14
+ getCellData(cellvalue) {
15
+ if (cellvalue === null || cellvalue === undefined) {
16
+ return '';
17
+ }
18
+ if (Array.isArray(cellvalue)) {
19
+ if (cellvalue.length === 0) {
20
+ return '';
21
+ }
22
+ return cellvalue[0] + (cellvalue.length > 1 ? ' (+' + (cellvalue.length - 1) + ')' : '');
23
+ }
24
+ else {
25
+ return cellvalue;
26
+ }
27
+ }
28
+ getTooltip(cellValue) {
29
+ return Array.isArray(cellValue) ? cellValue.join('\n') : '';
30
+ }
31
+ }
32
+ OTableCellRendererListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellRendererListComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
33
+ OTableCellRendererListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableCellRendererListComponent, selector: "o-table-cell-renderer-list", viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n {{ getCellData(cellvalue) }}\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellRendererListComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'o-table-cell-renderer-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n {{ getCellData(cellvalue) }}\n</ng-template>\n" }]
37
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { templateref: [{
38
+ type: ViewChild,
39
+ args: ['templateref', { read: TemplateRef, static: true }]
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLXJlbmRlcmVyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtcmVuZGVyZXIvbGlzdC9vLXRhYmxlLWNlbGwtcmVuZGVyZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1yZW5kZXJlci9saXN0L28tdGFibGUtY2VsbC1yZW5kZXJlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRzdFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFPckQsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLHNCQUFzQjtJQUd6RSxZQUFzQixRQUFrQjtRQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFESSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRXRDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNSLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBb0JNLFdBQVcsQ0FBQyxTQUFjO1FBQy9CLElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQ2pELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMxRjthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBZU0sVUFBVSxDQUFDLFNBQWM7UUFDOUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUQsQ0FBQzs7NkhBM0RVLCtCQUErQjtpSEFBL0IsK0JBQStCLHlKQUNSLFdBQVcsa0VDWi9DLG9JQUdBOzRGRFFhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSw0QkFBNEIsbUJBRXJCLHVCQUF1QixDQUFDLE1BQU07K0ZBR3VCLFdBQVc7c0JBQWhGLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9CYXNlVGFibGVDZWxsUmVuZGVyZXIgfSBmcm9tICcuLi9vLWJhc2UtdGFibGUtY2VsbC1yZW5kZXJlci5jbGFzcyc7XG5cblxuZXhwb3J0IGNvbnN0IE9fVEFCTEVfQ0VMTF9SRU5ERVJFUl9MSVNUID0gWydjb25maWcnXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jZWxsLXJlbmRlcmVyLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jZWxsLXJlbmRlcmVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbFJlbmRlcmVyTGlzdENvbXBvbmVudCBleHRlbmRzIE9CYXNlVGFibGVDZWxsUmVuZGVyZXIge1xuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZXJlZicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgdGVtcGxhdGVyZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLnRhYmxlQ29sdW1uLnR5cGUgPSAnbGlzdCc7XG4gIH1cblxuICBpbml0aWFsaXplKCkge1xuICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIC8qKlxuICAgICAqIFJldHVybnMgYSBkaXNwbGF5LWZyaWVuZGx5IHN0cmluZyBmb3IgYSB0YWJsZSBjZWxsIHZhbHVlLlxuICAgICAqXG4gICAgICogLSBJZiBgY2VsbHZhbHVlYCBpcyBhbiBhcnJheSwgcmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudC4gSWYgdGhlIGFycmF5XG4gICAgICogICBoYXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50LCBhcHBlbmRzIFwiICgrTilcIiB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2ZcbiAgICAgKiAgIGFkZGl0aW9uYWwgaXRlbXMgKGFycmF5Lmxlbmd0aCAtIDEpLlxuICAgICAqICAgRXhhbXBsZXM6XG4gICAgICogICAgIFsnYSddICAgICAgICAgICAtPiAnYSdcbiAgICAgKiAgICAgWydhJywgJ2InLCAnYyddIC0+ICdhICgrMiknXG4gICAgICpcbiAgICAgKiAqIFRoaXMgaXMgYSBwdWJsaWMgbWV0aG9kIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICpcbiAgICAgKiBAcHVibGljXG4gICAgICogQG92ZXJyaWRlXG4gICAgICogQHBhcmFtIGNlbGx2YWx1ZSAtIFRoZSBjZWxsJ3MgdmFsdWUgKG1heSBiZSBhbiBhcnJheSBvciBhIHNjYWxhcikuXG5cbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyBzdWl0YWJsZSBmb3IgZGlzcGxheSBpbiBhIHNpbmdsZSB0YWJsZSBjZWxsLlxuICAgICAqL1xuICBwdWJsaWMgZ2V0Q2VsbERhdGEoY2VsbHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjZWxsdmFsdWUgPT09IG51bGwgfHwgY2VsbHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2VsbHZhbHVlKSkge1xuICAgICAgaWYgKGNlbGx2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNlbGx2YWx1ZVswXSArIChjZWxsdmFsdWUubGVuZ3RoID4gMSA/ICcgKCsnICsgKGNlbGx2YWx1ZS5sZW5ndGggLSAxKSArICcpJyA6ICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNlbGx2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZXMgYSB0b29sdGlwIHN0cmluZyBmb3IgYSBjZWxsIHZhbHVlLlxuICAgKlxuICAgKiBJZiB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgYW4gYXJyYXksIGl0cyBlbGVtZW50cyBhcmUgam9pbmVkIHVzaW5nIG5ld2xpbmUgY2hhcmFjdGVycyBhbmQgcmV0dXJuZWQuXG4gICAqIEZvciBhbnkgbm9uLWFycmF5IHZhbHVlLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwdWJsaWMgbWV0aG9kIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAqXG4gICAqIEBwdWJsaWNcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSBjZWxsVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIGNlbGwgdG8gcHJvZHVjZSBhIHRvb2x0aXAgZm9yLiBFeHBlY3RlZCB0byBiZSBhbiBhcnJheSBvZiBpdGVtcyBvciBhbnkgb3RoZXIgdmFsdWUuXG4gICAqIEByZXR1cm5zIEEgbmV3bGluZS1zZXBhcmF0ZWQgc3RyaW5nIG9mIGFycmF5IGVsZW1lbnRzIHdoZW4gYGNlbGxWYWx1ZWAgaXMgYW4gYXJyYXk7IG90aGVyd2lzZSBhbiBlbXB0eSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0VG9vbHRpcChjZWxsVmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY2VsbFZhbHVlKSA/IGNlbGxWYWx1ZS5qb2luKCdcXG4nKSA6ICcnO1xuICB9XG59XG5cblxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAge3sgZ2V0Q2VsbERhdGEoY2VsbHZhbHVlKSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -191,6 +191,12 @@ export class OTableColumnComponent {
191
191
  case 'translate':
192
192
  newRenderer.translateArgsFn = this.translateArgsFn;
193
193
  break;
194
+ case 'chip':
195
+ newRenderer.icon = this.icon;
196
+ newRenderer.svgOcon = this.svgIcon;
197
+ newRenderer.iconPosition = this.iconPosition;
198
+ newRenderer.translate = this.translate;
199
+ break;
194
200
  }
195
201
  this.registerRenderer(newRenderer);
196
202
  }
@@ -365,7 +371,7 @@ export class OTableColumnComponent {
365
371
  }
366
372
  }
367
373
  OTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableColumnComponent, deps: [{ token: forwardRef(() => OTableComponent) }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
368
- OTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnComponent, selector: "o-table-column", inputs: { attr: "attr", title: "title", titleAlign: ["title-align", "titleAlign"], contentAlign: ["content-align", "contentAlign"], orderable: "orderable", searchable: "searchable", groupable: "groupable", type: "type", editable: "editable", width: "width", minWidth: ["min-width", "minWidth"], maxWidth: ["max-width", "maxWidth"], asyncLoad: ["async-load", "asyncLoad"], sqlType: ["sql-type", "sqlType"], tooltip: "tooltip", tooltipValue: ["tooltip-value", "tooltipValue"], tooltipFunction: ["tooltip-function", "tooltipFunction"], multiline: "multiline", resizable: "resizable", filterExpressionFunction: ["filter-expression-function", "filterExpressionFunction"], class: "class", angularValidatorsFn: ["validators", "angularValidatorsFn"], angularValidatorsFnErrors: ["validators-errors", "angularValidatorsFnErrors"], angularAsyncValidatorsFn: ["async-validators", "angularAsyncValidatorsFn"], valueColumn: ["value-column", "valueColumn"], trueValue: ["true-value", "trueValue"], falseValue: ["false-value", "falseValue"], booleanType: ["boolean-type", "booleanType"], renderTrueValue: ["render-true-value", "renderTrueValue"], renderFalseValue: ["render-false-value", "renderFalseValue"], renderType: ["render-type", "renderType"], grouping: "grouping", thousandSeparator: ["thousand-separator", "thousandSeparator"], decimalSeparator: ["decimal-separator", "decimalSeparator"], minDecimalDigits: ["min-decimal-digits", "minDecimalDigits"], maxDecimalDigits: ["max-decimal-digits", "maxDecimalDigits"], currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"], format: "format", imageType: ["image-type", "imageType"], emptyImage: ["empty-image", "emptyImage"], avatar: "avatar", icon: "icon", svgIcon: ["svg-icon", "svgIcon"], action: "action", text: "text", iconPosition: ["icon-position", "iconPosition"], entity: "entity", service: "service", columns: "columns", translate: "translate", valueColumnType: ["value-column-type", "valueColumnType"], parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], serviceType: ["service-type", "serviceType"], translateArgsFn: ["translate-params", "translateArgsFn"], configureServiceArgs: ["configure-service-args", "configureServiceArgs"], orequired: ["required", "orequired"], showPlaceHolder: ["show-placeholder", "showPlaceHolder"], olabel: ["label", "olabel"], updateRecordOnEdit: ["update-record-on-edit", "updateRecordOnEdit"], showNotificationOnEdit: ["show-notification-on-edit", "showNotificationOnEdit"], enabled: "enabled", min: "min", max: "max", step: "step", locale: "locale", oStartView: ["start-view", "oStartView"], oTouchUi: ["touch-ui", "oTouchUi"], startAt: ["start-at", "startAt"], filterDate: ["filter-date", "filterDate"], dateValueType: ["date-value-type", "dateValueType"], oDateFormat: ["date-format", "oDateFormat"], oDateLocale: ["date-locale", "oDateLocale"], oDateStartView: ["date-start-view", "oDateStartView"], oMinDate: ["date-min", "oMinDate"], oMaxDate: ["date-max", "oMaxDate"], oDateTouchUi: ["date-touch-ui", "oDateTouchUi"], oDateStartAt: ["date-start-at", "oDateStartAt"], oHourFormat: ["hour-format", "oHourFormat"], oHourMin: ["hour-min", "oHourMin"], oHourMax: ["hour-max", "oHourMax"], oHourPlaceholder: ["hour-placeholder", "oHourPlaceholder"], oDatePlaceholder: ["date-placeholder", "oDatePlaceholder"] }, outputs: { onClick: "onClick", onDataLoaded: "onDataLoaded", editionStarted: "editionStarted", editionCancelled: "editionCancelled", editionCommitted: "editionCommitted", onPostUpdateRecord: "onPostUpdateRecord" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<span #container>\n</span>", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
374
+ OTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnComponent, selector: "o-table-column", inputs: { attr: "attr", title: "title", titleAlign: ["title-align", "titleAlign"], contentAlign: ["content-align", "contentAlign"], orderable: "orderable", searchable: "searchable", groupable: "groupable", type: "type", editable: "editable", width: "width", minWidth: ["min-width", "minWidth"], maxWidth: ["max-width", "maxWidth"], asyncLoad: ["async-load", "asyncLoad"], sqlType: ["sql-type", "sqlType"], tooltip: "tooltip", tooltipValue: ["tooltip-value", "tooltipValue"], tooltipFunction: ["tooltip-function", "tooltipFunction"], multiline: "multiline", resizable: "resizable", filterExpressionFunction: ["filter-expression-function", "filterExpressionFunction"], class: "class", angularValidatorsFn: ["validators", "angularValidatorsFn"], angularValidatorsFnErrors: ["validators-errors", "angularValidatorsFnErrors"], angularAsyncValidatorsFn: ["async-validators", "angularAsyncValidatorsFn"], valueColumn: ["value-column", "valueColumn"], trueValue: ["true-value", "trueValue"], falseValue: ["false-value", "falseValue"], booleanType: ["boolean-type", "booleanType"], renderTrueValue: ["render-true-value", "renderTrueValue"], renderFalseValue: ["render-false-value", "renderFalseValue"], renderType: ["render-type", "renderType"], grouping: "grouping", thousandSeparator: ["thousand-separator", "thousandSeparator"], decimalSeparator: ["decimal-separator", "decimalSeparator"], minDecimalDigits: ["min-decimal-digits", "minDecimalDigits"], maxDecimalDigits: ["max-decimal-digits", "maxDecimalDigits"], currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"], valueBase: ["value-base", "valueBase"], format: "format", imageType: ["image-type", "imageType"], emptyImage: ["empty-image", "emptyImage"], avatar: "avatar", icon: "icon", svgIcon: ["svg-icon", "svgIcon"], action: "action", text: "text", iconPosition: ["icon-position", "iconPosition"], entity: "entity", service: "service", columns: "columns", translate: "translate", valueColumnType: ["value-column-type", "valueColumnType"], parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], serviceType: ["service-type", "serviceType"], translateArgsFn: ["translate-params", "translateArgsFn"], configureServiceArgs: ["configure-service-args", "configureServiceArgs"], orequired: ["required", "orequired"], showPlaceHolder: ["show-placeholder", "showPlaceHolder"], olabel: ["label", "olabel"], updateRecordOnEdit: ["update-record-on-edit", "updateRecordOnEdit"], showNotificationOnEdit: ["show-notification-on-edit", "showNotificationOnEdit"], enabled: "enabled", min: "min", max: "max", step: "step", locale: "locale", oStartView: ["start-view", "oStartView"], oTouchUi: ["touch-ui", "oTouchUi"], startAt: ["start-at", "startAt"], filterDate: ["filter-date", "filterDate"], dateValueType: ["date-value-type", "dateValueType"], oDateFormat: ["date-format", "oDateFormat"], oDateLocale: ["date-locale", "oDateLocale"], oDateStartView: ["date-start-view", "oDateStartView"], oMinDate: ["date-min", "oMinDate"], oMaxDate: ["date-max", "oMaxDate"], oDateTouchUi: ["date-touch-ui", "oDateTouchUi"], oDateStartAt: ["date-start-at", "oDateStartAt"], oHourFormat: ["hour-format", "oHourFormat"], oHourMin: ["hour-min", "oHourMin"], oHourMax: ["hour-max", "oHourMax"], oHourPlaceholder: ["hour-placeholder", "oHourPlaceholder"], oDatePlaceholder: ["date-placeholder", "oDatePlaceholder"] }, outputs: { onClick: "onClick", onDataLoaded: "onDataLoaded", editionStarted: "editionStarted", editionCancelled: "editionCancelled", editionCommitted: "editionCommitted", onPostUpdateRecord: "onPostUpdateRecord" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<span #container>\n</span>", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
369
375
  __decorate([
370
376
  BooleanInputConverter(),
371
377
  __metadata("design:type", Boolean)
@@ -440,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
440
446
  type: ViewChild,
441
447
  args: ['container', { read: ViewContainerRef, static: true }]
442
448
  }] } });
443
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFaEksTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFFM0MsTUFBTTtJQUdOLE9BQU87SUFHUCx5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REFDUztBQUVqQztJQUFDLHFCQUFxQixFQUFFOztpRUFDVztBQUNuQztJQUFDLHFCQUFxQixFQUFFOztxRUFDZ0I7QUFPeEM7SUFBQyxxQkFBcUIsRUFBRTs7dURBQ1k7QUFNcEM7SUFBQyxvQkFBb0IsRUFBRTs7a0RBQ1g7QUFDWjtJQUFDLG9CQUFvQixFQUFFOztrREFDWDtBQUNaO0lBQUMsb0JBQW9CLEVBQUU7O21EQUNWO0FBQ2I7SUFBQyxvQkFBb0IsRUFBRTs7K0RBQ007QUFDN0I7SUFBQyxvQkFBb0IsRUFBRTs7K0RBQ007QUFHN0I7SUFBQyxxQkFBcUIsRUFBRTs7a0VBQ2E7QUFDckM7SUFBQyxxQkFBcUIsRUFBRTs7eURBQ0o7QUFXcEI7SUFBQyxxQkFBcUIsRUFBRTs7d0RBQ0c7NEZBakpoQixxQkFBcUI7a0JBUmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sVUFDdkMsNkJBQTZCLFdBQzVCLDhCQUE4Qjs7MEJBMkpwQyxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7bUVBeklwQyxRQUFRLE1BS1IsT0FBTyxNQWdFSixTQUFTLE1BWVQsU0FBUyxNQUVuQixlQUFlLE1BR2Ysa0JBQWtCLE1BRWxCLHNCQUFzQixNQVFaLFFBQVEsTUFPbEIsR0FBRyxNQUVILEdBQUcsTUFFSCxJQUFJLE1BRUosZ0JBQWdCLE1BRWhCLGdCQUFnQixNQUloQixtQkFBbUIsTUFFbkIsVUFBVSxNQVlWLFNBQVMsTUFHVCxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIsIE51bWJlcklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgT1RhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1BlcmNlbnRhZ2VWYWx1ZUJhc2VUeXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvby1wZXJjZW50YWdlLnBpcGUnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlckZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZGF0ZS1maWx0ZXItZnVuY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBFcnJvckRhdGEgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9lcnJvci1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2V4cHJlc3Npb24udHlwZSc7XG5pbXBvcnQgeyBPRGF0ZVZhbHVlVHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL28tZGF0ZS12YWx1ZS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBTUUxUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvc3FsdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBlZGl0b3JzTWFwcGluZywgT19UQUJMRV9DRUxMX0VESVRPUlNfSU5QVVRTLCBPX1RBQkxFX0NFTExfRURJVE9SU19PVVRQVVRTIH0gZnJvbSAnLi9jZWxsLWVkaXRvci9jZWxsLWVkaXRvcic7XG5pbXBvcnQgeyBPX1RBQkxFX0NFTExfUkVOREVSRVJTX0lOUFVUUywgT19UQUJMRV9DRUxMX1JFTkRFUkVSU19PVVRQVVRTLCByZW5kZXJlcnNNYXBwaW5nIH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVyL2NlbGwtcmVuZGVyZXInO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU4gPSBbXG4gIC8vIGF0dHIgW3N0cmluZ106IGNvbHVtbiBuYW1lLlxuICAnYXR0cicsXG5cbiAgLy8gdGl0bGUgW3N0cmluZ106IGNvbHVtbiB0aXRsZS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICd0aXRsZScsXG5cbiAgLy8gdGl0bGUtYWxpZ24gW3N0YXJ0IHwgY2VudGVyIHwgZW5kXTogY29sdW1uIHRpdGxlIGFsaWdubWVudC4gRGVmYXVsdDogY2VudGVyLlxuICAndGl0bGVBbGlnbjogdGl0bGUtYWxpZ24nLFxuXG4gIC8vIGNvbnRlbnQtYWxpZ24gW3N0YXJ0IHwgY2VudGVyIHwgZW5kXTogY29sdW1uIGNvbnRlbnQgYWxpZ25tZW50LlxuICAnY29udGVudEFsaWduOiBjb250ZW50LWFsaWduJyxcblxuICAvLyBvcmRlcmFibGUgW25vfHllc106IGNvbHVtbiBjYW4gYmUgc29ydGVkLiBEZWZhdWx0OiB5ZXMuXG4gICdvcmRlcmFibGUnLFxuXG4gIC8vIHNlYXJjaGFibGUgW25vfHllc106IHNlYXJjaGluZ3MgYXJlIHBlcmZvcm1lZCBpbnRvIGNvbHVtbiBjb250ZW50LiBEZWZhdWx0OiB5ZXMuXG4gICdzZWFyY2hhYmxlJyxcblxuICAvLyBncm91cGFibGUgW25vfHllc3x0cnVlfGZhbHNlXTogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBjb2x1bW4gY2FuIGJlIGdyb3VwYWJsZVxuICAnZ3JvdXBhYmxlJyxcblxuICAvLyB0eXBlIFtib29sZWFufGludGVnZXJ8cmVhbHxjdXJyZW5jeXxkYXRlfGltYWdlXTogY29sdW1uIHR5cGUuIERlZmF1bHQ6IG5vIHZhbHVlIChzdHJpbmcpLlxuICAndHlwZScsXG5cbiAgLy8gZWRpdGFibGUgW25vfHllc106IGNvbHVtbiBjYW4gYmUgZWRpdGVkIGRpcmVjdGx5IG92ZXIgdGhlIHRhYmxlLiBEZWZhdWx0OiBuby5cbiAgJ2VkaXRhYmxlJyxcblxuICAnd2lkdGgnLFxuXG4gIC8vIG9ubHkgaW4gcGl4ZWxzXG4gICdtaW5XaWR0aDogbWluLXdpZHRoJyxcblxuICAvLyBvbmx5IGluIHBpeGVsc1xuICAnbWF4V2lkdGg6IG1heC13aWR0aCcsXG5cbiAgLy8gYXN5bmMtbG9hZCBbbm98eWVzfHRydWV8ZmFsc2VdOiBhc3luY2hyb25vdXMgcXVlcnkuIERlZmF1bHQ6IG5vXG4gICdhc3luY0xvYWQgOiBhc3luYy1sb2FkJyxcblxuICAvLyBzcWx0eXBlW3N0cmluZ106IERhdGEgdHlwZSBhY2NvcmRpbmcgdG8gSmF2YSBzdGFuZGFyZC4gU2VlIFNRTFR5cGUgY2xhc3MuIERlZmF1bHQ6ICdPVEhFUidcbiAgJ3NxbFR5cGU6IHNxbC10eXBlJyxcblxuICAndG9vbHRpcCcsXG5cbiAgJ3Rvb2x0aXBWYWx1ZTogdG9vbHRpcC12YWx1ZScsXG5cbiAgJ3Rvb2x0aXBGdW5jdGlvbjogdG9vbHRpcC1mdW5jdGlvbicsXG5cbiAgJ211bHRpbGluZScsXG5cbiAgJ3Jlc2l6YWJsZScsXG5cbiAgJ2ZpbHRlckV4cHJlc3Npb25GdW5jdGlvbjogZmlsdGVyLWV4cHJlc3Npb24tZnVuY3Rpb24nLFxuXG4gICdjbGFzcycsXG5cbiAgJ2FuZ3VsYXJWYWxpZGF0b3JzRm46IHZhbGlkYXRvcnMnLFxuXG4gICdhbmd1bGFyVmFsaWRhdG9yc0ZuRXJyb3JzOiB2YWxpZGF0b3JzLWVycm9ycycsXG5cbiAgJ2FuZ3VsYXJBc3luY1ZhbGlkYXRvcnNGbjogYXN5bmMtdmFsaWRhdG9ycycsXG4gICd2YWx1ZUNvbHVtbjogdmFsdWUtY29sdW1uJyxcblxuICAuLi5PX1RBQkxFX0NFTExfUkVOREVSRVJTX0lOUFVUUyxcbiAgLi4uT19UQUJMRV9DRUxMX0VESVRPUlNfSU5QVVRTXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OID0gW1xuICAuLi5PX1RBQkxFX0NFTExfUkVOREVSRVJTX09VVFBVVFMsXG4gIC4uLk9fVEFCTEVfQ0VMTF9FRElUT1JTX09VVFBVVFNcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29sdW1uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU4sXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTixcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT1RhYmxlQ29sdW1uLCBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyByZW5kZXJlcjogYW55O1xuICBwdWJsaWMgZWRpdG9yOiBhbnk7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcbiAgcHVibGljIGF0dHI6IHN0cmluZztcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXRsZUFsaWduOiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZW50QWxpZ246ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBwdWJsaWMgc3FsVHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX1NRTFR5cGU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9vcmRlcmFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfcmVzaXphYmxlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX3NlYXJjaGFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfZ3JvdXBhYmxlOiBib29sZWFuO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyB3aWR0aDogc3RyaW5nO1xuICBwdWJsaWMgbWluV2lkdGg6IHN0cmluZztcbiAgcHVibGljIG1heFdpZHRoOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgdG9vbHRpcDogYm9vbGVhbiA9IGZhbHNlO1xuICB0b29sdGlwVmFsdWU6IHN0cmluZztcbiAgdG9vbHRpcEZ1bmN0aW9uOiAocm93RGF0YTogYW55KSA9PiBhbnk7XG4gIHB1YmxpYyBjbGFzczogc3RyaW5nO1xuICBwdWJsaWMgdmFsdWVDb2x1bW46IHN0cmluZztcblxuICBzZXQgbXVsdGlsaW5lKHZhbDogYm9vbGVhbikge1xuICAgIHZhbCA9IFV0aWwucGFyc2VCb29sZWFuKFN0cmluZyh2YWwpKTtcbiAgICB0aGlzLl9tdWx0aWxpbmUgPSB2YWw7XG4gIH1cbiAgZ2V0IG11bHRpbGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlsaW5lO1xuICB9XG4gIHByb3RlY3RlZCBfbXVsdGlsaW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm46IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnM6IEVycm9yRGF0YVtdID0gW107XG5cbiAgcHVibGljIGFuZ3VsYXJBc3luY1ZhbGlkYXRvcnNGbjogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XG5cbiAgZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uOiAoY29sdW1uQXR0cjogc3RyaW5nLCBxdWlja0ZpbHRlcj86IHN0cmluZykgPT4gRXhwcmVzc2lvbjtcblxuICAvKiBpbnB1dCByZW5kZXJlciBiYXNlICovXG4gIHB1YmxpYyBfZmlsdGVyU291cmNlOiAncmVuZGVyJyB8ICdkYXRhJyB8ICdib3RoJyA9ICdyZW5kZXInO1xuICBwdWJsaWMgZmlsdGVyRnVuY3Rpb246IChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IGFueSwgcXVpY2tGaWx0ZXI/OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qIGlucHV0IHJlbmRlcmVyIGRhdGUgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdDogc3RyaW5nO1xuICAvKiBpbnB1dCByZW5kZXJlciBpbnRlZ2VyICovXG4gIHByb3RlY3RlZCBncm91cGluZzogYW55ID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSAnLCc7XG4gIC8qIGlucHV0IHJlbmRlcmVyIHJlYWwgKi9cbiAgcHJvdGVjdGVkIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZyA9ICcuJztcblxuICAvKiBpbnB1dCByZW5kZXJlciBjdXJyZW5jeSAqL1xuICBwcm90ZWN0ZWQgY3VycmVuY3lTeW1ib2w6IHN0cmluZztcbiAgcHJvdGVjdGVkIGN1cnJlbmN5U3ltYm9sUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBib29sZWFuICovXG4gIHByb3RlY3RlZCB0cnVlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGZhbHNlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIHJlbmRlclRydWVWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyRmFsc2VWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyVHlwZTogc3RyaW5nID0gJ3N0cmluZyc7XG4gIHByb3RlY3RlZCBib29sZWFuVHlwZTogc3RyaW5nID0gJ2Jvb2xlYW4nO1xuXG4gIC8qIGlucHV0IGltYWdlICovXG4gIHByb3RlY3RlZCBpbWFnZVR5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGF2YXRhcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZW1wdHlJbWFnZTogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGFjdGlvbiAqL1xuICBwcm90ZWN0ZWQgaWNvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWN0aW9uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCB0ZXh0OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpY29uUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBzZXJ2aWNlICovXG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlcnZpY2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IHN0cmluZztcbiAgcHJvdGVjdGVkIHBhcmVudEtleXM6IHN0cmluZztcbiAgcHJvdGVjdGVkIHF1ZXJ5TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5RVUVSWV9NRVRIT0Q7XG4gIHByb3RlY3RlZCBzZXJ2aWNlVHlwZTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiBpbnB1dCByZW5kZXJlciB0cmFuc2xhdGUgKi9cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZUFyZ3NGbjogKHJvd0RhdGE6IGFueSkgPT4gYW55W107XG4gIC8qIGlucHV0IHRpbWUgKi9cbiAgb0RhdGVGb3JtYXQgPSAnTCc7XG4gIG9Ib3VyRm9ybWF0ID0gMjQ7XG5cbiAgLyogaW5wdXQgcmVuZGVyZXIgcGVyY2VudGFnZSAqL1xuICB2YWx1ZUJhc2U6IE9QZXJjZW50YWdlVmFsdWVCYXNlVHlwZSA9IDE7XG5cbiAgLyogaW5wdXQgZWRpdG9yICovXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgb3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93UGxhY2VIb2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb2xhYmVsOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICB1cGRhdGVSZWNvcmRPbkVkaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd05vdGlmaWNhdGlvbk9uRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qIGlucHV0IGVkaXRvciBkYXRlICovXG4gIHByb3RlY3RlZCBsb2NhbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIG9TdGFydFZpZXc6ICdtb250aCcgfCAneWVhcicgPSAnbW9udGgnO1xuICBwcm90ZWN0ZWQgb01pbkRhdGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIG9NYXhEYXRlOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgb1RvdWNoVWk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG9TdGFydEF0OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBmaWx0ZXJEYXRlOiBEYXRlRmlsdGVyRnVuY3Rpb247XG4gIHByb3RlY3RlZCBkYXRlVmFsdWVUeXBlOiBPRGF0ZVZhbHVlVHlwZSA9ICd0aW1lc3RhbXAnO1xuXG4gIC8qIGlucHV0IGVkaXRvciBpbnRlZ2VyICovXG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1pbjogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtYXg6IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgc3RlcDogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtaW5EZWNpbWFsRGlnaXRzOiBudW1iZXIgPSAyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtYXhEZWNpbWFsRGlnaXRzOiBudW1iZXIgPSAyO1xuXG4gIC8qIGlucHV0IGVkaXRvciBib29sZWFuICovXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBpbmRldGVybWluYXRlT25OdWxsOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBhdXRvQ29tbWl0OiBib29sZWFuO1xuXG4gIC8qIG91dHB1dCBjZWxsIHJlbmRlcmVyIGFjdGlvbiAqL1xuICBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuXG4gIC8qIG91dHB1dCBjZWxsIGVkaXRvciAqL1xuICBlZGl0aW9uU3RhcnRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNvbW1pdHRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgb25Qb3N0VXBkYXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBhc3luY0xvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVDb21wb25lbnQpKSBwdWJsaWMgdGFibGU6IE9UYWJsZUNvbXBvbmVudCxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICB9XG5cbiAgc3RhdGljIGFkZEVkaXRvcih0eXBlOiBzdHJpbmcsIGVkaXRvckNsYXNzUmVmZXJlbmNlOiBhbnkpIHtcbiAgICBpZiAoIWVkaXRvcnNNYXBwaW5nLmhhc093blByb3BlcnR5KHR5cGUpICYmIFV0aWwuaXNEZWZpbmVkKGVkaXRvckNsYXNzUmVmZXJlbmNlKSkge1xuICAgICAgZWRpdG9yc01hcHBpbmdbdHlwZV0gPSBlZGl0b3JDbGFzc1JlZmVyZW5jZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdyb3VwaW5nID0gVXRpbC5wYXJzZUJvb2xlYW4odGhpcy5ncm91cGluZywgdHJ1ZSk7XG4gICAgdGhpcy50aXRsZUFsaWduID0gdGhpcy5wYXJzZVRpdGxlQWxpZ24oKTtcbiAgICB0aGlzLnRhYmxlLnJlZ2lzdGVyQ29sdW1uKHRoaXMpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50YWJsZS5vblJlaW5pdGlhbGl6ZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50YWJsZS5yZWdpc3RlckNvbHVtbih0aGlzKSkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcbiAgICB0aGlzLmNyZWF0ZUVkaXRvcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwYXJzZVRpdGxlQWxpZ24oKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbGlnbiA9ICh0aGlzLnRpdGxlQWxpZ24gfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIENvZGVzLkFWQUlMQUJMRV9DT0xVTU5fVElUTEVfQUxJR05TLmluZGV4T2YoYWxpZ24pICE9PSAtMSA/IGFsaWduIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IG9yaWdpbmFsV2lkdGgoKSB7XG4gICAgbGV0IG9yaWdpbmFsV2lkdGggPSB0aGlzLndpZHRoO1xuICAgIGNvbnN0IHB4VmFsID0gVXRpbC5leHRyYWN0UGl4ZWxzVmFsdWUob3JpZ2luYWxXaWR0aCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHB4VmFsKSkge1xuICAgICAgb3JpZ2luYWxXaWR0aCA9IHB4VmFsICsgJyc7XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFdpZHRoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlbmRlcmVyKCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5yZW5kZXJlcikgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSkge1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gcmVuZGVyZXJzTWFwcGluZ1t0aGlzLnR5cGVdO1xuICAgICAgaWYgKGNvbXBvbmVudFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBuZXdSZW5kZXJlcjtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFJlZik7XG4gICAgICAgIG5ld1JlbmRlcmVyID0gcmVmLmluc3RhbmNlO1xuICAgICAgICBuZXdSZW5kZXJlci5maWx0ZXJTb3VyY2UgPSB0aGlzLmZpbHRlclNvdXJjZTtcbiAgICAgICAgbmV3UmVuZGVyZXIuZmlsdGVyRnVuY3Rpb24gPSB0aGlzLmZpbHRlckZ1bmN0aW9uO1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sID0gdGhpcy5jdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sUG9zaXRpb24gPSB0aGlzLmN1cnJlbmN5U3ltYm9sUG9zaXRpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5kZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWluRGVjaW1hbERpZ2l0cyA9IHRoaXMubWluRGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1heERlY2ltYWxEaWdpdHMgPSB0aGlzLm1heERlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZvcm1hdCA9IHRoaXMuZm9ybWF0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5mb3JtYXQgPSB0aGlzLmZvcm1hdDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZ3JvdXBpbmcgPSB0aGlzLmdyb3VwaW5nO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGhvdXNhbmRTZXBhcmF0b3IgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cnVlVmFsdWUgPSB0aGlzLnRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZhbHNlVmFsdWUgPSB0aGlzLmZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUcnVlVmFsdWUgPSB0aGlzLnJlbmRlclRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlckZhbHNlVmFsdWUgPSB0aGlzLnJlbmRlckZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUeXBlID0gdGhpcy5yZW5kZXJUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYm9vbGVhblR5cGUgPSB0aGlzLmJvb2xlYW5UeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci52YWx1ZUJhc2UgPSB0aGlzLnZhbHVlQmFzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3JlYWwnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZGVjaW1hbFNlcGFyYXRvciA9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1pbkRlY2ltYWxEaWdpdHMgPSB0aGlzLm1pbkRlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5tYXhEZWNpbWFsRGlnaXRzID0gdGhpcy5tYXhEZWNpbWFsRGlnaXRzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZ3JvdXBpbmcgPSB0aGlzLmdyb3VwaW5nO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGhvdXNhbmRTZXBhcmF0b3IgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuaW1hZ2VUeXBlID0gdGhpcy5pbWFnZVR5cGU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5hdmF0YXIgPSB0aGlzLmF2YXRhcjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmVtcHR5SW1hZ2UgPSB0aGlzLmVtcHR5SW1hZ2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdhY3Rpb24nOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuaWNvbiA9IHRoaXMuaWNvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmFjdGlvbiA9IHRoaXMuYWN0aW9uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGV4dCA9IHRoaXMudGV4dDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmljb25Qb3NpdGlvbiA9IHRoaXMuaWNvblBvc2l0aW9uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIub25DbGljayA9IHRoaXMub25DbGljaztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZW50aXR5ID0gdGhpcy5lbnRpdHk7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5zZXJ2aWNlID0gdGhpcy5zZXJ2aWNlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuY29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnZhbHVlQ29sdW1uID0gdGhpcy52YWx1ZUNvbHVtbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnBhcmVudEtleXMgPSB0aGlzLnBhcmVudEtleXM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5xdWVyeU1ldGhvZCA9IHRoaXMucXVlcnlNZXRob2Q7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5zZXJ2aWNlVHlwZSA9IHRoaXMuc2VydmljZVR5cGU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cmFuc2xhdGUgPSB0aGlzLnRyYW5zbGF0ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3RyYW5zbGF0ZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cmFuc2xhdGVBcmdzRm4gPSB0aGlzLnRyYW5zbGF0ZUFyZ3NGbjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZW5kZXJlcihuZXdSZW5kZXJlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYnVpbGRDZWxsRWRpdG9yKHR5cGU6IHN0cmluZywgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBwcm9wc09yaWdpbjogYW55LCByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGxldCBlZGl0b3I7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gZWRpdG9yc01hcHBpbmdbdHlwZV0gfHwgZWRpdG9yc01hcHBpbmcudGV4dDtcbiAgICBpZiAoY29tcG9uZW50UmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmID0gY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRSZWYpO1xuICAgIGVkaXRvciA9IHJlZi5pbnN0YW5jZTtcbiAgICBpZiAocHJvcHNPcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGVkaXRvci5mb3JtYXQgPSBwcm9wc09yaWdpbi5mb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLmxvY2FsZSA9IHByb3BzT3JpZ2luLmxvY2FsZTtcbiAgICAgICAgICBlZGl0b3Iub1N0YXJ0VmlldyA9IHByb3BzT3JpZ2luLm9TdGFydFZpZXc7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG4gICAgICAgICAgZWRpdG9yLm9Ub3VjaFVpID0gcHJvcHNPcmlnaW4ub1RvdWNoVWk7XG4gICAgICAgICAgZWRpdG9yLm9TdGFydEF0ID0gcHJvcHNPcmlnaW4ub1N0YXJ0QXQ7XG4gICAgICAgICAgZWRpdG9yLmZpbHRlckRhdGUgPSBwcm9wc09yaWdpbi5maWx0ZXJEYXRlO1xuICAgICAgICAgIGVkaXRvci5kYXRlVmFsdWVUeXBlID0gcHJvcHNPcmlnaW4uZGF0ZVZhbHVlVHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgZWRpdG9yLm9EYXRlRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0RhdGVGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0hvdXJGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlTG9jYWxlID0gcHJvcHNPcmlnaW4ub0RhdGVMb2NhbGU7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG5cbiAgICAgICAgICBlZGl0b3Iub1RvdWNoVWkgPSBwcm9wc09yaWdpbi5vVG91Y2hVaTtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVTdGFydEF0ID0gcHJvcHNPcmlnaW4ub0RhdGVTdGFydEF0O1xuICAgICAgICAgIGVkaXRvci5vRGF0ZVRleHRJbnB1dEVuYWJsZWQgPSBwcm9wc09yaWdpbi5vRGF0ZVRleHRJbnB1dEVuYWJsZWQ7XG5cbiAgICAgICAgICBlZGl0b3Iub0hvdXJNaW4gPSBwcm9wc09yaWdpbi5vSG91ck1pbjtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJNYXggPSBwcm9wc09yaWdpbi5vSG91ck1heDtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJUZXh0SW5wdXRFbmFibGVkID0gcHJvcHNPcmlnaW4ub0hvdXJUZXh0SW5wdXRFbmFibGVkO1xuICAgICAgICAgIGVkaXRvci5vSG91clBsYWNlaG9sZGVyID0gcHJvcHNPcmlnaW4ub0hvdXJQbGFjZWhvbGRlcjtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVQbGFjZWhvbGRlciA9IHByb3BzT3JpZ2luLm9EYXRlUGxhY2Vob2xkZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIGVkaXRvci5ib29sZWFuVHlwZSA9IHByb3BzT3JpZ2luLmJvb2xlYW5UeXBlO1xuICAgICAgICAgIGVkaXRvci5pbmRldGVybWluYXRlT25OdWxsID0gcHJvcHNPcmlnaW4uaW5kZXRlcm1pbmF0ZU9uTnVsbDtcbiAgICAgICAgICBlZGl0b3IuYXV0b0NvbW1pdCA9IHByb3BzT3JpZ2luLmF1dG9Db21taXQ7XG4gICAgICAgICAgZWRpdG9yLnRydWVWYWx1ZSA9IHByb3BzT3JpZ2luLnRydWVWYWx1ZTtcbiAgICAgICAgICBlZGl0b3IuZmFsc2VWYWx1ZSA9IHByb3BzT3JpZ2luLmZhbHNlVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocHJvcHNPcmlnaW4ubWluKSkge1xuICAgICAgICAgICAgZWRpdG9yLm1pbiA9IHByb3BzT3JpZ2luLm1pbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHByb3BzT3JpZ2luLm1heCkpIHtcbiAgICAgICAgICAgIGVkaXRvci5tYXggPSBwcm9wc09yaWdpbi5tYXg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRvci5zdGVwID0gVXRpbC5pc0RlZmluZWQocHJvcHNPcmlnaW4uc3RlcCkgPyBwcm9wc09yaWdpbi5zdGVwIDogZWRpdG9yLnN0ZXA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGVkaXRvci5vbGFiZWwgPSBwcm9wc09yaWdpbi5vbGFiZWw7XG4gICAgICBlZGl0b3IudHlwZSA9IHByb3BzT3JpZ2luLnR5cGU7XG4gICAgfVxuICAgIGVkaXRvci5yZWdpc3RlckluQ29sdW1uID0gcmVnaXN0ZXJJbkNvbHVtbjtcblxuICAgIHJldHVybiBlZGl0b3I7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlRWRpdG9yKCkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5lZGl0b3IpICYmIHRoaXMuZWRpdGFibGUpIHtcbiAgICAgIGNvbnN0IG5ld0VkaXRvciA9IHRoaXMuYnVpbGRDZWxsRWRpdG9yKHRoaXMudHlwZSwgdGhpcy5jb250YWluZXIsIHRoaXMpO1xuICAgICAgaWYgKG5ld0VkaXRvcikge1xuICAgICAgICBuZXdFZGl0b3Iub3JlcXVpcmVkID0gdGhpcy5vcmVxdWlyZWQ7XG4gICAgICAgIG5ld0VkaXRvci5zaG93UGxhY2VIb2xkZXIgPSB0aGlzLnNob3dQbGFjZUhvbGRlcjtcbiAgICAgICAgbmV3RWRpdG9yLnVwZGF0ZVJlY29yZE9uRWRpdCA9IHRoaXMudXBkYXRlUmVjb3JkT25FZGl0O1xuICAgICAgICBuZXdFZGl0b3Iuc2hvd05vdGlmaWNhdGlvbk9uRWRpdCA9IHRoaXMuc2hvd05vdGlmaWNhdGlvbk9uRWRpdDtcbiAgICAgICAgbmV3RWRpdG9yLmVkaXRpb25TdGFydGVkID0gdGhpcy5lZGl0aW9uU3RhcnRlZDtcbiAgICAgICAgbmV3RWRpdG9yLmVkaXRpb25DYW5jZWxsZWQgPSB0aGlzLmVkaXRpb25DYW5jZWxsZWQ7XG4gICAgICAgIG5ld0VkaXRvci5lZGl0aW9uQ29tbWl0dGVkID0gdGhpcy5lZGl0aW9uQ29tbWl0dGVkO1xuICAgICAgICBuZXdFZGl0b3Iub25Qb3N0VXBkYXRlUmVjb3JkID0gdGhpcy5vblBvc3RVcGRhdGVSZWNvcmQ7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3IobmV3RWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJSZW5kZXJlcihyZW5kZXJlcjogYW55KSB7XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvQ29sLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJFZGl0b3IoZWRpdG9yOiBhbnkpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb0NvbC5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICB9XG4gICAgdGhpcy5lZGl0b3IuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgc2V0IG9yZGVyYWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX29yZGVyYWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLm9yZGVyYWJsZSA9IHRoaXMuX29yZGVyYWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3JkZXJhYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX29yZGVyYWJsZTtcbiAgfVxuXG4gIHNldCByZXNpemFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9yZXNpemFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5yZXNpemFibGUgPSB0aGlzLl9yZXNpemFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlc2l6YWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9yZXNpemFibGU7XG4gIH1cblxuICBzZXQgc2VhcmNoYWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX3NlYXJjaGFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5zZWFyY2hhYmxlID0gdGhpcy5fc2VhcmNoYWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2VhcmNoYWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hhYmxlO1xuICB9XG5cbiAgc2V0IGdyb3VwYWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX2dyb3VwYWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLmdyb3VwYWJsZSA9IHRoaXMuX2dyb3VwYWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgZ3JvdXBhYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2dyb3VwYWJsZTtcbiAgfVxuXG4gIGdldFNRTFR5cGUoKTogbnVtYmVyIHtcbiAgICBpZiAoISh0aGlzLnNxbFR5cGUgJiYgdGhpcy5zcWxUeXBlLmxlbmd0aCA+IDApKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnVElNRVNUQU1QJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ0lOVEVHRVInO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnQk9PTEVBTic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlYWwnOlxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdET1VCTEUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX1NRTFR5cGUgPSBTUUxUeXBlcy5nZXRTUUxUeXBlVmFsdWUodGhpcy5zcWxUeXBlKTtcbiAgICByZXR1cm4gdGhpcy5fU1FMVHlwZTtcbiAgfVxuXG4gIHNldCBmaWx0ZXJTb3VyY2UodmFsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsb3dlclZhbCA9ICh2YWwgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fZmlsdGVyU291cmNlID0gKGxvd2VyVmFsID09PSAncmVuZGVyJyB8fCBsb3dlclZhbCA9PT0gJ2RhdGEnIHx8IGxvd2VyVmFsID09PSAnYm90aCcpID8gbG93ZXJWYWwgOiAncmVuZGVyJztcbiAgfVxuXG4gIGdldCBmaWx0ZXJTb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyU291cmNlO1xuICB9XG59XG4iLCI8c3BhbiAjY29udGFpbmVyPlxuPC9zcGFuPiJdfQ==
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFaEksTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFFM0MsTUFBTTtJQUdOLE9BQU87SUFHUCx5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QUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciwgTnVtYmVySW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPUGVyY2VudGFnZVZhbHVlQmFzZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9vLXBlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9kYXRlLWZpbHRlci1mdW5jdGlvbi50eXBlJztcbmltcG9ydCB7IEVycm9yRGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Vycm9yLWRhdGEudHlwZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IE9EYXRlVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvby1kYXRlLXZhbHVlLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IGVkaXRvcnNNYXBwaW5nLCBPX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFMsIE9fVEFCTEVfQ0VMTF9FRElUT1JTX09VVFBVVFMgfSBmcm9tICcuL2NlbGwtZWRpdG9yL2NlbGwtZWRpdG9yJztcbmltcG9ydCB7IE9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLCBPX1RBQkxFX0NFTExfUkVOREVSRVJTX09VVFBVVFMsIHJlbmRlcmVyc01hcHBpbmcgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXIvY2VsbC1yZW5kZXJlcic7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTiA9IFtcbiAgLy8gYXR0ciBbc3RyaW5nXTogY29sdW1uIG5hbWUuXG4gICdhdHRyJyxcblxuICAvLyB0aXRsZSBbc3RyaW5nXTogY29sdW1uIHRpdGxlLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3RpdGxlJyxcblxuICAvLyB0aXRsZS1hbGlnbiBbc3RhcnQgfCBjZW50ZXIgfCBlbmRdOiBjb2x1bW4gdGl0bGUgYWxpZ25tZW50LiBEZWZhdWx0OiBjZW50ZXIuXG4gICd0aXRsZUFsaWduOiB0aXRsZS1hbGlnbicsXG5cbiAgLy8gY29udGVudC1hbGlnbiBbc3RhcnQgfCBjZW50ZXIgfCBlbmRdOiBjb2x1bW4gY29udGVudCBhbGlnbm1lbnQuXG4gICdjb250ZW50QWxpZ246IGNvbnRlbnQtYWxpZ24nLFxuXG4gIC8vIG9yZGVyYWJsZSBbbm98eWVzXTogY29sdW1uIGNhbiBiZSBzb3J0ZWQuIERlZmF1bHQ6IHllcy5cbiAgJ29yZGVyYWJsZScsXG5cbiAgLy8gc2VhcmNoYWJsZSBbbm98eWVzXTogc2VhcmNoaW5ncyBhcmUgcGVyZm9ybWVkIGludG8gY29sdW1uIGNvbnRlbnQuIERlZmF1bHQ6IHllcy5cbiAgJ3NlYXJjaGFibGUnLFxuXG4gIC8vIGdyb3VwYWJsZSBbbm98eWVzfHRydWV8ZmFsc2VdOiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGNvbHVtbiBjYW4gYmUgZ3JvdXBhYmxlXG4gICdncm91cGFibGUnLFxuXG4gIC8vIHR5cGUgW2Jvb2xlYW58aW50ZWdlcnxyZWFsfGN1cnJlbmN5fGRhdGV8aW1hZ2VdOiBjb2x1bW4gdHlwZS4gRGVmYXVsdDogbm8gdmFsdWUgKHN0cmluZykuXG4gICd0eXBlJyxcblxuICAvLyBlZGl0YWJsZSBbbm98eWVzXTogY29sdW1uIGNhbiBiZSBlZGl0ZWQgZGlyZWN0bHkgb3ZlciB0aGUgdGFibGUuIERlZmF1bHQ6IG5vLlxuICAnZWRpdGFibGUnLFxuXG4gICd3aWR0aCcsXG5cbiAgLy8gb25seSBpbiBwaXhlbHNcbiAgJ21pbldpZHRoOiBtaW4td2lkdGgnLFxuXG4gIC8vIG9ubHkgaW4gcGl4ZWxzXG4gICdtYXhXaWR0aDogbWF4LXdpZHRoJyxcblxuICAvLyBhc3luYy1sb2FkIFtub3x5ZXN8dHJ1ZXxmYWxzZV06IGFzeW5jaHJvbm91cyBxdWVyeS4gRGVmYXVsdDogbm9cbiAgJ2FzeW5jTG9hZCA6IGFzeW5jLWxvYWQnLFxuXG4gIC8vIHNxbHR5cGVbc3RyaW5nXTogRGF0YSB0eXBlIGFjY29yZGluZyB0byBKYXZhIHN0YW5kYXJkLiBTZWUgU1FMVHlwZSBjbGFzcy4gRGVmYXVsdDogJ09USEVSJ1xuICAnc3FsVHlwZTogc3FsLXR5cGUnLFxuXG4gICd0b29sdGlwJyxcblxuICAndG9vbHRpcFZhbHVlOiB0b29sdGlwLXZhbHVlJyxcblxuICAndG9vbHRpcEZ1bmN0aW9uOiB0b29sdGlwLWZ1bmN0aW9uJyxcblxuICAnbXVsdGlsaW5lJyxcblxuICAncmVzaXphYmxlJyxcblxuICAnZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uOiBmaWx0ZXItZXhwcmVzc2lvbi1mdW5jdGlvbicsXG5cbiAgJ2NsYXNzJyxcblxuICAnYW5ndWxhclZhbGlkYXRvcnNGbjogdmFsaWRhdG9ycycsXG5cbiAgJ2FuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnM6IHZhbGlkYXRvcnMtZXJyb3JzJyxcblxuICAnYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuOiBhc3luYy12YWxpZGF0b3JzJyxcbiAgJ3ZhbHVlQ29sdW1uOiB2YWx1ZS1jb2x1bW4nLFxuXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLFxuICAuLi5PX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFNcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DT0xVTU4gPSBbXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfT1VUUFVUUyxcbiAgLi4uT19UQUJMRV9DRUxMX0VESVRPUlNfT1VUUFVUU1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OLFxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPVGFibGVDb2x1bW4sIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHVibGljIHJlbmRlcmVyOiBhbnk7XG4gIHB1YmxpYyBlZGl0b3I6IGFueTtcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuICBwdWJsaWMgYXR0cjogc3RyaW5nO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgcHVibGljIHRpdGxlQWxpZ246IHN0cmluZztcbiAgcHVibGljIGNvbnRlbnRBbGlnbjogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHB1YmxpYyBzcWxUeXBlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfU1FMVHlwZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX29yZGVyYWJsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9yZXNpemFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9ncm91cGFibGU6IGJvb2xlYW47XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgZWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHdpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBtaW5XaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgbWF4V2lkdGg6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyB0b29sdGlwOiBib29sZWFuID0gZmFsc2U7XG4gIHRvb2x0aXBWYWx1ZTogc3RyaW5nO1xuICB0b29sdGlwRnVuY3Rpb246IChyb3dEYXRhOiBhbnkpID0+IGFueTtcbiAgcHVibGljIGNsYXNzOiBzdHJpbmc7XG4gIHB1YmxpYyB2YWx1ZUNvbHVtbjogc3RyaW5nO1xuXG4gIHNldCBtdWx0aWxpbmUodmFsOiBib29sZWFuKSB7XG4gICAgdmFsID0gVXRpbC5wYXJzZUJvb2xlYW4oU3RyaW5nKHZhbCkpO1xuICAgIHRoaXMuX211bHRpbGluZSA9IHZhbDtcbiAgfVxuICBnZXQgbXVsdGlsaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aWxpbmU7XG4gIH1cbiAgcHJvdGVjdGVkIF9tdWx0aWxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgYW5ndWxhclZhbGlkYXRvcnNGbjogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICBwdWJsaWMgYW5ndWxhclZhbGlkYXRvcnNGbkVycm9yczogRXJyb3JEYXRhW10gPSBbXTtcblxuICBwdWJsaWMgYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcblxuICBmaWx0ZXJFeHByZXNzaW9uRnVuY3Rpb246IChjb2x1bW5BdHRyOiBzdHJpbmcsIHF1aWNrRmlsdGVyPzogc3RyaW5nKSA9PiBFeHByZXNzaW9uO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGJhc2UgKi9cbiAgcHVibGljIF9maWx0ZXJTb3VyY2U6ICdyZW5kZXInIHwgJ2RhdGEnIHwgJ2JvdGgnID0gJ3JlbmRlcic7XG4gIHB1YmxpYyBmaWx0ZXJGdW5jdGlvbjogKGNlbGxWYWx1ZTogYW55LCByb3dWYWx1ZTogYW55LCBxdWlja0ZpbHRlcj86IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgLyogaW5wdXQgcmVuZGVyZXIgZGF0ZSAqL1xuICBwcm90ZWN0ZWQgZm9ybWF0OiBzdHJpbmc7XG4gIC8qIGlucHV0IHJlbmRlcmVyIGludGVnZXIgKi9cbiAgcHJvdGVjdGVkIGdyb3VwaW5nOiBhbnkgPSB0cnVlO1xuICBwcm90ZWN0ZWQgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZyA9ICcsJztcbiAgLyogaW5wdXQgcmVuZGVyZXIgcmVhbCAqL1xuICBwcm90ZWN0ZWQgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nID0gJy4nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGN1cnJlbmN5ICovXG4gIHByb3RlY3RlZCBjdXJyZW5jeVN5bWJvbDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY3VycmVuY3lTeW1ib2xQb3NpdGlvbjogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGJvb2xlYW4gKi9cbiAgcHJvdGVjdGVkIHRydWVWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgZmFsc2VWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyVHJ1ZVZhbHVlOiBhbnk7XG4gIHByb3RlY3RlZCByZW5kZXJGYWxzZVZhbHVlOiBhbnk7XG4gIHByb3RlY3RlZCByZW5kZXJUeXBlOiBzdHJpbmcgPSAnc3RyaW5nJztcbiAgcHJvdGVjdGVkIGJvb2xlYW5UeXBlOiBzdHJpbmcgPSAnYm9vbGVhbic7XG5cbiAgLyogaW5wdXQgaW1hZ2UgKi9cbiAgcHJvdGVjdGVkIGltYWdlVHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYXZhdGFyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBlbXB0eUltYWdlOiBzdHJpbmc7XG5cbiAgLyogaW5wdXQgcmVuZGVyZXIgYWN0aW9uICovXG4gIHByb3RlY3RlZCBpY29uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhY3Rpb246IHN0cmluZztcbiAgcHJvdGVjdGVkIHRleHQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGljb25Qb3NpdGlvbjogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIHNlcnZpY2UgKi9cbiAgcHJvdGVjdGVkIGVudGl0eTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2VydmljZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY29sdW1uczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcGFyZW50S2V5czogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcXVlcnlNZXRob2Q6IHN0cmluZyA9IENvZGVzLlFVRVJZX01FVEhPRDtcbiAgcHJvdGVjdGVkIHNlcnZpY2VUeXBlOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIC8qIGlucHV0IHJlbmRlcmVyIHRyYW5zbGF0ZSAqL1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlQXJnc0ZuOiAocm93RGF0YTogYW55KSA9PiBhbnlbXTtcbiAgLyogaW5wdXQgdGltZSAqL1xuICBvRGF0ZUZvcm1hdCA9ICdMJztcbiAgb0hvdXJGb3JtYXQgPSAyNDtcblxuICAvKiBpbnB1dCByZW5kZXJlciBwZXJjZW50YWdlICovXG4gIHZhbHVlQmFzZTogT1BlcmNlbnRhZ2VWYWx1ZUJhc2VUeXBlID0gMTtcblxuICAvKiBpbnB1dCByZW5kZXJlciBhY3Rpb24gKi9cbiAgcHJvdGVjdGVkIHN2Z0ljb246IHN0cmluZztcblxuICAvKiBpbnB1dCBlZGl0b3IgKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCBvcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dQbGFjZUhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvbGFiZWw6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVwZGF0ZVJlY29yZE9uRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogaW5wdXQgZWRpdG9yIGRhdGUgKi9cbiAgcHJvdGVjdGVkIGxvY2FsZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgb1N0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyA9ICdtb250aCc7XG4gIHByb3RlY3RlZCBvTWluRGF0ZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgb01heERhdGU6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCBvVG91Y2hVaTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgb1N0YXJ0QXQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGZpbHRlckRhdGU6IERhdGVGaWx0ZXJGdW5jdGlvbjtcbiAgcHJvdGVjdGVkIGRhdGVWYWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG5cbiAgLyogaW5wdXQgZWRpdG9yIGludGVnZXIgKi9cbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWluOiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1heDogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBzdGVwOiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1pbkRlY2ltYWxEaWdpdHM6IG51bWJlciA9IDI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1heERlY2ltYWxEaWdpdHM6IG51bWJlciA9IDI7XG5cbiAgLyogaW5wdXQgZWRpdG9yIGJvb2xlYW4gKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGluZGV0ZXJtaW5hdGVPbk51bGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGF1dG9Db21taXQ6IGJvb2xlYW47XG5cbiAgLyogb3V0cHV0IGNlbGwgcmVuZGVyZXIgYWN0aW9uICovXG4gIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgLyogb3V0cHV0IGNlbGwgZWRpdG9yICovXG4gIGVkaXRpb25TdGFydGVkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBlZGl0aW9uQ2FuY2VsbGVkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBlZGl0aW9uQ29tbWl0dGVkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBvblBvc3RVcGRhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGFzeW5jTG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUNvbXBvbmVudCkpIHB1YmxpYyB0YWJsZTogT1RhYmxlQ29tcG9uZW50LFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gIH1cblxuICBzdGF0aWMgYWRkRWRpdG9yKHR5cGU6IHN0cmluZywgZWRpdG9yQ2xhc3NSZWZlcmVuY2U6IGFueSkge1xuICAgIGlmICghZWRpdG9yc01hcHBpbmcuaGFzT3duUHJvcGVydHkodHlwZSkgJiYgVXRpbC5pc0RlZmluZWQoZWRpdG9yQ2xhc3NSZWZlcmVuY2UpKSB7XG4gICAgICBlZGl0b3JzTWFwcGluZ1t0eXBlXSA9IGVkaXRvckNsYXNzUmVmZXJlbmNlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ3JvdXBpbmcgPSBVdGlsLnBhcnNlQm9vbGVhbih0aGlzLmdyb3VwaW5nLCB0cnVlKTtcbiAgICB0aGlzLnRpdGxlQWxpZ24gPSB0aGlzLnBhcnNlVGl0bGVBbGlnbigpO1xuICAgIHRoaXMudGFibGUucmVnaXN0ZXJDb2x1bW4odGhpcyk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnRhYmxlLm9uUmVpbml0aWFsaXplLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRhYmxlLnJlZ2lzdGVyQ29sdW1uKHRoaXMpKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVSZW5kZXJlcigpO1xuICAgIHRoaXMuY3JlYXRlRWRpdG9yKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHBhcnNlVGl0bGVBbGlnbigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsaWduID0gKHRoaXMudGl0bGVBbGlnbiB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gQ29kZXMuQVZBSUxBQkxFX0NPTFVNTl9USVRMRV9BTElHTlMuaW5kZXhPZihhbGlnbikgIT09IC0xID8gYWxpZ24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgb3JpZ2luYWxXaWR0aCgpIHtcbiAgICBsZXQgb3JpZ2luYWxXaWR0aCA9IHRoaXMud2lkdGg7XG4gICAgY29uc3QgcHhWYWwgPSBVdGlsLmV4dHJhY3RQaXhlbHNWYWx1ZShvcmlnaW5hbFdpZHRoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocHhWYWwpKSB7XG4gICAgICBvcmlnaW5hbFdpZHRoID0gcHhWYWwgKyAnJztcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsV2lkdGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlUmVuZGVyZXIoKTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnJlbmRlcmVyKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnR5cGUpKSB7XG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSByZW5kZXJlcnNNYXBwaW5nW3RoaXMudHlwZV07XG4gICAgICBpZiAoY29tcG9uZW50UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IG5ld1JlbmRlcmVyO1xuICAgICAgICBjb25zdCByZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50UmVmKTtcbiAgICAgICAgbmV3UmVuZGVyZXIgPSByZWYuaW5zdGFuY2U7XG4gICAgICAgIG5ld1JlbmRlcmVyLmZpbHRlclNvdXJjZSA9IHRoaXMuZmlsdGVyU291cmNlO1xuICAgICAgICBuZXdSZW5kZXJlci5maWx0ZXJGdW5jdGlvbiA9IHRoaXMuZmlsdGVyRnVuY3Rpb247XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuY3VycmVuY3lTeW1ib2wgPSB0aGlzLmN1cnJlbmN5U3ltYm9sO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuY3VycmVuY3lTeW1ib2xQb3NpdGlvbiA9IHRoaXMuY3VycmVuY3lTeW1ib2xQb3NpdGlvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmRlY2ltYWxTZXBhcmF0b3IgPSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5taW5EZWNpbWFsRGlnaXRzID0gdGhpcy5taW5EZWNpbWFsRGlnaXRzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWF4RGVjaW1hbERpZ2l0cyA9IHRoaXMubWF4RGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmdyb3VwaW5nID0gdGhpcy5ncm91cGluZztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRob3VzYW5kU2VwYXJhdG9yID0gdGhpcy50aG91c2FuZFNlcGFyYXRvcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZm9ybWF0ID0gdGhpcy5mb3JtYXQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZvcm1hdCA9IHRoaXMuZm9ybWF0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRydWVWYWx1ZSA9IHRoaXMudHJ1ZVZhbHVlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZmFsc2VWYWx1ZSA9IHRoaXMuZmFsc2VWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlclRydWVWYWx1ZSA9IHRoaXMucmVuZGVyVHJ1ZVZhbHVlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIucmVuZGVyRmFsc2VWYWx1ZSA9IHRoaXMucmVuZGVyRmFsc2VWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlclR5cGUgPSB0aGlzLnJlbmRlclR5cGU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ib29sZWFuVHlwZSA9IHRoaXMuYm9vbGVhblR5cGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnZhbHVlQmFzZSA9IHRoaXMudmFsdWVCYXNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncmVhbCc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5kZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWluRGVjaW1hbERpZ2l0cyA9IHRoaXMubWluRGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1heERlY2ltYWxEaWdpdHMgPSB0aGlzLm1heERlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pbWFnZVR5cGUgPSB0aGlzLmltYWdlVHlwZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmF2YXRhciA9IHRoaXMuYXZhdGFyO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZW1wdHlJbWFnZSA9IHRoaXMuZW1wdHlJbWFnZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2FjdGlvbic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pY29uID0gdGhpcy5pY29uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYWN0aW9uID0gdGhpcy5hY3Rpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50ZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuaWNvblBvc2l0aW9uID0gdGhpcy5pY29uUG9zaXRpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5vbkNsaWNrID0gdGhpcy5vbkNsaWNrO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5lbnRpdHkgPSB0aGlzLmVudGl0eTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnNlcnZpY2UgPSB0aGlzLnNlcnZpY2U7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5jb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudmFsdWVDb2x1bW4gPSB0aGlzLnZhbHVlQ29sdW1uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIucGFyZW50S2V5cyA9IHRoaXMucGFyZW50S2V5cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnF1ZXJ5TWV0aG9kID0gdGhpcy5xdWVyeU1ldGhvZDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnNlcnZpY2VUeXBlID0gdGhpcy5zZXJ2aWNlVHlwZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRyYW5zbGF0ZSA9IHRoaXMudHJhbnNsYXRlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndHJhbnNsYXRlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRyYW5zbGF0ZUFyZ3NGbiA9IHRoaXMudHJhbnNsYXRlQXJnc0ZuO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnY2hpcCc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pY29uID0gdGhpcy5pY29uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuc3ZnT2NvbiA9IHRoaXMuc3ZnSWNvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmljb25Qb3NpdGlvbiA9IHRoaXMuaWNvblBvc2l0aW9uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudHJhbnNsYXRlID0gdGhpcy50cmFuc2xhdGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVuZGVyZXIobmV3UmVuZGVyZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGJ1aWxkQ2VsbEVkaXRvcih0eXBlOiBzdHJpbmcsIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJvcHNPcmlnaW46IGFueSwgcmVnaXN0ZXJJbkNvbHVtbjogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBsZXQgZWRpdG9yO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGVkaXRvcnNNYXBwaW5nW3R5cGVdIHx8IGVkaXRvcnNNYXBwaW5nLnRleHQ7XG4gICAgaWYgKGNvbXBvbmVudFJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZiA9IGNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50UmVmKTtcbiAgICBlZGl0b3IgPSByZWYuaW5zdGFuY2U7XG4gICAgaWYgKHByb3BzT3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICBlZGl0b3IuZm9ybWF0ID0gcHJvcHNPcmlnaW4uZm9ybWF0O1xuICAgICAgICAgIGVkaXRvci5sb2NhbGUgPSBwcm9wc09yaWdpbi5sb2NhbGU7XG4gICAgICAgICAgZWRpdG9yLm9TdGFydFZpZXcgPSBwcm9wc09yaWdpbi5vU3RhcnRWaWV3O1xuICAgICAgICAgIGVkaXRvci5vTWluRGF0ZSA9IHByb3BzT3JpZ2luLm9NaW5EYXRlO1xuICAgICAgICAgIGVkaXRvci5vTWF4RGF0ZSA9IHByb3BzT3JpZ2luLm9NYXhEYXRlO1xuICAgICAgICAgIGVkaXRvci5vVG91Y2hVaSA9IHByb3BzT3JpZ2luLm9Ub3VjaFVpO1xuICAgICAgICAgIGVkaXRvci5vU3RhcnRBdCA9IHByb3BzT3JpZ2luLm9TdGFydEF0O1xuICAgICAgICAgIGVkaXRvci5maWx0ZXJEYXRlID0gcHJvcHNPcmlnaW4uZmlsdGVyRGF0ZTtcbiAgICAgICAgICBlZGl0b3IuZGF0ZVZhbHVlVHlwZSA9IHByb3BzT3JpZ2luLmRhdGVWYWx1ZVR5cGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICAgIGVkaXRvci5vRGF0ZUZvcm1hdCA9IHByb3BzT3JpZ2luLm9EYXRlRm9ybWF0O1xuICAgICAgICAgIGVkaXRvci5vSG91ckZvcm1hdCA9IHByb3BzT3JpZ2luLm9Ib3VyRm9ybWF0O1xuICAgICAgICAgIGVkaXRvci5vRGF0ZUxvY2FsZSA9IHByb3BzT3JpZ2luLm9EYXRlTG9jYWxlO1xuICAgICAgICAgIGVkaXRvci5vTWluRGF0ZSA9IHByb3BzT3JpZ2luLm9NaW5EYXRlO1xuICAgICAgICAgIGVkaXRvci5vTWF4RGF0ZSA9IHByb3BzT3JpZ2luLm9NYXhEYXRlO1xuXG4gICAgICAgICAgZWRpdG9yLm9Ub3VjaFVpID0gcHJvcHNPcmlnaW4ub1RvdWNoVWk7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlU3RhcnRBdCA9IHByb3BzT3JpZ2luLm9EYXRlU3RhcnRBdDtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVUZXh0SW5wdXRFbmFibGVkID0gcHJvcHNPcmlnaW4ub0RhdGVUZXh0SW5wdXRFbmFibGVkO1xuXG4gICAgICAgICAgZWRpdG9yLm9Ib3VyTWluID0gcHJvcHNPcmlnaW4ub0hvdXJNaW47XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyTWF4ID0gcHJvcHNPcmlnaW4ub0hvdXJNYXg7XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyVGV4dElucHV0RW5hYmxlZCA9IHByb3BzT3JpZ2luLm9Ib3VyVGV4dElucHV0RW5hYmxlZDtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJQbGFjZWhvbGRlciA9IHByb3BzT3JpZ2luLm9Ib3VyUGxhY2Vob2xkZXI7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlUGxhY2Vob2xkZXIgPSBwcm9wc09yaWdpbi5vRGF0ZVBsYWNlaG9sZGVyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICBlZGl0b3IuYm9vbGVhblR5cGUgPSBwcm9wc09yaWdpbi5ib29sZWFuVHlwZTtcbiAgICAgICAgICBlZGl0b3IuaW5kZXRlcm1pbmF0ZU9uTnVsbCA9IHByb3BzT3JpZ2luLmluZGV0ZXJtaW5hdGVPbk51bGw7XG4gICAgICAgICAgZWRpdG9yLmF1dG9Db21taXQgPSBwcm9wc09yaWdpbi5hdXRvQ29tbWl0O1xuICAgICAgICAgIGVkaXRvci50cnVlVmFsdWUgPSBwcm9wc09yaWdpbi50cnVlVmFsdWU7XG4gICAgICAgICAgZWRpdG9yLmZhbHNlVmFsdWUgPSBwcm9wc09yaWdpbi5mYWxzZVZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgY2FzZSAncmVhbCc6XG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHByb3BzT3JpZ2luLm1pbikpIHtcbiAgICAgICAgICAgIGVkaXRvci5taW4gPSBwcm9wc09yaWdpbi5taW47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChwcm9wc09yaWdpbi5tYXgpKSB7XG4gICAgICAgICAgICBlZGl0b3IubWF4ID0gcHJvcHNPcmlnaW4ubWF4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlZGl0b3Iuc3RlcCA9IFV0aWwuaXNEZWZpbmVkKHByb3BzT3JpZ2luLnN0ZXApID8gcHJvcHNPcmlnaW4uc3RlcCA6IGVkaXRvci5zdGVwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBlZGl0b3Iub2xhYmVsID0gcHJvcHNPcmlnaW4ub2xhYmVsO1xuICAgICAgZWRpdG9yLnR5cGUgPSBwcm9wc09yaWdpbi50eXBlO1xuICAgIH1cbiAgICBlZGl0b3IucmVnaXN0ZXJJbkNvbHVtbiA9IHJlZ2lzdGVySW5Db2x1bW47XG5cbiAgICByZXR1cm4gZWRpdG9yO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUVkaXRvcigpIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuZWRpdG9yKSAmJiB0aGlzLmVkaXRhYmxlKSB7XG4gICAgICBjb25zdCBuZXdFZGl0b3IgPSB0aGlzLmJ1aWxkQ2VsbEVkaXRvcih0aGlzLnR5cGUsIHRoaXMuY29udGFpbmVyLCB0aGlzKTtcbiAgICAgIGlmIChuZXdFZGl0b3IpIHtcbiAgICAgICAgbmV3RWRpdG9yLm9yZXF1aXJlZCA9IHRoaXMub3JlcXVpcmVkO1xuICAgICAgICBuZXdFZGl0b3Iuc2hvd1BsYWNlSG9sZGVyID0gdGhpcy5zaG93UGxhY2VIb2xkZXI7XG4gICAgICAgIG5ld0VkaXRvci51cGRhdGVSZWNvcmRPbkVkaXQgPSB0aGlzLnVwZGF0ZVJlY29yZE9uRWRpdDtcbiAgICAgICAgbmV3RWRpdG9yLnNob3dOb3RpZmljYXRpb25PbkVkaXQgPSB0aGlzLnNob3dOb3RpZmljYXRpb25PbkVkaXQ7XG4gICAgICAgIG5ld0VkaXRvci5lZGl0aW9uU3RhcnRlZCA9IHRoaXMuZWRpdGlvblN0YXJ0ZWQ7XG4gICAgICAgIG5ld0VkaXRvci5lZGl0aW9uQ2FuY2VsbGVkID0gdGhpcy5lZGl0aW9uQ2FuY2VsbGVkO1xuICAgICAgICBuZXdFZGl0b3IuZWRpdGlvbkNvbW1pdHRlZCA9IHRoaXMuZWRpdGlvbkNvbW1pdHRlZDtcbiAgICAgICAgbmV3RWRpdG9yLm9uUG9zdFVwZGF0ZVJlY29yZCA9IHRoaXMub25Qb3N0VXBkYXRlUmVjb3JkO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yKG5ld0VkaXRvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUmVuZGVyZXIocmVuZGVyZXI6IGFueSkge1xuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb0NvbC5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXI7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRWRpdG9yKGVkaXRvcjogYW55KSB7XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9Db2wuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgfVxuICAgIHRoaXMuZWRpdG9yLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHNldCBvcmRlcmFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9vcmRlcmFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5vcmRlcmFibGUgPSB0aGlzLl9vcmRlcmFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9yZGVyYWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vcmRlcmFibGU7XG4gIH1cblxuICBzZXQgcmVzaXphYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fcmVzaXphYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wucmVzaXphYmxlID0gdGhpcy5fcmVzaXphYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCByZXNpemFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fcmVzaXphYmxlO1xuICB9XG5cbiAgc2V0IHNlYXJjaGFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9zZWFyY2hhYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wuc2VhcmNoYWJsZSA9IHRoaXMuX3NlYXJjaGFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlYXJjaGFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoYWJsZTtcbiAgfVxuXG4gIHNldCBncm91cGFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9ncm91cGFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5ncm91cGFibGUgPSB0aGlzLl9ncm91cGFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyb3VwYWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9ncm91cGFibGU7XG4gIH1cblxuICBnZXRTUUxUeXBlKCk6IG51bWJlciB7XG4gICAgaWYgKCEodGhpcy5zcWxUeXBlICYmIHRoaXMuc3FsVHlwZS5sZW5ndGggPiAwKSkge1xuICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ1RJTUVTVEFNUCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdJTlRFR0VSJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ0JPT0xFQU4nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnRE9VQkxFJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9TUUxUeXBlID0gU1FMVHlwZXMuZ2V0U1FMVHlwZVZhbHVlKHRoaXMuc3FsVHlwZSk7XG4gICAgcmV0dXJuIHRoaXMuX1NRTFR5cGU7XG4gIH1cblxuICBzZXQgZmlsdGVyU291cmNlKHZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG93ZXJWYWwgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX2ZpbHRlclNvdXJjZSA9IChsb3dlclZhbCA9PT0gJ3JlbmRlcicgfHwgbG93ZXJWYWwgPT09ICdkYXRhJyB8fCBsb3dlclZhbCA9PT0gJ2JvdGgnKSA/IGxvd2VyVmFsIDogJ3JlbmRlcic7XG4gIH1cblxuICBnZXQgZmlsdGVyU291cmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclNvdXJjZTtcbiAgfVxufVxuIiwiPHNwYW4gI2NvbnRhaW5lcj5cbjwvc3Bhbj4iXX0=