vcomply-workflow-engine 6.2.10 → 6.2.11
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/esm2022/lib/sharedComponents/policy-category-list/category-list/category-list.component.mjs
CHANGED
|
@@ -94,24 +94,24 @@ export class PolicyCategoryListComponent {
|
|
|
94
94
|
this.goToPage(1, data);
|
|
95
95
|
}
|
|
96
96
|
prepareCategoryList(categories) {
|
|
97
|
-
const editorCategories = categories.filter((category) => category
|
|
97
|
+
const editorCategories = categories.filter((category) => category?.role === 'editor' || category?.role === 'owner');
|
|
98
98
|
const map = new Map();
|
|
99
|
-
editorCategories.forEach((cat) => map.set(cat
|
|
99
|
+
editorCategories.forEach((cat) => map.set(cat?.id, cat));
|
|
100
100
|
// Check if category is a root
|
|
101
|
-
const isRoot = (cat) => cat
|
|
101
|
+
const isRoot = (cat) => cat?.parent === null || !map.has(cat?.parent);
|
|
102
102
|
return editorCategories.filter(isRoot).map((root) => ({
|
|
103
|
-
id: root
|
|
104
|
-
name: root
|
|
103
|
+
id: root?.id,
|
|
104
|
+
name: root?.name,
|
|
105
105
|
children: [...this.buildChildren(root, editorCategories, map)],
|
|
106
106
|
}));
|
|
107
107
|
}
|
|
108
108
|
buildPath(categories, map) {
|
|
109
109
|
const names = []; // start with child name
|
|
110
110
|
let current = categories;
|
|
111
|
-
while (current && current
|
|
112
|
-
const parent = map.get(current
|
|
111
|
+
while (current && current?.parent !== null) {
|
|
112
|
+
const parent = map.get(current?.parent);
|
|
113
113
|
if (parent) {
|
|
114
|
-
names.push(parent
|
|
114
|
+
names.push(parent?.name);
|
|
115
115
|
current = parent;
|
|
116
116
|
}
|
|
117
117
|
else {
|
|
@@ -122,14 +122,14 @@ export class PolicyCategoryListComponent {
|
|
|
122
122
|
}
|
|
123
123
|
buildChildren(root, categories, map) {
|
|
124
124
|
return categories
|
|
125
|
-
.filter((c) => c
|
|
125
|
+
.filter((c) => c?.origin === root?.id || c?.parent === root?.id)
|
|
126
126
|
.map((child) => ({
|
|
127
|
-
id: child
|
|
128
|
-
name: child
|
|
127
|
+
id: child?.id,
|
|
128
|
+
name: child?.name,
|
|
129
129
|
children: [],
|
|
130
130
|
display_name: this.buildPath(child, map),
|
|
131
|
-
origin: child
|
|
132
|
-
parent: child
|
|
131
|
+
origin: child?.origin,
|
|
132
|
+
parent: child?.parent,
|
|
133
133
|
}));
|
|
134
134
|
}
|
|
135
135
|
/**
|
|
@@ -271,4 +271,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
271
271
|
}], itemsSelectedChange: [{
|
|
272
272
|
type: Output
|
|
273
273
|
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQU1iLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsaUJBQWlCLEdBRWxCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixjQUFjLEdBQ2YsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0FBaUM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBdUR0QyxZQUNVLFNBQTJCLEVBQzNCLG9CQUEwQztRQUQxQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdERwRCxpREFBaUQ7UUFDeEMsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQiw0REFBNEQ7UUFDbkQsa0JBQWEsR0FBZSxFQUFFLENB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TSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBQUk9HUkFNX1RBQkxFX0hFQURFUlMsXG4gIFBBR0lOQVRJT05fT1BUSU9OUyxcbiAgUFJPR1JBTV9UWVBFX0xJU1QsXG4gIFBST0dSQU1fTk9fREFUQSxcbn0gZnJvbSAnLi4vLi4vcHJvZ3JhbS1saXN0L2NvbnN0YW50JztcbmltcG9ydCB7XG4gIFBPTElDWV9DQVRFR09SWV9UQUJMRV9IRUFERVJTLFxuICBQT0xJQ1lfTk9fREFUQSxcbn0gZnJvbSAnLi4vY29uc3RhbnRzL3BvbGljeS5jb25zdGFudHMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBMaXN0VXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvZ3JhbS1saXN0L3NlcnZpY2VzL2xpc3QtdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9ncmFtTGlzdEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm9ncmFtLWxpc3Qvc2VydmljZXMvcHJvZ3JhbS1saXN0LWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFBPTElDWV9DQVRFR09SWV9MSVNUX1NUVUJTLFxuICBQT0xJQ1lfQ0FURUdPUllfTElTVF9TVFVCU18yLFxufSBmcm9tICcuLi9jb25zdGFudHMvc3R1YnMnO1xuaW1wb3J0IHsgUG9saWN5TGlzdEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wb2xpY3ktbGlzdC1hcGkuc2VydmljZSc7XG4vKipcbiAqIEEgcmV1c2FibGUgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGFuZCBtYW5hZ2luZyBhIGxpc3Qgb2YgcHJvZ3JhbXMgd2l0aCBmaWx0ZXJpbmcsIHBhZ2luYXRpb24sIGFuZCBjYXRlZ29yeSB2aWV3aW5nIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gUHJvZ3JhbSBsaXN0aW5nIHdpdGggcGFnaW5hdGlvblxuICogLSBTZWFyY2ggZnVuY3Rpb25hbGl0eSB3aXRoIGRlYm91bmNlXG4gKiAtIFByb2dyYW0gdHlwZSBmaWx0ZXJpbmdcbiAqIC0gQ2F0ZWdvcnkgdmlld2luZyBmb3Igc2VsZWN0ZWQgcHJvZ3JhbXNcbiAqIC0gTXVsdGktc2VsZWN0IGNhcGFiaWxpdHlcbiAqXG4gKiBAdGVtcGxhdGUgVCBFeHRlbmRzIExpc3RJdGVtIGludGVyZmFjZSBmb3IgdHlwZSBzYWZldHkgb2YgbGlzdCBpdGVtc1xuICovXG5cbmludGVyZmFjZSBDYXRlZ29yeSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGFyZW50Pzogc3RyaW5nO1xuICBwYXJlbnRUcmVlPzogc3RyaW5nW107XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wb2xpY3ktY2F0ZWdvcnktbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXRlZ29yeS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2F0ZWdvcnktbGlzdC5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQb2xpY3lDYXRlZ29yeUxpc3RDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gIC8qKiBBcnJheSBvZiBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgKi9cbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XG5cbiAgLyoqIE9iamVjdCBjb250YWluaW5nIHNlbGVjdGVkIGl0ZW1zLCBrZXllZCBieSBwcm9ncmFtIElEICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueSB8IG51bGwgPSB7fTtcblxuICAvKiogVVJMIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBBUEkgZW5kcG9pbnRzICovXG4gIEBJbnB1dCgpIHVybDogYW55ID0ge307XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkICovXG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgZGVzZWxlY3RlZCAqL1xuICBAT3V0cHV0KCkgaXRlbURlc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgaXRlbXNTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgdGFibGVIZWFkZXJzID0gUE9MSUNZX0NBVEVHT1JZX1RBQkxFX0hFQURFUlM7XG4gIGN1cnJlbnRQYWdlID0gUEFHSU5BVElPTl9PUFRJT05TLkRFRkFVTFRfQ1VSUkVOVF9QQUdFO1xuICBwYWdlU2l6ZSA9IFBBR0lOQVRJT05fT1BUSU9OUy5QQUdFX1NJWkU7XG4gIHRvdGFsUGFnZXMgPSAwO1xuICBzZWFyY2hUZXJtID0gJyc7XG4gIHBhZ2luYXRlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBhY3RpdmVQcm9ncmFtOiBhbnkgfCBudWxsID0gbnVsbDtcbiAgY2F0ZWdvcnlMaXN0OiBhbnkgPSB7fTtcbiAgcHJvZ3JhbVR5cGVMaXN0OiBhbnlbXSA9IFBST0dSQU1fVFlQRV9MSVNUO1xuICBzZWxlY3RlZFByb2dyYW1UeXBlOiBhbnlbXSA9IFtdO1xuICBsb2FkZXJTdGF0ZTogYW55ID0ge1xuICAgIHByb2dyYW1MaXN0OiBmYWxzZSxcbiAgICBjYXRlZ29yeUxpc3Q6IGZhbHNlLFxuICB9O1xuICBhcHBsaWVkUHJvZ3JhbVR5cGU6IGFueVtdID0gW107XG4gIFBPTElDWV9OT19EQVRBOiBhbnkgPSBQT0xJQ1lfTk9fREFUQTtcbiAgQVNTRVRTOiBhbnkgPSBBU1NFVFM7XG4gIHByb2dyYW1DYXRlZ29yeUxpc3Q6IGFueSA9IHt9O1xuICBwb2xpY3lDYXRlZ29yeUxpc3Q6IGFueSA9IFtdO1xuICBzZWxlY3RlZENhdGVnb3J5OiBhbnlbXSA9IFtdO1xuICBzZWFyY2hDb25maWc6IHsgW2tleTogc3RyaW5nXTogeyB0ZXJtOiBzdHJpbmc7IHBsYWNlaG9sZGVyOiBzdHJpbmcgfSB9ID0ge1xuICAgICdQT0xJQ1kgQ0FURUdPUlknOiB7IHRlcm06ICcnLCBwbGFjZWhvbGRlcjogJ1NlYXJjaCBDYXRlZ29yeScgfSxcbiAgICAnUE9MSUNZIFNVQiBDQVRFR09SWSc6IHsgdGVybTogJycsIHBsYWNlaG9sZGVyOiAnU2VhcmNoIFN1YiBDYXRlZ29yeScgfSxcbiAgfTtcblxuICBmaWx0ZXJlZENhdGVnb3JpZXM6IGFueVtdID0gW107IC8vIGFmdGVyIGFwcGx5aW5nIGNhdGVnb3J5IHNlYXJjaFxuICBmaWx0ZXJlZFN1YmNhdGVnb3JpZXM6IGFueVtdID0gW107IC8vIGFmdGVyIGFwcGx5aW5nIHN1YmNhdGVnb3J5IHNlYXJjaFxuXG4gIC8qKiBTdWJqZWN0IGZvciBoYW5kbGluZyBkZWJvdW5jZWQgc2VhcmNoICovXG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAvKiogU3ViamVjdCBmb3IgY2xlYW51cCBzdWJzY3JpcHRpb25zICovXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGlzdFV0aWxzOiBMaXN0VXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9saWN5TGlzdEFwaVNlcnZpY2U6IFBvbGljeUxpc3RBcGlTZXJ2aWNlXG4gICkge1xuICAgIC8vIEluaXRpYWxpemUgZGVib3VuY2VkIHNlYXJjaFxuICAgIHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2goKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqIEluaXRpYWxpemUgY29tcG9uZW50IGJ5IGZldGNoaW5nIHByb2dyYW0gbGlzdCAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldFBvbGljeUNhdGVnb3J5TGlzdCgpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBjaGFuZ2VzIHRvIGlucHV0cyAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gfHwgY2hhbmdlc1snc2VsZWN0ZWRJdGVtcyddKSB7XG4gICAgICB0aGlzLnBhZ2luYXRlSXRlbXModGhpcy5pdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEZldGNoIHByb2dyYW0gbGlzdCBmcm9tIEFQSSAqL1xuICBnZXRQb2xpY3lDYXRlZ29yeUxpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCA9IHRydWU7XG4gICAgdGhpcy5wb2xpY3lMaXN0QXBpU2VydmljZS5nZXRQb2xpY3lDYXRlZ29yeUxpc3QoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5wcmVwYXJlQ2F0ZWdvcnlMaXN0KHJlcz8uZGF0YT8ucG9saWN5Q2F0ZWdvcmllcyk7XG4gICAgICB0aGlzLnZpZXdDYXRlZ29yeSh0aGlzLml0ZW1zWzBdKTtcbiAgICAgIHRoaXMubG9hZERhdGEodGhpcy5pdGVtcyk7XG4gICAgICB0aGlzLmxvYWRlclN0YXRlLnByb2dyYW1MaXN0ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBkYXRhIGFuZCBpbml0aWFsaXplIHBhZ2luYXRpb25cbiAgICogQHBhcmFtIGRhdGEgQXJyYXkgb2YgaXRlbXMgdG8gbG9hZFxuICAgKi9cbiAgbG9hZERhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5nb1RvUGFnZSgxLCBkYXRhKTtcbiAgfVxuXG4gIHByZXBhcmVDYXRlZ29yeUxpc3QoY2F0ZWdvcmllczogYW55W10pIHtcbiAgICBjb25zdCBlZGl0b3JDYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5maWx0ZXIoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkucm9sZSA9PT0gJ2VkaXRvcidcbiAgICApO1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG4gICAgZWRpdG9yQ2F0ZWdvcmllcy5mb3JFYWNoKChjYXQpID0+IG1hcC5zZXQoY2F0LmlkLCBjYXQpKTtcblxuICAgIC8vIENoZWNrIGlmIGNhdGVnb3J5IGlzIGEgcm9vdFxuICAgIGNvbnN0IGlzUm9vdCA9IChjYXQ6IGFueSkgPT4gY2F0LnBhcmVudCA9PT0gbnVsbCB8fCAhbWFwLmhhcyhjYXQucGFyZW50KTtcblxuICAgIHJldHVybiBlZGl0b3JDYXRlZ29yaWVzLmZpbHRlcihpc1Jvb3QpLm1hcCgocm9vdDogYW55KSA9PiAoe1xuICAgICAgaWQ6IHJvb3QuaWQsXG4gICAgICBuYW1lOiByb290Lm5hbWUsXG4gICAgICBjaGlsZHJlbjogWy4uLnRoaXMuYnVpbGRDaGlsZHJlbihyb290LCBlZGl0b3JDYXRlZ29yaWVzLCBtYXApXSxcbiAgICB9KSk7XG4gIH1cblxuICBidWlsZFBhdGgoY2F0ZWdvcmllczogYW55LCBtYXA6IGFueSkge1xuICAgIGNvbnN0IG5hbWVzOiBzdHJpbmdbXSA9IFtdOyAvLyBzdGFydCB3aXRoIGNoaWxkIG5hbWVcbiAgICBsZXQgY3VycmVudCA9IGNhdGVnb3JpZXM7XG5cbiAgICB3aGlsZSAoY3VycmVudCAmJiBjdXJyZW50LnBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChjdXJyZW50LnBhcmVudCk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIG5hbWVzLnB1c2gocGFyZW50Lm5hbWUpO1xuICAgICAgICBjdXJyZW50ID0gcGFyZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVzLmpvaW4oJyA8ICcpO1xuICB9XG5cbiAgYnVpbGRDaGlsZHJlbihyb290OiBhbnksIGNhdGVnb3JpZXM6IGFueSwgbWFwOiBhbnkpIHtcbiAgICByZXR1cm4gY2F0ZWdvcmllc1xuICAgICAgLmZpbHRlcigoYzogYW55KSA9PiBjLm9yaWdpbiA9PT0gcm9vdC5pZCB8fCBjLnBhcmVudCA9PT0gcm9vdC5pZClcbiAgICAgIC5tYXAoKGNoaWxkOiBhbnkpID0+ICh7XG4gICAgICAgIGlkOiBjaGlsZC5pZCxcbiAgICAgICAgbmFtZTogY2hpbGQubmFtZSxcbiAgICAgICAgY2hpbGRyZW46IFtdLCAvLyBmbGF0dGVuIGNoaWxkcmVuXG4gICAgICAgIGRpc3BsYXlfbmFtZTogdGhpcy5idWlsZFBhdGgoY2hpbGQsIG1hcCksXG4gICAgICAgIG9yaWdpbjogY2hpbGQub3JpZ2luLFxuICAgICAgICBwYXJlbnQ6IGNoaWxkLnBhcmVudCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgaXRlbSBzZWxlY3Rpb24vZGVzZWxlY3Rpb25cbiAgICogQHBhcmFtIGV2ZW50IFNlbGVjdGlvbiBldmVudFxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIGJlaW5nIHNlbGVjdGVkL2Rlc2VsZWN0ZWRcbiAgICovXG4gIHNlbGVjdEl0ZW0oZXZlbnQ6IGFueSwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5ID0gaXRlbTtcbiAgICB0aGlzLml0ZW1zU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW07XG4gIH1cblxuICAvKipcbiAgICogRGVzZWxlY3QgYSBzcGVjaWZpYyBpdGVtXG4gICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gZGVzZWxlY3RcbiAgICovXG4gIGRlc2VsZWN0SXRlbShpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMuaXRlbURlc2VsZWN0ZWQuZW1pdChpdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBpdGVtIGlzIHNlbGVjdGVkXG4gICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gY2hlY2tcbiAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIGl0ZW0gaXMgc2VsZWN0ZWRcbiAgICovXG4gIGlzU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHNwZWNpZmljIHBhZ2VcbiAgICogQHBhcmFtIHBhZ2UgUGFnZSBudW1iZXIgdG8gbmF2aWdhdGUgdG9cbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBwYWdpbmF0ZVxuICAgKi9cbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICB0aGlzLnBhZ2luYXRlSXRlbXMoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFycmF5IG9mIHBhZ2UgbnVtYmVycyBmb3IgcGFnaW5hdGlvblxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBwYWdlIG51bWJlcnNcbiAgICovXG4gIGdldFBhZ2VOdW1iZXJzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5saXN0VXRpbHMuZ2V0UGFnZU51bWJlcnModGhpcy5pdGVtcy5sZW5ndGgsIHRoaXMucGFnZVNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRlIGl0ZW1zIGFuZCB1cGRhdGUgdmlld1xuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHBhZ2luYXRlXG4gICAqL1xuICBwYWdpbmF0ZUl0ZW1zKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguY2VpbChkYXRhLmxlbmd0aCAvIHRoaXMucGFnZVNpemUpO1xuICAgIHRoaXMucGFnaW5hdGVkSXRlbXMgPSBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFZpZXcgY2F0ZWdvcmllcyBmb3IgYSBzZWxlY3RlZCBwcm9ncmFtXG4gICAqIEBwYXJhbSBpdGVtIFByb2dyYW0gdG8gdmlldyBjYXRlZ29yaWVzIGZvclxuICAgKi9cbiAgdmlld0NhdGVnb3J5KGl0ZW0/OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZVByb2dyYW0gPSBpdGVtO1xuICAgIHRoaXMubG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLnBvbGljeUNhdGVnb3J5TGlzdCA9IHRoaXMuaXRlbXMuZmluZChcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5pZCA9PT0gaXRlbS5pZFxuICAgICk/LmNoaWxkcmVuO1xuICAgIHRoaXMubG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ID0gZmFsc2U7XG4gIH1cblxuICBjaGVja1Byb2dyYW1DYXRlZ29yeUV4aXN0cyhpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvZ3JhbUNhdGVnb3J5TGlzdFtpZF0pIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0W2lkXSA9IHRoaXMuYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyhcbiAgICAgICAgdGhpcy5wcm9ncmFtQ2F0ZWdvcnlMaXN0W2lkXVxuICAgICAgKTtcbiAgICAgIHRoaXMubG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyhjYXRlZ29yaWVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIWNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgY2F0ZWdvcnlNYXAgPSBuZXcgTWFwKFxuICAgICAgY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiBbY2F0ZWdvcnkuaWQsIGNhdGVnb3J5XSlcbiAgICApO1xuXG4gICAgY29uc3QgZ2V0UGFyZW50VHJlZSA9IChjYXRlZ29yeTogQ2F0ZWdvcnkpOiBzdHJpbmdbXSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnRUcmVlOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgbGV0IGN1cnJlbnRQYXJlbnQgPSBjYXRlZ29yeS5wYXJlbnQ7XG5cbiAgICAgIHdoaWxlIChjdXJyZW50UGFyZW50KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudENhdGVnb3J5ID0gY2F0ZWdvcnlNYXAuZ2V0KGN1cnJlbnRQYXJlbnQpO1xuICAgICAgICBpZiAoIXBhcmVudENhdGVnb3J5KSBicmVhaztcblxuICAgICAgICBwYXJlbnRUcmVlLnB1c2gocGFyZW50Q2F0ZWdvcnkubmFtZSk7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQgPSBwYXJlbnRDYXRlZ29yeS5wYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJlbnRUcmVlO1xuICAgIH07XG5cbiAgICByZXR1cm4gY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiAoe1xuICAgICAgLi4uY2F0ZWdvcnksXG4gICAgICBwYXJlbnRUcmVlOiBnZXRQYXJlbnRUcmVlKGNhdGVnb3J5KSxcbiAgICB9KSk7XG4gIH1cblxuICBjaGVja0NhdGVnb3J5QXZhaWxiaWxpdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaXNTZWxlY3RlZFByb2dyYW1BdmFpbGFibGUgPSB0aGlzLnBhZ2luYXRlZEl0ZW1zLnNvbWUoXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5pZCA9PT0gdGhpcy5hY3RpdmVQcm9ncmFtPy5pZFxuICAgICk7XG4gICAgaWYgKCFpc1NlbGVjdGVkUHJvZ3JhbUF2YWlsYWJsZSkge1xuICAgICAgdGhpcy5jYXRlZ29yeUxpc3QgPSBbXTtcbiAgICAgIHRoaXMuYWN0aXZlUHJvZ3JhbSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRyaWdnZXIgZGVib3VuY2VkIHNlYXJjaCAqL1xuICBzZWFyY2goaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hDb25maWdbaGVhZGVyXS50ZXJtLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoaGVhZGVyLnRvTG93ZXJDYXNlKCkgPT09ICdwb2xpY3kgY2F0ZWdvcnknKSB7XG4gICAgICB0aGlzLnBhZ2luYXRlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxuICAgICAgKTtcbiAgICAgIHRoaXMuY2hlY2tDYXRlZ29yeUF2YWlsYmlsaXR5KCk7XG4gICAgfSBlbHNlIGlmIChoZWFkZXIudG9Mb3dlckNhc2UoKSA9PT0gJ3BvbGljeSBzdWIgY2F0ZWdvcnknKSB7XG4gICAgICB0aGlzLnBvbGljeUNhdGVnb3J5TGlzdCA9XG4gICAgICAgIHRoaXMuaXRlbXNcbiAgICAgICAgICAuZmluZCgoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuaWQgPT09IHRoaXMuYWN0aXZlUHJvZ3JhbT8uaWQpXG4gICAgICAgICAgPy5jaGlsZHJlbi5maWx0ZXIoKHN1YjogYW55KSA9PlxuICAgICAgICAgICAgc3ViPy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXG4gICAgICAgICAgKSB8fCBbXTtcbiAgICB9XG4gIH1cblxuICAvKiogUGVyZm9ybSBzZWFyY2ggb24gaXRlbXMgKi9cbiAgcHJpdmF0ZSBwZXJmb3JtU2VhcmNoKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFRlcm0/LnRvTG93ZXJDYXNlKCkpXG4gICAgKTtcbiAgICB0aGlzLnBhZ2luYXRlZEl0ZW1zID0gZmlsdGVyZWRJdGVtcztcbiAgICB0aGlzLmNoZWNrQ2F0ZWdvcnlBdmFpbGJpbGl0eSgpO1xuICB9XG5cbiAgLyoqIENsZWFudXAgc3Vic2NyaXB0aW9ucyBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb24gKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHluYW1pYy1saXN0LWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkeW5hbWljLWxpc3QtdGFibGVcIlxuICAgICpuZ0lmPVwiXG4gICAgICBpdGVtcz8ubGVuZ3RoID4gMCB8fCBsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCB8fCBsb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3Q7XG4gICAgICBlbHNlIGRlZmF1bHRUZW1wbGF0ZVxuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1saXN0LWhlYWRlciB2eC1kLWZsZXhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0YWJsZUhlYWRlcnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC13LTEwMCB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VyaWFsTm8gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyVGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoQ29uZmlnW2hlYWRlcl0udGVybVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hDb25maWdbaGVhZGVyXS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2goaGVhZGVyKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtYm9keSB2eC1kLWZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWNvbHVtblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRlclN0YXRlLnByb2dyYW1MaXN0OyBlbHNlIHByb2dyYW1MaXN0TG9hZGVyXCI+XG4gICAgICAgICAgPCEtLSBTaG93IGl0ZW1zIHdoZW4gdGhleSBleGlzdCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgcGFnaW5hdGVkSXRlbXNcbiAgICAgICAgICAgICAgICB8IHNlYXJjaCA6IHNlYXJjaENvbmZpZ1snUE9MSUNZIENBVEVHT1JZJ10udGVybSA6ICduYW1lJ1xuICAgICAgICAgICAgICApPy5sZW5ndGggPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgcGFnaW5hdGVkSXRlbXNcbiAgICAgICAgICAgICAgICAgIHwgc2VhcmNoXG4gICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtXG4gICAgICAgICAgICAgICAgICAgIDogJ25hbWUnIGFzIGZpbHRlcmVkUGFyZW50Q2F0ZWdvcmllcztcbiAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1yb3dcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiYWN0aXZlUHJvZ3JhbT8uaWQgPT09IGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0NhdGVnb3J5KGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtY29sdW1uIHNlcmlhbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzck5vXCI+e3sgaSArIDEgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtY29sdW1uIG5hbWVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy53aXRoLWNvdW50XT1cInNlbGVjdGVkSXRlbXNbaXRlbS5pZF0/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtaW5uZXIgdngtZnMtMTMgdngtcHItMlwiPnt7IGl0ZW0ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1jb2x1bW4gY291bnRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zWzBdPy5vcmlnaW4gPT09IGl0ZW0uaWQgfHxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNbMF0/LmlkID09PSBpdGVtLmlkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNoZWNrZWRcIj4mI3hlOTQ5OzwvaT5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LWJveCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC1saC00IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IDEgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LXRleHQgdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1saC00IHZ4LW1sLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIENBVEVHT1JZIFNFTEVDVEVEXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtY29sdW1uIGFjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJyb3cgdngtZnMtMTIgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+ICYjeGU5NzA7IDwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0gU2hvdyBuby1kYXRhIHdoZW4gc2VhcmNoIHJldHVybnMgbm8gcmVzdWx0cyAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzZWFyY2hDb25maWdbJ1BPTElDWSBDQVRFR09SWSddLnRlcm0gJiZcbiAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHBhZ2luYXRlZEl0ZW1zXG4gICAgICAgICAgICAgICAgfCBzZWFyY2ggOiBzZWFyY2hDb25maWdbJ1BPTElDWSBDQVRFR09SWSddLnRlcm0gOiAnbmFtZSdcbiAgICAgICAgICAgICAgKT8ubGVuZ3RoID09PSAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LW5vLWRhdGEtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxhcHAtbm8tZGF0YVxuICAgICAgICAgICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICAgICAgICAgIFtub0RhdGFUZXh0XT1cIlBPTElDWV9OT19EQVRBLnNlYXJjaFwiXG4gICAgICAgICAgICAgID48L2FwcC1uby1kYXRhPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3Byb2dyYW1MaXN0TG9hZGVyPlxuICAgICAgICAgIDxhcHAtdGFibGUtbG9hZGVyPjwvYXBwLXRhYmxlLWxvYWRlcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbHVtblwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICFsb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3QgJiYgIWxvYWRlclN0YXRlLnByb2dyYW1MaXN0O1xuICAgICAgICAgICAgZWxzZSBjYXRlZ29yeUxpc3RMb2FkZXJcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHBhZ2luYXRlZEl0ZW1zXG4gICAgICAgICAgICAgICAgfCBzZWFyY2ggOiBzZWFyY2hDb25maWdbJ1BPTElDWSBDQVRFR09SWSddLnRlcm0gOiAnbmFtZSdcbiAgICAgICAgICAgICAgKT8ubGVuZ3RoID4gMCAmJiBwb2xpY3lDYXRlZ29yeUxpc3Q/Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgIGVsc2UgZGVmYXVsdFN1YkNhdGVnb3J5VGVtcGxhdGVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImxpc3Qtcm93IHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHBvbGljeUNhdGVnb3J5TGlzdDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkSXRlbXNbMF0/LmlkID09PSBkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZWxlY3RJdGVtKCRldmVudCwgZGF0YSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZS1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSB2eC1mcy0xM1wiPnt7IGRhdGE/Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tcGFydCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXByLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uZGlzcGxheV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndpdGhpbi1ib3ggdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgV2l0aGluXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tdmFsdWUgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZGF0YT8ucGFyZW50VHJlZT8uam9pbignID4gJylcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5kaXNwbGF5X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U3ViQ2F0ZWdvcnlUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItbm8tZGF0YVwiPlxuICAgICAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCJQT0xJQ1lfTk9fREFUQS5wb2xpY3lTdWJDYXRlZ29yeUxpc3RcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NhdGVnb3J5TGlzdExvYWRlcj5cbiAgICAgICAgICA8YXBwLXRhYmxlLWxvYWRlcj48L2FwcC10YWJsZS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LW5vLWRhdGEtY29udGFpbmVyXCI+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIlxuICAgICAgICAgIHNlYXJjaFRlcm0gPyBQT0xJQ1lfTk9fREFUQS5zZWFyY2ggOiBQT0xJQ1lfTk9fREFUQS5wcm9ncmFtTGlzdFxuICAgICAgICBcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQU1iLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsaUJBQWlCLEdBRWxCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixjQUFjLEdBQ2YsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0FBaUM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBdUR0QyxZQUNVLFNBQTJCLEVBQzNCLG9CQUEwQztRQUQxQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdERwRCxpREFBaUQ7UUFDeEMsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQiw0REFBNEQ7UUFDbkQsa0JBQWEsR0FBZSxFQUFFLENB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QXZCLE1BQU07Z0JBR0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFBST0dSQU1fVEFCTEVfSEVBREVSUyxcbiAgUEFHSU5BVElPTl9PUFRJT05TLFxuICBQUk9HUkFNX1RZUEVfTElTVCxcbiAgUFJPR1JBTV9OT19EQVRBLFxufSBmcm9tICcuLi8uLi9wcm9ncmFtLWxpc3QvY29uc3RhbnQnO1xuaW1wb3J0IHtcbiAgUE9MSUNZX0NBVEVHT1JZX1RBQkxFX0hFQURFUlMsXG4gIFBPTElDWV9OT19EQVRBLFxufSBmcm9tICcuLi9jb25zdGFudHMvcG9saWN5LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcbmltcG9ydCB7IExpc3RVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm9ncmFtLWxpc3Qvc2VydmljZXMvbGlzdC11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2dyYW1MaXN0QXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb2dyYW0tbGlzdC9zZXJ2aWNlcy9wcm9ncmFtLWxpc3QtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUE9MSUNZX0NBVEVHT1JZX0xJU1RfU1RVQlMsXG4gIFBPTElDWV9DQVRFR09SWV9MSVNUX1NUVUJTXzIsXG59IGZyb20gJy4uL2NvbnN0YW50cy9zdHVicyc7XG5pbXBvcnQgeyBQb2xpY3lMaXN0QXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BvbGljeS1saXN0LWFwaS5zZXJ2aWNlJztcbi8qKlxuICogQSByZXVzYWJsZSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW5kIG1hbmFnaW5nIGEgbGlzdCBvZiBwcm9ncmFtcyB3aXRoIGZpbHRlcmluZywgcGFnaW5hdGlvbiwgYW5kIGNhdGVnb3J5IHZpZXdpbmcgY2FwYWJpbGl0aWVzLlxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBQcm9ncmFtIGxpc3Rpbmcgd2l0aCBwYWdpbmF0aW9uXG4gKiAtIFNlYXJjaCBmdW5jdGlvbmFsaXR5IHdpdGggZGVib3VuY2VcbiAqIC0gUHJvZ3JhbSB0eXBlIGZpbHRlcmluZ1xuICogLSBDYXRlZ29yeSB2aWV3aW5nIGZvciBzZWxlY3RlZCBwcm9ncmFtc1xuICogLSBNdWx0aS1zZWxlY3QgY2FwYWJpbGl0eVxuICpcbiAqIEB0ZW1wbGF0ZSBUIEV4dGVuZHMgTGlzdEl0ZW0gaW50ZXJmYWNlIGZvciB0eXBlIHNhZmV0eSBvZiBsaXN0IGl0ZW1zXG4gKi9cblxuaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJlbnQ/OiBzdHJpbmc7XG4gIHBhcmVudFRyZWU/OiBzdHJpbmdbXTtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXBvbGljeS1jYXRlZ29yeS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGVnb3J5LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXRlZ29yeS1saXN0LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBvbGljeUNhdGVnb3J5TGlzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgLyoqIEFycmF5IG9mIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbGlzdCAqL1xuICBASW5wdXQoKSBpdGVtczogYW55W10gPSBbXTtcblxuICAvKiogT2JqZWN0IGNvbnRhaW5pbmcgc2VsZWN0ZWQgaXRlbXMsIGtleWVkIGJ5IHByb2dyYW0gSUQgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55IHwgbnVsbCA9IHt9O1xuXG4gIC8qKiBVUkwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIEFQSSBlbmRwb2ludHMgKi9cbiAgQElucHV0KCkgdXJsOiBhbnkgPSB7fTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQgKi9cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBkZXNlbGVjdGVkICovXG4gIEBPdXRwdXQoKSBpdGVtRGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBjaGFuZ2VzICovXG4gIEBPdXRwdXQoKSBpdGVtc1NlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICB0YWJsZUhlYWRlcnMgPSBQT0xJQ1lfQ0FURUdPUllfVEFCTEVfSEVBREVSUztcbiAgY3VycmVudFBhZ2UgPSBQQUdJTkFUSU9OX09QVElPTlMuREVGQVVMVF9DVVJSRU5UX1BBR0U7XG4gIHBhZ2VTaXplID0gUEFHSU5BVElPTl9PUFRJT05TLlBBR0VfU0laRTtcbiAgdG90YWxQYWdlcyA9IDA7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgcGFnaW5hdGVkSXRlbXM6IGFueVtdID0gW107XG4gIGFjdGl2ZVByb2dyYW06IGFueSB8IG51bGwgPSBudWxsO1xuICBjYXRlZ29yeUxpc3Q6IGFueSA9IHt9O1xuICBwcm9ncmFtVHlwZUxpc3Q6IGFueVtdID0gUFJPR1JBTV9UWVBFX0xJU1Q7XG4gIHNlbGVjdGVkUHJvZ3JhbVR5cGU6IGFueVtdID0gW107XG4gIGxvYWRlclN0YXRlOiBhbnkgPSB7XG4gICAgcHJvZ3JhbUxpc3Q6IGZhbHNlLFxuICAgIGNhdGVnb3J5TGlzdDogZmFsc2UsXG4gIH07XG4gIGFwcGxpZWRQcm9ncmFtVHlwZTogYW55W10gPSBbXTtcbiAgUE9MSUNZX05PX0RBVEE6IGFueSA9IFBPTElDWV9OT19EQVRBO1xuICBBU1NFVFM6IGFueSA9IEFTU0VUUztcbiAgcHJvZ3JhbUNhdGVnb3J5TGlzdDogYW55ID0ge307XG4gIHBvbGljeUNhdGVnb3J5TGlzdDogYW55ID0gW107XG4gIHNlbGVjdGVkQ2F0ZWdvcnk6IGFueVtdID0gW107XG4gIHNlYXJjaENvbmZpZzogeyBba2V5OiBzdHJpbmddOiB7IHRlcm06IHN0cmluZzsgcGxhY2Vob2xkZXI6IHN0cmluZyB9IH0gPSB7XG4gICAgJ1BPTElDWSBDQVRFR09SWSc6IHsgdGVybTogJycsIHBsYWNlaG9sZGVyOiAnU2VhcmNoIENhdGVnb3J5JyB9LFxuICAgICdQT0xJQ1kgU1VCIENBVEVHT1JZJzogeyB0ZXJtOiAnJywgcGxhY2Vob2xkZXI6ICdTZWFyY2ggU3ViIENhdGVnb3J5JyB9LFxuICB9O1xuXG4gIGZpbHRlcmVkQ2F0ZWdvcmllczogYW55W10gPSBbXTsgLy8gYWZ0ZXIgYXBwbHlpbmcgY2F0ZWdvcnkgc2VhcmNoXG4gIGZpbHRlcmVkU3ViY2F0ZWdvcmllczogYW55W10gPSBbXTsgLy8gYWZ0ZXIgYXBwbHlpbmcgc3ViY2F0ZWdvcnkgc2VhcmNoXG5cbiAgLyoqIFN1YmplY3QgZm9yIGhhbmRsaW5nIGRlYm91bmNlZCBzZWFyY2ggKi9cbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIC8qKiBTdWJqZWN0IGZvciBjbGVhbnVwIHN1YnNjcmlwdGlvbnMgKi9cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsaXN0VXRpbHM6IExpc3RVdGlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb2xpY3lMaXN0QXBpU2VydmljZTogUG9saWN5TGlzdEFwaVNlcnZpY2VcbiAgKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBkZWJvdW5jZWQgc2VhcmNoXG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0XG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogSW5pdGlhbGl6ZSBjb21wb25lbnQgYnkgZmV0Y2hpbmcgcHJvZ3JhbSBsaXN0ICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UG9saWN5Q2F0ZWdvcnlMaXN0KCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNoYW5nZXMgdG8gaW5wdXRzICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSB8fCBjaGFuZ2VzWydzZWxlY3RlZEl0ZW1zJ10pIHtcbiAgICAgIHRoaXMucGFnaW5hdGVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICB9XG4gIH1cblxuICAvKiogRmV0Y2ggcHJvZ3JhbSBsaXN0IGZyb20gQVBJICovXG4gIGdldFBvbGljeUNhdGVnb3J5TGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRlclN0YXRlLnByb2dyYW1MaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLnBvbGljeUxpc3RBcGlTZXJ2aWNlLmdldFBvbGljeUNhdGVnb3J5TGlzdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLnByZXBhcmVDYXRlZ29yeUxpc3QocmVzPy5kYXRhPy5wb2xpY3lDYXRlZ29yaWVzKTtcbiAgICAgIHRoaXMudmlld0NhdGVnb3J5KHRoaXMuaXRlbXNbMF0pO1xuICAgICAgdGhpcy5sb2FkRGF0YSh0aGlzLml0ZW1zKTtcbiAgICAgIHRoaXMubG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGRhdGEgYW5kIGluaXRpYWxpemUgcGFnaW5hdGlvblxuICAgKiBAcGFyYW0gZGF0YSBBcnJheSBvZiBpdGVtcyB0byBsb2FkXG4gICAqL1xuICBsb2FkRGF0YShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmdvVG9QYWdlKDEsIGRhdGEpO1xuICB9XG5cbiAgcHJlcGFyZUNhdGVnb3J5TGlzdChjYXRlZ29yaWVzOiBhbnlbXSkge1xuICAgIGNvbnN0IGVkaXRvckNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLmZpbHRlcihcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICBjYXRlZ29yeT8ucm9sZSA9PT0gJ2VkaXRvcicgfHwgY2F0ZWdvcnk/LnJvbGUgPT09ICdvd25lcidcbiAgICApO1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG4gICAgZWRpdG9yQ2F0ZWdvcmllcy5mb3JFYWNoKChjYXQpID0+IG1hcC5zZXQoY2F0Py5pZCwgY2F0KSk7XG5cbiAgICAvLyBDaGVjayBpZiBjYXRlZ29yeSBpcyBhIHJvb3RcbiAgICBjb25zdCBpc1Jvb3QgPSAoY2F0OiBhbnkpID0+IGNhdD8ucGFyZW50ID09PSBudWxsIHx8ICFtYXAuaGFzKGNhdD8ucGFyZW50KTtcblxuICAgIHJldHVybiBlZGl0b3JDYXRlZ29yaWVzLmZpbHRlcihpc1Jvb3QpLm1hcCgocm9vdDogYW55KSA9PiAoe1xuICAgICAgaWQ6IHJvb3Q/LmlkLFxuICAgICAgbmFtZTogcm9vdD8ubmFtZSxcbiAgICAgIGNoaWxkcmVuOiBbLi4udGhpcy5idWlsZENoaWxkcmVuKHJvb3QsIGVkaXRvckNhdGVnb3JpZXMsIG1hcCldLFxuICAgIH0pKTtcbiAgfVxuXG4gIGJ1aWxkUGF0aChjYXRlZ29yaWVzOiBhbnksIG1hcDogYW55KSB7XG4gICAgY29uc3QgbmFtZXM6IHN0cmluZ1tdID0gW107IC8vIHN0YXJ0IHdpdGggY2hpbGQgbmFtZVxuICAgIGxldCBjdXJyZW50ID0gY2F0ZWdvcmllcztcblxuICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQ/LnBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChjdXJyZW50Py5wYXJlbnQpO1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBuYW1lcy5wdXNoKHBhcmVudD8ubmFtZSk7XG4gICAgICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZXMuam9pbignIDwgJyk7XG4gIH1cblxuICBidWlsZENoaWxkcmVuKHJvb3Q6IGFueSwgY2F0ZWdvcmllczogYW55LCBtYXA6IGFueSkge1xuICAgIHJldHVybiBjYXRlZ29yaWVzXG4gICAgICAuZmlsdGVyKChjOiBhbnkpID0+IGM/Lm9yaWdpbiA9PT0gcm9vdD8uaWQgfHwgYz8ucGFyZW50ID09PSByb290Py5pZClcbiAgICAgIC5tYXAoKGNoaWxkOiBhbnkpID0+ICh7XG4gICAgICAgIGlkOiBjaGlsZD8uaWQsXG4gICAgICAgIG5hbWU6IGNoaWxkPy5uYW1lLFxuICAgICAgICBjaGlsZHJlbjogW10sIC8vIGZsYXR0ZW4gY2hpbGRyZW5cbiAgICAgICAgZGlzcGxheV9uYW1lOiB0aGlzLmJ1aWxkUGF0aChjaGlsZCwgbWFwKSxcbiAgICAgICAgb3JpZ2luOiBjaGlsZD8ub3JpZ2luLFxuICAgICAgICBwYXJlbnQ6IGNoaWxkPy5wYXJlbnQsXG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGl0ZW0gc2VsZWN0aW9uL2Rlc2VsZWN0aW9uXG4gICAqIEBwYXJhbSBldmVudCBTZWxlY3Rpb24gZXZlbnRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSBiZWluZyBzZWxlY3RlZC9kZXNlbGVjdGVkXG4gICAqL1xuICBzZWxlY3RJdGVtKGV2ZW50OiBhbnksIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSA9IGl0ZW07XG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZENhdGVnb3J5KTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0IGEgc3BlY2lmaWMgaXRlbVxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGRlc2VsZWN0XG4gICAqL1xuICBkZXNlbGVjdEl0ZW0oaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLml0ZW1EZXNlbGVjdGVkLmVtaXQoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gaXRlbSBpcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiBpdGVtIGlzIHNlbGVjdGVkXG4gICAqL1xuICBpc1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSB0byBzcGVjaWZpYyBwYWdlXG4gICAqIEBwYXJhbSBwYWdlIFBhZ2UgbnVtYmVyIHRvIG5hdmlnYXRlIHRvXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gcGFnaW5hdGVcbiAgICovXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlciwgZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5wYWdpbmF0ZUl0ZW1zKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcnJheSBvZiBwYWdlIG51bWJlcnMgZm9yIHBhZ2luYXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgcGFnZSBudW1iZXJzXG4gICAqL1xuICBnZXRQYWdlTnVtYmVycygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFV0aWxzLmdldFBhZ2VOdW1iZXJzKHRoaXMuaXRlbXMubGVuZ3RoLCB0aGlzLnBhZ2VTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdpbmF0ZSBpdGVtcyBhbmQgdXBkYXRlIHZpZXdcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBwYWdpbmF0ZVxuICAgKi9cbiAgcGFnaW5hdGVJdGVtcyhkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKTtcbiAgICB0aGlzLnBhZ2luYXRlZEl0ZW1zID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWaWV3IGNhdGVnb3JpZXMgZm9yIGEgc2VsZWN0ZWQgcHJvZ3JhbVxuICAgKiBAcGFyYW0gaXRlbSBQcm9ncmFtIHRvIHZpZXcgY2F0ZWdvcmllcyBmb3JcbiAgICovXG4gIHZpZXdDYXRlZ29yeShpdGVtPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVQcm9ncmFtID0gaXRlbTtcbiAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IHRydWU7XG4gICAgdGhpcy5wb2xpY3lDYXRlZ29yeUxpc3QgPSB0aGlzLml0ZW1zLmZpbmQoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuaWQgPT09IGl0ZW0uaWRcbiAgICApPy5jaGlsZHJlbjtcbiAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tQcm9ncmFtQ2F0ZWdvcnlFeGlzdHMoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2dyYW1DYXRlZ29yeUxpc3RbaWRdKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdFtpZF0gPSB0aGlzLmFkZFBhcmVudFRyZWVUb0NhdGVnb3JpZXMoXG4gICAgICAgIHRoaXMucHJvZ3JhbUNhdGVnb3J5TGlzdFtpZF1cbiAgICAgICk7XG4gICAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFkZFBhcmVudFRyZWVUb0NhdGVnb3JpZXMoY2F0ZWdvcmllczogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCFjYXRlZ29yaWVzPy5sZW5ndGgpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGNhdGVnb3J5TWFwID0gbmV3IE1hcChcbiAgICAgIGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT4gW2NhdGVnb3J5LmlkLCBjYXRlZ29yeV0pXG4gICAgKTtcblxuICAgIGNvbnN0IGdldFBhcmVudFRyZWUgPSAoY2F0ZWdvcnk6IENhdGVnb3J5KTogc3RyaW5nW10gPT4ge1xuICAgICAgY29uc3QgcGFyZW50VHJlZTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGxldCBjdXJyZW50UGFyZW50ID0gY2F0ZWdvcnkucGFyZW50O1xuXG4gICAgICB3aGlsZSAoY3VycmVudFBhcmVudCkge1xuICAgICAgICBjb25zdCBwYXJlbnRDYXRlZ29yeSA9IGNhdGVnb3J5TWFwLmdldChjdXJyZW50UGFyZW50KTtcbiAgICAgICAgaWYgKCFwYXJlbnRDYXRlZ29yeSkgYnJlYWs7XG5cbiAgICAgICAgcGFyZW50VHJlZS5wdXNoKHBhcmVudENhdGVnb3J5Lm5hbWUpO1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gcGFyZW50Q2F0ZWdvcnkucGFyZW50O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyZW50VHJlZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT4gKHtcbiAgICAgIC4uLmNhdGVnb3J5LFxuICAgICAgcGFyZW50VHJlZTogZ2V0UGFyZW50VHJlZShjYXRlZ29yeSksXG4gICAgfSkpO1xuICB9XG5cbiAgY2hlY2tDYXRlZ29yeUF2YWlsYmlsaXR5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWRQcm9ncmFtQXZhaWxhYmxlID0gdGhpcy5wYWdpbmF0ZWRJdGVtcy5zb21lKFxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uaWQgPT09IHRoaXMuYWN0aXZlUHJvZ3JhbT8uaWRcbiAgICApO1xuICAgIGlmICghaXNTZWxlY3RlZFByb2dyYW1BdmFpbGFibGUpIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICB0aGlzLmFjdGl2ZVByb2dyYW0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUcmlnZ2VyIGRlYm91bmNlZCBzZWFyY2ggKi9cbiAgc2VhcmNoKGhlYWRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoQ29uZmlnW2hlYWRlcl0udGVybS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGhlYWRlci50b0xvd2VyQ2FzZSgpID09PSAncG9saWN5IGNhdGVnb3J5Jykge1xuICAgICAgdGhpcy5wYWdpbmF0ZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgIGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcbiAgICAgICk7XG4gICAgICB0aGlzLmNoZWNrQ2F0ZWdvcnlBdmFpbGJpbGl0eSgpO1xuICAgIH0gZWxzZSBpZiAoaGVhZGVyLnRvTG93ZXJDYXNlKCkgPT09ICdwb2xpY3kgc3ViIGNhdGVnb3J5Jykge1xuICAgICAgdGhpcy5wb2xpY3lDYXRlZ29yeUxpc3QgPVxuICAgICAgICB0aGlzLml0ZW1zXG4gICAgICAgICAgLmZpbmQoKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LmlkID09PSB0aGlzLmFjdGl2ZVByb2dyYW0/LmlkKVxuICAgICAgICAgID8uY2hpbGRyZW4uZmlsdGVyKChzdWI6IGFueSkgPT5cbiAgICAgICAgICAgIHN1Yj8ubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxuICAgICAgICAgICkgfHwgW107XG4gICAgfVxuICB9XG5cbiAgLyoqIFBlcmZvcm0gc2VhcmNoIG9uIGl0ZW1zICovXG4gIHByaXZhdGUgcGVyZm9ybVNlYXJjaCgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgIGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXJtPy50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gICAgdGhpcy5wYWdpbmF0ZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXM7XG4gICAgdGhpcy5jaGVja0NhdGVnb3J5QXZhaWxiaWxpdHkoKTtcbiAgfVxuXG4gIC8qKiBDbGVhbnVwIHN1YnNjcmlwdGlvbnMgb24gY29tcG9uZW50IGRlc3RydWN0aW9uICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1jb250YWluZXJcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHluYW1pYy1saXN0LXRhYmxlXCJcbiAgICAqbmdJZj1cIlxuICAgICAgaXRlbXM/Lmxlbmd0aCA+IDAgfHwgbG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgfHwgbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0O1xuICAgICAgZWxzZSBkZWZhdWx0VGVtcGxhdGVcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1oZWFkZXIgdngtZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXJzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtdy0xMDAgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNlcmlhbE5vIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlclRleHQgdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaGVhZGVyIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaENvbmZpZ1toZWFkZXJdLnRlcm1cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoQ29uZmlnW2hlYWRlcl0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAoa2V5dXApPVwic2VhcmNoKGhlYWRlcilcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1saXN0LWJvZHkgdngtZC1mbGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdC1jb2x1bW5cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdDsgZWxzZSBwcm9ncmFtTGlzdExvYWRlclwiPlxuICAgICAgICAgIDwhLS0gU2hvdyBpdGVtcyB3aGVuIHRoZXkgZXhpc3QgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHBhZ2luYXRlZEl0ZW1zXG4gICAgICAgICAgICAgICAgfCBzZWFyY2ggOiBzZWFyY2hDb25maWdbJ1BPTElDWSBDQVRFR09SWSddLnRlcm0gOiAnbmFtZSdcbiAgICAgICAgICAgICAgKT8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHBhZ2luYXRlZEl0ZW1zXG4gICAgICAgICAgICAgICAgICB8IHNlYXJjaFxuICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaENvbmZpZ1snUE9MSUNZIENBVEVHT1JZJ10udGVybVxuICAgICAgICAgICAgICAgICAgICA6ICduYW1lJyBhcyBmaWx0ZXJlZFBhcmVudENhdGVnb3JpZXM7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImxpc3Qtcm93XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImFjdGl2ZVByb2dyYW0/LmlkID09PSBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdDYXRlZ29yeShpdGVtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWNvbHVtbiBzZXJpYWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3JOb1wiPnt7IGkgKyAxIH19PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWNvbHVtbiBuYW1lXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Mud2l0aC1jb3VudF09XCJzZWxlY3RlZEl0ZW1zW2l0ZW0uaWRdPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWlubmVyIHZ4LWZzLTEzIHZ4LXByLTJcIj57eyBpdGVtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtY29sdW1uIGNvdW50XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtc1swXT8ub3JpZ2luID09PSBpdGVtLmlkIHx8XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zWzBdPy5pZCA9PT0gaXRlbS5pZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjaGVja2VkXCI+JiN4ZTk0OTs8L2k+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudC1ib3ggdngtZnMtOSB2eC1mdy02MDAgdngtbGgtNCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyAxIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudC10ZXh0IHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtbGgtNCB2eC1tbC0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDQVRFR09SWSBTRUxFQ1RFRFxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWNvbHVtbiBhY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFycm93IHZ4LWZzLTEyIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiAmI3hlOTcwOyA8L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIFNob3cgbm8tZGF0YSB3aGVuIHNlYXJjaCByZXR1cm5zIG5vIHJlc3VsdHMgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtICYmXG4gICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBwYWdpbmF0ZWRJdGVtc1xuICAgICAgICAgICAgICAgIHwgc2VhcmNoIDogc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtIDogJ25hbWUnXG4gICAgICAgICAgICAgICk/Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1uby1kYXRhLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCJQT0xJQ1lfTk9fREFUQS5zZWFyY2hcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwcm9ncmFtTGlzdExvYWRlcj5cbiAgICAgICAgICA8YXBwLXRhYmxlLWxvYWRlcj48L2FwcC10YWJsZS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb2x1bW5cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAhbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ICYmICFsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdDtcbiAgICAgICAgICAgIGVsc2UgY2F0ZWdvcnlMaXN0TG9hZGVyXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBwYWdpbmF0ZWRJdGVtc1xuICAgICAgICAgICAgICAgIHwgc2VhcmNoIDogc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtIDogJ25hbWUnXG4gICAgICAgICAgICAgICk/Lmxlbmd0aCA+IDAgJiYgcG9saWN5Q2F0ZWdvcnlMaXN0Py5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICBlbHNlIGRlZmF1bHRTdWJDYXRlZ29yeVRlbXBsYXRlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXJvdyB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBwb2xpY3lDYXRlZ29yeUxpc3Q7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGE/LmlkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEl0ZW1zWzBdPy5pZCA9PT0gZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbSgkZXZlbnQsIGRhdGEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgdngtZnMtMTNcIj57eyBkYXRhPy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2l0aGluLXBhcnQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wci0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LmRpc3BsYXlfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tYm94IHZ4LWZzLTkgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbXItMiB2eC1saC0zXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFdpdGhpblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2l0aGluLXZhbHVlIHZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImRhdGE/LnBhcmVudFRyZWU/LmpvaW4oJyA+ICcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8uZGlzcGxheV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN1YkNhdGVnb3J5VGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLW5vLWRhdGFcIj5cbiAgICAgICAgICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICAgICAgICAgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiXG4gICAgICAgICAgICAgICAgW25vRGF0YVRleHRdPVwiUE9MSUNZX05PX0RBVEEucG9saWN5U3ViQ2F0ZWdvcnlMaXN0XCJcbiAgICAgICAgICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjYXRlZ29yeUxpc3RMb2FkZXI+XG4gICAgICAgICAgPGFwcC10YWJsZS1sb2FkZXI+PC9hcHAtdGFibGUtbG9hZGVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1uby1kYXRhLWNvbnRhaW5lclwiPlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCJcbiAgICAgICAgICBzZWFyY2hUZXJtID8gUE9MSUNZX05PX0RBVEEuc2VhcmNoIDogUE9MSUNZX05PX0RBVEEucHJvZ3JhbUxpc3RcbiAgICAgICAgXCJcbiAgICAgID48L2FwcC1uby1kYXRhPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -35836,24 +35836,24 @@ class PolicyCategoryListComponent {
|
|
|
35836
35836
|
this.goToPage(1, data);
|
|
35837
35837
|
}
|
|
35838
35838
|
prepareCategoryList(categories) {
|
|
35839
|
-
const editorCategories = categories.filter((category) => category
|
|
35839
|
+
const editorCategories = categories.filter((category) => category?.role === 'editor' || category?.role === 'owner');
|
|
35840
35840
|
const map = new Map();
|
|
35841
|
-
editorCategories.forEach((cat) => map.set(cat
|
|
35841
|
+
editorCategories.forEach((cat) => map.set(cat?.id, cat));
|
|
35842
35842
|
// Check if category is a root
|
|
35843
|
-
const isRoot = (cat) => cat
|
|
35843
|
+
const isRoot = (cat) => cat?.parent === null || !map.has(cat?.parent);
|
|
35844
35844
|
return editorCategories.filter(isRoot).map((root) => ({
|
|
35845
|
-
id: root
|
|
35846
|
-
name: root
|
|
35845
|
+
id: root?.id,
|
|
35846
|
+
name: root?.name,
|
|
35847
35847
|
children: [...this.buildChildren(root, editorCategories, map)],
|
|
35848
35848
|
}));
|
|
35849
35849
|
}
|
|
35850
35850
|
buildPath(categories, map) {
|
|
35851
35851
|
const names = []; // start with child name
|
|
35852
35852
|
let current = categories;
|
|
35853
|
-
while (current && current
|
|
35854
|
-
const parent = map.get(current
|
|
35853
|
+
while (current && current?.parent !== null) {
|
|
35854
|
+
const parent = map.get(current?.parent);
|
|
35855
35855
|
if (parent) {
|
|
35856
|
-
names.push(parent
|
|
35856
|
+
names.push(parent?.name);
|
|
35857
35857
|
current = parent;
|
|
35858
35858
|
}
|
|
35859
35859
|
else {
|
|
@@ -35864,14 +35864,14 @@ class PolicyCategoryListComponent {
|
|
|
35864
35864
|
}
|
|
35865
35865
|
buildChildren(root, categories, map) {
|
|
35866
35866
|
return categories
|
|
35867
|
-
.filter((c) => c
|
|
35867
|
+
.filter((c) => c?.origin === root?.id || c?.parent === root?.id)
|
|
35868
35868
|
.map((child) => ({
|
|
35869
|
-
id: child
|
|
35870
|
-
name: child
|
|
35869
|
+
id: child?.id,
|
|
35870
|
+
name: child?.name,
|
|
35871
35871
|
children: [],
|
|
35872
35872
|
display_name: this.buildPath(child, map),
|
|
35873
|
-
origin: child
|
|
35874
|
-
parent: child
|
|
35873
|
+
origin: child?.origin,
|
|
35874
|
+
parent: child?.parent,
|
|
35875
35875
|
}));
|
|
35876
35876
|
}
|
|
35877
35877
|
/**
|