ontimize-web-ngx 15.1.3 → 15.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/esm2020/lib/components/input/date-input/o-date-input.component.mjs +3 -3
  2. package/esm2020/lib/components/input/email-input/o-email-input.component.mjs +3 -3
  3. package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +3 -3
  4. package/esm2020/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +2 -2
  5. package/esm2020/lib/components/input/listpicker/o-list-picker.component.mjs +18 -8
  6. package/esm2020/lib/components/input/nif-input/o-nif-input.component.mjs +3 -3
  7. package/esm2020/lib/components/input/o-form-service-component.class.mjs +3 -3
  8. package/esm2020/lib/components/input/radio/o-radio.component.mjs +3 -3
  9. package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +35 -8
  10. package/esm2020/lib/components/input/textarea-input/o-textarea-input.component.mjs +3 -3
  11. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +97 -40
  12. package/esm2020/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.mjs +5 -3
  13. package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +30 -4
  14. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +2 -2
  15. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +13 -5
  16. package/esm2020/lib/components/table/o-table.component.mjs +7 -9
  17. package/esm2020/lib/config/o-providers.mjs +3 -2
  18. package/esm2020/lib/i18n/i18n.mjs +12 -3
  19. package/esm2020/lib/interfaces/index.mjs +2 -1
  20. package/esm2020/lib/interfaces/local-service.interface.mjs +2 -0
  21. package/esm2020/lib/services/factories.mjs +9 -1
  22. package/esm2020/lib/services/local-storage.service.mjs +6 -6
  23. package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +42 -16
  24. package/esm2020/lib/types/o-inputs-options.type.mjs +1 -1
  25. package/fesm2015/ontimize-web-ngx.mjs +268 -103
  26. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  27. package/fesm2020/ontimize-web-ngx.mjs +266 -103
  28. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  29. package/lib/components/input/date-input/o-date-input.component.d.ts +2 -2
  30. package/lib/components/input/integer-input/o-integer-input.component.d.ts +2 -2
  31. package/lib/components/input/listpicker/o-list-picker.component.d.ts +2 -2
  32. package/lib/components/input/o-form-service-component.class.d.ts +1 -1
  33. package/lib/components/input/text-input/o-text-input.component.d.ts +12 -5
  34. package/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.d.ts +18 -4
  35. package/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.d.ts +5 -1
  36. package/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.d.ts +4 -1
  37. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +6 -3
  38. package/lib/components/table/o-table.component.d.ts +8 -7
  39. package/lib/i18n/i18n.d.ts +9 -0
  40. package/lib/interfaces/index.d.ts +1 -0
  41. package/lib/interfaces/local-service.interface.d.ts +15 -0
  42. package/lib/services/factories.d.ts +9 -0
  43. package/lib/services/local-storage.service.d.ts +3 -1
  44. package/lib/services/ontimize-export-data-base-provider.service.d.ts +3 -0
  45. package/lib/types/o-inputs-options.type.d.ts +1 -0
  46. package/package.json +1 -1
  47. package/theming/styles/ontimize-v8/containers.scss +0 -5
@@ -10,7 +10,8 @@ import * as i1 from "../../../o-table.component";
10
10
  export const DEFAULT_INPUTS_O_TABLE_COLUMN_FILTER = [
11
11
  'columns',
12
12
  'preloadValues: preload-values',
13
- 'mode'
13
+ 'mode',
14
+ 'filterValuesInData: filter-values-in-data'
14
15
  ];
15
16
  export const DEFAULT_OUTPUTS_O_TABLE_COLUMN_FILTER = [];
16
17
  export class OTableColumnsFilterComponent {
@@ -31,6 +32,7 @@ export class OTableColumnsFilterComponent {
31
32
  this.table = table;
32
33
  this._mode = 'default';
33
34
  this.preloadValues = true;
35
+ this.filterValuesInData = 'current-page';
34
36
  this._columnsArray = [];
35
37
  this.columnsComparisonProperty = {};
36
38
  }
@@ -82,6 +84,28 @@ export class OTableColumnsFilterComponent {
82
84
  }
83
85
  return startView;
84
86
  }
