@mediusinc/mng-commons 6.0.0-rc.2 → 6.0.0-rc.3
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/core/helpers/notification.d.ts +17 -1
- package/core/i18n/i18n-error.d.ts +2 -3
- package/core/router/route-builder.d.ts +1 -1
- package/esm2022/core/helpers/notification.mjs +19 -4
- package/esm2022/core/i18n/i18n-error.mjs +10 -8
- package/esm2022/core/router/route-builder.mjs +2 -2
- package/esm2022/form/api/descriptors/action-button.descriptor.mjs +5 -17
- package/esm2022/form/api/descriptors/button-style.builder.mjs +80 -101
- package/esm2022/form/api/index.mjs +2 -1
- package/esm2022/form/api/models/button.model.mjs +2 -0
- package/esm2022/model/helpers/i18n.mjs +14 -9
- package/esm2022/table/components/column-value/column-value.component.mjs +4 -3
- package/esm2022/table/components/table/table.component.mjs +12 -11
- package/esm2022/table/helpers/notification.mjs +19 -13
- package/esm2022/tableview/action/components/action/action.component.mjs +41 -37
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +13 -8
- package/esm2022/tableview/action/helpers/i18n.mjs +50 -30
- package/esm2022/tableview/action/helpers/notification.mjs +73 -12
- package/esm2022/tableview/action/helpers/styles.mjs +2 -2
- package/esm2022/tableview/action/services/action-executor.service.mjs +83 -66
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +34 -21
- package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +4 -4
- package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +49 -67
- package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +2 -0
- package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +14 -8
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +1 -1
- package/esm2022/tableview/api/index.mjs +2 -2
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +67 -37
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +5 -8
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +7 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +29 -18
- package/esm2022/tableview/provide.mjs +44 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +29 -12
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs +137 -169
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model.mjs +13 -8
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +32 -24
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +165 -215
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +358 -197
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/form/api/descriptors/action-button.descriptor.d.ts +11 -13
- package/form/api/descriptors/button-style.builder.d.ts +30 -44
- package/form/api/index.d.ts +1 -0
- package/form/api/models/button.model.d.ts +19 -0
- package/i18n/sl.json +56 -6
- package/model/helpers/i18n.d.ts +8 -3
- package/package.json +13 -13
- package/table/components/column-value/column-value.component.d.ts +1 -0
- package/table/components/table/table.component.d.ts +0 -1
- package/table/helpers/notification.d.ts +10 -1
- package/tableview/action/components/action/action.component.d.ts +8 -11
- package/tableview/action/helpers/i18n.d.ts +36 -11
- package/tableview/action/helpers/notification.d.ts +37 -3
- package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +18 -8
- package/tableview/api/action/descriptors/action.descriptor.d.ts +22 -31
- package/tableview/api/action/models/action-confirmation.model.d.ts +14 -0
- package/tableview/api/action/models/action-descriptor.types.d.ts +4 -0
- package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +5 -5
- package/tableview/api/index.d.ts +1 -1
- package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +1 -1
- package/tableview/provide.d.ts +7 -0
- package/version-info.json +6 -6
- package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +0 -88
- package/tableview/api/action/descriptors/action-confirmation.descriptor.d.ts +0 -37
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { StyleLevelEnum } from '@mediusinc/mng-commons/core';
|
|
2
|
-
import { ActionButtonDescriptor, ButtonStyleBuilder } from '@mediusinc/mng-commons/form/api';
|
|
3
2
|
import { AFieldDescriptor } from './field-base.descriptor';
|
|
4
3
|
export class FieldActionDescriptor extends AFieldDescriptor {
|
|
5
4
|
constructor(property) {
|
|
6
5
|
super(property);
|
|
7
|
-
this._button = new ActionButtonDescriptor();
|
|
8
6
|
this._wrappers = ['field'];
|
|
9
7
|
this._fieldActionName = property;
|
|
10
8
|
}
|
|
@@ -17,12 +15,20 @@ export class FieldActionDescriptor extends AFieldDescriptor {
|
|
|
17
15
|
get wrappers() {
|
|
18
16
|
return this._wrappers;
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
this._button =
|
|
18
|
+
withButton(label, icon = null, level = StyleLevelEnum.Default) {
|
|
19
|
+
this._button = {
|
|
20
|
+
...this._button,
|
|
21
|
+
label,
|
|
22
|
+
icon,
|
|
23
|
+
style: {
|
|
24
|
+
...this._button?.style,
|
|
25
|
+
level: level
|
|
26
|
+
}
|
|
27
|
+
};
|
|
22
28
|
return this;
|
|
23
29
|
}
|
|
24
|
-
|
|
25
|
-
this._button =
|
|
30
|
+
withButtonOpts(button) {
|
|
31
|
+
this._button = button;
|
|
26
32
|
return this;
|
|
27
33
|
}
|
|
28
34
|
withRunFunction(fn) {
|
|
@@ -36,10 +42,10 @@ export class FieldActionDescriptor extends AFieldDescriptor {
|
|
|
36
42
|
copy() {
|
|
37
43
|
const field = new FieldActionDescriptor(this._property);
|
|
38
44
|
this.copyFieldsTo(field);
|
|
39
|
-
field._button = this._button.
|
|
45
|
+
field._button = { ...this._button, style: { ...this._button?.style } };
|
|
40
46
|
field._runFunction = this._runFunction?.bind(field);
|
|
41
47
|
field._wrappers = [...this._wrappers];
|
|
42
48
|
return field;
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBSTNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXpELE1BQU0sT0FBTyxxQkFBa0UsU0FBUSxnQkFBNEQ7SUFTL0ksWUFBWSxRQUFnQjtRQUN4QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFIWixjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUkxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXFCLEVBQUUsT0FBc0IsSUFBSSxFQUFFLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTztRQUMvRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLEtBQUs7WUFDTCxJQUFJO1lBQ0osS0FBSyxFQUFFO2dCQUNILEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLO2dCQUN0QixLQUFLLEVBQUUsS0FBSzthQUNmO1NBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBZ0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFxQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBaUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmllbGRBY3Rpb25Db250ZXh0LCBGaWVsZEFjdGlvblJlc3VsdH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWFjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0gKFxuICAgIGN0eDogRmllbGRBY3Rpb25Db250ZXh0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikgPT4gdm9pZCB8IEZpZWxkQWN0aW9uUmVzdWx0IHwgT2JzZXJ2YWJsZTxGaWVsZEFjdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8dm9pZCwgRWRpdG9yTW9kZWwsIHZvaWQsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWVsZEFjdGlvbk5hbWU6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3I7XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogRmllbGRBY3Rpb25SdW5GblR5cGU8RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJpdmF0ZSBfd3JhcHBlcnMgPSBbJ2ZpZWxkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25OYW1lID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5GdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd3JhcHBlcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93cmFwcGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbihsYWJlbD86IHN0cmluZyB8IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBsZXZlbCA9IFN0eWxlTGV2ZWxFbnVtLkRlZmF1bHQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9idXR0b24/LnN0eWxlLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbk9wdHMoYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gYnV0dG9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhXcmFwcGVycyh3cmFwcGVyczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlcnMgPSB3cmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2J1dHRvbiA9IHsuLi50aGlzLl9idXR0b24sIHN0eWxlOiB7Li4udGhpcy5fYnV0dG9uPy5zdHlsZX19O1xuICAgICAgICBmaWVsZC5fcnVuRnVuY3Rpb24gPSB0aGlzLl9ydW5GdW5jdGlvbj8uYmluZChmaWVsZCk7XG4gICAgICAgIGZpZWxkLl93cmFwcGVycyA9IFsuLi50aGlzLl93cmFwcGVyc107XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -67,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
67
67
|
type: Input,
|
|
68
68
|
args: ['formState']
|
|
69
69
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBSzNDLDZEQUE2RDtBQUU3RCxNQUFNLE9BQWdCLDJCQUEyRSxTQUFRLFNBQXNFO0lBWTNLLElBQWEsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFhLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQWEsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQWEsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYSxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFhLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7K0dBOUNpQiwyQkFBMkI7bUdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEaEQsU0FBUzs4QkFFa0IsS0FBSztzQkFBNUIsS0FBSzt1QkFBQyxPQUFPO2dCQUNFLE1BQU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTztnQkFDQyxLQUFLO3NCQUFuQixLQUFLO3VCQUFDLE1BQU07Z0JBQ0ssUUFBUTtzQkFBekIsS0FBSzt1QkFBQyxTQUFTO2dCQUNGLElBQUk7c0JBQWpCLEtBQUs7dUJBQUMsS0FBSztnQkFDVSxZQUFZO3NCQUFqQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ0osTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNNLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVztnQkFDTCxHQUFHO3NCQUFmLEtBQUs7dUJBQUMsSUFBSTtnQkFDUyxVQUFVO3NCQUE3QixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuXG5pbXBvcnQge0NvbW1vbnNGb3JtbHlGaWVsZENvbmZpZywgQ29tbW9uc0Zvcm1seUZpZWxkUHJvcHN9IGZyb20gJy4vZm9ybWx5LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZvcm1PcHRpb25zLCBDb21tb25zRm9ybWx5Rm9ybVN0YXRlfSBmcm9tICcuL2Zvcm1seS1vcHRpb25zLm1vZGVsJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9wcmVmZXItc3RhbmRhbG9uZVxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQUZvcm1seUN1c3RvbUZpZWxkQ29tcG9uZW50PFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZSA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBGaWVsZFR5cGU8Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT4+IHtcbiAgICBASW5wdXQoJ2ZpZWxkJykgZGVjbGFyZSBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgQElucHV0KCdtb2RlbCcpIF9tb2RlbCE6IFZhbHVlO1xuICAgIEBJbnB1dCgnZm9ybScpIF9mb3JtITogRm9ybUdyb3VwPHtbSyBpbiBrZXlvZiBGb3JtVmFsdWVdOiBBYnN0cmFjdENvbnRyb2w8Rm9ybVZhbHVlW0tdPn0+O1xuICAgIEBJbnB1dCgnb3B0aW9ucycpIF9vcHRpb25zITogQ29tbW9uc0Zvcm1seUZvcm1PcHRpb25zPEZvcm1WYWx1ZT47XG4gICAgQElucHV0KCdrZXknKSBfa2V5ITogc3RyaW5nIHwgbnVtYmVyIHwgKHN0cmluZyB8IG51bWJlcilbXTtcbiAgICBASW5wdXQoJ2Zvcm1Db250cm9sJykgX2Zvcm1Db250cm9sITogRm9ybUNvbnRyb2w8VmFsdWU+O1xuICAgIEBJbnB1dCgncHJvcHMnKSBfcHJvcHMhOiBDb21tb25zRm9ybWx5RmllbGRQcm9wczxWYWx1ZSwgRm9ybVZhbHVlLCBQYXJlbnRGb3JtVmFsdWU+O1xuICAgIEBJbnB1dCgnc2hvd0Vycm9yJykgX3Nob3dFcnJvciE6IGJvb2xlYW47XG4gICAgQElucHV0KCdpZCcpIF9pZCE6IHN0cmluZztcbiAgICBASW5wdXQoJ2Zvcm1TdGF0ZScpIF9mb3JtU3RhdGUhOiBDb21tb25zRm9ybWx5Rm9ybVN0YXRlPEZvcm1WYWx1ZT47XG5cbiAgICBvdmVycmlkZSBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgZm9ybSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm07XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBrZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IGZvcm1Db250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IHByb3BzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcHM7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IHNob3dFcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dFcnJvcjtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgZm9ybVN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybVN0YXRlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// action descriptors
|
|
2
2
|
export * from './action/descriptors/action.descriptor';
|
|
3
|
-
export * from './action/descriptors/action-confirmation.descriptor';
|
|
4
3
|
export * from './action/descriptors/action-descriptor.factory';
|
|
5
4
|
export * from './action/descriptors/action-editor.descriptor';
|
|
6
5
|
export * from './action/descriptors/action-editor-descriptor.factory';
|
|
@@ -22,6 +21,7 @@ export * from './action/models/execution/view-container.model';
|
|
|
22
21
|
// action model
|
|
23
22
|
export * from './action/models/action.type';
|
|
24
23
|
export * from './action/models/action-component.model';
|
|
24
|
+
export * from './action/models/action-confirmation.model';
|
|
25
25
|
export * from './action/models/action-descriptor.types';
|
|
26
26
|
export * from './action/models/action-editor.model';
|
|
27
27
|
export * from './action/models/action-error.model';
|
|
@@ -73,4 +73,4 @@ export * from './tableview/models/tableview-descriptor-fields-manage-helper.type
|
|
|
73
73
|
export * from './tableview/models/tableview-descriptor-helper.type';
|
|
74
74
|
export * from './tableview/models/tableview-input.model';
|
|
75
75
|
export * from './tableview/models/tableview-route.model';
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUI7QUFDckIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw2REFBNkQsQ0FBQztBQUU1RSxpQkFBaUI7QUFDakIsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCx5QkFBeUI7QUFDekIsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsZUFBZTtBQUNmLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkRBQTJELENBQUM7QUFFMUUsa0JBQWtCO0FBQ2xCLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSx3QkFBd0I7QUFDeEIsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHNEQUFzRCxDQUFDO0FBRXJFLHFCQUFxQjtBQUNyQixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGdCQUFnQjtBQUNoQixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCwyQkFBMkI7QUFDM0IsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDREQUE0RCxDQUFDO0FBRTNFLHdCQUF3QjtBQUN4QixjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFFckUsb0JBQW9CO0FBQ3BCLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUU1RCxtQkFBbUI7QUFDbkIsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFjdGlvbiBkZXNjcmlwdG9yc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmsuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2Rlc2NyaXB0b3JzL3RhYmxlLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvdGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyBhY3Rpb24gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaGVscGVycy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9ycyc7XG5cbi8vIGFjdGlvbiBtb2RlbCBleGVjdXRpb25cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC12YWxpZGF0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWV4ZWN1dGlvbi1lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS1zdGF0ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL3ZpZXctY29udGFpbmVyLm1vZGVsJztcblxuLy8gYWN0aW9uIG1vZGVsXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb21wb25lbnQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZWRpdG9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcblxuLy8gYWN0aW9uIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuXG4vLyBlZGl0b3IgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyBlZGl0b3IgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWdyb3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbi8vIGVkaXRvciBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9maWVsZC1hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2Zvcm0tZWRpdG9yLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9mb3JtbHktb3B0aW9ucy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLWltYWdlLXByZXZpZXcubW9kZWwnO1xuXG4vLyB0YWJsZXZpZXcgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy9maWxlcy1leHBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctY3JlYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1pbnB1dC1idWlsZGVyJztcblxuLy8gdGFibGV2aWV3IG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWhlbHBlci50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L21vZGVscy90YWJsZXZpZXctaW5wdXQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG4iXX0=
|
|
@@ -4,7 +4,6 @@ import { TranslateService } from '@ngx-translate/core';
|
|
|
4
4
|
import { of, tap } from 'rxjs';
|
|
5
5
|
import { map } from 'rxjs/operators';
|
|
6
6
|
import { CommonsInternalError, StyleLevelEnum, StyleSizeEnum, copyDataListParams } from '@mediusinc/mng-commons/core';
|
|
7
|
-
import { ActionButtonDescriptor, ButtonStyleRoundedEnum } from '@mediusinc/mng-commons/form/api';
|
|
8
7
|
import { actionGetProviderCfgObj } from '../../action/descriptors/action-descriptor.factory';
|
|
9
8
|
import { actionEditorGetProviderCfgObj } from '../../action/descriptors/action-editor-descriptor.factory';
|
|
10
9
|
import { ActionEditorDescriptorInst, actionEditorCancel } from '../../action/descriptors/action-editor.descriptor';
|
|
@@ -57,7 +56,7 @@ export function tableviewCreateDefaultAction(type, tableview, defaultActions, de
|
|
|
57
56
|
switch (type) {
|
|
58
57
|
// table row actions
|
|
59
58
|
case TableviewDefaultActionsEnum.Details:
|
|
60
|
-
return tableviewActionDetailsOnTable(tableview.detailsEditor, { injector });
|
|
59
|
+
return tableviewActionDetailsOnTable(tableview.model, tableview.detailsEditor, { injector });
|
|
61
60
|
case TableviewDefaultActionsEnum.Edit:
|
|
62
61
|
return tableviewActionEditOnTable(tableview.model, tableview.editEditor, { table: tableview.table, injector });
|
|
63
62
|
case TableviewDefaultActionsEnum.Delete:
|
|
@@ -94,15 +93,15 @@ function getRouteData(injector) {
|
|
|
94
93
|
}
|
|
95
94
|
export const tableviewActionEditorDetailsActionName = 'details';
|
|
96
95
|
export const tableviewActionEditorDetailsRoute = ':itemId';
|
|
97
|
-
export function tableviewActionDetailsOnTable(descriptor, opts) {
|
|
96
|
+
export function tableviewActionDetailsOnTable(model, descriptor, opts) {
|
|
98
97
|
const routeData = getRouteData(opts?.injector);
|
|
99
98
|
if (!routeData?.tableviewActions || routeData.tableviewActions.hasDetails) {
|
|
100
99
|
const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorDetailsActionName, {
|
|
101
100
|
...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts?.serviceProvider) : {}),
|
|
102
|
-
isTableviewMainEditor: true
|
|
101
|
+
isTableviewMainEditor: true,
|
|
102
|
+
model: model
|
|
103
103
|
});
|
|
104
104
|
action.withPosition(opts?.position ?? ActionPositionEnum.RowClick);
|
|
105
|
-
action.withPosition(ActionPositionEnum.RowClick);
|
|
106
105
|
action.withRouteTrigger(tableviewActionEditorDetailsRoute);
|
|
107
106
|
action.withEditorActions([actionEditorCancel(action)]);
|
|
108
107
|
action.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);
|
|
@@ -120,9 +119,12 @@ export function tableviewActionAddOnTable(model, descriptor, opts) {
|
|
|
120
119
|
isTableviewMainEditor: true,
|
|
121
120
|
model: model
|
|
122
121
|
});
|
|
123
|
-
action
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
action
|
|
123
|
+
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)
|
|
124
|
+
.withRouteTrigger(tableviewActionEditorAddRoute)
|
|
125
|
+
.withButtonOpts({
|
|
126
|
+
icon: 'pi pi-plus'
|
|
127
|
+
});
|
|
126
128
|
action.withTableviewCategory(TableviewActionDefaultCategories.ADD);
|
|
127
129
|
action.withUnsavedChangesConfirmation();
|
|
128
130
|
return action;
|
|
@@ -139,12 +141,18 @@ export function tableviewActionEditOnTable(model, descriptor, opts) {
|
|
|
139
141
|
isTableviewMainEditor: true,
|
|
140
142
|
model: model
|
|
141
143
|
});
|
|
142
|
-
action
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
144
|
+
action
|
|
145
|
+
.withPosition(opts?.position ?? ActionPositionEnum.RowInline)
|
|
146
|
+
.withButtonOpts({
|
|
147
|
+
label: null,
|
|
148
|
+
icon: 'pi pi-pencil',
|
|
149
|
+
style: {
|
|
150
|
+
size: StyleSizeEnum.Small
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
.withRouteTrigger(tableviewActionEditorEditRoute)
|
|
154
|
+
.withTableviewCategory(TableviewActionDefaultCategories.EDIT)
|
|
155
|
+
.withUnsavedChangesConfirmation();
|
|
148
156
|
return action;
|
|
149
157
|
}
|
|
150
158
|
return null;
|
|
@@ -160,25 +168,34 @@ export function tableviewActionEditOnDetails(model, opts) {
|
|
|
160
168
|
.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])
|
|
161
169
|
.withPosition(opts?.position ?? ActionPositionEnum.FooterLeft)
|
|
162
170
|
.withRouterLink('./edit')
|
|
163
|
-
.withQueryParams({}, 'merge')
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
.withQueryParams({}, 'merge')
|
|
172
|
+
.withButtonOpts({
|
|
173
|
+
icon: 'pi pi-pencil',
|
|
174
|
+
style: {
|
|
175
|
+
level: StyleLevelEnum.Secondary
|
|
176
|
+
}
|
|
177
|
+
});
|
|
169
178
|
return linkAction;
|
|
170
179
|
}
|
|
171
180
|
export const tableviewActionDeleteActionName = 'delete';
|
|
172
181
|
export function tableviewActionDeleteOnTable(model, opts) {
|
|
173
182
|
const routeData = getRouteData(opts?.injector);
|
|
174
183
|
if (!routeData?.tableviewActions || routeData.tableviewActions.hasDelete) {
|
|
175
|
-
const action = new ActionDescriptorInst(tableviewActionDeleteActionName,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
184
|
+
const action = new ActionDescriptorInst(tableviewActionDeleteActionName, {
|
|
185
|
+
...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),
|
|
186
|
+
model: model
|
|
187
|
+
})
|
|
188
|
+
.withButtonOpts({
|
|
189
|
+
label: null,
|
|
190
|
+
icon: 'pi pi-trash',
|
|
191
|
+
style: {
|
|
192
|
+
size: StyleSizeEnum.Small,
|
|
193
|
+
level: StyleLevelEnum.Danger
|
|
194
|
+
}
|
|
195
|
+
})
|
|
196
|
+
.withPosition(opts?.position ?? ActionPositionEnum.RowInline)
|
|
197
|
+
.withRunConfirmation()
|
|
198
|
+
.withTableviewCategory(TableviewActionDefaultCategories.DELETE);
|
|
182
199
|
return action;
|
|
183
200
|
}
|
|
184
201
|
return null;
|
|
@@ -196,9 +213,15 @@ export function tableviewActionDeleteOnDetails(model, opts) {
|
|
|
196
213
|
ctx.viewContainer?.reloadTable({});
|
|
197
214
|
ctx.viewContainer?.closeEditor();
|
|
198
215
|
}))
|
|
199
|
-
: null)
|
|
200
|
-
|
|
201
|
-
|
|
216
|
+
: null)
|
|
217
|
+
.withButtonOpts({
|
|
218
|
+
...action.button,
|
|
219
|
+
label: undefined,
|
|
220
|
+
style: {
|
|
221
|
+
...action.button?.style,
|
|
222
|
+
size: StyleSizeEnum.Normal
|
|
223
|
+
}
|
|
224
|
+
});
|
|
202
225
|
return action;
|
|
203
226
|
}
|
|
204
227
|
return null;
|
|
@@ -207,7 +230,7 @@ export function tableviewActionExportOnTable(descriptor, opts) {
|
|
|
207
230
|
const exportAction = new ActionDescriptorInst('export', {
|
|
208
231
|
model: descriptor.model
|
|
209
232
|
})
|
|
210
|
-
.
|
|
233
|
+
.withButton(undefined, 'pi pi-download')
|
|
211
234
|
.withSubactionsAsMenu();
|
|
212
235
|
const subactions = [];
|
|
213
236
|
if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))
|
|
@@ -237,7 +260,8 @@ export function tableviewActionExportJsonOnTable(descriptor, opts) {
|
|
|
237
260
|
}))
|
|
238
261
|
: ctx.parameters.item;
|
|
239
262
|
})
|
|
240
|
-
.
|
|
263
|
+
.withNotifications({ runOnSuccess: false })
|
|
264
|
+
.withButton(undefined, 'pi pi-code')
|
|
241
265
|
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);
|
|
242
266
|
}
|
|
243
267
|
export function tableviewActionExportCsvOnTable(descriptor, opts) {
|
|
@@ -264,7 +288,8 @@ export function tableviewActionExportCsvOnTable(descriptor, opts) {
|
|
|
264
288
|
}))
|
|
265
289
|
: ctx.parameters.item;
|
|
266
290
|
})
|
|
267
|
-
.
|
|
291
|
+
.withNotifications({ runOnSuccess: false })
|
|
292
|
+
.withButton(undefined, 'pi pi-file')
|
|
268
293
|
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);
|
|
269
294
|
}
|
|
270
295
|
export function tableviewActionRefreshOnTable(descriptor, opts) {
|
|
@@ -273,13 +298,18 @@ export function tableviewActionRefreshOnTable(descriptor, opts) {
|
|
|
273
298
|
})
|
|
274
299
|
.withPosition(ActionPositionEnum.ToolbarRight)
|
|
275
300
|
.withTableviewCategory(TableviewActionDefaultCategories.READ)
|
|
276
|
-
.
|
|
301
|
+
.withNotifications({ runOnSuccess: false })
|
|
277
302
|
.withRunFunction(ctx => {
|
|
278
303
|
ctx.viewContainer?.reloadTable({});
|
|
279
304
|
return of(null);
|
|
280
305
|
})
|
|
281
|
-
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight)
|
|
282
|
-
|
|
306
|
+
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight)
|
|
307
|
+
.withButtonOpts({
|
|
308
|
+
icon: 'pi pi-refresh',
|
|
309
|
+
style: {
|
|
310
|
+
level: StyleLevelEnum.Secondary
|
|
311
|
+
}
|
|
312
|
+
});
|
|
283
313
|
return action;
|
|
284
314
|
}
|
|
285
315
|
export function tableviewActionLocalizationLangSelectOnTable(descriptor, opts) {
|
|
@@ -291,4 +321,4 @@ export function tableviewActionLocalizationLangSelectOnTable(descriptor, opts) {
|
|
|
291
321
|
.withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)
|
|
292
322
|
: null;
|
|
293
323
|
}
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN0SSxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUkvRixPQUFPLEVBQXFCLHVCQUF1QixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDL0csT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUVuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JB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QUFRLElBQUksa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0YsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQU1ELE1BQU0sVUFBVSw0Q0FBNEMsQ0FDeEQsVUFBMEMsRUFDMUMsSUFBMkQ7SUFFM0QsT0FBTyxVQUFVLENBQUMsV0FBVyxFQUFFO1FBQzNCLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixDQUFvRCxZQUFZLEVBQUU7WUFDdEYsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1NBQzFCLENBQUM7YUFDRyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7YUFDOUQsbUJBQW1CLENBQUMsbUNBQW1DLENBQUM7UUFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7b2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBTZXJ2aWNlQ2xhc3NUeXBlLCBTdHlsZUxldmVsRW51bSwgU3R5bGVTaXplRW51bSwgY29weURhdGFMaXN0UGFyYW1zfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBCdXR0b25TdHlsZVJvdW5kZWRFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3QsIGFjdGlvbkVkaXRvckNhbmNlbH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmt9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVH0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Rva2Vucy9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLnRva2VuJztcbmltcG9ydCB7SUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG5pbXBvcnQge2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyLCBzYXZlRmlsZUFzfSBmcm9tICcuL2ZpbGVzLWV4cG9ydCc7XG5cbmV4cG9ydCBlbnVtIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSB7XG4gICAgRGV0YWlscyxcbiAgICBBZGQsXG4gICAgRWRpdCxcbiAgICBFZGl0T25EZXRhaWxzLFxuICAgIERlbGV0ZSxcbiAgICBEZWxldGVPbkRldGFpbHMsXG4gICAgUmVmcmVzaCxcbiAgICBFeHBvcnQsXG4gICAgRXhwb3J0SnNvbixcbiAgICBFeHBvcnRDc3YsXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Rcbn1cblxuY29uc3QgdGFibGV2aWV3RGVmYXVsdEFjdGlvbnMgPSBbXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2gsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbixcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkge1xuICAgIHJldHVybiBbLi4udGFibGV2aWV3RGVmYXVsdEFjdGlvbnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbnMoXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+IHtcbiAgICByZXR1cm4gKGRlZmF1bHRBY3Rpb25zID8/IHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkpXG4gICAgICAgIC5tYXAodCA9PiB0YWJsZXZpZXdDcmVhdGVEZWZhdWx0QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbihcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICBpZiAoZGVmYXVsdEFjdGlvbnNPdmVycmlkZXMgIT0gbnVsbCAmJiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgLy8gdGFibGUgcm93IGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZSh0YWJsZXZpZXcuZGV0YWlsc0VkaXRvciwge2luamVjdG9yfSk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXQ6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGUodGFibGV2aWV3Lm1vZGVsLCB0YWJsZXZpZXcuZWRpdEVkaXRvciwge3RhYmxlOiB0YWJsZXZpZXcudGFibGUsIGluamVjdG9yfSk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZTpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlKHRhYmxldmlldy5tb2RlbCwge3RhYmxlOiB0YWJsZXZpZXcudGFibGUsIGluamVjdG9yfSk7XG4gICAgICAgIC8vIHRhYmxlIHRvb2xiYXIgYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5BZGQ6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5hZGRFZGl0b3IsIHtpbmplY3Rvcn0pO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25Mb2NhbGl6YXRpb25MYW5nU2VsZWN0T25UYWJsZSh0YWJsZXZpZXcpO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5SZWZyZXNoOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlKHRhYmxldmlldy5tb2RlbCk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydDpcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KVxuICAgICAgICAgICAgICAgID8gdGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZSh0YWJsZXZpZXcsIHtpbmplY3RvcjogaW5qZWN0b3IsIGRlZmF1bHRBY3Rpb25zOiBkZWZhdWx0QWN0aW9uc30pXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAvL2RldGFpbHMgYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0T25EZXRhaWxzOlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXQpID8gdGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIHtpbmplY3Rvcn0pIDogbnVsbDtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlT25EZXRhaWxzOlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZSkgPyB0YWJsZXZpZXdBY3Rpb25EZWxldGVPbkRldGFpbHModGFibGV2aWV3Lm1vZGVsLCB7aW5qZWN0b3J9KSA6IG51bGw7XG4gICAgICAgIC8vIHN1YmFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbjpcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2OlxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFRhYmxldmlldyBkZWZhdWx0IGFjdGlvbiBvZiB0eXBlICR7dHlwZX0gbm90IHN1cHBvcnRlZGApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0SW5qZWN0b3IoaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpOiBJbmplY3RvciB8IG51bGwge1xuICAgIHJldHVybiBpbmplY3RvciA9PT0gdW5kZWZpbmVkID8gaW5qZWN0KEluamVjdG9yKSA6IGluamVjdG9yO1xufVxuXG5mdW5jdGlvbiBnZXRSb3V0ZURhdGEoaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpIHtcbiAgICByZXR1cm4gZ2V0SW5qZWN0b3IoaW5qZWN0b3IpPy5nZXQoQWN0aXZhdGVkUm91dGUpPy5zbmFwc2hvdC5kYXRhIGFzIFRhYmxldmlld1JvdXRlRGF0YSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNvbnN0IHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNBY3Rpb25OYW1lID0gJ2RldGFpbHMnO1xuZXhwb3J0IGNvbnN0IHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNSb3V0ZSA9ICc6aXRlbUlkJztcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICB0YWJsZT86IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbD47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRGV0YWlsc09uVGFibGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRGV0YWlsc09uVGFibGVPcHRzVHlwZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBNb2RlbCwgVGFibGVNb2RlbCwgdW5kZWZpbmVkLCBUYWJsZU1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGV0YWlscykge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBUYWJsZU1vZGVsLCB1bmRlZmluZWQsIFRhYmxlTW9kZWw+KGRlc2NyaXB0b3IsIHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNBY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cz8uc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2spO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIGFjdGlvbi53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi53aXRoRWRpdG9yQWN0aW9ucyhbYWN0aW9uRWRpdG9yQ2FuY2VsKGFjdGlvbildKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JBZGRBY3Rpb25OYW1lID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkUm91dGUgPSAnYWRkJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJBZGRUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgYW55LCBBZGRNb2RlbCwgYW55PjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlT3B0c1R5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlckFkZFR5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZTxNb2RlbCwgQWRkTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBBZGRNb2RlbCwgdW5kZWZpbmVkLCBNb2RlbCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgQWRkTW9kZWwsIHVuZGVmaW5lZCwgTW9kZWwsIHVuZGVmaW5lZD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpO1xuICAgICAgICBhY3Rpb24ud2l0aFJvdXRlVHJpZ2dlcih0YWJsZXZpZXdBY3Rpb25FZGl0b3JBZGRSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi5idXR0b24ud2l0aEljb24oJ3BpIHBpLXBsdXMnKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5BREQpO1xuICAgICAgICBhY3Rpb24ud2l0aFVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKCk7XG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdEFjdGlvbk5hbWUgPSAnZWRpdCc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdFJvdXRlID0gJzppdGVtSWQvZWRpdCc7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvclByb3ZpZGVyRWRpdFR5cGU8TW9kZWwsIEVkaXRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgYW55LCBhbnksIEVkaXRNb2RlbD47XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGVPcHRzVHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICB0YWJsZT86IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+O1xuICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvbkVkaXRvclByb3ZpZGVyRWRpdFR5cGU8TW9kZWwsIEVkaXRNb2RlbCwgU2VydmljZT47XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2sgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkVkaXRPblRhYmxlPE1vZGVsLCBFZGl0TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxldmlld0FjdGlvbkVkaXRPblRhYmxlT3B0c1R5cGU8TW9kZWwsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBFZGl0TW9kZWwsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRWRpdCkge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+KGRlc2NyaXB0b3IsIHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRBY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pLFxuICAgICAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xuICAgICAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFNpemUoU3R5bGVTaXplRW51bS5TbWFsbCk7XG4gICAgICAgIGFjdGlvbi53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVCk7XG4gICAgICAgIGFjdGlvbi5idXR0b24ud2l0aExhYmVsKG51bGwpLndpdGhJY29uKCdwaSBwaS1wZW5jaWwnKTtcbiAgICAgICAgYWN0aW9uLndpdGhVbnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbigpO1xuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzT3B0c1R5cGUgPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzPE1vZGVsPihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiwgb3B0cz86IFRhYmxldmlld0FjdGlvbkVkaXRPbkRldGFpbHNPcHRzVHlwZSk6IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCByb3V0ZURhdGEgPSBnZXRSb3V0ZURhdGEob3B0cz8uaW5qZWN0b3IpO1xuICAgIGlmIChyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgJiYgIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbGlua0FjdGlvbiA9IGFjdGlvbkxpbmsodGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdEFjdGlvbk5hbWUsIHttb2RlbDogbW9kZWx9KTtcbiAgICBsaW5rQWN0aW9uXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVClcbiAgICAgICAgLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0KVxuICAgICAgICAud2l0aFJvdXRlckxpbmsoJy4vZWRpdCcpXG4gICAgICAgIC53aXRoUXVlcnlQYXJhbXMoe30sICdtZXJnZScpO1xuICAgIGxpbmtBY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLlNlY29uZGFyeSk7XG4gICAgbGlua0FjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLk5vcm1hbCk7XG4gICAgbGlua0FjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoUm91bmRlZEJ1dHRvbihCdXR0b25TdHlsZVJvdW5kZWRFbnVtLkRFRkFVTFQpO1xuICAgIGxpbmtBY3Rpb24uYnV0dG9uLndpdGhMYWJlbCgpO1xuICAgIGxpbmtBY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1wZW5jaWwnKTtcbiAgICByZXR1cm4gbGlua0FjdGlvbjtcbn1cblxuZXhwb3J0IGNvbnN0IHRhYmxldmlld0FjdGlvbkRlbGV0ZUFjdGlvbk5hbWUgPSAnZGVsZXRlJztcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRGVsZXRlT25UYWJsZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGVPcHRzVHlwZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCByb3V0ZURhdGEgPSBnZXRSb3V0ZURhdGEob3B0cz8uaW5qZWN0b3IpO1xuICAgIGlmICghcm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0RlbGV0ZSkge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPihcbiAgICAgICAgICAgIHRhYmxldmlld0FjdGlvbkRlbGV0ZUFjdGlvbk5hbWUsXG4gICAgICAgICAgICBvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25HZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fVxuICAgICAgICApO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xuICAgICAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFNpemUoU3R5bGVTaXplRW51bS5TbWFsbCk7XG4gICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uRGFuZ2VyKTtcbiAgICAgICAgYWN0aW9uLndpdGhSdW5Db25maXJtYXRpb24oKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbChudWxsKS53aXRoSWNvbigncGkgcGktdHJhc2gnKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uRGV0YWlsczxNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxldmlld0FjdGlvbkRlbGV0ZU9uRGV0YWlsc09wdHNUeXBlPE1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBNb2RlbCwgTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3QgYWN0aW9uID0gdGFibGV2aWV3QWN0aW9uRGVsZXRlT25UYWJsZTxNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KG1vZGVsLCBvcHRzKSBhcyB1bmtub3duIGFzIEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBNb2RlbCwgTW9kZWwsIE1vZGVsPjtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0KVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT5cbiAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkRlbGV0ZU9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LmNsb3NlRWRpdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICk7XG4gICAgICAgIGFjdGlvbi5idXR0b24ud2l0aExhYmVsKHVuZGVmaW5lZCk7XG4gICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLk5vcm1hbCk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXTtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZTxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGVcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4oJ2V4cG9ydCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZG93bmxvYWQnKSlcbiAgICAgICAgLndpdGhTdWJhY3Rpb25zQXNNZW51KCk7XG5cbiAgICBjb25zdCBzdWJhY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD5bXSA9IFtdO1xuXG4gICAgaWYgKG9wdHM/LmRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgb3B0cz8uZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pKSBzdWJhY3Rpb25zLnB1c2godGFibGV2aWV3QWN0aW9uRXhwb3J0SnNvbk9uVGFibGUoZGVzY3JpcHRvciwgb3B0cykpO1xuICAgIGlmIChvcHRzPy5kZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IG9wdHM/LmRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpKSBzdWJhY3Rpb25zLnB1c2godGFibGV2aWV3QWN0aW9uRXhwb3J0Q3N2T25UYWJsZShkZXNjcmlwdG9yLCBvcHRzKSk7XG5cbiAgICBleHBvcnRBY3Rpb24ud2l0aFN1YmFjdGlvbnMoLi4uc3ViYWN0aW9ucyk7XG4gICAgZXhwb3J0QWN0aW9uLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KTtcbiAgICByZXR1cm4gZXhwb3J0QWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0SnNvbk9uVGFibGU8TW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBvcHRzPzogT21pdDxUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGUsICdkZWZhdWx0QWN0aW9ucyc+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3Iob3B0cz8uaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIHJldHVybiBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KCdleHBvcnRKc29uJywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShyZXMuZGF0YSwgdW5kZWZpbmVkLCA0KV0sIHt0eXBlOiAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04J30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5ID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uanNvbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBjdHgucGFyYW1ldGVycy5pdGVtO1xuICAgICAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktY29kZScpKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0Q3N2T25UYWJsZTxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBPbWl0PFRhYmxldmlld0FjdGlvbkV4cG9ydE9uVGFibGVPcHRzVHlwZSwgJ2RlZmF1bHRBY3Rpb25zJz5cbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBnZXRJbmplY3RvcihvcHRzPy5pbmplY3Rvcik/LmdldChEYXRhUHJvdmlkZXJFeGVjdXRvcik7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4oJ2V4cG9ydENzdicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjb252ZXJ0RGF0YVRvU3RyaW5nV2l0aERlbGltaXRlcihyZXMuZGF0YSwgJywnLCBkZXNjcmlwdG9yLCBjdHguaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpKV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04J1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy5pMThuQmFzZUtleSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9LmNzdmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBjdHgucGFyYW1ldGVycy5pdGVtO1xuICAgICAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZmlsZScpKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG50eXBlIFRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25SZWZyZXNoT25UYWJsZU9wdHNUeXBlXG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPigncmVmcmVzaCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICB9KVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgLndpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KTtcbiAgICBhY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1yZWZyZXNoJykuc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICByZXR1cm4gYWN0aW9uO1xufVxuXG50eXBlIFRhYmxldmlld0xvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlQWN0aW9uT3B0c1R5cGUgPSB7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkxvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxldmlld0xvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlQWN0aW9uT3B0c1R5cGVcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIGRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQoKVxuICAgICAgICA/IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPigndHJhbnNsYXRvcicsIHtcbiAgICAgICAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICAgICAgICB9KVxuICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdClcbiAgICAgICAgICAgICAgLndpdGhDb21wb25lbnRGcm9tRGkoREFUQV9MQU5HVUFHRV9EUk9QRE9XTl9DT01QT05FTlRfSVQpXG4gICAgICAgIDogbnVsbDtcbn1cbiJdfQ==
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl0SSxPQUFPLEVBQXFCLHVCQUF1QixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDL0csT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUVuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFB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O2FBQzlELG1CQUFtQixDQUFDLG1DQUFtQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge29mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgU2VydmljZUNsYXNzVHlwZSwgU3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW0sIGNvcHlEYXRhTGlzdFBhcmFtc30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3QsIGFjdGlvbkVkaXRvckNhbmNlbH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmt9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVH0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Rva2Vucy9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLnRva2VuJztcbmltcG9ydCB7SUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG5pbXBvcnQge2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyLCBzYXZlRmlsZUFzfSBmcm9tICcuL2ZpbGVzLWV4cG9ydCc7XG5cbmV4cG9ydCBlbnVtIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSB7XG4gICAgRGV0YWlscyxcbiAgICBBZGQsXG4gICAgRWRpdCxcbiAgICBFZGl0T25EZXRhaWxzLFxuICAgIERlbGV0ZSxcbiAgICBEZWxldGVPbkRldGFpbHMsXG4gICAgUmVmcmVzaCxcbiAgICBFeHBvcnQsXG4gICAgRXhwb3J0SnNvbixcbiAgICBFeHBvcnRDc3YsXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Rcbn1cblxuY29uc3QgdGFibGV2aWV3RGVmYXVsdEFjdGlvbnMgPSBbXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2gsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbixcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkge1xuICAgIHJldHVybiBbLi4udGFibGV2aWV3RGVmYXVsdEFjdGlvbnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbnMoXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+IHtcbiAgICByZXR1cm4gKGRlZmF1bHRBY3Rpb25zID8/IHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkpXG4gICAgICAgIC5tYXAodCA9PiB0YWJsZXZpZXdDcmVhdGVEZWZhdWx0QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbihcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICBpZiAoZGVmYXVsdEFjdGlvbnNPdmVycmlkZXMgIT0gbnVsbCAmJiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgLy8gdGFibGUgcm93IGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5kZXRhaWxzRWRpdG9yLCB7aW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5lZGl0RWRpdG9yLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGUodGFibGV2aWV3Lm1vZGVsLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgLy8gdGFibGUgdG9vbGJhciBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlKHRhYmxldmlldy5tb2RlbCwgdGFibGV2aWV3LmFkZEVkaXRvciwge2luamVjdG9yfSk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkxvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlKHRhYmxldmlldyk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2g6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWN0aW9uUmVmcmVzaE9uVGFibGUodGFibGV2aWV3Lm1vZGVsKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0OlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpXG4gICAgICAgICAgICAgICAgPyB0YWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlKHRhYmxldmlldywge2luamVjdG9yOiBpbmplY3RvciwgZGVmYXVsdEFjdGlvbnM6IGRlZmF1bHRBY3Rpb25zfSlcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIC8vZGV0YWlscyBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCkgPyB0YWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzKHRhYmxldmlldy5tb2RlbCwge2luamVjdG9yfSkgOiBudWxsO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKSA/IHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIHtpbmplY3Rvcn0pIDogbnVsbDtcbiAgICAgICAgLy8gc3ViYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uOlxuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3Y6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgVGFibGV2aWV3IGRlZmF1bHQgYWN0aW9uIG9mIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbmplY3RvcihpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEluamVjdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIGluamVjdG9yID09PSB1bmRlZmluZWQgPyBpbmplY3QoSW5qZWN0b3IpIDogaW5qZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGdldFJvdXRlRGF0YShpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCkge1xuICAgIHJldHVybiBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChBY3RpdmF0ZWRSb3V0ZSk/LnNuYXBzaG90LmRhdGEgYXMgVGFibGV2aWV3Um91dGVEYXRhIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUgPSAnZGV0YWlscyc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc1JvdXRlID0gJzppdGVtSWQnO1xuXG50eXBlIFRhYmxldmlld0FjdGlvbkRldGFpbHNPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBUYWJsZU1vZGVsLCB1bmRlZmluZWQsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZXRhaWxzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIFRhYmxlTW9kZWwsIHVuZGVmaW5lZCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pLFxuICAgICAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIGFjdGlvbi53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi53aXRoRWRpdG9yQWN0aW9ucyhbYWN0aW9uRWRpdG9yQ2FuY2VsKGFjdGlvbildKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JBZGRBY3Rpb25OYW1lID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkUm91dGUgPSAnYWRkJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJBZGRUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgYW55LCBBZGRNb2RlbCwgYW55PjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlT3B0c1R5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlckFkZFR5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZTxNb2RlbCwgQWRkTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBBZGRNb2RlbCwgdW5kZWZpbmVkLCBNb2RlbCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgQWRkTW9kZWwsIHVuZGVmaW5lZCwgTW9kZWwsIHVuZGVmaW5lZD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdClcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckFkZFJvdXRlKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGx1cydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERCk7XG4gICAgICAgIGFjdGlvbi53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0QWN0aW9uTmFtZSA9ICdlZGl0JztcbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0Um91dGUgPSAnOml0ZW1JZC9lZGl0JztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPiA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4gfCBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBhbnksIGFueSwgRWRpdE1vZGVsPjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZU9wdHNUeXBlPE1vZGVsLCBFZGl0TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGU8TW9kZWwsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGVPcHRzVHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdEFjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I6IHRydWUsXG4gICAgICAgICAgICBtb2RlbDogbW9kZWxcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGVuY2lsJyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiBTdHlsZVNpemVFbnVtLlNtYWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRSb3V0ZSlcbiAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVClcbiAgICAgICAgICAgIC53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsc09wdHNUeXBlID0ge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsczxNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzT3B0c1R5cGUpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAocm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zICYmICFyb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtBY3Rpb24gPSBhY3Rpb25MaW5rKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRBY3Rpb25OYW1lLCB7bW9kZWw6IG1vZGVsfSk7XG4gICAgbGlua0FjdGlvblxuICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKVxuICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHt9LCAnbWVyZ2UnKVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXBlbmNpbCcsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIGxpbmtBY3Rpb247XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25EZWxldGVBY3Rpb25OYW1lID0gJ2RlbGV0ZSc7XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRGVsZXRlT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICB0YWJsZT86IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+O1xuICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4odGFibGV2aWV3QWN0aW9uRGVsZXRlQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktdHJhc2gnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uU21hbGwsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5EYW5nZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhSdW5Db25maXJtYXRpb24oKVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25EZWxldGVPbkRldGFpbHNPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIE1vZGVsLCBNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0YWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlPE1vZGVsLCBNb2RlbCwgU2VydmljZT4obW9kZWwsIG9wdHMpIGFzIHVua25vd24gYXMgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3Iob3B0cz8uaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlckV4ZWN1dG9yXG4gICAgICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuRGVsZXRlT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5yZWxvYWRUYWJsZSh7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8uY2xvc2VFZGl0b3IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICAuLi5hY3Rpb24uYnV0dG9uLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLmJ1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uTm9ybWFsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXTtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZTxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGVcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4oJ2V4cG9ydCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbih1bmRlZmluZWQsICdwaSBwaS1kb3dubG9hZCcpXG4gICAgICAgIC53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuXG4gICAgY29uc3Qgc3ViYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+W10gPSBbXTtcblxuICAgIGlmIChvcHRzPy5kZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IG9wdHM/LmRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlKGRlc2NyaXB0b3IsIG9wdHMpKTtcbiAgICBpZiAob3B0cz8uZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBvcHRzPy5kZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydENzdk9uVGFibGUoZGVzY3JpcHRvciwgb3B0cykpO1xuXG4gICAgZXhwb3J0QWN0aW9uLndpdGhTdWJhY3Rpb25zKC4uLnN1YmFjdGlvbnMpO1xuICAgIGV4cG9ydEFjdGlvbi53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG4gICAgcmV0dXJuIGV4cG9ydEFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0SnNvbicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEsIHVuZGVmaW5lZCwgNCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy5pMThuQmFzZUtleSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhCdXR0b24odW5kZWZpbmVkLCAncGkgcGktY29kZScpXG4gICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25FeHBvcnRDc3ZPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0Q3N2Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKHJlcy5kYXRhLCAnLCcsIGRlc2NyaXB0b3IsIGN0eC5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkpXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5ID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoTm90aWZpY2F0aW9ucyh7cnVuT25TdWNjZXNzOiBmYWxzZX0pXG4gICAgICAgIC53aXRoQnV0dG9uKHVuZGVmaW5lZCwgJ3BpIHBpLWZpbGUnKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG50eXBlIFRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25SZWZyZXNoT25UYWJsZU9wdHNUeXBlXG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPigncmVmcmVzaCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICB9KVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXJlZnJlc2gnLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBsZXZlbDogU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb247XG59XG5cbnR5cGUgVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZSA9IHtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uTG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGU8TW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5pc0xvY2FsaXplZCgpXG4gICAgICAgID8gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KCd0cmFuc2xhdG9yJywge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KVxuICAgICAgICAgICAgICAud2l0aENvbXBvbmVudEZyb21EaShEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVClcbiAgICAgICAgOiBudWxsO1xufVxuIl19
|