@onecx/angular-accelerator 4.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/assets/i18n/de.json +130 -0
- package/assets/i18n/en.json +130 -0
- package/assets/images/placeholder.png +0 -0
- package/assets/styles.scss +8 -0
- package/esm2020/index.mjs +49 -0
- package/esm2020/lib/angular-accelerator-primeng.module.mjs +83 -0
- package/esm2020/lib/angular-accelerator.module.mjs +209 -0
- package/esm2020/lib/components/column-group-selection/column-group-selection.component.mjs +72 -0
- package/esm2020/lib/components/custom-group-column-selector/custom-group-column-selector.component.mjs +108 -0
- package/esm2020/lib/components/data-layout-selection/data-layout-selection.component.mjs +45 -0
- package/esm2020/lib/components/data-list-grid/data-list-grid.component.mjs +358 -0
- package/esm2020/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.mjs +92 -0
- package/esm2020/lib/components/data-sort-base/data-sort-base.mjs +110 -0
- package/esm2020/lib/components/data-table/data-table.component.mjs +350 -0
- package/esm2020/lib/components/data-view/data-view.component.mjs +355 -0
- package/esm2020/lib/components/diagram/diagram.component.mjs +136 -0
- package/esm2020/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +109 -0
- package/esm2020/lib/components/interactive-data-view/interactive-data-view.component.mjs +342 -0
- package/esm2020/lib/components/page-header/page-header.component.mjs +189 -0
- package/esm2020/lib/components/search-config/search-config.component.mjs +34 -0
- package/esm2020/lib/components/search-header/search-header.component.mjs +136 -0
- package/esm2020/lib/directives/if-breakpoint.directive.mjs +39 -0
- package/esm2020/lib/directives/if-permission.directive.mjs +53 -0
- package/esm2020/lib/functions/flatten-object.mjs +20 -0
- package/esm2020/lib/model/breadcrumb-menu-item.model.mjs +2 -0
- package/esm2020/lib/model/column-type.model.mjs +9 -0
- package/esm2020/lib/model/data-action.mjs +2 -0
- package/esm2020/lib/model/data-column-name-id.model.mjs +2 -0
- package/esm2020/lib/model/data-sort-direction.mjs +2 -0
- package/esm2020/lib/model/data-table-column.model.mjs +2 -0
- package/esm2020/lib/model/diagram-column.mjs +2 -0
- package/esm2020/lib/model/diagram-data.mjs +2 -0
- package/esm2020/lib/model/diagram-type.mjs +2 -0
- package/esm2020/lib/model/search-config-info.mjs +2 -0
- package/esm2020/lib/pipes/dynamic.pipe.mjs +58 -0
- package/esm2020/lib/pipes/ocxtimeago.pipe.mjs +15 -0
- package/esm2020/lib/services/breadcrumb.service.mjs +79 -0
- package/esm2020/lib/services/translation-cache.service.mjs +54 -0
- package/esm2020/lib/utils/async-translate-loader.utils.mjs +12 -0
- package/esm2020/lib/utils/caching-translate-loader.utils.mjs +15 -0
- package/esm2020/lib/utils/colorutils.mjs +19 -0
- package/esm2020/lib/utils/create-translate-loader.utils.mjs +23 -0
- package/esm2020/lib/utils/dateutils.mjs +32 -0
- package/esm2020/lib/utils/objectutils.mjs +30 -0
- package/esm2020/lib/utils/ocxtimeagointl.utils.mjs +34 -0
- package/esm2020/lib/utils/primeicon.utils.mjs +2 -0
- package/esm2020/lib/utils/translate.combined.loader.mjs +36 -0
- package/esm2020/onecx-angular-accelerator.mjs +5 -0
- package/esm2020/testing/column-group-selection.harness.mjs +10 -0
- package/esm2020/testing/custom-group-column-selector.harness.mjs +31 -0
- package/esm2020/testing/data-layout-selection.harness.mjs +33 -0
- package/esm2020/testing/data-list-grid.harness.mjs +47 -0
- package/esm2020/testing/data-table.harness.mjs +57 -0
- package/esm2020/testing/data-view.harness.mjs +12 -0
- package/esm2020/testing/default-grid-item.harness.mjs +24 -0
- package/esm2020/testing/default-list-item.harness.mjs +24 -0
- package/esm2020/testing/diagram.harness.mjs +22 -0
- package/esm2020/testing/index.mjs +17 -0
- package/esm2020/testing/interactive-data-view.harness.mjs +19 -0
- package/esm2020/testing/more-actions-menu-button.harness.mjs +35 -0
- package/esm2020/testing/onecx-angular-accelerator-testing.mjs +5 -0
- package/esm2020/testing/page-header.harness.mjs +36 -0
- package/esm2020/testing/search-config.harness.mjs +10 -0
- package/fesm2015/onecx-angular-accelerator-testing.mjs +430 -0
- package/fesm2015/onecx-angular-accelerator-testing.mjs.map +1 -0
- package/fesm2015/onecx-angular-accelerator.mjs +3118 -0
- package/fesm2015/onecx-angular-accelerator.mjs.map +1 -0
- package/fesm2020/onecx-angular-accelerator-testing.mjs +338 -0
- package/fesm2020/onecx-angular-accelerator-testing.mjs.map +1 -0
- package/fesm2020/onecx-angular-accelerator.mjs +3085 -0
- package/fesm2020/onecx-angular-accelerator.mjs.map +1 -0
- package/index.d.ts +38 -0
- package/lib/angular-accelerator-primeng.module.d.ts +16 -0
- package/lib/angular-accelerator.module.d.ts +32 -0
- package/lib/components/column-group-selection/column-group-selection.component.d.ts +28 -0
- package/lib/components/custom-group-column-selector/custom-group-column-selector.component.d.ts +45 -0
- package/lib/components/data-layout-selection/data-layout-selection.component.d.ts +25 -0
- package/lib/components/data-list-grid/data-list-grid.component.d.ts +120 -0
- package/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.d.ts +30 -0
- package/lib/components/data-sort-base/data-sort-base.d.ts +32 -0
- package/lib/components/data-table/data-table.component.d.ts +124 -0
- package/lib/components/data-view/data-view.component.d.ts +112 -0
- package/lib/components/diagram/diagram.component.d.ts +43 -0
- package/lib/components/group-by-count-diagram/group-by-count-diagram.component.d.ts +39 -0
- package/lib/components/interactive-data-view/interactive-data-view.component.d.ts +108 -0
- package/lib/components/page-header/page-header.component.d.ts +90 -0
- package/lib/components/search-config/search-config.component.d.ts +16 -0
- package/lib/components/search-header/search-header.component.d.ts +46 -0
- package/lib/directives/if-breakpoint.directive.d.ts +12 -0
- package/lib/directives/if-permission.directive.d.ts +18 -0
- package/lib/functions/flatten-object.d.ts +14 -0
- package/lib/model/breadcrumb-menu-item.model.d.ts +60 -0
- package/lib/model/column-type.model.d.ts +7 -0
- package/lib/model/data-action.d.ts +9 -0
- package/lib/model/data-column-name-id.model.d.ts +4 -0
- package/lib/model/data-sort-direction.d.ts +5 -0
- package/lib/model/data-table-column.model.d.ts +9 -0
- package/lib/model/diagram-column.d.ts +5 -0
- package/lib/model/diagram-data.d.ts +4 -0
- package/lib/model/diagram-type.d.ts +5 -0
- package/lib/model/search-config-info.d.ts +4 -0
- package/lib/pipes/dynamic.pipe.d.ts +13 -0
- package/lib/pipes/ocxtimeago.pipe.d.ts +6 -0
- package/lib/services/breadcrumb.service.d.ts +20 -0
- package/lib/services/translation-cache.service.d.ts +12 -0
- package/lib/utils/async-translate-loader.utils.d.ts +9 -0
- package/lib/utils/caching-translate-loader.utils.d.ts +13 -0
- package/lib/utils/colorutils.d.ts +12 -0
- package/lib/utils/create-translate-loader.utils.d.ts +5 -0
- package/lib/utils/dateutils.d.ts +9 -0
- package/lib/utils/objectutils.d.ts +4 -0
- package/lib/utils/ocxtimeagointl.utils.d.ts +9 -0
- package/lib/utils/primeicon.utils.d.ts +5 -0
- package/lib/utils/translate.combined.loader.d.ts +9 -0
- package/package.json +55 -0
- package/testing/column-group-selection.harness.d.ts +6 -0
- package/testing/custom-group-column-selector.harness.d.ts +14 -0
- package/testing/data-layout-selection.harness.d.ts +11 -0
- package/testing/data-list-grid.harness.d.ts +15 -0
- package/testing/data-table.harness.d.ts +17 -0
- package/testing/data-view.harness.d.ts +8 -0
- package/testing/default-grid-item.harness.d.ts +11 -0
- package/testing/default-list-item.harness.d.ts +12 -0
- package/testing/diagram.harness.d.ts +10 -0
- package/testing/index.d.ts +16 -0
- package/testing/interactive-data-view.harness.d.ts +15 -0
- package/testing/more-actions-menu-button.harness.d.ts +10 -0
- package/testing/page-header.harness.d.ts +13 -0
- package/testing/search-config.harness.d.ts +6 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { map, of } from 'rxjs';
|
|
2
|
+
import { flattenObject } from '../../functions/flatten-object';
|
|
3
|
+
import { ColumnType } from '../../model/column-type.model';
|
|
4
|
+
import { ObjectUtils } from '../../utils/objectutils';
|
|
5
|
+
export class DataSortBase {
|
|
6
|
+
constructor(locale, translateService) {
|
|
7
|
+
this.locale = locale;
|
|
8
|
+
this.translateService = translateService;
|
|
9
|
+
}
|
|
10
|
+
translateItems([items, filters, sortColumn, sortDirection], columns, clientSideFiltering, clientSideSorting) {
|
|
11
|
+
if (clientSideFiltering || clientSideSorting) {
|
|
12
|
+
let translationKeys = [];
|
|
13
|
+
const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY);
|
|
14
|
+
translatedColumns.forEach((c) => {
|
|
15
|
+
translationKeys = [...translationKeys, ...items.map((i) => ObjectUtils.resolveFieldData(i, c.id)?.toString())];
|
|
16
|
+
});
|
|
17
|
+
if (translationKeys.length) {
|
|
18
|
+
return this.translateService.get(translationKeys).pipe(map((translatedValues) => {
|
|
19
|
+
const translations = {};
|
|
20
|
+
translatedColumns.forEach((c) => {
|
|
21
|
+
translations[c.id] = Object.fromEntries(items.map((i) => [
|
|
22
|
+
ObjectUtils.resolveFieldData(i, c.id)?.toString() || '',
|
|
23
|
+
translatedValues[ObjectUtils.resolveFieldData(i, c.id)?.toString()],
|
|
24
|
+
]));
|
|
25
|
+
});
|
|
26
|
+
return [items, filters, sortColumn, sortDirection, translations];
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return of([items, filters, sortColumn, sortDirection, {}]);
|
|
31
|
+
}
|
|
32
|
+
filterItems([items, filters, sortColumn, sortDirection, translations], clientSideFiltering) {
|
|
33
|
+
if (!clientSideFiltering) {
|
|
34
|
+
return [items, filters, sortColumn, sortDirection, translations];
|
|
35
|
+
}
|
|
36
|
+
return [
|
|
37
|
+
items.filter((item) => filters
|
|
38
|
+
.map((filter) => filter.columnId)
|
|
39
|
+
.filter((value, index, self) => self.indexOf(value) === index && value != null)
|
|
40
|
+
.every((filterColumnId) => filters
|
|
41
|
+
.filter((filter) => filter.columnId === filterColumnId)
|
|
42
|
+
.some((filter) => (translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId).toString()] ||
|
|
43
|
+
ObjectUtils.resolveFieldData(item, filter.columnId)).toString() === filter.value.toString()))),
|
|
44
|
+
filters,
|
|
45
|
+
sortColumn,
|
|
46
|
+
sortDirection,
|
|
47
|
+
translations,
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
sortItems([items, filters, sortColumn, sortDirection, translations], columns, clientSideSorting) {
|
|
51
|
+
if (!clientSideSorting || sortColumn === '') {
|
|
52
|
+
return [items, filters, sortColumn, sortDirection, translations];
|
|
53
|
+
}
|
|
54
|
+
let translatedColValues = Object.fromEntries(items.map((i) => [
|
|
55
|
+
ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),
|
|
56
|
+
ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),
|
|
57
|
+
]));
|
|
58
|
+
if (columns.find((h) => h.id === sortColumn)?.columnType === ColumnType.TRANSLATION_KEY) {
|
|
59
|
+
translatedColValues = translations[sortColumn];
|
|
60
|
+
}
|
|
61
|
+
return [
|
|
62
|
+
[...items].sort(this.createCompareFunction(translatedColValues, sortColumn, sortDirection)),
|
|
63
|
+
filters,
|
|
64
|
+
sortColumn,
|
|
65
|
+
sortDirection,
|
|
66
|
+
translations,
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
flattenItems(items) {
|
|
70
|
+
return items.map((i) => flattenObject(i));
|
|
71
|
+
}
|
|
72
|
+
createCompareFunction(translatedColValues, sortColumn, sortDirection) {
|
|
73
|
+
let direction = 0;
|
|
74
|
+
if (sortDirection === "ASCENDING" /* DataSortDirection.ASCENDING */) {
|
|
75
|
+
direction = 1;
|
|
76
|
+
}
|
|
77
|
+
else if (sortDirection === "DESCENDING" /* DataSortDirection.DESCENDING */) {
|
|
78
|
+
direction = -1;
|
|
79
|
+
}
|
|
80
|
+
return (data1, data2) => {
|
|
81
|
+
if (direction === 0) {
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
let result;
|
|
85
|
+
const value1 = translatedColValues[ObjectUtils.resolveFieldData(data1, sortColumn)];
|
|
86
|
+
const value2 = translatedColValues[ObjectUtils.resolveFieldData(data2, sortColumn)];
|
|
87
|
+
if (value1 == null && value2 != null)
|
|
88
|
+
result = -1;
|
|
89
|
+
else if (value1 != null && value2 == null)
|
|
90
|
+
result = 1;
|
|
91
|
+
else if (value1 == null && value2 == null)
|
|
92
|
+
result = 0;
|
|
93
|
+
else if (typeof value1 === 'string' && typeof value2 === 'string')
|
|
94
|
+
result = value1.localeCompare(value2, [this.locale, 'en', 'de'], { numeric: true });
|
|
95
|
+
else {
|
|
96
|
+
if (value1 < value2) {
|
|
97
|
+
result = -1;
|
|
98
|
+
}
|
|
99
|
+
else if (value1 > value2) {
|
|
100
|
+
result = 1;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
result = 0;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return direction * result;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3J0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtc29ydC1iYXNlL2RhdGEtc29ydC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFLMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBSXJELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQXNCLE1BQWMsRUFBWSxnQkFBa0M7UUFBNUQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRXRGLGNBQWMsQ0FDWixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBMkQsRUFDckcsT0FBMEIsRUFDMUIsbUJBQTRCLEVBQzVCLGlCQUEwQjtRQUUxQixJQUFJLG1CQUFtQixJQUFJLGlCQUFpQixFQUFFO1lBQzVDLElBQUksZUFBZSxHQUFhLEVBQUUsQ0FBQTtZQUNsQyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQzVGLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM5QixlQUFlLEdBQUcsQ0FBQyxHQUFHLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFD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QUFNLEVBQUU7b0JBQ25CLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtpQkFDWjtxQkFBTSxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUU7b0JBQzFCLE1BQU0sR0FBRyxDQUFDLENBQUE7aUJBQ1g7cUJBQU07b0JBQ0wsTUFBTSxHQUFHLENBQUMsQ0FBQTtpQkFDWDthQUNGO1lBQ0QsT0FBTyxTQUFTLEdBQUcsTUFBTSxDQUFBO1FBQzNCLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBmbGF0dGVuT2JqZWN0IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2ZsYXR0ZW4tb2JqZWN0J1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2NvbHVtbi10eXBlLm1vZGVsJ1xuaW1wb3J0IHsgRGF0YVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXNvcnQtZGlyZWN0aW9uJ1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS10YWJsZS1jb2x1bW4ubW9kZWwnXG5pbXBvcnQgeyBMaXN0R3JpZERhdGEgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RhdGEtbGlzdC1ncmlkL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudCdcbmltcG9ydCB7IFJvdywgRmlsdGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50J1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3R1dGlscydcblxudHlwZSBSb3dMaXN0R3JpZERhdGEgPSBMaXN0R3JpZERhdGEgfCBSb3dcblxuZXhwb3J0IGNsYXNzIERhdGFTb3J0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBsb2NhbGU6IHN0cmluZywgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgdHJhbnNsYXRlSXRlbXMoXG4gICAgW2l0ZW1zLCBmaWx0ZXJzLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uXTogW1Jvd0xpc3RHcmlkRGF0YVtdLCBGaWx0ZXJbXSwgc3RyaW5nLCBEYXRhU29ydERpcmVjdGlvbl0sXG4gICAgY29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10sXG4gICAgY2xpZW50U2lkZUZpbHRlcmluZzogYm9vbGVhbixcbiAgICBjbGllbnRTaWRlU29ydGluZzogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPFtSb3dMaXN0R3JpZERhdGFbXSwgRmlsdGVyW10sIHN0cmluZywgRGF0YVNvcnREaXJlY3Rpb24sIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+XT4ge1xuICAgIGlmIChjbGllbnRTaWRlRmlsdGVyaW5nIHx8IGNsaWVudFNpZGVTb3J0aW5nKSB7XG4gICAgICBsZXQgdHJhbnNsYXRpb25LZXlzOiBzdHJpbmdbXSA9IFtdXG4gICAgICBjb25zdCB0cmFuc2xhdGVkQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLmNvbHVtblR5cGUgPT09IENvbHVtblR5cGUuVFJBTlNMQVRJT05fS0VZKVxuICAgICAgdHJhbnNsYXRlZENvbHVtbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICB0cmFuc2xhdGlvbktleXMgPSBbLi4udHJhbnNsYXRpb25LZXlzLCAuLi5pdGVtcy5tYXAoKGkpID0+IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoaSwgYy5pZCk/LnRvU3RyaW5nKCkpXVxuICAgICAgfSlcbiAgICAgIGlmICh0cmFuc2xhdGlvbktleXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRyYW5zbGF0aW9uS2V5cykucGlwZShcbiAgICAgICAgICBtYXAoKHRyYW5zbGF0ZWRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7fVxuICAgICAgICAgICAgdHJhbnNsYXRlZENvbHVtbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNbYy5pZF0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgaXRlbXMubWFwKChpKSA9PiBbXG4gICAgICAgICAgICAgICAgICBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGksIGMuaWQpPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFZhbHVlc1tPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGksIGMuaWQpPy50b1N0cmluZygpXSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmV0dXJuIFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwgdHJhbnNsYXRpb25zXVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwge31dKVxuICB9XG5cbiAgZmlsdGVySXRlbXMoXG4gICAgW2l0ZW1zLCBmaWx0ZXJzLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uLCB0cmFuc2xhdGlvbnNdOiBbXG4gICAgICBSb3dMaXN0R3JpZERhdGFbXSxcbiAgICAgIEZpbHRlcltdLFxuICAgICAgc3RyaW5nLFxuICAgICAgRGF0YVNvcnREaXJlY3Rpb24sXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PlxuICAgIF0sXG4gICAgY2xpZW50U2lkZUZpbHRlcmluZzogYm9vbGVhblxuICApOiBbUm93TGlzdEdyaWREYXRhW10sIEZpbHRlcltdLCBzdHJpbmcsIERhdGFTb3J0RGlyZWN0aW9uLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pl0ge1xuICAgIGlmICghY2xpZW50U2lkZUZpbHRlcmluZykge1xuICAgICAgcmV0dXJuIFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwgdHJhbnNsYXRpb25zXVxuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgaXRlbXMuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICBmaWx0ZXJzXG4gICAgICAgICAgLm1hcCgoZmlsdGVyKSA9PiBmaWx0ZXIuY29sdW1uSWQpXG4gICAgICAgICAgLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleCAmJiB2YWx1ZSAhPSBudWxsKVxuICAgICAgICAgIC5ldmVyeSgoZmlsdGVyQ29sdW1uSWQpID0+XG4gICAgICAgICAgICBmaWx0ZXJzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmNvbHVtbklkID09PSBmaWx0ZXJDb2x1bW5JZClcbiAgICAgICAgICAgICAgLnNvbWUoXG4gICAgICAgICAgICAgICAgKGZpbHRlcikgPT5cbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zW2ZpbHRlci5jb2x1bW5JZF0/LltPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGl0ZW0sIGZpbHRlci5jb2x1bW5JZCkudG9TdHJpbmcoKV0gfHxcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBmaWx0ZXIuY29sdW1uSWQpXG4gICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCkgPT09IGZpbHRlci52YWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsdGVycyxcbiAgICAgIHNvcnRDb2x1bW4sXG4gICAgICBzb3J0RGlyZWN0aW9uLFxuICAgICAgdHJhbnNsYXRpb25zLFxuICAgIF1cbiAgfVxuXG4gIHNvcnRJdGVtcyhcbiAgICBbaXRlbXMsIGZpbHRlcnMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHRyYW5zbGF0aW9uc106IFtcbiAgICAgIFJvd0xpc3RHcmlkRGF0YVtdLFxuICAgICAgRmlsdGVyW10sXG4gICAgICBzdHJpbmcsXG4gICAgICBEYXRhU29ydERpcmVjdGlvbixcbiAgICAgIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+XG4gICAgXSxcbiAgICBjb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSxcbiAgICBjbGllbnRTaWRlU29ydGluZzogYm9vbGVhblxuICApOiBbUm93TGlzdEdyaWREYXRhW10sIEZpbHRlcltdLCBzdHJpbmcsIERhdGFTb3J0RGlyZWN0aW9uLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pl0ge1xuICAgIGlmICghY2xpZW50U2lkZVNvcnRpbmcgfHwgc29ydENvbHVtbiA9PT0gJycpIHtcbiAgICAgIHJldHVybiBbaXRlbXMsIGZpbHRlcnMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHRyYW5zbGF0aW9uc11cbiAgICB9XG4gICAgbGV0IHRyYW5zbGF0ZWRDb2xWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBpdGVtcy5tYXAoKGkpID0+IFtcbiAgICAgICAgT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpLCBzb3J0Q29sdW1uKT8udG9TdHJpbmcoKSxcbiAgICAgICAgT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpLCBzb3J0Q29sdW1uKT8udG9TdHJpbmcoKSxcbiAgICAgIF0pXG4gICAgKVxuICAgIGlmIChjb2x1bW5zLmZpbmQoKGgpID0+IGguaWQgPT09IHNvcnRDb2x1bW4pPy5jb2x1bW5UeXBlID09PSBDb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWSkge1xuICAgICAgdHJhbnNsYXRlZENvbFZhbHVlcyA9IHRyYW5zbGF0aW9uc1tzb3J0Q29sdW1uXVxuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgWy4uLml0ZW1zXS5zb3J0KHRoaXMuY3JlYXRlQ29tcGFyZUZ1bmN0aW9uKHRyYW5zbGF0ZWRDb2xWYWx1ZXMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24pKSxcbiAgICAgIGZpbHRlcnMsXG4gICAgICBzb3J0Q29sdW1uLFxuICAgICAgc29ydERpcmVjdGlvbixcbiAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICBdXG4gIH1cblxuICBmbGF0dGVuSXRlbXMoaXRlbXM6IFJvd0xpc3RHcmlkRGF0YVtdKSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaSkgPT4gZmxhdHRlbk9iamVjdChpKSlcbiAgfVxuXG4gIGNyZWF0ZUNvbXBhcmVGdW5jdGlvbihcbiAgICB0cmFuc2xhdGVkQ29sVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIHNvcnRDb2x1bW46IHN0cmluZyxcbiAgICBzb3J0RGlyZWN0aW9uOiBEYXRhU29ydERpcmVjdGlvblxuICApOiAoYTogUmVjb3JkPHN0cmluZywgYW55PiwgYjogUmVjb3JkPHN0cmluZywgYW55PikgPT4gbnVtYmVyIHtcbiAgICBsZXQgZGlyZWN0aW9uID0gMFxuICAgIGlmIChzb3J0RGlyZWN0aW9uID09PSBEYXRhU29ydERpcmVjdGlvbi5BU0NFTkRJTkcpIHtcbiAgICAgIGRpcmVjdGlvbiA9IDFcbiAgICB9IGVsc2UgaWYgKHNvcnREaXJlY3Rpb24gPT09IERhdGFTb3J0RGlyZWN0aW9uLkRFU0NFTkRJTkcpIHtcbiAgICAgIGRpcmVjdGlvbiA9IC0xXG4gICAgfVxuICAgIHJldHVybiAoZGF0YTEsIGRhdGEyKSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9XG4gICAgICBsZXQgcmVzdWx0XG4gICAgICBjb25zdCB2YWx1ZTEgPSB0cmFuc2xhdGVkQ29sVmFsdWVzW09iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoZGF0YTEsIHNvcnRDb2x1bW4pXVxuICAgICAgY29uc3QgdmFsdWUyID0gdHJhbnNsYXRlZENvbFZhbHVlc1tPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGRhdGEyLCBzb3J0Q29sdW1uKV1cblxuICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKSByZXN1bHQgPSAtMVxuICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDFcbiAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAwXG4gICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUyID09PSAnc3RyaW5nJylcbiAgICAgICAgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCBbdGhpcy5sb2NhbGUsICdlbicsICdkZSddLCB7IG51bWVyaWM6IHRydWUgfSlcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAodmFsdWUxIDwgdmFsdWUyKSB7XG4gICAgICAgICAgcmVzdWx0ID0gLTFcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZTEgPiB2YWx1ZTIpIHtcbiAgICAgICAgICByZXN1bHQgPSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlyZWN0aW9uICogcmVzdWx0XG4gICAgfVxuICB9XG59XG4iXX0=
|