87
+ getQueryMethodOfFilterColumn(attr) {
88
+ let queryMethod = '';
89
+ if (Util.isDefined(this.columnsArray)) {
90
+ this.columnsArray.forEach(column => {
91
+ if (column.attr == attr) {
92
+ queryMethod = column.queryMethod;
93
+ }
94
+ });
95
+ }
96
+ return queryMethod;
97
+ }
98
+ getFilterValuesInData(attr) {
99
+ let filterValuesInData = '';
100
+ if (Util.isDefined(this.columnsArray)) {
101
+ this.columnsArray.forEach(column => {
102
+ if (column.attr == attr) {
103
+ filterValuesInData = column.filterValuesInData;
104
+ }
105
+ });
106
+ }
107
+ return filterValuesInData;
108
+ }
85
109
  getColumnComparisonValue(column, val) {
86
110
  if (!column || this.columnsComparisonProperty[column.attr] === OTableColumnsFilterComponent.MODEL_COMPARISON_TYPE) {
87
111
  return val;
@@ -113,10 +137,12 @@ export class OTableColumnsFilterComponent {
113
137
  parseFilterColumns(columns) {
114
138
  return columns
115
139
  .map(x => {
116
- let obj = { attr: '', sort: '', startView: '' };
140
+ let obj = { attr: '', sort: '', startView: '', queryMethod: void 0, filterValuesInData: 'current-page' };
117
141
  obj.attr = x.attr;
118
142
  obj.sort = x.sort;
119
143
  obj.startView = x.startView;
144
+ obj.queryMethod = x.queryMethod;
145
+ obj.filterValuesInData = x.filterValuesInData;
120
146
  return obj;
121
147
  });
122
148
  }
@@ -125,7 +151,7 @@ OTableColumnsFilterComponent.DEFAULT_COMPARISON_TYPE = 'VIEW';
125
151
  OTableColumnsFilterComponent.MODEL_COMPARISON_TYPE = 'MODEL';
126
152
  OTableColumnsFilterComponent.OTableColumnsFilterModes = ['default', 'selection', 'custom'];
127
153
  OTableColumnsFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableColumnsFilterComponent, deps: [{ token: i0.Injector }, { token: forwardRef(() => OTableComponent) }], target: i0.ɵɵFactoryTarget.Component });
128
- OTableColumnsFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnsFilterComponent, selector: "o-table-columns-filter", inputs: { columns: "columns", preloadValues: ["preload-values", "preloadValues"], mode: "mode" }, queries: [{ propertyName: "filterColumns", predicate: OTableColumnsFilterColumnComponent, descendants: true }], ngImport: i0, template: ' ', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
154
+ OTableColumnsFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnsFilterComponent, selector: "o-table-columns-filter", inputs: { columns: "columns", preloadValues: ["preload-values", "preloadValues"], mode: "mode", filterValuesInData: ["filter-values-in-data", "filterValuesInData"] }, queries: [{ propertyName: "filterColumns", predicate: OTableColumnsFilterColumnComponent, descendants: true }], ngImport: i0, template: ' ', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
129
155
  __decorate([
130
156
  BooleanInputConverter(),
131
157
  __metadata("design:type", Boolean)
@@ -148,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
148
174
  type: ContentChildren,
149
175
  args: [OTableColumnsFilterColumnComponent, { descendants: true }]
150
176
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW5zLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW5zLWZpbHRlci9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQWlCLGtDQUFrQyxFQUFFLE1BQU0sbURBQW1ELENBQUM7OztBQUV0SCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRztJQUVsRCxTQUFTO0lBRVQsK0JBQStCO0lBRS9CLE1BQU07Q0FDUCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsRUFDcEQsQ0FBQztBQVVGLE1BQU0sT0FBTyw0QkFBNEI7SUFXdkMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUNJLElBQUksQ0FBQyxHQUFXO1FBQ2xCLE1BQU0sQ0FBQyxHQUFHLDRCQUE0QixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMs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NEIsOExBNEJ0QixrQ0FBa0MsZ0RBbEN6QyxHQUFHO0FBY2I7SUFBQyxxQkFBcUIsRUFBRTs7bUVBQ007NEZBVG5CLDRCQUE0QjtrQkFSeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsR0FBRztvQkFDYixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsTUFBTSxFQUFFLG9DQUFvQztvQkFDNUMsT0FBTyxFQUFFLHFDQUFxQztpQkFDL0M7OzBCQWtDSSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7NENBdkIzQyxhQUFhLE1BT1QsSUFBSTtzQkFEUCxLQUFLO2dCQWFzRSxhQUFhO3NCQUF4RixlQUFlO3VCQUFDLGtDQUFrQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRmlsdGVyQ29sdW1uLCBPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL28tdGFibGUtY29sdW1ucy1maWx0ZXItY29sdW1uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTl9GSUxURVIgPSBbXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgdGhhdCBtaWdodCBiZSBmaWx0ZXJlZCwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogYWxsIHZpc2libGUgY29sdW1ucy5cbiAgJ2NvbHVtbnMnLFxuICAvLyBwcmVsb2FkVmFsdWVzIFt0cnVlfGZhbHNlfHllc3xub106IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBsaXN0IHZhbHVlcyB3aGVuIHRoZSBmaWx0ZXIgZGlhbG9nIGlzIG9wZW5lZC4gRGVmYXVsdDogdHJ1ZS5cbiAgJ3ByZWxvYWRWYWx1ZXM6IHByZWxvYWQtdmFsdWVzJyxcbiAgLy8gbW9kZSBbZGVmYXVsdCB8IHNlbGVjdGlvbiB8ICBjdXN0b21dXG4gICdtb2RlJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTl9GSUxURVIgPSBbXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLWNvbHVtbnMtZmlsdGVyJyxcbiAgdGVtcGxhdGU6ICcgJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU5fRklMVEVSLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DT0xVTU5fRklMVEVSXG59KVxuXG5leHBvcnQgY2xhc3MgT1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyBERUZBVUxUX0NPTVBBUklTT05fVFlQRSA9ICdWSUVXJztcbiAgcHVibGljIHN0YXRpYyBNT0RFTF9DT01QQVJJU09OX1RZUEUgPSAnTU9ERUwnO1xuICBwdWJsaWMgc3RhdGljIE9UYWJsZUNvbHVtbnNGaWx0ZXJNb2RlcyA9IFsnZGVmYXVsdCcsICdzZWxlY3Rpb24nLCAnY3VzdG9tJ107XG5cbiAgcHJvdGVjdGVkIF9jb2x1bW5zOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfbW9kZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJlbG9hZFZhbHVlczogYm9vbGVhbiA9IHRydWU7XG5cbiAgZ2V0IG1vZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtb2RlKHZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgbSA9IE9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQuT1RhYmxlQ29sdW1uc0ZpbHRlck1vZGVzLmZpbmQoZSA9PiBlID09PSB2YWwpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChtKSkge1xuICAgICAgdGhpcy5fbW9kZSA9IG07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYG8tdGFibGUtY29sdW1ucy1maWx0ZXJgIG1vZGUgKCcgKyB2YWwgKyAnKScpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfY29sdW1uc0FycmF5OiBBcnJheTxPRmlsdGVyQ29sdW1uPiA9IFtdO1xuICBwcm90ZWN0ZWQgY29sdW1uc0NvbXBhcmlzb25Qcm9wZXJ0eTogb2JqZWN0ID0ge307XG5cbiAgQENvbnRlbnRDaGlsZHJlbihPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGZpbHRlckNvbHVtbnM6IFF1ZXJ5TGlzdDxPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVDb21wb25lbnQpKSBwcm90ZWN0ZWQgdGFibGU6IE9UYWJsZUNvbXBvbmVudFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbHVtbnNBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29sdW1uc0FycmF5ID0gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLnZpc2libGVDb2x1bW5zO1xuICAgIH1cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgY29sdW1ucyA9IFV0aWwucGFyc2VBcnJheSh0aGlzLl9jb2x1bW5zLCB0cnVlKTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sRGF0YSwgaSwgYXJyKSA9PiB7XG4gICAgICBjb25zdCBjb2xEZWYgPSBjb2xEYXRhLnNwbGl0KENvZGVzLlRZUEVfU0VQQVJBVE9SKTtcbiAgICAgIGNvbnN0IGNvbE5hbWUgPSBjb2xEZWZbMF07XG4gICAgICBsZXQgY29tcFR5cGUgPSAoY29sRGVmWzFdIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgaWYgKFtPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50LkRFRkFVTFRfQ09NUEFSSVNPTl9UWVBFLCBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Lk1PREVMX0NPTVBBUklTT05fVFlQRV0uaW5kZXhPZihjb21wVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIGNvbXBUeXBlID0gT1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudC5ERUZBVUxUX0NPTVBBUklTT05fVFlQRTtcbiAgICAgIH1cbiAgICAgIGFycltpXSA9IGNvbE5hbWU7XG4gICAgICBzZWxmLmNvbHVtbnNDb21wYXJpc29uUHJvcGVydHlbY29sTmFtZV0gPSBjb21wVHlwZTtcbiAgICB9KTtcblxuICAgIHRoaXMudGFibGUuc2V0T1RhYmxlQ29sdW1uc0ZpbHRlcih0aGlzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5maWx0ZXJDb2x1bW5zKSkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkgPSB0aGlzLmNvbHVtbnNBcnJheS5jb25jYXQodGhpcy5wYXJzZUZpbHRlckNvbHVtbnModGhpcy5maWx0ZXJDb2x1bW5zKSk7XG4gICAgfVxuICB9XG5cbiAgaXNDb2x1bW5GaWx0ZXJhYmxlKGF0dHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmNvbHVtbnNBcnJheS5maW5kKHggPT4geC5hdHRyID09PSBhdHRyKSk7XG4gIH1cblxuICBnZXRTb3J0VmFsdWVPZkZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBzb3J0VmFsdWUgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkpKSB7XG4gICAgICB0aGlzLmNvbHVtbnNBcnJheS5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0ciA9PSBhdHRyKSB7XG4gICAgICAgICAgc29ydFZhbHVlID0gY29sdW1uLnNvcnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc29ydFZhbHVlO1xuICB9XG5cbiAgZ2V0U3RhcnRWaWV3VmFsdWVPZkZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBzdGFydFZpZXcgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkpKSB7XG4gICAgICB0aGlzLmNvbHVtbnNBcnJheS5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0ciA9PSBhdHRyKSB7XG4gICAgICAgICAgc3RhcnRWaWV3ID0gY29sdW1uLnN0YXJ0VmlldztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzdGFydFZpZXc7XG4gIH1cblxuICBnZXRDb2x1bW5Db21wYXJpc29uVmFsdWUoY29sdW1uOiBPQ29sdW1uLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKCFjb2x1bW4gfHwgdGhpcy5jb2x1bW5zQ29tcGFyaXNvblByb3BlcnR5W2NvbHVtbi5hdHRyXSA9PT0gT1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudC5NT0RFTF9DT01QQVJJU09OX1RZUEUpIHtcbiAgICAgIHJldHVybiB2YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb2x1bW4ucmVuZGVyZXIgPyBjb2x1bW4ucmVuZGVyZXIuZ2V0Q2VsbERhdGEodmFsKSA6IHZhbDtcbiAgICB9XG4gIH1cblxuICBzZXQgY29sdW1ucyhhcmc6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBhcmc7XG4gICAgdGhpcy5fY29sdW1uc0FycmF5ID0gdGhpcy5wYXJzZUNvbHVtbnModGhpcy5fY29sdW1ucyk7XG4gIH1cblxuICBzZXQgY29sdW1uc0FycmF5KGFyZzogT0ZpbHRlckNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1uc0FycmF5ID0gYXJnO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnNBcnJheSgpOiBPRmlsdGVyQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zQXJyYXk7XG4gIH1cblxuICBwYXJzZUNvbHVtbnMoY29sdW1uczogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvbHVtbnMuc3BsaXQoJzsnKVxuICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgbGV0IG9iajogT0ZpbHRlckNvbHVtbiA9IHsgYXR0cjogJycsIHNvcnQ6ICcnLCBzdGFydFZpZXc6ICcnIH07XG4gICAgICAgIG9iai5hdHRyID0geDtcbiAgICAgICAgb2JqLnNvcnQgPSAnJztcbiAgICAgICAgb2JqLnN0YXJ0VmlldyA9ICcnO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSk7XG4gIH1cblxuICBwYXJzZUZpbHRlckNvbHVtbnMoY29sdW1uczogUXVlcnlMaXN0PE9UYWJsZUNvbHVtbnNGaWx0ZXJDb2x1bW5Db21wb25lbnQ+KSB7XG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgICAgIC5tYXAoeCA9PiB7XG4gICAgICAgIGxldCBvYmo6IE9GaWx0ZXJDb2x1bW4gPSB7IGF0dHI6ICcnLCBzb3J0OiAnJywgc3RhcnRWaWV3OiAnJyB9O1xuICAgICAgICBvYmouYXR0ciA9IHguYXR0cjtcbiAgICAgICAgb2JqLnNvcnQgPSB4LnNvcnQ7XG4gICAgICAgIG9iai5zdGFydFZpZXcgPSB4LnN0YXJ0VmlldztcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW5zLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW5zLWZpbHRlci9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQWlCLGtDQUFrQyxFQUFFLE1BQU0sbURBQW1ELENBQUM7OztBQUV0SCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRztJQUVsRCxTQUFTO0lBRVQsK0JBQStCO0lBRS9CLE1BQU07SUFFTiwyQ0FBMkM7Q0FDNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLEVBQ3BELENBQUM7QUFVRixNQUFNLE9BQU8sNEJBQTRCO0lBWXZDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFDSSxJQUFJLENBQUMsR0FBVztRQUNsQixNQUFNLENBQUMsR0FBRyw0QkFBNEIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVB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QUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFLEdBQUc7b0JBQ2IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE1BQU0sRUFBRSxvQ0FBb0M7b0JBQzVDLE9BQU8sRUFBRSxxQ0FBcUM7aUJBQy9DOzswQkFtQ0ksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDOzRDQXhCM0MsYUFBYSxNQVFULElBQUk7c0JBRFAsS0FBSztnQkFhc0UsYUFBYTtzQkFBeEYsZUFBZTt1QkFBQyxrQ0FBa0MsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0ZpbHRlckNvbHVtbiwgT1RhYmxlQ29sdW1uc0ZpbHRlckNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vY29sdW1ucy9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLWNvbHVtbi5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU5fRklMVEVSID0gW1xuICAvLyBjb2x1bW5zIFtzdHJpbmddOiBjb2x1bW5zIHRoYXQgbWlnaHQgYmUgZmlsdGVyZWQsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IGFsbCB2aXNpYmxlIGNvbHVtbnMuXG4gICdjb2x1bW5zJyxcbiAgLy8gcHJlbG9hZFZhbHVlcyBbdHJ1ZXxmYWxzZXx5ZXN8bm9dOiBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgbGlzdCB2YWx1ZXMgd2hlbiB0aGUgZmlsdGVyIGRpYWxvZyBpcyBvcGVuZWQuIERlZmF1bHQ6IHRydWUuXG4gICdwcmVsb2FkVmFsdWVzOiBwcmVsb2FkLXZhbHVlcycsXG4gIC8vIG1vZGUgW2RlZmF1bHQgfCBzZWxlY3Rpb24gfCAgY3VzdG9tXVxuICAnbW9kZScsXG4gIC8vZmlsdGVyLXZhbHVlcy1pbi1kYXRhOiAnY3VycmVudC1wYWdlJyB8ICdhbGwtZGF0YSc6IHNldCBtb2RlIHRvIGZpbHRlciBieS4gRGVmYXVsdCAnY3VycmVudC1wYWdlJ1xuICAnZmlsdGVyVmFsdWVzSW5EYXRhOiBmaWx0ZXItdmFsdWVzLWluLWRhdGEnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OX0ZJTFRFUiA9IFtcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29sdW1ucy1maWx0ZXInLFxuICB0ZW1wbGF0ZTogJyAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTl9GSUxURVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTl9GSUxURVJcbn0pXG5cbmV4cG9ydCBjbGFzcyBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIERFRkFVTFRfQ09NUEFSSVNPTl9UWVBFID0gJ1ZJRVcnO1xuICBwdWJsaWMgc3RhdGljIE1PREVMX0NPTVBBUklTT05fVFlQRSA9ICdNT0RFTCc7XG4gIHB1YmxpYyBzdGF0aWMgT1RhYmxlQ29sdW1uc0ZpbHRlck1vZGVzID0gWydkZWZhdWx0JywgJ3NlbGVjdGlvbicsICdjdXN0b20nXTtcblxuICBwcm90ZWN0ZWQgX2NvbHVtbnM6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9tb2RlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcmVsb2FkVmFsdWVzOiBib29sZWFuID0gdHJ1ZTtcbiAgZmlsdGVyVmFsdWVzSW5EYXRhID0gJ2N1cnJlbnQtcGFnZSc7XG5cbiAgZ2V0IG1vZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtb2RlKHZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgbSA9IE9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQuT1RhYmxlQ29sdW1uc0ZpbHRlck1vZGVzLmZpbmQoZSA9PiBlID09PSB2YWwpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChtKSkge1xuICAgICAgdGhpcy5fbW9kZSA9IG07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYG8tdGFibGUtY29sdW1ucy1maWx0ZXJgIG1vZGUgKCcgKyB2YWwgKyAnKScpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfY29sdW1uc0FycmF5OiBBcnJheTxPRmlsdGVyQ29sdW1uPiA9IFtdO1xuICBwcm90ZWN0ZWQgY29sdW1uc0NvbXBhcmlzb25Qcm9wZXJ0eTogb2JqZWN0ID0ge307XG5cbiAgQENvbnRlbnRDaGlsZHJlbihPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGZpbHRlckNvbHVtbnM6IFF1ZXJ5TGlzdDxPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVDb21wb25lbnQpKSBwcm90ZWN0ZWQgdGFibGU6IE9UYWJsZUNvbXBvbmVudFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbHVtbnNBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29sdW1uc0FycmF5ID0gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLnZpc2libGVDb2x1bW5zO1xuICAgIH1cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgY29sdW1ucyA9IFV0aWwucGFyc2VBcnJheSh0aGlzLl9jb2x1bW5zLCB0cnVlKTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sRGF0YSwgaSwgYXJyKSA9PiB7XG4gICAgICBjb25zdCBjb2xEZWYgPSBjb2xEYXRhLnNwbGl0KENvZGVzLlRZUEVfU0VQQVJBVE9SKTtcbiAgICAgIGNvbnN0IGNvbE5hbWUgPSBjb2xEZWZbMF07XG4gICAgICBsZXQgY29tcFR5cGUgPSAoY29sRGVmWzFdIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgaWYgKFtPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50LkRFRkFVTFRfQ09NUEFSSVNPTl9UWVBFLCBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Lk1PREVMX0NPTVBBUklTT05fVFlQRV0uaW5kZXhPZihjb21wVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIGNvbXBUeXBlID0gT1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudC5ERUZBVUxUX0NPTVBBUklTT05fVFlQRTtcbiAgICAgIH1cbiAgICAgIGFycltpXSA9IGNvbE5hbWU7XG4gICAgICBzZWxmLmNvbHVtbnNDb21wYXJpc29uUHJvcGVydHlbY29sTmFtZV0gPSBjb21wVHlwZTtcbiAgICB9KTtcblxuICAgIHRoaXMudGFibGUuc2V0T1RhYmxlQ29sdW1uc0ZpbHRlcih0aGlzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5maWx0ZXJDb2x1bW5zKSkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkgPSB0aGlzLmNvbHVtbnNBcnJheS5jb25jYXQodGhpcy5wYXJzZUZpbHRlckNvbHVtbnModGhpcy5maWx0ZXJDb2x1bW5zKSk7XG4gICAgfVxuICB9XG5cbiAgaXNDb2x1bW5GaWx0ZXJhYmxlKGF0dHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmNvbHVtbnNBcnJheS5maW5kKHggPT4geC5hdHRyID09PSBhdHRyKSk7XG4gIH1cblxuICBnZXRTb3J0VmFsdWVPZkZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBzb3J0VmFsdWUgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkpKSB7XG4gICAgICB0aGlzLmNvbHVtbnNBcnJheS5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0ciA9PSBhdHRyKSB7XG4gICAgICAgICAgc29ydFZhbHVlID0gY29sdW1uLnNvcnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc29ydFZhbHVlO1xuICB9XG5cbiAgZ2V0U3RhcnRWaWV3VmFsdWVPZkZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBzdGFydFZpZXcgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkpKSB7XG4gICAgICB0aGlzLmNvbHVtbnNBcnJheS5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0ciA9PSBhdHRyKSB7XG4gICAgICAgICAgc3RhcnRWaWV3ID0gY29sdW1uLnN0YXJ0VmlldztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzdGFydFZpZXc7XG4gIH1cblxuICBnZXRRdWVyeU1ldGhvZE9mRmlsdGVyQ29sdW1uKGF0dHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHF1ZXJ5TWV0aG9kID0gJyc7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuY29sdW1uc0FycmF5KSkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmF0dHIgPT0gYXR0cikge1xuICAgICAgICAgIHF1ZXJ5TWV0aG9kID0gY29sdW1uLnF1ZXJ5TWV0aG9kO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXJ5TWV0aG9kO1xuICB9XG5cbiAgZ2V0RmlsdGVyVmFsdWVzSW5EYXRhKGF0dHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGZpbHRlclZhbHVlc0luRGF0YSA9ICcnO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmNvbHVtbnNBcnJheSkpIHtcbiAgICAgIHRoaXMuY29sdW1uc0FycmF5LmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5hdHRyID09IGF0dHIpIHtcbiAgICAgICAgICBmaWx0ZXJWYWx1ZXNJbkRhdGEgPSBjb2x1bW4uZmlsdGVyVmFsdWVzSW5EYXRhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlclZhbHVlc0luRGF0YTtcbiAgfVxuXG4gIGdldENvbHVtbkNvbXBhcmlzb25WYWx1ZShjb2x1bW46IE9Db2x1bW4sIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAoIWNvbHVtbiB8fCB0aGlzLmNvbHVtbnNDb21wYXJpc29uUHJvcGVydHlbY29sdW1uLmF0dHJdID09PSBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Lk1PREVMX0NPTVBBUklTT05fVFlQRSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbHVtbi5yZW5kZXJlciA/IGNvbHVtbi5yZW5kZXJlci5nZXRDZWxsRGF0YSh2YWwpIDogdmFsO1xuICAgIH1cbiAgfVxuXG4gIHNldCBjb2x1bW5zKGFyZzogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IGFyZztcbiAgICB0aGlzLl9jb2x1bW5zQXJyYXkgPSB0aGlzLnBhcnNlQ29sdW1ucyh0aGlzLl9jb2x1bW5zKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zQXJyYXkoYXJnOiBPRmlsdGVyQ29sdW1uW10pIHtcbiAgICB0aGlzLl9jb2x1bW5zQXJyYXkgPSBhcmc7XG4gIH1cblxuICBnZXQgY29sdW1uc0FycmF5KCk6IE9GaWx0ZXJDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnNBcnJheTtcbiAgfVxuXG4gIHBhcnNlQ29sdW1ucyhjb2x1bW5zOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29sdW1ucy5zcGxpdCgnOycpXG4gICAgICAubWFwKHggPT4ge1xuICAgICAgICBsZXQgb2JqOiBPRmlsdGVyQ29sdW1uID0geyBhdHRyOiAnJywgc29ydDogJycsIHN0YXJ0VmlldzogJycgfTtcbiAgICAgICAgb2JqLmF0dHIgPSB4O1xuICAgICAgICBvYmouc29ydCA9ICcnO1xuICAgICAgICBvYmouc3RhcnRWaWV3ID0gJyc7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9KTtcbiAgfVxuXG4gIHBhcnNlRmlsdGVyQ29sdW1ucyhjb2x1bW5zOiBRdWVyeUxpc3Q8T1RhYmxlQ29sdW1uc0ZpbHRlckNvbHVtbkNvbXBvbmVudD4pIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgbGV0IG9iajogT0ZpbHRlckNvbHVtbiA9IHsgYXR0cjogJycsIHNvcnQ6ICcnLCBzdGFydFZpZXc6ICcnLCBxdWVyeU1ldGhvZDogdm9pZCAwLCBmaWx0ZXJWYWx1ZXNJbkRhdGE6ICdjdXJyZW50LXBhZ2UnIH07XG4gICAgICAgIG9iai5hdHRyID0geC5hdHRyO1xuICAgICAgICBvYmouc29ydCA9IHguc29ydDtcbiAgICAgICAgb2JqLnN0YXJ0VmlldyA9IHguc3RhcnRWaWV3O1xuICAgICAgICBvYmoucXVlcnlNZXRob2QgPSB4LnF1ZXJ5TWV0aG9kO1xuICAgICAgICBvYmouZmlsdGVyVmFsdWVzSW5EYXRhID0geC5maWx0ZXJWYWx1ZXNJbkRhdGE7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iXX0=
@@ -13,12 +13,12 @@ import { OStoreFilterDialogComponent } from '../../../../../shared/components/fi
13
13
  import { PermissionsUtils } from '../../../../../util/permissions';
14
14
  import { Util } from '../../../../../util/util';
15
15
  import { OTableBase } from '../../../o-table-base.class';
16
- import { OTableGroupByColumnsDialogComponent } from '../../dialog';
17
16
  import { OTableApplyConfigurationDialogComponent } from '../../dialog/apply-configuration/o-table-apply-configuration-dialog.component';
18
17
  import { OTableExportDialogComponent } from '../../dialog/export/o-table-export-dialog.component';
19
18
  import { OTableStoreConfigurationDialogComponent } from '../../dialog/store-configuration/o-table-store-configuration-dialog.component';
20
19
  import { OTableVisibleColumnsDialogComponent } from '../../dialog/visible-columns/o-table-visible-columns-dialog.component';
21
20
  import { OTableOptionComponent } from '../table-option/o-table-option.component';
21
+ import { OTableGroupByColumnsDialogComponent } from '../../dialog/group-by-columns/o-table-group-by-columns-dialog.component';
22
22
  import * as i0 from "@angular/core";
23
23
  import * as i1 from "@angular/material/dialog";
24
24
  import * as i2 from "@angular/common";
@@ -495,4 +495,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
495
495
  type: ViewChild,
496
496
  args: ['chartMenu', { static: true }]
497
497
  }] } });
