@bnsights/bbsf-controls 1.0.6 → 1.0.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/bnsights-bbsf-controls-1.0.10.tgz +0 -0
- package/bnsights-bbsf-controls.metadata.json +1 -1
- package/bundles/bnsights-bbsf-controls.umd.js +290 -188
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
- package/esm2015/lib/Shared/Models/AutocompleteOptions.js +2 -3
- package/esm2015/lib/Shared/Models/ConfirmationModalOptions.js +2 -5
- package/esm2015/lib/Shared/Models/DropdownOptions.js +2 -3
- package/esm2015/lib/Shared/Models/FileUploadOptions.js +2 -3
- package/esm2015/lib/Shared/Models/HtmlEditorOptions.js +2 -3
- package/esm2015/lib/Shared/Models/ImageUploadOptions.js +2 -3
- package/esm2015/lib/Shared/Models/MapAutoCompleteOptions.js +2 -3
- package/esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js +3 -5
- package/esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js +4 -6
- package/esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js +4 -6
- package/esm2015/lib/Shared/Models/PhoneOptions.js +2 -3
- package/esm2015/lib/Shared/Models/ProfileImageUploadOptions.js +2 -3
- package/esm2015/lib/Shared/Models/RadioButtonOptions.js +2 -3
- package/esm2015/lib/Shared/Models/TagsInputOptions.js +2 -3
- package/esm2015/lib/Shared/Models/TextAreaOptions.js +2 -3
- package/esm2015/lib/Shared/Models/TextBoxOptions.js +2 -3
- package/esm2015/lib/Shared/Models/ToggleslideOptions.js +2 -3
- package/esm2015/lib/Shared/services/ControlUtility.js +3 -3
- package/esm2015/lib/Shared/services/GlobalSettings.service.js +20 -0
- package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +16 -9
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +34 -18
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +10 -7
- package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +9 -6
- package/esm2015/lib/controls/Form/Form.component.js +22 -4
- package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +9 -6
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +14 -10
- package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +8 -9
- package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +41 -30
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +13 -9
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +13 -7
- package/esm2015/lib/controls/Paging/Paging.component.js +6 -4
- package/esm2015/lib/controls/Phone/Phone.component.js +8 -6
- package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +13 -7
- package/esm2015/lib/controls/RadioButton/RadioButton.component.js +8 -3
- package/esm2015/lib/controls/TagsInput/TagsInput.component.js +16 -22
- package/esm2015/lib/controls/TextArea/TextArea.component.js +8 -6
- package/esm2015/lib/controls/TextBox/TextBox.component.js +8 -3
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +8 -7
- package/esm2015/lib/controls/bbsf-controls.module.js +10 -8
- package/esm2015/public-api.js +2 -1
- package/fesm2015/bnsights-bbsf-controls.js +286 -187
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
- package/lib/Shared/Models/ConfirmationModalOptions.d.ts +0 -1
- package/lib/Shared/services/ControlUtility.d.ts +1 -1
- package/lib/Shared/services/GlobalSettings.service.d.ts +10 -0
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +5 -3
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +2 -1
- package/lib/controls/DropdownList/DropdownList.component.d.ts +4 -3
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +4 -3
- package/lib/controls/Form/Form.component.d.ts +6 -1
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +4 -3
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +5 -5
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -5
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +7 -6
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +4 -5
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -3
- package/lib/controls/Paging/Paging.component.d.ts +3 -2
- package/lib/controls/Phone/Phone.component.d.ts +3 -3
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +4 -3
- package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -1
- package/lib/controls/TagsInput/TagsInput.component.d.ts +5 -4
- package/lib/controls/TextArea/TextArea.component.d.ts +3 -3
- package/lib/controls/TextBox/TextBox.component.d.ts +3 -1
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +3 -3
- package/package.json +6 -4
- package/public-api.d.ts +1 -0
- package/src/lib/assets/Style.css +18 -1
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
import { Component, Input, Optional, NgZone, ViewChild, EventEmitter, Output } from '@angular/core';
|
|
2
2
|
import { FormControl, Validators, ControlContainer, FormGroupDirective } from '@angular/forms';
|
|
3
|
-
import { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';
|
|
4
3
|
import { ControlUtility } from '../../Shared/services/ControlUtility';
|
|
5
4
|
import { MapAutocompleteDTO } from '../../Shared/Models/MapAutocompleteDTO';
|
|
6
|
-
import { Title } from '@angular/platform-browser';
|
|
7
5
|
import { MapsAPILoader, LazyMapsAPILoader } from '@agm/core';
|
|
8
6
|
import { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
|
|
7
|
+
import { GlobalSettings } from '../../Shared/services/GlobalSettings.service';
|
|
9
8
|
export class MapAutoCompleteComponent {
|
|
10
|
-
constructor(mapsAPILoader, ngZone,
|
|
9
|
+
constructor(mapsAPILoader, ngZone, controlUtility, controlContainer, MapAutoCompleteControlHost, UtilityService, translate, controlValidationService, globalSettings) {
|
|
11
10
|
this.mapsAPILoader = mapsAPILoader;
|
|
12
11
|
this.ngZone = ngZone;
|
|
13
|
-
this.titleService = titleService;
|
|
14
|
-
this.ErrorHandler = ErrorHandler;
|
|
15
12
|
this.controlUtility = controlUtility;
|
|
16
13
|
this.controlContainer = controlContainer;
|
|
17
14
|
this.MapAutoCompleteControlHost = MapAutoCompleteControlHost;
|
|
18
15
|
this.UtilityService = UtilityService;
|
|
19
16
|
this.translate = translate;
|
|
20
17
|
this.controlValidationService = controlValidationService;
|
|
18
|
+
this.globalSettings = globalSettings;
|
|
21
19
|
this.OnChange = new EventEmitter();
|
|
22
20
|
this.MapAutoCompleteModel = new MapAutocompleteDTO();
|
|
23
21
|
this.CurrentLanguage = "";
|
|
@@ -187,6 +185,8 @@ export class MapAutoCompleteComponent {
|
|
|
187
185
|
});
|
|
188
186
|
this.group.addControl(this.options.Name, new FormControl(''));
|
|
189
187
|
this.MapAutoCompleteFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
188
|
+
if (!this.options.ViewType)
|
|
189
|
+
this.options.ViewType = this.globalSettings.ViewType;
|
|
190
190
|
if (this.options.IsRequired) {
|
|
191
191
|
this.validationRules.push(Validators.required);
|
|
192
192
|
}
|
|
@@ -265,14 +265,13 @@ MapAutoCompleteComponent.decorators = [
|
|
|
265
265
|
MapAutoCompleteComponent.ctorParameters = () => [
|
|
266
266
|
{ type: MapsAPILoader },
|
|
267
267
|
{ type: NgZone },
|
|
268
|
-
{ type: Title },
|
|
269
|
-
{ type: ErrorMassageValidation },
|
|
270
268
|
{ type: ControlUtility },
|
|
271
269
|
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
272
270
|
{ type: FormGroupDirective },
|
|
273
271
|
{ type: UtilityService },
|
|
274
272
|
{ type: BBSFTranslateService },
|
|
275
|
-
{ type: ControlValidationService }
|
|
273
|
+
{ type: ControlValidationService },
|
|
274
|
+
{ type: GlobalSettings }
|
|
276
275
|
];
|
|
277
276
|
MapAutoCompleteComponent.propDecorators = {
|
|
278
277
|
group: [{ type: Input }],
|
|
@@ -280,4 +279,4 @@ MapAutoCompleteComponent.propDecorators = {
|
|
|
280
279
|
OnChange: [{ type: Output }],
|
|
281
280
|
searchElementRef: [{ type: ViewChild, args: ["search", { static: false },] }]
|
|
282
281
|
};
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9NYXBBdXRvQ29tcGxldGUvTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUE4QixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBaUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxSixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBUTFHLE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBb0IsYUFBNEIsRUFDdEMsTUFBYyxFQUFVLFlBQW1CLEVBQVUsWUFBb0MsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUywwQkFBOEMsRUFBUyxjQUE2QixFQUFTLFNBQStCLEVBQVMsd0JBQWlEO1FBRDlXLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxpQkFBWSxHQUFaLFlBQVks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cEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDMUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNELENBQUM7O0FBelFNLCtDQUFzQixHQUFHLElBQUksQ0FBQzs7WUFUdEMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDgwREFBK0M7O2FBRWhEOzs7WUFQUSxhQUFhO1lBUmdDLE1BQU07WUFNbkQsS0FBSztZQUpMLHNCQUFzQjtZQUN0QixjQUFjO1lBRnVDLGdCQUFnQix1QkFxQmtFLFFBQVE7WUFyQnhFLGtCQUFrQjtZQVF6QyxjQUFjO1lBQTlELG9CQUFvQjtZQUFFLHdCQUF3Qjs7O29CQWtCcEQsS0FBSztzQkFDTCxLQUFLO3VCQUNMLE1BQU07K0JBUU4sU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGNvbnN0IGdvb2dsZTogYW55XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIE5nWm9uZSwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yTWFzc2FnZVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvdmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBNYXBBdXRvQ29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NYXBBdXRvQ29tcGxldGVPcHRpb25zJztcclxuaW1wb3J0IHsgTWFwQXV0b2NvbXBsZXRlRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NYXBBdXRvY29tcGxldGVEVE8nO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiwgQXBwZWFyYW5jZSwgR2VybWFuQWRkcmVzcywgTWF0R29vZ2xlTWFwc0F1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyLW1hdGVyaWFsLWV4dGVuc2lvbnMvZ29vZ2xlLW1hcHMtYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWFwc0FQSUxvYWRlciwgTGF6eU1hcHNBUElMb2FkZXIgfSBmcm9tICdAYWdtL2NvcmUnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtTWFwQXV0b0NvbXBsZXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9NYXBBdXRvQ29tcGxldGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXBzQVBJTG9hZGVyOiBNYXBzQVBJTG9hZGVyLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLCBwcml2YXRlIEVycm9ySGFuZGxlcjogRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIE1hcEF1dG9Db21wbGV0ZUNvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUscHJpdmF0ZSBVdGlsaXR5U2VydmljZTpVdGlsaXR5U2VydmljZSxwcml2YXRlIHRyYW5zbGF0ZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UscHJpdmF0ZSBjb250cm9sVmFsaWRhdGlvblNlcnZpY2U6Q29udHJvbFZhbGlkYXRpb25TZXJ2aWNlKSB7XHJcbiAgICBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gdHJhbnNsYXRlLmN1cnJlbnRMYW5nICE9IHVuZGVmaW5lZCA/IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyA6IHRyYW5zbGF0ZS5kZWZhdWx0TGFuZ1xyXG5cclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNYXBBdXRvQ29tcGxldGVPcHRpb25zO1xyXG4gIEBPdXRwdXQoKSBPbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBNYXBBdXRvQ29tcGxldGVNb2RlbDogTWFwQXV0b2NvbXBsZXRlRFRPPW5ldyBNYXBBdXRvY29tcGxldGVEVE8oKTtcclxuICBDdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgb25BdXRvY29tcGxldGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBvbkdlcm1hbkFkZHJlc3NNYXBwZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgb25Mb2NhdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoXCJzZWFyY2hcIiwge3N0YXRpYzpmYWxzZX0pXHJcbiAgcHVibGljIHNlYXJjaEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgTWF0R29vZ2xlTWFwc0F1dG9jb21wbGV0ZUNvbXBvbmVudDogTWF0R29vZ2xlTWFwc0F1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gIExhenlNYXBzQVBJTG9hZGVyOiBMYXp5TWFwc0FQSUxvYWRlclxyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6Ym9vbGVhbj1mYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG5cclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlTW9kZWw9IG5ldyBNYXBBdXRvY29tcGxldGVEVE8oKTtcclxuICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gZXZlbnQubGFuZztcclxuICAgICAgO1xyXG4gICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJylcclxuICAgICAgICB0aGlzLm1hcHNBUElMb2FkZXJbXCJfY29uZmlnXCJdW1wibG9jYWxlSWRcIl0gPSBcImFyLUVHXCI7XHJcbiAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKVxyXG4gICAgICAgIHRoaXMubWFwc0FQSUxvYWRlcltcIl9jb25maWdcIl1bXCJsb2NhbGVJZFwiXSA9IFwiZW4tVVNcIjtcclxuICAgICAgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX3NjcmlwdExvYWRpbmdQcm9taXNlXCJdID0gbnVsbFxyXG4gICAgICB0aGlzLm1hcHNBUElMb2FkZXJbXCJfY29uZmlnXCJdW1wiYXBpS2V5XCJdID0gYEFJemFTeUE3NW9qaFpoRWhEYU8zdmZuM214VFkzMnNxNWZsQXdsWSZsYW5ndWFnZT0ke3RoaXMuQ3VycmVudExhbmd1YWdlfWA7XHJcbiAgICAgIHZhciBTY3JpcHRUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm1hcHNBUElMb2FkZXJbXCJfU0NSSVBUX0lEXCJdKTtcclxuICAgICAgaWYgKFNjcmlwdFRhZylcclxuICAgICAgICBTY3JpcHRUYWcucmVtb3ZlKCk7XHJcbiAgICAgIHZhciBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJwYWMtY29udGFpbmVyXCIpO1xyXG4gICAgICB3aGlsZSAoZWxlbWVudHMubGVuZ3RoID4gMClcclxuICAgICAgICBlbGVtZW50c1swXS5yZW1vdmUoKTtcclxuXHJcbiAgICAgIGxldCB3aW5kb3cgPSB0aGlzLm1hcHNBUElMb2FkZXJbXCJfd2luZG93UmVmXCJdLmdldE5hdGl2ZVdpbmRvdygpO1xyXG4gICAgICB3aW5kb3cuZ29vZ2xlID0gbnVsbFxyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLkxhenlNYXBzQVBJTG9hZGVyID0gbmV3IExhenlNYXBzQVBJTG9hZGVyKHtcclxuICAgICAgICAvLyAmbGFuZ3VhZ2U9JHtVdGlsaXR5U2VydmljZS5DdXJyZW50TGFuZ3VhZ2V9XHJcbiAgICAgICAgYXBpS2V5OiBgQUl6YVN5QTc1b2poWmhFaERhTzN2Zm4zbXhUWTMyc3E1ZmxBd2xZJmxhbmd1YWdlPSR7dGhpcy5DdXJyZW50TGFuZ3VhZ2V9YCxcclxuICAgICAgICBsaWJyYXJpZXM6IFsncGxhY2VzJ10sXHJcbiAgICAgIH0sIHRoaXMubWFwc0FQSUxvYWRlcltcIl93aW5kb3dSZWZcIl0sIHRoaXMubWFwc0FQSUxvYWRlcltcIl9kb2N1bWVudFJlZlwiXSwgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX2NvbmZpZ1wiXVtcImxvY2FsZUlkXCJdKTtcclxuICAgICAgdGhpcy5MYXp5TWFwc0FQSUxvYWRlci5sb2FkKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGF1dG9jb21wbGV0ZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKHRoaXMuc2VhcmNoRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XHJcbiAgICAgICAgICB0eXBlczogW1wiYWRkcmVzc1wiXVxyXG5cclxuICAgICAgICB9KTtcclxuICAgICAgICBhdXRvY29tcGxldGUuYWRkTGlzdGVuZXIoJ3BsYWNlX2NoYW5nZWQnLCAoLyoqXHJcbiAgICAgICAgICAgICAgICAqIEByZXR1cm4gez99XHJcbiAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgvKipcclxuICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4gez99XHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIHBsYWNlIHJlc3VsdFxyXG4gICAgICAgICAgICAgICAgLyoqIEB0eXBlIHs/fSAqL1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2UgPSBhdXRvY29tcGxldGUuZ2V0UGxhY2UoKTtcclxuICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7P30gKi9cclxuICAgICAgICAgICAgICAgIGNvbnN0IGdlcm1hbkFkZHJlc3MgPSB7XHJcbiAgICAgICAgICAgICAgICAgIGdtSUQ6IHBsYWNlLmlkLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiBwbGFjZS5pY29uLFxyXG4gICAgICAgICAgICAgICAgICB1cmw6IHBsYWNlLnVybCxcclxuICAgICAgICAgICAgICAgICAgcGxhY2VJRDogcGxhY2UucGxhY2VfaWQsXHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlBZGRyZXNzOiBwbGFjZS5mb3JtYXR0ZWRfYWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgbmFtZTogcGxhY2UubmFtZSxcclxuICAgICAgICAgICAgICAgICAgdmljaW5pdHk6IHBsYWNlLnZpY2luaXR5LFxyXG4gICAgICAgICAgICAgICAgICBsb2NhbGl0eToge30sXHJcbiAgICAgICAgICAgICAgICAgIHN0YXRlOiB7fSxcclxuICAgICAgICAgICAgICAgICAgY291bnRyeToge30sXHJcbiAgICAgICAgICAgICAgICAgIGdlb0xvY2F0aW9uOiB7IGxhdGl0dWRlOiAtMSwgbG9uZ2l0dWRlOiAtMSB9LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocGxhY2UuZ2VvbWV0cnkgJiYgcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzcy5nZW9Mb2NhdGlvbi5sYXRpdHVkZSA9IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpO1xyXG4gICAgICAgICAgICAgICAgICBnZXJtYW5BZGRyZXNzLmdlb0xvY2F0aW9uLmxvbmdpdHVkZSA9IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGxhY2UuYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKC8qKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7P30gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHs/fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGVzLmluZGV4T2YoJ3N0cmVldF9udW1iZXInKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXJtYW5BZGRyZXNzW1wic3RyZWV0TnVtYmVyXCJdID0gdmFsdWUuc2hvcnRfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGVzLmluZGV4T2YoJ3JvdXRlJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzc1tcInN0cmVldE5hbWVcIl0gPSB2YWx1ZS5sb25nX25hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlcy5pbmRleE9mKCdwb3N0YWxfY29kZScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3NbXCJwb3N0YWxDb2RlXCJdID0gTnVtYmVyKHZhbHVlLnNob3J0X25hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZXMuaW5kZXhPZignc3VibG9jYWxpdHknKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXJtYW5BZGRyZXNzW1wic3VibG9jYWxpdHlcIl0gPSB2YWx1ZS5sb25nX25hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlcy5pbmRleE9mKCdsb2NhbGl0eScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3MubG9jYWxpdHlbXCJsb25nXCJdID0gdmFsdWUubG9uZ19uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzcy5sb2NhbGl0eVtcInNob3J0XCJdID0gdmFsdWUuc2hvcnRfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGVzLmluZGV4T2YoJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3Muc3RhdGVbXCJsb25nXCJdID0gdmFsdWUubG9uZ19uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzcy5zdGF0ZVtcInNob3J0XCJdID0gdmFsdWUuc2hvcnRfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGVzLmluZGV4T2YoJ2NvdW50cnknKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXJtYW5BZGRyZXNzLmNvdW50cnlbXCJsb25nXCJdID0gdmFsdWUubG9uZ19uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzcy5jb3VudHJ5W1wic2hvcnRcIl0gPSB2YWx1ZS5zaG9ydF9uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZXMuaW5kZXhPZignYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8zJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzcy5sb2NhbGl0eVtcInNob3J0XCJdID0gdmFsdWUuc2hvcnRfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkdlcm1hbkFkZHJlc3NNYXBwZWQuZW1pdChnZXJtYW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuR2VybWFuQWRkcmVzc01hcHBlZChnZXJtYW5BZGRyZXNzKVxyXG4gICAgICAgICAgICAgICAgaWYgKCFwbGFjZS5wbGFjZV9pZCB8fCBwbGFjZS5nZW9tZXRyeSA9PT0gdW5kZWZpbmVkIHx8IHBsYWNlLmdlb21ldHJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBsYWNlIHJlc3VsdCBpcyBub3QgdmFsaWRcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIHNob3cgZGlhbG9nIHRvIHNlbGVjdCBhIGFkZHJlc3MgZnJvbSB0aGUgaW5wdXRcclxuICAgICAgICAgICAgICAgICAgLy8gZW1pdCBmYWlsZWQgZXZlbnRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5hZGRyZXNzID0gcGxhY2UuZm9ybWF0dGVkX2FkZHJlc3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXV0b2NvbXBsZXRlU2VsZWN0ZWQuZW1pdChwbGFjZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVNlbGVjdGVkKHBsYWNlKVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMub25Mb2NhdGlvblNlbGVjdGVkLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgICBsYXRpdHVkZTogcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksXHJcbiAgICAgICAgICAgICAgICAgIGxvbmdpdHVkZTogcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubG5nKClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIDtcclxuICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKVxyXG4gICAgICB0aGlzLm1hcHNBUElMb2FkZXJbXCJfY29uZmlnXCJdW1wibG9jYWxlSWRcIl0gPSBcImFyLUVHXCI7XHJcbiAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJylcclxuICAgICAgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX2NvbmZpZ1wiXVtcImxvY2FsZUlkXCJdID0gXCJlbi1VU1wiO1xyXG4gICAgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX3NjcmlwdExvYWRpbmdQcm9taXNlXCJdID0gbnVsbFxyXG4gICAgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX2NvbmZpZ1wiXVtcImFwaUtleVwiXSA9IGBBSXphU3lBNzVvamhaaEVoRGFPM3ZmbjNteFRZMzJzcTVmbEF3bFkmbGFuZ3VhZ2U9JHt0aGlzLkN1cnJlbnRMYW5ndWFnZX1gO1xyXG4gICAgdmFyIGxlZnRTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5tYXBzQVBJTG9hZGVyW1wiX1NDUklQVF9JRFwiXSk7XHJcbiAgICBpZiAobGVmdFNlY3Rpb24pXHJcbiAgICAgIGxlZnRTZWN0aW9uLnJlbW92ZSgpO1xyXG4gICAgdGhpcy5MYXp5TWFwc0FQSUxvYWRlciA9IG5ldyBMYXp5TWFwc0FQSUxvYWRlcih7XHJcbiAgICAgIGFwaUtleTogYEFJemFTeUE3NW9qaFpoRWhEYU8zdmZuM214VFkzMnNxNWZsQXdsWSZsYW5ndWFnZT0ke3RoaXMuQ3VycmVudExhbmd1YWdlfWAsXHJcbiAgICAgIGxpYnJhcmllczogWydwbGFjZXMnXSxcclxuICAgIH0sIHRoaXMubWFwc0FQSUxvYWRlcltcIl93aW5kb3dSZWZcIl0sIHRoaXMubWFwc0FQSUxvYWRlcltcIl9kb2N1bWVudFJlZlwiXSwgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX2NvbmZpZ1wiXVtcImxvY2FsZUlkXCJdKTtcclxuICAgIHRoaXMuTGF6eU1hcHNBUElMb2FkZXIubG9hZCgpO1xyXG4gICAgXHJcbiAgICB0aGlzLm1hcHNBUElMb2FkZXIubG9hZCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICBsZXQgYXV0b2NvbXBsZXRlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGUodGhpcy5zZWFyY2hFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcclxuICAgICAgICB0eXBlczogW1wiYWRkcmVzc1wiXVxyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSlcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZUZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm9wdGlvbnMuTGFiZWxLZXkhPW51bGwmJnRoaXMub3B0aW9ucy5MYWJlbEtleSE9XCJcIilcclxuICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm9wdGlvbnMuVmFsdWUgIT0gbnVsbClcclxuICAgIHtcclxuICAgICAgdGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSBcclxuICAgIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zPXRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcbiAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpPT57XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZD10cnVlXHJcbiAgICB9KVxyXG5cclxuXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5vcHRpb25zLk5hbWUpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLktleSwgdGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PntcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKXtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmKHRoaXMubWFya0FsbEFzVG91Y2hlZCYmdGhpcy5ncm91cC5pbnZhbGlkKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQ9ZmFsc2VcclxuICAgIH1cclxuICAgXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxufVxyXG5cclxuICBBdXRvY29tcGxldGVTZWxlY3RlZChyZXN1bHQpIHtcclxuXHJcblxyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbCA9PSBuZXcgTWFwQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLlRleHQgPSByZXN1bHQuZm9ybWF0dGVkX2FkZHJlc3M7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLlBsYWNlSUQgPSByZXN1bHQucGxhY2VfaWQ7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLkdvb2dsZU1hcHNVUkwgPSByZXN1bHQudXJsO1xyXG4gIH1cclxuICBMb2NhdGlvblNlbGVjdGVkKGxvY2F0aW9uKSB7XHJcblxyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5MYXRpdHVkZSA9IGxvY2F0aW9uLmxhdGl0dWRlO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5Mb25naXR1ZGUgPSBsb2NhdGlvbi5sb25naXR1ZGU7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZUZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xyXG5cclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbCk7XHJcbiAgfVxyXG5cclxuICBHZXJtYW5BZGRyZXNzTWFwcGVkKHJlc3VsdCkge1xyXG4gIFxyXG4gICBcclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlTW9kZWwgPT0gbmV3IE1hcEF1dG9jb21wbGV0ZURUTygpO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5UZXh0ID0gcmVzdWx0LmRpc3BsYXlBZGRyZXNzO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5QbGFjZUlEID0gcmVzdWx0LnBsYWNlSUQ7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLkdvb2dsZU1hcHNVUkwgPSByZXN1bHQudXJsO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5MYXRpdHVkZSA9IHJlc3VsdC5nZW9Mb2NhdGlvbi5sYXRpdHVkZTtcclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlTW9kZWwuTG9uZ2l0dWRlID0gcmVzdWx0Lmdlb0xvY2F0aW9uLmxvbmdpdHVkZTtcclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbCk7XHJcbiAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXS5zZXRWYWx1ZSh0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsKVxyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wudmFsdWUpXHJcbiAgfVxyXG5cclxuICAgIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIFJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gICAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcblxyXG4gICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9NYXBBdXRvQ29tcGxldGUvTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUE4QixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFROUUsTUFBTSxPQUFPLHdCQUF3QjtJQUluQyxZQUFvQixhQUE0QixFQUN0QyxNQUFjLEVBQVMsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQzlHLDBCQUE4QyxFQUFVLGNBQThCLEVBQVUsU0FBK0IsRUFDOUgsd0JBQWtELEVBQVUsY0FBOEI7UUFIaEYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzlHLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBb0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUM5SCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTzFGLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3hDLHlCQUFvQixHQUFxQixJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDbEUsb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFDN0IsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLeEMscUJBQWdCLEdBQVMsS0FBSyxDQUFDO1FBQy9CLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQXNNMUIsZUFBVSxHQUFHLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUE7UUErQ0MsaUJBQWlCO1FBRW5CLDZCQUF3QixHQUFHLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuSCxDQUFDLENBQUE7UUFDQyxpQkFBaUI7UUFFbkIsMEJBQXFCLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hILENBQUMsQ0FBQTtRQUVELGlCQUFpQjtRQUNqQiwyQkFBc0IsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ3JILENBQUMsQ0FBQTtRQUNELGlCQUFpQjtRQUNqQix3QkFBbUIsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ2pILENBQUMsQ0FBQTtRQUVBLGlCQUFpQjtRQUNqQixZQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDOUQsQ0FBQyxDQUFBO1FBbFNDLHdCQUF3QixDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFBO0lBRTNHLENBQUM7SUFrQkQsUUFBUTtRQUNOLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBRXBELElBQUksQ0FBQyxvQkFBb0IsR0FBRSxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2xDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSTtnQkFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUM7WUFDdEQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUk7Z0JBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxvREFBb0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JILElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksU0FBUztnQkFDWCxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUN4QixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNoRSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtZQUlwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztnQkFDN0MsOENBQThDO2dCQUM5QyxNQUFNLEVBQUUsb0RBQW9ELElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ2xGLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUN0QixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDcEgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RDLElBQUksWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUU7b0JBQzFGLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFFbkIsQ0FBQyxDQUFDO2dCQUNILFlBQVksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUM7OzBCQUd6QyxHQUFHLEVBQUU7b0JBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBQzs7OEJBR2YsR0FBRyxFQUFFO3dCQUNILHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3RDLGdCQUFnQjt3QkFDaEIsTUFBTSxhQUFhLEdBQUc7NEJBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTs0QkFDZCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7NEJBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRzs0QkFDZCxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVE7NEJBQ3ZCLGNBQWMsRUFBRSxLQUFLLENBQUMsaUJBQWlCOzRCQUN2QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7NEJBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTs0QkFDeEIsUUFBUSxFQUFFLEVBQUU7NEJBQ1osS0FBSyxFQUFFLEVBQUU7NEJBQ1QsT0FBTyxFQUFFLEVBQUU7NEJBQ1gsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRTt5QkFDN0MsQ0FBQzt3QkFFRixJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7NEJBQzdDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUNuRSxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt5QkFDckU7d0JBQ0QsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFDOzs7a0NBSWhDLEFBSmdDOzs7a0NBR3hCLENBQ1IsS0FBSyxDQUFDLEVBQUU7NEJBQ04sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQ0FDN0MsYUFBYSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7NkJBQ2xEOzRCQUNELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0NBQ3JDLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDOzZCQUMvQzs0QkFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dDQUMzQyxhQUFhLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQzs2QkFDeEQ7NEJBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQ0FDM0MsYUFBYSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7NkJBQ2hEOzRCQUNELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0NBQ3hDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQ0FDakQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDOzZCQUNwRDs0QkFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0NBQzNELGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQ0FDOUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDOzZCQUNqRDs0QkFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dDQUN2QyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0NBQ2hELGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDbkQ7NEJBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dDQUMzRCxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7NkJBQ3BEO3dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRU4sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDL0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFBO3dCQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTs0QkFDOUUsNEJBQTRCOzRCQUM1QixPQUFPO3lCQUNSOzZCQUNJOzRCQUNILGlEQUFpRDs0QkFDakQsb0JBQW9CO3lCQUNyQjt3QkFDRCw0Q0FBNEM7d0JBQzVDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTt3QkFFaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQzs0QkFDM0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTs0QkFDdkMsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTt5QkFDekMsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNSLENBQUMsQ0FBQyxDQUFDO1FBRUwsQ0FBQyxDQUFDLENBQUM7UUFHSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUk7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUk7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLG9EQUFvRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckgsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxXQUFXO1lBQ2IsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFDO1lBQzdDLE1BQU0sRUFBRSxvREFBb0QsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNsRixTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDdEIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRTtnQkFDMUYsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDO2FBRW5CLENBQUMsQ0FBQztRQUVMLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztRQUVsSCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBRXZELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBRSxJQUFJLElBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckYsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzNDO1FBQ0QsSUFBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQzdCO1lBQ0UsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlEO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzVDO1lBQ0UsSUFBSSxXQUFXLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQTtZQUM3QyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDcEQ7U0FFRjtRQUdELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBQyxJQUFJLENBQUE7UUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFHSixDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3RDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN0RSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0RztTQUNGO0lBQ0gsQ0FBQztJQU1ELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFTO1FBQzFCLElBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUM1QztZQUNJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUMsS0FBSyxDQUFBO1NBQzlCO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUMsb0JBQW9CLENBQUMsTUFBTTtRQUd6QixJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQzFELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNwRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDdkQsQ0FBQztJQUNELGdCQUFnQixDQUFDLFFBQVE7UUFFdkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUN6RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQU07UUFHeEIsSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDdkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNyRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDbkUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDM0QsQ0FBQzs7QUE5UU0sK0NBQXNCLEdBQUcsSUFBSSxDQUFDOztZQVR0QyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsODBEQUErQzs7YUFFaEQ7OztZQVJRLGFBQWE7WUFOdUIsTUFBTTtZQUUxQyxjQUFjO1lBRHVDLGdCQUFnQix1QkFvQlYsUUFBUTtZQXBCSSxrQkFBa0I7WUFNekMsY0FBYztZQUE5RCxvQkFBb0I7WUFBRSx3QkFBd0I7WUFDOUMsY0FBYzs7O29CQW9CcEIsS0FBSztzQkFDTCxLQUFLO3VCQUNMLE1BQU07K0JBUU4sU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGNvbnN0IGdvb2dsZTogYW55XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3B0aW9uYWwsIE5nWm9uZSwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBNYXBBdXRvQ29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NYXBBdXRvQ29tcGxldGVPcHRpb25zJztcclxuaW1wb3J0IHsgTWFwQXV0b2NvbXBsZXRlRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NYXBBdXRvY29tcGxldGVEVE8nO1xyXG5pbXBvcnQgeyBNYXRHb29nbGVNYXBzQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXItbWF0ZXJpYWwtZXh0ZW5zaW9ucy9nb29nbGUtbWFwcy1hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXBzQVBJTG9hZGVyLCBMYXp5TWFwc0FQSUxvYWRlciB9IGZyb20gJ0BhZ20vY29yZSc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtTWFwQXV0b0NvbXBsZXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9NYXBBdXRvQ29tcGxldGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXBzQVBJTG9hZGVyOiBNYXBzQVBJTG9hZGVyLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIE1hcEF1dG9Db21wbGV0ZUNvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsIHByaXZhdGUgVXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyAhPSB1bmRlZmluZWQgPyB0cmFuc2xhdGUuY3VycmVudExhbmcgOiB0cmFuc2xhdGUuZGVmYXVsdExhbmdcclxuXHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogTWFwQXV0b0NvbXBsZXRlT3B0aW9ucztcclxuICBAT3V0cHV0KCkgT25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIE1hcEF1dG9Db21wbGV0ZUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgTWFwQXV0b0NvbXBsZXRlTW9kZWw6IE1hcEF1dG9jb21wbGV0ZURUTz1uZXcgTWFwQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgQ3VycmVudExhbmd1YWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIG9uQXV0b2NvbXBsZXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgb25HZXJtYW5BZGRyZXNzTWFwcGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG9uTG9jYXRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKFwic2VhcmNoXCIsIHtzdGF0aWM6ZmFsc2V9KVxyXG4gIHB1YmxpYyBzZWFyY2hFbGVtZW50UmVmOiBFbGVtZW50UmVmO1xyXG4gIE1hdEdvb2dsZU1hcHNBdXRvY29tcGxldGVDb21wb25lbnQ6IE1hdEdvb2dsZU1hcHNBdXRvY29tcGxldGVDb21wb25lbnRcclxuICBMYXp5TWFwc0FQSUxvYWRlcjogTGF6eU1hcHNBUElMb2FkZXJcclxuICBtYXJrQWxsQXNUb3VjaGVkOmJvb2xlYW49ZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuXHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsPSBuZXcgTWFwQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IGV2ZW50Lmxhbmc7XHJcbiAgICAgIDtcclxuICAgICAgaWYgKHRoaXMuQ3VycmVudExhbmd1YWdlID09ICdhcicpXHJcbiAgICAgICAgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX2NvbmZpZ1wiXVtcImxvY2FsZUlkXCJdID0gXCJhci1FR1wiO1xyXG4gICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJylcclxuICAgICAgICB0aGlzLm1hcHNBUElMb2FkZXJbXCJfY29uZmlnXCJdW1wibG9jYWxlSWRcIl0gPSBcImVuLVVTXCI7XHJcbiAgICAgIHRoaXMubWFwc0FQSUxvYWRlcltcIl9zY3JpcHRMb2FkaW5nUHJvbWlzZVwiXSA9IG51bGxcclxuICAgICAgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX2NvbmZpZ1wiXVtcImFwaUtleVwiXSA9IGBBSXphU3lBNzVvamhaaEVoRGFPM3ZmbjNteFRZMzJzcTVmbEF3bFkmbGFuZ3VhZ2U9JHt0aGlzLkN1cnJlbnRMYW5ndWFnZX1gO1xyXG4gICAgICB2YXIgU2NyaXB0VGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5tYXBzQVBJTG9hZGVyW1wiX1NDUklQVF9JRFwiXSk7XHJcbiAgICAgIGlmIChTY3JpcHRUYWcpXHJcbiAgICAgICAgU2NyaXB0VGFnLnJlbW92ZSgpO1xyXG4gICAgICB2YXIgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicGFjLWNvbnRhaW5lclwiKTtcclxuICAgICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgZWxlbWVudHNbMF0ucmVtb3ZlKCk7XHJcblxyXG4gICAgICBsZXQgd2luZG93ID0gdGhpcy5tYXBzQVBJTG9hZGVyW1wiX3dpbmRvd1JlZlwiXS5nZXROYXRpdmVXaW5kb3coKTtcclxuICAgICAgd2luZG93Lmdvb2dsZSA9IG51bGxcclxuXHJcblxyXG5cclxuICAgICAgdGhpcy5MYXp5TWFwc0FQSUxvYWRlciA9IG5ldyBMYXp5TWFwc0FQSUxvYWRlcih7XHJcbiAgICAgICAgLy8gJmxhbmd1YWdlPSR7VXRpbGl0eVNlcnZpY2UuQ3VycmVudExhbmd1YWdlfVxyXG4gICAgICAgIGFwaUtleTogYEFJemFTeUE3NW9qaFpoRWhEYU8zdmZuM214VFkzMnNxNWZsQXdsWSZsYW5ndWFnZT0ke3RoaXMuQ3VycmVudExhbmd1YWdlfWAsXHJcbiAgICAgICAgbGlicmFyaWVzOiBbJ3BsYWNlcyddLFxyXG4gICAgICB9LCB0aGlzLm1hcHNBUElMb2FkZXJbXCJfd2luZG93UmVmXCJdLCB0aGlzLm1hcHNBUElMb2FkZXJbXCJfZG9jdW1lbnRSZWZcIl0sIHRoaXMubWFwc0FQSUxvYWRlcltcIl9jb25maWdcIl1bXCJsb2NhbGVJZFwiXSk7XHJcbiAgICAgIHRoaXMuTGF6eU1hcHNBUElMb2FkZXIubG9hZCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGxldCBhdXRvY29tcGxldGUgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZSh0aGlzLnNlYXJjaEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwge1xyXG4gICAgICAgICAgdHlwZXM6IFtcImFkZHJlc3NcIl1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXV0b2NvbXBsZXRlLmFkZExpc3RlbmVyKCdwbGFjZV9jaGFuZ2VkJywgKC8qKlxyXG4gICAgICAgICAgICAgICAgKiBAcmV0dXJuIHs/fVxyXG4gICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoLyoqXHJcbiAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHs/fVxyXG4gICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBwbGFjZSByZXN1bHRcclxuICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7P30gKi9cclxuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlID0gYXV0b2NvbXBsZXRlLmdldFBsYWNlKCk7XHJcbiAgICAgICAgICAgICAgICAvKiogQHR5cGUgez99ICovXHJcbiAgICAgICAgICAgICAgICBjb25zdCBnZXJtYW5BZGRyZXNzID0ge1xyXG4gICAgICAgICAgICAgICAgICBnbUlEOiBwbGFjZS5pZCxcclxuICAgICAgICAgICAgICAgICAgaWNvbjogcGxhY2UuaWNvbixcclxuICAgICAgICAgICAgICAgICAgdXJsOiBwbGFjZS51cmwsXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlSUQ6IHBsYWNlLnBsYWNlX2lkLFxyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5QWRkcmVzczogcGxhY2UuZm9ybWF0dGVkX2FkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHBsYWNlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHZpY2luaXR5OiBwbGFjZS52aWNpbml0eSxcclxuICAgICAgICAgICAgICAgICAgbG9jYWxpdHk6IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzdGF0ZToge30sXHJcbiAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHt9LFxyXG4gICAgICAgICAgICAgICAgICBnZW9Mb2NhdGlvbjogeyBsYXRpdHVkZTogLTEsIGxvbmdpdHVkZTogLTEgfSxcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlLmdlb21ldHJ5ICYmIHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3MuZ2VvTG9jYXRpb24ubGF0aXR1ZGUgPSBwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKTtcclxuICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzcy5nZW9Mb2NhdGlvbi5sb25naXR1ZGUgPSBwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cy5mb3JFYWNoKCgvKipcclxuICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0gez99IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7P31cclxuICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlcy5pbmRleE9mKCdzdHJlZXRfbnVtYmVyJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzc1tcInN0cmVldE51bWJlclwiXSA9IHZhbHVlLnNob3J0X25hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlcy5pbmRleE9mKCdyb3V0ZScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3NbXCJzdHJlZXROYW1lXCJdID0gdmFsdWUubG9uZ19uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZXMuaW5kZXhPZigncG9zdGFsX2NvZGUnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXJtYW5BZGRyZXNzW1wicG9zdGFsQ29kZVwiXSA9IE51bWJlcih2YWx1ZS5zaG9ydF9uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGVzLmluZGV4T2YoJ3N1YmxvY2FsaXR5JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzc1tcInN1YmxvY2FsaXR5XCJdID0gdmFsdWUubG9uZ19uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZXMuaW5kZXhPZignbG9jYWxpdHknKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXJtYW5BZGRyZXNzLmxvY2FsaXR5W1wibG9uZ1wiXSA9IHZhbHVlLmxvbmdfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3MubG9jYWxpdHlbXCJzaG9ydFwiXSA9IHZhbHVlLnNob3J0X25hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlcy5pbmRleE9mKCdhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzEnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXJtYW5BZGRyZXNzLnN0YXRlW1wibG9uZ1wiXSA9IHZhbHVlLmxvbmdfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3Muc3RhdGVbXCJzaG9ydFwiXSA9IHZhbHVlLnNob3J0X25hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlcy5pbmRleE9mKCdjb3VudHJ5JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2VybWFuQWRkcmVzcy5jb3VudHJ5W1wibG9uZ1wiXSA9IHZhbHVlLmxvbmdfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3MuY291bnRyeVtcInNob3J0XCJdID0gdmFsdWUuc2hvcnRfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGVzLmluZGV4T2YoJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMycpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGdlcm1hbkFkZHJlc3MubG9jYWxpdHlbXCJzaG9ydFwiXSA9IHZhbHVlLnNob3J0X25hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMub25HZXJtYW5BZGRyZXNzTWFwcGVkLmVtaXQoZ2VybWFuQWRkcmVzcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkdlcm1hbkFkZHJlc3NNYXBwZWQoZ2VybWFuQWRkcmVzcylcclxuICAgICAgICAgICAgICAgIGlmICghcGxhY2UucGxhY2VfaWQgfHwgcGxhY2UuZ2VvbWV0cnkgPT09IHVuZGVmaW5lZCB8fCBwbGFjZS5nZW9tZXRyeSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAvLyBwbGFjZSByZXN1bHQgaXMgbm90IHZhbGlkXHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAvLyBzaG93IGRpYWxvZyB0byBzZWxlY3QgYSBhZGRyZXNzIGZyb20gdGhlIGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIC8vIGVtaXQgZmFpbGVkIGV2ZW50XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuYWRkcmVzcyA9IHBsYWNlLmZvcm1hdHRlZF9hZGRyZXNzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkF1dG9jb21wbGV0ZVNlbGVjdGVkLmVtaXQocGxhY2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5BdXRvY29tcGxldGVTZWxlY3RlZChwbGFjZSlcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uTG9jYXRpb25TZWxlY3RlZC5lbWl0KHtcclxuICAgICAgICAgICAgICAgICAgbGF0aXR1ZGU6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLFxyXG4gICAgICAgICAgICAgICAgICBsb25naXR1ZGU6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICA7XHJcbiAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJylcclxuICAgICAgdGhpcy5tYXBzQVBJTG9hZGVyW1wiX2NvbmZpZ1wiXVtcImxvY2FsZUlkXCJdID0gXCJhci1FR1wiO1xyXG4gICAgaWYgKHRoaXMuQ3VycmVudExhbmd1YWdlID09ICdlbicpXHJcbiAgICAgIHRoaXMubWFwc0FQSUxvYWRlcltcIl9jb25maWdcIl1bXCJsb2NhbGVJZFwiXSA9IFwiZW4tVVNcIjtcclxuICAgIHRoaXMubWFwc0FQSUxvYWRlcltcIl9zY3JpcHRMb2FkaW5nUHJvbWlzZVwiXSA9IG51bGxcclxuICAgIHRoaXMubWFwc0FQSUxvYWRlcltcIl9jb25maWdcIl1bXCJhcGlLZXlcIl0gPSBgQUl6YVN5QTc1b2poWmhFaERhTzN2Zm4zbXhUWTMyc3E1ZmxBd2xZJmxhbmd1YWdlPSR7dGhpcy5DdXJyZW50TGFuZ3VhZ2V9YDtcclxuICAgIHZhciBsZWZ0U2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWFwc0FQSUxvYWRlcltcIl9TQ1JJUFRfSURcIl0pO1xyXG4gICAgaWYgKGxlZnRTZWN0aW9uKVxyXG4gICAgICBsZWZ0U2VjdGlvbi5yZW1vdmUoKTtcclxuICAgIHRoaXMuTGF6eU1hcHNBUElMb2FkZXIgPSBuZXcgTGF6eU1hcHNBUElMb2FkZXIoe1xyXG4gICAgICBhcGlLZXk6IGBBSXphU3lBNzVvamhaaEVoRGFPM3ZmbjNteFRZMzJzcTVmbEF3bFkmbGFuZ3VhZ2U9JHt0aGlzLkN1cnJlbnRMYW5ndWFnZX1gLFxyXG4gICAgICBsaWJyYXJpZXM6IFsncGxhY2VzJ10sXHJcbiAgICB9LCB0aGlzLm1hcHNBUElMb2FkZXJbXCJfd2luZG93UmVmXCJdLCB0aGlzLm1hcHNBUElMb2FkZXJbXCJfZG9jdW1lbnRSZWZcIl0sIHRoaXMubWFwc0FQSUxvYWRlcltcIl9jb25maWdcIl1bXCJsb2NhbGVJZFwiXSk7XHJcbiAgICB0aGlzLkxhenlNYXBzQVBJTG9hZGVyLmxvYWQoKTtcclxuICAgIFxyXG4gICAgdGhpcy5tYXBzQVBJTG9hZGVyLmxvYWQoKS50aGVuKCgpID0+IHtcclxuICAgICAgbGV0IGF1dG9jb21wbGV0ZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKHRoaXMuc2VhcmNoRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XHJcbiAgICAgICAgdHlwZXM6IFtcImFkZHJlc3NcIl1cclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pXHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuVmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5WaWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuVmlld1R5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm9wdGlvbnMuTGFiZWxLZXkhPW51bGwmJnRoaXMub3B0aW9ucy5MYWJlbEtleSE9XCJcIilcclxuICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm9wdGlvbnMuVmFsdWUgIT0gbnVsbClcclxuICAgIHtcclxuICAgICAgdGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSBcclxuICAgIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zPXRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcbiAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpPT57XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZD10cnVlXHJcbiAgICB9KVxyXG5cclxuXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5vcHRpb25zLk5hbWUpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLktleSwgdGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PntcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKXtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmKHRoaXMubWFya0FsbEFzVG91Y2hlZCYmdGhpcy5ncm91cC5pbnZhbGlkKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQ9ZmFsc2VcclxuICAgIH1cclxuICAgXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxufVxyXG5cclxuICBBdXRvY29tcGxldGVTZWxlY3RlZChyZXN1bHQpIHtcclxuXHJcblxyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbCA9PSBuZXcgTWFwQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLlRleHQgPSByZXN1bHQuZm9ybWF0dGVkX2FkZHJlc3M7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLlBsYWNlSUQgPSByZXN1bHQucGxhY2VfaWQ7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLkdvb2dsZU1hcHNVUkwgPSByZXN1bHQudXJsO1xyXG4gIH1cclxuICBMb2NhdGlvblNlbGVjdGVkKGxvY2F0aW9uKSB7XHJcblxyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5MYXRpdHVkZSA9IGxvY2F0aW9uLmxhdGl0dWRlO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5Mb25naXR1ZGUgPSBsb2NhdGlvbi5sb25naXR1ZGU7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZUZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xyXG5cclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbCk7XHJcbiAgfVxyXG5cclxuICBHZXJtYW5BZGRyZXNzTWFwcGVkKHJlc3VsdCkge1xyXG4gIFxyXG4gICBcclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlTW9kZWwgPT0gbmV3IE1hcEF1dG9jb21wbGV0ZURUTygpO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5UZXh0ID0gcmVzdWx0LmRpc3BsYXlBZGRyZXNzO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5QbGFjZUlEID0gcmVzdWx0LnBsYWNlSUQ7XHJcbiAgICB0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsLkdvb2dsZU1hcHNVUkwgPSByZXN1bHQudXJsO1xyXG4gICAgdGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbC5MYXRpdHVkZSA9IHJlc3VsdC5nZW9Mb2NhdGlvbi5sYXRpdHVkZTtcclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlTW9kZWwuTG9uZ2l0dWRlID0gcmVzdWx0Lmdlb0xvY2F0aW9uLmxvbmdpdHVkZTtcclxuICAgIHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5NYXBBdXRvQ29tcGxldGVNb2RlbCk7XHJcbiAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXS5zZXRWYWx1ZSh0aGlzLk1hcEF1dG9Db21wbGV0ZU1vZGVsKVxyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wudmFsdWUpXHJcbiAgfVxyXG5cclxuICAgIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIFJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gICAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5NYXBBdXRvQ29tcGxldGVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcblxyXG4gICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuTWFwQXV0b0NvbXBsZXRlRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
|
|
3
3
|
import { FormControl, Validators, FormGroup, ControlContainer, FormGroupDirective } from '@angular/forms';
|
|
4
|
-
import { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';
|
|
5
4
|
import { InputType } from '../../Shared/Enums/InputType';
|
|
6
5
|
import { EnglishArabicDTO } from '../../Shared/Models/EnglishArabicDTO';
|
|
7
6
|
import { ControlUtility } from '../../Shared/services/ControlUtility';
|
|
8
7
|
import { LanguageMode } from '../../Shared/Enums/LanguageMode';
|
|
9
|
-
import {
|
|
8
|
+
import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
|
|
9
|
+
import { GlobalSettings } from '../../Shared/services/GlobalSettings.service';
|
|
10
10
|
export class MultiLingualHtmlEditorComponent {
|
|
11
|
-
constructor(
|
|
12
|
-
this.ErrorHandler = ErrorHandler;
|
|
11
|
+
constructor(MultiLingualHtmlEditorFormControlHost, controlContainer, controlUtility, UtilityService, controlValidationService, globalSettings) {
|
|
13
12
|
this.MultiLingualHtmlEditorFormControlHost = MultiLingualHtmlEditorFormControlHost;
|
|
14
13
|
this.controlContainer = controlContainer;
|
|
15
14
|
this.controlUtility = controlUtility;
|
|
16
15
|
this.UtilityService = UtilityService;
|
|
17
|
-
this.translate = translate;
|
|
18
16
|
this.controlValidationService = controlValidationService;
|
|
17
|
+
this.globalSettings = globalSettings;
|
|
19
18
|
this.OnChange = new EventEmitter();
|
|
20
19
|
this.CurrentLanguage = "";
|
|
21
20
|
this.ArabicValidationRules = [];
|
|
@@ -27,6 +26,8 @@ export class MultiLingualHtmlEditorComponent {
|
|
|
27
26
|
this.validationRulesasync = [];
|
|
28
27
|
this.ArabicLetterOnly = "";
|
|
29
28
|
this.EnglishLetterOnly = "";
|
|
29
|
+
this.englishValue = null;
|
|
30
|
+
this.arabicValue = null;
|
|
30
31
|
this.resetError = () => {
|
|
31
32
|
this.controlValidationService.RemoveGlobalError();
|
|
32
33
|
};
|
|
@@ -64,6 +65,10 @@ export class MultiLingualHtmlEditorComponent {
|
|
|
64
65
|
}
|
|
65
66
|
ngOnInit() {
|
|
66
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
if (!this.options.ViewType)
|
|
69
|
+
this.options.ViewType = this.globalSettings.ViewType;
|
|
70
|
+
if (!this.options.LanguageMode)
|
|
71
|
+
this.options.LanguageMode = this.globalSettings.LanguageMode;
|
|
67
72
|
this.editorEnglishConfig = {
|
|
68
73
|
editable: !this.options.IsDisabled,
|
|
69
74
|
spellcheck: true,
|
|
@@ -248,30 +253,37 @@ export class MultiLingualHtmlEditorComponent {
|
|
|
248
253
|
});
|
|
249
254
|
});
|
|
250
255
|
}
|
|
251
|
-
onTextChange() {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
256
|
+
onTextChange(type) {
|
|
257
|
+
if (type == "en") {
|
|
258
|
+
this.englishValue = this.MultilingualHtmlEditorgroup.controls["EnglishHtmlEditorValue"].value == null ? "" : this.MultilingualHtmlEditorgroup.controls["EnglishHtmlEditorValue"].value;
|
|
259
|
+
if (this.englishValue)
|
|
260
|
+
this.EnglishHtmlEditorFormControl.setValue(this.englishValue);
|
|
261
|
+
let EngliswordCountArray = this.EnglishHtmlEditorFormControl.value.split(" ").length;
|
|
262
|
+
if (EngliswordCountArray > 0) {
|
|
263
|
+
if (EngliswordCountArray > this.options.MaxWordCount)
|
|
264
|
+
this.MultilingualHtmlEditorgroup.controls["EnglishHtmlEditorValue"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });
|
|
265
|
+
this.MultilingualHtmlEditorgroup.controls["EnglishHtmlEditorValue"].markAsTouched();
|
|
266
|
+
this.MultilingualHtmlEditorgroup.controls["EnglishHtmlEditorValue"].invalid;
|
|
267
|
+
}
|
|
260
268
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
if (
|
|
264
|
-
this.
|
|
265
|
-
this.
|
|
266
|
-
|
|
269
|
+
if (type == "ar") {
|
|
270
|
+
this.arabicValue = this.MultilingualHtmlEditorgroup.controls["ArabicHtmlEditorValue"].value == null ? "" : this.MultilingualHtmlEditorgroup.controls["ArabicHtmlEditorValue"].value;
|
|
271
|
+
if (this.arabicValue)
|
|
272
|
+
this.ArabicHtmlEditorFormControl.setValue(this.arabicValue);
|
|
273
|
+
let ArabicwordCountArray = this.ArabicHtmlEditorFormControl.value.split(" ").length;
|
|
274
|
+
if (ArabicwordCountArray > 0) {
|
|
275
|
+
if (ArabicwordCountArray > this.options.MaxWordCount)
|
|
276
|
+
this.MultilingualHtmlEditorgroup.controls["ArabicHtmlEditorValue"].setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });
|
|
277
|
+
this.MultilingualHtmlEditorgroup.controls["ArabicHtmlEditorValue"].markAsTouched();
|
|
278
|
+
this.MultilingualHtmlEditorgroup.controls["ArabicHtmlEditorValue"].invalid;
|
|
279
|
+
}
|
|
267
280
|
}
|
|
268
281
|
let mulitLangModel = new EnglishArabicDTO();
|
|
269
|
-
mulitLangModel.Arabic = arabicValue;
|
|
270
|
-
mulitLangModel.English = englishValue;
|
|
271
|
-
this.ArabicHtmlEditorFormControl.setValue(arabicValue);
|
|
272
|
-
this.EnglishHtmlEditorFormControl.setValue(englishValue);
|
|
282
|
+
mulitLangModel.Arabic = this.arabicValue;
|
|
283
|
+
mulitLangModel.English = this.englishValue;
|
|
273
284
|
this.OnChange.emit(mulitLangModel);
|
|
274
|
-
this.
|
|
285
|
+
if (this.arabicValue && this.englishValue)
|
|
286
|
+
this.group.get(this.options.Name).setValue(mulitLangModel);
|
|
275
287
|
}
|
|
276
288
|
showGlobalError() {
|
|
277
289
|
this.controlUtility.showGlobalError();
|
|
@@ -362,22 +374,21 @@ MultiLingualHtmlEditorComponent.controlContainerstatic = null;
|
|
|
362
374
|
MultiLingualHtmlEditorComponent.decorators = [
|
|
363
375
|
{ type: Component, args: [{
|
|
364
376
|
selector: 'BBSF-MultiLingualHtmlEditor',
|
|
365
|
-
template: "<div class=\"b-control b-multilangual-html-editor\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"row\" *ngIf=\"ShowEnglishHtmlEditor\">\r\n <label class=\"b-label col-form-label col-sm-12 \" \r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\"\r\n [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n <angular-editor
|
|
377
|
+
template: "<div class=\"b-control b-multilangual-html-editor\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"row\" *ngIf=\"ShowEnglishHtmlEditor\">\r\n <label class=\"b-label col-form-label col-sm-12 \" \r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\"\r\n [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n <angular-editor class=\"form-control bnsights-control {{options.ExtraClasses_EN}} \" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"EnglishHtmlEditorValue\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"row\" *ngIf=\"ShowArabicHtmlEditor\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.IsHideArabicLable\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n\r\n <angular-editor dir=\"rtl\" class=\"form-control bnsights-control {{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"ArabicHtmlEditorValue\" [config]=\"editorArabicConfig\"></angular-editor>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n \r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n\r\n</div>\r\n",
|
|
366
378
|
styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
|
|
367
379
|
},] }
|
|
368
380
|
];
|
|
369
381
|
MultiLingualHtmlEditorComponent.ctorParameters = () => [
|
|
370
|
-
{ type: ErrorMassageValidation },
|
|
371
382
|
{ type: FormGroupDirective },
|
|
372
383
|
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
373
384
|
{ type: ControlUtility },
|
|
374
385
|
{ type: UtilityService },
|
|
375
|
-
{ type:
|
|
376
|
-
{ type:
|
|
386
|
+
{ type: ControlValidationService },
|
|
387
|
+
{ type: GlobalSettings }
|
|
377
388
|
];
|
|
378
389
|
MultiLingualHtmlEditorComponent.propDecorators = {
|
|
379
390
|
group: [{ type: Input }],
|
|
380
391
|
options: [{ type: Input }],
|
|
381
392
|
OnChange: [{ type: Output }]
|
|
382
393
|
};
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvTXVsdGlMaW5ndWFsSHRtbEVkaXRvci9NdWx0aUxpbmd1YWxIdG1sRWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFxQyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU8xRyxNQUFNLE9BQU8sK0JBQStCO0lBRzFDLFlBQW9CLFlBQW9DLEVBQVMscUNBQXlELEVBQXNCLGdCQUFrQyxFQUFVLGNBQThCLEVBQVMsY0FBNkIsRUFBUyxTQUErQixFQUFTLHdCQUFpRDtRQUE5VSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFBUywwQ0FBcUMsR0FBckMscUNBQXFDLENBQW9CO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxtQkFBYyxHQUFk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QUMsNEJBQTRCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUU3RCxDQUFDOztBQTlZTSxzREFBc0IsR0FBRyxJQUFJLENBQUM7O1lBUHRDLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNkJBQTZCO2dCQUN2QyxzeEpBQXNEOzthQUV2RDs7O1lBZlEsc0JBQXNCO1lBRG1FLGtCQUFrQjtZQUFwQyxnQkFBZ0IsdUJBb0IrQixRQUFRO1lBZjlILGNBQWM7WUFLa0MsY0FBYztZQUE5RCxvQkFBb0I7WUFBRSx3QkFBd0I7OztvQkFjcEQsS0FBSztzQkFDTCxLQUFLO3VCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0aW9uRXJyb3JNYXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvSW5wdXRUeXBlJztcclxuaW1wb3J0IHsgRW5nbGlzaEFyYWJpY0RUTyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvRW5nbGlzaEFyYWJpY0RUTyc7XHJcbmltcG9ydCB7IE11bHRpTGluZ3VhbEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NdWx0aUxpbmd1YWxIdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgTGFuZ0NoYW5nZUV2ZW50IH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IExhbmd1YWdlTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9MYW5ndWFnZU1vZGUnO1xyXG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yQ29uZmlnIH0gZnJvbSAnQGtvbGtvdi9hbmd1bGFyLWVkaXRvcic7XHJcblxyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtTXVsdGlMaW5ndWFsSHRtbEVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL011bHRpTGluZ3VhbEh0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL011bHRpTGluZ3VhbEh0bWxFZGl0b3IuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlMaW5ndWFsSHRtbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIEVycm9ySGFuZGxlcjogRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiwgcHVibGljIE11bHRpTGluZ3VhbEh0bWxFZGl0b3JGb3JtQ29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSxwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgdHJhbnNsYXRlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTpDb250cm9sVmFsaWRhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIE11bHRpTGluZ3VhbEh0bWxFZGl0b3JDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNdWx0aUxpbmd1YWxIdG1sRWRpdG9yT3B0aW9ucztcclxuICBAT3V0cHV0KCkgT25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICBBcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBFbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgTXVsdGlUZXh0QXJlYUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQXJhYmljQ29uZmlnOiBhbnlcclxuICBFbmdsaXNoQ29uZmlnOiBhbnlcclxuICBlZGl0b3JFbmdsaXNoQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnIFxyXG4gIGVkaXRvckFyYWJpY0NvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyBcclxuXHJcbiAgbWlzY0xpc3Q6IGFueVxyXG4gIHN0eWxlTGlzdDogYW55XHJcbiAgZm9udHNpemVMaXN0OiBhbnlcclxuICBwYXJhTGlzdDogYW55XHJcbiAgaW5zZXJ0TGlzdDogYW55XHJcblxyXG4gIEN1cnJlbnRMYW5ndWFnZTogc3RyaW5nID0gXCJcIjs7XHJcbiAgU2hvd0FyYWJpY0h0bWxFZGl0b3I6IGJvb2xlYW5cclxuICBTaG93RW5nbGlzaEh0bWxFZGl0b3I6IGJvb2xlYW5cclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIEVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBFbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuXHJcbiAgQXJhYmljTGV0dGVyT25seTpzdHJpbmc9XCJcIlxyXG4gIEVuZ2xpc2hMZXR0ZXJPbmx5OnN0cmluZz1cIlwiXHJcblxyXG4gZ2V0Q3VzdG9tRXJyb3JzTWFzc2FnZXMoKSB7XHJcbiAgICB0aGlzLkFyYWJpY0xldHRlck9ubHkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBcmFiaWNMZXR0ZXJPbmx5XCIpO1xyXG4gICAgdGhpcy5FbmdsaXNoTGV0dGVyT25seSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuZ2xpc2hMZXR0ZXJPbmx5XCIpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5lZGl0b3JFbmdsaXNoQ29uZmlnID0ge1xyXG4gICAgICBlZGl0YWJsZTogIXRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkLFxyXG4gICAgICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMub3B0aW9ucy5IZWlnaHQudG9TdHJpbmcoKSxcclxuICAgICAgbWluSGVpZ2h0OiB0aGlzLm9wdGlvbnMuSGVpZ2h0LnRvU3RyaW5nKCksXHJcbiAgICAgIG1heEhlaWdodDogICdhdXRvJyxcclxuICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgbWluV2lkdGg6ICdhdXRvJyxcclxuICAgICAgdHJhbnNsYXRlOiAneWVzJyxcclxuICAgICAgZW5hYmxlVG9vbGJhcjogdHJ1ZSxcclxuICAgICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuRW5nbGlzaFBsYWNlaG9sZGVyLFxyXG4gICAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgICAgZGVmYXVsdEZvbnROYW1lOiAnJyxcclxuICAgICAgZGVmYXVsdEZvbnRTaXplOiAnJyxcclxuICAgICAgZm9udHM6IFtcclxuICAgICAgICB7Y2xhc3M6ICdhcmlhbCcsIG5hbWU6ICdBcmlhbCd9LFxyXG4gICAgICAgIHtjbGFzczogJ3RpbWVzLW5ldy1yb21hbicsIG5hbWU6ICdUaW1lcyBOZXcgUm9tYW4nfSxcclxuICAgICAgICB7Y2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknfSxcclxuICAgICAgICB7Y2xhc3M6ICdjb21pYy1zYW5zLW1zJywgbmFtZTogJ0NvbWljIFNhbnMgTVMnfVxyXG4gICAgICBdLFxyXG4gICAgICBjdXN0b21DbGFzc2VzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAncXVvdGUnLFxyXG4gICAgICAgIGNsYXNzOiAncXVvdGUnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgICAgIGNsYXNzOiAncmVkVGV4dCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICd0aXRsZVRleHQnLFxyXG4gICAgICAgIGNsYXNzOiAndGl0bGVUZXh0JyxcclxuICAgICAgICB0YWc6ICdoMScsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgdXBsb2FkVXJsOiAndjEvaW1hZ2UnLFxyXG4gICAgdXBsb2FkV2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcclxuICAgIHNhbml0aXplOiB0cnVlLFxyXG4gICAgdG9vbGJhclBvc2l0aW9uOiAndG9wJyxcclxuICAgIHRvb2xiYXJIaWRkZW5CdXR0b25zOiBbXHJcbiAgICBcclxuICAgIF1cclxufTtcclxuXHJcblxyXG50aGlzLmVkaXRvckFyYWJpY0NvbmZpZyA9IHtcclxuICBlZGl0YWJsZTogIXRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkLFxyXG4gIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgaGVpZ2h0OiB0aGlzLm9wdGlvbnMuSGVpZ2h0LnRvU3RyaW5nKCksXHJcbiAgbWluSGVpZ2h0OiB0aGlzLm9wdGlvbnMuSGVpZ2h0LnRvU3RyaW5nKCksXHJcbiAgbWF4SGVpZ2h0OiAgJ2F1dG8nLFxyXG4gIHdpZHRoOiAnYXV0bycsXHJcbiAgbWluV2lkdGg6ICdhdXRvJyxcclxuICB0cmFuc2xhdGU6ICd5ZXMnLFxyXG4gIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5BcmFiaWNQbGFjZWhvbGRlcixcclxuICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICBkZWZhdWx0Rm9udE5hbWU6ICcnLFxyXG4gIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgZm9udHM6IFtcclxuICAgIHtjbGFzczogJ2FyaWFsJywgbmFtZTogJ0FyaWFsJ30sXHJcbiAgICB7Y2xhc3M6ICd0aW1lcy1uZXctcm9tYW4nLCBuYW1lOiAnVGltZXMgTmV3IFJvbWFuJ30sXHJcbiAgICB7Y2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknfSxcclxuICAgIHtjbGFzczogJ2NvbWljLXNhbnMtbXMnLCBuYW1lOiAnQ29taWMgU2FucyBNUyd9XHJcbiAgXSxcclxuICBjdXN0b21DbGFzc2VzOiBbXHJcbiAge1xyXG4gICAgbmFtZTogJ3F1b3RlJyxcclxuICAgIGNsYXNzOiAncXVvdGUnLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgY2xhc3M6ICdyZWRUZXh0J1xyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ3RpdGxlVGV4dCcsXHJcbiAgICBjbGFzczogJ3RpdGxlVGV4dCcsXHJcbiAgICB0YWc6ICdoMScsXHJcbiAgfSxcclxuXSxcclxudXBsb2FkVXJsOiAndjEvaW1hZ2UnLFxyXG51cGxvYWRXaXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG5zYW5pdGl6ZTogdHJ1ZSxcclxudG9vbGJhclBvc2l0aW9uOiAndG9wJyxcclxudG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuXHJcbl1cclxufTtcclxuXHJcbnRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuXHJcbiAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9YXdhaXQgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuXHJcbiAgICAvLyBVdGlsaXR5U2VydmljZS5UcmFuc2xhdG9yLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBMYW5nQ2hhbmdlRXZlbnQpID0+IHtcclxuICAgIC8vICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBldmVudC5sYW5nXHJcbiAgICAvLyAgIHRoaXMuc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMubWlzY0xpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X01pc2MgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfTWlzYyA6IFsnY29kZXZpZXcnLCAndW5kbycsICdyZWRvJ107XHJcbiAgICAvLyB0aGlzLnN0eWxlTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgOiBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdjbGVhciddXHJcbiAgICAvLyB0aGlzLmZvbnRzaXplTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgOiBbJ2ZvbnRuYW1lJywgJ2ZvbnRzaXplJywgJ2NvbG9yJ11cclxuICAgIC8vIHRoaXMucGFyYUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1BhcmEgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfUGFyYSA6IFsnc3R5bGUnLCAndWwnLCAnb2wnLCAncGFyYWdyYXBoJywgJ2hlaWdodCddXHJcbiAgICAvLyB0aGlzLmluc2VydExpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0luc2VydCAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9JbnNlcnQgOiBbJ3RhYmxlJywgJ3BpY3R1cmUnLCAnbGluaycsICd2aWRlbycsICdociddXHJcblxyXG4gICAgLy8gdGhpcy5BcmFiaWNDb25maWcgPSB7XHJcbiAgICAvLyAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuQXJhYmljUGxhY2Vob2xkZXIsXHJcbiAgICAvLyAgIGhlaWdodDogYCR7dGhpcy5vcHRpb25zLkhlaWdodH1weGAsXHJcbiAgICAvLyAgIHRvb2xiYXI6IFtcclxuICAgIC8vICAgICBbJ21pc2MnLCB0aGlzLm1pc2NMaXN0XSxcclxuICAgIC8vICAgICBbJ3N0eWxlJywgdGhpcy5zdHlsZUxpc3RdLFxyXG4gICAgLy8gICAgIFsnZm9udHNpemUnLCB0aGlzLmZvbnRzaXplTGlzdF0sXHJcbiAgICAvLyAgICAgWydwYXJhJywgdGhpcy5wYXJhTGlzdF0sXHJcbiAgICAvLyAgICAgWydpbnNlcnQnLCB0aGlzLmluc2VydExpc3RdXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyAgIGZvbnROYW1lczogWydIZWx2ZXRpY2EnLCAnQXJpYWwnLCAnQXJpYWwgQmxhY2snLCAnQ29taWMgU2FucyBNUycsICdDb3VyaWVyIE5ldycsICdSb2JvdG8nLCAnVGltZXMnXVxyXG5cclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuRW5nbGlzaENvbmZpZyA9IHtcclxuICAgIC8vICAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5FbmdsaXNoUGxhY2Vob2xkZXIsXHJcbiAgICAvLyAgIGhlaWdodDogYCR7dGhpcy5vcHRpb25zLkhlaWdodH1weGAsXHJcbiAgICAvLyAgIHRvb2xiYXI6IFtcclxuICAgIC8vICAgICBbJ21pc2MnLCB0aGlzLm1pc2NMaXN0XSxcclxuICAgIC8vICAgICBbJ3N0eWxlJywgdGhpcy5zdHlsZUxpc3RdLFxyXG4gICAgLy8gICAgIFsnZm9udHNpemUnLCB0aGlzLmZvbnRzaXplTGlzdF0sXHJcbiAgICAvLyAgICAgWydwYXJhJywgdGhpcy5wYXJhTGlzdF0sXHJcbiAgICAvLyAgICAgWydpbnNlcnQnLCB0aGlzLmluc2VydExpc3RdXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyAgIGZvbnROYW1lczogWydIZWx2ZXRpY2EnLCAnQXJpYWwnLCAnQXJpYWwgQmxhY2snLCAnQ29taWMgU2FucyBNUycsICdDb3VyaWVyIE5ldycsICdSb2JvdG8nLCAnVGltZXMnXVxyXG5cclxuICAgIC8vIH1cclxuICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7O1xyXG4gICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuYWRkQ29udHJvbChcIkFyYWJpY0h0bWxFZGl0b3JWYWx1ZVwiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmFkZENvbnRyb2woXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCIsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wgPSB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY0h0bWxFZGl0b3JWYWx1ZVwiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sID0gdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCJdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtR3JvdXAodGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHMpKTtcclxuICAgIHRoaXMuZ2V0Q3VzdG9tRXJyb3JzTWFzc2FnZXMoKTtcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLlR5cGUpIHtcclxuICAgICAgY2FzZSBJbnB1dFR5cGUuRW1haWw6XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQvLCB7IEVtYWlsVmFsaWRhdGlvbktleTogXCJcIiB9KSxcclxuXHJcbiAgICAgICAgXSkpO1xyXG4gICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQvLCB7IEVtYWlsVmFsaWRhdGlvbktleTogXCJcIiB9KSxcclxuXHJcbiAgICAgICAgXSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIElucHV0VHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLj9bMC05XSspPyQnKSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuP1swLTldKyk/JCcpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvblxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVmFsaWRhdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVmFsaWRhdGlvbiA9IFZhbGlkYXRpb25zW2luZGV4XTtcclxuICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1pbkxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1heExlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLk1heExlbmd0aCkpO1xyXG4gICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5BcmFiaWNMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5BcmFiaWNMYWJlbEtleSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5KTtcclxuXHJcbiAgICB0aGlzLnNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCk7XHJcbiAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXltcXHUwNjIxLVxcdTA2NEFcXHUwNjYwLVxcdTA2NjkgXSskLywgeyBBcmFiaWNMZXR0ZXJPbmx5OiB0aGlzLkFyYWJpY0xldHRlck9ubHkgfSksXHJcbiAgICAgICBcclxuICAgIF0pKTtcclxuICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXltcXHgwMC1cXHg3Rl0qJC8sIHsgRW5nbGlzaExldHRlck9ubHk6IHRoaXMuRW5nbGlzaExldHRlck9ubHkgfSksXHJcbiAgICAgICBcclxuICAgIF0pKTtcclxuICAgIC8vIHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgLy8gdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUuQXJhYmljKVxyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5FbmdsaXNoKVxyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxIdG1sRWRpdG9yRm9ybUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBvblRleHRDaGFuZ2UoKSB7XHJcbiAgICBsZXQgYXJhYmljVmFsdWU6IHN0cmluZyA9IHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiQXJhYmljSHRtbEVkaXRvclZhbHVlXCJdLnZhbHVlID09IG51bGwgPyBcIlwiIDogdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNIdG1sRWRpdG9yVmFsdWVcIl0udmFsdWU7XHJcbiAgICBsZXQgZW5nbGlzaFZhbHVlOiBzdHJpbmcgPSB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hIdG1sRWRpdG9yVmFsdWVcIl0udmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hIdG1sRWRpdG9yVmFsdWVcIl0udmFsdWU7XHJcblxyXG4gICAgbGV0IEVuZ2xpc3dvcmRDb3VudEFycmF5ID0gKHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC52YWx1ZSBhcyBzdHJpbmcpLnNwbGl0KFwiIFwiKS5sZW5ndGhcclxuICAgIGlmIChFbmdsaXN3b3JkQ291bnRBcnJheSA+IDApIHtcclxuICAgICAgaWYgKEVuZ2xpc3dvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudClcclxuICAgICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hIdG1sRWRpdG9yVmFsdWVcIl0uc2V0RXJyb3JzKHsgTWF4V29yZENvdW50VmFsaWRhdGlvbktleTogdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudCB9KVxyXG4gICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hIdG1sRWRpdG9yVmFsdWVcIl0ubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaEh0bWxFZGl0b3JWYWx1ZVwiXS5pbnZhbGlkXHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxldCBBcmFiaWN3b3JkQ291bnRBcnJheSA9ICh0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC52YWx1ZSBhcyBzdHJpbmcpLnNwbGl0KFwiIFwiKS5sZW5ndGhcclxuICAgIGlmIChBcmFiaWN3b3JkQ291bnRBcnJheSA+IDApIHtcclxuICAgICAgaWYgKEFyYWJpY3dvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudClcclxuICAgICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY0h0bWxFZGl0b3JWYWx1ZVwiXS5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50IH0pXHJcbiAgICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiQXJhYmljSHRtbEVkaXRvclZhbHVlXCJdLm1hcmtBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY0h0bWxFZGl0b3JWYWx1ZVwiXS5pbnZhbGlkXHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxldCBtdWxpdExhbmdNb2RlbCA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKClcclxuICAgIG11bGl0TGFuZ01vZGVsLkFyYWJpYyA9IGFyYWJpY1ZhbHVlO1xyXG4gICAgbXVsaXRMYW5nTW9kZWwuRW5nbGlzaCA9IGVuZ2xpc2hWYWx1ZVxyXG4gICAgdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsdWUoYXJhYmljVmFsdWUpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKGVuZ2xpc2hWYWx1ZSk7XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQobXVsaXRMYW5nTW9kZWwpXHJcbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkuc2V0VmFsdWUobXVsaXRMYW5nTW9kZWwpXHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCkge1xyXG5cclxuICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzID0gdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMgPSB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcblxyXG4gICAgdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5MYW5ndWFnZU1vZGUpIHtcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYXJlX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93RW5nbGlzaEh0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQXJhYmljX0xhbmd1YWdlX29ubHlfaXNfdmlzaWJsZTpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuRW5nbGlzaF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5TaG93RW5nbGlzaEh0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZV9idXRfb25seV9jdXJyZW50X2xhbmd1YWdlX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY0h0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hIdG1sRWRpdG9yID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuQ3VycmVudExhbmd1YWdlID09ICdhcicpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2J1dF9vbmx5X0FyYWJpY19pc19yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdsaXNoSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYnV0X29ubHlfRW5nbGlzaF9pc19yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdsaXNoSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkN1cnJlbnRfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlX2FuZF9yZXF1aXJlZDpcclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgdGhpcy5TaG93QXJhYmljSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdsaXNoSHRtbEVkaXRvciA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJykge1xyXG4gICAgICAgICAgdGhpcy5TaG93QXJhYmljSHRtbEVkaXRvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5TaG93RW5nbGlzaEh0bWxFZGl0b3IgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgSXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|
|
394
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvTXVsdGlMaW5ndWFsSHRtbEVkaXRvci9NdWx0aUxpbmd1YWxIdG1sRWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFPOUUsTUFBTSxPQUFPLCtCQUErQjtJQUcxQyxZQUFtQixxQ0FBeUQsRUFBc0IsZ0JBQWtDLEVBQzFILGNBQThCLEVBQVUsY0FBOEIsRUFBVSx3QkFBa0QsRUFDbEksY0FBOEI7UUFGckIsMENBQXFDLEdBQXJDLHFDQUFxQyxDQUFvQjtRQUFzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzFILG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3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LElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7b0JBRWxDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO3dCQUNuQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFFdkQ7aUJBQ0Y7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtRQUVELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsMkJBQTJCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUU3RCxDQUFDOztBQXJhTSxzREFBc0IsR0FBRyxJQUFJLENBQUM7O1lBUHRDLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNkJBQTZCO2dCQUN2Qyx5cUpBQXNEOzthQUV2RDs7O1lBZitFLGtCQUFrQjtZQUFwQyxnQkFBZ0IsdUJBbUJHLFFBQVE7WUFmaEYsY0FBYztZQUlZLGNBQWM7WUFBeEMsd0JBQXdCO1lBQ3hCLGNBQWM7OztvQkFnQnBCLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBFbmdsaXNoQXJhYmljRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9FbmdsaXNoQXJhYmljRFRPJztcclxuaW1wb3J0IHsgTXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL011bHRpTGluZ3VhbEh0bWxFZGl0b3JPcHRpb25zJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBMYW5ndWFnZU1vZGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvTGFuZ3VhZ2VNb2RlJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckNvbmZpZyB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG5cclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLU11bHRpTGluZ3VhbEh0bWxFZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9NdWx0aUxpbmd1YWxIdG1sRWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9NdWx0aUxpbmd1YWxIdG1sRWRpdG9yLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE11bHRpTGluZ3VhbEh0bWxFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IocHVibGljIE11bHRpTGluZ3VhbEh0bWxFZGl0b3JGb3JtQ29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIHByaXZhdGUgVXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3NcclxuICApIHtcclxuICAgIE11bHRpTGluZ3VhbEh0bWxFZGl0b3JDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNdWx0aUxpbmd1YWxIdG1sRWRpdG9yT3B0aW9ucztcclxuICBAT3V0cHV0KCkgT25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICBBcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBFbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgTXVsdGlUZXh0QXJlYUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQXJhYmljQ29uZmlnOiBhbnlcclxuICBFbmdsaXNoQ29uZmlnOiBhbnlcclxuICBlZGl0b3JFbmdsaXNoQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnIFxyXG4gIGVkaXRvckFyYWJpY0NvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyBcclxuXHJcbiAgbWlzY0xpc3Q6IGFueVxyXG4gIHN0eWxlTGlzdDogYW55XHJcbiAgZm9udHNpemVMaXN0OiBhbnlcclxuICBwYXJhTGlzdDogYW55XHJcbiAgaW5zZXJ0TGlzdDogYW55XHJcblxyXG4gIEN1cnJlbnRMYW5ndWFnZTogc3RyaW5nID0gXCJcIjs7XHJcbiAgU2hvd0FyYWJpY0h0bWxFZGl0b3I6IGJvb2xlYW5cclxuICBTaG93RW5nbGlzaEh0bWxFZGl0b3I6IGJvb2xlYW5cclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBBcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIEVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICBFbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuXHJcbiAgQXJhYmljTGV0dGVyT25seTpzdHJpbmc9XCJcIlxyXG4gIEVuZ2xpc2hMZXR0ZXJPbmx5OnN0cmluZz1cIlwiXHJcblxyXG4gIGVuZ2xpc2hWYWx1ZT1udWxsXHJcbiAgYXJhYmljVmFsdWU9bnVsbFxyXG5cclxuIGdldEN1c3RvbUVycm9yc01hc3NhZ2VzKCkge1xyXG4gICAgdGhpcy5BcmFiaWNMZXR0ZXJPbmx5ID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQXJhYmljTGV0dGVyT25seVwiKTtcclxuICAgIHRoaXMuRW5nbGlzaExldHRlck9ubHkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmdsaXNoTGV0dGVyT25seVwiKTtcclxuXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuVmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5WaWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuVmlld1R5cGU7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuTGFuZ3VhZ2VNb2RlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuTGFuZ3VhZ2VNb2RlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5MYW5ndWFnZU1vZGU7XHJcblxyXG4gICAgdGhpcy5lZGl0b3JFbmdsaXNoQ29uZmlnID0ge1xyXG4gICAgICBlZGl0YWJsZTogIXRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkLFxyXG4gICAgICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMub3B0aW9ucy5IZWlnaHQudG9TdHJpbmcoKSxcclxuICAgICAgbWluSGVpZ2h0OiB0aGlzLm9wdGlvbnMuSGVpZ2h0LnRvU3RyaW5nKCksXHJcbiAgICAgIG1heEhlaWdodDogICdhdXRvJyxcclxuICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgbWluV2lkdGg6ICdhdXRvJyxcclxuICAgICAgdHJhbnNsYXRlOiAneWVzJyxcclxuICAgICAgZW5hYmxlVG9vbGJhcjogdHJ1ZSxcclxuICAgICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuRW5nbGlzaFBsYWNlaG9sZGVyLFxyXG4gICAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgICAgZGVmYXVsdEZvbnROYW1lOiAnJyxcclxuICAgICAgZGVmYXVsdEZvbnRTaXplOiAnJyxcclxuICAgICAgZm9udHM6IFtcclxuICAgICAgICB7Y2xhc3M6ICdhcmlhbCcsIG5hbWU6ICdBcmlhbCd9LFxyXG4gICAgICAgIHtjbGFzczogJ3RpbWVzLW5ldy1yb21hbicsIG5hbWU6ICdUaW1lcyBOZXcgUm9tYW4nfSxcclxuICAgICAgICB7Y2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknfSxcclxuICAgICAgICB7Y2xhc3M6ICdjb21pYy1zYW5zLW1zJywgbmFtZTogJ0NvbWljIFNhbnMgTVMnfVxyXG4gICAgICBdLFxyXG4gICAgICBjdXN0b21DbGFzc2VzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAncXVvdGUnLFxyXG4gICAgICAgIGNsYXNzOiAncXVvdGUnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgICAgIGNsYXNzOiAncmVkVGV4dCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICd0aXRsZVRleHQnLFxyXG4gICAgICAgIGNsYXNzOiAndGl0bGVUZXh0JyxcclxuICAgICAgICB0YWc6ICdoMScsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgdXBsb2FkVXJsOiAndjEvaW1hZ2UnLFxyXG4gICAgdXBsb2FkV2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcclxuICAgIHNhbml0aXplOiB0cnVlLFxyXG4gICAgdG9vbGJhclBvc2l0aW9uOiAndG9wJyxcclxuICAgIHRvb2xiYXJIaWRkZW5CdXR0b25zOiBbXHJcbiAgICBcclxuICAgIF1cclxufTtcclxuXHJcblxyXG50aGlzLmVkaXRvckFyYWJpY0NvbmZpZyA9IHtcclxuICBlZGl0YWJsZTogIXRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkLFxyXG4gIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgaGVpZ2h0OiB0aGlzLm9wdGlvbnMuSGVpZ2h0LnRvU3RyaW5nKCksXHJcbiAgbWluSGVpZ2h0OiB0aGlzLm9wdGlvbnMuSGVpZ2h0LnRvU3RyaW5nKCksXHJcbiAgbWF4SGVpZ2h0OiAgJ2F1dG8nLFxyXG4gIHdpZHRoOiAnYXV0bycsXHJcbiAgbWluV2lkdGg6ICdhdXRvJyxcclxuICB0cmFuc2xhdGU6ICd5ZXMnLFxyXG4gIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5BcmFiaWNQbGFjZWhvbGRlcixcclxuICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICBkZWZhdWx0Rm9udE5hbWU6ICcnLFxyXG4gIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgZm9udHM6IFtcclxuICAgIHtjbGFzczogJ2FyaWFsJywgbmFtZTogJ0FyaWFsJ30sXHJcbiAgICB7Y2xhc3M6ICd0aW1lcy1uZXctcm9tYW4nLCBuYW1lOiAnVGltZXMgTmV3IFJvbWFuJ30sXHJcbiAgICB7Y2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknfSxcclxuICAgIHtjbGFzczogJ2NvbWljLXNhbnMtbXMnLCBuYW1lOiAnQ29taWMgU2FucyBNUyd9XHJcbiAgXSxcclxuICBjdXN0b21DbGFzc2VzOiBbXHJcbiAge1xyXG4gICAgbmFtZTogJ3F1b3RlJyxcclxuICAgIGNsYXNzOiAncXVvdGUnLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgY2xhc3M6ICdyZWRUZXh0J1xyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ3RpdGxlVGV4dCcsXHJcbiAgICBjbGFzczogJ3RpdGxlVGV4dCcsXHJcbiAgICB0YWc6ICdoMScsXHJcbiAgfSxcclxuXSxcclxudXBsb2FkVXJsOiAndjEvaW1hZ2UnLFxyXG51cGxvYWRXaXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG5zYW5pdGl6ZTogdHJ1ZSxcclxudG9vbGJhclBvc2l0aW9uOiAndG9wJyxcclxudG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuXHJcbl1cclxufTtcclxuXHJcbnRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuXHJcbiAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9YXdhaXQgdGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuXHJcbiAgICAvLyBVdGlsaXR5U2VydmljZS5UcmFuc2xhdG9yLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBMYW5nQ2hhbmdlRXZlbnQpID0+IHtcclxuICAgIC8vICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBldmVudC5sYW5nXHJcbiAgICAvLyAgIHRoaXMuc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMubWlzY0xpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X01pc2MgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfTWlzYyA6IFsnY29kZXZpZXcnLCAndW5kbycsICdyZWRvJ107XHJcbiAgICAvLyB0aGlzLnN0eWxlTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgOiBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdjbGVhciddXHJcbiAgICAvLyB0aGlzLmZvbnRzaXplTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgOiBbJ2ZvbnRuYW1lJywgJ2ZvbnRzaXplJywgJ2NvbG9yJ11cclxuICAgIC8vIHRoaXMucGFyYUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1BhcmEgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfUGFyYSA6IFsnc3R5bGUnLCAndWwnLCAnb2wnLCAncGFyYWdyYXBoJywgJ2hlaWdodCddXHJcbiAgICAvLyB0aGlzLmluc2VydExpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0luc2VydCAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9JbnNlcnQgOiBbJ3RhYmxlJywgJ3BpY3R1cmUnLCAnbGluaycsICd2aWRlbycsICdociddXHJcblxyXG4gICAgLy8gdGhpcy5BcmFiaWNDb25maWcgPSB7XHJcbiAgICAvLyAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuQXJhYmljUGxhY2Vob2xkZXIsXHJcbiAgICAvLyAgIGhlaWdodDogYCR7dGhpcy5vcHRpb25zLkhlaWdodH1weGAsXHJcbiAgICAvLyAgIHRvb2xiYXI6IFtcclxuICAgIC8vICAgICBbJ21pc2MnLCB0aGlzLm1pc2NMaXN0XSxcclxuICAgIC8vICAgICBbJ3N0eWxlJywgdGhpcy5zdHlsZUxpc3RdLFxyXG4gICAgLy8gICAgIFsnZm9udHNpemUnLCB0aGlzLmZvbnRzaXplTGlzdF0sXHJcbiAgICAvLyAgICAgWydwYXJhJywgdGhpcy5wYXJhTGlzdF0sXHJcbiAgICAvLyAgICAgWydpbnNlcnQnLCB0aGlzLmluc2VydExpc3RdXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyAgIGZvbnROYW1lczogWydIZWx2ZXRpY2EnLCAnQXJpYWwnLCAnQXJpYWwgQmxhY2snLCAnQ29taWMgU2FucyBNUycsICdDb3VyaWVyIE5ldycsICdSb2JvdG8nLCAnVGltZXMnXVxyXG5cclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuRW5nbGlzaENvbmZpZyA9IHtcclxuICAgIC8vICAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5FbmdsaXNoUGxhY2Vob2xkZXIsXHJcbiAgICAvLyAgIGhlaWdodDogYCR7dGhpcy5vcHRpb25zLkhlaWdodH1weGAsXHJcbiAgICAvLyAgIHRvb2xiYXI6IFtcclxuICAgIC8vICAgICBbJ21pc2MnLCB0aGlzLm1pc2NMaXN0XSxcclxuICAgIC8vICAgICBbJ3N0eWxlJywgdGhpcy5zdHlsZUxpc3RdLFxyXG4gICAgLy8gICAgIFsnZm9udHNpemUnLCB0aGlzLmZvbnRzaXplTGlzdF0sXHJcbiAgICAvLyAgICAgWydwYXJhJywgdGhpcy5wYXJhTGlzdF0sXHJcbiAgICAvLyAgICAgWydpbnNlcnQnLCB0aGlzLmluc2VydExpc3RdXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyAgIGZvbnROYW1lczogWydIZWx2ZXRpY2EnLCAnQXJpYWwnLCAnQXJpYWwgQmxhY2snLCAnQ29taWMgU2FucyBNUycsICdDb3VyaWVyIE5ldycsICdSb2JvdG8nLCAnVGltZXMnXVxyXG5cclxuICAgIC8vIH1cclxuICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7O1xyXG4gICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuYWRkQ29udHJvbChcIkFyYWJpY0h0bWxFZGl0b3JWYWx1ZVwiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmFkZENvbnRyb2woXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCIsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wgPSB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY0h0bWxFZGl0b3JWYWx1ZVwiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sID0gdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCJdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtR3JvdXAodGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHMpKTtcclxuICAgIHRoaXMuZ2V0Q3VzdG9tRXJyb3JzTWFzc2FnZXMoKTtcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLlR5cGUpIHtcclxuICAgICAgY2FzZSBJbnB1dFR5cGUuRW1haWw6XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQvLCB7IEVtYWlsVmFsaWRhdGlvbktleTogXCJcIiB9KSxcclxuXHJcbiAgICAgICAgXSkpO1xyXG4gICAgICAgIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQvLCB7IEVtYWlsVmFsaWRhdGlvbktleTogXCJcIiB9KSxcclxuXHJcbiAgICAgICAgXSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIElucHV0VHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLj9bMC05XSspPyQnKSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuP1swLTldKyk/JCcpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvblxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVmFsaWRhdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVmFsaWRhdGlvbiA9IFZhbGlkYXRpb25zW2luZGV4XTtcclxuICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1pbkxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1heExlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLk1heExlbmd0aCkpO1xyXG4gICAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkFyYWJpY0xhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5BcmFiaWNMYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5BcmFiaWNMYWJlbEtleSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5FbmdsaXNoTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuRW5nbGlzaExhYmVsS2V5KTtcclxuXHJcbiAgICB0aGlzLnNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCk7XHJcbiAgICB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXltcXHUwNjIxLVxcdTA2NEFcXHUwNjYwLVxcdTA2NjkgXSskLywgeyBBcmFiaWNMZXR0ZXJPbmx5OiB0aGlzLkFyYWJpY0xldHRlck9ubHkgfSksXHJcbiAgICAgICBcclxuICAgIF0pKTtcclxuICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXltcXHgwMC1cXHg3Rl0qJC8sIHsgRW5nbGlzaExldHRlck9ubHk6IHRoaXMuRW5nbGlzaExldHRlck9ubHkgfSksXHJcbiAgICAgICBcclxuICAgIF0pKTtcclxuICAgIC8vIHRoaXMuQXJhYmljSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgLy8gdGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUuQXJhYmljKVxyXG4gICAgdGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZS5FbmdsaXNoKVxyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxIdG1sRWRpdG9yRm9ybUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBvblRleHRDaGFuZ2UodHlwZTpzdHJpbmcpIHtcclxuICAgIGlmKHR5cGU9PVwiZW5cIil7XHJcbiAgICAgIHRoaXMuZW5nbGlzaFZhbHVlID0gdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCJdLnZhbHVlID09IG51bGwgPyBcIlwiIDogdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCJdLnZhbHVlO1xyXG4gICAgICBpZiggdGhpcy5lbmdsaXNoVmFsdWUpXHJcbiAgICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmVuZ2xpc2hWYWx1ZSk7XHJcbiAgICAgIGxldCBFbmdsaXN3b3JkQ291bnRBcnJheSA9ICh0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wudmFsdWUgYXMgc3RyaW5nKS5zcGxpdChcIiBcIikubGVuZ3RoXHJcbiAgICAgIGlmIChFbmdsaXN3b3JkQ291bnRBcnJheSA+IDApIHtcclxuICAgICAgICBpZiAoRW5nbGlzd29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50KVxyXG4gICAgICAgICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCJdLnNldEVycm9ycyh7IE1heFdvcmRDb3VudFZhbGlkYXRpb25LZXk6IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQgfSlcclxuICAgICAgICB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkVuZ2xpc2hIdG1sRWRpdG9yVmFsdWVcIl0ubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoSHRtbEVkaXRvclZhbHVlXCJdLmludmFsaWRcclxuICBcclxuICAgICAgfVxyXG4gIFxyXG4gICAgfVxyXG5cclxuICAgIGlmKHR5cGU9PVwiYXJcIilcclxuICAgIHtcclxuXHJcbiAgICAgIHRoaXMuYXJhYmljVmFsdWUgPSB0aGlzLk11bHRpbGluZ3VhbEh0bWxFZGl0b3Jncm91cC5jb250cm9sc1tcIkFyYWJpY0h0bWxFZGl0b3JWYWx1ZVwiXS52YWx1ZSA9PSBudWxsID8gXCJcIiA6IHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiQXJhYmljSHRtbEVkaXRvclZhbHVlXCJdLnZhbHVlO1xyXG4gICAgICBpZih0aGlzLmFyYWJpY1ZhbHVlKVxyXG4gICAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmFyYWJpY1ZhbHVlKTtcclxuXHJcbiAgICAgIGxldCBBcmFiaWN3b3JkQ291bnRBcnJheSA9ICh0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC52YWx1ZSBhcyBzdHJpbmcpLnNwbGl0KFwiIFwiKS5sZW5ndGhcclxuICAgICAgaWYgKEFyYWJpY3dvcmRDb3VudEFycmF5ID4gMCkge1xyXG4gICAgICAgIGlmIChBcmFiaWN3b3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQpXHJcbiAgICAgICAgdGhpcy5NdWx0aWxpbmd1YWxIdG1sRWRpdG9yZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNIdG1sRWRpdG9yVmFsdWVcIl0uc2V0RXJyb3JzKHsgTWF4V29yZENvdW50VmFsaWRhdGlvbktleTogdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudCB9KVxyXG4gICAgICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiQXJhYmljSHRtbEVkaXRvclZhbHVlXCJdLm1hcmtBc1RvdWNoZWQoKVxyXG4gICAgICAgIHRoaXMuTXVsdGlsaW5ndWFsSHRtbEVkaXRvcmdyb3VwLmNvbnRyb2xzW1wiQXJhYmljSHRtbEVkaXRvclZhbHVlXCJdLmludmFsaWRcclxuICBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICBcclxuXHJcbiBcclxuXHJcbiAgICBsZXQgbXVsaXRMYW5nTW9kZWwgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpXHJcbiAgICBtdWxpdExhbmdNb2RlbC5BcmFiaWMgPSB0aGlzLmFyYWJpY1ZhbHVlO1xyXG4gICAgbXVsaXRMYW5nTW9kZWwuRW5nbGlzaCA9IHRoaXMuZW5nbGlzaFZhbHVlXHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQobXVsaXRMYW5nTW9kZWwpXHJcbiAgICBpZih0aGlzLmFyYWJpY1ZhbHVlJiZ0aGlzLmVuZ2xpc2hWYWx1ZSlcclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS5zZXRWYWx1ZShtdWxpdExhbmdNb2RlbClcclxuXHJcbiAgfVxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuUmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKSB7XHJcblxyXG4gICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSB0aGlzLkFyYWJpY1ZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyA9IHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLkxhbmd1YWdlTW9kZSkge1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZTpcclxuICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dFbmdsaXNoSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5BcmFiaWNfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY0h0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5FbmdsaXNoX0xhbmd1YWdlX29ubHlfaXNfdmlzaWJsZTpcclxuICAgICAgICB0aGlzLlNob3dFbmdsaXNoSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2FyZV92aXNpYmxlX2J1dF9vbmx5X2N1cnJlbnRfbGFuZ3VhZ2VfaXNfcmVxdWlyZWQ6XHJcbiAgICAgICAgdGhpcy5TaG93QXJhYmljSHRtbEVkaXRvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93RW5nbGlzaEh0bWxFZGl0b3IgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYnV0X29ubHlfQXJhYmljX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY0h0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19idXRfb25seV9FbmdsaXNoX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuU2hvd0FyYWJpY0h0bWxFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQ3VycmVudF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGVfYW5kX3JlcXVpcmVkOlxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU2hvd0VuZ2xpc2hIdG1sRWRpdG9yID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICB0aGlzLlNob3dBcmFiaWNIdG1sRWRpdG9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLlNob3dFbmdsaXNoSHRtbEVkaXRvciA9IHRydWU7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIEFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy5FbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkVuZ2xpc2hIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuRW5nbGlzaFZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy5BcmFiaWNWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5FbmdsaXNoSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLkVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5BcmFiaWNIdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMuQXJhYmljVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuRW5nbGlzaEh0bWxFZGl0b3JGb3JtQ29udHJvbClcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkFyYWJpY0h0bWxFZGl0b3JGb3JtQ29udHJvbClcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|