@smartbit4all/ng-client 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/smart-client/smart-component-api-client.mjs +33 -5
- package/esm2020/lib/view-context/smart-view-context.service.mjs +108 -8
- package/fesm2015/smartbit4all-ng-client.mjs +149 -9
- package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
- package/fesm2020/smartbit4all-ng-client.mjs +137 -9
- package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-client/smart-component-api-client.d.ts +2 -0
- package/lib/view-context/smart-view-context.service.d.ts +26 -2
- package/package.json +1 -1
- package/smartbit4all-ng-client-1.1.3.tgz +0 -0
- package/smartbit4all-ng-client-1.1.2.tgz +0 -0
|
@@ -2,8 +2,8 @@ import { __decorate, __param } from "tslib";
|
|
|
2
2
|
import { Inject } from '@angular/core';
|
|
3
3
|
import { SmartGridComponent } from '@smartbit4all/grid';
|
|
4
4
|
import { SmarttreeGenericService } from '@smartbit4all/tree';
|
|
5
|
-
import { Subject } from 'rxjs';
|
|
6
|
-
import { SmartViewContextService, UiActionDescriptorService, UiActionService, } from '../view-context/projects';
|
|
5
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
6
|
+
import { DataChangeKind, SmartViewContextService, UiActionDescriptorService, UiActionService, } from '../view-context/projects';
|
|
7
7
|
import { SmartSubject } from './smart.subject';
|
|
8
8
|
let SmartComponentApiClient = class SmartComponentApiClient {
|
|
9
9
|
constructor(inject, auth, pageName) {
|
|
@@ -11,6 +11,7 @@ let SmartComponentApiClient = class SmartComponentApiClient {
|
|
|
11
11
|
this.auth = auth;
|
|
12
12
|
this.pageName = pageName;
|
|
13
13
|
this._destroy$ = new Subject();
|
|
14
|
+
this.sendDataChanges = false;
|
|
14
15
|
this.detectChange = new SmartSubject(this._destroy$);
|
|
15
16
|
this.uiActionModels = [];
|
|
16
17
|
this.dataChanged = new SmartSubject(this._destroy$);
|
|
@@ -143,7 +144,14 @@ let SmartComponentApiClient = class SmartComponentApiClient {
|
|
|
143
144
|
}
|
|
144
145
|
addForm(smartFormId, smartForm, componentReference) {
|
|
145
146
|
this.formWidgets.addWidget(smartFormId, componentReference);
|
|
146
|
-
|
|
147
|
+
if (this.sendDataChanges && componentReference) {
|
|
148
|
+
smartForm.useOnValueChangeEvent = true;
|
|
149
|
+
componentReference.sophisticatedValueChange
|
|
150
|
+
.pipe(takeUntil(this._destroy$))
|
|
151
|
+
.subscribe((valueChange) => {
|
|
152
|
+
this.handleValueChanges(valueChange);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
147
155
|
return smartForm;
|
|
148
156
|
}
|
|
149
157
|
setUpDefaultTree(treeId) {
|
|
@@ -156,6 +164,26 @@ let SmartComponentApiClient = class SmartComponentApiClient {
|
|
|
156
164
|
return treeService;
|
|
157
165
|
}
|
|
158
166
|
// #region handle changes
|
|
167
|
+
handleValueChanges(valueChange) {
|
|
168
|
+
let dataChange;
|
|
169
|
+
if (valueChange.key.includes('.')) {
|
|
170
|
+
const source = valueChange.key.split('.')[0];
|
|
171
|
+
const valueKey = valueChange.key.split('.')[1];
|
|
172
|
+
dataChange = {
|
|
173
|
+
kind: valueChange.kind === 'basic' ? DataChangeKind.Widget : DataChangeKind.Selection,
|
|
174
|
+
source,
|
|
175
|
+
values: [[valueKey, valueChange.value]],
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
dataChange = {
|
|
180
|
+
kind: valueChange.kind === 'basic' ? DataChangeKind.Widget : DataChangeKind.Selection,
|
|
181
|
+
source: valueChange.key,
|
|
182
|
+
values: [[valueChange.key, valueChange.value]],
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
this.viewContext.dataChanged(this.uuid, dataChange);
|
|
186
|
+
}
|
|
159
187
|
handleChanges(change) {
|
|
160
188
|
if (change.changedWidgets) {
|
|
161
189
|
this.handleChangeWidgets(change.changedWidgets);
|
|
@@ -218,7 +246,7 @@ let SmartComponentApiClient = class SmartComponentApiClient {
|
|
|
218
246
|
return model;
|
|
219
247
|
}
|
|
220
248
|
handleDataChange(changes, changeKey) {
|
|
221
|
-
this.setValueDeeply(this.
|
|
249
|
+
this.setValueDeeply(this.model, changeKey, changes[changeKey]);
|
|
222
250
|
this.formWidgets.widgets.forEach((formComponent, key) => {
|
|
223
251
|
if (formComponent === undefined) {
|
|
224
252
|
console.error(`Provided form reference for ${key} is undefined.`);
|
|
@@ -271,4 +299,4 @@ export class WidgetMap {
|
|
|
271
299
|
return this.widgets.get(key);
|
|
272
300
|
}
|
|
273
301
|
}
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUdMLHVCQUF1QixFQUd2Qix5QkFBeUIsRUFHekIsZUFBZSxHQUdoQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxJQUFzQix1QkFBdUIsR0FBN0MsTUFBc0IsdUJBQXVCO0lBeUUzQyxZQUNZLE1BQWdCLEVBQ2hCLElBQXlDLEVBQ3JCLFFBQWdCO1FBRnBDLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBcUM7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQTNFdEMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTNDLGlCQUFZLEdBQXVDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQW9DckYsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBRXJDLGdCQUFXLEdBQWtCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRSxjQUFjO1FBQ2QsV0FBTSxHQUFrQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsd0JB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RUFBRSxTQUFpQjtRQUMvRSxJQUFJLENBQUMsS0FBTSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUdGLENBQUE7QUEvVHFCLHVCQUF1QjtJQTRFeEMsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7R0E1RUQsdUJBQXVCLENBK1Q1QztTQS9UcUIsdUJBQXVCO0FBaVU3QyxNQUFNLE9BQU8sU0FBUztJQUF0QjtRQUNVLGFBQVEsR0FBbUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQXFCL0MsQ0FBQztJQW5CQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLE9BQXVCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFDRCxTQUFTLENBQUMsR0FBVyxFQUFFLFNBQVksRUFBRSxNQUFnQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFlBQVksQ0FBQyxHQUFXO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRPcHRpb25zLCBTbWFydEdyaWQsIFNtYXJ0R3JpZENvbXBvbmVudCB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZ3JpZCc7XG5pbXBvcnQgeyBTbWFydHRyZWVHZW5lcmljU2VydmljZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvdHJlZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRNb2RlbCxcbiAgQ29tcG9uZW50TW9kZWxDaGFuZ2UsXG4gIFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlLFxuICBVaUFjdGlvbixcbiAgVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zLFxuICBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLFxuICBVaUFjdGlvbk1vZGVsLFxuICBVaUFjdGlvblJlcXVlc3QsXG4gIFVpQWN0aW9uU2VydmljZSxcbiAgVWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlLFxuICBVc2VVaUFjdGlvbixcbn0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3Byb2plY3RzJztcbmltcG9ydCB7IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi9zbWFydC1hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0U3ViamVjdCB9IGZyb20gJy4vc21hcnQuc3ViamVjdCc7XG5pbXBvcnQgeyBTbWFydEZvcm0sIFNtYXJ0Zm9ybUNvbXBvbmVudCB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTbWFydENvbXBvbmVudEFwaUNsaWVudDxUPiBpbXBsZW1lbnRzIFVzZVVpQWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxDb21wb25lbnRNb2RlbENoYW5nZT4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcblxuICBwcml2YXRlIF91dWlkPzogc3RyaW5nO1xuXG4gIGdldCB1dWlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3V1aWQ7XG4gIH1cbiAgc2V0IHV1aWQodXVpZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMudXVpZCkge1xuICAgICAgdGhpcy52aWV3Q29udGV4dC51bmZvbGxvdyh0aGlzLnV1aWQpO1xuICAgIH1cbiAgICB0aGlzLl91dWlkID0gdXVpZDtcbiAgICB0aGlzLnZpZXdDb250ZXh0LmZvbGxvdyh0aGlzLl91dWlkISwgdGhpcy5kZXRlY3RDaGFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbW9kZWw6IENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBtb2RlbCgpOiBDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICB9XG4gIHNldCBtb2RlbChtb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9tb2RlbCA9IG1vZGVsO1xuXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlNb2RlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF0YT86IFQ7XG5cbiAgZ2V0IGRhdGEoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbiAgc2V0IGRhdGEobW9kZWw6IFQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9kYXRhID0gbW9kZWw7XG4gICAgdGhpcy5kYXRhQ2hhbmdlZC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgdWlBY3Rpb25Nb2RlbHM6IFVpQWN0aW9uTW9kZWxbXSA9IFtdO1xuXG4gIHB1YmxpYyBkYXRhQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuXG4gIC8vIFVzZVVpQWN0aW9uXG4gIHN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuICByZVN1YnNjcmliZVRvQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgLy8gR3JpZFxuICBzbWFydEdyaWQ/OiBTbWFydEdyaWQ7XG5cbiAgLy8gU2VydmljZXNcbiAgcHJvdGVjdGVkIHZpZXdDb250ZXh0OiBTbWFydFZpZXdDb250ZXh0U2VydmljZTtcbiAgcHJvdGVjdGVkIHVpQWN0aW9uU2VydmljZTogVWlBY3Rpb25TZXJ2aWNlO1xuICBwcm90ZWN0ZWQgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcblxuICAvLyBUcmVlXG4gIHByaXZhdGUgX3NtYXJ0VHJlZVNlcnZpY2U/OiBTbWFydHRyZWVHZW5lcmljU2VydmljZTtcblxuICBwdWJsaWMgZ2V0IHNtYXJ0VHJlZVNlcnZpY2UoKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zbWFydFRyZWVTZXJ2aWNlO1xuICB9XG4gIHB1YmxpYyBzZXQgc21hcnRUcmVlU2VydmljZShzbWFydFRyZWVTZXJ2aWNlOiBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLl9zbWFydFRyZWVTZXJ2aWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IEVycm9yKCdUaGUgZGVmYXVsdCB0cmVlIGhhcyBhbHJlYWR5IHNldCB1cCEnKTtcbiAgICB9XG4gICAgdGhpcy5fc21hcnRUcmVlU2VydmljZSA9IHNtYXJ0VHJlZVNlcnZpY2U7XG4gIH1cblxuICAvLyBDb250YWluZWQgV2lkZ2V0c1xuICB3aWRnZXRzOiBXaWRnZXRNYXA8U21hcnRHcmlkQ29tcG9uZW50IHwgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQ+ID0gbmV3IFdpZGdldE1hcCgpO1xuXG4gIGZvcm1XaWRnZXRzOiBXaWRnZXRNYXA8U21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkPiA9IG5ldyBXaWRnZXRNYXAoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0OiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgYXV0aDogU21hcnRBdXRoZW50aWNhdGlvblNlcnZpY2VJbnRlcmZhY2UsXG4gICAgQEluamVjdCgncGFnZU5hbWUnKSBwcm90ZWN0ZWQgcGFnZU5hbWU6IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLmRldGVjdENoYW5nZS5zdWJzY3JpYmUoKGNoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyhjaGFuZ2UpO1xuICAgIH0pO1xuXG4gICAgdGhpcy52aWV3Q29udGV4dCA9IGluamVjdC5nZXQoU21hcnRWaWV3Q29udGV4dFNlcnZpY2UpO1xuXG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UgPSBpbmplY3QuZ2V0KFVpQWN0aW9uU2VydmljZSk7XG4gICAgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKTtcbiAgfVxuXG4gIF9uZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJ1bigpO1xuICB9XG4gIF9uZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdDb250ZXh0LnVuZm9sbG93KHRoaXMudXVpZCEpO1xuICAgIHRoaXMud2lkZ2V0cy5jbGVhcldpZGdldHMoKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgaW5pdENvbXBvbmVudEJ5TW9kZWwoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0RGF0YSgpO1xuICAgIHRoaXMuaW5pdEFjdGlvbnMoKTtcblxuICAgIC8vIFRPRE86IGxheW91dCwgdmFsdWVTZXQsIHdpZGdldHNcbiAgfVxuXG4gIGluaXREYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVsPy5kYXRhKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLm1vZGVsPy5kYXRhIGFzIGFueTtcbiAgICB9XG4gIH1cblxuICBpbml0QWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlbD8uYWN0aW9ucykge1xuICAgICAgdGhpcy51aUFjdGlvbk1vZGVscyA9IHRoaXMubW9kZWw/LmFjdGlvbnMubWFwKCh1aUFjdGlvbjogVWlBY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMsXG4gICAgICAgICAgdWlBY3Rpb24sXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBydW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0aC5iZmZBcGlzSGF2ZUJlZW5TZXRVcCkge1xuICAgICAgdGhpcy5sb2FkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0aC5oZWFkZXJzVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy51dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUpO1xuICAgIHRoaXMubW9kZWwgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmxvYWQodGhpcy51dWlkKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBVc2VVaUFjdGlvblxuICBnZXRBZGRpdGlvbmFsUGFyYW1zKHVpQWN0aW9uOiBVaUFjdGlvbik6IFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvclRleHRBcmVhOiAnJyxcbiAgICAgIGZvclRleHRGaWVsZDogJycsXG4gICAgfTtcbiAgfVxuICBnZXRNb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybVVpQWN0aW9uUmVxdWVzdChcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCxcbiAgICB3aWRnZXRJZD86IHN0cmluZyxcbiAgICBub2RlSWQ/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAod2lkZ2V0SWQgJiYgbm9kZUlkKSB7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1XaWRnZXRBY3Rpb24odGhpcy51dWlkISwgd2lkZ2V0SWQsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcbiAgICB9IGVsc2UgaWYgKHdpZGdldElkKSB7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1XaWRnZXRNYWluQWN0aW9uKHRoaXMudXVpZCEsIHdpZGdldElkLCB1aUFjdGlvblJlcXVlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1BY3Rpb24odGhpcy51dWlkISwgdWlBY3Rpb25SZXF1ZXN0KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseShcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTxVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2U+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5IG1ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHVibGljIGFkZEdyaWQoXG4gICAgc21hcnRHcmlkOiBTbWFydEdyaWQsXG4gICAgb3B0aW9uczogR3JpZE9wdGlvbnMsXG4gICAgdXNlQXNEZWZhdWx0R3JpZD86IGJvb2xlYW4sXG4gICAgY29tcG9uZW50UmVmZXJlbmNlPzogU21hcnRHcmlkQ29tcG9uZW50XG4gICk6IFNtYXJ0R3JpZCB7XG4gICAgc21hcnRHcmlkLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHNtYXJ0R3JpZC51aUFjdGlvblNlcnZpY2UgPSB0aGlzLnVpQWN0aW9uU2VydmljZTtcbiAgICBzbWFydEdyaWQudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcbiAgICBzbWFydEdyaWQuc2VydmljZVRvVXNlID0gdGhpcztcbiAgICBzbWFydEdyaWQudmlld0NvbnRleHRTZXJ2aWNlID0gdGhpcy52aWV3Q29udGV4dDtcblxuICAgIHRoaXMud2lkZ2V0cy5hZGRXaWRnZXQoc21hcnRHcmlkLmdyaWRJZGVudGlmaWVyLCBjb21wb25lbnRSZWZlcmVuY2UpO1xuXG4gICAgaWYgKHVzZUFzRGVmYXVsdEdyaWQpIHtcbiAgICAgIHRoaXMuc21hcnRHcmlkID0gc21hcnRHcmlkO1xuICAgICAgcmV0dXJuIHRoaXMuc21hcnRHcmlkO1xuICAgIH1cblxuICAgIHJldHVybiBzbWFydEdyaWQ7XG4gIH1cblxuICBwdWJsaWMgYWRkRm9ybShcbiAgICBzbWFydEZvcm1JZDogc3RyaW5nLFxuICAgIHNtYXJ0Rm9ybTogU21hcnRGb3JtLFxuICAgIGNvbXBvbmVudFJlZmVyZW5jZT86IFNtYXJ0Zm9ybUNvbXBvbmVudFxuICApOiBTbWFydEZvcm0ge1xuICAgIHRoaXMuZm9ybVdpZGdldHMuYWRkV2lkZ2V0KHNtYXJ0Rm9ybUlkLCBjb21wb25lbnRSZWZlcmVuY2UpO1xuXG4gICAgLy8gVE9ETyBmb3JtIHZhbHVlIGNoYW5nZXNcblxuICAgIHJldHVybiBzbWFydEZvcm07XG4gIH1cblxuICBwdWJsaWMgc2V0VXBEZWZhdWx0VHJlZSh0cmVlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc21hcnRUcmVlU2VydmljZSA9IG5ldyBTbWFydHRyZWVHZW5lcmljU2VydmljZSh0aGlzLmluamVjdCwgdGhpcy5wYWdlTmFtZSwgdHJlZUlkKTtcbiAgICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHRyZWVJZCwgdGhpcy5zbWFydFRyZWVTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUcmVlU2VydmljZSh0cmVlSWQ6IHN0cmluZyk6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHtcbiAgICBjb25zdCB0cmVlU2VydmljZSA9IG5ldyBTbWFydHRyZWVHZW5lcmljU2VydmljZSh0aGlzLmluamVjdCwgdGhpcy5wYWdlTmFtZSwgdHJlZUlkKTtcbiAgICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHRyZWVJZCwgdHJlZVNlcnZpY2UpO1xuXG4gICAgcmV0dXJuIHRyZWVTZXJ2aWNlO1xuICB9XG5cbiAgLy8gI3JlZ2lvbiBoYW5kbGUgY2hhbmdlc1xuICBwcml2YXRlIGhhbmRsZUNoYW5nZXMoY2hhbmdlOiBDb21wb25lbnRNb2RlbENoYW5nZSk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2UuY2hhbmdlZFdpZGdldHMpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2UuY2hhbmdlZFdpZGdldHMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2UuY2hhbmdlcykge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGNoYW5nZS5jaGFuZ2VzO1xuICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcykubWFwKChjaGFuZ2VLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ2RhdGEuJykpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnbGF5b3V0cy4nKSAmJiB0aGlzLm1vZGVsPy5sYXlvdXRzKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVMYXlvdXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgndmFsdWVTZXRzLicpICYmIHRoaXMubW9kZWw/LnZhbHVlU2V0cykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVTZXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkgPT09ICdhY3Rpb25zJykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQWN0aW9uQ2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnY29uc3RyYWludHMnKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVDb25zdHJhaW50Q2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghY2hhbmdlLmNoYW5nZWRXaWRnZXRzICYmICFjaGFuZ2UuY2hhbmdlcyAmJiBjaGFuZ2UudmFsdWUpIHtcbiAgICAgIHRoaXMubW9kZWwgPSBjaGFuZ2UudmFsdWUgYXMgQ29tcG9uZW50TW9kZWw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VXaWRnZXRzKGNoYW5nZWRXaWRnZXRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNoYW5nZWRXaWRnZXRzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLndpZGdldHMuZ2V0KGtleSk7XG5cbiAgICAgIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcbiAgICAgICAgcmVmZXJlbmNlLnJlZnJlc2goKTtcbiAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UpIHtcbiAgICAgICAgcmVmZXJlbmNlLmluaXRpYWxpemUoKTtcbiAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkLmApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZURlZXBseShtb2RlbDogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgbGV0IHNwbGl0dGVkS2V5cyA9IGtleS5zcGxpdCgnLicpO1xuXG4gICAgbGV0IGRlZXBNb2RlbDogYW55W10gPSBbbW9kZWxdO1xuICAgIGxldCB0ZW1wTW9kZWw6IGFueTtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzcGxpdHRlZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB0ZW1wTW9kZWwgPSBkZWVwTW9kZWxbaW5kZXhdO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdzdHJpbmcnICYmXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdib29sZWFuJyAmJlxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGRlZXBNb2RlbC5wdXNoKHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmRleCA9PT0gc3BsaXR0ZWRLZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZhbHVlRGVlcGx5KHRoaXMuZGF0YSwgY2hhbmdlS2V5LCBjaGFuZ2VzW2NoYW5nZUtleV0pO1xuXG4gICAgdGhpcy5mb3JtV2lkZ2V0cy53aWRnZXRzLmZvckVhY2goXG4gICAgICAoZm9ybUNvbXBvbmVudDogU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoZm9ybUNvbXBvbmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgZm9ybSByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9ybUNvbXBvbmVudC5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMYXlvdXRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbGF5b3V0S2V5ID0gY2hhbmdlS2V5LnNwbGl0KCcuJylbMV07XG4gICAgdGhpcy5tb2RlbCEubGF5b3V0c1tsYXlvdXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZVNldENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCB2YWx1ZVNldEtleSA9IGNoYW5nZUtleS5zcGxpdCgnLicpWzFdO1xuICAgIHRoaXMubW9kZWwhLnZhbHVlU2V0cyFbdmFsdWVTZXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsIS5hY3Rpb25zID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICAgIHRoaXMuaW5pdEFjdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29uc3RyYWludENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwhLmNvbnN0cmFpbnRzID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxufVxuXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwPFQ+IHtcbiAgcHJpdmF0ZSBfd2lkZ2V0czogTWFwPHN0cmluZywgVD4gPSBuZXcgTWFwKCk7XG5cbiAgZ2V0IHdpZGdldHMoKTogTWFwPHN0cmluZywgVD4ge1xuICAgIHJldHVybiB0aGlzLl93aWRnZXRzO1xuICB9XG4gIHNldCB3aWRnZXRzKHdpZGdldHM6IE1hcDxzdHJpbmcsIFQ+KSB7XG4gICAgdGhpcy5fd2lkZ2V0cyA9IHdpZGdldHM7XG4gIH1cbiAgYWRkV2lkZ2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFQsIGlzRm9ybT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl93aWRnZXRzLnNldChrZXksIHJlZmVyZW5jZSk7XG4gIH1cbiAgcmVtb3ZlV2lkZ2V0KGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fd2lkZ2V0cy5kZWxldGUoa2V5KTtcbiAgfVxuICBjbGVhcldpZGdldHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2lkZ2V0cy5jbGVhcigpO1xuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0cy5nZXQoa2V5KTtcbiAgfVxufVxuIl19
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFJTCxjQUFjLEVBQ2QsdUJBQXVCLEVBR3ZCLHlCQUF5QixFQUd6QixlQUFlLEdBR2hCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLElBQXNCLHVCQUF1QixHQUE3QyxNQUFzQix1QkFBdUI7SUEyRTNDLFlBQ1ksTUFBZ0IsRUFDaEIsSUFBeUMsRUFDckIsUUFBZ0I7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFxQztRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBN0V0QyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFekMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFbkMsaUJBQVksR0FBdUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBb0NyRixtQkFBYyxHQUFvQixFQUFFLENBQUM7UUFFckMsZ0JBQVcsR0FBa0IsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXJFLGNBQWM7UUFDZCxXQUFNLEdBQWtCLElB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Q0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkT3B0aW9ucywgU21hcnRHcmlkLCBTbWFydEdyaWRDb21wb25lbnQgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2dyaWQnO1xuaW1wb3J0IHsgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL3RyZWUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRNb2RlbCxcbiAgQ29tcG9uZW50TW9kZWxDaGFuZ2UsXG4gIERhdGFDaGFuZ2UsXG4gIERhdGFDaGFuZ2VLaW5kLFxuICBTbWFydFZpZXdDb250ZXh0U2VydmljZSxcbiAgVWlBY3Rpb24sXG4gIFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyxcbiAgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSxcbiAgVWlBY3Rpb25Nb2RlbCxcbiAgVWlBY3Rpb25SZXF1ZXN0LFxuICBVaUFjdGlvblNlcnZpY2UsXG4gIFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZSxcbiAgVXNlVWlBY3Rpb24sXG59IGZyb20gJy4uL3ZpZXctY29udGV4dC9wcm9qZWN0cyc7XG5pbXBvcnQgeyBTbWFydEF1dGhlbnRpY2F0aW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vc21hcnQtYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTbWFydFN1YmplY3QgfSBmcm9tICcuL3NtYXJ0LnN1YmplY3QnO1xuaW1wb3J0IHsgU21hcnRGb3JtLCBTbWFydGZvcm1Db21wb25lbnQsIFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTbWFydENvbXBvbmVudEFwaUNsaWVudDxUPiBpbXBsZW1lbnRzIFVzZVVpQWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJvdGVjdGVkIHNlbmREYXRhQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZGV0ZWN0Q2hhbmdlOiBTbWFydFN1YmplY3Q8Q29tcG9uZW50TW9kZWxDaGFuZ2U+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgcHJpdmF0ZSBfdXVpZD86IHN0cmluZztcblxuICBnZXQgdXVpZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl91dWlkO1xuICB9XG4gIHNldCB1dWlkKHV1aWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLnV1aWQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRleHQudW5mb2xsb3codGhpcy51dWlkKTtcbiAgICB9XG4gICAgdGhpcy5fdXVpZCA9IHV1aWQ7XG4gICAgdGhpcy52aWV3Q29udGV4dC5mb2xsb3codGhpcy5fdXVpZCEsIHRoaXMuZGV0ZWN0Q2hhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgX21vZGVsOiBDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZDtcblxuICBnZXQgbW9kZWwoKTogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgfVxuICBzZXQgbW9kZWwobW9kZWw6IENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcblxuICAgIHRoaXMuaW5pdENvbXBvbmVudEJ5TW9kZWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGE/OiBUO1xuXG4gIGdldCBkYXRhKCk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG4gIHNldCBkYXRhKG1vZGVsOiBUIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YSA9IG1vZGVsO1xuICAgIHRoaXMuZGF0YUNoYW5nZWQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHVpQWN0aW9uTW9kZWxzOiBVaUFjdGlvbk1vZGVsW10gPSBbXTtcblxuICBwdWJsaWMgZGF0YUNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcblxuICAvLyBVc2VVaUFjdGlvblxuICBzdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcbiAgcmVTdWJzY3JpYmVUb0NoYW5nZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuXG4gIC8vIEdyaWRcbiAgc21hcnRHcmlkPzogU21hcnRHcmlkO1xuXG4gIC8vIFNlcnZpY2VzXG4gIHByb3RlY3RlZCB2aWV3Q29udGV4dDogU21hcnRWaWV3Q29udGV4dFNlcnZpY2U7XG4gIHByb3RlY3RlZCB1aUFjdGlvblNlcnZpY2U6IFVpQWN0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIHVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U6IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XG5cbiAgLy8gVHJlZVxuICBwcml2YXRlIF9zbWFydFRyZWVTZXJ2aWNlPzogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2U7XG5cbiAgcHVibGljIGdldCBzbWFydFRyZWVTZXJ2aWNlKCk6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc21hcnRUcmVlU2VydmljZTtcbiAgfVxuICBwdWJsaWMgc2V0IHNtYXJ0VHJlZVNlcnZpY2Uoc21hcnRUcmVlU2VydmljZTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5fc21hcnRUcmVlU2VydmljZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcignVGhlIGRlZmF1bHQgdHJlZSBoYXMgYWxyZWFkeSBzZXQgdXAhJyk7XG4gICAgfVxuICAgIHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2UgPSBzbWFydFRyZWVTZXJ2aWNlO1xuICB9XG5cbiAgLy8gQ29udGFpbmVkIFdpZGdldHNcbiAgd2lkZ2V0czogV2lkZ2V0TWFwPFNtYXJ0R3JpZENvbXBvbmVudCB8IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkPiA9IG5ldyBXaWRnZXRNYXAoKTtcblxuICBmb3JtV2lkZ2V0czogV2lkZ2V0TWFwPFNtYXJ0Zm9ybUNvbXBvbmVudCB8IHVuZGVmaW5lZD4gPSBuZXcgV2lkZ2V0TWFwKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdDogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGF1dGg6IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlLFxuICAgIEBJbmplY3QoJ3BhZ2VOYW1lJykgcHJvdGVjdGVkIHBhZ2VOYW1lOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2U6IENvbXBvbmVudE1vZGVsQ2hhbmdlKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZXMoY2hhbmdlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudmlld0NvbnRleHQgPSBpbmplY3QuZ2V0KFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlKTtcblxuICAgIHRoaXMudWlBY3Rpb25TZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvblNlcnZpY2UpO1xuICAgIHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IGluamVjdC5nZXQoVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSk7XG4gIH1cblxuICBfbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ydW4oKTtcbiAgfVxuICBfbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52aWV3Q29udGV4dC51bmZvbGxvdyh0aGlzLnV1aWQhKTtcbiAgICB0aGlzLndpZGdldHMuY2xlYXJXaWRnZXRzKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGluaXRDb21wb25lbnRCeU1vZGVsKCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgICB0aGlzLmluaXRBY3Rpb25zKCk7XG5cbiAgICAvLyBUT0RPOiBsYXlvdXQsIHZhbHVlU2V0LCB3aWRnZXRzXG4gIH1cblxuICBpbml0RGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlbD8uZGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5tb2RlbD8uZGF0YSBhcyBhbnk7XG4gICAgfVxuICB9XG5cbiAgaW5pdEFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZWw/LmFjdGlvbnMpIHtcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLm1vZGVsPy5hY3Rpb25zLm1hcCgodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLFxuICAgICAgICAgIHVpQWN0aW9uLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcnVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dGguYmZmQXBpc0hhdmVCZWVuU2V0VXApIHtcbiAgICAgIHRoaXMubG9hZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dGguaGVhZGVyc1VwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lKTtcbiAgICB0aGlzLm1vZGVsID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5sb2FkKHRoaXMudXVpZCk7XG4gIH1cblxuICAvLyNyZWdpb24gVXNlVWlBY3Rpb25cbiAgZ2V0QWRkaXRpb25hbFBhcmFtcyh1aUFjdGlvbjogVWlBY3Rpb24pOiBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JUZXh0QXJlYTogJycsXG4gICAgICBmb3JUZXh0RmllbGQ6ICcnLFxuICAgIH07XG4gIH1cbiAgZ2V0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHBlcmZvcm1VaUFjdGlvblJlcXVlc3QoXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXG4gICAgd2lkZ2V0SWQ/OiBzdHJpbmcsXG4gICAgbm9kZUlkPzogc3RyaW5nXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKHdpZGdldElkICYmIG5vZGVJZCkge1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0QWN0aW9uKHRoaXMudXVpZCEsIHdpZGdldElkLCBub2RlSWQsIHVpQWN0aW9uUmVxdWVzdCk7XG4gICAgfSBlbHNlIGlmICh3aWRnZXRJZCkge1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbih0aGlzLnV1aWQhLCB3aWRnZXRJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtQWN0aW9uKHRoaXMudXVpZCEsIHVpQWN0aW9uUmVxdWVzdCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3BlY2lmaWNEZW1hbmRzQXN5bmNocm9ub3VzbHkoXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XG4gICk6IFByb21pc2U8VWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseSBtZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHB1YmxpYyBhZGRHcmlkKFxuICAgIHNtYXJ0R3JpZDogU21hcnRHcmlkLFxuICAgIG9wdGlvbnM6IEdyaWRPcHRpb25zLFxuICAgIHVzZUFzRGVmYXVsdEdyaWQ/OiBib29sZWFuLFxuICAgIGNvbXBvbmVudFJlZmVyZW5jZT86IFNtYXJ0R3JpZENvbXBvbmVudFxuICApOiBTbWFydEdyaWQge1xuICAgIHNtYXJ0R3JpZC5vcHRpb25zID0gb3B0aW9ucztcbiAgICBzbWFydEdyaWQudWlBY3Rpb25TZXJ2aWNlID0gdGhpcy51aUFjdGlvblNlcnZpY2U7XG4gICAgc21hcnRHcmlkLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgPSB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XG4gICAgc21hcnRHcmlkLnNlcnZpY2VUb1VzZSA9IHRoaXM7XG4gICAgc21hcnRHcmlkLnZpZXdDb250ZXh0U2VydmljZSA9IHRoaXMudmlld0NvbnRleHQ7XG5cbiAgICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHNtYXJ0R3JpZC5ncmlkSWRlbnRpZmllciwgY29tcG9uZW50UmVmZXJlbmNlKTtcblxuICAgIGlmICh1c2VBc0RlZmF1bHRHcmlkKSB7XG4gICAgICB0aGlzLnNtYXJ0R3JpZCA9IHNtYXJ0R3JpZDtcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0R3JpZDtcbiAgICB9XG5cbiAgICByZXR1cm4gc21hcnRHcmlkO1xuICB9XG5cbiAgcHVibGljIGFkZEZvcm0oXG4gICAgc21hcnRGb3JtSWQ6IHN0cmluZyxcbiAgICBzbWFydEZvcm06IFNtYXJ0Rm9ybSxcbiAgICBjb21wb25lbnRSZWZlcmVuY2U/OiBTbWFydGZvcm1Db21wb25lbnRcbiAgKTogU21hcnRGb3JtIHtcbiAgICB0aGlzLmZvcm1XaWRnZXRzLmFkZFdpZGdldChzbWFydEZvcm1JZCwgY29tcG9uZW50UmVmZXJlbmNlKTtcblxuICAgIGlmICh0aGlzLnNlbmREYXRhQ2hhbmdlcyAmJiBjb21wb25lbnRSZWZlcmVuY2UpIHtcbiAgICAgIHNtYXJ0Rm9ybS51c2VPblZhbHVlQ2hhbmdlRXZlbnQgPSB0cnVlO1xuXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2Uuc29waGlzdGljYXRlZFZhbHVlQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlQ2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlcyh2YWx1ZUNoYW5nZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzbWFydEZvcm07XG4gIH1cblxuICBwdWJsaWMgc2V0VXBEZWZhdWx0VHJlZSh0cmVlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc21hcnRUcmVlU2VydmljZSA9IG5ldyBTbWFydHRyZWVHZW5lcmljU2VydmljZSh0aGlzLmluamVjdCwgdGhpcy5wYWdlTmFtZSwgdHJlZUlkKTtcbiAgICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHRyZWVJZCwgdGhpcy5zbWFydFRyZWVTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUcmVlU2VydmljZSh0cmVlSWQ6IHN0cmluZyk6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHtcbiAgICBjb25zdCB0cmVlU2VydmljZSA9IG5ldyBTbWFydHRyZWVHZW5lcmljU2VydmljZSh0aGlzLmluamVjdCwgdGhpcy5wYWdlTmFtZSwgdHJlZUlkKTtcbiAgICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHRyZWVJZCwgdHJlZVNlcnZpY2UpO1xuXG4gICAgcmV0dXJuIHRyZWVTZXJ2aWNlO1xuICB9XG5cbiAgLy8gI3JlZ2lvbiBoYW5kbGUgY2hhbmdlc1xuICBwcml2YXRlIGhhbmRsZVZhbHVlQ2hhbmdlcyh2YWx1ZUNoYW5nZTogU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlKTogdm9pZCB7XG4gICAgbGV0IGRhdGFDaGFuZ2U6IERhdGFDaGFuZ2U7XG4gICAgaWYgKHZhbHVlQ2hhbmdlLmtleS5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSB2YWx1ZUNoYW5nZS5rZXkuc3BsaXQoJy4nKVswXTtcbiAgICAgIGNvbnN0IHZhbHVlS2V5ID0gdmFsdWVDaGFuZ2Uua2V5LnNwbGl0KCcuJylbMV07XG4gICAgICBkYXRhQ2hhbmdlID0ge1xuICAgICAgICBraW5kOiB2YWx1ZUNoYW5nZS5raW5kID09PSAnYmFzaWMnID8gRGF0YUNoYW5nZUtpbmQuV2lkZ2V0IDogRGF0YUNoYW5nZUtpbmQuU2VsZWN0aW9uLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHZhbHVlczogW1t2YWx1ZUtleSwgdmFsdWVDaGFuZ2UudmFsdWVdXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFDaGFuZ2UgPSB7XG4gICAgICAgIGtpbmQ6IHZhbHVlQ2hhbmdlLmtpbmQgPT09ICdiYXNpYycgPyBEYXRhQ2hhbmdlS2luZC5XaWRnZXQgOiBEYXRhQ2hhbmdlS2luZC5TZWxlY3Rpb24sXG4gICAgICAgIHNvdXJjZTogdmFsdWVDaGFuZ2Uua2V5LFxuICAgICAgICB2YWx1ZXM6IFtbdmFsdWVDaGFuZ2Uua2V5LCB2YWx1ZUNoYW5nZS52YWx1ZV1dLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0LmRhdGFDaGFuZ2VkKHRoaXMudXVpZCEsIGRhdGFDaGFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKGNoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlLmNoYW5nZWRXaWRnZXRzKSB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZVdpZGdldHMoY2hhbmdlLmNoYW5nZWRXaWRnZXRzKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlLmNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSBjaGFuZ2UuY2hhbmdlcztcbiAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpLm1hcCgoY2hhbmdlS2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZUtleS5zdGFydHNXaXRoKCdkYXRhLicpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXRhQ2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ2xheW91dHMuJykgJiYgdGhpcy5tb2RlbD8ubGF5b3V0cykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlTGF5b3V0Q2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ3ZhbHVlU2V0cy4nKSAmJiB0aGlzLm1vZGVsPy52YWx1ZVNldHMpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlU2V0Q2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnYWN0aW9ucycpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUFjdGlvbkNoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleSA9PT0gJ2NvbnN0cmFpbnRzJykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQ29uc3RyYWludENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZS5jaGFuZ2VkV2lkZ2V0cyAmJiAhY2hhbmdlLmNoYW5nZXMgJiYgY2hhbmdlLnZhbHVlKSB7XG4gICAgICB0aGlzLm1vZGVsID0gY2hhbmdlLnZhbHVlIGFzIENvbXBvbmVudE1vZGVsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2VkV2lkZ2V0czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjaGFuZ2VkV2lkZ2V0cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy53aWRnZXRzLmdldChrZXkpO1xuXG4gICAgICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgU21hcnRHcmlkQ29tcG9uZW50KSB7XG4gICAgICAgIHJlZmVyZW5jZS5yZWZyZXNoKCk7XG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlKSB7XG4gICAgICAgIHJlZmVyZW5jZS5pbml0aWFsaXplKCk7XG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFByb3ZpZGVkIHJlZmVyZW5jZSBmb3IgJHtrZXl9IGlzIHVuZGVmaW5lZC5gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVEZWVwbHkobW9kZWw6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCBzcGxpdHRlZEtleXMgPSBrZXkuc3BsaXQoJy4nKTtcblxuICAgIGxldCBkZWVwTW9kZWw6IGFueVtdID0gW21vZGVsXTtcbiAgICBsZXQgdGVtcE1vZGVsOiBhbnk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3BsaXR0ZWRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdGVtcE1vZGVsID0gZGVlcE1vZGVsW2luZGV4XTtcblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ251bWJlcicgJiZcbiAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBkZWVwTW9kZWwucHVzaCh0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPT09IHNwbGl0dGVkS2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEYXRhQ2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZURlZXBseSh0aGlzLm1vZGVsLCBjaGFuZ2VLZXksIGNoYW5nZXNbY2hhbmdlS2V5XSk7XG5cbiAgICB0aGlzLmZvcm1XaWRnZXRzLndpZGdldHMuZm9yRWFjaChcbiAgICAgIChmb3JtQ29tcG9uZW50OiBTbWFydGZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChmb3JtQ29tcG9uZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBQcm92aWRlZCBmb3JtIHJlZmVyZW5jZSBmb3IgJHtrZXl9IGlzIHVuZGVmaW5lZC5gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtQ29tcG9uZW50LnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBsYXlvdXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcbiAgICB0aGlzLm1vZGVsIS5sYXlvdXRzW2xheW91dEtleV0gPSBjaGFuZ2VzW2NoYW5nZUtleV07XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbHVlU2V0Q2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlU2V0S2V5ID0gY2hhbmdlS2V5LnNwbGl0KCcuJylbMV07XG4gICAgdGhpcy5tb2RlbCEudmFsdWVTZXRzIVt2YWx1ZVNldEtleV0gPSBjaGFuZ2VzW2NoYW5nZUtleV07XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFjdGlvbkNoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwhLmFjdGlvbnMgPSBjaGFuZ2VzW2NoYW5nZUtleV07XG4gICAgdGhpcy5pbml0QWN0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb25zdHJhaW50Q2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCEuY29uc3RyYWludHMgPSBjaGFuZ2VzW2NoYW5nZUtleV07XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uXG59XG5cbmV4cG9ydCBjbGFzcyBXaWRnZXRNYXA8VD4ge1xuICBwcml2YXRlIF93aWRnZXRzOiBNYXA8c3RyaW5nLCBUPiA9IG5ldyBNYXAoKTtcblxuICBnZXQgd2lkZ2V0cygpOiBNYXA8c3RyaW5nLCBUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldHM7XG4gIH1cbiAgc2V0IHdpZGdldHMod2lkZ2V0czogTWFwPHN0cmluZywgVD4pIHtcbiAgICB0aGlzLl93aWRnZXRzID0gd2lkZ2V0cztcbiAgfVxuICBhZGRXaWRnZXQoa2V5OiBzdHJpbmcsIHJlZmVyZW5jZTogVCwgaXNGb3JtPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3dpZGdldHMuc2V0KGtleSwgcmVmZXJlbmNlKTtcbiAgfVxuICByZW1vdmVXaWRnZXQoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl93aWRnZXRzLmRlbGV0ZShrZXkpO1xuICB9XG4gIGNsZWFyV2lkZ2V0cygpOiB2b2lkIHtcbiAgICB0aGlzLl93aWRnZXRzLmNsZWFyKCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXRzLmdldChrZXkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
2
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
3
3
|
import { ViewState, ViewType, } from './api';
|
|
4
4
|
import { MessageDialogComponent } from './message-dialog/message-dialog.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -8,11 +8,12 @@ import * as i2 from "../session/smart-session.service";
|
|
|
8
8
|
import * as i3 from "@smartbit4all/navigation";
|
|
9
9
|
import * as i4 from "@smartbit4all/dialog";
|
|
10
10
|
export class SmartViewContextService {
|
|
11
|
-
constructor(view, session, navigation, dialog) {
|
|
11
|
+
constructor(view, session, navigation, dialog, apiQueueService) {
|
|
12
12
|
this.view = view;
|
|
13
13
|
this.session = session;
|
|
14
14
|
this.navigation = navigation;
|
|
15
15
|
this.dialog = dialog;
|
|
16
|
+
this.apiQueueService = apiQueueService;
|
|
16
17
|
this.tabIdName = 'viewContextUuid';
|
|
17
18
|
this.tabIdhttpHeaderName = 'viewContextUuid';
|
|
18
19
|
this.viewHandlers = new Array();
|
|
@@ -309,13 +310,71 @@ export class SmartViewContextService {
|
|
|
309
310
|
return await this.view.downloadItem(uuid, item).toPromise();
|
|
310
311
|
}
|
|
311
312
|
async performAction(uuid, uiActionRequest) {
|
|
312
|
-
|
|
313
|
+
const isCompleted = new Subject();
|
|
314
|
+
this.apiQueueService.addToQueue({
|
|
315
|
+
callback: this._performAction.bind(this),
|
|
316
|
+
config: {
|
|
317
|
+
uuid,
|
|
318
|
+
uiActionRequest,
|
|
319
|
+
},
|
|
320
|
+
isCompleted,
|
|
321
|
+
});
|
|
322
|
+
return await isCompleted.toPromise();
|
|
313
323
|
}
|
|
314
324
|
async performWidgetAction(uuid, widgetId, nodeId, uiActionRequest) {
|
|
315
|
-
|
|
325
|
+
const isCompleted = new Subject();
|
|
326
|
+
this.apiQueueService.addToQueue({
|
|
327
|
+
callback: this._performWidgetAction.bind(this),
|
|
328
|
+
config: {
|
|
329
|
+
uuid,
|
|
330
|
+
widgetId,
|
|
331
|
+
nodeId,
|
|
332
|
+
uiActionRequest,
|
|
333
|
+
},
|
|
334
|
+
isCompleted,
|
|
335
|
+
});
|
|
336
|
+
return await isCompleted.toPromise();
|
|
316
337
|
}
|
|
317
338
|
async performWidgetMainAction(uuid, widgetId, uiActionRequest) {
|
|
318
|
-
|
|
339
|
+
const isCompleted = new Subject();
|
|
340
|
+
this.apiQueueService.addToQueue({
|
|
341
|
+
callback: this._performWidgetMainAction.bind(this),
|
|
342
|
+
config: {
|
|
343
|
+
uuid,
|
|
344
|
+
widgetId,
|
|
345
|
+
uiActionRequest,
|
|
346
|
+
},
|
|
347
|
+
isCompleted,
|
|
348
|
+
});
|
|
349
|
+
return await isCompleted.toPromise();
|
|
350
|
+
}
|
|
351
|
+
async dataChanged(uuid, dataChange) {
|
|
352
|
+
const isCompleted = new Subject();
|
|
353
|
+
this.apiQueueService.addToQueue({
|
|
354
|
+
callback: this._dataChanged.bind(this),
|
|
355
|
+
config: {
|
|
356
|
+
uuid,
|
|
357
|
+
dataChange,
|
|
358
|
+
},
|
|
359
|
+
isCompleted,
|
|
360
|
+
});
|
|
361
|
+
return await isCompleted.toPromise();
|
|
362
|
+
}
|
|
363
|
+
async _performAction(config) {
|
|
364
|
+
return await this.handlePerformActionResponse(await this.view.performAction(config.uuid, config.uiActionRequest).toPromise());
|
|
365
|
+
}
|
|
366
|
+
async _performWidgetAction(config) {
|
|
367
|
+
return await this.handlePerformActionResponse(await this.view
|
|
368
|
+
.performWidgetAction(config.uuid, config.widgetId, config.nodeId, config.uiActionRequest)
|
|
369
|
+
.toPromise());
|
|
370
|
+
}
|
|
371
|
+
async _performWidgetMainAction(config) {
|
|
372
|
+
return await this.handlePerformActionResponse(await this.view
|
|
373
|
+
.performWidgetMainAction(config.uuid, config.widgetId, config.uiActionRequest)
|
|
374
|
+
.toPromise());
|
|
375
|
+
}
|
|
376
|
+
async _dataChanged(config) {
|
|
377
|
+
return await this.handlePerformActionResponse(await this.view.dataChanged(config.uuid, config.dataChange).toPromise());
|
|
319
378
|
}
|
|
320
379
|
async handlePerformActionResponse(viewContextChange) {
|
|
321
380
|
this.viewContext = viewContextChange?.viewContext;
|
|
@@ -336,13 +395,54 @@ export class SmartViewContextService {
|
|
|
336
395
|
return await this.view.getComponentModel(uuid).toPromise();
|
|
337
396
|
}
|
|
338
397
|
}
|
|
339
|
-
SmartViewContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, deps: [{ token: i1.ViewService }, { token: i2.SmartSessionService }, { token: i3.SmartNavigationService }, { token: i4.SmartdialogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
398
|
+
SmartViewContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, deps: [{ token: i1.ViewService }, { token: i2.SmartSessionService }, { token: i3.SmartNavigationService }, { token: i4.SmartdialogService }, { token: ApiQueueService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
340
399
|
SmartViewContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, providedIn: 'root' });
|
|
341
400
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, decorators: [{
|
|
342
401
|
type: Injectable,
|
|
343
402
|
args: [{
|
|
344
403
|
providedIn: 'root',
|
|
345
404
|
}]
|
|
346
|
-
}], ctorParameters: function () { return [{ type: i1.ViewService }, { type: i2.SmartSessionService }, { type: i3.SmartNavigationService }, { type: i4.SmartdialogService }]; } });
|
|
405
|
+
}], ctorParameters: function () { return [{ type: i1.ViewService }, { type: i2.SmartSessionService }, { type: i3.SmartNavigationService }, { type: i4.SmartdialogService }, { type: ApiQueueService }]; } });
|
|
347
406
|
export const IS_ASYNC_PARAM_NAME = 'isAsync';
|
|
348
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFhTCxTQUFTLEVBQ1QsUUFBUSxHQUNULE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7OztBQVluRixNQUFNLE9BQU8sdUJBQXVCO0lBeUNsQyxZQUNVLElBQWlCLEVBQ2pCLE9BQTRCLEVBQzVCLFVBQWtDLEVBQ2xDLE1BQTBCO1FBSDFCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUE1QzVCLGNBQVMsR0FBVyxpQkFBaUIsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBVyxpQkFBaUIsQ0FBQztRQUloRCxpQkFBWSxHQUFpQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pELG9CQUFlLEdBQWtCLElBQUksS0FBSyxFQUFFLENBQUM7UUFFOUMsNkJBQXdCLEdBQW9CLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUQsNkJBQXdCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFJeEQsa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFbkMsZUFBVSxHQUF5QixFQUFFLENBQUM7UUFNdkMsb0JBQWUsR0FBbUMsSUFBSSxHQUFHLEVBQUUs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emFVLHVCQUF1Qjt5SEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUE2YUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU21hcnRkaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9kaWFsb2cnO1xuaW1wb3J0IHsgU21hcnROYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTbWFydFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtY2xpZW50L3NtYXJ0LnN1YmplY3QnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50TW9kZWwsXG4gIENvbXBvbmVudE1vZGVsQ2hhbmdlLFxuICBNZXNzYWdlRGF0YSxcbiAgTWVzc2FnZVJlc3VsdCxcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxuICBVaUFjdGlvblJlcXVlc3QsXG4gIFZpZXdDb25zdHJhaW50LFxuICBWaWV3Q29udGV4dENoYW5nZSxcbiAgVmlld0NvbnRleHREYXRhLFxuICBWaWV3Q29udGV4dFVwZGF0ZSxcbiAgVmlld0RhdGEsXG4gIFZpZXdTZXJ2aWNlLFxuICBWaWV3U3RhdGUsXG4gIFZpZXdUeXBlLFxufSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWRpYWxvZy9tZXNzYWdlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU21hcnRUcmFuc2xhdGVTZXJ2aWNlLFxuICBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IsXG4gIFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMsXG4gIFNtYXJ0Vmlld0RpYWxvZ1JlZixcbiAgU21hcnRWaWV3SGFuZGxlck1vZGVsLFxufSBmcm9tICcuL3NtYXJ0LXZpZXctY29udGV4dC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB7XG4gIHByaXZhdGUgdGFiSWROYW1lOiBzdHJpbmcgPSAndmlld0NvbnRleHRVdWlkJztcbiAgcHJpdmF0ZSB0YWJJZGh0dHBIZWFkZXJOYW1lOiBzdHJpbmcgPSAndmlld0NvbnRleHRVdWlkJztcbiAgcHVibGljIG1lc3NhZ2VEaWFsb2duYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdXJsPzogc3RyaW5nO1xuICBwcml2YXRlIHZpZXdDb250ZXh0PzogVmlld0NvbnRleHREYXRhO1xuICBwcml2YXRlIHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPiA9IG5ldyBBcnJheSgpO1xuICBwcml2YXRlIG9wZW5lZFZpZXdVdWlkczogQXJyYXk8c3RyaW5nPiA9IG5ldyBBcnJheSgpO1xuXG4gIHB1YmxpYyB1dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyB2aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBzbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzPzogU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycztcblxuICBwdWJsaWMgb3BlblNtYXJ0TGluazogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpc09wZW5pbmdTbWFydExpbms6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGRpYWxvZ1JlZnM6IFNtYXJ0Vmlld0RpYWxvZ1JlZltdID0gW107XG5cbiAgcHJpdmF0ZSBhY3Rpb25EZXNjcmlwdG9ycz86IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj47XG5cbiAgcHVibGljIGNvbW1vbkZlZWRiYWNrVGV4dD86IHN0cmluZztcblxuICBwdWJsaWMgc21hcnRBcGlDbGllbnRzOiBNYXA8c3RyaW5nLCBTbWFydFN1YmplY3Q8YW55Pj4gPSBuZXcgTWFwKCk7XG5cbiAgcHVibGljIHNldCB0cmFuc2xhdGVTZXJ2aWNlKHRyYW5zbGF0ZVNlcnZpY2U6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQubmV4dCgpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJhbnNsYXRlU2VydmljZSgpOiBTbWFydFRyYW5zbGF0ZVNlcnZpY2UgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl90cmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U/OiBTbWFydFRyYW5zbGF0ZVNlcnZpY2U7XG4gIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBTbWFydE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBTbWFydGRpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBmb2xsb3codXVpZDogc3RyaW5nLCBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5zbWFydEFwaUNsaWVudHMuc2V0KHV1aWQsIGRldGVjdENoYW5nZSk7XG4gIH1cbiAgcHVibGljIHVuZm9sbG93KHV1aWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc21hcnRBcGlDbGllbnRzLmRlbGV0ZSh1dWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb25EZXNjcmlwdG9ycyhhY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPik6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uRGVzY3JpcHRvcnMgPSBhY3Rpb25EZXNjcmlwdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY3Rpb25EZXNjcmlwdG9ycygpOiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuYWN0aW9uRGVzY3JpcHRvcnMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGFjdGlvbiBkZXNjcmlwdG9ycyBoYXMgYmVlbiBzZXQgdG8gVmlld0NvbnRleHQuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFjdGlvbkRlc2NyaXB0b3JzO1xuICB9XG5cbiAgcHVibGljIHNldFZpZXdIYW5kbGVycyh2aWV3SGFuZGxlcnM6IEFycmF5PFNtYXJ0Vmlld0hhbmRsZXJNb2RlbD4pOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdIYW5kbGVycyA9IHZpZXdIYW5kbGVycztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWaWV3QXBpRXJyb3JzKHZpZXdBcGlFcnJvcnM6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpOiB2b2lkIHtcbiAgICB0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMgPSB2aWV3QXBpRXJyb3JzO1xuICB9XG5cbiAgcHVibGljIHNldE1lc3NhZ2VEaWFsb2dOYW1lKG1lc3NhZ2VEaWFsb2dOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VEaWFsb2duYW1lID0gbWVzc2FnZURpYWxvZ05hbWU7XG4gICAgdGhpcy52aWV3SGFuZGxlcnMucHVzaCh7XG4gICAgICBuYW1lOiBtZXNzYWdlRGlhbG9nTmFtZSxcbiAgICAgIGNvbXBvbmVudDogTWVzc2FnZURpYWxvZ0NvbXBvbmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VXBVcmxGb3JWaWV3U2VydmljZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcuY29uZmlndXJhdGlvbi5iYXNlUGF0aCA9IHRoaXMudXJsO1xuICB9XG5cbiAgcHVibGljIHNldFVybCh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudXJsID0gdXJsICsgJy92aWV3JztcbiAgICB0aGlzLnNldFVwVXJsRm9yVmlld1NlcnZpY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbmRTeW5jVmlld0NvbnRleHQodXVpZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdXVpZCkge1xuICAgICAgdXVpZCA9IHRoaXMuZ2V0VXVpZE9mUGFnZSh0aGlzLnRhYklkTmFtZSk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNWaWV3KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnRleHQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LmdldFZpZXdDb250ZXh0KHV1aWQpLnRvUHJvbWlzZSgpO1xuICAgIGlmICghdGhpcy52aWV3Q29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3Q29udGV4dCBkb2VzIG5vdCBleGlzdCB3aXRoIHRoZSBnaXZlbiB1dWlkLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWaWV3Q29udGV4dERhdGFCeVBhZ2VOYW1lKHBhZ2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdEYXRhPiB7XG4gICAgaWYgKCF0aGlzLnZpZXdDb250ZXh0KSB7XG4gICAgICBsZXQgdmlld0NvbnRleHRVdWlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnRhYklkTmFtZSk7XG4gICAgICBpZiAoIXZpZXdDb250ZXh0VXVpZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY29udGV4dCBpcyBub3QgaW5pdGlhbGl6ZWQhJyk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmdldFZpZXdDb250ZXh0KHZpZXdDb250ZXh0VXVpZCEpO1xuICAgIH1cbiAgICBsZXQgcGFnZVV1aWQgPSB0aGlzLmdldFV1aWRPZlBhZ2UocGFnZU5hbWUpO1xuXG4gICAgbGV0IHZpZXdDb250ZXh0QnlQYWdlTmFtZSA9IHRoaXMudmlld0NvbnRleHQ/LnZpZXdzLmZpbmQoKHZpZXcpID0+IHZpZXcudXVpZCA9PT0gcGFnZVV1aWQpO1xuICAgIGlmICghdmlld0NvbnRleHRCeVBhZ2VOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBWaWV3RGF0YSBvZiAke3BhZ2VOYW1lfSBpcyBub3QgZm91bmQhYCk7XG4gICAgfVxuICAgIHJldHVybiB2aWV3Q29udGV4dEJ5UGFnZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlVmlld0NvbnRleHQoXG4gICAgdmlld0NvbnRleHRVcGRhdGU6IFZpZXdDb250ZXh0VXBkYXRlXG4gICk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhIHwgdW5kZWZpbmVkPiB7XG4gICAgdGhpcy52aWV3Q29udGV4dCA9IGF3YWl0IHRoaXMudmlldy51cGRhdGVWaWV3Q29udGV4dCh2aWV3Q29udGV4dFVwZGF0ZSkudG9Qcm9taXNlKCk7XG5cbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJJZCh0YWJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnRhYklkTmFtZSwgdGFiSWQpO1xuICAgIHRoaXMuc2Vzc2lvbi5hZGRIZWFkZXJQYXJhbSh7XG4gICAgICBoZWFkZXJOYW1lOiB0aGlzLnRhYklkaHR0cEhlYWRlck5hbWUsXG4gICAgICB2YWx1ZTogdGFiSWQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RhcnRWaWV3Q29udGV4dCgpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xuICAgIHRoaXMuY2xlYXJTZXNzaW9uU3RvcmFnZSgpO1xuXG4gICAgbGV0IG5ld1ZpZXdDb250ZXh0OiBWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQgPSBhd2FpdCB0aGlzLnZpZXdcbiAgICAgIC5jcmVhdGVWaWV3Q29udGV4dCgpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gICAgaWYgKCFuZXdWaWV3Q29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBWaWV3Q29udGV4dCB3YXMgY3JlYXRlZCcpO1xuICAgIH1cbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gbmV3Vmlld0NvbnRleHQ7XG5cbiAgICB0aGlzLnNldFRhYklkKG5ld1ZpZXdDb250ZXh0LnV1aWQhKTtcblxuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUodXVpZD86IHN0cmluZyk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhPiB7XG4gICAgaWYgKHRoaXMudmlld0hhbmRsZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoZXJlIGFyZW4ndCBhbnkgdmlld0hhbmRsZXJzIGluIFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlISBQcm92aWRlIHNvbWUgdG8gdXNlIGl0cyBmdW5jdGlvbnMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbWVzc2FnZURpYWxvZ05hbWUgcHJvdmlkZWQgYnkgdGhlIGJhY2tlbmQgaGFzIG5vdCBiZWVuIHNldC4nKTtcbiAgICB9XG4gICAgaWYgKHV1aWQpIHtcbiAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB0aGlzLnNlc3Npb24uaGVhZGVyc1VwZGF0ZWQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcbiAgICAgICAgICB0aGlzLnNldFRhYklkKHV1aWQhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFZpZXdDb250ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZXRUYWJJZCh1dWlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5zdGFydFZpZXdDb250ZXh0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQhO1xuICB9XG5cbiAgcHVibGljIG9wZW5WaWV3KHZpZXc6IFZpZXdEYXRhKTogdm9pZCB7XG4gICAgbGV0IHZpZXdIYW5kbGVyOiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgfCB1bmRlZmluZWQgPSB0aGlzLnZpZXdIYW5kbGVycy5maW5kKFxuICAgICAgKGhhbmRsZXIpID0+IGhhbmRsZXIubmFtZSA9PT0gdmlldy52aWV3TmFtZVxuICAgICk7XG5cbiAgICBpZiAoIXZpZXdIYW5kbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3YXMgbm90IGZvdW5kIGJ5IHZpZXcgbmFtZTogJHt2aWV3LnZpZXdOYW1lfWApO1xuICAgIH1cblxuICAgIGlmICh2aWV3LnR5cGUgPT09IFZpZXdUeXBlLkRpYWxvZykge1xuICAgICAgaWYgKCF2aWV3SGFuZGxlci5jb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb21wb25lbnQgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbkNvbXBvbmVudEFzRGlhbG9nKHZpZXdIYW5kbGVyLmNvbXBvbmVudCwgdmlld0hhbmRsZXIubmFtZSk7XG4gICAgICBkaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICAgIC8vIGlmICh2aWV3LnZpZXdOYW1lID09PSB0aGlzLm1lc3NhZ2VEaWFsb2duYW1lKSB7XG4gICAgICAvLyAgIGlmICh2aWV3Lm1lc3NhZ2U/Lm9wdGlvbnMgJiYgdmlldy5tZXNzYWdlLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIHRoaXMuZGlhbG9nUmVmcy5wdXNoKHtcbiAgICAgICAgdXVpZDogdmlldy51dWlkLFxuICAgICAgICBkaWFsb2dSZWYsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuTm9ybWFsKSB7XG4gICAgICBpZiAodmlld0hhbmRsZXIucm91dGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRlIGlzIHVuZGVmaW5lZCBpbiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2l0aCBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XG4gICAgICB9XG4gICAgICB0aGlzLm5hdmlnYXRpb24ubmF2aWdhdGVUbyh2aWV3SGFuZGxlci5yb3V0ZS5zcGxpdCgnLycpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdHlwZSBvZiB0aGUgdmlldyBhbmQgaXRzIHZpZXdIYW5kbGVyIGlzIG5vdCB0aGUgc2FtZSEnKTtcbiAgICB9XG5cbiAgICB2aWV3LnN0YXRlID0gVmlld1N0YXRlLk9wZW5lZDtcblxuICAgIHRoaXMub3BlbmVkVmlld1V1aWRzLnB1c2godmlldy51dWlkKTtcblxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odmlldy52aWV3TmFtZSwgdmlldy51dWlkKTtcbiAgICB0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZC5uZXh0KHZpZXcudmlld05hbWUpO1xuXG4gICAgdGhpcy51cGRhdGVWaWV3Q29udGV4dCh7XG4gICAgICB1cGRhdGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZTogVmlld1N0YXRlLk9wZW5lZCxcbiAgICAgICAgICB1dWlkOiB2aWV3LnV1aWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXVpZDogdGhpcy52aWV3Q29udGV4dD8udXVpZCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVZpZXcodmlldzogVmlld0RhdGEpOiB2b2lkIHtcbiAgICBsZXQgdmlld0hhbmRsZXI6IFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB8IHVuZGVmaW5lZCA9IHRoaXMudmlld0hhbmRsZXJzLmZpbmQoXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXG4gICAgKTtcblxuICAgIGlmICghdmlld0hhbmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU21hcnRWaWV3SGFuZGxlck1vZGVsIHdhcyBub3QgZm91bmQgYnkgdmlldyBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuRGlhbG9nKSB7XG4gICAgICBsZXQgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dSZWZzLmZpbmQoXG4gICAgICAgIChkaWFsb2dSZWY6IFNtYXJ0Vmlld0RpYWxvZ1JlZikgPT4gZGlhbG9nUmVmLnV1aWQgPT09IHZpZXcudXVpZFxuICAgICAgKTtcbiAgICAgIGlmIChkaWFsb2dSZWYpIHtcbiAgICAgICAgZGlhbG9nUmVmLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmRpYWxvZ1JlZnMuaW5kZXhPZihkaWFsb2dSZWYpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nUmVmIGlzIG5vdCBmb3VuZCBieSB1dWlkLicpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5Ob3JtYWwpIHtcbiAgICAgIC8vIFRPRE86IGNsb3NlIG5vcm1hbCBwYWdlPz8/XG4gICAgICAvLyB0aGlzLm5hdmlnYXRpb24ubmF2aWdhdGVUbyh2aWV3SGFuZGxlci5yb3V0ZS5zcGxpdChcIi9cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlIG9mIHRoZSB2aWV3IGFuZCBpdHMgdmlld0hhbmRsZXIgaXMgbm90IHRoZSBzYW1lIScpO1xuICAgIH1cblxuICAgIHZpZXcuc3RhdGUgPSBWaWV3U3RhdGUuQ2xvc2VkO1xuXG4gICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMuc2xpY2UodGhpcy5vcGVuZWRWaWV3VXVpZHMuaW5kZXhPZih2aWV3LnV1aWQpLCAxKTtcblxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odmlldy52aWV3TmFtZSk7XG5cbiAgICB0aGlzLnVwZGF0ZVZpZXdDb250ZXh0KHtcbiAgICAgIHVwZGF0ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlOiBWaWV3U3RhdGUuQ2xvc2VkLFxuICAgICAgICAgIHV1aWQ6IHZpZXcudXVpZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1dWlkOiB0aGlzLnZpZXdDb250ZXh0Py51dWlkLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc3RvcmVWaWV3cyh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCk7XG4gICAgfVxuICAgIHRoaXMudmlld0NvbnRleHQhLnZpZXdzLm1hcCgodmlldzogVmlld0RhdGEpID0+IHtcbiAgICAgIHRoaXMub3BlblZpZXcodmlldyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3luY1ZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3Q29udGV4dD8udmlld3MubWFwKCh2aWV3OiBWaWV3RGF0YSkgPT4ge1xuICAgICAgc3dpdGNoICh2aWV3LnN0YXRlKSB7XG4gICAgICAgIGNhc2UgVmlld1N0YXRlLlRvT3BlbjpcbiAgICAgICAgICB0aGlzLm9wZW5WaWV3KHZpZXcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFZpZXdTdGF0ZS5Ub0Nsb3NlOlxuICAgICAgICAgIHRoaXMuY2xvc2VWaWV3KHZpZXcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudmlld0NvbnRleHRIYXNCZWVuU3luY2VkLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVdWlkT2ZQYWdlKHBhZ2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB1dWlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShwYWdlTmFtZSk7XG4gICAgaWYgKCF1dWlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSB1dWlkIG9mICR7cGFnZU5hbWV9IGlzIG5vdCBhdmFpbGFibGUuYCk7XG4gICAgfVxuICAgIHJldHVybiB1dWlkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1lc3NhZ2UobWVzc2FnZURhdGE6IE1lc3NhZ2VEYXRhLCBtZXNzYWdlUmVzdWx0OiBNZXNzYWdlUmVzdWx0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy52aWV3XG4gICAgICAubWVzc2FnZShtZXNzYWdlRGF0YS52aWV3VXVpZCA/PyAnJywgbWVzc2FnZURhdGEudXVpZCwgbWVzc2FnZVJlc3VsdClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgICBhd2FpdCB0aGlzLmdldEFuZFN5bmNWaWV3Q29udGV4dCgpO1xuICB9XG5cbiAgcHVibGljIGdldFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvckJ5Q29kZShjb2RlOiBzdHJpbmcpOiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3Ige1xuICAgIGlmICghdGhpcy5zbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlLFxuICAgICAgICBtZXNzYWdlOiAnQW4gZXJyb3IgaGFzIG9jY3VyZWQuJyxcbiAgICAgICAgYnV0dG9uTGFiZWw6ICdPaycsXG4gICAgICAgIGRpYWxvZ1RpdGxlOiAnSGliYScsXG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgYXBpRXJyb3JzV2l0aENvZGUgPSB0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMudmlld0NvbnRleHRBcGlFcnJvcnMuZmlsdGVyKFxuICAgICAgKGFwaUVycm9yOiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIGFwaUVycm9yLmNvZGUgPT09IGNvZGU7XG4gICAgICB9XG4gICAgKTtcbiAgICBpZiAoIWFwaUVycm9yc1dpdGhDb2RlIHx8IChhcGlFcnJvcnNXaXRoQ29kZSAmJiAhYXBpRXJyb3JzV2l0aENvZGUubGVuZ3RoKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgU21hcnRWaWV3Q29udGV4dEFwaUVycm9yIHdpdGggY29kZSAke2NvZGV9IGNvdWxkIG5vdCBiZSBmb3VuZC5gKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29kZSxcbiAgICAgICAgbWVzc2FnZTogJ0FuIGVycm9yIGhhcyBvY2N1cmVkLicsXG4gICAgICAgIGJ1dHRvbkxhYmVsOiAnT2snLFxuICAgICAgICBkaWFsb2dUaXRsZTogJ0hpYmEnLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGFwaUVycm9yc1dpdGhDb2RlWzBdO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZpZXdDb25zdHJhaW50KHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Vmlld0NvbnN0cmFpbnQ+IHtcbiAgICBsZXQgdmlld0NvbnN0cmFpbnRSZXNwb25zZSA9IGF3YWl0IHRoaXMudmlldy5nZXRWaWV3Q29uc3RyYWludCh1dWlkKS50b1Byb21pc2UoKTtcbiAgICBpZiAoIXZpZXdDb25zdHJhaW50UmVzcG9uc2UpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBnZXQgVmlld0NvbnN0cmFpbnQgd2l0aCB0aGUgZ2l2ZW4gdXVpZC4nKTtcbiAgICByZXR1cm4gdmlld0NvbnN0cmFpbnRSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93UHVibGlzaGVkVmlldyhjaGFubmVsOiBzdHJpbmcsIHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5pbml0aWFsaXplKCk7XG4gICAgLy8gVE9ETyBpbml0IHZpZXcgY29udGV4dCBhdXRvbWF0aWNhbGx5XG4gICAgLy8gYXdhaXQgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICB0aGlzLmlzT3BlbmluZ1NtYXJ0TGluayA9IHRydWU7XG4gICAgdGhpcy5vcGVuU21hcnRMaW5rLm5leHQoKTtcbiAgICBhd2FpdCB0aGlzLm9wZW5TbWFydExpbmsudG9Qcm9taXNlKCk7XG5cbiAgICBhd2FpdCB0aGlzLnZpZXcuc2hvd1B1Ymxpc2hlZFZpZXcoY2hhbm5lbCwgdXVpZCkudG9Qcm9taXNlKCk7XG4gICAgYXdhaXQgdGhpcy5nZXRBbmRTeW5jVmlld0NvbnRleHQoKTtcbiAgICB0aGlzLmlzT3BlbmluZ1NtYXJ0TGluayA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvd25sb2FkUmVzb3VyY2UodXVpZDogc3RyaW5nLCBpdGVtOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnZpZXcuZG93bmxvYWRJdGVtKHV1aWQsIGl0ZW0pLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBlcmZvcm1BY3Rpb24odXVpZDogc3RyaW5nLCB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMudmlldy5wZXJmb3JtQWN0aW9uKHV1aWQsIHVpQWN0aW9uUmVxdWVzdCkudG9Qcm9taXNlKClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBlcmZvcm1XaWRnZXRBY3Rpb24oXG4gICAgdXVpZDogc3RyaW5nLFxuICAgIHdpZGdldElkOiBzdHJpbmcsXG4gICAgbm9kZUlkOiBzdHJpbmcsXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy52aWV3LnBlcmZvcm1XaWRnZXRBY3Rpb24odXVpZCwgd2lkZ2V0SWQsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGVyZm9ybVdpZGdldE1haW5BY3Rpb24oXG4gICAgdXVpZDogc3RyaW5nLFxuICAgIHdpZGdldElkOiBzdHJpbmcsXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy52aWV3LnBlcmZvcm1XaWRnZXRNYWluQWN0aW9uKHV1aWQsIHdpZGdldElkLCB1aUFjdGlvblJlcXVlc3QpLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgdmlld0NvbnRleHRDaGFuZ2U6IFZpZXdDb250ZXh0Q2hhbmdlIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmlld0NvbnRleHQgPSB2aWV3Q29udGV4dENoYW5nZT8udmlld0NvbnRleHQ7XG4gICAgdGhpcy5zeW5jVmlldygpO1xuXG4gICAgaWYgKHZpZXdDb250ZXh0Q2hhbmdlPy5jaGFuZ2VzKSB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZXModmlld0NvbnRleHRDaGFuZ2UuY2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKGNoYW5nZXM6IEFycmF5PENvbXBvbmVudE1vZGVsQ2hhbmdlPik6IHZvaWQge1xuICAgIGNoYW5nZXMuZm9yRWFjaCgoY29tcG9uZW50TW9kZWxDaGFuZ2U6IENvbXBvbmVudE1vZGVsQ2hhbmdlKSA9PiB7XG4gICAgICBsZXQgZGV0ZWN0Q2hhbmdlOiBTbWFydFN1YmplY3Q8Q29tcG9uZW50TW9kZWxDaGFuZ2U+IHwgdW5kZWZpbmVkID0gdGhpcy5zbWFydEFwaUNsaWVudHMuZ2V0KFxuICAgICAgICBjb21wb25lbnRNb2RlbENoYW5nZS51dWlkXG4gICAgICApO1xuICAgICAgaWYgKGRldGVjdENoYW5nZSkge1xuICAgICAgICBkZXRlY3RDaGFuZ2UubmV4dChjb21wb25lbnRNb2RlbENoYW5nZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudmlldy5nZXRDb21wb25lbnRNb2RlbCh1dWlkKS50b1Byb21pc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSVNfQVNZTkNfUEFSQU1fTkFNRSA9ICdpc0FzeW5jJztcbiJdfQ==
|
|
407
|
+
export class ApiQueueService {
|
|
408
|
+
constructor() {
|
|
409
|
+
this._destroy$ = new Subject();
|
|
410
|
+
this.queue = [];
|
|
411
|
+
this.isProcessing = false;
|
|
412
|
+
this.queueSubject = new Subject();
|
|
413
|
+
this.queueSubject.pipe(takeUntil(this._destroy$)).subscribe(() => this.processQueue());
|
|
414
|
+
}
|
|
415
|
+
ngOnDestroy() {
|
|
416
|
+
this._destroy$.next();
|
|
417
|
+
this._destroy$.complete();
|
|
418
|
+
}
|
|
419
|
+
addToQueue(call, priority = false) {
|
|
420
|
+
if (priority) {
|
|
421
|
+
this.queue.unshift(call); // Add at the beginning of the queue if it has higher priority
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
this.queue.push(call); // Add at the end of the queue if it has lower priority
|
|
425
|
+
}
|
|
426
|
+
if (!this.isProcessing) {
|
|
427
|
+
this.processQueue();
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
async processQueue() {
|
|
431
|
+
if (this.queue.length === 0) {
|
|
432
|
+
this.isProcessing = false;
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
const apiQueueCall = this.queue.shift();
|
|
436
|
+
if (apiQueueCall) {
|
|
437
|
+
await apiQueueCall.callback(apiQueueCall.config);
|
|
438
|
+
apiQueueCall.isCompleted.complete();
|
|
439
|
+
this.queueSubject.next();
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
ApiQueueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ApiQueueService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
444
|
+
ApiQueueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ApiQueueService });
|
|
445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ApiQueueService, decorators: [{
|
|
446
|
+
type: Injectable
|
|
447
|
+
}], ctorParameters: function () { return []; } });
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBY0wsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7QUFZbkYsTUFBTSxPQUFPLHVCQUF1QjtJQXlDbEMsWUFDVSxJQUFpQixFQUNqQixPQUE0QixFQUM1QixVQUFrQyxFQUNsQyxNQUEwQixFQUMxQixlQUFnQztRQUpoQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQTdDbEMsY0FBUyxHQUFXLGlCQUFpQixDQUFDO1FBQ3RDLHdCQUFtQixHQUFXLGlCQUFpQixDQUFDO1FBSWhELGlCQUFZLEdBQWlDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekQsb0JBQWUsR0FBa0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUU5Qyw2QkFBd0IsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMxRCw2QkFBd0IsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUl4RCxrQkFBYSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUVuQyxlQUFV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Ozs2R0F0Q1UsZUFBZTtpSEFBZixlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYXJ0ZGlhbG9nU2VydmljZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZGlhbG9nJztcbmltcG9ydCB7IFNtYXJ0TmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTbWFydFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtY2xpZW50L3NtYXJ0LnN1YmplY3QnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50TW9kZWwsXG4gIENvbXBvbmVudE1vZGVsQ2hhbmdlLFxuICBEYXRhQ2hhbmdlLFxuICBNZXNzYWdlRGF0YSxcbiAgTWVzc2FnZVJlc3VsdCxcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxuICBVaUFjdGlvblJlcXVlc3QsXG4gIFZpZXdDb25zdHJhaW50LFxuICBWaWV3Q29udGV4dENoYW5nZSxcbiAgVmlld0NvbnRleHREYXRhLFxuICBWaWV3Q29udGV4dFVwZGF0ZSxcbiAgVmlld0RhdGEsXG4gIFZpZXdTZXJ2aWNlLFxuICBWaWV3U3RhdGUsXG4gIFZpZXdUeXBlLFxufSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWRpYWxvZy9tZXNzYWdlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU21hcnRUcmFuc2xhdGVTZXJ2aWNlLFxuICBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IsXG4gIFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMsXG4gIFNtYXJ0Vmlld0RpYWxvZ1JlZixcbiAgU21hcnRWaWV3SGFuZGxlck1vZGVsLFxufSBmcm9tICcuL3NtYXJ0LXZpZXctY29udGV4dC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB7XG4gIHByaXZhdGUgdGFiSWROYW1lOiBzdHJpbmcgPSAndmlld0NvbnRleHRVdWlkJztcbiAgcHJpdmF0ZSB0YWJJZGh0dHBIZWFkZXJOYW1lOiBzdHJpbmcgPSAndmlld0NvbnRleHRVdWlkJztcbiAgcHVibGljIG1lc3NhZ2VEaWFsb2duYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdXJsPzogc3RyaW5nO1xuICBwcml2YXRlIHZpZXdDb250ZXh0PzogVmlld0NvbnRleHREYXRhO1xuICBwcml2YXRlIHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPiA9IG5ldyBBcnJheSgpO1xuICBwcml2YXRlIG9wZW5lZFZpZXdVdWlkczogQXJyYXk8c3RyaW5nPiA9IG5ldyBBcnJheSgpO1xuXG4gIHB1YmxpYyB1dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyB2aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBzbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzPzogU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycztcblxuICBwdWJsaWMgb3BlblNtYXJ0TGluazogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpc09wZW5pbmdTbWFydExpbms6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGRpYWxvZ1JlZnM6IFNtYXJ0Vmlld0RpYWxvZ1JlZltdID0gW107XG5cbiAgcHJpdmF0ZSBhY3Rpb25EZXNjcmlwdG9ycz86IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj47XG5cbiAgcHVibGljIGNvbW1vbkZlZWRiYWNrVGV4dD86IHN0cmluZztcblxuICBwdWJsaWMgc21hcnRBcGlDbGllbnRzOiBNYXA8c3RyaW5nLCBTbWFydFN1YmplY3Q8YW55Pj4gPSBuZXcgTWFwKCk7XG5cbiAgcHVibGljIHNldCB0cmFuc2xhdGVTZXJ2aWNlKHRyYW5zbGF0ZVNlcnZpY2U6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQubmV4dCgpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJhbnNsYXRlU2VydmljZSgpOiBTbWFydFRyYW5zbGF0ZVNlcnZpY2UgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl90cmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U/OiBTbWFydFRyYW5zbGF0ZVNlcnZpY2U7XG4gIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBTbWFydE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBTbWFydGRpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGlRdWV1ZVNlcnZpY2U6IEFwaVF1ZXVlU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIGZvbGxvdyh1dWlkOiBzdHJpbmcsIGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnNtYXJ0QXBpQ2xpZW50cy5zZXQodXVpZCwgZGV0ZWN0Q2hhbmdlKTtcbiAgfVxuICBwdWJsaWMgdW5mb2xsb3codXVpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zbWFydEFwaUNsaWVudHMuZGVsZXRlKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbkRlc2NyaXB0b3JzKGFjdGlvbkRlc2NyaXB0b3JzOiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+KTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25EZXNjcmlwdG9ycyA9IGFjdGlvbkRlc2NyaXB0b3JzO1xuICB9XG5cbiAgcHVibGljIGdldEFjdGlvbkRlc2NyaXB0b3JzKCk6IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj4gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5hY3Rpb25EZXNjcmlwdG9ycykge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gYWN0aW9uIGRlc2NyaXB0b3JzIGhhcyBiZWVuIHNldCB0byBWaWV3Q29udGV4dC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uRGVzY3JpcHRvcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0Vmlld0hhbmRsZXJzKHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPik6IHZvaWQge1xuICAgIHRoaXMudmlld0hhbmRsZXJzID0gdmlld0hhbmRsZXJzO1xuICB9XG5cbiAgcHVibGljIHNldFZpZXdBcGlFcnJvcnModmlld0FwaUVycm9yczogU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyk6IHZvaWQge1xuICAgIHRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyA9IHZpZXdBcGlFcnJvcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0TWVzc2FnZURpYWxvZ05hbWUobWVzc2FnZURpYWxvZ05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZURpYWxvZ25hbWUgPSBtZXNzYWdlRGlhbG9nTmFtZTtcbiAgICB0aGlzLnZpZXdIYW5kbGVycy5wdXNoKHtcbiAgICAgIG5hbWU6IG1lc3NhZ2VEaWFsb2dOYW1lLFxuICAgICAgY29tcG9uZW50OiBNZXNzYWdlRGlhbG9nQ29tcG9uZW50LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRVcFVybEZvclZpZXdTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMudmlldy5jb25maWd1cmF0aW9uLmJhc2VQYXRoID0gdGhpcy51cmw7XG4gIH1cblxuICBwdWJsaWMgc2V0VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy51cmwgPSB1cmwgKyAnL3ZpZXcnO1xuICAgIHRoaXMuc2V0VXBVcmxGb3JWaWV3U2VydmljZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFuZFN5bmNWaWV3Q29udGV4dCh1dWlkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF1dWlkKSB7XG4gICAgICB1dWlkID0gdGhpcy5nZXRVdWlkT2ZQYWdlKHRoaXMudGFiSWROYW1lKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuc3luY1ZpZXcoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWaWV3Q29udGV4dCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xuICAgIHRoaXMudmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Vmlld0NvbnRleHQodXVpZCkudG9Qcm9taXNlKCk7XG4gICAgaWYgKCF0aGlzLnZpZXdDb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXdDb250ZXh0IGRvZXMgbm90IGV4aXN0IHdpdGggdGhlIGdpdmVuIHV1aWQuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZpZXdDb250ZXh0RGF0YUJ5UGFnZU5hbWUocGFnZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Vmlld0RhdGE+IHtcbiAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcbiAgICAgIGxldCB2aWV3Q29udGV4dFV1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMudGFiSWROYW1lKTtcbiAgICAgIGlmICghdmlld0NvbnRleHRVdWlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVmlldyBjb250ZXh0IGlzIG5vdCBpbml0aWFsaXplZCEnKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodmlld0NvbnRleHRVdWlkISk7XG4gICAgfVxuICAgIGxldCBwYWdlVXVpZCA9IHRoaXMuZ2V0VXVpZE9mUGFnZShwYWdlTmFtZSk7XG5cbiAgICBsZXQgdmlld0NvbnRleHRCeVBhZ2VOYW1lID0gdGhpcy52aWV3Q29udGV4dD8udmlld3MuZmluZCgodmlldykgPT4gdmlldy51dWlkID09PSBwYWdlVXVpZCk7XG4gICAgaWYgKCF2aWV3Q29udGV4dEJ5UGFnZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIFZpZXdEYXRhIG9mICR7cGFnZU5hbWV9IGlzIG5vdCBmb3VuZCFgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpZXdDb250ZXh0QnlQYWdlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVWaWV3Q29udGV4dChcbiAgICB2aWV3Q29udGV4dFVwZGF0ZTogVmlld0NvbnRleHRVcGRhdGVcbiAgKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LnVwZGF0ZVZpZXdDb250ZXh0KHZpZXdDb250ZXh0VXBkYXRlKS50b1Byb21pc2UoKTtcblxuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclNlc3Npb25TdG9yYWdlKCk6IHZvaWQge1xuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFRhYklkKHRhYklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMudGFiSWROYW1lLCB0YWJJZCk7XG4gICAgdGhpcy5zZXNzaW9uLmFkZEhlYWRlclBhcmFtKHtcbiAgICAgIGhlYWRlck5hbWU6IHRoaXMudGFiSWRodHRwSGVhZGVyTmFtZSxcbiAgICAgIHZhbHVlOiB0YWJJZCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydFZpZXdDb250ZXh0KCk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhPiB7XG4gICAgdGhpcy5jbGVhclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICBsZXQgbmV3Vmlld0NvbnRleHQ6IFZpZXdDb250ZXh0RGF0YSB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMudmlld1xuICAgICAgLmNyZWF0ZVZpZXdDb250ZXh0KClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgICBpZiAoIW5ld1ZpZXdDb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFZpZXdDb250ZXh0IHdhcyBjcmVhdGVkJyk7XG4gICAgfVxuICAgIHRoaXMudmlld0NvbnRleHQgPSBuZXdWaWV3Q29udGV4dDtcblxuICAgIHRoaXMuc2V0VGFiSWQobmV3Vmlld0NvbnRleHQudXVpZCEpO1xuXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSh1dWlkPzogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcbiAgICBpZiAodGhpcy52aWV3SGFuZGxlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVGhlcmUgYXJlbid0IGFueSB2aWV3SGFuZGxlcnMgaW4gU21hcnRWaWV3Q29udGV4dFNlcnZpY2UhIFByb3ZpZGUgc29tZSB0byB1c2UgaXRzIGZ1bmN0aW9ucy5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2VEaWFsb2duYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBtZXNzYWdlRGlhbG9nTmFtZSBwcm92aWRlZCBieSB0aGUgYmFja2VuZCBoYXMgbm90IGJlZW4gc2V0LicpO1xuICAgIH1cbiAgICBpZiAodXVpZCkge1xuICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHRoaXMuc2Vzc2lvbi5oZWFkZXJzVXBkYXRlZC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmdldFZpZXdDb250ZXh0KHV1aWQpO1xuICAgICAgICAgIHRoaXMuc2V0VGFiSWQodXVpZCEpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldFRhYklkKHV1aWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dCE7XG4gIH1cblxuICBwdWJsaWMgb3BlblZpZXcodmlldzogVmlld0RhdGEpOiB2b2lkIHtcbiAgICBsZXQgdmlld0hhbmRsZXI6IFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB8IHVuZGVmaW5lZCA9IHRoaXMudmlld0hhbmRsZXJzLmZpbmQoXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXG4gICAgKTtcblxuICAgIGlmICghdmlld0hhbmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU21hcnRWaWV3SGFuZGxlck1vZGVsIHdhcyBub3QgZm91bmQgYnkgdmlldyBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuRGlhbG9nKSB7XG4gICAgICBpZiAoIXZpZXdIYW5kbGVyLmNvbXBvbmVudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENvbXBvbmVudCBpcyB1bmRlZmluZWQgaW4gU21hcnRWaWV3SGFuZGxlck1vZGVsIHdpdGggbmFtZTogJHt2aWV3LnZpZXdOYW1lfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuQ29tcG9uZW50QXNEaWFsb2codmlld0hhbmRsZXIuY29tcG9uZW50LCB2aWV3SGFuZGxlci5uYW1lKTtcbiAgICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgICAgLy8gaWYgKHZpZXcudmlld05hbWUgPT09IHRoaXMubWVzc2FnZURpYWxvZ25hbWUpIHtcbiAgICAgIC8vICAgaWYgKHZpZXcubWVzc2FnZT8ub3B0aW9ucyAmJiB2aWV3Lm1lc3NhZ2Uub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuICAgICAgdGhpcy5kaWFsb2dSZWZzLnB1c2goe1xuICAgICAgICB1dWlkOiB2aWV3LnV1aWQsXG4gICAgICAgIGRpYWxvZ1JlZixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5Ob3JtYWwpIHtcbiAgICAgIGlmICh2aWV3SGFuZGxlci5yb3V0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGUgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KCcvJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlIG9mIHRoZSB2aWV3IGFuZCBpdHMgdmlld0hhbmRsZXIgaXMgbm90IHRoZSBzYW1lIScpO1xuICAgIH1cblxuICAgIHZpZXcuc3RhdGUgPSBWaWV3U3RhdGUuT3BlbmVkO1xuXG4gICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMucHVzaCh2aWV3LnV1aWQpO1xuXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh2aWV3LnZpZXdOYW1lLCB2aWV3LnV1aWQpO1xuICAgIHRoaXMudXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkLm5leHQodmlldy52aWV3TmFtZSk7XG5cbiAgICB0aGlzLnVwZGF0ZVZpZXdDb250ZXh0KHtcbiAgICAgIHVwZGF0ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlOiBWaWV3U3RhdGUuT3BlbmVkLFxuICAgICAgICAgIHV1aWQ6IHZpZXcudXVpZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1dWlkOiB0aGlzLnZpZXdDb250ZXh0Py51dWlkLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsb3NlVmlldyh2aWV3OiBWaWV3RGF0YSk6IHZvaWQge1xuICAgIGxldCB2aWV3SGFuZGxlcjogU21hcnRWaWV3SGFuZGxlck1vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy52aWV3SGFuZGxlcnMuZmluZChcbiAgICAgIChoYW5kbGVyKSA9PiBoYW5kbGVyLm5hbWUgPT09IHZpZXcudmlld05hbWVcbiAgICApO1xuXG4gICAgaWYgKCF2aWV3SGFuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2FzIG5vdCBmb3VuZCBieSB2aWV3IG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcbiAgICB9XG5cbiAgICBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5EaWFsb2cpIHtcbiAgICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1JlZnMuZmluZChcbiAgICAgICAgKGRpYWxvZ1JlZjogU21hcnRWaWV3RGlhbG9nUmVmKSA9PiBkaWFsb2dSZWYudXVpZCA9PT0gdmlldy51dWlkXG4gICAgICApO1xuICAgICAgaWYgKGRpYWxvZ1JlZikge1xuICAgICAgICBkaWFsb2dSZWYuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZGlhbG9nUmVmcy5pbmRleE9mKGRpYWxvZ1JlZik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dSZWYgaXMgbm90IGZvdW5kIGJ5IHV1aWQuJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2aWV3LnR5cGUgPT09IFZpZXdUeXBlLk5vcm1hbCkge1xuICAgICAgLy8gVE9ETzogY2xvc2Ugbm9ybWFsIHBhZ2U/Pz9cbiAgICAgIC8vIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KFwiL1wiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHR5cGUgb2YgdGhlIHZpZXcgYW5kIGl0cyB2aWV3SGFuZGxlciBpcyBub3QgdGhlIHNhbWUhJyk7XG4gICAgfVxuXG4gICAgdmlldy5zdGF0ZSA9IFZpZXdTdGF0ZS5DbG9zZWQ7XG5cbiAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcy5zbGljZSh0aGlzLm9wZW5lZFZpZXdVdWlkcy5pbmRleE9mKHZpZXcudXVpZCksIDEpO1xuXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh2aWV3LnZpZXdOYW1lKTtcblxuICAgIHRoaXMudXBkYXRlVmlld0NvbnRleHQoe1xuICAgICAgdXBkYXRlczogW1xuICAgICAgICB7XG4gICAgICAgICAgc3RhdGU6IFZpZXdTdGF0ZS5DbG9zZWQsXG4gICAgICAgICAgdXVpZDogdmlldy51dWlkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHV1aWQ6IHRoaXMudmlld0NvbnRleHQ/LnV1aWQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzdG9yZVZpZXdzKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy52aWV3Q29udGV4dCkge1xuICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcbiAgICB9XG4gICAgdGhpcy52aWV3Q29udGV4dCEudmlld3MubWFwKCh2aWV3OiBWaWV3RGF0YSkgPT4ge1xuICAgICAgdGhpcy5vcGVuVmlldyh2aWV3KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzeW5jVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdDb250ZXh0Py52aWV3cy5tYXAoKHZpZXc6IFZpZXdEYXRhKSA9PiB7XG4gICAgICBzd2l0Y2ggKHZpZXcuc3RhdGUpIHtcbiAgICAgICAgY2FzZSBWaWV3U3RhdGUuVG9PcGVuOlxuICAgICAgICAgIHRoaXMub3BlblZpZXcodmlldyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVmlld1N0YXRlLlRvQ2xvc2U6XG4gICAgICAgICAgdGhpcy5jbG9zZVZpZXcodmlldyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy52aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIGdldFV1aWRPZlBhZ2UocGFnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHV1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHBhZ2VOYW1lKTtcbiAgICBpZiAoIXV1aWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHV1aWQgb2YgJHtwYWdlTmFtZX0gaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHV1aWQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWVzc2FnZShtZXNzYWdlRGF0YTogTWVzc2FnZURhdGEsIG1lc3NhZ2VSZXN1bHQ6IE1lc3NhZ2VSZXN1bHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnZpZXdcbiAgICAgIC5tZXNzYWdlKG1lc3NhZ2VEYXRhLnZpZXdVdWlkID8/ICcnLCBtZXNzYWdlRGF0YS51dWlkLCBtZXNzYWdlUmVzdWx0KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIGF3YWl0IHRoaXMuZ2V0QW5kU3luY1ZpZXdDb250ZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U21hcnRWaWV3Q29udGV4dEFwaUVycm9yQnlDb2RlKGNvZGU6IHN0cmluZyk6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvciB7XG4gICAgaWYgKCF0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGUsXG4gICAgICAgIG1lc3NhZ2U6ICdBbiBlcnJvciBoYXMgb2NjdXJlZC4nLFxuICAgICAgICBidXR0b25MYWJlbDogJ09rJyxcbiAgICAgICAgZGlhbG9nVGl0bGU6ICdIaWJhJyxcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBhcGlFcnJvcnNXaXRoQ29kZSA9IHRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycy52aWV3Q29udGV4dEFwaUVycm9ycy5maWx0ZXIoXG4gICAgICAoYXBpRXJyb3I6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gYXBpRXJyb3IuY29kZSA9PT0gY29kZTtcbiAgICAgIH1cbiAgICApO1xuICAgIGlmICghYXBpRXJyb3JzV2l0aENvZGUgfHwgKGFwaUVycm9yc1dpdGhDb2RlICYmICFhcGlFcnJvcnNXaXRoQ29kZS5sZW5ndGgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3Igd2l0aCBjb2RlICR7Y29kZX0gY291bGQgbm90IGJlIGZvdW5kLmApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlLFxuICAgICAgICBtZXNzYWdlOiAnQW4gZXJyb3IgaGFzIG9jY3VyZWQuJyxcbiAgICAgICAgYnV0dG9uTGFiZWw6ICdPaycsXG4gICAgICAgIGRpYWxvZ1RpdGxlOiAnSGliYScsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYXBpRXJyb3JzV2l0aENvZGVbMF07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnN0cmFpbnQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29uc3RyYWludD4ge1xuICAgIGxldCB2aWV3Q29uc3RyYWludFJlc3BvbnNlID0gYXdhaXQgdGhpcy52aWV3LmdldFZpZXdDb25zdHJhaW50KHV1aWQpLnRvUHJvbWlzZSgpO1xuICAgIGlmICghdmlld0NvbnN0cmFpbnRSZXNwb25zZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBWaWV3Q29uc3RyYWludCB3aXRoIHRoZSBnaXZlbiB1dWlkLicpO1xuICAgIHJldHVybiB2aWV3Q29uc3RyYWludFJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dQdWJsaXNoZWRWaWV3KGNoYW5uZWw6IHN0cmluZywgdXVpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uLmluaXRpYWxpemUoKTtcbiAgICAvLyBUT0RPIGluaXQgdmlldyBjb250ZXh0IGF1dG9tYXRpY2FsbHlcbiAgICAvLyBhd2FpdCB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIHRoaXMuaXNPcGVuaW5nU21hcnRMaW5rID0gdHJ1ZTtcbiAgICB0aGlzLm9wZW5TbWFydExpbmsubmV4dCgpO1xuICAgIGF3YWl0IHRoaXMub3BlblNtYXJ0TGluay50b1Byb21pc2UoKTtcblxuICAgIGF3YWl0IHRoaXMudmlldy5zaG93UHVibGlzaGVkVmlldyhjaGFubmVsLCB1dWlkKS50b1Byb21pc2UoKTtcbiAgICBhd2FpdCB0aGlzLmdldEFuZFN5bmNWaWV3Q29udGV4dCgpO1xuICAgIHRoaXMuaXNPcGVuaW5nU21hcnRMaW5rID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG93bmxvYWRSZXNvdXJjZSh1dWlkOiBzdHJpbmcsIGl0ZW06IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudmlldy5kb3dubG9hZEl0ZW0odXVpZCwgaXRlbSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGVyZm9ybUFjdGlvbih1dWlkOiBzdHJpbmcsIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoe1xuICAgICAgY2FsbGJhY2s6IHRoaXMuX3BlcmZvcm1BY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICB1dWlkLFxuICAgICAgICB1aUFjdGlvblJlcXVlc3QsXG4gICAgICB9LFxuICAgICAgaXNDb21wbGV0ZWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBlcmZvcm1XaWRnZXRBY3Rpb24oXG4gICAgdXVpZDogc3RyaW5nLFxuICAgIHdpZGdldElkOiBzdHJpbmcsXG4gICAgbm9kZUlkOiBzdHJpbmcsXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoe1xuICAgICAgY2FsbGJhY2s6IHRoaXMuX3BlcmZvcm1XaWRnZXRBY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICB1dWlkLFxuICAgICAgICB3aWRnZXRJZCxcbiAgICAgICAgbm9kZUlkLFxuICAgICAgICB1aUFjdGlvblJlcXVlc3QsXG4gICAgICB9LFxuICAgICAgaXNDb21wbGV0ZWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBlcmZvcm1XaWRnZXRNYWluQWN0aW9uKFxuICAgIHV1aWQ6IHN0cmluZyxcbiAgICB3aWRnZXRJZDogc3RyaW5nLFxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcbiAgICAgIGNhbGxiYWNrOiB0aGlzLl9wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIHV1aWQsXG4gICAgICAgIHdpZGdldElkLFxuICAgICAgICB1aUFjdGlvblJlcXVlc3QsXG4gICAgICB9LFxuICAgICAgaXNDb21wbGV0ZWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRhdGFDaGFuZ2VkKHV1aWQ6IHN0cmluZywgZGF0YUNoYW5nZTogRGF0YUNoYW5nZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcbiAgICAgIGNhbGxiYWNrOiB0aGlzLl9kYXRhQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIHV1aWQsXG4gICAgICAgIGRhdGFDaGFuZ2UsXG4gICAgICB9LFxuICAgICAgaXNDb21wbGV0ZWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcGVyZm9ybUFjdGlvbihjb25maWc6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMudmlldy5wZXJmb3JtQWN0aW9uKGNvbmZpZy51dWlkLCBjb25maWcudWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtV2lkZ2V0QWN0aW9uKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy52aWV3XG4gICAgICAgIC5wZXJmb3JtV2lkZ2V0QWN0aW9uKGNvbmZpZy51dWlkLCBjb25maWcud2lkZ2V0SWQsIGNvbmZpZy5ub2RlSWQsIGNvbmZpZy51aUFjdGlvblJlcXVlc3QpXG4gICAgICAgIC50b1Byb21pc2UoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbihjb25maWc6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMudmlld1xuICAgICAgICAucGVyZm9ybVdpZGdldE1haW5BY3Rpb24oY29uZmlnLnV1aWQsIGNvbmZpZy53aWRnZXRJZCwgY29uZmlnLnVpQWN0aW9uUmVxdWVzdClcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2RhdGFDaGFuZ2VkKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy52aWV3LmRhdGFDaGFuZ2VkKGNvbmZpZy51dWlkLCBjb25maWcuZGF0YUNoYW5nZSkudG9Qcm9taXNlKClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICB2aWV3Q29udGV4dENoYW5nZTogVmlld0NvbnRleHRDaGFuZ2UgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52aWV3Q29udGV4dCA9IHZpZXdDb250ZXh0Q2hhbmdlPy52aWV3Q29udGV4dDtcbiAgICB0aGlzLnN5bmNWaWV3KCk7XG5cbiAgICBpZiAodmlld0NvbnRleHRDaGFuZ2U/LmNoYW5nZXMpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyh2aWV3Q29udGV4dENoYW5nZS5jaGFuZ2VzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5nZXMoY2hhbmdlczogQXJyYXk8Q29tcG9uZW50TW9kZWxDaGFuZ2U+KTogdm9pZCB7XG4gICAgY2hhbmdlcy5mb3JFYWNoKChjb21wb25lbnRNb2RlbENoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpID0+IHtcbiAgICAgIGxldCBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxDb21wb25lbnRNb2RlbENoYW5nZT4gfCB1bmRlZmluZWQgPSB0aGlzLnNtYXJ0QXBpQ2xpZW50cy5nZXQoXG4gICAgICAgIGNvbXBvbmVudE1vZGVsQ2hhbmdlLnV1aWRcbiAgICAgICk7XG4gICAgICBpZiAoZGV0ZWN0Q2hhbmdlKSB7XG4gICAgICAgIGRldGVjdENoYW5nZS5uZXh0KGNvbXBvbmVudE1vZGVsQ2hhbmdlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Q29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy52aWV3LmdldENvbXBvbmVudE1vZGVsKHV1aWQpLnRvUHJvbWlzZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBJU19BU1lOQ19QQVJBTV9OQU1FID0gJ2lzQXN5bmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXVlQ2FsbCB7XG4gIGNhbGxiYWNrOiAoY29uZmlnOiBhbnkpID0+IFByb21pc2U8YW55PjtcbiAgY29uZmlnOiBhbnk7XG4gIGlzQ29tcGxldGVkOiBTdWJqZWN0PHZvaWQ+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBpUXVldWVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcXVldWU6IEFwaVF1ZXVlQ2FsbFtdID0gW107XG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcXVldWVTdWJqZWN0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnF1ZXVlU3ViamVjdC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnByb2Nlc3NRdWV1ZSgpKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFkZFRvUXVldWUoY2FsbDogQXBpUXVldWVDYWxsLCBwcmlvcml0eTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHByaW9yaXR5KSB7XG4gICAgICB0aGlzLnF1ZXVlLnVuc2hpZnQoY2FsbCk7IC8vIEFkZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZSBpZiBpdCBoYXMgaGlnaGVyIHByaW9yaXR5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVldWUucHVzaChjYWxsKTsgLy8gQWRkIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlIGlmIGl0IGhhcyBsb3dlciBwcmlvcml0eVxuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNQcm9jZXNzaW5nKSB7XG4gICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHByb2Nlc3NRdWV1ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXBpUXVldWVDYWxsID0gdGhpcy5xdWV1ZS5zaGlmdCgpO1xuICAgIGlmIChhcGlRdWV1ZUNhbGwpIHtcbiAgICAgIGF3YWl0IGFwaVF1ZXVlQ2FsbC5jYWxsYmFjayhhcGlRdWV1ZUNhbGwuY29uZmlnKTtcbiAgICAgIGFwaVF1ZXVlQ2FsbC5pc0NvbXBsZXRlZC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5xdWV1ZVN1YmplY3QubmV4dCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|