498
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSWxGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEw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QUFJLE1BQU07MkJBQUMseUJBQXlCOzswQkFFNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7NENBN0R0QyxpQkFBaUIsTUFFakIsWUFBWSxNQUVaLHVCQUF1QixNQUV2QixnQkFBZ0IsTUFFaEIsdUJBQXVCLE1BRXZCLGlCQUFpQixNQUVqQixvQkFBb0IsTUFFcEIsd0JBQXdCLE1BRXhCLHdCQUF3QixNQVd4QixPQUFPO3NCQUROLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHbkMsdUJBQXVCO3NCQUR0QixTQUFTO3VCQUFDLHlCQUF5QjtnQkFHcEMsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFHL0IsNkJBQTZCO3NCQUQ1QixTQUFTO3VCQUFDLCtCQUErQjtnQkFHMUMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUduRCx1QkFBdUI7c0JBRHRCLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUkxRCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWTtnQkFHdkIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQjtnQkFHOUIsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFHL0IsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUNoYXJ0T25EZW1hbmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9jaGFydC1vbi1kZW1hbmQuaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlTWVudSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1tZW51LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LW9uLWRlbWFuZC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgT19DSEFSVF9PTl9ERU1BTkRfU0VSVklDRSwgT19SRVBPUlRfU0VSVklDRSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBPbnRpbWl6ZUV4cG9ydERhdGFQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9vbnRpbWl6ZS1leHBvcnQtZGF0YS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPTG9hZEZpbHRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlci9sb2FkLWZpbHRlci9vLWxvYWQtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1N0b3JlRmlsdGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVyL3N0b3JlLWZpbHRlci9vLXN0b3JlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgT1Blcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvby1wZXJtaXNzaW9ucy50eXBlJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlTWVudVBlcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1tZW51LXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQmFzZSB9IGZyb20gJy4uLy4uLy4uL28tdGFibGUtYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVHcm91cEJ5Q29sdW1uc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZyc7XG5pbXBvcnQgeyBPVGFibGVBcHBseUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvYXBwbHktY29uZmlndXJhdGlvbi9vLXRhYmxlLWFwcGx5LWNvbmZpZ3VyYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVFeHBvcnREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvZXhwb3J0L28tdGFibGUtZXhwb3J0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlU3RvcmVDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9nL3N0b3JlLWNvbmZpZ3VyYXRpb24vby10YWJsZS1zdG9yZS1jb25maWd1cmF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlVmlzaWJsZUNvbHVtbnNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvdmlzaWJsZS1jb2x1bW5zL28tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtb3B0aW9uL28tdGFibGUtb3B0aW9uLmNvbXBvbmVudCc7XG5cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfTUVOVSA9IFtcbiAgLy8gc2VsZWN0LWFsbC1jaGVja2JveCBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHNlbGVjdGlvbiBjaGVjayBib3hlcy4gRGVmYXVsdDogbm8uXG4gICdzZWxlY3RBbGxDaGVja2JveDogc2VsZWN0LWFsbC1jaGVja2JveCcsXG5cbiAgLy8gZXhwb3J0LWJ1dHRvbiBbbm98eWVzXTogc2hvdyBleHBvcnQgYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdleHBvcnRCdXR0b246IGV4cG9ydC1idXR0b24nLFxuXG4gIC8vIGNvbHVtbnMtdmlzaWJpbGl0eS1idXR0b24gW25vfHllc106IHNob3cgY29sdW1ucyB2aXNpYmlsaXR5IGJ1dHRvbi4gRGVmYXVsdDogeWVzLlxuICAnY29sdW1uc1Zpc2liaWxpdHlCdXR0b246IGNvbHVtbnMtdmlzaWJpbGl0eS1idXR0b24nLFxuXG4gIC8vIHNob3ctY29uZmlndXJhdGlvbi1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBjb25maWd1cmF0aW9uIGJ1dHRvbiBpbiBoZWFkZXIuIERlZmF1bHQ6IHllcy5cbiAgJ3Nob3dDb25maWd1cmF0aW9uT3B0aW9uOiBzaG93LWNvbmZpZ3VyYXRpb24tb3B0aW9uJyxcblxuICAvLyBzaG93LWZpbHRlci1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBmaWx0ZXIgbWVudSBvcHRpb24gaW4gdGhlIGhlYWRlciBtZW51XG4gICdzaG93RmlsdGVyT3B0aW9uOiBzaG93LWZpbHRlci1vcHRpb24nLFxuXG4gIC8vIHNob3ctZ3JvdXAtYnktb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgZ3JvdXAgYnkgbWVudSBvcHRpb24gaW4gdGhlIGhlYWRlciBtZW51XG4gICdzaG93R3JvdXBCeU9wdGlvbjogc2hvdy1ncm91cC1ieS1vcHRpb24nLFxuXG4gIC8vIHNob3ctcmVzZXQtd2lkdGgtb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgcmVzZXQgd2lkdGggbWVudSBvcHRpb24gaW4gdGhlIGhlYWRlciBtZW51XG4gICdzaG93UmVzZXRXaWR0aE9wdGlvbjogc2hvdy1yZXNldC13aWR0aC1vcHRpb24nLFxuXG4gIC8vIHNob3ctcmVwb3J0LW9uLWRlbWFuZC1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyByZXBvcnQgb24gZGVtYW5kIG9wdGlvbiBpbiB0aGUgaGVhZGVyIG1lbnVcbiAgJ3Nob3dSZXBvcnRPbkRlbWFuZE9wdGlvbjogc2hvdy1yZXBvcnQtb24tZGVtYW5kLW9wdGlvbicsXG5cbiAgLy8gc2hvdy1jaGFydHMtb24tZGVtYW5kLW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IGNoYXJ0cyBvbiBkZW1hbmQgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd0NoYXJ0c09uRGVtYW5kT3B0aW9uOiBzaG93LWNoYXJ0cy1vbi1kZW1hbmQtb3B0aW9uJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX01FTlUgPSBbXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tdGFibGUtbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfTUVOVSxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfTUVOVSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10YWJsZS1tZW51XSc6ICd0cnVlJ1xuICB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT1RhYmxlTWVudSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qIElucHV0cyAqL1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2VsZWN0QWxsQ2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGV4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Q29uZmlndXJhdGlvbk9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93RmlsdGVyT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dHcm91cEJ5T3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dSZXNldFdpZHRoT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dSZXBvcnRPbkRlbWFuZE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Q2hhcnRzT25EZW1hbmRPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG5cbiAgcHVibGljIG9uVmlzaWJsZUZpbHRlck9wdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qIEVuZCBvZiBpbnB1dHMgKi9cblxuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2U7XG5cbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIG1hdE1lbnU6IE1hdE1lbnU7XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEFsbENoZWNrYm94T3B0aW9uJylcbiAgc2VsZWN0QWxsQ2hlY2tib3hPcHRpb246IE9UYWJsZU9wdGlvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZXhwb3J0QnV0dG9uT3B0aW9uJylcbiAgZXhwb3J0QnV0dG9uT3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uJylcbiAgY29sdW1uc1Zpc2liaWxpdHlCdXR0b25PcHRpb246IE9UYWJsZU9wdGlvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudUJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBmaWx0ZXJNZW51QnV0dG9uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjb25maWd1cmF0aW9uTWVudUJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBjb25maWd1cmF0aW9uTWVudUJ1dHRvbjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51JylcbiAgZmlsdGVyTWVudTogTWF0TWVudTtcbiAgQFZpZXdDaGlsZCgnY29uZmlndXJhdGlvbk1lbnUnKVxuICBjb25maWd1cmF0aW9uTWVudTogTWF0TWVudTtcbiAgQFZpZXdDaGlsZCgnY29sdW1uRmlsdGVyT3B0aW9uJylcbiAgY29sdW1uRmlsdGVyT3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0TWVudScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGNoYXJ0TWVudTogTWF0TWVudTtcblxuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnM6IE9UYWJsZU1lbnVQZXJtaXNzaW9ucztcbiAgcHJvdGVjdGVkIG11dGF0aW9uT2JzZXJ2ZXJzOiBNdXRhdGlvbk9ic2VydmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIGV4cG9ydERhdGFQcm92aWRlcjogT250aW1pemVFeHBvcnREYXRhUHJvdmlkZXJTZXJ2aWNlO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT1RhYmxlQmFzZSkpIHByb3RlY3RlZCB0YWJsZTogT1RhYmxlQmFzZSxcblxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoT19DSEFSVF9PTl9ERU1BTkRfU0VSVklDRSkgcHVibGljIGNoYXJ0T25EZW1hbmRTZXJ2aWNlOiBJQ2hhcnRPbkRlbWFuZFNlcnZpY2UsXG5cbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9fUkVQT1JUX1NFUlZJQ0UpIHB1YmxpYyByZXBvcnRTZXJ2aWNlOiBJUmVwb3J0U2VydmljZVxuXG4gICkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KERpYWxvZ1NlcnZpY2UpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLnNuYWNrQmFyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFNuYWNrQmFyU2VydmljZSk7XG4gICAgdGhpcy5leHBvcnREYXRhUHJvdmlkZXIgPSB0aGlzLmluamVjdG9yLmdldChPbnRpbWl6ZUV4cG9ydERhdGFQcm92aWRlclNlcnZpY2UpXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy50YWJsZS5nZXRNZW51UGVybWlzc2lvbnMoKTtcbiAgfVxuXG4gIGdldCBpc0NvbHVtbkZpbHRlck9wdGlvbkFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZSAmJiB0aGlzLnRhYmxlLmlzQ29sdW1uRmlsdGVyc0FjdGl2ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICAgIGlmICghdGhpcy5wZXJtaXNzaW9ucy5pdGVtcyB8fCB0aGlzLnBlcm1pc3Npb25zLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2JveE9wdGlvbiAmJiAhdGhpcy5lbmFibGVkU2VsZWN0QWxsQ2hlY2tib3gpIHtcbiAgICAgIHRoaXMuZGlzYWJsZU9UYWJsZU9wdGlvbkNvbXBvbmVudCh0aGlzLnNlbGVjdEFsbENoZWNrYm94T3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXhwb3J0QnV0dG9uT3B0aW9uICYmICF0aGlzLmVuYWJsZWRFeHBvcnRCdXR0b24pIHtcbiAgICAgIHRoaXMuZGlzYWJsZU9UYWJsZU9wdGlvbkNvbXBvbmVudCh0aGlzLmV4cG9ydEJ1dHRvbk9wdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uICYmICF0aGlzLmVuYWJsZWRDb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbikge1xuICAgICAgdGhpcy5kaXNhYmxlT1RhYmxlT3B0aW9uQ29tcG9uZW50KHRoaXMuY29sdW1uc1Zpc2liaWxpdHlCdXR0b25PcHRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWx0ZXJNZW51QnV0dG9uICYmICF0aGlzLmVuYWJsZWRGaWx0ZXJNZW51KSB7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b24odGhpcy5maWx0ZXJNZW51QnV0dG9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbk1lbnVCdXR0b24gJiYgIXRoaXMuZW5hYmxlZENvbmZpZ3VyYXRpb25NZW51KSB7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b24odGhpcy5jb25maWd1cmF0aW9uTWVudUJ1dHRvbik7XG4gICAgfVxuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGlzYWJsZU9UYWJsZU9wdGlvbkNvbXBvbmVudChjb21wOiBPVGFibGVPcHRpb25Db21wb25lbnQpIHtcbiAgICBjb21wLmVuYWJsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBidXR0b25FTCA9IGNvbXAuZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTtcbiAgICBjb25zdCBvYnMgPSBQZXJtaXNzaW9uc1V0aWxzLnJlZ2lzdGVyRGlzYWJsZWRDaGFuZ2VzSW5Eb20oYnV0dG9uRUwpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcnMucHVzaChvYnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc2FibGVCdXR0b24oYnV0dG9uRUw6IEVsZW1lbnRSZWYpIHtcbiAgICBidXR0b25FTC5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBvYnMgPSBQZXJtaXNzaW9uc1V0aWxzLnJlZ2lzdGVyRGlzYWJsZWRDaGFuZ2VzSW5Eb20oYnV0dG9uRUwubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVycy5wdXNoKG9icyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVycykge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVycy5mb3JFYWNoKChtOiBNdXRhdGlvbk9ic2VydmVyKSA9PiB7XG4gICAgICAgIG0uZGlzY29ubmVjdCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPcHRpb25zKG9UYWJsZU9wdGlvbnM6IE9UYWJsZU9wdGlvbkNvbXBvbmVudFtdKSB7XG4gICAgY29uc3QgaXRlbXM6IE9QZXJtaXNzaW9uc1tdID0gdGhpcy5wZXJtaXNzaW9ucy5pdGVtcyB8fCBbXTtcbiAgICBjb25zdCBmaXhlZE9wdGlvbnMgPSBbJ3NlbGVjdC1hbGwtY2hlY2tib3gnLCAnZXhwb3J0JywgJ3Nob3ctaGlkZS1jb2x1bW5zJywgJ2ZpbHRlcicsICdjb25maWd1cmF0aW9uJ107XG4gICAgY29uc3QgdXNlckl0ZW1zOiBPUGVybWlzc2lvbnNbXSA9IGl0ZW1zLmZpbHRlcigocGVybTogT1Blcm1pc3Npb25zKSA9PiBmaXhlZE9wdGlvbnMuaW5kZXhPZihwZXJtLmF0dHIpID09PSAtMSk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdXNlckl0ZW1zLmZvckVhY2goKHBlcm06IE9QZXJtaXNzaW9ucykgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uID0gb1RhYmxlT3B0aW9ucy5maW5kKChvVGFibGVPcHRpb246IE9UYWJsZU9wdGlvbkNvbXBvbmVudCkgPT4gb1RhYmxlT3B0aW9uLm9hdHRyID09PSBwZXJtLmF0dHIpO1xuICAgICAgc2VsZi5zZXRQZXJtaXNzaW9uc1RvT1RhYmxlT3B0aW9uKHBlcm0sIG9wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0UGVybWlzc2lvbnNUb09UYWJsZU9wdGlvbihwZXJtOiBPUGVybWlzc2lvbnMsIG9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgaWYgKHBlcm0udmlzaWJsZSA9PT0gZmFsc2UgJiYgb3B0aW9uKSB7XG4gICAgICBvcHRpb24uZWxSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcbiAgICB9IGVsc2UgaWYgKHBlcm0uZW5hYmxlZCA9PT0gZmFsc2UgJiYgb3B0aW9uKSB7XG4gICAgICBvcHRpb24uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgYnV0dG9uRUwgPSBvcHRpb24uZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTtcbiAgICAgIGNvbnN0IG9icyA9IFBlcm1pc3Npb25zVXRpbHMucmVnaXN0ZXJEaXNhYmxlZENoYW5nZXNJbkRvbShidXR0b25FTCk7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJzLnB1c2gob2JzKTtcbiAgICB9XG4gIH1cblxuICBnZXRQZXJtaXNzaW9uQnlBdHRyKGF0dHI6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW1zOiBPUGVybWlzc2lvbnNbXSA9IHRoaXMucGVybWlzc2lvbnMuaXRlbXMgfHwgW107XG4gICAgcmV0dXJuIGl0ZW1zLmZpbmQoKHBlcm06IE9QZXJtaXNzaW9ucykgPT4gcGVybS5hdHRyID09PSBhdHRyKTtcbiAgfVxuXG4gIGdldCBpc1NlbGVjdEFsbE9wdGlvbkFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlO1xuICB9XG5cbiAgZ2V0IHNob3dTZWxlY3RBbGxDaGVja2JveCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0QWxsQ2hlY2tib3gpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdzZWxlY3QtYWxsLWNoZWNrYm94Jyk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggJiYgIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHJvd0hlaWdodE9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5yb3dIZWlnaHRPYnNlcnZhYmxlO1xuICB9XG4gIGdldCBlbmFibGVkU2VsZWN0QWxsQ2hlY2tib3goKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdzZWxlY3QtYWxsLWNoZWNrYm94Jyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLmVuYWJsZWQgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93RXhwb3J0QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5leHBvcnRCdXR0b24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdleHBvcnQnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWRFeHBvcnRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdleHBvcnQnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0uZW5hYmxlZCA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHNob3dDb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29sdW1uc1Zpc2liaWxpdHlCdXR0b24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdzaG93LWhpZGUtY29sdW1ucycpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS52aXNpYmxlID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd1JlcG9ydE9uRGVtYW5kQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zaG93UmVwb3J0T25EZW1hbmRPcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdzaG93LXJlcG9ydC1vbi1kZW1hbmQnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWRDb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ3Nob3ctaGlkZS1jb2x1bW5zJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLmVuYWJsZWQgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93RmlsdGVyTWVudSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ2ZpbHRlcicpO1xuICAgIHJldHVybiB0aGlzLnNob3dGaWx0ZXJPcHRpb24gJiYgIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWRGaWx0ZXJNZW51KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignZmlsdGVyJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLmVuYWJsZWQgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93Q29uZmlndXJhdGlvbk1lbnUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdjb25maWd1cmF0aW9uJyk7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0NvbmZpZ3VyYXRpb25PcHRpb24gJiYgIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWRDb25maWd1cmF0aW9uTWVudSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ2NvbmZpZ3VyYXRpb24nKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0uZW5hYmxlZCA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHNob3dHcm91cEJ5QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dHcm91cEJ5T3B0aW9uO1xuICB9XG5cbiAgZ2V0IHNob3dDaGFydHNPbkRlbWFuZEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2hvd0NoYXJ0c09uRGVtYW5kT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2hvdy1jaGFydC1vbi1kZW1hbmQnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuXG4gIH1cbiAgZ2V0IHNob3dGaXJzdERpdmlkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnNob3dBbnlPcHRpb25GaXJzdFNlY3Rpb24gJiYgdGhpcy5zaG93QW55T3B0aW9uU2Vjb25kU2VjdGlvbikgfHxcbiAgICAgICh0aGlzLnNob3dBbnlPcHRpb25GaXJzdFNlY3Rpb24gJiYgIXRoaXMuc2hvd0FueU9wdGlvblNlY29uZFNlY3Rpb24gJiYgdGhpcy5zaG93QW55T3B0aW9uVGhpcmRTZWN0aW9uKTtcbiAgfVxuXG4gIGdldCBzaG93U2Vjb25kRGl2aWRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93QW55T3B0aW9uU2Vjb25kU2VjdGlvbiAmJiB0aGlzLnNob3dBbnlPcHRpb25UaGlyZFNlY3Rpb247XG4gIH1cblxuICBnZXQgc2hvd0FueU9wdGlvblRoaXJkU2VjdGlvbigpOmJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dHcm91cEJ5QnV0dG9uIHx8IHRoaXMuc2hvd0ZpbHRlck1lbnUgfHwgdGhpcy5zaG93Q29uZmlndXJhdGlvbk1lbnU7XG4gIH1cbiAgZ2V0IHNob3dBbnlPcHRpb25GaXJzdFNlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1NlbGVjdEFsbENoZWNrYm94IHx8IHRoaXMuc2hvd0NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uIHx8IHRoaXMuc2hvd1Jlc2V0V2lkdGhPcHRpb247XG4gIH1cbiAgZ2V0IHNob3dBbnlPcHRpb25TZWNvbmRTZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dFeHBvcnRCdXR0b24gfHwgdGhpcy5zaG93UmVwb3J0T25EZW1hbmRCdXR0b24gfHwgdGhpcy5zaG93Q2hhcnRzT25EZW1hbmRCdXR0b247XG4gIH1cblxuXG4gIG9uU2hvd3NTZWxlY3RzKCkge1xuICAgIGNvbnN0IHRhYmxlT3B0aW9ucyA9IHRoaXMudGFibGUub1RhYmxlT3B0aW9ucztcbiAgICB0YWJsZU9wdGlvbnMuc2VsZWN0Q29sdW1uLnZpc2libGUgPSAhdGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlO1xuICAgIHRoaXMudGFibGUuaW5pdGlhbGl6ZUNoZWNrYm94Q29sdW1uKCk7XG4gIH1cblxuICBvbkV4cG9ydEJ1dHRvbkNsaWNrZWQoKSB7XG4gICAgdGhpcy5leHBvcnREYXRhUHJvdmlkZXIuaW5pdGlhbGl6ZVByb3ZpZGVyKHRoaXMudGFibGUpO1xuXG4gICAgdGhpcy5kaWFsb2cub3BlbihPVGFibGVFeHBvcnREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdmlzaWJsZUJ1dHRvbnM6IHRoaXMudGFibGUudmlzaWJsZUV4cG9ydERpYWxvZ0J1dHRvbnMsXG4gICAgICAgIHNlcnZpY2U6IHRoaXMudGFibGUuc2VydmljZSxcbiAgICAgICAgc2VydmljZVR5cGU6IHRoaXMudGFibGUuZXhwb3J0U2VydmljZVR5cGUsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMudGFibGUuZXhwb3J0T3B0c1RlbXBsYXRlXG4gICAgICB9LFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG4gIH1cblxuICBvbkNoYW5nZUNvbHVtbnNWaXNpYmlsaXR5Q2xpY2tlZCgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9UYWJsZVZpc2libGVDb2x1bW5zRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRhYmxlOiB0aGlzLnRhYmxlXG4gICAgICB9LFxuICAgICAgbWF4V2lkdGg6ICczNXZ3JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnXVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzdWx0KSkge1xuICAgICAgICB0aGlzLnRhYmxlLnZpc2libGVDb2xBcnJheSA9IHJlc3VsdC52aXNpYmxlQ29sQXJyYXk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNPcmRlciA9IHJlc3VsdC5jb2x1bW5zT3JkZXI7XG4gICAgICAgIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucy5jb2x1bW5zLnNvcnQoKGE6IE9Db2x1bW4sIGI6IE9Db2x1bW4pID0+IGNvbHVtbnNPcmRlci5pbmRleE9mKGEuYXR0cikgLSBjb2x1bW5zT3JkZXIuaW5kZXhPZihiLmF0dHIpKTtcblxuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzdWx0LnNvcnRDb2x1bW5zKSkge1xuICAgICAgICAgIHRoaXMudGFibGUucmVpbml0aWFsaXplU29ydENvbHVtbnMocmVzdWx0LnNvcnRDb2x1bW5zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChyZXN1bHQuZ3JvdXBDb2x1bW5zKSkge1xuICAgICAgICAgIHRoaXMudGFibGUuc2V0R3JvdXBDb2x1bW5zKHJlc3VsdC5ncm91cENvbHVtbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdC5jb2x1bW5WYWx1ZUZpbHRlcnNUb1JlbW92ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5jbGVhckNvbHVtbkZpbHRlcnMoZmFsc2UsIHJlc3VsdC5jb2x1bW5WYWx1ZUZpbHRlcnNUb1JlbW92ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy50YWJsZS5yZWZyZXNoQ29sdW1uc1dpZHRoRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25Hcm91cEJ5Q2xpY2tlZCgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9UYWJsZUdyb3VwQnlDb2x1bW5zRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGdyb3VwZWRDb2x1bW5zOiB0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5zQXJyYXksXG4gICAgICAgIGNvbHVtbnNEYXRhOiB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuY29sdW1ucyxcbiAgICAgICAgcm93SGVpZ2h0OiB0aGlzLnRhYmxlLnJvd0hlaWdodCxcbiAgICAgICAgZ3JvdXBlZENvbHVtblR5cGVzOiB0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5UeXBlc1xuICAgICAgfSxcbiAgICAgIGhlaWdodDogJzc1dmgnLFxuICAgICAgd2lkdGg6ICc1MHZ3JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnLCAnby10YWJsZS1ncm91cC1ieS1jb2x1bW4tZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnRhYmxlLnNldEdyb3VwZWRDb2x1bW5UeXBlcyhkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0R3JvdXBlZENvbHVtblR5cGVzKCkpO1xuICAgICAgICB0aGlzLnRhYmxlLnNldEdyb3VwQ29sdW1ucyhkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0R3JvdXBlZENvbHVtbnMoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkZpbHRlckJ5Q29sdW1uQ2xpY2tlZCgpIHtcbiAgICBpZiAodGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmUgJiYgdGhpcy50YWJsZS5kYXRhU291cmNlLmlzQ29sdW1uVmFsdWVGaWx0ZXJBY3RpdmUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnTUVTU0FHRVMuQ09ORklSTV9ESVNDQVJEX0ZJTFRFUl9CWV9DT0xVTU4nKS50aGVuKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLmNsZWFyQ29sdW1uRmlsdGVycygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJzQWN0aXZlID0gIXJlcztcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlLmlzQ29sdW1uRmlsdGVyc0FjdGl2ZSA9ICF0aGlzLnRhYmxlLmlzQ29sdW1uRmlsdGVyc0FjdGl2ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TdG9yZUZpbHRlckNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPU3RvcmVGaWx0ZXJEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHRoaXMudGFibGUuc3RhdGUuc3RvcmVkRmlsdGVycy5tYXAoZmlsdGVyID0+IGZpbHRlci5uYW1lKSxcbiAgICAgIHdpZHRoOiAnY2FsYygoNzVlbSAtIDEwMCUpICogMTAwMCknLFxuICAgICAgbWF4V2lkdGg6ICc2NXZ3JyxcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnRhYmxlLnN0b3JlRmlsdGVySW5TdGF0ZShkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0RmlsdGVyQXR0cmlidXRlcygpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxvYWRGaWx0ZXJDbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT0xvYWRGaWx0ZXJEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHRoaXMudGFibGUuc3RhdGUuc3RvcmVkRmlsdGVycyxcbiAgICAgIHdpZHRoOiAnY2FsYygoNzVlbSAtIDEwMCUpICogMTAwMCknLFxuICAgICAgbWF4V2lkdGg6ICc2NXZ3JyxcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkRlbGV0ZS5zdWJzY3JpYmUoZmlsdGVyTmFtZSA9PiB0aGlzLnRhYmxlLnN0YXRlLmRlbGV0ZVN0b3JlZEZpbHRlcihmaWx0ZXJOYW1lKSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyTmFtZTogc3RyaW5nID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlbGVjdGVkRmlsdGVyTmFtZSgpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRGaWx0ZXJOYW1lKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5zdGF0ZS5hcHBseUZpbHRlcihzZWxlY3RlZEZpbHRlck5hbWUpO1xuICAgICAgICAgIHRoaXMudGFibGUuc2V0RmlsdGVyc0NvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLnJlbG9hZFBhZ2luYXRlZERhdGFGcm9tU3RhcnQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkNsZWFyRmlsdGVyQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdUQUJMRS5ESUFMT0cuQ09ORklSTV9DTEVBUl9GSUxURVInKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMudGFibGUuY2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMudGFibGUucmVsb2FkUGFnaW5hdGVkRGF0YUZyb21TdGFydChmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIG9uQ2hhcnRzT25EZW1hbmRDbGlja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoYXJ0T25EZW1hbmRTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmNoYXJ0T25EZW1hbmRTZXJ2aWNlLm9wZW5DaGFydE9uRGVtYW5kKHRoaXMudGFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJZb3UgbXVzdCBoYXZlIG9udGltaXplLXdlYi1uZ3gtY2hhcnRzIGluc3RhbGxlZCBpbiB5b3VyIGFwcCB0byB1c2UgY2hhcnRzIG9uIGRlbWFuZC5cIilcbiAgICB9XG4gIH1cbiAgb25SZXNldFdpZHRoQ2xpY2tlZCgpIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdUQUJMRS5ESUFMT0cuQ09ORklSTV9SRVNFVF9XSURUSCcpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy50YWJsZS5yZXNldENvbHVtbnNXaWR0aCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25SZXBvcnRPbkRlbWFuZENsaWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVwb3J0U2VydmljZSkge1xuICAgICAgdGhpcy5yZXBvcnRTZXJ2aWNlLm9wZW5SZXBvcnRPbkRlbWFuZCh0aGlzLnRhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKFwiWW91IG11c3QgaGF2ZSBvbnRpbWl6ZS13ZWItbmd4LXJlcG9ydC1vbi1kZW1hbmQgaW5zdGFsbGVkIGluIHlvdXIgYXBwIHRvIHVzZSByZXBvcnQgb24gZGVtYW5kLlwiKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblN0b3JlQ29uZmlndXJhdGlvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVTdG9yZUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnY2FsYygoNzVlbSAtIDEwMCUpICogMTAwMCknLFxuICAgICAgbWF4V2lkdGg6ICc2NXZ3JyxcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbkRhdGEgPSBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0Q29uZmlndXJhdGlvbkF0dHJpYnV0ZXMoKTtcbiAgICAgICAgY29uc3QgdGFibGVQcm9wZXJ0aWVzID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlbGVjdGVkVGFibGVQcm9wZXJ0aWVzKCk7XG4gICAgICAgIHRoaXMudGFibGUuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnN0b3JlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uRGF0YSwgdGFibGVQcm9wZXJ0aWVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFwcGx5Q29uZmlndXJhdGlvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVBcHBseUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHRoaXMudGFibGUuc3RhdGUuc3RvcmVkQ29uZmlndXJhdGlvbnMsXG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRGVsZXRlLnN1YnNjcmliZShjb25maWd1cmF0aW9uTmFtZSA9PiB0aGlzLnRhYmxlLnN0YXRlLmRlbGV0ZVN0b3JlZENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbk5hbWUpKTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQgJiYgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmlzRGVmYXVsdENvbmZpZ3VyYXRpb25TZWxlY3RlZCgpKSB7XG4gICAgICAgIHRoaXMudGFibGUuc3RhdGUucmVzZXQodGhpcy50YWJsZS5wYWdlYWJsZSk7XG4gICAgICAgIHRoaXMudGFibGUuYXBwbHlEZWZhdWx0Q29uZmlndXJhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlbGVjdGVkQ29uZmlndXJhdGlvbk5hbWUoKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ29uZmlndXJhdGlvbk5hbWUpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLnN0YXRlLmFwcGx5Q29uZmlndXJhdGlvbihzZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmFwcGx5Q29uZmlndXJhdGlvbihzZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB4LXBvc2l0aW9uPVwiYmVmb3JlXCIgW2NsYXNzXT1cIihyb3dIZWlnaHRPYnNlcnZhYmxlIHwgYXN5bmMpICsnIG8tdGFibGUtbWVudSBvLW1hdC1tZW51J1wiPlxuICA8IS0tIEl0IGlzIG5lY2Vzc2FyeSB0byB3cmFwIHRoZSBvLXRhYmxlIGJ1dHRvbiB3aXRoIDxzcGFuIG1hdC1tZW51LWl0ZW0+IHNvIHRoYXQgdGhlIHN1Ym1lbnVzIGNvbGxhcHNlIHdoZW4gbG9zaW5nIGZvY3VzIC0tPlxuICA8IS0tIERFRkFVTFQgT1BUSU9OUyAtLT5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCI+XG4gICAgPG8tdGFibGUtb3B0aW9uICNzZWxlY3RBbGxDaGVja2JveE9wdGlvbiBbYWN0aXZlXT1cImlzU2VsZWN0QWxsT3B0aW9uQWN0aXZlXCIgKG9uQ2xpY2spPVwib25TaG93c1NlbGVjdHMoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5TRUxFQ1RcIlxuICAgICAgc2hvdy1jaGVja2JveC1vcHRpb249XCJ0cnVlXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93Q29sdW1uc1Zpc2liaWxpdHlCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uIChvbkNsaWNrKT1cIm9uQ2hhbmdlQ29sdW1uc1Zpc2liaWxpdHlDbGlja2VkKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuQ09MVklTXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93UmVzZXRXaWR0aE9wdGlvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAob25DbGljayk9XCJvblJlc2V0V2lkdGhDbGlja2VkKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuUkVTRVRXSURUSFwiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPG1hdC1kaXZpZGVyICpuZ0lmPVwic2hvd0ZpcnN0RGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dFeHBvcnRCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2V4cG9ydEJ1dHRvbk9wdGlvbiAob25DbGljayk9XCJvbkV4cG9ydEJ1dHRvbkNsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5FWFBPUlRcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dSZXBvcnRPbkRlbWFuZEJ1dHRvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAob25DbGljayk9XCJvblJlcG9ydE9uRGVtYW5kQ2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLlJFUE9SVF9PTl9ERU1BTkRcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dDaGFydHNPbkRlbWFuZEJ1dHRvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAob25DbGljayk9XCJvbkNoYXJ0c09uRGVtYW5kQ2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLkNIQVJUX09OX0RFTUFORFwiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPG1hdC1kaXZpZGVyICpuZ0lmPVwic2hvd1NlY29uZERpdmlkZXJcIj48L21hdC1kaXZpZGVyPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93R3JvdXBCeUJ1dHRvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAjY29sdW1uc0dyb3VwQnlPcHRpb24gKG9uQ2xpY2spPVwib25Hcm91cEJ5Q2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLkdST1VQQllcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNmaWx0ZXJNZW51QnV0dG9uICpuZ0lmPVwic2hvd0ZpbHRlck1lbnVcIiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJmaWx0ZXJNZW51XCI+e3tcbiAgICAnVEFCTEUuQlVUVE9OUy5GSUxURVInIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlndXJhdGlvbk1lbnVCdXR0b24gKm5nSWY9XCJzaG93Q29uZmlndXJhdGlvbk1lbnVcIiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb25maWd1cmF0aW9uTWVudVwiPnt7XG4gICAgJ1RBQkxFLkJVVFRPTlMuQ09ORklHVVJBVElPTicgfCBvVHJhbnNsYXRlIH19PC9idXR0b24+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbWF0LW1lbnU+XG5cbjxtYXQtbWVudSAjZmlsdGVyTWVudT1cIm1hdE1lbnVcIiBbY2xhc3NdPVwiKHJvd0hlaWdodE9ic2VydmFibGV8IGFzeW5jKSArJyBvLXRhYmxlLW1lbnUgby1tYXQtbWVudSdcIj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAjY29sdW1uRmlsdGVyT3B0aW9uIHNob3ctY2hlY2tib3gtb3B0aW9uPVwidHJ1ZVwiIFthY3RpdmVdPVwiaXNDb2x1bW5GaWx0ZXJPcHRpb25BY3RpdmVcIiAob25DbGljayk9XCJvbkZpbHRlckJ5Q29sdW1uQ2xpY2tlZCgpXCJcbiAgICAgIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5GSUxURVJfQllfQ09MVU1OXCI+XG4gICAgPC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblN0b3JlRmlsdGVyQ2xpY2tlZCgpXCI+e3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX1NBVkUnIHwgb1RyYW5zbGF0ZVxuICAgIH19PC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uTG9hZEZpbHRlckNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLkZJTFRFUl9MT0FEJyB8IG9UcmFuc2xhdGVcbiAgICB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkNsZWFyRmlsdGVyQ2xpY2tlZCgpXCI+e3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX0NMRUFSJyB8IG9UcmFuc2xhdGVcbiAgICB9fTwvYnV0dG9uPlxuPC9tYXQtbWVudT5cblxuPG1hdC1tZW51ICNjb25maWd1cmF0aW9uTWVudT1cIm1hdE1lbnVcIiBbY2xhc3NdPVwiKHJvd0hlaWdodE9ic2VydmFibGUgfCBhc3luYykgKycgby10YWJsZS1tZW51ICBvLW1hdC1tZW51J1wiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblN0b3JlQ29uZmlndXJhdGlvbkNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLlNBVkVfQ09ORklHVVJBVElPTicgfFxuICAgIG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25BcHBseUNvbmZpZ3VyYXRpb25DbGlja2VkKClcIj57eyAnVEFCTEUuQlVUVE9OUy5BUFBMWV9DT05GSUdVUkFUSU9OJyB8XG4gICAgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuPC9tYXQtbWVudT5cbiJdfQ==
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSWxGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEw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MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7OzBCQUU1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs0Q0E3RHRDLGlCQUFpQixNQUVqQixZQUFZLE1BRVosdUJBQXVCLE1BRXZCLGdCQUFnQixNQUVoQix1QkFBdUIsTUFFdkIsaUJBQWlCLE1BRWpCLG9CQUFvQixNQUVwQix3QkFBd0IsTUFFeEIsd0JBQXdCLE1BV3hCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUduQyx1QkFBdUI7c0JBRHRCLFNBQVM7dUJBQUMseUJBQXlCO2dCQUdwQyxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUcvQiw2QkFBNkI7c0JBRDVCLFNBQVM7dUJBQUMsK0JBQStCO2dCQUcxQyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBR25ELHVCQUF1QjtzQkFEdEIsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTFELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZO2dCQUd2QixpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUc5QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUcvQixTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRNZW51IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJQ2hhcnRPbkRlbWFuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2NoYXJ0LW9uLWRlbWFuZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVNZW51IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtb24tZGVtYW5kLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPX0NIQVJUX09OX0RFTUFORF9TRVJWSUNFLCBPX1JFUE9SVF9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL29udGltaXplLWV4cG9ydC1kYXRhLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9Mb2FkRmlsdGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVyL2xvYWQtZmlsdGVyL28tbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPU3RvcmVGaWx0ZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXIvc3RvcmUtZmlsdGVyL28tc3RvcmUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHR5cGUgeyBPUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9vLXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVNZW51UGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy90YWJsZS9vLXRhYmxlLW1lbnUtcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUFwcGx5Q29uZmlndXJhdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZy9hcHBseS1jb25maWd1cmF0aW9uL28tdGFibGUtYXBwbHktY29uZmlndXJhdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE9UYWJsZUV4cG9ydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZy9leHBvcnQvby10YWJsZS1leHBvcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVTdG9yZUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvc3RvcmUtY29uZmlndXJhdGlvbi9vLXRhYmxlLXN0b3JlLWNvbmZpZ3VyYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVWaXNpYmxlQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZy92aXNpYmxlLWNvbHVtbnMvby10YWJsZS12aXNpYmxlLWNvbHVtbnMtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1vcHRpb24vby10YWJsZS1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE9UYWJsZUdyb3VwQnlDb2x1bW5zRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9nL2dyb3VwLWJ5LWNvbHVtbnMvby10YWJsZS1ncm91cC1ieS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQnO1xuXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX01FTlUgPSBbXG4gIC8vIHNlbGVjdC1hbGwtY2hlY2tib3ggW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBzZWxlY3Rpb24gY2hlY2sgYm94ZXMuIERlZmF1bHQ6IG5vLlxuICAnc2VsZWN0QWxsQ2hlY2tib3g6IHNlbGVjdC1hbGwtY2hlY2tib3gnLFxuXG4gIC8vIGV4cG9ydC1idXR0b24gW25vfHllc106IHNob3cgZXhwb3J0IGJ1dHRvbi4gRGVmYXVsdDogeWVzLlxuICAnZXhwb3J0QnV0dG9uOiBleHBvcnQtYnV0dG9uJyxcblxuICAvLyBjb2x1bW5zLXZpc2liaWxpdHktYnV0dG9uIFtub3x5ZXNdOiBzaG93IGNvbHVtbnMgdmlzaWJpbGl0eSBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ2NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uOiBjb2x1bW5zLXZpc2liaWxpdHktYnV0dG9uJyxcblxuICAvLyBzaG93LWNvbmZpZ3VyYXRpb24tb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgY29uZmlndXJhdGlvbiBidXR0b24gaW4gaGVhZGVyLiBEZWZhdWx0OiB5ZXMuXG4gICdzaG93Q29uZmlndXJhdGlvbk9wdGlvbjogc2hvdy1jb25maWd1cmF0aW9uLW9wdGlvbicsXG5cbiAgLy8gc2hvdy1maWx0ZXItb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgZmlsdGVyIG1lbnUgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd0ZpbHRlck9wdGlvbjogc2hvdy1maWx0ZXItb3B0aW9uJyxcblxuICAvLyBzaG93LWdyb3VwLWJ5LW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IGdyb3VwIGJ5IG1lbnUgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd0dyb3VwQnlPcHRpb246IHNob3ctZ3JvdXAtYnktb3B0aW9uJyxcblxuICAvLyBzaG93LXJlc2V0LXdpZHRoLW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHJlc2V0IHdpZHRoIG1lbnUgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd1Jlc2V0V2lkdGhPcHRpb246IHNob3ctcmVzZXQtd2lkdGgtb3B0aW9uJyxcblxuICAvLyBzaG93LXJlcG9ydC1vbi1kZW1hbmQtb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgcmVwb3J0IG9uIGRlbWFuZCBvcHRpb24gaW4gdGhlIGhlYWRlciBtZW51XG4gICdzaG93UmVwb3J0T25EZW1hbmRPcHRpb246IHNob3ctcmVwb3J0LW9uLWRlbWFuZC1vcHRpb24nLFxuXG4gIC8vIHNob3ctY2hhcnRzLW9uLWRlbWFuZC1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBjaGFydHMgb24gZGVtYW5kIG9wdGlvbiBpbiB0aGUgaGVhZGVyIG1lbnVcbiAgJ3Nob3dDaGFydHNPbkRlbWFuZE9wdGlvbjogc2hvdy1jaGFydHMtb24tZGVtYW5kLW9wdGlvbidcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9NRU5VID0gW107XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX01FTlUsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX01FTlUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtbWVudV0nOiAndHJ1ZSdcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9UYWJsZU1lbnUsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAvKiBJbnB1dHMgKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNlbGVjdEFsbENoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBleHBvcnRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0NvbmZpZ3VyYXRpb25PcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0ZpbHRlck9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93R3JvdXBCeU9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93UmVzZXRXaWR0aE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93UmVwb3J0T25EZW1hbmRPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0NoYXJ0c09uRGVtYW5kT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuXG4gIHB1YmxpYyBvblZpc2libGVGaWx0ZXJPcHRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKiBFbmQgb2YgaW5wdXRzICovXG5cbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIHNuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBtYXRNZW51OiBNYXRNZW51O1xuICBAVmlld0NoaWxkKCdzZWxlY3RBbGxDaGVja2JveE9wdGlvbicpXG4gIHNlbGVjdEFsbENoZWNrYm94T3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2V4cG9ydEJ1dHRvbk9wdGlvbicpXG4gIGV4cG9ydEJ1dHRvbk9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbicpXG4gIGNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1lbnVCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgZmlsdGVyTWVudUJ1dHRvbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29uZmlndXJhdGlvbk1lbnVCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgY29uZmlndXJhdGlvbk1lbnVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudScpXG4gIGZpbHRlck1lbnU6IE1hdE1lbnU7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpZ3VyYXRpb25NZW51JylcbiAgY29uZmlndXJhdGlvbk1lbnU6IE1hdE1lbnU7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbkZpbHRlck9wdGlvbicpXG4gIGNvbHVtbkZpbHRlck9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdjaGFydE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjaGFydE1lbnU6IE1hdE1lbnU7XG5cbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zOiBPVGFibGVNZW51UGVybWlzc2lvbnM7XG4gIHByb3RlY3RlZCBtdXRhdGlvbk9ic2VydmVyczogTXV0YXRpb25PYnNlcnZlcltdID0gW107XG4gIHByb3RlY3RlZCBleHBvcnREYXRhUHJvdmlkZXI6IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUJhc2UpKSBwcm90ZWN0ZWQgdGFibGU6IE9UYWJsZUJhc2UsXG5cbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9fQ0hBUlRfT05fREVNQU5EX1NFUlZJQ0UpIHB1YmxpYyBjaGFydE9uRGVtYW5kU2VydmljZTogSUNoYXJ0T25EZW1hbmRTZXJ2aWNlLFxuXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChPX1JFUE9SVF9TRVJWSUNFKSBwdWJsaWMgcmVwb3J0U2VydmljZTogSVJlcG9ydFNlcnZpY2VcblxuICApIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5zbmFja0JhclNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChTbmFja0JhclNlcnZpY2UpO1xuICAgIHRoaXMuZXhwb3J0RGF0YVByb3ZpZGVyID0gdGhpcy5pbmplY3Rvci5nZXQoT250aW1pemVFeHBvcnREYXRhUHJvdmlkZXJTZXJ2aWNlKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMudGFibGUuZ2V0TWVudVBlcm1pc3Npb25zKCk7XG4gIH1cblxuICBnZXQgaXNDb2x1bW5GaWx0ZXJPcHRpb25BY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUgJiYgdGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG5cbiAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMuaXRlbXMgfHwgdGhpcy5wZXJtaXNzaW9ucy5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hPcHRpb24gJiYgIXRoaXMuZW5hYmxlZFNlbGVjdEFsbENoZWNrYm94KSB7XG4gICAgICB0aGlzLmRpc2FibGVPVGFibGVPcHRpb25Db21wb25lbnQodGhpcy5zZWxlY3RBbGxDaGVja2JveE9wdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4cG9ydEJ1dHRvbk9wdGlvbiAmJiAhdGhpcy5lbmFibGVkRXhwb3J0QnV0dG9uKSB7XG4gICAgICB0aGlzLmRpc2FibGVPVGFibGVPcHRpb25Db21wb25lbnQodGhpcy5leHBvcnRCdXR0b25PcHRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbiAmJiAhdGhpcy5lbmFibGVkQ29sdW1uc1Zpc2liaWxpdHlCdXR0b24pIHtcbiAgICAgIHRoaXMuZGlzYWJsZU9UYWJsZU9wdGlvbkNvbXBvbmVudCh0aGlzLmNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyTWVudUJ1dHRvbiAmJiAhdGhpcy5lbmFibGVkRmlsdGVyTWVudSkge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uKHRoaXMuZmlsdGVyTWVudUJ1dHRvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25NZW51QnV0dG9uICYmICF0aGlzLmVuYWJsZWRDb25maWd1cmF0aW9uTWVudSkge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uKHRoaXMuY29uZmlndXJhdGlvbk1lbnVCdXR0b24pO1xuICAgIH1cblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc2FibGVPVGFibGVPcHRpb25Db21wb25lbnQoY29tcDogT1RhYmxlT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgY29tcC5lbmFibGVkID0gZmFsc2U7XG4gICAgY29uc3QgYnV0dG9uRUwgPSBjb21wLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG4gICAgY29uc3Qgb2JzID0gUGVybWlzc2lvbnNVdGlscy5yZWdpc3RlckRpc2FibGVkQ2hhbmdlc0luRG9tKGJ1dHRvbkVMKTtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJzLnB1c2gob2JzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkaXNhYmxlQnV0dG9uKGJ1dHRvbkVMOiBFbGVtZW50UmVmKSB7XG4gICAgYnV0dG9uRUwubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IHRydWU7XG4gICAgY29uc3Qgb2JzID0gUGVybWlzc2lvbnNVdGlscy5yZWdpc3RlckRpc2FibGVkQ2hhbmdlc0luRG9tKGJ1dHRvbkVMLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcnMucHVzaChvYnMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlcnMpIHtcbiAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcnMuZm9yRWFjaCgobTogTXV0YXRpb25PYnNlcnZlcikgPT4ge1xuICAgICAgICBtLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT3B0aW9ucyhvVGFibGVPcHRpb25zOiBPVGFibGVPcHRpb25Db21wb25lbnRbXSkge1xuICAgIGNvbnN0IGl0ZW1zOiBPUGVybWlzc2lvbnNbXSA9IHRoaXMucGVybWlzc2lvbnMuaXRlbXMgfHwgW107XG4gICAgY29uc3QgZml4ZWRPcHRpb25zID0gWydzZWxlY3QtYWxsLWNoZWNrYm94JywgJ2V4cG9ydCcsICdzaG93LWhpZGUtY29sdW1ucycsICdmaWx0ZXInLCAnY29uZmlndXJhdGlvbiddO1xuICAgIGNvbnN0IHVzZXJJdGVtczogT1Blcm1pc3Npb25zW10gPSBpdGVtcy5maWx0ZXIoKHBlcm06IE9QZXJtaXNzaW9ucykgPT4gZml4ZWRPcHRpb25zLmluZGV4T2YocGVybS5hdHRyKSA9PT0gLTEpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHVzZXJJdGVtcy5mb3JFYWNoKChwZXJtOiBPUGVybWlzc2lvbnMpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9UYWJsZU9wdGlvbnMuZmluZCgob1RhYmxlT3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQpID0+IG9UYWJsZU9wdGlvbi5vYXR0ciA9PT0gcGVybS5hdHRyKTtcbiAgICAgIHNlbGYuc2V0UGVybWlzc2lvbnNUb09UYWJsZU9wdGlvbihwZXJtLCBvcHRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFBlcm1pc3Npb25zVG9PVGFibGVPcHRpb24ocGVybTogT1Blcm1pc3Npb25zLCBvcHRpb246IE9UYWJsZU9wdGlvbkNvbXBvbmVudCkge1xuICAgIGlmIChwZXJtLnZpc2libGUgPT09IGZhbHNlICYmIG9wdGlvbikge1xuICAgICAgb3B0aW9uLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfSBlbHNlIGlmIChwZXJtLmVuYWJsZWQgPT09IGZhbHNlICYmIG9wdGlvbikge1xuICAgICAgb3B0aW9uLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGJ1dHRvbkVMID0gb3B0aW9uLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG4gICAgICBjb25zdCBvYnMgPSBQZXJtaXNzaW9uc1V0aWxzLnJlZ2lzdGVyRGlzYWJsZWRDaGFuZ2VzSW5Eb20oYnV0dG9uRUwpO1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVycy5wdXNoKG9icyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGVybWlzc2lvbkJ5QXR0cihhdHRyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtczogT1Blcm1pc3Npb25zW10gPSB0aGlzLnBlcm1pc3Npb25zLml0ZW1zIHx8IFtdO1xuICAgIHJldHVybiBpdGVtcy5maW5kKChwZXJtOiBPUGVybWlzc2lvbnMpID0+IHBlcm0uYXR0ciA9PT0gYXR0cik7XG4gIH1cblxuICBnZXQgaXNTZWxlY3RBbGxPcHRpb25BY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucy5zZWxlY3RDb2x1bW4udmlzaWJsZTtcbiAgfVxuXG4gIGdldCBzaG93U2VsZWN0QWxsQ2hlY2tib3goKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdEFsbENoZWNrYm94KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2VsZWN0LWFsbC1jaGVja2JveCcpO1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEFsbENoZWNrYm94ICYmICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCByb3dIZWlnaHRPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUucm93SGVpZ2h0T2JzZXJ2YWJsZTtcbiAgfVxuICBnZXQgZW5hYmxlZFNlbGVjdEFsbENoZWNrYm94KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2VsZWN0LWFsbC1jaGVja2JveCcpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0V4cG9ydEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZXhwb3J0QnV0dG9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignZXhwb3J0Jyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkRXhwb3J0QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignZXhwb3J0Jyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLmVuYWJsZWQgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93Q29sdW1uc1Zpc2liaWxpdHlCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2hvdy1oaWRlLWNvbHVtbnMnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHNob3dSZXBvcnRPbkRlbWFuZEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2hvd1JlcG9ydE9uRGVtYW5kT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2hvdy1yZXBvcnQtb24tZGVtYW5kJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkQ29sdW1uc1Zpc2liaWxpdHlCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdzaG93LWhpZGUtY29sdW1ucycpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0ZpbHRlck1lbnUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdmaWx0ZXInKTtcbiAgICByZXR1cm4gdGhpcy5zaG93RmlsdGVyT3B0aW9uICYmICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkRmlsdGVyTWVudSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ2ZpbHRlcicpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0NvbmZpZ3VyYXRpb25NZW51KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignY29uZmlndXJhdGlvbicpO1xuICAgIHJldHVybiB0aGlzLnNob3dDb25maWd1cmF0aW9uT3B0aW9uICYmICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkQ29uZmlndXJhdGlvbk1lbnUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdjb25maWd1cmF0aW9uJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLmVuYWJsZWQgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93R3JvdXBCeUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93R3JvdXBCeU9wdGlvbjtcbiAgfVxuXG4gIGdldCBzaG93Q2hhcnRzT25EZW1hbmRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNob3dDaGFydHNPbkRlbWFuZE9wdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ3Nob3ctY2hhcnQtb24tZGVtYW5kJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcblxuICB9XG4gIGdldCBzaG93Rmlyc3REaXZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5zaG93QW55T3B0aW9uRmlyc3RTZWN0aW9uICYmIHRoaXMuc2hvd0FueU9wdGlvblNlY29uZFNlY3Rpb24pIHx8XG4gICAgICAodGhpcy5zaG93QW55T3B0aW9uRmlyc3RTZWN0aW9uICYmICF0aGlzLnNob3dBbnlPcHRpb25TZWNvbmRTZWN0aW9uICYmIHRoaXMuc2hvd0FueU9wdGlvblRoaXJkU2VjdGlvbik7XG4gIH1cblxuICBnZXQgc2hvd1NlY29uZERpdmlkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FueU9wdGlvblNlY29uZFNlY3Rpb24gJiYgdGhpcy5zaG93QW55T3B0aW9uVGhpcmRTZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHNob3dBbnlPcHRpb25UaGlyZFNlY3Rpb24oKTpib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93R3JvdXBCeUJ1dHRvbiB8fCB0aGlzLnNob3dGaWx0ZXJNZW51IHx8IHRoaXMuc2hvd0NvbmZpZ3VyYXRpb25NZW51O1xuICB9XG4gIGdldCBzaG93QW55T3B0aW9uRmlyc3RTZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dTZWxlY3RBbGxDaGVja2JveCB8fCB0aGlzLnNob3dDb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbiB8fCB0aGlzLnNob3dSZXNldFdpZHRoT3B0aW9uO1xuICB9XG4gIGdldCBzaG93QW55T3B0aW9uU2Vjb25kU2VjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93RXhwb3J0QnV0dG9uIHx8IHRoaXMuc2hvd1JlcG9ydE9uRGVtYW5kQnV0dG9uIHx8IHRoaXMuc2hvd0NoYXJ0c09uRGVtYW5kQnV0dG9uO1xuICB9XG5cblxuICBvblNob3dzU2VsZWN0cygpIHtcbiAgICBjb25zdCB0YWJsZU9wdGlvbnMgPSB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnM7XG4gICAgdGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlID0gIXRhYmxlT3B0aW9ucy5zZWxlY3RDb2x1bW4udmlzaWJsZTtcbiAgICB0aGlzLnRhYmxlLmluaXRpYWxpemVDaGVja2JveENvbHVtbigpO1xuICB9XG5cbiAgb25FeHBvcnRCdXR0b25DbGlja2VkKCkge1xuICAgIHRoaXMuZXhwb3J0RGF0YVByb3ZpZGVyLmluaXRpYWxpemVQcm92aWRlcih0aGlzLnRhYmxlKTtcblxuICAgIHRoaXMuZGlhbG9nLm9wZW4oT1RhYmxlRXhwb3J0RGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHZpc2libGVCdXR0b25zOiB0aGlzLnRhYmxlLnZpc2libGVFeHBvcnREaWFsb2dCdXR0b25zLFxuICAgICAgICBzZXJ2aWNlOiB0aGlzLnRhYmxlLnNlcnZpY2UsXG4gICAgICAgIHNlcnZpY2VUeXBlOiB0aGlzLnRhYmxlLmV4cG9ydFNlcnZpY2VUeXBlLFxuICAgICAgICBvcHRpb25zOiB0aGlzLnRhYmxlLmV4cG9ydE9wdHNUZW1wbGF0ZVxuICAgICAgfSxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnXVxuICAgIH0pO1xuICB9XG5cbiAgb25DaGFuZ2VDb2x1bW5zVmlzaWJpbGl0eUNsaWNrZWQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVWaXNpYmxlQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICB0YWJsZTogdGhpcy50YWJsZVxuICAgICAgfSxcbiAgICAgIG1heFdpZHRoOiAnMzV2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlc3VsdCkpIHtcbiAgICAgICAgdGhpcy50YWJsZS52aXNpYmxlQ29sQXJyYXkgPSByZXN1bHQudmlzaWJsZUNvbEFycmF5O1xuICAgICAgICBjb25zdCBjb2x1bW5zT3JkZXIgPSByZXN1bHQuY29sdW1uc09yZGVyO1xuICAgICAgICB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5zb3J0KChhOiBPQ29sdW1uLCBiOiBPQ29sdW1uKSA9PiBjb2x1bW5zT3JkZXIuaW5kZXhPZihhLmF0dHIpIC0gY29sdW1uc09yZGVyLmluZGV4T2YoYi5hdHRyKSk7XG5cbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlc3VsdC5zb3J0Q29sdW1ucykpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLnJlaW5pdGlhbGl6ZVNvcnRDb2x1bW5zKHJlc3VsdC5zb3J0Q29sdW1ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzdWx0Lmdyb3VwQ29sdW1ucykpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLnNldEdyb3VwQ29sdW1ucyhyZXN1bHQuZ3JvdXBDb2x1bW5zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuY29sdW1uVmFsdWVGaWx0ZXJzVG9SZW1vdmUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMudGFibGUuY2xlYXJDb2x1bW5GaWx0ZXJzKGZhbHNlLCByZXN1bHQuY29sdW1uVmFsdWVGaWx0ZXJzVG9SZW1vdmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMudGFibGUucmVmcmVzaENvbHVtbnNXaWR0aEZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uR3JvdXBCeUNsaWNrZWQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVHcm91cEJ5Q29sdW1uc0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBncm91cGVkQ29sdW1uczogdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5LFxuICAgICAgICBjb2x1bW5zRGF0YTogdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMsXG4gICAgICAgIHJvd0hlaWdodDogdGhpcy50YWJsZS5yb3dIZWlnaHQsXG4gICAgICAgIGdyb3VwZWRDb2x1bW5UeXBlczogdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uVHlwZXNcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6ICc3NXZoJyxcbiAgICAgIHdpZHRoOiAnNTB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJywgJ28tdGFibGUtZ3JvdXAtYnktY29sdW1uLWRpYWxvZyddXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy50YWJsZS5zZXRHcm91cGVkQ29sdW1uVHlwZXMoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldEdyb3VwZWRDb2x1bW5UeXBlcygpKTtcbiAgICAgICAgdGhpcy50YWJsZS5zZXRHcm91cENvbHVtbnMoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldEdyb3VwZWRDb2x1bW5zKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25GaWx0ZXJCeUNvbHVtbkNsaWNrZWQoKSB7XG4gICAgaWYgKHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJzQWN0aXZlICYmIHRoaXMudGFibGUuZGF0YVNvdXJjZS5pc0NvbHVtblZhbHVlRmlsdGVyQWN0aXZlKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkNPTkZJUk1fRElTQ0FSRF9GSUxURVJfQllfQ09MVU1OJykudGhlbihyZXMgPT4ge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5jbGVhckNvbHVtbkZpbHRlcnMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxlLmlzQ29sdW1uRmlsdGVyc0FjdGl2ZSA9ICFyZXM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmUgPSAhdGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU3RvcmVGaWx0ZXJDbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT1N0b3JlRmlsdGVyRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB0aGlzLnRhYmxlLnN0YXRlLnN0b3JlZEZpbHRlcnMubWFwKGZpbHRlciA9PiBmaWx0ZXIubmFtZSksXG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy50YWJsZS5zdG9yZUZpbHRlckluU3RhdGUoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldEZpbHRlckF0dHJpYnV0ZXMoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Mb2FkRmlsdGVyQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9Mb2FkRmlsdGVyRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB0aGlzLnRhYmxlLnN0YXRlLnN0b3JlZEZpbHRlcnMsXG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25EZWxldGUuc3Vic2NyaWJlKGZpbHRlck5hbWUgPT4gdGhpcy50YWJsZS5zdGF0ZS5kZWxldGVTdG9yZWRGaWx0ZXIoZmlsdGVyTmFtZSkpO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEZpbHRlck5hbWU6IHN0cmluZyA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWxlY3RlZEZpbHRlck5hbWUoKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRmlsdGVyTmFtZSkge1xuICAgICAgICAgIHRoaXMudGFibGUuc3RhdGUuYXBwbHlGaWx0ZXIoc2VsZWN0ZWRGaWx0ZXJOYW1lKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLnNldEZpbHRlcnNDb25maWd1cmF0aW9uKCk7XG4gICAgICAgICAgdGhpcy50YWJsZS5yZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25DbGVhckZpbHRlckNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnVEFCTEUuRElBTE9HLkNPTkZJUk1fQ0xFQVJfRklMVEVSJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnRhYmxlLmNsZWFyRmlsdGVycygpO1xuICAgICAgICB0aGlzLnRhYmxlLnJlbG9hZFBhZ2luYXRlZERhdGFGcm9tU3RhcnQoZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBvbkNoYXJ0c09uRGVtYW5kQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFydE9uRGVtYW5kU2VydmljZSkge1xuICAgICAgdGhpcy5jaGFydE9uRGVtYW5kU2VydmljZS5vcGVuQ2hhcnRPbkRlbWFuZCh0aGlzLnRhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKFwiWW91IG11c3QgaGF2ZSBvbnRpbWl6ZS13ZWItbmd4LWNoYXJ0cyBpbnN0YWxsZWQgaW4geW91ciBhcHAgdG8gdXNlIGNoYXJ0cyBvbiBkZW1hbmQuXCIpXG4gICAgfVxuICB9XG4gIG9uUmVzZXRXaWR0aENsaWNrZWQoKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnVEFCTEUuRElBTE9HLkNPTkZJUk1fUkVTRVRfV0lEVEgnKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMudGFibGUucmVzZXRDb2x1bW5zV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVwb3J0T25EZW1hbmRDbGlja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlcG9ydFNlcnZpY2UpIHtcbiAgICAgIHRoaXMucmVwb3J0U2VydmljZS5vcGVuUmVwb3J0T25EZW1hbmQodGhpcy50YWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcIllvdSBtdXN0IGhhdmUgb250aW1pemUtd2ViLW5neC1yZXBvcnQtb24tZGVtYW5kIGluc3RhbGxlZCBpbiB5b3VyIGFwcCB0byB1c2UgcmVwb3J0IG9uIGRlbWFuZC5cIilcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TdG9yZUNvbmZpZ3VyYXRpb25DbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT1RhYmxlU3RvcmVDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25EYXRhID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldENvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzKCk7XG4gICAgICAgIGNvbnN0IHRhYmxlUHJvcGVydGllcyA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWxlY3RlZFRhYmxlUHJvcGVydGllcygpO1xuICAgICAgICB0aGlzLnRhYmxlLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdG9yZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbkRhdGEsIHRhYmxlUHJvcGVydGllcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25BcHBseUNvbmZpZ3VyYXRpb25DbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT1RhYmxlQXBwbHlDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB0aGlzLnRhYmxlLnN0YXRlLnN0b3JlZENvbmZpZ3VyYXRpb25zLFxuICAgICAgd2lkdGg6ICdjYWxjKCg3NWVtIC0gMTAwJSkgKiAxMDAwKScsXG4gICAgICBtYXhXaWR0aDogJzY1dncnLFxuICAgICAgbWluV2lkdGg6ICczMHZ3JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnXVxuICAgIH0pO1xuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkRlbGV0ZS5zdWJzY3JpYmUoY29uZmlndXJhdGlvbk5hbWUgPT4gdGhpcy50YWJsZS5zdGF0ZS5kZWxldGVTdG9yZWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25OYW1lKSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0ICYmIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5pc0RlZmF1bHRDb25maWd1cmF0aW9uU2VsZWN0ZWQoKSkge1xuICAgICAgICB0aGlzLnRhYmxlLnN0YXRlLnJlc2V0KHRoaXMudGFibGUucGFnZWFibGUpO1xuICAgICAgICB0aGlzLnRhYmxlLmFwcGx5RGVmYXVsdENvbmZpZ3VyYXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKCk7XG4gICAgICAgIGlmIChzZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5zdGF0ZS5hcHBseUNvbmZpZ3VyYXRpb24oc2VsZWN0ZWRDb25maWd1cmF0aW9uTmFtZSk7XG4gICAgICAgICAgdGhpcy50YWJsZS5hcHBseUNvbmZpZ3VyYXRpb24oc2VsZWN0ZWRDb25maWd1cmF0aW9uTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59XG4iLCI8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeC1wb3NpdGlvbj1cImJlZm9yZVwiIFtjbGFzc109XCIocm93SGVpZ2h0T2JzZXJ2YWJsZSB8IGFzeW5jKSArJyBvLXRhYmxlLW1lbnUgby1tYXQtbWVudSdcIj5cbiAgPCEtLSBJdCBpcyBuZWNlc3NhcnkgdG8gd3JhcCB0aGUgby10YWJsZSBidXR0b24gd2l0aCA8c3BhbiBtYXQtbWVudS1pdGVtPiBzbyB0aGF0IHRoZSBzdWJtZW51cyBjb2xsYXBzZSB3aGVuIGxvc2luZyBmb2N1cyAtLT5cbiAgPCEtLSBERUZBVUxUIE9QVElPTlMgLS0+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dTZWxlY3RBbGxDaGVja2JveFwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAjc2VsZWN0QWxsQ2hlY2tib3hPcHRpb24gW2FjdGl2ZV09XCJpc1NlbGVjdEFsbE9wdGlvbkFjdGl2ZVwiIChvbkNsaWNrKT1cIm9uU2hvd3NTZWxlY3RzKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuU0VMRUNUXCJcbiAgICAgIHNob3ctY2hlY2tib3gtb3B0aW9uPVwidHJ1ZVwiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd0NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uXCI+XG4gICAgPG8tdGFibGUtb3B0aW9uICNjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbiAob25DbGljayk9XCJvbkNoYW5nZUNvbHVtbnNWaXNpYmlsaXR5Q2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLkNPTFZJU1wiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd1Jlc2V0V2lkdGhPcHRpb25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gKG9uQ2xpY2spPVwib25SZXNldFdpZHRoQ2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLlJFU0VUV0lEVEhcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxtYXQtZGl2aWRlciAqbmdJZj1cInNob3dGaXJzdERpdmlkZXJcIj48L21hdC1kaXZpZGVyPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93RXhwb3J0QnV0dG9uXCI+XG4gICAgPG8tdGFibGUtb3B0aW9uICNleHBvcnRCdXR0b25PcHRpb24gKG9uQ2xpY2spPVwib25FeHBvcnRCdXR0b25DbGlja2VkKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuRVhQT1JUXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93UmVwb3J0T25EZW1hbmRCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gKG9uQ2xpY2spPVwib25SZXBvcnRPbkRlbWFuZENsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5SRVBPUlRfT05fREVNQU5EXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93Q2hhcnRzT25EZW1hbmRCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gKG9uQ2xpY2spPVwib25DaGFydHNPbkRlbWFuZENsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5DSEFSVF9PTl9ERU1BTkRcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxtYXQtZGl2aWRlciAqbmdJZj1cInNob3dTZWNvbmREaXZpZGVyXCI+PC9tYXQtZGl2aWRlcj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd0dyb3VwQnlCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2NvbHVtbnNHcm91cEJ5T3B0aW9uIChvbkNsaWNrKT1cIm9uR3JvdXBCeUNsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5HUk9VUEJZXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjZmlsdGVyTWVudUJ1dHRvbiAqbmdJZj1cInNob3dGaWx0ZXJNZW51XCIgbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsdGVyTWVudVwiPnt7XG4gICAgJ1RBQkxFLkJVVFRPTlMuRklMVEVSJyB8IG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpZ3VyYXRpb25NZW51QnV0dG9uICpuZ0lmPVwic2hvd0NvbmZpZ3VyYXRpb25NZW51XCIgbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29uZmlndXJhdGlvbk1lbnVcIj57e1xuICAgICdUQUJMRS5CVVRUT05TLkNPTkZJR1VSQVRJT04nIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L21hdC1tZW51PlxuXG48bWF0LW1lbnUgI2ZpbHRlck1lbnU9XCJtYXRNZW51XCIgW2NsYXNzXT1cIihyb3dIZWlnaHRPYnNlcnZhYmxlfCBhc3luYykgKycgby10YWJsZS1tZW51IG8tbWF0LW1lbnUnXCI+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2NvbHVtbkZpbHRlck9wdGlvbiBzaG93LWNoZWNrYm94LW9wdGlvbj1cInRydWVcIiBbYWN0aXZlXT1cImlzQ29sdW1uRmlsdGVyT3B0aW9uQWN0aXZlXCIgKG9uQ2xpY2spPVwib25GaWx0ZXJCeUNvbHVtbkNsaWNrZWQoKVwiXG4gICAgICBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuRklMVEVSX0JZX0NPTFVNTlwiPlxuICAgIDwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TdG9yZUZpbHRlckNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLkZJTFRFUl9TQVZFJyB8IG9UcmFuc2xhdGVcbiAgICB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkxvYWRGaWx0ZXJDbGlja2VkKClcIj57eyAnVEFCTEUuQlVUVE9OUy5GSUxURVJfTE9BRCcgfCBvVHJhbnNsYXRlXG4gICAgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25DbGVhckZpbHRlckNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLkZJTFRFUl9DTEVBUicgfCBvVHJhbnNsYXRlXG4gICAgfX08L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG5cbjxtYXQtbWVudSAjY29uZmlndXJhdGlvbk1lbnU9XCJtYXRNZW51XCIgW2NsYXNzXT1cIihyb3dIZWlnaHRPYnNlcnZhYmxlIHwgYXN5bmMpICsnIG8tdGFibGUtbWVudSAgby1tYXQtbWVudSdcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TdG9yZUNvbmZpZ3VyYXRpb25DbGlja2VkKClcIj57eyAnVEFCTEUuQlVUVE9OUy5TQVZFX0NPTkZJR1VSQVRJT04nIHxcbiAgICBvVHJhbnNsYXRlIH19PC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uQXBwbHlDb25maWd1cmF0aW9uQ2xpY2tlZCgpXCI+e3sgJ1RBQkxFLkJVVFRPTlMuQVBQTFlfQ09ORklHVVJBVElPTicgfFxuICAgIG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG4iXX0=
@@ -1,5 +1,7 @@
1
1
  import { Component, ElementRef, Injector, ViewEncapsulation } from '@angular/core';
