@ecodev/natural 58.0.3 → 58.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/classes/abstract-detail.mjs +12 -20
- package/esm2022/lib/classes/cumulative-changes.mjs +15 -13
- package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +5 -6
- package/esm2022/lib/modules/relations/relations.component.mjs +4 -5
- package/esm2022/lib/modules/sidenav/sidenav.service.mjs +9 -10
- package/esm2022/lib/services/abstract-model.service.mjs +9 -10
- package/fesm2022/ecodev-natural.mjs +48 -58
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/classes/abstract-detail.d.ts +8 -0
- package/lib/classes/cumulative-changes.d.ts +2 -1
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +1 -1
- package/lib/modules/relations/relations.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav.service.d.ts +1 -1
- package/lib/services/abstract-model.service.d.ts +5 -4
- package/package.json +1 -1
|
@@ -17,14 +17,6 @@ function isNaturalDialogTriggerProvidedData(dialogData) {
|
|
|
17
17
|
}
|
|
18
18
|
// @dynamic
|
|
19
19
|
export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
20
|
-
#dialogData;
|
|
21
|
-
/**
|
|
22
|
-
* Once set, this must not change anymore, especially not right after the creation mutation,
|
|
23
|
-
* so the form does not switch from creation mode to update mode without an actual reload of
|
|
24
|
-
* model from DB (by navigating to update page).
|
|
25
|
-
*/
|
|
26
|
-
#isUpdatePage;
|
|
27
|
-
#changes;
|
|
28
20
|
constructor(key, service) {
|
|
29
21
|
super();
|
|
30
22
|
this.key = key;
|
|
@@ -63,14 +55,14 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
63
55
|
* Injected service
|
|
64
56
|
*/
|
|
65
57
|
this.route = inject(ActivatedRoute);
|
|
66
|
-
this
|
|
58
|
+
this._dialogData = inject(MAT_DIALOG_DATA, { optional: true });
|
|
67
59
|
/**
|
|
68
60
|
* Once set, this must not change anymore, especially not right after the creation mutation,
|
|
69
61
|
* so the form does not switch from creation mode to update mode without an actual reload of
|
|
70
62
|
* model from DB (by navigating to update page).
|
|
71
63
|
*/
|
|
72
|
-
this
|
|
73
|
-
this
|
|
64
|
+
this._isUpdatePage = false;
|
|
65
|
+
this.changes = new CumulativeChanges();
|
|
74
66
|
}
|
|
75
67
|
/**
|
|
76
68
|
* You probably should not override this method. Instead, consider overriding `initForm()`.
|
|
@@ -80,8 +72,8 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
80
72
|
this.initForm();
|
|
81
73
|
}
|
|
82
74
|
else {
|
|
83
|
-
const route = isNaturalDialogTriggerProvidedData(this
|
|
84
|
-
? this
|
|
75
|
+
const route = isNaturalDialogTriggerProvidedData(this._dialogData)
|
|
76
|
+
? this._dialogData.activatedRoute
|
|
85
77
|
: this.route;
|
|
86
78
|
this.#subscribeToModelFromResolvedData(route);
|
|
87
79
|
}
|
|
@@ -117,7 +109,7 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
117
109
|
* This should be used instead of checking `data.model.id` directly, in order to type guard and get proper typing
|
|
118
110
|
*/
|
|
119
111
|
isUpdatePage() {
|
|
120
|
-
return this
|
|
112
|
+
return this._isUpdatePage;
|
|
121
113
|
}
|
|
122
114
|
/**
|
|
123
115
|
* Update the object on the server with the values from the form fields that were modified since
|
|
@@ -133,15 +125,15 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
133
125
|
ifValid(this.form).subscribe(() => {
|
|
134
126
|
const newValues = this.form.getRawValue();
|
|
135
127
|
if (submitAllFields) {
|
|
136
|
-
this
|
|
128
|
+
this.changes.initialize({});
|
|
137
129
|
}
|
|
138
130
|
const toSubmit = {
|
|
139
131
|
id: this.data.model.id,
|
|
140
|
-
...this
|
|
132
|
+
...this.changes.differences(newValues),
|
|
141
133
|
};
|
|
142
134
|
const update = now ? this.service.updateNow(toSubmit) : this.service.update(toSubmit);
|
|
143
135
|
update.subscribe(model => {
|
|
144
|
-
this
|
|
136
|
+
this.changes.commit(newValues);
|
|
145
137
|
this.alertService.info($localize `Mis à jour`);
|
|
146
138
|
this.postUpdate(model);
|
|
147
139
|
});
|
|
@@ -227,9 +219,9 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
227
219
|
* will incorrectly be called exactly 1 time per component instance, even if the object changes via route navigation.
|
|
228
220
|
*/
|
|
229
221
|
initForm() {
|
|
230
|
-
this
|
|
222
|
+
this._isUpdatePage = !!this.data.model.id;
|
|
231
223
|
this.form = this.service.getFormGroup(this.data.model);
|
|
232
|
-
this
|
|
224
|
+
this.changes.initialize(this.form.getRawValue());
|
|
233
225
|
}
|
|
234
226
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NaturalAbstractDetail, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
235
227
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: NaturalAbstractDetail, usesInheritance: true, ngImport: i0 }); }
|
|
@@ -237,4 +229,4 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
237
229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NaturalAbstractDetail, decorators: [{
|
|
238
230
|
type: Directive
|
|
239
231
|
}], ctorParameters: () => [{ type: undefined }, { type: undefined }] });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQVN6RCxTQUFTLGtDQUFrQyxDQUN2QyxVQUFtQjtJQUVuQixPQUFPLENBQ0gsQ0FBQyxDQUFDLFVBQVU7UUFDWixPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQzlCLGdCQUFnQixJQUFJLFVBQVU7UUFDOUIsVUFBVSxDQUFDLGNBQWMsWUFBWSxjQUFjLENBQ3RELENBQUM7QUFDTixDQUFDO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFlVCxTQUFRLG9CQUFvQjtJQTJDNUIsV0FBVyxD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SUFDdEQsQ0FBQzs4R0FyUlEscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2tlYmFiQ2FzZX0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7TmF0dXJhbEFsZXJ0U2VydmljZX0gZnJvbSAnLi4vbW9kdWxlcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0UGFuZWx9IGZyb20gJy4uL21vZHVsZXMvcGFuZWxzL2Fic3RyYWN0LXBhbmVsJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7RXh0cmFjdFJlc29sdmUsIEV4dHJhY3RUY3JlYXRlLCBFeHRyYWN0VG9uZSwgRXh0cmFjdFR1cGRhdGUsIExpdGVyYWx9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7RU1QVFksIGVuZFdpdGgsIGZpbmFsaXplLCBsYXN0LCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2lmVmFsaWQsIHZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcbmltcG9ydCB7UXVlcnlWYXJpYWJsZXN9IGZyb20gJy4vcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0N1bXVsYXRpdmVDaGFuZ2VzfSBmcm9tICcuL2N1bXVsYXRpdmUtY2hhbmdlcyc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGF9IGZyb20gJy4uL21vZHVsZXMvZGlhbG9nLXRyaWdnZXIvZGlhbG9nLXRyaWdnZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBgRGF0YWAgY29udGFpbnMgaW4gYG1vZGVsYCBlaXRoZXIgdGhlIG1vZGVsIGZldGNoZWQgZnJvbSBEQiBvciBkZWZhdWx0IHZhbHVlcyAod2l0aG91dCBJRCkuIEFuZCBiZXNpZGVzIGBtb2RlbGAsXG4gKiBhbnkgb3RoZXIgZXh0cmEga2V5cyBkZWZpbmVkIGJ5IEV4dHJhLlxuICovXG50eXBlIERhdGE8VFNlcnZpY2UsIEV4dHJhPiA9IHttb2RlbDoge2lkPzogc3RyaW5nfSAmIEV4dHJhY3RSZXNvbHZlPFRTZXJ2aWNlPn0gJiBFeHRyYTtcblxuZnVuY3Rpb24gaXNOYXR1cmFsRGlhbG9nVHJpZ2dlclByb3ZpZGVkRGF0YShcbiAgICBkaWFsb2dEYXRhOiB1bmtub3duLFxuKTogZGlhbG9nRGF0YSBpcyBOYXR1cmFsRGlhbG9nVHJpZ2dlclByb3ZpZGVkRGF0YTxuZXZlcj4ge1xuICAgIHJldHVybiAoXG4gICAgICAgICEhZGlhbG9nRGF0YSAmJlxuICAgICAgICB0eXBlb2YgZGlhbG9nRGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgJ2FjdGl2YXRlZFJvdXRlJyBpbiBkaWFsb2dEYXRhICYmXG4gICAgICAgIGRpYWxvZ0RhdGEuYWN0aXZhdGVkUm91dGUgaW5zdGFuY2VvZiBBY3RpdmF0ZWRSb3V0ZVxuICAgICk7XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQWJzdHJhY3REZXRhaWw8XG4gICAgICAgIFRTZXJ2aWNlIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgICAgICAgICAge2lkOiBzdHJpbmd9LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaXRlcmFsPixcbiAgICAgICAgICAgIFF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgICAgICBFeHRyYVJlc29sdmUgZXh0ZW5kcyBMaXRlcmFsID0gUmVjb3JkPG5ldmVyLCBuZXZlcj4sXG4gICAgPlxuICAgIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0UGFuZWxcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIC8qKlxuICAgICAqIERhdGEgcmV0cmlldmVkIGJ5IHRoZSBzZXJ2ZXIgdmlhIHJvdXRlIHJlc29sdmVycy5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgYG1vZGVsYCBpcyBzcGVjaWFsLiBJdCBpcyByZWFkb25seSBhbmQgcmVwcmVzZW50cyB0aGUgbW9kZWwgYmVpbmcgdXBkYXRlZFxuICAgICAqIGFzIGl0IGV4aXN0cyBvbiBzZXJ2ZXIuIFRoZSB2YWx1ZSBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiBBcG9sbG8gbXV0YXRlcyBpdCBvbiBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBUaGUgb25seSB0aW1lIHdoZW4gYG1vZGVsYCBpcyBub3QgcmVhZG9ubHkgaXMgZHVyaW5nIGNyZWF0aW9uLiBPbmx5IHRoZW4gY2FuIHdlIG1vZGlmeSB0aGUgbW9kZWwgdmFsdWVzIGRpcmVjdGx5LlxuICAgICAqXG4gICAgICogT3RoZXIga2V5cywgaWYgcHJlc2VudCwgYXJlIHdoYXRldmVyIGlzIHJldHVybmVkIGZyb20gcm91dGUgcmVzb2x2ZXJzIGFzLWlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBkYXRhOiBEYXRhPFRTZXJ2aWNlLCBFeHRyYVJlc29sdmU+ID0ge1xuICAgICAgICBtb2RlbDogdGhpcy5zZXJ2aWNlLmdldERlZmF1bHRGb3JTZXJ2ZXIoKSxcbiAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHRoYXQgbWFuYWdlcyB0aGUgZGF0YSBmcm9tIHRoZSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IC8gaGlkZXMgdGhlIGJvdHRvbSBmYWIgYnV0dG9uIChtb3N0bHkgdG8gaGlkZSBpdCB3aGVuIHdlIGFyZSBvbiBvdGhlciB0YWJzIHdoZXJlIHNlbWFudGljIG9mIGJ1dHRvbiBjYW4gY29uZmxpY3Qgd2l0aCAuLi5cbiAgICAgKiBzZW1hbnRpYyBvZiBkYXRhIG9uIG90aGVyIHRhYiwgbGlrZSByZWxhdGlvbnMgdGhhdCBsaXN0IG90aGVyIG9iamVjdHMpXG4gICAgICovXG4gICAgcHVibGljIHNob3dGYWJCdXR0b24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydFNlcnZpY2UgPSBpbmplY3QoTmF0dXJhbEFsZXJ0U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBJbmplY3RlZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICAjZGlhbG9nRGF0YTogdW5rbm93biA9IGluamVjdChNQVRfRElBTE9HX0RBVEEsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgLyoqXG4gICAgICogT25jZSBzZXQsIHRoaXMgbXVzdCBub3QgY2hhbmdlIGFueW1vcmUsIGVzcGVjaWFsbHkgbm90IHJpZ2h0IGFmdGVyIHRoZSBjcmVhdGlvbiBtdXRhdGlvbixcbiAgICAgKiBzbyB0aGUgZm9ybSBkb2VzIG5vdCBzd2l0Y2ggZnJvbSBjcmVhdGlvbiBtb2RlIHRvIHVwZGF0ZSBtb2RlIHdpdGhvdXQgYW4gYWN0dWFsIHJlbG9hZCBvZlxuICAgICAqIG1vZGVsIGZyb20gREIgKGJ5IG5hdmlnYXRpbmcgdG8gdXBkYXRlIHBhZ2UpLlxuICAgICAqL1xuICAgICNpc1VwZGF0ZVBhZ2UgPSBmYWxzZTtcbiAgICByZWFkb25seSAjY2hhbmdlcyA9IG5ldyBDdW11bGF0aXZlQ2hhbmdlczx0eXBlb2YgdGhpcy5mb3JtLmdldFJhd1ZhbHVlPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBUU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBZb3UgcHJvYmFibHkgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGlzIG1ldGhvZC4gSW5zdGVhZCwgY29uc2lkZXIgb3ZlcnJpZGluZyBgaW5pdEZvcm0oKWAuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEodGhpcy4jZGlhbG9nRGF0YSlcbiAgICAgICAgICAgICAgICA/IHRoaXMuI2RpYWxvZ0RhdGEuYWN0aXZhdGVkUm91dGVcbiAgICAgICAgICAgICAgICA6IHRoaXMucm91dGU7XG4gICAgICAgICAgICB0aGlzLiNzdWJzY3JpYmVUb01vZGVsRnJvbVJlc29sdmVkRGF0YShyb3V0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmFiQnV0dG9uID0gaW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgI3N1YnNjcmliZVRvTW9kZWxGcm9tUmVzb2x2ZWREYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgICAgICBsZXQgcHJldmlvdXNJZCA9IC0xO1xuICAgICAgICByb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEubW9kZWwgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvbHZlZCBkYXRhIG11c3QgaW5jbHVkZSB0aGUga2V5IGBtb2RlbGAsIGFuZCBpdCBtdXN0IGJlIGFuIG9ic2VydmFibGUgKHVzdWFsbHkgb25lIGZyb20gQXBvbGxvKS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBtb2RlbCB0byBrbm93IHdoZW4gQXBvbGxvIGNhY2hlIGlzIGNoYW5nZWQsIHNvIHdlIGNhbiByZWZsZWN0IGl0IGludG8gYGRhdGEubW9kZWxgXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1vZGVsLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKG1vZGVsOiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNJZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJZCA9IG1vZGVsLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGBkYXRhLm1vZGVsYCB3YXMgZmV0Y2hlZCBmcm9tIERCLCBzbyB3ZSBhcmUgb24gYW4gdXBkYXRlIHBhZ2UsIG9yIGlmIGl0IGlzIGEgbmV3IG9iamVjdFxuICAgICAqIHdpdGggKG9ubHkpIGRlZmF1bHQgdmFsdWVzLCBzbyB3ZSBhcmUgb24gYSBjcmVhdGlvbiBwYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGNoZWNraW5nIGBkYXRhLm1vZGVsLmlkYCBkaXJlY3RseSwgaW4gb3JkZXIgdG8gdHlwZSBndWFyZCBhbmQgZ2V0IHByb3BlciB0eXBpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNVcGRhdGVQYWdlKCk6IHRoaXMgaXMge2RhdGE6IHttb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+fX0ge1xuICAgICAgICByZXR1cm4gdGhpcy4jaXNVcGRhdGVQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgdmFsdWVzIGZyb20gdGhlIGZvcm0gZmllbGRzIHRoYXQgd2VyZSBtb2RpZmllZCBzaW5jZVxuICAgICAqIHRoZSBpbml0aWFsaXphdGlvbiwgb3Igc2luY2UgdGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgdXBkYXRlLlxuICAgICAqXG4gICAgICogRm9ybSBmaWVsZHMgdGhhdCBhcmUgbmV2ZXIgbW9kaWZpZWQgYXJlICoqbm90Kiogc2VudCB0byB0aGUgc2VydmVyLCB1bmxlc3MgaWYgeW91IHNwZWNpZnkgYHN1Ym1pdEFsbEZpZWxkc2AuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShub3cgPSBmYWxzZSwgc3VibWl0QWxsRmllbGRzID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlUGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZUFsbEZvcm1Db250cm9scyh0aGlzLmZvcm0pO1xuXG4gICAgICAgIGlmVmFsaWQodGhpcy5mb3JtKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoc3VibWl0QWxsRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jY2hhbmdlcy5pbml0aWFsaXplKHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG9TdWJtaXQgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5tb2RlbC5pZCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLiNjaGFuZ2VzLmRpZmZlcmVuY2VzKG5ld1ZhbHVlcyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB1cGRhdGUgPSBub3cgPyB0aGlzLnNlcnZpY2UudXBkYXRlTm93KHRvU3VibWl0KSA6IHRoaXMuc2VydmljZS51cGRhdGUodG9TdWJtaXQpO1xuICAgICAgICAgICAgdXBkYXRlLnN1YnNjcmliZShtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy4jY2hhbmdlcy5jb21taXQobmV3VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKCRsb2NhbGl6ZWBNaXMgw6Agam91cmApO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdFVwZGF0ZShtb2RlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShyZWRpcmVjdCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlKG5ld1ZhbHVlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYENyw6nDqWApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RDcmVhdGUobW9kZWwpLnBpcGUoZW5kV2l0aChtb2RlbCksIGxhc3QoKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRVcmwgPSB0aGlzLnBhbmVsRGF0YT8uY29uZmlnLnBhcmFtcy5uZXh0Um91dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VXJsID0gb2xkVXJsLnJlcGxhY2UoJy9uZXcnLCAnLycgKyBtb2RlbC5pZCkgKyAobmV4dFVybCA/ICcvJyArIG5leHRVcmwgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3VXJsKTsgLy8gcmVwbGFjZSAvbmV3IGJ5IC8xMjNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCBtb2RlbC5pZF0sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBgY29uZmlybWVyYCBjYW4gYmUgdXNlZCB0byBvcGVuIGEgY3VzdG9tIGRpYWxvZywgb3IgYW55dGhpbmcgZWxzZSwgdG8gY29uZmlybSB0aGUgZGVsZXRpb24sIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGRpYWxvZ1xuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUocmVkaXJlY3Rpb25Sb3V0ZT86IHVua25vd25bXSwgY29uZmlybWVyPzogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgICAgIChcbiAgICAgICAgICAgIGNvbmZpcm1lciA/P1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgU3VwcHJlc3Npb25gLFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGNldCDDqWzDqW1lbnQgP2AsXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maXJtZWQgfHwgIXRoaXMuaXNVcGRhdGVQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKHRoaXMuZGF0YS5tb2RlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoW3RoaXMuZGF0YS5tb2RlbF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYFN1cHByaW3DqWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsU2VydmljZT8uZ29Ub1BlbnVsdGltYXRlUGFuZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFJvdXRlID0gWycuLi8uLi8nICsga2ViYWJDYXNlKHRoaXMua2V5KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyZWRpcmVjdGlvblJvdXRlID8gcmVkaXJlY3Rpb25Sb3V0ZSA6IGRlZmF1bHRSb3V0ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHBvc3RVcGRhdGUobW9kZWw6IEV4dHJhY3RUdXBkYXRlPFRTZXJ2aWNlPik6IHZvaWQge1xuICAgICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBiZSBzdWJzY3JpYmVkIHRvIGltbWVkaWF0ZWx5IGFuZCB0aGVcbiAgICAgKiByZWRpcmVjdCBuYXZpZ2F0aW9uIHdpbGwgb25seSBoYXBwZW4gYWZ0ZXIgdGhlIG9ic2VydmFibGUgY29tcGxldGVzLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcG9zdENyZWF0ZShtb2RlbDogRXh0cmFjdFRjcmVhdGU8VFNlcnZpY2U+KTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHByZURlbGV0ZShtb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+KTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHRoZSBmb3JtIHdoZW5ldmVyIGl0IGlzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIFlvdSBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QsIGFuZCBub3QgYG5nT25Jbml0KClgIGlmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgZm9ybS4gQmVjYXVzZSB0aGlzIHdpbGxcbiAgICAgKiBjb3JyZWN0bHkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmUgdGltZSBwZXIgY29tcG9uZW50IGluc3RhbmNlIGlmIG5lZWRlZCwgd2hlbiB0aGUgcm91dGUgY2hhbmdlcy4gQnV0IGBuZ09uSW5pdCgpYFxuICAgICAqIHdpbGwgaW5jb3JyZWN0bHkgYmUgY2FsbGVkIGV4YWN0bHkgMSB0aW1lIHBlciBjb21wb25lbnQgaW5zdGFuY2UsIGV2ZW4gaWYgdGhlIG9iamVjdCBjaGFuZ2VzIHZpYSByb3V0ZSBuYXZpZ2F0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jaXNVcGRhdGVQYWdlID0gISF0aGlzLmRhdGEubW9kZWwuaWQ7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXAodGhpcy5kYXRhLm1vZGVsKTtcbiAgICAgICAgdGhpcy4jY2hhbmdlcy5pbml0aWFsaXplKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB9XG59XG4iXX0=
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQVN6RCxTQUFTLGtDQUFrQyxDQUN2QyxVQUFtQjtJQUVuQixPQUFPLENBQ0gsQ0FBQyxDQUFDLFVBQVU7UUFDWixPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQzlCLGdCQUFnQixJQUFJLFVBQVU7UUFDOUIsVUFBVSxDQUFDLGNBQWMsWUFBWSxjQUFjLENBQ3RELENBQUM7QUFDTixDQUFDO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFlVCxTQUFRLG9CQUFvQjtJQXFENUIsWUFDdUIs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QUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtrZWJhYkNhc2V9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge05hdHVyYWxBbGVydFNlcnZpY2V9IGZyb20gJy4uL21vZHVsZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdFBhbmVsfSBmcm9tICcuLi9tb2R1bGVzL3BhbmVscy9hYnN0cmFjdC1wYW5lbCc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtbW9kZWwuc2VydmljZSc7XG5pbXBvcnQge0V4dHJhY3RSZXNvbHZlLCBFeHRyYWN0VGNyZWF0ZSwgRXh0cmFjdFRvbmUsIEV4dHJhY3RUdXBkYXRlLCBMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge0VNUFRZLCBlbmRXaXRoLCBmaW5hbGl6ZSwgbGFzdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtpZlZhbGlkLCB2YWxpZGF0ZUFsbEZvcm1Db250cm9sc30gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7UGFnaW5hdGVkRGF0YX0gZnJvbSAnLi9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge1F1ZXJ5VmFyaWFibGVzfSBmcm9tICcuL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtDdW11bGF0aXZlQ2hhbmdlc30gZnJvbSAnLi9jdW11bGF0aXZlLWNoYW5nZXMnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEF9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge05hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhfSBmcm9tICcuLi9tb2R1bGVzL2RpYWxvZy10cmlnZ2VyL2RpYWxvZy10cmlnZ2VyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogYERhdGFgIGNvbnRhaW5zIGluIGBtb2RlbGAgZWl0aGVyIHRoZSBtb2RlbCBmZXRjaGVkIGZyb20gREIgb3IgZGVmYXVsdCB2YWx1ZXMgKHdpdGhvdXQgSUQpLiBBbmQgYmVzaWRlcyBgbW9kZWxgLFxuICogYW55IG90aGVyIGV4dHJhIGtleXMgZGVmaW5lZCBieSBFeHRyYS5cbiAqL1xudHlwZSBEYXRhPFRTZXJ2aWNlLCBFeHRyYT4gPSB7bW9kZWw6IHtpZD86IHN0cmluZ30gJiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT59ICYgRXh0cmE7XG5cbmZ1bmN0aW9uIGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEoXG4gICAgZGlhbG9nRGF0YTogdW5rbm93bixcbik6IGRpYWxvZ0RhdGEgaXMgTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGE8bmV2ZXI+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICAhIWRpYWxvZ0RhdGEgJiZcbiAgICAgICAgdHlwZW9mIGRpYWxvZ0RhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAgICdhY3RpdmF0ZWRSb3V0ZScgaW4gZGlhbG9nRGF0YSAmJlxuICAgICAgICBkaWFsb2dEYXRhLmFjdGl2YXRlZFJvdXRlIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGVcbiAgICApO1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTmF0dXJhbEFic3RyYWN0RGV0YWlsPFxuICAgICAgICBUU2VydmljZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICAgICAgICAgIHtpZDogc3RyaW5nfSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIFBhZ2luYXRlZERhdGE8TGl0ZXJhbD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnlcbiAgICAgICAgPixcbiAgICAgICAgRXh0cmFSZXNvbHZlIGV4dGVuZHMgTGl0ZXJhbCA9IFJlY29yZDxuZXZlciwgbmV2ZXI+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdFBhbmVsXG4gICAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgICAvKipcbiAgICAgKiBEYXRhIHJldHJpZXZlZCBieSB0aGUgc2VydmVyIHZpYSByb3V0ZSByZXNvbHZlcnMuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IGBtb2RlbGAgaXMgc3BlY2lhbC4gSXQgaXMgcmVhZG9ubHkgYW5kIHJlcHJlc2VudHMgdGhlIG1vZGVsIGJlaW5nIHVwZGF0ZWRcbiAgICAgKiBhcyBpdCBleGlzdHMgb24gc2VydmVyLiBUaGUgdmFsdWUgaXMga2VwdCB1cCB0byBkYXRlIHdoZW4gQXBvbGxvIG11dGF0ZXMgaXQgb24gc2VydmVyLlxuICAgICAqXG4gICAgICogVGhlIG9ubHkgdGltZSB3aGVuIGBtb2RlbGAgaXMgbm90IHJlYWRvbmx5IGlzIGR1cmluZyBjcmVhdGlvbi4gT25seSB0aGVuIGNhbiB3ZSBtb2RpZnkgdGhlIG1vZGVsIHZhbHVlcyBkaXJlY3RseS5cbiAgICAgKlxuICAgICAqIE90aGVyIGtleXMsIGlmIHByZXNlbnQsIGFyZSB3aGF0ZXZlciBpcyByZXR1cm5lZCBmcm9tIHJvdXRlIHJlc29sdmVycyBhcy1pcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGF0YTogRGF0YTxUU2VydmljZSwgRXh0cmFSZXNvbHZlPiA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5nZXREZWZhdWx0Rm9yU2VydmVyKCksXG4gICAgfSBhcyBEYXRhPFRTZXJ2aWNlLCBFeHRyYVJlc29sdmU+O1xuXG4gICAgLyoqXG4gICAgICogRm9ybSB0aGF0IG1hbmFnZXMgdGhlIGRhdGEgZnJvbSB0aGUgY29udHJvbGxlclxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyAvIGhpZGVzIHRoZSBib3R0b20gZmFiIGJ1dHRvbiAobW9zdGx5IHRvIGhpZGUgaXQgd2hlbiB3ZSBhcmUgb24gb3RoZXIgdGFicyB3aGVyZSBzZW1hbnRpYyBvZiBidXR0b24gY2FuIGNvbmZsaWN0IHdpdGggLi4uXG4gICAgICogc2VtYW50aWMgb2YgZGF0YSBvbiBvdGhlciB0YWIsIGxpa2UgcmVsYXRpb25zIHRoYXQgbGlzdCBvdGhlciBvYmplY3RzKVxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93RmFiQnV0dG9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEluamVjdGVkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlID0gaW5qZWN0KE5hdHVyYWxBbGVydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIC8qKlxuICAgICAqIEluamVjdGVkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gICAgcHJpdmF0ZSBfZGlhbG9nRGF0YTogdW5rbm93biA9IGluamVjdChNQVRfRElBTE9HX0RBVEEsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgLyoqXG4gICAgICogT25jZSBzZXQsIHRoaXMgbXVzdCBub3QgY2hhbmdlIGFueW1vcmUsIGVzcGVjaWFsbHkgbm90IHJpZ2h0IGFmdGVyIHRoZSBjcmVhdGlvbiBtdXRhdGlvbixcbiAgICAgKiBzbyB0aGUgZm9ybSBkb2VzIG5vdCBzd2l0Y2ggZnJvbSBjcmVhdGlvbiBtb2RlIHRvIHVwZGF0ZSBtb2RlIHdpdGhvdXQgYW4gYWN0dWFsIHJlbG9hZCBvZlxuICAgICAqIG1vZGVsIGZyb20gREIgKGJ5IG5hdmlnYXRpbmcgdG8gdXBkYXRlIHBhZ2UpLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzVXBkYXRlUGFnZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlcyA9IG5ldyBDdW11bGF0aXZlQ2hhbmdlczx0eXBlb2YgdGhpcy5mb3JtLmdldFJhd1ZhbHVlPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBUU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBZb3UgcHJvYmFibHkgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGlzIG1ldGhvZC4gSW5zdGVhZCwgY29uc2lkZXIgb3ZlcnJpZGluZyBgaW5pdEZvcm0oKWAuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEodGhpcy5fZGlhbG9nRGF0YSlcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RpYWxvZ0RhdGEuYWN0aXZhdGVkUm91dGVcbiAgICAgICAgICAgICAgICA6IHRoaXMucm91dGU7XG4gICAgICAgICAgICB0aGlzLiNzdWJzY3JpYmVUb01vZGVsRnJvbVJlc29sdmVkRGF0YShyb3V0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmFiQnV0dG9uID0gaW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgI3N1YnNjcmliZVRvTW9kZWxGcm9tUmVzb2x2ZWREYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgICAgICBsZXQgcHJldmlvdXNJZCA9IC0xO1xuICAgICAgICByb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEubW9kZWwgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvbHZlZCBkYXRhIG11c3QgaW5jbHVkZSB0aGUga2V5IGBtb2RlbGAsIGFuZCBpdCBtdXN0IGJlIGFuIG9ic2VydmFibGUgKHVzdWFsbHkgb25lIGZyb20gQXBvbGxvKS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBtb2RlbCB0byBrbm93IHdoZW4gQXBvbGxvIGNhY2hlIGlzIGNoYW5nZWQsIHNvIHdlIGNhbiByZWZsZWN0IGl0IGludG8gYGRhdGEubW9kZWxgXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1vZGVsLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKG1vZGVsOiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNJZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJZCA9IG1vZGVsLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGBkYXRhLm1vZGVsYCB3YXMgZmV0Y2hlZCBmcm9tIERCLCBzbyB3ZSBhcmUgb24gYW4gdXBkYXRlIHBhZ2UsIG9yIGlmIGl0IGlzIGEgbmV3IG9iamVjdFxuICAgICAqIHdpdGggKG9ubHkpIGRlZmF1bHQgdmFsdWVzLCBzbyB3ZSBhcmUgb24gYSBjcmVhdGlvbiBwYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGNoZWNraW5nIGBkYXRhLm1vZGVsLmlkYCBkaXJlY3RseSwgaW4gb3JkZXIgdG8gdHlwZSBndWFyZCBhbmQgZ2V0IHByb3BlciB0eXBpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNVcGRhdGVQYWdlKCk6IHRoaXMgaXMge2RhdGE6IHttb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+fX0ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVcGRhdGVQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgdmFsdWVzIGZyb20gdGhlIGZvcm0gZmllbGRzIHRoYXQgd2VyZSBtb2RpZmllZCBzaW5jZVxuICAgICAqIHRoZSBpbml0aWFsaXphdGlvbiwgb3Igc2luY2UgdGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgdXBkYXRlLlxuICAgICAqXG4gICAgICogRm9ybSBmaWVsZHMgdGhhdCBhcmUgbmV2ZXIgbW9kaWZpZWQgYXJlICoqbm90Kiogc2VudCB0byB0aGUgc2VydmVyLCB1bmxlc3MgaWYgeW91IHNwZWNpZnkgYHN1Ym1pdEFsbEZpZWxkc2AuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShub3cgPSBmYWxzZSwgc3VibWl0QWxsRmllbGRzID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlUGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZUFsbEZvcm1Db250cm9scyh0aGlzLmZvcm0pO1xuXG4gICAgICAgIGlmVmFsaWQodGhpcy5mb3JtKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoc3VibWl0QWxsRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VzLmluaXRpYWxpemUoe30pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b1N1Ym1pdCA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5kYXRhLm1vZGVsLmlkLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuY2hhbmdlcy5kaWZmZXJlbmNlcyhuZXdWYWx1ZXMpLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gbm93ID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZU5vdyh0b1N1Ym1pdCkgOiB0aGlzLnNlcnZpY2UudXBkYXRlKHRvU3VibWl0KTtcbiAgICAgICAgICAgIHVwZGF0ZS5zdWJzY3JpYmUobW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5jb21taXQobmV3VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKCRsb2NhbGl6ZWBNaXMgw6Agam91cmApO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdFVwZGF0ZShtb2RlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShyZWRpcmVjdCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlKG5ld1ZhbHVlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYENyw6nDqWApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RDcmVhdGUobW9kZWwpLnBpcGUoZW5kV2l0aChtb2RlbCksIGxhc3QoKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRVcmwgPSB0aGlzLnBhbmVsRGF0YT8uY29uZmlnLnBhcmFtcy5uZXh0Um91dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VXJsID0gb2xkVXJsLnJlcGxhY2UoJy9uZXcnLCAnLycgKyBtb2RlbC5pZCkgKyAobmV4dFVybCA/ICcvJyArIG5leHRVcmwgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3VXJsKTsgLy8gcmVwbGFjZSAvbmV3IGJ5IC8xMjNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCBtb2RlbC5pZF0sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBgY29uZmlybWVyYCBjYW4gYmUgdXNlZCB0byBvcGVuIGEgY3VzdG9tIGRpYWxvZywgb3IgYW55dGhpbmcgZWxzZSwgdG8gY29uZmlybSB0aGUgZGVsZXRpb24sIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGRpYWxvZ1xuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUocmVkaXJlY3Rpb25Sb3V0ZT86IHVua25vd25bXSwgY29uZmlybWVyPzogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgICAgIChcbiAgICAgICAgICAgIGNvbmZpcm1lciA/P1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgU3VwcHJlc3Npb25gLFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGNldCDDqWzDqW1lbnQgP2AsXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maXJtZWQgfHwgIXRoaXMuaXNVcGRhdGVQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKHRoaXMuZGF0YS5tb2RlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoW3RoaXMuZGF0YS5tb2RlbF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYFN1cHByaW3DqWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsU2VydmljZT8uZ29Ub1BlbnVsdGltYXRlUGFuZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFJvdXRlID0gWycuLi8uLi8nICsga2ViYWJDYXNlKHRoaXMua2V5KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyZWRpcmVjdGlvblJvdXRlID8gcmVkaXJlY3Rpb25Sb3V0ZSA6IGRlZmF1bHRSb3V0ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHBvc3RVcGRhdGUobW9kZWw6IEV4dHJhY3RUdXBkYXRlPFRTZXJ2aWNlPik6IHZvaWQge1xuICAgICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBiZSBzdWJzY3JpYmVkIHRvIGltbWVkaWF0ZWx5IGFuZCB0aGVcbiAgICAgKiByZWRpcmVjdCBuYXZpZ2F0aW9uIHdpbGwgb25seSBoYXBwZW4gYWZ0ZXIgdGhlIG9ic2VydmFibGUgY29tcGxldGVzLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcG9zdENyZWF0ZShtb2RlbDogRXh0cmFjdFRjcmVhdGU8VFNlcnZpY2U+KTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHByZURlbGV0ZShtb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+KTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHRoZSBmb3JtIHdoZW5ldmVyIGl0IGlzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIFlvdSBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QsIGFuZCBub3QgYG5nT25Jbml0KClgIGlmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgZm9ybS4gQmVjYXVzZSB0aGlzIHdpbGxcbiAgICAgKiBjb3JyZWN0bHkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmUgdGltZSBwZXIgY29tcG9uZW50IGluc3RhbmNlIGlmIG5lZWRlZCwgd2hlbiB0aGUgcm91dGUgY2hhbmdlcy4gQnV0IGBuZ09uSW5pdCgpYFxuICAgICAqIHdpbGwgaW5jb3JyZWN0bHkgYmUgY2FsbGVkIGV4YWN0bHkgMSB0aW1lIHBlciBjb21wb25lbnQgaW5zdGFuY2UsIGV2ZW4gaWYgdGhlIG9iamVjdCBjaGFuZ2VzIHZpYSByb3V0ZSBuYXZpZ2F0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNVcGRhdGVQYWdlID0gISF0aGlzLmRhdGEubW9kZWwuaWQ7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXAodGhpcy5kYXRhLm1vZGVsKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VzLmluaXRpYWxpemUodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -3,14 +3,16 @@ import { cloneDeep, isEqual } from 'lodash-es';
|
|
|
3
3
|
* Cumulate all changes made to an object over time
|
|
4
4
|
*/
|
|
5
5
|
export class CumulativeChanges {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
this.original = {};
|
|
8
|
+
this.diff = {};
|
|
9
|
+
}
|
|
8
10
|
/**
|
|
9
11
|
* Initialize the original values, should be called exactly one time per instance
|
|
10
12
|
*/
|
|
11
13
|
initialize(originalValues) {
|
|
12
|
-
this
|
|
13
|
-
this
|
|
14
|
+
this.original = cloneDeep(originalValues);
|
|
15
|
+
this.diff = {};
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* Returns a literal that contains only the keys whose values have been changed by this call or any previous calls.
|
|
@@ -24,27 +26,27 @@ export class CumulativeChanges {
|
|
|
24
26
|
*/
|
|
25
27
|
differences(newValues) {
|
|
26
28
|
Object.keys(newValues).forEach(key => {
|
|
27
|
-
if (key in this
|
|
29
|
+
if (key in this.diff ||
|
|
28
30
|
(newValues[key] !== undefined &&
|
|
29
|
-
(!(key in this
|
|
30
|
-
this
|
|
31
|
+
(!(key in this.original) || !isEqual(this.original[key], newValues[key])))) {
|
|
32
|
+
this.diff[key] = newValues[key];
|
|
31
33
|
}
|
|
32
34
|
});
|
|
33
|
-
return Object.keys(this
|
|
35
|
+
return Object.keys(this.diff).length ? this.diff : null;
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Commit the given new values, so they are not treated as differences anymore.
|
|
37
39
|
*/
|
|
38
40
|
commit(newValues) {
|
|
39
|
-
this
|
|
40
|
-
...this
|
|
41
|
+
this.original = {
|
|
42
|
+
...this.original,
|
|
41
43
|
...cloneDeep(newValues),
|
|
42
44
|
};
|
|
43
45
|
Object.keys(newValues).forEach(key => {
|
|
44
|
-
if (key in this
|
|
45
|
-
delete this
|
|
46
|
+
if (key in this.diff && isEqual(this.diff[key], newValues[key])) {
|
|
47
|
+
delete this.diff[key];
|
|
46
48
|
}
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VtdWxhdGl2ZS1jaGFuZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvY3VtdWxhdGl2ZS1jaGFuZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBSTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQUNZLGFBQVEsR0FBTSxFQUFPLENBQUM7UUFDdEIsU0FBSSxHQUFlLEVBQUUsQ0FBQztJQWlEbEMsQ0FBQztJQS9DRzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxjQUEyQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksV0FBVyxDQUFDLFNBQTBCO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQ0ksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUNoQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO29CQUN6QixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoRixDQUFDO2dCQUNFLElBQUksQ0FBQyxJQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFNBQTBCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ2hCLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUMxQixDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbG9uZURlZXAsIGlzRXF1YWx9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge0xpdGVyYWx9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7UmVhZG9ubHlEZWVwfSBmcm9tICd0eXBlLWZlc3QnO1xuXG4vKipcbiAqIEN1bXVsYXRlIGFsbCBjaGFuZ2VzIG1hZGUgdG8gYW4gb2JqZWN0IG92ZXIgdGltZVxuICovXG5leHBvcnQgY2xhc3MgQ3VtdWxhdGl2ZUNoYW5nZXM8VCBleHRlbmRzIExpdGVyYWw+IHtcbiAgICBwcml2YXRlIG9yaWdpbmFsOiBUID0ge30gYXMgVDtcbiAgICBwcml2YXRlIGRpZmY6IFBhcnRpYWw8VD4gPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgdGhlIG9yaWdpbmFsIHZhbHVlcywgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uZSB0aW1lIHBlciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplKG9yaWdpbmFsVmFsdWVzOiBSZWFkb25seTxUPik6IHZvaWQge1xuICAgICAgICB0aGlzLm9yaWdpbmFsID0gY2xvbmVEZWVwKG9yaWdpbmFsVmFsdWVzKTtcbiAgICAgICAgdGhpcy5kaWZmID0ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGxpdGVyYWwgdGhhdCBjb250YWlucyBvbmx5IHRoZSBrZXlzIHdob3NlIHZhbHVlcyBoYXZlIGJlZW4gY2hhbmdlZCBieSB0aGlzIGNhbGwgb3IgYW55IHByZXZpb3VzIGNhbGxzLlxuICAgICAqXG4gICAgICogRWc6XG4gICAgICpcbiAgICAgKiBgYGB0c1xuICAgICAqIGNoYW5nZXMuaW5pdGlhbGl6ZSh7YTogMSwgYjogMn0pO1xuICAgICAqIGNoYW5nZXMuZGlmZmVyZW5jZXMoe2E6IDEsIGI6IDN9KTsgLy8gPT4ge2I6IDN9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGRpZmZlcmVuY2VzKG5ld1ZhbHVlczogUmVhZG9ubHlEZWVwPFQ+KTogUGFydGlhbDxUPiB8IG51bGwge1xuICAgICAgICBPYmplY3Qua2V5cyhuZXdWYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBrZXkgaW4gdGhpcy5kaWZmIHx8XG4gICAgICAgICAgICAgICAgKG5ld1ZhbHVlc1trZXldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKCEoa2V5IGluIHRoaXMub3JpZ2luYWwpIHx8ICFpc0VxdWFsKHRoaXMub3JpZ2luYWxba2V5XSwgbmV3VmFsdWVzW2tleV0pKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICh0aGlzLmRpZmYgYXMgYW55KVtrZXldID0gbmV3VmFsdWVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRpZmYpLmxlbmd0aCA/IHRoaXMuZGlmZiA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWl0IHRoZSBnaXZlbiBuZXcgdmFsdWVzLCBzbyB0aGV5IGFyZSBub3QgdHJlYXRlZCBhcyBkaWZmZXJlbmNlcyBhbnltb3JlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb21taXQobmV3VmFsdWVzOiBSZWFkb25seURlZXA8VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMub3JpZ2luYWwsXG4gICAgICAgICAgICAuLi5jbG9uZURlZXAobmV3VmFsdWVzKSxcbiAgICAgICAgfTtcblxuICAgICAgICBPYmplY3Qua2V5cyhuZXdWYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gdGhpcy5kaWZmICYmIGlzRXF1YWwodGhpcy5kaWZmW2tleV0sIG5ld1ZhbHVlc1trZXldKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRpZmZba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -23,7 +23,6 @@ function getTabId(tab) {
|
|
|
23
23
|
* </mat-tab-group>
|
|
24
24
|
*/
|
|
25
25
|
export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
26
|
-
#isLoadingRouteConfig;
|
|
27
26
|
constructor(component, route, router) {
|
|
28
27
|
super();
|
|
29
28
|
this.component = component;
|
|
@@ -33,13 +32,13 @@ export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
33
32
|
* If false, disables the persistent navigation
|
|
34
33
|
*/
|
|
35
34
|
this.naturalLinkableTab = true;
|
|
36
|
-
this
|
|
35
|
+
this.isLoadingRouteConfig = false;
|
|
37
36
|
router.events.pipe(takeUntilDestroyed()).subscribe(event => {
|
|
38
37
|
if (event instanceof RouteConfigLoadStart) {
|
|
39
|
-
this
|
|
38
|
+
this.isLoadingRouteConfig = true;
|
|
40
39
|
}
|
|
41
40
|
else if (event instanceof RouteConfigLoadEnd) {
|
|
42
|
-
this
|
|
41
|
+
this.isLoadingRouteConfig = false;
|
|
43
42
|
}
|
|
44
43
|
});
|
|
45
44
|
}
|
|
@@ -59,7 +58,7 @@ export class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
59
58
|
});
|
|
60
59
|
// When mat-tab-groups selected tab change, update url
|
|
61
60
|
this.component.selectedTabChange.pipe(takeUntil(this.ngUnsubscribe)).subscribe(event => {
|
|
62
|
-
if (this
|
|
61
|
+
if (this.isLoadingRouteConfig) {
|
|
63
62
|
return;
|
|
64
63
|
}
|
|
65
64
|
const activatedTabName = getTabId(event.tab);
|
|
@@ -92,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
92
91
|
}], ctorParameters: () => [{ type: i1.MatTabGroup }, { type: i2.ActivatedRoute }, { type: i2.Router }], propDecorators: { naturalLinkableTab: [{
|
|
93
92
|
type: Input
|
|
94
93
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2FibGUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9kaXJlY3RpdmVzL2xpbmthYmxlLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUU5RDs7R0FFRztBQUNILFNBQVMsUUFBUSxDQUFDLEdBQVc7SUFDekIsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFLSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEseUJBQXlCO0lBT3RFLFlBQ3FCLFNBQXNCLEVBQ3RCLEtBQXFCLEVBQ3JCLE1BQWM7UUFFL0IsS0FBSyxFQUFFLENBQUM7UUFKUyxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUbkM7O1dBRUc7UUFDYSx1QkFBa0IsR0FBaUIsSUFBSSxDQUFDO1FBQ2hELHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQVNqQyxNQUFNLENBQUMsTUFBTSxDQUFD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IElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0VGFiLCBNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZUNvbmZpZ0xvYWRFbmQsIFJvdXRlQ29uZmlnTG9hZFN0YXJ0LCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2Nsb25lfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogUmV0dXJucyBhbiBpZGVudGlmaWVyIGZvciB0aGUgdGFiXG4gKi9cbmZ1bmN0aW9uIGdldFRhYklkKHRhYjogTWF0VGFiKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGFiLmNvbnRlbnQ/LnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlkID8/ICcnO1xufVxuXG4vKipcbiAqIFVzYWdlIDpcbiAqXG4gKiA8bWF0LXRhYi1ncm91cCBbbmF0dXJhbExpbmthYmxlVGFiXT1cIiFpc1BhbmVsXCI+XG4gKiAgICAgPG1hdC10YWIgbGFiZWw9XCJUYWIgMVwiPlRhYiAxPC9tYXQtdGFiPiAvLyBGaXJzdCB0YWIgZG9lc24ndCBuZWVkIGlkLiBUaGlzIGtlZXBzIHVybCBjbGVhbiBvbiBkZWZhdWx0IG9uZVxuICogICAgIDxtYXQtdGFiIGxhYmVsPVwiVGFiIDJcIiBpZD1cInNlY29uZC10YWJcIj5UYWIgMjwvbWF0LXRhYj5cbiAqICAgICAuLi5cbiAqIDwvbWF0LXRhYi1ncm91cD5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtdGFiLWdyb3VwW25hdHVyYWxMaW5rYWJsZVRhYl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxMaW5rYWJsZVRhYkRpcmVjdGl2ZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBJZiBmYWxzZSwgZGlzYWJsZXMgdGhlIHBlcnNpc3RlbnQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYXR1cmFsTGlua2FibGVUYWI6IGJvb2xlYW4gfCAnJyA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc0xvYWRpbmdSb3V0ZUNvbmZpZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudDogTWF0VGFiR3JvdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdSb3V0ZUNvbmZpZyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdSb3V0ZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXR1cmFsTGlua2FibGVUYWIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXaGVuIHVybCBwYXJhbXMgY2hhbmdlLCB1cGRhdGUgdGhlIG1hdC10YWItZ3JvdXAgc2VsZWN0ZWQgdGFiXG4gICAgICAgIHRoaXMucm91dGUuZnJhZ21lbnQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKGZyYWdtZW50ID0+IHtcbiAgICAgICAgICAgIC8vIEdldCBpbmRleCBvZiB0YWIgdGhhdCBtYXRjaGVzIHdhbnRlZCBuYW1lXG4gICAgICAgICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuZ2V0VGFiSW5kZXgoZnJhZ21lbnQpO1xuXG4gICAgICAgICAgICAvLyBJZiB0YWIgaW5kZXggaXMgdmFsaWQgKD49IDApIGdvIHRvIGdpdmVuIGZyYWdtZW50XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBmcmFnbWVudCBhdCBhbGwsIGdvIHRvIGZpcnN0IHRhYiAoaW5kZXggaXMgLTEgaW4gdGhpcyBjYXNlKVxuICAgICAgICAgICAgaWYgKHRhYkluZGV4ID49IDAgfHwgIWZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuc2VsZWN0ZWRJbmRleCA9IHRhYkluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXaGVuIG1hdC10YWItZ3JvdXBzIHNlbGVjdGVkIHRhYiBjaGFuZ2UsIHVwZGF0ZSB1cmxcbiAgICAgICAgdGhpcy5jb21wb25lbnQuc2VsZWN0ZWRUYWJDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGluZ1JvdXRlQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBhY3RpdmF0ZWRUYWJOYW1lID0gZ2V0VGFiSWQoZXZlbnQudGFiKTtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmw7XG4gICAgICAgICAgICBpZiAoIXNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBub3JtYWwgdXNhZ2UsIGJlY2F1c2UgaXQgd291bGQgbWVhbnMgdGhlcmUgaXMgbm8gcm91dGUgYXQgYWxsIGluIHRoZSBhcHBcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgVVJMIGZvciB0YWJzIHdpdGhvdXQgYW55IHNlZ21lbnRzIGluIFVSTCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdXJsIG1hdHJpeCBwYXJhbXMgKC9zZWdtZW50O21hdHJpeD1wYXJhbSkgb25seSB3aXRob3V0IHJvdXRlIHBhcmFtcyAoc2VnbWVudC86aWQpXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjbG9uZShzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5wYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJywgcGFyYW1zXSwge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJyxcbiAgICAgICAgICAgICAgICBmcmFnbWVudDogYWN0aXZhdGVkVGFiTmFtZT8ubGVuZ3RoID8gYWN0aXZhdGVkVGFiTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYkluZGV4KGZyYWdtZW50OiBzdHJpbmcgfCBudWxsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Ll90YWJzLnRvQXJyYXkoKS5maW5kSW5kZXgodGFiID0+IGZyYWdtZW50ID09PSBnZXRUYWJJZCh0YWIpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -31,14 +31,13 @@ import * as i9 from "@angular/material/progress-spinner";
|
|
|
31
31
|
* </natural-relations>
|
|
32
32
|
*/
|
|
33
33
|
export class NaturalRelationsComponent extends NaturalAbstractController {
|
|
34
|
-
#service;
|
|
35
34
|
get service() {
|
|
36
|
-
return this
|
|
35
|
+
return this._service;
|
|
37
36
|
}
|
|
38
37
|
set service(service) {
|
|
39
|
-
this
|
|
38
|
+
this._service = service;
|
|
40
39
|
this.loading = true;
|
|
41
|
-
const items$ = this
|
|
40
|
+
const items$ = this._service.watchAll(this.variablesManager).pipe(takeUntil(this.ngUnsubscribe), tap({
|
|
42
41
|
next: () => (this.loading = false),
|
|
43
42
|
complete: () => (this.loading = false),
|
|
44
43
|
error: () => (this.loading = false),
|
|
@@ -220,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
220
219
|
}], filter: [{
|
|
221
220
|
type: Input
|
|
222
221
|
}] } });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3JlbGF0aW9ucy9yZWxhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvcmVsYXRpb25zL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsNEJBQTRCLEVBQWtDLE1BQU0sc0NBQXNDLENBQUM7QUFNbkgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixD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R2pCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3FCQUN6QjtvSkFtQjBDLE1BQU07c0JBQWhELFNBQVM7dUJBQUMsc0JBQXNCO2dCQUNDLFlBQVk7c0JBQTdDLFlBQVk7dUJBQUMsV0FBVztnQkFTZCxPQUFPO3NCQURqQixLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFtQlAsV0FBVztzQkFBMUIsS0FBSztnQkFLVSwwQkFBMEI7c0JBQXpDLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxRQUFRO3NCQUF2QixLQUFLO2dCQUswQixJQUFJO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFLRyxlQUFlO3NCQUF4QyxNQUFNO2dCQUtTLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFLVSx3QkFBd0I7c0JBQXZDLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkF3Q0ssTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0UGFnaW5hdG9yTW9kdWxlLCBQYWdlRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJ9IGZyb20gJy4uLy4uL2NsYXNzZXMvYWJzdHJhY3QtY29udHJvbGxlcic7XG5pbXBvcnQge05hdHVyYWxEYXRhU291cmNlLCBQYWdpbmF0ZWREYXRhfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGEtc291cmNlJztcbmltcG9ydCB7TmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlciwgUGFnaW5hdGlvbklucHV0LCBRdWVyeVZhcmlhYmxlc30gZnJvbSAnLi4vLi4vY2xhc3Nlcy9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyJztcbmltcG9ydCB7SGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9ufSBmcm9tICcuLi8uLi9tb2R1bGVzL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWZpbHRlcnMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0xpbmthYmxlT2JqZWN0LCBOYXR1cmFsTGlua011dGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGluay1tdXRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9ufSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2NsYXNzZXMvaGllcmFyY2hpYy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7SGllcmFyY2hpY0RpYWxvZ0NvbmZpZ30gZnJvbSAnLi4vaGllcmFyY2hpYy1zZWxlY3Rvci9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZX0gZnJvbSAnLi4vaGllcmFyY2hpYy1zZWxlY3Rvci9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbFNlbGVjdENvbXBvbmVudH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7RXh0cmFjdFRhbGxPbmUsIEV4dHJhY3RWYWxsfSBmcm9tICcuLi8uLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdFRhYmxlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7ZmluYWxpemUsIGZvcmtKb2luLCB0YWtlVW50aWwsIHRhcH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQ3VzdG9tIHRlbXBsYXRlIHVzYWdlIDpcbiAqIDxuYXR1cmFsLXJlbGF0aW9ucyBbbWFpbl09XCJvd25lclwiIFtzZXJ2aWNlXT1cInN2Y1wiIFtmaWx0ZXJdPVwie31cIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBpdGVtXCI+XG4gKiAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICogICAgICAgICA8c3Bhbj57eyBpdGVtLnh4eCB9fTwvc3Bhbj5cbiAqICAgICA8L25nLXRlbXBsYXRlPlxuICogPC9uYXR1cmFsLXJlbGF0aW9ucz5cbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtcmVsYXRpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVsYXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcmVsYXRpb25zLmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBOYXR1cmFsSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE5hdHVyYWxTZWxlY3RDb21wb25lbnQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFJlbGF0aW9uc0NvbXBvbmVudDxcbiAgICAgICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaW5rYWJsZU9iamVjdD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gICAgQFZpZXdDaGlsZChOYXR1cmFsU2VsZWN0Q29tcG9uZW50KSBwcml2YXRlIHNlbGVjdD86IE5hdHVyYWxTZWxlY3RDb21wb25lbnQ8VFNlcnZpY2U+O1xuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHB1YmxpYyBpdGVtVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgICNzZXJ2aWNlITogVFNlcnZpY2U7XG5cbiAgICBwdWJsaWMgZ2V0IHNlcnZpY2UoKTogVFNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy4jc2VydmljZTtcbiAgICB9XG5cbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSlcbiAgICBwdWJsaWMgc2V0IHNlcnZpY2Uoc2VydmljZTogVFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy4jc2VydmljZSA9IHNlcnZpY2U7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGl0ZW1zJCA9IHRoaXMuI3NlcnZpY2Uud2F0Y2hBbGwodGhpcy52YXJpYWJsZXNNYW5hZ2VyKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgICAgICB0YXAoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSksXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSksXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTmF0dXJhbERhdGFTb3VyY2UoaXRlbXMkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGxhY2Vob2xkZXIgdXNlZCBpbiB0aGUgYnV0dG9uIHRvIGFkZCBhIG5ldyByZWxhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIGZvciBhdXRvY29tcGxldGUgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b2NvbXBsZXRlU2VsZWN0b3JGaWx0ZXI/OiBFeHRyYWN0VmFsbDxUU2VydmljZT5bJ2ZpbHRlciddIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSB0aGUgcmVuZGVyaW5nIG9mIHRoZSBzZWxlY3RlZCBpdGVtIGFzIHRleHQgaW4gaW5wdXRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheVdpdGg/OiAoaXRlbTogRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+IHwgbnVsbCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcmVsYXRpb25zIGNhbiBiZSBjaGFuZ2VkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWFpbiBvYmplY3QgdG8gd2hpY2ggYWxsIHJlbGF0aW9ucyBiZWxvbmcgdG9cbiAgICAgKi9cbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgcHVibGljIG1haW4hOiBMaW5rYWJsZU9iamVjdCAmIHtwZXJtaXNzaW9ucz86IHt1cGRhdGU6IGJvb2xlYW59fTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFmdGVyIHJlbGF0aW9ucyB3ZXJlIHN1Y2Nlc3NmdWxseSBhZGRlZCBvbiB0aGUgc2VydmVyXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIGZvciBoaWVyYXJjaGljIHNlbGVjdG9yXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGhpZXJhcmNoaWNTZWxlY3RvckZpbHRlcnM/OiBIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb24gfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBpbiBjYXNlIHdlIHByZWZlciBoaWVyYXJjaGljIHNlbGVjdGlvbiBvdmVyIGF1dG9jb21wbGV0ZSBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnPzogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uW107XG5cbiAgICAvKipcbiAgICAgKiBMaW5rIG11dGF0aW9uIHNlbWFudGljXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG90aGVyTmFtZT86IHN0cmluZyB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0aW5nIHNlcnZpY2UgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZGF0YVNvdXJjZSE6IE5hdHVyYWxEYXRhU291cmNlPFBhZ2luYXRlZERhdGE8TGlua2FibGVPYmplY3Q+PjtcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGFibGUgY29sdW1uc1xuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zID0gWyduYW1lJ107XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zID0gWzUsIDI1LCA1MCwgMTAwXTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFBhZ2luYXRpb24gPSB7XG4gICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgcGFnZVNpemU6IDI1LFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlIHZhcmlhYmxlcy9vcHRpb25zIGZvciBsaXN0aW5nIHNlcnZpY2UgdXNhZ2UgYW5kIGFwb2xsbyB3YXRjaFF1ZXJ5XG4gICAgICovXG4gICAgcHJpdmF0ZSB2YXJpYWJsZXNNYW5hZ2VyID0gbmV3IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8UXVlcnlWYXJpYWJsZXM+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVtb3ZpbmcgPSBuZXcgU2V0PExpbmthYmxlT2JqZWN0PigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtNdXRhdGlvblNlcnZpY2U6IE5hdHVyYWxMaW5rTXV0YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZzogTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGZpbHRlciB1c2VkIHRvIGZpbHRlciByZWxhdGlvbnNcbiAgICAgKlxuICAgICAqIFNvIGlmIHRoZSByZWxhdGlvbnMgYXJlIGZyb20gb25lIGFjdGlvbiAtPiB0byBtYW55IG9iamVjdGl2ZXMsIHRoZW4gdGhlIGZpbHRlciBtdXN0IGZpbHRlclxuICAgICAqIHRoZSBvYmplY3RpdmVzIHRoYXQgaGF2ZSBpbmRlZWQgYSByZWxhdGlvbiB0byB0aGUgcGFydGljdWxhciBhY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGZpbHRlcihmaWx0ZXI6IEV4dHJhY3RWYWxsPFRTZXJ2aWNlPlsnZmlsdGVyJ10pIHtcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgncmVsYXRpb25zLWZpbHRlcicsIHtmaWx0ZXI6IGZpbHRlcn0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgJiYgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluY2x1ZGVzKCd1bmxpbmsnKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnBvcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmRpc3BsYXllZENvbHVtbnMuaW5jbHVkZXMoJ3VubGluaycpKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgndW5saW5rJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbigpO1xuXG4gICAgICAgIC8vIEZvcmNlIGRpc2FibGVkIGlmIGNhbm5vdCB1cGRhdGUgb2JqZWN0XG4gICAgICAgIGlmICh0aGlzLm1haW4gJiYgdGhpcy5tYWluLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5tYWluLnBlcm1pc3Npb25zLnVwZGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVubGluayBhY3Rpb25cbiAgICAgKiBSZWZldGNoIHJlc3VsdCB0byBkaXNwbGF5IGl0IGluIHRhYmxlXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVJlbGF0aW9uKHJlbGF0aW9uOiBMaW5rYWJsZU9iamVjdCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92aW5nLmFkZChyZWxhdGlvbik7XG5cbiAgICAgICAgdGhpcy5saW5rTXV0YXRpb25TZXJ2aWNlXG4gICAgICAgICAgICAudW5saW5rKHRoaXMubWFpbiwgcmVsYXRpb24sIHRoaXMub3RoZXJOYW1lKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5yZW1vdmluZy5kZWxldGUocmVsYXRpb24pKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kYXRhU291cmNlPy5yZW1vdmUocmVsYXRpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaW5rIGFjdGlvblxuICAgICAqIFJlZmV0Y2ggcmVzdWx0IHRvIGRpc3BsYXkgaXQgaW4gdGFibGVcbiAgICAgKiBUT0RPIDogY291bGQgbWF5YmUgdXNlIFwidXBkYXRlXCIgYXR0cmlidXRlIG9mIGFwb2xsby5tdXRhdGUgZnVuY3Rpb24gdG8gdXBkYXRlIHRhYmxlIGZhc3RlciAoYnV0IGhhcmQgdG8gZG8gaXQgaGVyZSlcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkUmVsYXRpb25zKHJlbGF0aW9uczogKExpbmthYmxlT2JqZWN0IHwgRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+IHwgc3RyaW5nIHwgbnVsbClbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IHJlbGF0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigocmVsYXRpb24pOiByZWxhdGlvbiBpcyBMaW5rYWJsZU9iamVjdCA9PiAhIXJlbGF0aW9uICYmIHR5cGVvZiByZWxhdGlvbiA9PT0gJ29iamVjdCcpXG4gICAgICAgICAgICAubWFwKHJlbGF0aW9uID0+IHRoaXMubGlua011dGF0aW9uU2VydmljZS5saW5rKHRoaXMubWFpbiwgcmVsYXRpb24sIHRoaXMub3RoZXJOYW1lKSk7XG5cbiAgICAgICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdD8uY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhZ2luYXRpb24oZXZlbnQ/OiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHBhZ2luYXRpb246IFBhZ2luYXRpb25JbnB1dCB8IG51bGwgPSBudWxsO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudCAmJlxuICAgICAgICAgICAgKGV2ZW50LnBhZ2VJbmRleCAhPT0gdGhpcy5kZWZhdWx0UGFnaW5hdGlvbi5wYWdlSW5kZXggfHwgZXZlbnQucGFnZVNpemUgIT09IHRoaXMuZGVmYXVsdFBhZ2luYXRpb24ucGFnZVNpemUpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcGFnaW5hdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IGV2ZW50LnBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogZXZlbnQucGFnZVNpemUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgncGFnaW5hdGlvbicsIHtwYWdpbmF0aW9uOiBwYWdpbmF0aW9uID8gcGFnaW5hdGlvbiA6IHRoaXMuZGVmYXVsdFBhZ2luYXRpb259KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGlzcGxheUZuKCk6IChpdGVtOiBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT4gfCBudWxsKSA9PiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5V2l0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVdpdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKGl0ZW06IGFueSkgPT4gKGl0ZW0gPyBpdGVtLmZ1bGxOYW1lIHx8IGl0ZW0ubmFtZSA6ICcnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3Blbk5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3IoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEF0S2V5ID0gdGhpcy5nZXRTZWxlY3RLZXkoKTtcblxuICAgICAgICBpZiAoIXNlbGVjdEF0S2V5IHx8ICF0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB7fTtcblxuICAgICAgICBjb25zdCBoaWVyYXJjaGljQ29uZmlnOiBIaWVyYXJjaGljRGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgaGllcmFyY2hpY0NvbmZpZzogdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcsXG4gICAgICAgICAgICBoaWVyYXJjaGljU2VsZWN0aW9uOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIGhpZXJhcmNoaWNGaWx0ZXJzOiB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckZpbHRlcnMsXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1xuICAgICAgICAgICAgLm9wZW4oaGllcmFyY2hpY0NvbmZpZylcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdD8uaGllcmFyY2hpY1NlbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHJlc3VsdC5oaWVyYXJjaGljU2VsZWN0aW9uW3NlbGVjdEF0S2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUmVsYXRpb25zKHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdEtleSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcuZmlsdGVyKGMgPT4gISFjLnNlbGVjdGFibGVBdEtleSlbMF0uc2VsZWN0YWJsZUF0S2V5O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib2R5XCI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TmFtZUNlbGwgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICAgIHt7IGdldERpc3BsYXlGbigpKGl0ZW0pIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDx0YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgY2xhc3M9XCJuYXR1cmFsLXJvdy1jbGlja1wiIG1hdC10YWJsZT5cbiAgICAgICAgPHRyICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCIgbWF0LWhlYWRlci1yb3cgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC90cj5cbiAgICAgICAgPHRyICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCIgbWF0LXJvdz48L3RyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibmFtZVwiPlxuICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIGkxOG4gbWF0LWhlYWRlci1jZWxsPlRpdHJlPC90aD5cbiAgICAgICAgICAgIDx0ZCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGUgPyBpdGVtVGVtcGxhdGUgOiBkZWZhdWx0TmFtZUNlbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVubGlua1wiPlxuICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD48L3RoPlxuICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBtYXQtY2VsbD5cbiAgICAgICAgICAgICAgICBAaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUmVsYXRpb24oZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbW92aW5nLmhhcyhlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEaXNzb2NpZXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJsaW5rX29mZlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG5cbiAgICBAaWYgKGRhdGFTb3VyY2UuZGF0YSAmJiAoZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCB8fCAwKSA+IChkYXRhU291cmNlLmRhdGEucGFnZVNpemUgfHwgMCkpIHtcbiAgICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgICAgIChwYWdlKT1cInBhZ2luYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBbbGVuZ3RoXT1cImRhdGFTb3VyY2UuZGF0YS5sZW5ndGggfHwgMFwiXG4gICAgICAgICAgICBbcGFnZUluZGV4XT1cImRhdGFTb3VyY2UuZGF0YS5wYWdlSW5kZXggfHwgMFwiXG4gICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwiZGF0YVNvdXJjZS5kYXRhLnBhZ2VTaXplIHx8IDBcIlxuICAgICAgICAvPlxuICAgIH1cblxuICAgIEBpZiAoIWxvYWRpbmcgJiYgZGF0YVNvdXJjZS5kYXRhPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpbi12IG1hdC1ib2R5XCI+XG4gICAgICAgICAgICA8c3BhbiBpMThuPkF1Y3VuIHLDqXN1bHRhdDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChsb2FkaW5nKSB7XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiNDBcIiBjbGFzcz1cImxvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIC8+XG4gICAgfVxuPC9kaXY+XG5cbkBpZiAoIWRpc2FibGVkKSB7XG4gICAgQGlmIChoaWVyYXJjaGljU2VsZWN0b3JDb25maWcpIHtcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5OYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24+e3sgcGxhY2Vob2xkZXIgfX08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxuYXR1cmFsLXNlbGVjdFxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRSZWxhdGlvbnMoWyRldmVudF0pXCJcbiAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCIkYW55KGdldERpc3BsYXlGbigpKVwiXG4gICAgICAgICAgICBbZmlsdGVyXT1cImF1dG9jb21wbGV0ZVNlbGVjdG9yRmlsdGVyXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcbiAgICAgICAgICAgIFtzaG93SWNvbl09XCJmYWxzZVwiXG4gICAgICAgIC8+XG4gICAgfVxufVxuIl19
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3JlbGF0aW9ucy9yZWxhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvcmVsYXRpb25zL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsNEJBQTRCLEVBQWtDLE1BQU0sc0NBQXNDLENBQUM7QUFNbkgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixD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QUNMLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4QixzQkFBc0I7cUJBQ3pCO29KQW1CMEMsTUFBTTtzQkFBaEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBQ0MsWUFBWTtzQkFBN0MsWUFBWTt1QkFBQyxXQUFXO2dCQVNkLE9BQU87c0JBRGpCLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQW1CUCxXQUFXO3NCQUExQixLQUFLO2dCQUtVLDBCQUEwQjtzQkFBekMsS0FBSztnQkFLVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBSzBCLElBQUk7c0JBQW5DLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUtHLGVBQWU7c0JBQXhDLE1BQU07Z0JBS1MseUJBQXlCO3NCQUF4QyxLQUFLO2dCQUtVLHdCQUF3QjtzQkFBdkMsS0FBSztnQkFLVSxTQUFTO3NCQUF4QixLQUFLO2dCQXdDSyxNQUFNO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRQYWdpbmF0b3JNb2R1bGUsIFBhZ2VFdmVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcbmltcG9ydCB7TmF0dXJhbERhdGFTb3VyY2UsIFBhZ2luYXRlZERhdGF9IGZyb20gJy4uLy4uL2NsYXNzZXMvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyLCBQYWdpbmF0aW9uSW5wdXQsIFF1ZXJ5VmFyaWFibGVzfSBmcm9tICcuLi8uLi9jbGFzc2VzL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL21vZHVsZXMvaGllcmFyY2hpYy1zZWxlY3Rvci9jbGFzc2VzL2hpZXJhcmNoaWMtZmlsdGVycy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7TGlua2FibGVPYmplY3QsIE5hdHVyYWxMaW5rTXV0YXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saW5rLW11dGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtIaWVyYXJjaGljRGlhbG9nQ29uZmlnfSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsU2VsZWN0Q29tcG9uZW50fSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Fic3RyYWN0LW1vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHtFeHRyYWN0VGFsbE9uZSwgRXh0cmFjdFZhbGx9IGZyb20gJy4uLy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7TWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7TmF0dXJhbEljb25EaXJlY3RpdmV9IGZyb20gJy4uL2ljb24vaWNvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TWF0VG9vbHRpcE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7TWF0VGFibGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtmaW5hbGl6ZSwgZm9ya0pvaW4sIHRha2VVbnRpbCwgdGFwfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBDdXN0b20gdGVtcGxhdGUgdXNhZ2UgOlxuICogPG5hdHVyYWwtcmVsYXRpb25zIFttYWluXT1cIm93bmVyXCIgW3NlcnZpY2VdPVwic3ZjXCIgW2ZpbHRlcl09XCJ7fVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGFuIGl0ZW1cIj5cbiAqICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gKiAgICAgICAgIDxzcGFuPnt7IGl0ZW0ueHh4IH19PC9zcGFuPlxuICogICAgIDwvbmctdGVtcGxhdGU+XG4gKiA8L25hdHVyYWwtcmVsYXRpb25zPlxuICovXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1yZWxhdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWxhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9yZWxhdGlvbnMuY29tcG9uZW50LnNjc3MnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE5hdHVyYWxJY29uRGlyZWN0aXZlLFxuICAgICAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTmF0dXJhbFNlbGVjdENvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsUmVsYXRpb25zQ29tcG9uZW50PFxuICAgICAgICBUU2VydmljZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBQYWdpbmF0ZWREYXRhPExpbmthYmxlT2JqZWN0PixcbiAgICAgICAgICAgIFF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55XG4gICAgICAgID4sXG4gICAgPlxuICAgIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0Q29udHJvbGxlclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgICBAVmlld0NoaWxkKE5hdHVyYWxTZWxlY3RDb21wb25lbnQpIHByaXZhdGUgc2VsZWN0PzogTmF0dXJhbFNlbGVjdENvbXBvbmVudDxUU2VydmljZT47XG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgcHJpdmF0ZSBfc2VydmljZSE6IFRTZXJ2aWNlO1xuXG4gICAgcHVibGljIGdldCBzZXJ2aWNlKCk6IFRTZXJ2aWNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlcnZpY2U7XG4gICAgfVxuXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gICAgcHVibGljIHNldCBzZXJ2aWNlKHNlcnZpY2U6IFRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3NlcnZpY2UgPSBzZXJ2aWNlO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBpdGVtcyQgPSB0aGlzLl9zZXJ2aWNlLndhdGNoQWxsKHRoaXMudmFyaWFibGVzTWFuYWdlcikucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgICAgdGFwKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE5hdHVyYWxEYXRhU291cmNlKGl0ZW1zJCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHBsYWNlaG9sZGVyIHVzZWQgaW4gdGhlIGJ1dHRvbiB0byBhZGQgYSBuZXcgcmVsYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciBmb3IgYXV0b2NvbXBsZXRlIHNlbGVjdG9yXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGF1dG9jb21wbGV0ZVNlbGVjdG9yRmlsdGVyPzogRXh0cmFjdFZhbGw8VFNlcnZpY2U+WydmaWx0ZXInXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBhcyB0ZXh0IGluIGlucHV0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRpc3BsYXlXaXRoPzogKGl0ZW06IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IG51bGwpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHJlbGF0aW9ucyBjYW4gYmUgY2hhbmdlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG1haW4gb2JqZWN0IHRvIHdoaWNoIGFsbCByZWxhdGlvbnMgYmVsb25nIHRvXG4gICAgICovXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBtYWluITogTGlua2FibGVPYmplY3QgJiB7cGVybWlzc2lvbnM/OiB7dXBkYXRlOiBib29sZWFufX07XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhZnRlciByZWxhdGlvbnMgd2VyZSBzdWNjZXNzZnVsbHkgYWRkZWQgb24gdGhlIHNlcnZlclxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyBmb3IgaGllcmFyY2hpYyBzZWxlY3RvclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWVyYXJjaGljU2VsZWN0b3JGaWx0ZXJzPzogSGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9uIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gaW4gY2FzZSB3ZSBwcmVmZXIgaGllcmFyY2hpYyBzZWxlY3Rpb24gb3ZlciBhdXRvY29tcGxldGUgc2VsZWN0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZz86IE5hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvbltdO1xuXG4gICAgLyoqXG4gICAgICogTGluayBtdXRhdGlvbiBzZW1hbnRpY1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBvdGhlck5hbWU/OiBzdHJpbmcgfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogTGlzdGluZyBzZXJ2aWNlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGRhdGFTb3VyY2UhOiBOYXR1cmFsRGF0YVNvdXJjZTxQYWdpbmF0ZWREYXRhPExpbmthYmxlT2JqZWN0Pj47XG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRhYmxlIGNvbHVtbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGxheWVkQ29sdW1ucyA9IFsnbmFtZSddO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAyNSwgNTAsIDEwMF07XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRQYWdpbmF0aW9uID0ge1xuICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgIHBhZ2VTaXplOiAyNSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSB2YXJpYWJsZXMvb3B0aW9ucyBmb3IgbGlzdGluZyBzZXJ2aWNlIHVzYWdlIGFuZCBhcG9sbG8gd2F0Y2hRdWVyeVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFyaWFibGVzTWFuYWdlciA9IG5ldyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFF1ZXJ5VmFyaWFibGVzPigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbW92aW5nID0gbmV3IFNldDxMaW5rYWJsZU9iamVjdD4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsaW5rTXV0YXRpb25TZXJ2aWNlOiBOYXR1cmFsTGlua011dGF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaWVyYXJjaGljU2VsZWN0b3JEaWFsb2c6IE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBmaWx0ZXIgdXNlZCB0byBmaWx0ZXIgcmVsYXRpb25zXG4gICAgICpcbiAgICAgKiBTbyBpZiB0aGUgcmVsYXRpb25zIGFyZSBmcm9tIG9uZSBhY3Rpb24gLT4gdG8gbWFueSBvYmplY3RpdmVzLCB0aGVuIHRoZSBmaWx0ZXIgbXVzdCBmaWx0ZXJcbiAgICAgKiB0aGUgb2JqZWN0aXZlcyB0aGF0IGhhdmUgaW5kZWVkIGEgcmVsYXRpb24gdG8gdGhlIHBhcnRpY3VsYXIgYWN0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBmaWx0ZXIoZmlsdGVyOiBFeHRyYWN0VmFsbDxUU2VydmljZT5bJ2ZpbHRlciddKSB7XG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3JlbGF0aW9ucy1maWx0ZXInLCB7ZmlsdGVyOiBmaWx0ZXJ9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmNsdWRlcygndW5saW5rJykpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluY2x1ZGVzKCd1bmxpbmsnKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3VubGluaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24oKTtcblxuICAgICAgICAvLyBGb3JjZSBkaXNhYmxlZCBpZiBjYW5ub3QgdXBkYXRlIG9iamVjdFxuICAgICAgICBpZiAodGhpcy5tYWluICYmIHRoaXMubWFpbi5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMubWFpbi5wZXJtaXNzaW9ucy51cGRhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbmxpbmsgYWN0aW9uXG4gICAgICogUmVmZXRjaCByZXN1bHQgdG8gZGlzcGxheSBpdCBpbiB0YWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVSZWxhdGlvbihyZWxhdGlvbjogTGlua2FibGVPYmplY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmluZy5hZGQocmVsYXRpb24pO1xuXG4gICAgICAgIHRoaXMubGlua011dGF0aW9uU2VydmljZVxuICAgICAgICAgICAgLnVubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMucmVtb3ZpbmcuZGVsZXRlKHJlbGF0aW9uKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGF0YVNvdXJjZT8ucmVtb3ZlKHJlbGF0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGluayBhY3Rpb25cbiAgICAgKiBSZWZldGNoIHJlc3VsdCB0byBkaXNwbGF5IGl0IGluIHRhYmxlXG4gICAgICogVE9ETyA6IGNvdWxkIG1heWJlIHVzZSBcInVwZGF0ZVwiIGF0dHJpYnV0ZSBvZiBhcG9sbG8ubXV0YXRlIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0YWJsZSBmYXN0ZXIgKGJ1dCBoYXJkIHRvIGRvIGl0IGhlcmUpXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlbGF0aW9ucyhyZWxhdGlvbnM6IChMaW5rYWJsZU9iamVjdCB8IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IHN0cmluZyB8IG51bGwpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSByZWxhdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlbGF0aW9uKTogcmVsYXRpb24gaXMgTGlua2FibGVPYmplY3QgPT4gISFyZWxhdGlvbiAmJiB0eXBlb2YgcmVsYXRpb24gPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgLm1hcChyZWxhdGlvbiA9PiB0aGlzLmxpbmtNdXRhdGlvblNlcnZpY2UubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSkpO1xuXG4gICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Q/LmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uKGV2ZW50PzogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uSW5wdXQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQgJiZcbiAgICAgICAgICAgIChldmVudC5wYWdlSW5kZXggIT09IHRoaXMuZGVmYXVsdFBhZ2luYXRpb24ucGFnZUluZGV4IHx8IGV2ZW50LnBhZ2VTaXplICE9PSB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uLnBhZ2VTaXplKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBldmVudC5wYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IGV2ZW50LnBhZ2VTaXplLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogcGFnaW5hdGlvbiA/IHBhZ2luYXRpb24gOiB0aGlzLmRlZmF1bHRQYWdpbmF0aW9ufSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpc3BsYXlGbigpOiAoaXRlbTogRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+IHwgbnVsbCkgPT4gc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChpdGVtOiBhbnkpID0+IChpdGVtID8gaXRlbS5mdWxsTmFtZSB8fCBpdGVtLm5hbWUgOiAnJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5OYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RBdEtleSA9IHRoaXMuZ2V0U2VsZWN0S2V5KCk7XG5cbiAgICAgICAgaWYgKCFzZWxlY3RBdEtleSB8fCAhdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0ge307XG5cbiAgICAgICAgY29uc3QgaGllcmFyY2hpY0NvbmZpZzogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNDb25maWc6IHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLFxuICAgICAgICAgICAgaGllcmFyY2hpY1NlbGVjdGlvbjogc2VsZWN0ZWQsXG4gICAgICAgICAgICBoaWVyYXJjaGljRmlsdGVyczogdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JGaWx0ZXJzLFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcpXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ/LmhpZXJhcmNoaWNTZWxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbltzZWxlY3RBdEtleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFJlbGF0aW9ucyhzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RLZXkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLmZpbHRlcihjID0+ICEhYy5zZWxlY3RhYmxlQXRLZXkpWzBdLnNlbGVjdGFibGVBdEtleTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm9keVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5hbWVDZWxsIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICB7eyBnZXREaXNwbGF5Rm4oKShpdGVtKSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8dGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIGNsYXNzPVwibmF0dXJhbC1yb3ctY2xpY2tcIiBtYXQtdGFibGU+XG4gICAgICAgIDx0ciAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiIG1hdC1oZWFkZXItcm93IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvdHI+XG4gICAgICAgIDx0ciAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiIG1hdC1yb3c+PC90cj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5hbWVcIj5cbiAgICAgICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBpMThuIG1hdC1oZWFkZXItY2VsbD5UaXRyZTwvdGg+XG4gICAgICAgICAgICA8dGQgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIG1hdC1jZWxsPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlIDogZGVmYXVsdE5hbWVDZWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1bmxpbmtcIj5cbiAgICAgICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+PC90aD5cbiAgICAgICAgICAgIDx0ZCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgQGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVJlbGF0aW9uKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1vdmluZy5oYXMoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGlzc29jaWVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwibGlua19vZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RhYmxlPlxuXG4gICAgQGlmIChkYXRhU291cmNlLmRhdGEgJiYgKGRhdGFTb3VyY2UuZGF0YS5sZW5ndGggfHwgMCkgPiAoZGF0YVNvdXJjZS5kYXRhLnBhZ2VTaXplIHx8IDApKSB7XG4gICAgICAgIDxtYXQtcGFnaW5hdG9yXG4gICAgICAgICAgICAocGFnZSk9XCJwYWdpbmF0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgW2xlbmd0aF09XCJkYXRhU291cmNlLmRhdGEubGVuZ3RoIHx8IDBcIlxuICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJkYXRhU291cmNlLmRhdGEucGFnZUluZGV4IHx8IDBcIlxuICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cImRhdGFTb3VyY2UuZGF0YS5wYWdlU2l6ZSB8fCAwXCJcbiAgICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKCFsb2FkaW5nICYmIGRhdGFTb3VyY2UuZGF0YT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW4tdiBtYXQtYm9keVwiPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5BdWN1biByw6lzdWx0YXQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAobG9hZGluZykge1xuICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgW2RpYW1ldGVyXT1cIjQwXCIgY2xhc3M9XCJsb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgIH1cbjwvZGl2PlxuXG5AaWYgKCFkaXNhYmxlZCkge1xuICAgIEBpZiAoaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvcigpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uPnt7IHBsYWNlaG9sZGVyIH19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmF0dXJhbC1zZWxlY3RcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiYWRkUmVsYXRpb25zKFskZXZlbnRdKVwiXG4gICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiJGFueShnZXREaXNwbGF5Rm4oKSlcIlxuICAgICAgICAgICAgW2ZpbHRlcl09XCJhdXRvY29tcGxldGVTZWxlY3RvckZpbHRlclwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW3NlcnZpY2VdPVwic2VydmljZVwiXG4gICAgICAgICAgICBbc2hvd0ljb25dPVwiZmFsc2VcIlxuICAgICAgICAvPlxuICAgIH1cbn1cbiJdfQ==
|