@pepperi-addons/ngx-lib 0.2.49 → 0.2.51-beta.10
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/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-form.umd.js +3296 -50
- package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-icon.umd.js +6 -0
- package/bundles/pepperi-addons-ngx-lib-icon.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-image.umd.js +133 -72
- package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib.umd.js +15 -0
- package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
- package/core/common/model/wapi.model.d.ts +1 -0
- package/core/customization/customization.model.d.ts +10 -0
- package/esm2015/checkbox/checkbox.component.js +1 -1
- package/esm2015/core/common/model/wapi.model.js +2 -1
- package/esm2015/core/customization/customization.model.js +10 -1
- package/esm2015/form/field-generator.component.js +2 -2
- package/esm2015/form/form.component.js +35 -16
- package/esm2015/form/form.module.js +5 -1
- package/esm2015/form/internal-carusel.component.js +3223 -0
- package/esm2015/form/internal-carusel.service.js +32 -0
- package/esm2015/form/internal-page.component.js +1 -32
- package/esm2015/form/pepperi-addons-ngx-lib-form.js +3 -1
- package/esm2015/group-buttons/group-buttons.component.js +1 -1
- package/esm2015/icon/icon-generated-all.model.js +2 -1
- package/esm2015/icon/icon-generated.model.js +5 -1
- package/esm2015/image/image.component.js +20 -36
- package/esm2015/image/image.module.js +3 -1
- package/esm2015/image/image.service.js +55 -0
- package/esm2015/image/public-api.js +2 -1
- package/esm2015/slider/slider.component.js +1 -1
- package/esm2015/smart-filters/common/model/base-filter-component.js +2 -2
- package/esm2015/textbox/textbox.component.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.js +3286 -48
- package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-icon.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-icon.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.js +73 -36
- package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.js +11 -1
- package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
- package/form/form.component.d.ts +4 -2
- package/form/internal-carusel.component.d.ts +34 -0
- package/form/internal-carusel.service.d.ts +12 -0
- package/form/pepperi-addons-ngx-lib-form.d.ts +2 -0
- package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
- package/icon/icon-generated-all.model.d.ts +1 -0
- package/icon/icon-generated.model.d.ts +5 -1
- package/icon/pepperi-addons-ngx-lib-icon.metadata.json +1 -1
- package/image/image.component.d.ts +5 -5
- package/image/image.service.d.ts +11 -0
- package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
- package/image/public-api.d.ts +1 -0
- package/package.json +1 -1
- package/pepperi-addons-ngx-lib.metadata.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { PepHttpService } from '@pepperi-addons/ngx-lib';
|
|
3
|
+
export class PepInternalCaruselService {
|
|
4
|
+
constructor(httpService) {
|
|
5
|
+
this.httpService = httpService;
|
|
6
|
+
this.parentId = '0';
|
|
7
|
+
this.additionalApiName = '';
|
|
8
|
+
this.transactionUrl = 'Service1.svc/v1/OrderCenter/Transaction/';
|
|
9
|
+
}
|
|
10
|
+
initCarusel(objectId, searchCode, callbackFunc) {
|
|
11
|
+
if (!objectId) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
this.objectId = objectId;
|
|
15
|
+
this.searchCode = searchCode;
|
|
16
|
+
this.httpService
|
|
17
|
+
.getWapiApiCall(`${this.transactionUrl}${this.objectId}/CaruselItems`)
|
|
18
|
+
.subscribe((res) => {
|
|
19
|
+
callbackFunc(res);
|
|
20
|
+
}
|
|
21
|
+
// (error) => {},
|
|
22
|
+
// () => {}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
PepInternalCaruselService.decorators = [
|
|
27
|
+
{ type: Injectable }
|
|
28
|
+
];
|
|
29
|
+
PepInternalCaruselService.ctorParameters = () => [
|
|
30
|
+
{ type: PepHttpService }
|
|
31
|
+
];
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtY2FydXNlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9mb3JtL2ludGVybmFsLWNhcnVzZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxNQUFNLE9BQU8seUJBQXlCO0lBUWxDLFlBQW9CLFdBQTJCO1FBQTNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUx2QyxhQUFRLEdBQUcsR0FBRyxDQUFDO1FBR2hCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUcxQixJQUFJLENBQUMsY0FBYyxHQUFHLDBDQUEwQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxXQUFXLENBQ1AsUUFBZ0IsRUFDaEIsVUFBa0IsRUFDbEIsWUFBaUI7UUFFakIsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBRTdCLElBQUksQ0FBQyxXQUFXO2FBQ1gsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxlQUFlLENBQUM7YUFDckUsU0FBUyxDQUNOLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDSixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELGlCQUFpQjtRQUNqQixXQUFXO1NBQ2QsQ0FBQztJQUNWLENBQUM7OztZQWxDSixVQUFVOzs7WUFGRixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGVwSHR0cFNlcnZpY2UgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXBJbnRlcm5hbENhcnVzZWxTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uVXJsOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBvYmplY3RJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgcGFyZW50SWQgPSAnMCc7XG4gICAgcHJpdmF0ZSBzZWFyY2hDb2RlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB2aWV3VHlwZTogc3RyaW5nO1xuICAgIHB1YmxpYyBhZGRpdGlvbmFsQXBpTmFtZSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogUGVwSHR0cFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvblVybCA9ICdTZXJ2aWNlMS5zdmMvdjEvT3JkZXJDZW50ZXIvVHJhbnNhY3Rpb24vJztcbiAgICB9XG5cbiAgICBpbml0Q2FydXNlbChcbiAgICAgICAgb2JqZWN0SWQ6IHN0cmluZyxcbiAgICAgICAgc2VhcmNoQ29kZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFja0Z1bmM6IGFueVxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIW9iamVjdElkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9iamVjdElkID0gb2JqZWN0SWQ7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29kZSA9IHNlYXJjaENvZGU7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZVxuICAgICAgICAgICAgLmdldFdhcGlBcGlDYWxsKGAke3RoaXMudHJhbnNhY3Rpb25Vcmx9JHt0aGlzLm9iamVjdElkfS9DYXJ1c2VsSXRlbXNgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRnVuYyhyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAoZXJyb3IpID0+IHt9LFxuICAgICAgICAgICAgICAgIC8vICgpID0+IHt9XG4gICAgICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -51,18 +51,6 @@ export class PepInternalPageComponent {
|
|
|
51
51
|
(_e = this.orgCont) === null || _e === void 0 ? void 0 : _e.insert(view);
|
|
52
52
|
}
|
|
53
53
|
setTimeout(() => {
|
|
54
|
-
// const buffer = [];
|
|
55
|
-
// if (this.childData.Rows) {
|
|
56
|
-
// // for (let i = 0; i < this.childData.Rows.length; i++) {
|
|
57
|
-
// for (const childDataRow of this.childData.Rows) {
|
|
58
|
-
// const osd = new ObjectSingleData(
|
|
59
|
-
// this.uiControl,
|
|
60
|
-
// childDataRow
|
|
61
|
-
// );
|
|
62
|
-
// osd.IsEditable = true;
|
|
63
|
-
// buffer.push(osd);
|
|
64
|
-
// }
|
|
65
|
-
// }
|
|
66
54
|
const viewType = this.isTableView()
|
|
67
55
|
? 'table'
|
|
68
56
|
: 'lines';
|
|
@@ -145,13 +133,6 @@ export class PepInternalPageComponent {
|
|
|
145
133
|
isTableView() {
|
|
146
134
|
return this.isMatrixView() || this.isFlatMatrixView();
|
|
147
135
|
}
|
|
148
|
-
// private getItemClass(): string {
|
|
149
|
-
// let res = '';
|
|
150
|
-
// if (!this.isTableView()) {
|
|
151
|
-
// res = 'line-view';
|
|
152
|
-
// }
|
|
153
|
-
// return res;
|
|
154
|
-
// }
|
|
155
136
|
changeChildrenViewType(viewTypeKey) {
|
|
156
137
|
this.rows = [];
|
|
157
138
|
this.uiControl = null;
|
|
@@ -161,9 +142,6 @@ export class PepInternalPageComponent {
|
|
|
161
142
|
break;
|
|
162
143
|
}
|
|
163
144
|
}
|
|
164
|
-
// check if view type changed
|
|
165
|
-
// if (this.currentViewType.Key != viewTypeKey) {
|
|
166
|
-
// window.scroll(0, 0); //or document.body.scrollTop = 0; or document.querySelector('body').scrollTo(0,0)
|
|
167
145
|
this.currentViewTypeTitle = this.currentViewType.Value;
|
|
168
146
|
this.internalPageService.changeChildrenViewType(this.currentViewType.Key, (res) => {
|
|
169
147
|
if (res.Rows) {
|
|
@@ -190,9 +168,6 @@ export class PepInternalPageComponent {
|
|
|
190
168
|
showMatrixDialog() {
|
|
191
169
|
const config = this.dialogService.getDialogConfig({
|
|
192
170
|
disableClose: false,
|
|
193
|
-
// minWidth: '50vw',
|
|
194
|
-
// maxWidth: '90vw',
|
|
195
|
-
// maxHeight: '90vh',
|
|
196
171
|
}, 'large');
|
|
197
172
|
const dialogRef = this.dialogService.openDialog(this.matrixDialogTemplate, {}, config);
|
|
198
173
|
dialogRef.afterOpened().subscribe(() => {
|
|
@@ -238,12 +213,6 @@ export class PepInternalPageComponent {
|
|
|
238
213
|
}
|
|
239
214
|
}
|
|
240
215
|
ngOnDestroy() {
|
|
241
|
-
// if (this.childChange) {
|
|
242
|
-
// this.childChange.unsubscribe();
|
|
243
|
-
// }
|
|
244
|
-
// if (this.childClick) {
|
|
245
|
-
// this.childClick.unsubscribe();
|
|
246
|
-
// }
|
|
247
216
|
if (this.resize) {
|
|
248
217
|
this.resize.unsubscribe();
|
|
249
218
|
}
|
|
@@ -379,4 +348,4 @@ PepInternalPageComponent.propDecorators = {
|
|
|
379
348
|
matrixDialogTemplate: [{ type: ViewChild, args: ['matrixDialogTemplate', { read: TemplateRef },] }],
|
|
380
349
|
customList: [{ type: ViewChild, args: [PepInternalListComponent,] }]
|
|
381
350
|
};
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUlILHVCQUF1QixFQUd2QixVQUFVLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0gsd0JBQXdCLEdBRTNCLE1BQU0sMkJBQTJCLENBQUM7QUFLbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFTekYsTUFBTSxPQUFPLHdCQUF3QjtJQXFEakMsWUFDYyxFQUFlLEVBQ2pCLGFBQStCLEVBQy9CLG1CQUEyQyxFQUM1QyxvQkFBNkMsRUFDNUMsVUFBc0IsRUFDdEIsaUJBQW9DO1FBTGxDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM1QyxlQUFVLEdB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LGVBQWUsQ0FBQyxHQUFHLEVBQ25CLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FDSixDQUFDO2FBQ0w7U0FDSjtRQUVELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7O0FBcmZNLG9EQUEyQixHQUM5Qix1Q0FBdUMsQ0FBQzs7WUFUL0MsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLHNvS0FBNkM7Z0JBRTdDLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNuQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQS9CbUIsV0FBVztZQW9CdEIsZ0JBQWdCO1lBbkJoQixzQkFBc0I7WUFNM0IsdUJBQXVCO1lBYnZCLFVBQVU7WUFJVixpQkFBaUI7OztvQkF3Q2hCLEtBQUs7eUJBQ0wsS0FBSzswQkFDTCxNQUFNO3lCQUNOLE1BQU07b0JBR04sU0FBUyxTQUFDLE9BQU87MkJBQ2pCLFNBQVMsU0FBQyxjQUFjO3NCQUV4QixTQUFTLFNBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO3lCQUMvQyxTQUFTLFNBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzZCQUVsRCxTQUFTLFNBQUMsZ0JBQWdCO21DQUMxQixTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO3lCQUd2RCxTQUFTLFNBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBlcEludGVybmFsUGFnZVNlcnZpY2UgfSBmcm9tICcuL2ludGVybmFsLXBhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0VHlwZSxcbiAgICBVSUNvbnRyb2wsXG4gICAgS2V5VmFsdWVQYWlyLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFVJQ29udHJvbEZpZWxkLFxuICAgIE9iamVjdHNEYXRhLFxuICAgIEZJRUxEX1RZUEUsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50LFxuICAgIFBlcExpc3RWaWV3VHlwZSxcbn0gZnJvbSAnLi9pbnRlcm5hbC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBGb3JtRmllbGRDbGlja0V2ZW50LFxuICAgIElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50LFxufSBmcm9tICcuL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFBlcERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kaWFsb2cnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvcXVhbnRpdHktc2VsZWN0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1pbnRlcm5hbC1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1BlcEludGVybmFsUGFnZVNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBJbnRlcm5hbFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIENVUlJFTlRfQURESVRJT05BTF9BUElfTkFNRSA9XG4gICAgICAgICdpdGVtX2RldGFpbHNfY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lJztcblxuICAgIGNvbnRyb2xUeXBlID0gJ2ludGVybmFsUGFnZSc7XG5cbiAgICBASW5wdXQoKSBmaWVsZDogYW55O1xuICAgIEBJbnB1dCgpIGxheW91dFR5cGU6IFBlcExheW91dFR5cGUgPSAnZm9ybSc7XG4gICAgQE91dHB1dCgpIGNoaWxkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGNoaWxkQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbXkxbW0nKSBteTFtbTogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdtYWluVmlld0NvbnQnKSBtYWluVmlld0NvbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdvcmdDb250JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIG9yZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGRpYWxvZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnbWF0cml4VGVtcGxhdGUnKSBtYXRyaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAVmlld0NoaWxkKCdtYXRyaXhEaWFsb2dUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBtYXRyaXhEaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50KVxuICAgIGN1c3RvbUxpc3Q6IFBlcEludGVybmFsTGlzdENvbXBvbmVudDtcblxuICAgIHJlc2l6ZTogYW55O1xuICAgIGNoZWNrRm9yQ2hhbmdlczogYW55ID0gbnVsbDtcblxuICAgIGNoaWxkRGF0YTogYW55ID0gbnVsbDtcblxuICAgIGVtcHR5Rm9ybTogRm9ybUdyb3VwO1xuICAgIHVpQ29udHJvbDogVUlDb250cm9sO1xuICAgIHJvd3M6IGFueTtcbiAgICBsaW5lVmlld1Jvd3M6IGFueTtcbiAgICB0b3RhbHNSb3c6IGFueSA9IFtdO1xuICAgIGFkZGl0aW9uYWxBcGlOYW1lczogYW55ID0gbnVsbDtcbiAgICBjdXJyZW50QWRkaXRpb25hbEFwaU5hbWU6IGFueSA9IG51bGw7XG4gICAgZm9jdXNlZFFTID0gZmFsc2U7XG4gICAgZmllbGRJZFdpdGhGb2N1cyA9ICcnO1xuICAgIGNvbHVtbldpZHRoID0gMTAwO1xuICAgIGNvdmVyQ2hpbGRUYWJsZSA9IGZhbHNlO1xuICAgIGNoaWxkVmlld1R5cGVzOiBBcnJheTxLZXlWYWx1ZVBhaXI8c3RyaW5nPj47XG4gICAgY3VycmVudFZpZXdUeXBlOiBLZXlWYWx1ZVBhaXI8c3RyaW5nPiA9IG51bGw7XG4gICAgY3VycmVudFZpZXdUeXBlVGl0bGU6IHN0cmluZztcbiAgICBzdW1PZk1pbkNvbFdpZHRoID0gMDtcbiAgICB0b3RhbFJvd3NXaWR0aCA9IDA7XG4gICAgdmlld1dpZHRoID0gJzEwMCUnO1xuICAgIHZpZXdIZWlnaHQgPSAnYXV0byc7XG4gICAgZGlzcGxheVFTYnRucyA9IHRydWU7XG4gICAgc2VsZWN0ZWRBcGlOYW1lID0gJyc7XG4gICAgc2hvd1NvcnQgPSBmYWxzZTtcbiAgICBkZWZhdWx0Um93U3BhbiA9IC0xO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogUGVwRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbnRlcm5hbFBhZ2VTZXJ2aWNlOiBQZXBJbnRlcm5hbFBhZ2VTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7IH1cblxuICAgIHByaXZhdGUgZmlsbERhdGEoaXNJbkRpYWxvZyA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLm1hdHJpeFRlbXBsYXRlLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKTtcblxuICAgICAgICB0aGlzLmN1c3RvbUxpc3Q/LmNsZWFyKCk7XG4gICAgICAgIHRoaXMub3JnQ29udD8uY2xlYXIoKTtcblxuICAgICAgICBpZiAoaXNJbkRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5pbnNlcnQodmlldyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9yZ0NvbnQ/Lmluc2VydCh2aWV3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gY29uc3QgYnVmZmVyID0gW107XG5cbiAgICAgICAgICAgIC8vIGlmICh0aGlzLmNoaWxkRGF0YS5Sb3dzKSB7XG4gICAgICAgICAgICAvLyAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoaWxkRGF0YS5Sb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAvLyAgICAgZm9yIChjb25zdCBjaGlsZERhdGFSb3cgb2YgdGhpcy5jaGlsZERhdGEuUm93cykge1xuICAgICAgICAgICAgLy8gICAgICAgICBjb25zdCBvc2QgPSBuZXcgT2JqZWN0U2luZ2xlRGF0YShcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIHRoaXMudWlDb250cm9sLFxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgY2hpbGREYXRhUm93XG4gICAgICAgICAgICAvLyAgICAgICAgICk7XG4gICAgICAgICAgICAvLyAgICAgICAgIG9zZC5Jc0VkaXRhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vICAgICAgICAgYnVmZmVyLnB1c2gob3NkKTtcbiAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBjb25zdCB2aWV3VHlwZTogUGVwTGlzdFZpZXdUeXBlID0gdGhpcy5pc1RhYmxlVmlldygpXG4gICAgICAgICAgICAgICAgPyAndGFibGUnXG4gICAgICAgICAgICAgICAgOiAnbGluZXMnO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21MaXN0LmluaXRMaXN0RGF0YShcbiAgICAgICAgICAgICAgICB0aGlzLnVpQ29udHJvbCxcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Ub3RhbFJvd3MsXG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEuUm93cyxcbiAgICAgICAgICAgICAgICB2aWV3VHlwZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VG90YWxzUm93KCk7XG5cbiAgICAgICAgICAgIC8vIGlmICghdGhpcy5jaGlsZE1vZGFsLmlzU2hvd24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuQ291bnQgPSB0aGlzLmNoaWxkRGF0YS5Sb3dzXG4gICAgICAgICAgICAgICAgPyB0aGlzLmNoaWxkRGF0YS5Sb3dzLmxlbmd0aFxuICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGlzRXZlbiA9IGNoaWxkcmVuQ291bnQgJSAyID09PSAwO1xuICAgICAgICAgICAgLy8gMyBmb3IgbWF0cml4ICYgZmxhdCBtYXRyaXggYmVjYXVzZSB0aGUgaGVhZGVyICsgdG90YWwgaXMgMiBtb3JlIHJvd3MuXG4gICAgICAgICAgICBjb25zdCByb3dzVG9BZGQgPVxuICAgICAgICAgICAgICAgIHRoaXMuaXNNYXRyaXhWaWV3KCkgfHwgdGhpcy5pc0ZsYXRNYXRyaXhWaWV3KClcbiAgICAgICAgICAgICAgICAgICAgPyBpc0V2ZW5cbiAgICAgICAgICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgICAgICAgICAgOiA0XG4gICAgICAgICAgICAgICAgICAgIDogMTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybVJvd0hlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVGb3JtRmllbGRIZWlnaHQoKSAqIDE2OyAvLyBjb252ZXJ0IHJlbSB0byBwaXhlbFxuXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgb25seSBpZiBub3Qgc2V0IHlldC5cbiAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRSb3dTcGFuID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFJvd1NwYW4gPSB0aGlzLmZpZWxkLnJvd1NwYW47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3VtT2ZNaW5Db2xXaWR0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUm93c1dpZHRoID0gMDtcblxuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEuVUlDb250cm9sLkNvbnRyb2xGaWVsZHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAodWlDb250cm9sRmllbGQ6IFVJQ29udHJvbEZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxSb3dzV2lkdGggKz0gdWlDb250cm9sRmllbGQuQ29sdW1uV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbEZpZWxkLm1pbkZpZWxkV2lkdGggPSB0aGlzLm1tVG9QeCgxMik7IC8vIE5FRUQgVE8gR0VUIFRISVMgUEFSQU0gRlJPTSBDVVNUT01JWkFUSU9OO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bU9mTWluQ29sV2lkdGggKz0gMTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRWaWV3Q292ZXIodGhpcy5jaGlsZERhdGEuUm93cyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvdmVyQ2hpbGRUYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucm93U3BhbiA9IHRoaXMuZGVmYXVsdFJvd1NwYW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEZvciBsaW5lIHZpZXcgQWRkIHRoZSBoZWlnaHQgb2YgdGhlIGxpbmUgKGZvcm0gaGVpZ2h0KS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5ID09PSAnT3JkZXJDZW50ZXJGbGF0TWF0cml4TGluZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnVpQ29udHJvbC5Db250cm9sRmllbGRzLm1hcCgoZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmLkxheW91dC5ZICsgZi5MYXlvdXQuSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyAqIDE2IGNvbnZlcnQgcmVtIHRvIHBpeGVsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhcmRSb3dzSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlQ2FyZFJvd3NIZWlnaHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Um93XG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbWF4Um93ICogMjQgKyA2MCAtIDI0IGZvciBlYWNoIHJvdyBpbiBjYXJkICsgNjAgZm9yIHRoZSBwYWRkaW5nIG9mIGVhY2ggY2FyZC5cbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3Qgcm93U3BhblRvQWRkID0gTWF0aC5mbG9vcihjaGlsZHJlbkNvdW50ICogKChjYXJkUm93c0hlaWdodCArIDU2KSAvIGZvcm1Sb3dIZWlnaHQpICsgcm93c1RvQWRkKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gKyAxNiBpcyB0aGUgMXJlbSBtYXJnaW4gb3V0c2lkZSBjYXJkLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dTcGFuVG9BZGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkcmVuQ291bnQgKiAoY2FyZFJvd3NIZWlnaHQgKyAxNikpIC9cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Sb3dIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvQWRkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnJvd1NwYW4gPSByb3dTcGFuVG9BZGQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgdGFibGVSb3dzSGVpZ2h0ID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQoY2hpbGRyZW5Db3VudCkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5maWVsZC5yb3dTcGFuID0gTWF0aC5jZWlsKCh0YWJsZVJvd3NIZWlnaHQgKyAocm93c1RvQWRkICogNDApKSAvIGZvcm1Sb3dIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAvLyAqIDE2IGNvbnZlcnQgcmVtIHRvIHBpeGVsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd3NUb0FkZEhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzVG9BZGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFibGVSb3dzSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChyb3dzVG9BZGRIZWlnaHQgKyB0YWJsZVJvd3NIZWlnaHQpIC8gZm9ybVJvd0hlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWxsQ2hpbGREYXRhKHJlczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpbGREYXRhID0gcmVzO1xuICAgICAgICB0aGlzLnVpQ29udHJvbCA9IHJlcy5VSUNvbnRyb2w7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbEFwaU5hbWVzID0gcmVzLkFkZGl0aW9uYWxBcGlOYW1lcztcblxuICAgICAgICB0aGlzLmZpbGxEYXRhKCk7XG4gICAgfVxuXG4gICAgbW1Ub1B4KG1tKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5teTFtbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobW0gKiBoZWlnaHQpOyAvLyByZXR1cm5zIHNpemVzIGluIFBYXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01hdHJpeFZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSAmJlxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5ID09PSAnT3JkZXJDZW50ZXJNYXRyaXgnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZsYXRNYXRyaXhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyRmxhdE1hdHJpeEdyaWQnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNUYWJsZVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpO1xuICAgIH1cblxuICAgIC8vIHByaXZhdGUgZ2V0SXRlbUNsYXNzKCk6IHN0cmluZyB7XG4gICAgLy8gICAgIGxldCByZXMgPSAnJztcblxuICAgIC8vICAgICBpZiAoIXRoaXMuaXNUYWJsZVZpZXcoKSkge1xuICAgIC8vICAgICAgICAgcmVzID0gJ2xpbmUtdmlldyc7XG4gICAgLy8gICAgIH1cblxuICAgIC8vICAgICByZXR1cm4gcmVzO1xuICAgIC8vIH1cblxuICAgIGNoYW5nZUNoaWxkcmVuVmlld1R5cGUodmlld1R5cGVLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICAgICAgdGhpcy51aUNvbnRyb2wgPSBudWxsO1xuXG4gICAgICAgIGZvciAoY29uc3QgdnQgb2YgdGhpcy5jaGlsZFZpZXdUeXBlcykge1xuICAgICAgICAgICAgaWYgKHZ0LktleSA9PT0gdmlld1R5cGVLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSA9IHZ0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGlmIHZpZXcgdHlwZSBjaGFuZ2VkXG4gICAgICAgIC8vIGlmICh0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXkgIT0gdmlld1R5cGVLZXkpIHtcblxuICAgICAgICAvLyB3aW5kb3cuc2Nyb2xsKDAsIDApOyAvL29yIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDsgb3IgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLnNjcm9sbFRvKDAsMClcblxuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZVRpdGxlID0gdGhpcy5jdXJyZW50Vmlld1R5cGUuVmFsdWU7XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoYW5nZUNoaWxkcmVuVmlld1R5cGUoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXksXG4gICAgICAgICAgICAocmVzOiBPYmplY3RzRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuUm93cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGxDaGlsZERhdGEocmVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0Vmlld0NvdmVyKHJvd3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFyb3dzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRyaXhDb250ID0gdGhpcy5tYWluVmlld0NvbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgdmlld1dpZHRoID0gbWF0cml4Q29udC5jbGllbnRXaWR0aDtcblxuICAgICAgICB0aGlzLnZpZXdXaWR0aCA9IHZpZXdXaWR0aCA/IHZpZXdXaWR0aC50b1N0cmluZygpIDogJzEwMCUnO1xuXG4gICAgICAgIC8vIGlmIHRoZSBtYXRyaXggbG9jYXRlZCBvbiB0aGUgYm90dG9tIC8gdGhlcmUgaXMgbm90aGluZyB1bmRlciB0aGUgbWF0cml4IHdlIGRvbnQgbmVlZCB0byBjaGVjayB0aGUgaGVpZ2h0XG4gICAgICAgIGlmIChwYXJzZUludCh2aWV3V2lkdGgsIDEwKSA8IHRoaXMubW1Ub1B4KHRoaXMuc3VtT2ZNaW5Db2xXaWR0aCkpIHtcbiAgICAgICAgICAgIHRoaXMuY292ZXJDaGlsZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY292ZXJDaGlsZFRhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHNob3dNYXRyaXhEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXREaWFsb2dDb25maWcoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAvLyBtaW5XaWR0aDogJzUwdncnLFxuICAgICAgICAgICAgICAgIC8vIG1heFdpZHRoOiAnOTB2dycsXG4gICAgICAgICAgICAgICAgLy8gbWF4SGVpZ2h0OiAnOTB2aCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2xhcmdlJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKFxuICAgICAgICAgICAgdGhpcy5tYXRyaXhEaWFsb2dUZW1wbGF0ZSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsbERhdGEodHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsbERhdGEoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gbGV0IGZpZWxkID0gdGhpcy5maWVsZCBhcyBQZXBJbnRlcm5hbFBhZ2VGaWVsZDtcblxuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuaW5pdERldGFpbHMoXG4gICAgICAgICAgICB0aGlzLmZpZWxkLm9iamVjdElkLFxuICAgICAgICAgICAgdGhpcy5maWVsZC5wYXJlbnRJZCxcbiAgICAgICAgICAgIHRoaXMuZmllbGQuc2VhcmNoQ29kZSxcbiAgICAgICAgICAgIChyZXNWaWV3VHlwZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIG15IGNvZGUgREktNzEzNFxuICAgICAgICAgICAgICAgIHJlc1ZpZXdUeXBlcy5Sb3dzID0gcmVzVmlld1R5cGVzLlJvd3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5LZXkgIT09ICdPcmRlckNlbnRlclZpZXcxJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzVmlld1R5cGVzLlJvd3MgJiYgcmVzVmlld1R5cGVzLlJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc1ZpZXdUeXBlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNWaWV3VHlwZXMuRGVmYXVsdCA9IHJlc1ZpZXdUeXBlcy5Sb3dzWzBdLktleTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkVmlld1R5cGVzID0gcmVzVmlld1R5cGVzLlJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlID0gcmVzVmlld1R5cGVzLlJvd3NbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yICh2YXIgaSA9IDA7IGkgPCByZXNWaWV3VHlwZXMuUm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZpZXdUeXBlUm93IG9mIHJlc1ZpZXdUeXBlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlld1R5cGVSb3cuVmFsdWUgPT09IHJlc1ZpZXdUeXBlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgPSB2aWV3VHlwZVJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZExhc3RBZGRpdGlvbmFsQXBpTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNoaWxkcmVuVmlld1R5cGUodGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZXNpemUgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Vmlld0NvdmVyKHRoaXMucm93cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkTGFzdEFkZGl0aW9uYWxBcGlOYW1lKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYWEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICAgICAgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50LkNVUlJFTlRfQURESVRJT05BTF9BUElfTkFNRVxuICAgICAgICApO1xuICAgICAgICBpZiAoZGFhICYmIGRhYS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsQXBpTmFtZSA9IEpTT04ucGFyc2UoZGFhKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuYWRkaXRpb25hbEFwaU5hbWUgPSBhZGRpdGlvbmFsQXBpTmFtZT8uS2V5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIGlmICh0aGlzLmNoaWxkQ2hhbmdlKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmNoaWxkQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBpZiAodGhpcy5jaGlsZENsaWNrKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmNoaWxkQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemUudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUFkZGl0aW9uYWxBcGlOYW1lKGFkZGl0aW9uYWxBcGlOYW1lKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShcbiAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lID8gYWRkaXRpb25hbEFwaU5hbWUuS2V5IDogJycsXG4gICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcmVzLlJvd3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcmVzLlJvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICAgICAgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50LkNVUlJFTlRfQURESVRJT05BTF9BUElfTkFNRSxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFkZGl0aW9uYWxBcGlOYW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkaXRpb25hbEFwaU5hbWUgPSBhZGRpdGlvbmFsQXBpTmFtZTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgc2V0VG90YWxzUm93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvdGFsc1JvdyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpKSB7XG4gICAgICAgICAgICBsZXQgdG90YWxDb2wgPSAwO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuY3VzdG9tTGlzdC5pdGVtcztcbiAgICAgICAgICAgIGlmIChpdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IGl0ZW1zWzBdLkZpZWxkcy5sZW5ndGg7IGNvbCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gaXRlbXNbMF0uRmllbGRzW2NvbF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyRm9yTWF0cml4IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBGSUVMRF9UWVBFLk51bWJlckludGVnZXJRdWFudGl0eVNlbGVjdG9yIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVyUmVhbEZvck1hdHJpeCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfVFlQRS5OdW1iZXJSZWFsUXVhbnRpdHlTZWxlY3RvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLkNhbGN1bGF0ZWRJbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuQ2FsY3VsYXRlZFJlYWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJSZWFsXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb2wgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaXN0SXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uRmllbGRzW2NvbF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uRmllbGRzW2NvbF0uVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdLlZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sICs9IGlzTmFOKG51bSkgPyAwIDogbnVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxzUm93LnB1c2godG90YWxDb2wpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbHNSb3cucHVzaCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDaGFuZ2VzKGVsZW1lbnRUb1VwZGF0ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VzdG9tTGlzdC51cGRhdGVJdGVtKGVsZW1lbnRUb1VwZGF0ZSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIG1lbW9yeSBkYXRhXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoaWxkRGF0YS5Sb3dzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGREYXRhLlJvd3NbaW5kZXhdLlVJRCA9PT0gZWxlbWVudFRvVXBkYXRlLlVJRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlJvd3NbaW5kZXhdID0gZWxlbWVudFRvVXBkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VmFsdWVDYWxsYmFjayhpZDogYW55LCByZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAocmVzLlJvd3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IHJlcy5Sb3dzWzBdLkZpZWxkcy5maW5kKChmKSA9PiBmLkFwaU5hbWUgPT09ICdPYmplY3RNZW51Jyk7XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBIQUNLIDogVW50aWwgXCJFbmFibGVkXCIgcmV0dXJucyBmcm9tIHRoZSBzZXJ2ZXIsIHdlIHNldCBQZXBNZW51IHRvIGJlXG4gICAgICAgICAgICAgICAgLy8gICAgICAgIERpc2FibGVkIGluIGNhcnQgb24gcmVndWxhciBpdGVtcyBhbmQgbm90IGNhbXBpZ24gaXRlbXMuXG4gICAgICAgICAgICAgICAgZmllbGQuRW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhyZXMuUm93c1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFRvdGFsc1JvdygpO1xuICAgICAgICB0aGlzLmNoZWNrRm9yQ2hhbmdlcyA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgLy8gREktMTU5ODVcbiAgICAgICAgdGhpcy5jaGlsZENoYW5nZS5lbWl0KHJlcyk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZU9iamVjdENoYW5nZWQoXG4gICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhOiBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudFxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hpbGRWYWx1ZUNoYW5nZWQoXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5pZCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLmtleSxcbiAgICAgICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLnZhbHVlLFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLmlkLCByZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQ3VzdG9taXplRmllbGRDbGljayhmaWVsZENsaWNrRXZlbnQ6IElQZXBGb3JtRmllbGRDbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBoYW5kbGVkRXZlbnQgPSBmYWxzZTtcblxuICAgICAgICAvLyBGb3IgdGhlIG5ldyBjdXN0b20gZm9ybSwgdGhlIHBsdXMgYW5kIG1pbnVzIGV2ZW50cyB0cmFuc2Zvcm0gaW4gdGhlIElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50XG4gICAgICAgIGlmIChmaWVsZENsaWNrRXZlbnQuY29udHJvbFR5cGUgPT09ICdxcycpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZENsaWNrRXZlbnQudmFsdWUgPT09IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuUExVUykge1xuICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkUGx1c0NsaWNrKFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGZpZWxkQ2xpY2tFdmVudC5pZCwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC52YWx1ZSA9PT0gUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudC5NSU5VU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hpbGRNaW51c0NsaWNrKFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGZpZWxkQ2xpY2tFdmVudC5pZCwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhbmRsZWRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZENsaWNrLmVtaXQoZmllbGRDbGlja0V2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUlILHVCQUF1QixFQUd2QixVQUFVLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0gsd0JBQXdCLEdBRTNCLE1BQU0sMkJBQTJCLENBQUM7QUFLbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFTekYsTUFBTSxPQUFPLHdCQUF3QjtJQXFEakMsWUFDYyxFQUFlLEVBQ2pCLGFBQStCLEVBQy9CLG1CQUEyQyxFQUM1QyxvQkFBNkMsRUFDNUMsVUFBc0IsRUFDdEIsaUJBQW9DO1FBTGxDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM1QyxlQUFVLEdB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OzthQUNsRDs7O1lBL0JtQixXQUFXO1lBb0J0QixnQkFBZ0I7WUFuQmhCLHNCQUFzQjtZQU0zQix1QkFBdUI7WUFidkIsVUFBVTtZQUlWLGlCQUFpQjs7O29CQXdDaEIsS0FBSzt5QkFDTCxLQUFLOzBCQUNMLE1BQU07eUJBQ04sTUFBTTtvQkFHTixTQUFTLFNBQUMsT0FBTzsyQkFDakIsU0FBUyxTQUFDLGNBQWM7c0JBRXhCLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7eUJBQy9DLFNBQVMsU0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7NkJBRWxELFNBQVMsU0FBQyxnQkFBZ0I7bUNBQzFCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7eUJBR3ZELFNBQVMsU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGVwSW50ZXJuYWxQYWdlU2VydmljZSB9IGZyb20gJy4vaW50ZXJuYWwtcGFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFVJQ29udHJvbCxcbiAgICBLZXlWYWx1ZVBhaXIsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgVUlDb250cm9sRmllbGQsXG4gICAgT2JqZWN0c0RhdGEsXG4gICAgRklFTERfVFlQRSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBQZXBJbnRlcm5hbExpc3RDb21wb25lbnQsXG4gICAgUGVwTGlzdFZpZXdUeXBlLFxufSBmcm9tICcuL2ludGVybmFsLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQsXG4gICAgSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQsXG59IGZyb20gJy4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVwRGlhbG9nU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RpYWxvZyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9xdWFudGl0eS1zZWxlY3Rvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWludGVybmFsLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwSW50ZXJuYWxQYWdlU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgQ1VSUkVOVF9BRERJVElPTkFMX0FQSV9OQU1FID1cbiAgICAgICAgJ2l0ZW1fZGV0YWlsc19jdXJyZW50QWRkaXRpb25hbEFwaU5hbWUnO1xuXG4gICAgY29udHJvbFR5cGUgPSAnaW50ZXJuYWxQYWdlJztcblxuICAgIEBJbnB1dCgpIGZpZWxkOiBhbnk7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcbiAgICBAT3V0cHV0KCkgY2hpbGRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgY2hpbGRDbGljazogRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZvcm1GaWVsZENsaWNrRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdteTFtbScpIG15MW1tOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ21haW5WaWV3Q29udCcpIG1haW5WaWV3Q29udDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ29yZ0NvbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgb3JnQ29udDogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dDb250JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgZGlhbG9nQ29udDogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdtYXRyaXhUZW1wbGF0ZScpIG1hdHJpeFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ21hdHJpeERpYWxvZ1RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIG1hdHJpeERpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChQZXBJbnRlcm5hbExpc3RDb21wb25lbnQpXG4gICAgY3VzdG9tTGlzdDogUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50O1xuXG4gICAgcmVzaXplOiBhbnk7XG4gICAgY2hlY2tGb3JDaGFuZ2VzOiBhbnkgPSBudWxsO1xuXG4gICAgY2hpbGREYXRhOiBhbnkgPSBudWxsO1xuXG4gICAgZW1wdHlGb3JtOiBGb3JtR3JvdXA7XG4gICAgdWlDb250cm9sOiBVSUNvbnRyb2w7XG4gICAgcm93czogYW55O1xuICAgIGxpbmVWaWV3Um93czogYW55O1xuICAgIHRvdGFsc1JvdzogYW55ID0gW107XG4gICAgYWRkaXRpb25hbEFwaU5hbWVzOiBhbnkgPSBudWxsO1xuICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZTogYW55ID0gbnVsbDtcbiAgICBmb2N1c2VkUVMgPSBmYWxzZTtcbiAgICBmaWVsZElkV2l0aEZvY3VzID0gJyc7XG4gICAgY29sdW1uV2lkdGggPSAxMDA7XG4gICAgY292ZXJDaGlsZFRhYmxlID0gZmFsc2U7XG4gICAgY2hpbGRWaWV3VHlwZXM6IEFycmF5PEtleVZhbHVlUGFpcjxzdHJpbmc+PjtcbiAgICBjdXJyZW50Vmlld1R5cGU6IEtleVZhbHVlUGFpcjxzdHJpbmc+ID0gbnVsbDtcbiAgICBjdXJyZW50Vmlld1R5cGVUaXRsZTogc3RyaW5nO1xuICAgIHN1bU9mTWluQ29sV2lkdGggPSAwO1xuICAgIHRvdGFsUm93c1dpZHRoID0gMDtcbiAgICB2aWV3V2lkdGggPSAnMTAwJSc7XG4gICAgdmlld0hlaWdodCA9ICdhdXRvJztcbiAgICBkaXNwbGF5UVNidG5zID0gdHJ1ZTtcbiAgICBzZWxlY3RlZEFwaU5hbWUgPSAnJztcbiAgICBzaG93U29ydCA9IGZhbHNlO1xuICAgIGRlZmF1bHRSb3dTcGFuID0gLTE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGZiOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGludGVybmFsUGFnZVNlcnZpY2U6IFBlcEludGVybmFsUGFnZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHsgfVxuXG4gICAgcHJpdmF0ZSBmaWxsRGF0YShpc0luRGlhbG9nID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmlldyA9IHRoaXMubWF0cml4VGVtcGxhdGUuY3JlYXRlRW1iZWRkZWRWaWV3KG51bGwpO1xuXG4gICAgICAgIHRoaXMuY3VzdG9tTGlzdD8uY2xlYXIoKTtcbiAgICAgICAgdGhpcy5vcmdDb250Py5jbGVhcigpO1xuXG4gICAgICAgIGlmIChpc0luRGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ0NvbnQ/LmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ0NvbnQ/Lmluc2VydCh2aWV3KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3JnQ29udD8uaW5zZXJ0KHZpZXcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2aWV3VHlwZTogUGVwTGlzdFZpZXdUeXBlID0gdGhpcy5pc1RhYmxlVmlldygpXG4gICAgICAgICAgICAgICAgPyAndGFibGUnXG4gICAgICAgICAgICAgICAgOiAnbGluZXMnO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21MaXN0LmluaXRMaXN0RGF0YShcbiAgICAgICAgICAgICAgICB0aGlzLnVpQ29udHJvbCxcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Ub3RhbFJvd3MsXG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEuUm93cyxcbiAgICAgICAgICAgICAgICB2aWV3VHlwZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VG90YWxzUm93KCk7XG5cbiAgICAgICAgICAgIC8vIGlmICghdGhpcy5jaGlsZE1vZGFsLmlzU2hvd24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuQ291bnQgPSB0aGlzLmNoaWxkRGF0YS5Sb3dzXG4gICAgICAgICAgICAgICAgPyB0aGlzLmNoaWxkRGF0YS5Sb3dzLmxlbmd0aFxuICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGlzRXZlbiA9IGNoaWxkcmVuQ291bnQgJSAyID09PSAwO1xuICAgICAgICAgICAgLy8gMyBmb3IgbWF0cml4ICYgZmxhdCBtYXRyaXggYmVjYXVzZSB0aGUgaGVhZGVyICsgdG90YWwgaXMgMiBtb3JlIHJvd3MuXG4gICAgICAgICAgICBjb25zdCByb3dzVG9BZGQgPVxuICAgICAgICAgICAgICAgIHRoaXMuaXNNYXRyaXhWaWV3KCkgfHwgdGhpcy5pc0ZsYXRNYXRyaXhWaWV3KClcbiAgICAgICAgICAgICAgICAgICAgPyBpc0V2ZW5cbiAgICAgICAgICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgICAgICAgICAgOiA0XG4gICAgICAgICAgICAgICAgICAgIDogMTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybVJvd0hlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVGb3JtRmllbGRIZWlnaHQoKSAqIDE2OyAvLyBjb252ZXJ0IHJlbSB0byBwaXhlbFxuXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgb25seSBpZiBub3Qgc2V0IHlldC5cbiAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRSb3dTcGFuID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFJvd1NwYW4gPSB0aGlzLmZpZWxkLnJvd1NwYW47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3VtT2ZNaW5Db2xXaWR0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUm93c1dpZHRoID0gMDtcblxuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEuVUlDb250cm9sLkNvbnRyb2xGaWVsZHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAodWlDb250cm9sRmllbGQ6IFVJQ29udHJvbEZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxSb3dzV2lkdGggKz0gdWlDb250cm9sRmllbGQuQ29sdW1uV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbEZpZWxkLm1pbkZpZWxkV2lkdGggPSB0aGlzLm1tVG9QeCgxMik7IC8vIE5FRUQgVE8gR0VUIFRISVMgUEFSQU0gRlJPTSBDVVNUT01JWkFUSU9OO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bU9mTWluQ29sV2lkdGggKz0gMTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRWaWV3Q292ZXIodGhpcy5jaGlsZERhdGEuUm93cyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvdmVyQ2hpbGRUYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucm93U3BhbiA9IHRoaXMuZGVmYXVsdFJvd1NwYW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEZvciBsaW5lIHZpZXcgQWRkIHRoZSBoZWlnaHQgb2YgdGhlIGxpbmUgKGZvcm0gaGVpZ2h0KS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5ID09PSAnT3JkZXJDZW50ZXJGbGF0TWF0cml4TGluZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnVpQ29udHJvbC5Db250cm9sRmllbGRzLm1hcCgoZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmLkxheW91dC5ZICsgZi5MYXlvdXQuSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyAqIDE2IGNvbnZlcnQgcmVtIHRvIHBpeGVsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhcmRSb3dzSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlQ2FyZFJvd3NIZWlnaHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Um93XG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbWF4Um93ICogMjQgKyA2MCAtIDI0IGZvciBlYWNoIHJvdyBpbiBjYXJkICsgNjAgZm9yIHRoZSBwYWRkaW5nIG9mIGVhY2ggY2FyZC5cbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3Qgcm93U3BhblRvQWRkID0gTWF0aC5mbG9vcihjaGlsZHJlbkNvdW50ICogKChjYXJkUm93c0hlaWdodCArIDU2KSAvIGZvcm1Sb3dIZWlnaHQpICsgcm93c1RvQWRkKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gKyAxNiBpcyB0aGUgMXJlbSBtYXJnaW4gb3V0c2lkZSBjYXJkLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dTcGFuVG9BZGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkcmVuQ291bnQgKiAoY2FyZFJvd3NIZWlnaHQgKyAxNikpIC9cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Sb3dIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvQWRkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnJvd1NwYW4gPSByb3dTcGFuVG9BZGQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgdGFibGVSb3dzSGVpZ2h0ID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQoY2hpbGRyZW5Db3VudCkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5maWVsZC5yb3dTcGFuID0gTWF0aC5jZWlsKCh0YWJsZVJvd3NIZWlnaHQgKyAocm93c1RvQWRkICogNDApKSAvIGZvcm1Sb3dIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAvLyAqIDE2IGNvbnZlcnQgcmVtIHRvIHBpeGVsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd3NUb0FkZEhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzVG9BZGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFibGVSb3dzSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChyb3dzVG9BZGRIZWlnaHQgKyB0YWJsZVJvd3NIZWlnaHQpIC8gZm9ybVJvd0hlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWxsQ2hpbGREYXRhKHJlczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpbGREYXRhID0gcmVzO1xuICAgICAgICB0aGlzLnVpQ29udHJvbCA9IHJlcy5VSUNvbnRyb2w7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbEFwaU5hbWVzID0gcmVzLkFkZGl0aW9uYWxBcGlOYW1lcztcblxuICAgICAgICB0aGlzLmZpbGxEYXRhKCk7XG4gICAgfVxuXG4gICAgbW1Ub1B4KG1tKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5teTFtbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobW0gKiBoZWlnaHQpOyAvLyByZXR1cm5zIHNpemVzIGluIFBYXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01hdHJpeFZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSAmJlxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5ID09PSAnT3JkZXJDZW50ZXJNYXRyaXgnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZsYXRNYXRyaXhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyRmxhdE1hdHJpeEdyaWQnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNUYWJsZVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpO1xuICAgIH1cblxuICAgIGNoYW5nZUNoaWxkcmVuVmlld1R5cGUodmlld1R5cGVLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICAgICAgdGhpcy51aUNvbnRyb2wgPSBudWxsO1xuXG4gICAgICAgIGZvciAoY29uc3QgdnQgb2YgdGhpcy5jaGlsZFZpZXdUeXBlcykge1xuICAgICAgICAgICAgaWYgKHZ0LktleSA9PT0gdmlld1R5cGVLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSA9IHZ0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGVUaXRsZSA9IHRoaXMuY3VycmVudFZpZXdUeXBlLlZhbHVlO1xuXG4gICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGFuZ2VDaGlsZHJlblZpZXdUeXBlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5LFxuICAgICAgICAgICAgKHJlczogT2JqZWN0c0RhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLlJvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsQ2hpbGREYXRhKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldFZpZXdDb3Zlcihyb3dzKTogdm9pZCB7XG4gICAgICAgIGlmICghcm93cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0cml4Q29udCA9IHRoaXMubWFpblZpZXdDb250Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHZpZXdXaWR0aCA9IG1hdHJpeENvbnQuY2xpZW50V2lkdGg7XG5cbiAgICAgICAgdGhpcy52aWV3V2lkdGggPSB2aWV3V2lkdGggPyB2aWV3V2lkdGgudG9TdHJpbmcoKSA6ICcxMDAlJztcblxuICAgICAgICAvLyBpZiB0aGUgbWF0cml4IGxvY2F0ZWQgb24gdGhlIGJvdHRvbSAvIHRoZXJlIGlzIG5vdGhpbmcgdW5kZXIgdGhlIG1hdHJpeCB3ZSBkb250IG5lZWQgdG8gY2hlY2sgdGhlIGhlaWdodFxuICAgICAgICBpZiAocGFyc2VJbnQodmlld1dpZHRoLCAxMCkgPCB0aGlzLm1tVG9QeCh0aGlzLnN1bU9mTWluQ29sV2lkdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmNvdmVyQ2hpbGRUYWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvdmVyQ2hpbGRUYWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBzaG93TWF0cml4RGlhbG9nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0RGlhbG9nQ29uZmlnKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2xhcmdlJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKFxuICAgICAgICAgICAgdGhpcy5tYXRyaXhEaWFsb2dUZW1wbGF0ZSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsbERhdGEodHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsbERhdGEoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gbGV0IGZpZWxkID0gdGhpcy5maWVsZCBhcyBQZXBJbnRlcm5hbFBhZ2VGaWVsZDtcblxuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuaW5pdERldGFpbHMoXG4gICAgICAgICAgICB0aGlzLmZpZWxkLm9iamVjdElkLFxuICAgICAgICAgICAgdGhpcy5maWVsZC5wYXJlbnRJZCxcbiAgICAgICAgICAgIHRoaXMuZmllbGQuc2VhcmNoQ29kZSxcbiAgICAgICAgICAgIChyZXNWaWV3VHlwZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIG15IGNvZGUgREktNzEzNFxuICAgICAgICAgICAgICAgIHJlc1ZpZXdUeXBlcy5Sb3dzID0gcmVzVmlld1R5cGVzLlJvd3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5LZXkgIT09ICdPcmRlckNlbnRlclZpZXcxJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzVmlld1R5cGVzLlJvd3MgJiYgcmVzVmlld1R5cGVzLlJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc1ZpZXdUeXBlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNWaWV3VHlwZXMuRGVmYXVsdCA9IHJlc1ZpZXdUeXBlcy5Sb3dzWzBdLktleTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkVmlld1R5cGVzID0gcmVzVmlld1R5cGVzLlJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlID0gcmVzVmlld1R5cGVzLlJvd3NbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yICh2YXIgaSA9IDA7IGkgPCByZXNWaWV3VHlwZXMuUm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZpZXdUeXBlUm93IG9mIHJlc1ZpZXdUeXBlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlld1R5cGVSb3cuVmFsdWUgPT09IHJlc1ZpZXdUeXBlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgPSB2aWV3VHlwZVJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZExhc3RBZGRpdGlvbmFsQXBpTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNoaWxkcmVuVmlld1R5cGUodGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZXNpemUgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Vmlld0NvdmVyKHRoaXMucm93cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkTGFzdEFkZGl0aW9uYWxBcGlOYW1lKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYWEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICAgICAgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50LkNVUlJFTlRfQURESVRJT05BTF9BUElfTkFNRVxuICAgICAgICApO1xuICAgICAgICBpZiAoZGFhICYmIGRhYS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsQXBpTmFtZSA9IEpTT04ucGFyc2UoZGFhKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuYWRkaXRpb25hbEFwaU5hbWUgPSBhZGRpdGlvbmFsQXBpTmFtZT8uS2V5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemUudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUFkZGl0aW9uYWxBcGlOYW1lKGFkZGl0aW9uYWxBcGlOYW1lKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShcbiAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lID8gYWRkaXRpb25hbEFwaU5hbWUuS2V5IDogJycsXG4gICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcmVzLlJvd3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcmVzLlJvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICAgICAgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50LkNVUlJFTlRfQURESVRJT05BTF9BUElfTkFNRSxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFkZGl0aW9uYWxBcGlOYW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkaXRpb25hbEFwaU5hbWUgPSBhZGRpdGlvbmFsQXBpTmFtZTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgc2V0VG90YWxzUm93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvdGFsc1JvdyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpKSB7XG4gICAgICAgICAgICBsZXQgdG90YWxDb2wgPSAwO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuY3VzdG9tTGlzdC5pdGVtcztcbiAgICAgICAgICAgIGlmIChpdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IGl0ZW1zWzBdLkZpZWxkcy5sZW5ndGg7IGNvbCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gaXRlbXNbMF0uRmllbGRzW2NvbF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyRm9yTWF0cml4IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBGSUVMRF9UWVBFLk51bWJlckludGVnZXJRdWFudGl0eVNlbGVjdG9yIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVyUmVhbEZvck1hdHJpeCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfVFlQRS5OdW1iZXJSZWFsUXVhbnRpdHlTZWxlY3RvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLkNhbGN1bGF0ZWRJbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuQ2FsY3VsYXRlZFJlYWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJSZWFsXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb2wgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaXN0SXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uRmllbGRzW2NvbF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uRmllbGRzW2NvbF0uVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdLlZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sICs9IGlzTmFOKG51bSkgPyAwIDogbnVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxzUm93LnB1c2godG90YWxDb2wpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbHNSb3cucHVzaCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDaGFuZ2VzKGVsZW1lbnRUb1VwZGF0ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VzdG9tTGlzdC51cGRhdGVJdGVtKGVsZW1lbnRUb1VwZGF0ZSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIG1lbW9yeSBkYXRhXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoaWxkRGF0YS5Sb3dzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGREYXRhLlJvd3NbaW5kZXhdLlVJRCA9PT0gZWxlbWVudFRvVXBkYXRlLlVJRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlJvd3NbaW5kZXhdID0gZWxlbWVudFRvVXBkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VmFsdWVDYWxsYmFjayhpZDogYW55LCByZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAocmVzLlJvd3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IHJlcy5Sb3dzWzBdLkZpZWxkcy5maW5kKChmKSA9PiBmLkFwaU5hbWUgPT09ICdPYmplY3RNZW51Jyk7XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBIQUNLIDogVW50aWwgXCJFbmFibGVkXCIgcmV0dXJucyBmcm9tIHRoZSBzZXJ2ZXIsIHdlIHNldCBQZXBNZW51IHRvIGJlXG4gICAgICAgICAgICAgICAgLy8gICAgICAgIERpc2FibGVkIGluIGNhcnQgb24gcmVndWxhciBpdGVtcyBhbmQgbm90IGNhbXBpZ24gaXRlbXMuXG4gICAgICAgICAgICAgICAgZmllbGQuRW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhyZXMuUm93c1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFRvdGFsc1JvdygpO1xuICAgICAgICB0aGlzLmNoZWNrRm9yQ2hhbmdlcyA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgLy8gREktMTU5ODVcbiAgICAgICAgdGhpcy5jaGlsZENoYW5nZS5lbWl0KHJlcyk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZU9iamVjdENoYW5nZWQoXG4gICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhOiBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudFxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hpbGRWYWx1ZUNoYW5nZWQoXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5pZCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLmtleSxcbiAgICAgICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLnZhbHVlLFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLmlkLCByZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQ3VzdG9taXplRmllbGRDbGljayhmaWVsZENsaWNrRXZlbnQ6IElQZXBGb3JtRmllbGRDbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBoYW5kbGVkRXZlbnQgPSBmYWxzZTtcblxuICAgICAgICAvLyBGb3IgdGhlIG5ldyBjdXN0b20gZm9ybSwgdGhlIHBsdXMgYW5kIG1pbnVzIGV2ZW50cyB0cmFuc2Zvcm0gaW4gdGhlIElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50XG4gICAgICAgIGlmIChmaWVsZENsaWNrRXZlbnQuY29udHJvbFR5cGUgPT09ICdxcycpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZENsaWNrRXZlbnQudmFsdWUgPT09IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuUExVUykge1xuICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkUGx1c0NsaWNrKFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGZpZWxkQ2xpY2tFdmVudC5pZCwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC52YWx1ZSA9PT0gUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudC5NSU5VU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hpbGRNaW51c0NsaWNrKFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGZpZWxkQ2xpY2tFdmVudC5pZCwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhbmRsZWRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZENsaWNrLmVtaXQoZmllbGRDbGlja0V2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -5,8 +5,10 @@ export * from './public-api';
|
|
|
5
5
|
export { PepFieldGeneratorComponent as ɵa } from './field-generator.component';
|
|
6
6
|
export { PepIndicatorsComponent as ɵb } from './indicators.component';
|
|
7
7
|
export { PepInternalButtonComponent as ɵc } from './internal-button.component';
|
|
8
|
+
export { PepInternalCaruselComponent as ɵh } from './internal-carusel.component';
|
|
9
|
+
export { PepInternalCaruselService as ɵi } from './internal-carusel.service';
|
|
8
10
|
export { PepInternalListComponent as ɵd } from './internal-list.component';
|
|
9
11
|
export { PepInternalMenuComponent as ɵe } from './internal-menu.component';
|
|
10
12
|
export { PepInternalPageComponent as ɵf } from './internal-page.component';
|
|
11
13
|
export { PepInternalPageService as ɵg } from './internal-page.service';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVwcGVyaS1hZGRvbnMtbmd4LWxpYi1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9mb3JtL3BlcHBlcmktYWRkb25zLW5neC1saWItZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEUsT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdFLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRSxPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0UsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFDLHNCQUFzQixJQUFJLEVBQUUsRUFBQyxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge1BlcEZpZWxkR2VuZXJhdG9yQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9maWVsZC1nZW5lcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7UGVwSW5kaWNhdG9yc0NvbXBvbmVudCBhcyDJtWJ9IGZyb20gJy4vaW5kaWNhdG9ycy5jb21wb25lbnQnO1xuZXhwb3J0IHtQZXBJbnRlcm5hbEJ1dHRvbkNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vaW50ZXJuYWwtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQge1BlcEludGVybmFsQ2FydXNlbENvbXBvbmVudCBhcyDJtWh9IGZyb20gJy4vaW50ZXJuYWwtY2FydXNlbC5jb21wb25lbnQnO1xuZXhwb3J0IHtQZXBJbnRlcm5hbENhcnVzZWxTZXJ2aWNlIGFzIMm1aX0gZnJvbSAnLi9pbnRlcm5hbC1jYXJ1c2VsLnNlcnZpY2UnO1xuZXhwb3J0IHtQZXBJbnRlcm5hbExpc3RDb21wb25lbnQgYXMgybVkfSBmcm9tICcuL2ludGVybmFsLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCB7UGVwSW50ZXJuYWxNZW51Q29tcG9uZW50IGFzIMm1ZX0gZnJvbSAnLi9pbnRlcm5hbC1tZW51LmNvbXBvbmVudCc7XG5leHBvcnQge1BlcEludGVybmFsUGFnZUNvbXBvbmVudCBhcyDJtWZ9IGZyb20gJy4vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQnO1xuZXhwb3J0IHtQZXBJbnRlcm5hbFBhZ2VTZXJ2aWNlIGFzIMm1Z30gZnJvbSAnLi9pbnRlcm5hbC1wYWdlLnNlcnZpY2UnOyJdfQ==
|
|
@@ -55,4 +55,4 @@ PepGroupButtonsComponent.propDecorators = {
|
|
|
55
55
|
stretch: [{ type: Input }],
|
|
56
56
|
buttonClick: [{ type: Output }]
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQ3RDLE1BQU0seUJBQXlCLENBQUM7QUFZakMsTUFBTSxPQUFPLHdCQUF3QjtJQWdCakMsWUFBbUIsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBZmxELHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBRzdCLGFBQVEsR0FBNEIsU0FBUyxDQUFDO1FBQzlDLGNBQVMsR0FBaUIsTUFBTSxDQUFDO1FBQ2pDLGFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBQzdCLFlBQU8sR0FBcUIsRUFBRSxDQUFDO1FBQy9CLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBR3pCLGdCQUFXLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO1FBSXZGLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCwwQkFBMEI7UUFDMUIsc0NBQXNDO1FBQ3RDLElBQUk7SUFDUixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVksRUFBRSxNQUFpQjtRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEdBQUcsQ0FBQztRQUVyQyxNQUFNLFdBQVcsR0FBRztZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUs7U0FDUixDQUFDO1FBRUYsSUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQzs7O1lBOUNKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixpK0lBQTZDOzthQUVoRDs7O1lBWkcsZ0JBQWdCOzs7dUJBaUJmLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3NCQUNMLEtBQUs7OEJBQ0wsS0FBSztnQ0FDTCxLQUFLO3NCQUNMLEtBQUs7MEJBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0U2VydmljZSwgUGVwU2NyZWVuU2l6ZVR5cGUsIFBlcFN0eWxlVHlwZSwgUGVwU2l6ZVR5cGVcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBQZXBCdXR0b24sXG4gICAgSVBlcEJ1dHRvbkNsaWNrRXZlbnQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2J1dHRvbic7XG5cbmV4cG9ydCB0eXBlIFBlcEdyb3VwQnV0dG9uc1ZpZXdUeXBlID0gJ3JlZ3VsYXInIHwgJ2Ryb3Bkb3duJyB8ICdzcGxpdCcgfCAndG9nZ2xlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWdyb3VwLWJ1dHRvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ncm91cC1idXR0b25zLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBlcEdyb3VwQnV0dG9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgUGVwU2NyZWVuU2l6ZVR5cGUgPSBQZXBTY3JlZW5TaXplVHlwZTtcbiAgICBzY3JlZW5TaXplOiBQZXBTY3JlZW5TaXplVHlwZTtcblxuICAgIEBJbnB1dCgpIHZpZXdUeXBlOiBQZXBHcm91cEJ1dHRvbnNWaWV3VHlwZSA9ICdyZWd1bGFyJztcbiAgICBASW5wdXQoKSBzdHlsZVR5cGU6IFBlcFN0eWxlVHlwZSA9ICd3ZWFrJztcbiAgICBASW5wdXQoKSBzaXplVHlwZTogUGVwU2l6ZVR5cGUgPSAnbWQnO1xuICAgIEBJbnB1dCgpIGJ1dHRvbnM6IEFycmF5PFBlcEJ1dHRvbj4gPSBbXTtcbiAgICBASW5wdXQoKSBidXR0b25zRGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWxlY3RlZEJ1dHRvbktleSA9ICcnO1xuICAgIEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8SVBlcEJ1dHRvbkNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwQnV0dG9uQ2xpY2tFdmVudD4oKTtcblxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGxheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5zdWJzY3JpYmUoKHNpemUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBpZiAodGhpcy5idXR0b25DbGljaykge1xuICAgICAgICAvLyAgICAgdGhpcy5idXR0b25DbGljay51bnN1YnNjcmliZSgpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgb25CdXR0b25DbGlja2VkKGV2ZW50OiBFdmVudCwgYnV0dG9uOiBQZXBCdXR0b24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEJ1dHRvbktleSA9IGJ1dHRvbj8ua2V5O1xuXG4gICAgICAgIGNvbnN0IGJ1dHRvbkNsaWNrID0ge1xuICAgICAgICAgICAgc291cmNlOiBidXR0b24sXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYnV0dG9uPy5jYWxsYmFjaykge1xuICAgICAgICAgICAgYnV0dG9uLmNhbGxiYWNrKGJ1dHRvbkNsaWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChidXR0b25DbGljayk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|