2
2
  import { OSkeletonComponent } from '../../../o-skeleton.component';
3
+ import { of } from 'rxjs';
4
+ import { Util } from '../../../../util/util';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "@angular/common";
5
7
  import * as i2 from "@angular/flex-layout/flex";
@@ -10,18 +12,24 @@ export class OTableSkeletonComponent extends OSkeletonComponent {
10
12
  this.elRef = elRef;
11
13
  this.injector = injector;
12
14
  }
13
- get count() {
15
+ ngOnInit() {
16
+ this.rows$ = of(this.getRows());
17
+ }
18
+ getRows() {
14
19
  const parentElement = this.elRef.nativeElement.parentElement;
15
- const parentHeight = parentElement.offsetHeight - 60;
20
+ const parentHeight = parentElement?.offsetHeight - 60;
21
+ if (!Util.isDefined(parentHeight) || parentHeight < 0) {
22
+ return [];
23
+ }
16
24
  return Array.from(new Array(Math.floor(parentHeight / 30)), (x, i) => i + 1);
17
25
  }
18
26
  }
19
27
  OTableSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableSkeletonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
20
- OTableSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableSkeletonComponent, selector: "o-table-skeleton", host: { properties: { "class.o-table-skeleton": "true" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of count\">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }], encapsulation: i0.ViewEncapsulation.None });
28
+ OTableSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableSkeletonComponent, selector: "o-table-skeleton", host: { properties: { "class.o-table-skeleton": "true" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of rows$ | async; \">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
21
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableSkeletonComponent, decorators: [{
22
30
  type: Component,
23
31
  args: [{ selector: 'o-table-skeleton', encapsulation: ViewEncapsulation.None, host: {
24
32
  '[class.o-table-skeleton]': 'true'
25
- }, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of count\">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"] }]
33
+ }, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of rows$ | async; \">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"] }]
26
34
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }]; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFhbkUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGtCQUFrQjtJQUU3RCxZQUFzQixLQUFpQixFQUFZLFFBQWtCO1FBQ25FLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQURLLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXJFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFFN0QsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7cUhBWFUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMklDZHBDLG96Q0F3QkE7NEZEVmEsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLDBCQUEwQixFQUFFLE1BQU07cUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25EZXN0cm95LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT1NrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vby1za2VsZXRvbi5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtc2tlbGV0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10YWJsZS1za2VsZXRvbl0nOiAndHJ1ZSdcbiAgfVxuXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZVNrZWxldG9uQ29tcG9uZW50IGV4dGVuZHMgT1NrZWxldG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3RvcilcbiAgfVxuXG4gIGdldCBjb3VudCgpIHtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgLyogYXZhaWxhYmxlIHBhcmVudEhlaWdodCA9IHBhcmVudEVsZW1lbnQgaGVpZ2h0ICAtIChoZWFkZXIgdGFibGUgaGVhZGVyIGhlaWdodCArIG1hcmdpbiBib3R0b20pKi9cbiAgICBjb25zdCBwYXJlbnRIZWlnaHQgPSBwYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodCAtIDYwO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBBcnJheShNYXRoLmZsb29yKHBhcmVudEhlaWdodCAvIDMwKSksICh4LCBpKSA9PiBpICsgMSk7XG4gIH1cblxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWhlYWRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiby10YWJsZS1za2VsZXRvbi1pdGVtXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgKm5nRm9yPVwibGV0IHJvdyBvZiBjb3VudFwiPlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGZ4RmxleCBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMFwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFhN0MsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGtCQUFrQjtJQUc3RCxZQUFzQixLQUFpQixFQUFZLFFBQWtCO1FBQ25FLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXJFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU87UUFFTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFHN0QsTUFBTSxZQUFZLEdBQUcsYUFBYSxFQUFFLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRTtZQUNyRCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFL0UsQ0FBQzs7cUhBdkJVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDJJQ2hCcEMsOHpDQXdCQTs0RkRSYSx1QkFBdUI7a0JBVm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osMEJBQTBCLEVBQUUsTUFBTTtxQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vLXNrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1za2VsZXRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXNrZWxldG9uXSc6ICd0cnVlJ1xuICB9XG5cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlU2tlbGV0b25Db21wb25lbnQgZXh0ZW5kcyBPU2tlbGV0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICByb3dzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3dzJCA9IG9mKHRoaXMuZ2V0Um93cygpKTtcbiAgfVxuXG4gIGdldFJvd3MoKSB7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAvKiBhdmFpbGFibGUgcGFyZW50SGVpZ2h0ID0gcGFyZW50RWxlbWVudCBoZWlnaHQgIC0gKGhlYWRlciB0YWJsZSBoZWFkZXIgaGVpZ2h0ICsgbWFyZ2luIGJvdHRvbSkqL1xuICAgIGNvbnN0IHBhcmVudEhlaWdodCA9IHBhcmVudEVsZW1lbnQ/Lm9mZnNldEhlaWdodCAtIDYwO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQocGFyZW50SGVpZ2h0KSB8fCBwYXJlbnRIZWlnaHQgPCAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IEFycmF5KE1hdGguZmxvb3IocGFyZW50SGVpZ2h0IC8gMzApKSwgKHgsIGkpID0+IGkgKyAxKTtcblxuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cIm8tdGFibGUtc2tlbGV0b24taGVhZGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWl0ZW1cIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3MkIHwgYXN5bmM7IFwiPlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGZ4RmxleCBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMFwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=