ngx-histaff-alpha 3.4.4 → 3.4.5

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUF0U2hpZnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9pbnRlcmZhY2VzL3RpbWUtbWFuYWdlbWVudC9JQXRTaGlmdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUF0U3ltYm9sIH0gZnJvbSBcIi4vSUF0U3ltYm9sXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBdFNoaWZ0IHtcclxuICAgIGlkPzogbnVtYmVyO1xyXG4gICAgY29kZTogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgc3ltYm9sOiBJQXRTeW1ib2w7XHJcbiAgICBob3Vyc1N0YXJ0OiBEYXRlO1xyXG4gICAgaG91cnNTdG9wOiBEYXRlO1xyXG4gICAgYnJlYWtzRnJvbT86IERhdGU7XHJcbiAgICBicmVha3NUbz86IERhdGU7XHJcbiAgICB0aW1lTGF0ZT86IG51bWJlcjtcclxuICAgIHRpbWVFYXJseT86IG51bWJlcjtcclxuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcclxuICAgIHRpbWVTdGFydD86IERhdGU7XHJcbiAgICB0aW1lU3RvcD86IERhdGU7XHJcbiAgICBtaW5Ib3Vyc1dvcms/OiBudW1iZXI7ICAgIFxyXG4gICAgYWRkZWQ/OiBib29sZWFuO1xyXG4gICAgZGVsZXRlZD86IGJvb2xlYW47XHJcbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUF0U2hpZnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9pbnRlcmZhY2VzL3RpbWUtbWFuYWdlbWVudC9JQXRTaGlmdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUF0U3ltYm9sIH0gZnJvbSBcIi4vSUF0U3ltYm9sXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBdFNoaWZ0IHtcclxuICAgIGlkPzogbnVtYmVyO1xyXG4gICAgY29kZTogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgc3ltYm9sOiBJQXRTeW1ib2w7XHJcbiAgICBob3Vyc1N0YXJ0OiBEYXRlO1xyXG4gICAgaG91cnNTdG9wOiBEYXRlO1xyXG4gICAgYnJlYWtzRnJvbT86IERhdGU7XHJcbiAgICBicmVha3NUbz86IERhdGU7XHJcbiAgICB0aW1lTGF0ZT86IG51bWJlcjtcclxuICAgIHRpbWVFYXJseT86IG51bWJlcjtcclxuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcclxuICAgIHRpbWVTdGFydD86IERhdGU7XHJcbiAgICB0aW1lU3RvcD86IERhdGU7XHJcbiAgICBtaW5Ib3Vyc1dvcms/OiBudW1iZXI7XHJcbiAgICBzaGlmdENlbGxJZD86IHN0cmluZztcclxuICAgIGFkZGVkPzogYm9vbGVhbjtcclxuICAgIGRlbGV0ZWQ/OiBib29sZWFuO1xyXG59Il19
@@ -427,7 +427,7 @@ export class CorePageEditComponent {
427
427
  this.onInitialValueStringReady.emit(JSON.stringify(this.form.getRawValue()));
428
428
  }
429
429
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageEditComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.CorePageEditService }, { token: i3.CommonHttpRequestService }, { token: i4.AnimatedTextService }, { token: i5.MultiLanguageService }, { token: i6.CoreFormService }, { token: i7.CorePageListService }, { token: i8.HubConnectionService }, { token: i9.AuthService }, { token: i10.AlertService }, { token: i11.UrlService }, { token: i12.RoutingService }, { token: i13.ResponseService }, { token: i14.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
430
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CorePageEditComponent, isStandalone: true, selector: "core-page-edit", inputs: { stayAfterSubmit: "stayAfterSubmit", width: "width", entityTable: "entityTable", hasIdOfStringType: "hasIdOfStringType", captionCode: "captionCode", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", sections: "sections", normalMode: "normalMode", bottomTemplateRef: "bottomTemplateRef", autoGetByIdOff: "autoGetByIdOff", autoSubmitLogicOff: "autoSubmitLogicOff", autoCancelLogicOff: "autoCancelLogicOff", customFormButtonItems: "customFormButtonItems", mixedMode: "mixedMode", checkError$: "checkError$", showSaveButton: "showSaveButton", disableSaveButton: "disableSaveButton", crud: "crud", entityUniqueIndexs: "entityUniqueIndexs" }, outputs: { submitLogic: "submitLogic", onFormCreated: "onFormCreated", onSubmitSuccess: "onSubmitSuccess", onButtonClick: "onButtonClick", cancelLogic: "cancelLogic", onInitialValueStringReady: "onInitialValueStringReady" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "containerBigger", first: true, predicate: ["containerBigger"], descendants: true }], ngImport: i0, template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [disableSaveButton]=\"disableSaveButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50%;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width);border-bottom-left-radius:10px;border-bottom-right-radius:10px}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff;border-top-left-radius:10px;border-top-right-radius:10px}.captionText{margin-left:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i15.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CoreFormComponent, selector: "core-form", inputs: ["formName", "submitText", "leftInputSections", "leftInputSectionsFlexSize", "inputSections", "mode$", "bottomTemplateRef", "customFormButtonItems", "showCaptionButton", "disableSaveButton", "checkError$"], outputs: ["onFormCreated", "onFormRefCreated", "onSubmit", "onSave", "onCancal", "buttonClick"] }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }] }); }
430
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CorePageEditComponent, isStandalone: true, selector: "core-page-edit", inputs: { stayAfterSubmit: "stayAfterSubmit", width: "width", entityTable: "entityTable", hasIdOfStringType: "hasIdOfStringType", captionCode: "captionCode", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", sections: "sections", normalMode: "normalMode", bottomTemplateRef: "bottomTemplateRef", autoGetByIdOff: "autoGetByIdOff", autoSubmitLogicOff: "autoSubmitLogicOff", autoCancelLogicOff: "autoCancelLogicOff", customFormButtonItems: "customFormButtonItems", mixedMode: "mixedMode", checkError$: "checkError$", showSaveButton: "showSaveButton", disableSaveButton: "disableSaveButton", crud: "crud", entityUniqueIndexs: "entityUniqueIndexs" }, outputs: { submitLogic: "submitLogic", onFormCreated: "onFormCreated", onSubmitSuccess: "onSubmitSuccess", onButtonClick: "onButtonClick", cancelLogic: "cancelLogic", onInitialValueStringReady: "onInitialValueStringReady" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "containerBigger", first: true, predicate: ["containerBigger"], descendants: true }], ngImport: i0, template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [disableSaveButton]=\"disableSaveButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50%;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width);border-bottom-left-radius:10px;border-bottom-right-radius:10px}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff;border-top-left-radius:10px;border-top-right-radius:10px}.captionText{margin-left:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i15.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CoreFormComponent, selector: "core-form", inputs: ["formName", "submitText", "leftInputSections", "leftInputSectionsFlexSize", "inputSections", "mode$", "bottomTemplateRef", "customFormButtonItems", "showCaptionButton", "disableSaveButton", "checkError$"], outputs: ["onFormCreated", "onFormRefCreated", "onSubmit", "onSave", "onCancal", "buttonClick"] }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }] }); }
431
431
  }
432
432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageEditComponent, decorators: [{
433
433
  type: Component,
@@ -439,7 +439,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
439
439
  TranslatePipe,
440
440
  FullscreenModalLoaderComponent,
441
441
  CorePageHeaderComponent
442
- ], template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [disableSaveButton]=\"disableSaveButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50%;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width);border-bottom-left-radius:10px;border-bottom-right-radius:10px}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff;border-top-left-radius:10px;border-top-right-radius:10px}.captionText{margin-left:24px}\n"] }]
442
+ ], template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [disableSaveButton]=\"disableSaveButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50%;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width);border-bottom-left-radius:10px;border-bottom-right-radius:10px}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff;border-top-left-radius:10px;border-top-right-radius:10px}.captionText{margin-left:24px}\n"] }]
443
443
  }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.CorePageEditService }, { type: i3.CommonHttpRequestService }, { type: i4.AnimatedTextService }, { type: i5.MultiLanguageService }, { type: i6.CoreFormService }, { type: i7.CorePageListService }, { type: i8.HubConnectionService }, { type: i9.AuthService }, { type: i10.AlertService }, { type: i11.UrlService }, { type: i12.RoutingService }, { type: i13.ResponseService }, { type: i14.AppConfigService }], propDecorators: { stayAfterSubmit: [{
444
444
  type: Input
445
445
  }], width: [{
@@ -499,4 +499,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
499
499
  type: ViewChild,
500
500
  args: ['containerBigger']
501
501
  }] } });
502
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2UtZWRpdC9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUE0QixNQUFNLGVBQWUsQ0FBQztBQU85SSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sNENBQTRDLENBQUM7QUFDOUcsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8s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O3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYiw4QkFBOEI7d0JBQzlCLHVCQUF1QjtxQkFDeEI7c2dCQUtRLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFJRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNRLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IENvcmVQYWdlRWRpdFNlcnZpY2UgfSBmcm9tICcuL2NvcmUtcGFnZS1lZGl0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbmltYXRlZFRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vYW5pbWF0ZWQtdGV4dC9hbmltYXRlZC10ZXh0LnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1mb3JtL2NvcmUtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVGb3JtU2VjdGlvbiwgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2VudW0taW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29tcG9uZW50LCBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vY29yZS1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi1odHRwLXJlcXVlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJSHViQ29ubmVjdGlvbkFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JSHViQ29ubmVjdGlvbkFjdGl2aXR5JztcclxuaW1wb3J0IHsgRW51bVNpZ25hbFJUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU2lnbmFsUlR5cGUnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0JztcclxuaW1wb3J0IHsgRW51bUZvcm1CYXNlQ29udG9sVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bUZvcm1CYXNlQ29udG9sVHlwZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlUGFnZUVkaXRNb2RlIH0gZnJvbSAnLi9FbnVtQ29yZVBhZ2VFZGl0TW9kZSc7XHJcbmltcG9ydCB7IElDb3JlUGFnZUVkaXRDUlVEIH0gZnJvbSAnLi9JQ29yZVBhZ2VFZGl0Q1JVRCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBGdWxsc2NyZWVuTW9kYWxMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9mdWxsc2NyZWVuLW1vZGFsLWxvYWRlci9mdWxsc2NyZWVuLW1vZGFsLWxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3BvbnNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3BvbnNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wYWdlLWVkaXQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZUZvcm1Db21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgRnVsbHNjcmVlbk1vZGFsTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgc3RheUFmdGVyU3VibWl0ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB3aWR0aCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBlbnRpdHlUYWJsZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBoYXNJZE9mU3RyaW5nVHlwZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2FwdGlvbkNvZGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnMhOiBJQ29yZUZvcm1TZWN0aW9uW107XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBub3JtYWxNb2RlITogYm9vbGVhbjsgLy8gdGhpcyBhbGxvd3MgdG8gb3BlbiB0aGUgZWRpdCBmb3JtIGFzIHVzdWFsIG1vZGVcclxuICBASW5wdXQoKSBib3R0b21UZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgYXV0b0dldEJ5SWRPZmYhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGF1dG9TdWJtaXRMb2dpY09mZiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYXV0b0NhbmNlbExvZ2ljT2ZmITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21Gb3JtQnV0dG9uSXRlbXMhOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGVbXTtcclxuICBASW5wdXQoKSBtaXhlZE1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNoZWNrRXJyb3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgQElucHV0KCkgc2hvd1NhdmVCdXR0b24hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTYXZlQnV0dG9uITogYm9vbGVhbjtcclxuXHJcblxyXG4gIEBPdXRwdXQoKSBzdWJtaXRMb2dpYyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Gb3JtQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TdWJtaXRTdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjYW5jZWxMb2dpYyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuXHJcbiAgQElucHV0KCkgY3J1ZCE6IElDb3JlUGFnZUVkaXRDUlVEO1xyXG4gIEBJbnB1dCgpIGVudGl0eVVuaXF1ZUluZGV4czogc3RyaW5nW11bXSA9XHJcbiAgICBbXTsgLyogRm9yIGV4OiBbWydpZCddLCBbJ3Byb3ZpbmNlSWQnLCAnZGlzdHJpY0NvZGUnXV0gIGV0Yy4uLiAqL1xyXG4gIEBPdXRwdXQoKSBvbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyQmlnZ2VyJykgY29udGFpbmVyQmlnZ2VyITogRWxlbWVudFJlZjtcclxuXHJcbiAgc2VjdGlvbnMkITogQmVoYXZpb3JTdWJqZWN0PElDb3JlRm9ybVNlY3Rpb25bXT47XHJcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVudW1Db3JlUGFnZUVkaXRNb2RlPihcclxuICAgIEVudW1Db3JlUGFnZUVkaXRNb2RlLkNSRUFURVxyXG4gICk7XHJcblxyXG4gIGN1cnJlbnRWYWx1ZTogYW55O1xyXG4gIGluaXRpYWxWYWx1ZSE6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBmcm9tVXJsITogc3RyaW5nO1xyXG4gIGxpc3RJbnN0YW5jZSE6IG51bWJlcjtcclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgc3VibWl0VGV4dCE6IEVudW1UcmFuc2xhdGVLZXk7XHJcblxyXG4gIHNob3dDYXB0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgc2Nyb2xsITogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlRWRpdFNlcnZpY2U6IENvcmVQYWdlRWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZTogQ29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbmltYXRlZFRleHRTZXJ2aWNlOiBBbmltYXRlZFRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlRm9ybVNlcnZpY2U6IENvcmVGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNlU2VydmljZTogUmVzcG9uc2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZyb21VcmwgPSB0aGlzLmNvcmVQYWdlRWRpdFNlcnZpY2UuZnJvbVVybDtcclxuICAgIHRoaXMubGlzdEluc3RhbmNlID0gTnVtYmVyKFxyXG4gICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnbGlzdEluc3RhbmNlJykhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kU2lnbmFsKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2U6IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgc2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCEsXHJcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmZ1bGxOYW1lISxcclxuICAgICAgICBhdmF0YXI6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmF2YXRhciEsXHJcbiAgICAgICAgc2lnbmFsVHlwZTogRW51bVNpZ25hbFJUeXBlLkVOVElUWV9DSEFOR0VELFxyXG4gICAgICAgIG1lc3NhZ2U6IGAke3RoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWVcclxuICAgICAgICAgID8udXNlck5hbWUhfSBoYXMgY2hhbmdlZCBlbnRpdHkgJHt0aGlzLmVudGl0eVRhYmxlfWAsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbm5lY3Rpb24uaW52b2tlKCdTZW5kTWVzc2FnZScsIG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zZWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlRm9ybVNlY3Rpb25bXT4odGhpcy5zZWN0aW9ucyk7XHJcblxyXG4gICAgaWYgKCEhIXRoaXMuZW50aXR5VGFibGUpIHtcclxuICAgICAgYWxlcnQoXHJcbiAgICAgICAgJ1Byb3BlcnR5IGVudGl0eVRhYmxlIChuYW1lKSBpcyByZXF1aXJlZCBmb3IgY29tcG9uZW50ICcgK1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbkNvZGVcclxuICAgICAgKTtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAnUHJvcGVydHkgZW50aXR5VGFibGUgKG5hbWUpIGlzIHJlcXVpcmVkIGZvciBjb21wb25lbnQgJyArXHJcbiAgICAgICAgdGhpcy5jYXB0aW9uQ29kZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5ub3JtYWxNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29udGFpbmVyKVxyXG4gICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXdpZHRoJywgJzEwMCUnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICAgJy0td2lkdGgnLFxyXG4gICAgICAgICAgdGhpcy53aWR0aCArICdweCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29udGFpbmVyQmlnZ2VyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgJy0taGVpZ2h0JyxcclxuICAgICAgICAnOTUlJ1xyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPiB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghISF0aGlzLm1peGVkTW9kZSkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZVwiLCB4KVxyXG5cclxuICAgICAgICAgICAgbGV0IGlkOiBzdHJpbmcgPSAnMCc7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0lkT2ZTdHJpbmdUeXBlKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlkID0gYXRvYih4WydpZCddKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIHsgcmV0dXJuIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWQgPSBOdW1iZXIoYXRvYih4WydpZCddKSkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIHsgcmV0dXJuIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlkICE9PSAnMCcpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGUkLm5leHQoRW51bUNvcmVQYWdlRWRpdE1vZGUuVVBEQVRFKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gRW51bVRyYW5zbGF0ZUtleS5VSV9FRElUX0ZPUk1fQlVUVE9OX1NBVkU7XHJcblxyXG4gICAgICAgICAgICAgIGlmICghISF0aGlzLmF1dG9HZXRCeUlkT2ZmKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29yZVBhZ2VFZGl0U2VydmljZS5nZXRCeUlkKGlkLCB0aGlzLmNydWQucikuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoYm9keS5zdGF0dXNDb2RlID0gMjAwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbiBFeGNsdWRlIHNlY3Rpb25zIHdpdGggZmxhZyBhZGRNb2RlT25seT10cnVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoISFib2R5LmlubmVyQm9keS5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgcmVsZXZhbnQgY29udHJvbHMgZnJvbSBmb3JtIGdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZE1vZGVPbmx5U2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoeCkgPT4gISF4LmFkZE1vZGVPbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1vZGVPbmx5U2VjdGlvbnMubWFwKChhZGRNb2RlT25seVNlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVNlY3Rpb24ucm93cy5tYXAoKGFkZE1vZGVPbmx5Um93KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVJvdy5tYXAoKGFkZE1vZGVPbmx5Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChhZGRNb2RlT25seUNvbnRyb2wuZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbGV2YW50IGNvbnRyb2xzIGZyb20gZm9ybSBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKCh4KSA9PiAhISF4LmFkZE1vZGVPbmx5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IG5ld1NlY3Rpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zJC5uZXh0KHRoaXMuc2VjdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI2VuZHJlZ2lvbiBFeGNsdWRlIHNlY3Rpb25zIHdpdGggZmxhZyBhZGRNb2RlT25seT10cnVlICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbjogQXNzaWduIHZhbHVlIHRvIGF0dGFjaG1lbnQgZmllbGRzIHdoZW4gY29udHJvbFR5cGUgPSBBVFRBQ0hNRU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnJvd3MubWFwKChyb3cpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubWFwKChjb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9sVHlwZSA9PT0gRW51bUZvcm1CYXNlQ29udG9sVHlwZS5BVFRBQ0hNRU5UKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWVUb1Nob3cgPSBib2R5LmlubmVyQm9keVtjb250cm9sLmFzc2lnblRvIV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBBc3NpZ24gdmFsdWUgdG8gYmFzaWMgZmllbGRzIHdoZW4gY29udHJvbFR5cGUgPSBBVFRBQ0hNRU5UICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbjogVXNpbmcgUGF0Y2hWYWx1ZSBpbnN0ZWFkIG9mIHNldFZhbHVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JtcyBvZnRlbiBoYXZlIGV4dHJhIGhlbHBlciBmaWVsZHNcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aHVzLCBpZiB3ZSB1c2Ugc2V0VmFsdWUgbWV0aG9kLCB0aGUgaGVscGVyIGZpZWxkcyB3aWxsIGJlIGxvc3Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmZvcm0uc2V0VmFsdWUoYm9keS5pbm5lckJvZHkpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gc28sIHdlIHVzZSBwYXRjaFZhbHVlIG1ldGhvZCA6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IGJvZHkuaW5uZXJCb2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5jdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24ucm93cy5tYXAoKHJvdykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5tYXAoKGNvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuU0VFS0VSLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISF0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkgJiYgISEhY29udHJvbC5nZXRCeUlkQXBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRyb2wuY29udHJvbFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2wubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5EUk9QRE9XTjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISEhY29udHJvbC5kcm9wZG93bk9wdGlvbnMkPy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYGdldEJ5SWRBcGkgbm90IHByb3ZpZGVkIGZvciAnJHtjb250cm9sLmZpZWxkfSdgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhIWNvbnRyb2wuY2hlY2tsaXN0T3B0aW9ucyQ/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1ha2VHZXRSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRCeUlkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmdldEJ5SWRBcGkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA/aWQ9JHt0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXX1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZm9ybSBnZXRCeUlkIHJlc3VsdDogXCIsIHRoaXMuY3VycmVudFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0QnlJZE9iamVjdCQ/Lm5leHQoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXRCeUlkT2JqZWN0JD8ubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUiAmJiBjb250cm9sLm11bHRpTW9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLm9iamVjdExpc3QkPy5uZXh0KGJvZHkuaW5uZXJCb2R5W2NvbnRyb2wuZ2V0T2JqZWN0TGlzdEZyb20hXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyQubmV4dCh0aGlzLnNlY3Rpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBVc2luZyBQYXRjaFZhbHVlIGluc3RlYWQgb2Ygc2V0VmFsdWUgKi9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZSQubmV4dChFbnVtQ29yZVBhZ2VFZGl0TW9kZS5DUkVBVEUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0VGV4dCA9IEVudW1UcmFuc2xhdGVLZXkuVUlfRURJVF9GT1JNX0JVVFRPTl9BREQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBpbnN0YW5jZXNGaWx0ZXIgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMubGlzdEluc3RhbmNlXHJcbiAgICApO1xyXG4gICAgaWYgKCEhaW5zdGFuY2VzRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc0ZpbHRlclswXTtcclxuICAgICAgaW5zdGFuY2UuaWQkLm5leHQoaWQpO1xyXG4gICAgICAvL2lmICghISF0aGlzLm5vcm1hbE1vZGUpIGluc3RhbmNlLnJlbG9hZEZsYWckPy5uZXh0KCFpbnN0YW5jZS5yZWxvYWRGbGFnJC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKGBDb3JlUGFnZUxpc3QgaW5zdGFuY2UgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9IGN1cnJlbnQgaWQgaXM6ICR7aW5zdGFuY2UuaWQkLnZhbHVlfWAsIGFsZXJ0T3B0aW9ucylcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYENvcmVQYWdlTGlzdCBpbnN0YW5jZXMgZG8gbm90IGluY2x1ZGUgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9YCwgYWxlcnRPcHRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5vdE9rMjAwUmVzcG9uc2UoeDogb2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiTm8gcmVzcG9uc2UgY29udGVudC4gSXQgd2FzIHBvc3NpYmx5IGEgQ09SUyBlcnJvci5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4LCBudWxsLCAyKSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG5cclxuICAgIC8qIElGIGlkIGlzIGZhbHN5ID0+IENSRUFULCBvdGhlcndpc2UgVVBEQVRFICovXHJcblxyXG4gICAgLyogRk9SIENPTlRST0wgT0YgVFlQRSBHUklEQlVGRkVSLCBTRVQgRVZFUlkgaWQgVE8gTlVMTCAqL1xyXG4gICAgdGhpcy5zZWN0aW9ucy5tYXAoc2VjdGlvbiA9PiB7XHJcbiAgICAgIHNlY3Rpb24ucm93cy5tYXAocm93ID0+IHtcclxuICAgICAgICByb3cubWFwKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkdSSURCVUZGRVIpIHtcclxuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWU7XHJcbiAgICAgICAgICAgIC8vIFRPIERPIDE3LzA4LzIwMjMgPT09PT09PT09PT1cclxuICAgICAgICAgICAgYWJzdHJhY3RDb250cm9sPy52YWx1ZT8ubWFwKCh4OiBhbnkpID0+IHguaWQgPSBudWxsKTtcclxuICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIGlmICghIXRoaXMubWl4ZWRNb2RlKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0TG9naWMuZW1pdChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtb2RlOiB0aGlzLmZvcm0uZ2V0KCdlZGl0TW9kZScpPy52YWx1ZSxcclxuICAgICAgICAgIGZvcm1WYWx1ZTogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKClcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLmF1dG9TdWJtaXRMb2dpY09mZikge1xyXG4gICAgICAvLyBETyB5b3VyIGxvZ2ljIGhlcmVcclxuICAgICAgdGhpcy5zdWJtaXRMb2dpYy5lbWl0KEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICghISF0aGlzLmZvcm0uZ2V0KCdpZCcpIS52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3Qgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3Q6IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCA9IHtcclxuICAgICAgICBzeXNGdW5jdGlvbkNvZGU6IHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC52YWx1ZT8uY29kZSB8fCAnVU5ERUZJTkVEJyxcclxuICAgICAgICBzeXNBY3Rpb25Db2RlOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NSRUFURSxcclxuICAgICAgICBiZWZvcmU6IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFZhbHVlKSA/PyAnXCJcIicsXHJcbiAgICAgICAgYWZ0ZXI6IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcclxuICAgICAgICB1c2VybmFtZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udXNlck5hbWUhXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX0FERElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlXHJcbiAgICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAgICdjcmVhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgICB0aGlzLmNydWQuYyEsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICBUcmFuc2ZlciBuZXdseSBjcmVhdGVkIHJlY29yZCBpZFxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwgeyAvKiBleHBlcmltZW50Ki8gcmVwbGFjZVVybDogdHJ1ZSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgc3RhdGU6IHsgaWQ6IGJvZHkuaW5uZXJCb2R5LmlkLCBpbnN0YW5jZU51bWJlcjogdGhpcy5saXN0SW5zdGFuY2UgfSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbk5vdE9rMjAwUmVzcG9uc2UoeCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3Qgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3Q6IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCA9IHtcclxuICAgICAgICBzeXNGdW5jdGlvbkNvZGU6IHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC52YWx1ZT8uY29kZSB8fCAnVU5ERUZJTkVEJyxcclxuICAgICAgICBzeXNBY3Rpb25Db2RlOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1NBVkUsXHJcbiAgICAgICAgYmVmb3JlOiBKU09OLnN0cmluZ2lmeSh0aGlzLmN1cnJlbnRWYWx1ZSkgPz8gJ1wiXCInLFxyXG4gICAgICAgIGFmdGVyOiBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSksXHJcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LnVzZXJOYW1lIVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBhMSA9IHRoaXMuY29yZUZvcm1TZXJ2aWNlLmdldEFsbEZvcm1CYXNlQ29udHJvbE5hbWVzKHRoaXMubGVmdElucHV0U2VjdGlvbnM/LmZpbHRlcih4ID0+ICF4LmhpZGRlbikpO1xyXG4gICAgICBjb25zdCBhMiA9IHRoaXMuY29yZUZvcm1TZXJ2aWNlLmdldEFsbEZvcm1CYXNlQ29udHJvbE5hbWVzKHRoaXMuc2VjdGlvbnM/LmZpbHRlcih4ID0+ICF4LmhpZGRlbikpO1xyXG4gICAgICBjb25zdCBhY3R1YWxGb3JtRGVjbGFyZWRGaWVsZHMgPSBbLi4uYTEsIC4uLmEyXTtcclxuXHJcbiAgICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX1VQREFUSU5HX1BMRUFTRV9XQUlUKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZVxyXG4gICAgICAgIC5tYWtlUG9zdFJlcXVlc3QoXHJcbiAgICAgICAgICAndXBkYXRlICcgKyB0aGlzLmVudGl0eVRhYmxlLFxyXG4gICAgICAgICAgdGhpcy5jcnVkLnUsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCxcclxuICAgICAgICAgICAgYWN0dWFsRm9ybURlY2xhcmVkRmllbGRzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keTtcclxuICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZFNpZ25hbChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0U3VjY2Vzcy5lbWl0KHRydWUpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICBUcmFuc2ZlciBjdXJyZW50IHJlY29yZCBpZFxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSA9PT0gXCJNT0JJTEVcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwgeyAvKiBleHBlcmltZW50Ki8gcmVwbGFjZVVybDogdHJ1ZSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgc3RhdGU6IHsgaWQ6IGJvZHkuaW5uZXJCb2R5LmlkLCBpbnN0YW5jZU51bWJlcjogdGhpcy5saXN0SW5zdGFuY2UgfSB9KTsgIFxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID09PSBcIldFQkFQUFwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHN0YXRlOiB7IGlkOiBib2R5LmlubmVyQm9keS5pZCwgaW5zdGFuY2VOdW1iZXI6IHRoaXMubGlzdEluc3RhbmNlIH0gfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uTm90T2syMDBSZXNwb25zZSh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBQSMavxqBORyBUSOG7qEMgTsOAWSDEkMav4buiQyBU4bqgTyBSQSBLSEkgREVWIFZOUy1QT1JUQUxcclxuICAgKi9cclxuXHJcbiAgb25TYXZlKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19BRERJTkdfUExFQVNFX1dBSVQpXHJcbiAgICApO1xyXG4gICAgaWYgKCEhdGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQpIHtcclxuICAgICAgYWxlcnQoSlNPTi5zdHJpbmdpZnkoZSwgbnVsbCwgMikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAnY3JlYXRlICcgKyB0aGlzLmVudGl0eVRhYmxlLFxyXG4gICAgICAgIHRoaXMuY3J1ZC5zISxcclxuICAgICAgICBlXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiBib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZFNpZ25hbChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBUcmFuc2ZlciBuZXdseSBjcmVhdGVkIHJlY29yZCBpZFxyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMuYXV0b0NhbmNlbExvZ2ljT2ZmKSB7XHJcbiAgICAgIHRoaXMuY2FuY2VsTG9naWMuZW1pdCh0cnVlKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICB0aGlzLm9uQnV0dG9uQ2xpY2suZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybUNyZWF0ZWRMb2NhbChlOiBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtID0gZS5mb3JtR3JvdXA7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB0aGlzLm9uRm9ybUNyZWF0ZWQuZW1pdCh0aGlzLmZvcm0pO1xyXG5cclxuICAgIC8vIE5vdyB3ZSBjYW4gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiQGlmICghIW5vcm1hbE1vZGUpIHtcclxuPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLWVkaXQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMHB4IDI0cHgnIH1cIj5cclxuICAgICAgICA8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwiY2FwdGlvbkNvZGVcIiBbaGlkZUJ1dHRvbkdyb3VwXT1cInRydWVcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoISFzZWN0aW9ucy5sZW5ndGgpIHtcclxuICAgIDxjb3JlLWZvcm0gW2Zvcm1OYW1lXT1cIidmb3JtJ1wiIFtzdWJtaXRUZXh0XT1cInN1Ym1pdFRleHRcIiBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIlxyXG4gICAgICAgIFtsZWZ0SW5wdXRTZWN0aW9uc109XCJsZWZ0SW5wdXRTZWN0aW9uc1wiIFtsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplXT1cImxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVcIlxyXG4gICAgICAgIFtpbnB1dFNlY3Rpb25zXT1cInNlY3Rpb25zXCIgW21vZGUkXT1cIm1vZGUkXCIgW2JvdHRvbVRlbXBsYXRlUmVmXT1cImJvdHRvbVRlbXBsYXRlUmVmXCJcclxuICAgICAgICBbY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXT1cImN1c3RvbUZvcm1CdXR0b25JdGVtc1wiIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgW2NoZWNrRXJyb3IkXT1cImNoZWNrRXJyb3IkXCIgKG9uRm9ybUNyZWF0ZWQpPVwib25Gb3JtQ3JlYXRlZExvY2FsKCRldmVudClcIiAob25TdWJtaXQpPVwib25TdWJtaXQoKVwiXHJcbiAgICAgICAgKG9uU2F2ZSk9XCJvblNhdmUoJGV2ZW50KVwiIChidXR0b25DbGljayk9XCJidXR0b25DbGljaygkZXZlbnQpXCIgKG9uQ2FuY2FsKT1cIm9uQ2FuY2VsKClcIj48L2NvcmUtZm9ybT5cclxuICAgIH1cclxuPC9kaXY+XHJcbn0gQGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwibW9kYWwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgIG92ZXJmbG93WTogJ3Njcm9sbCdcclxuICAgIH1cIj5cclxuICAgIDxkaXYgI2NvbnRhaW5lckJpZ2dlciBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWhlYWRlci1wb3B1cFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9pPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMHB4IDI0cHgnIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJjYXB0aW9uQ29kZVwiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLWVkaXQtY29udGFpbmVyIG5vdC1ub3JtYWwtbW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZSdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICBAaWYgKCEhc2VjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0gW2Zvcm1OYW1lXT1cIidmb3JtJ1wiIFtzdWJtaXRUZXh0XT1cInN1Ym1pdFRleHRcIiBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2xlZnRJbnB1dFNlY3Rpb25zXT1cImxlZnRJbnB1dFNlY3Rpb25zXCIgW2xlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVdPVwibGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXRTZWN0aW9uc109XCJzZWN0aW9uc1wiIFttb2RlJF09XCJtb2RlJFwiIFtjdXN0b21Gb3JtQnV0dG9uSXRlbXNdPVwiY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiIFtjaGVja0Vycm9yJF09XCJjaGVja0Vycm9yJFwiXHJcbiAgICAgICAgICAgICAgICAob25Gb3JtQ3JlYXRlZCk9XCJvbkZvcm1DcmVhdGVkTG9jYWwoJGV2ZW50KVwiIChvblN1Ym1pdCk9XCJvblN1Ym1pdCgpXCIgKG9uU2F2ZSk9XCJvblNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAob25DYW5jYWwpPVwib25DYW5jZWwoKVwiPjwvY29yZS1mb3JtPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbn1cclxuQGlmIChsb2FkaW5nKSB7XHJcbjxhcHAtZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXI+PC9hcHAtZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXI+XHJcbn0iXX0=
502
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2UtZWRpdC9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUE0QixNQUFNLGVBQWUsQ0FBQztBQU85SSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sNENBQTRDLENBQUM7QUFDOUcsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8s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O3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYiw4QkFBOEI7d0JBQzlCLHVCQUF1QjtxQkFDeEI7c2dCQUtRLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFJRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNRLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IENvcmVQYWdlRWRpdFNlcnZpY2UgfSBmcm9tICcuL2NvcmUtcGFnZS1lZGl0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbmltYXRlZFRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vYW5pbWF0ZWQtdGV4dC9hbmltYXRlZC10ZXh0LnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1mb3JtL2NvcmUtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVGb3JtU2VjdGlvbiwgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2VudW0taW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29tcG9uZW50LCBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vY29yZS1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi1odHRwLXJlcXVlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJSHViQ29ubmVjdGlvbkFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JSHViQ29ubmVjdGlvbkFjdGl2aXR5JztcclxuaW1wb3J0IHsgRW51bVNpZ25hbFJUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU2lnbmFsUlR5cGUnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0JztcclxuaW1wb3J0IHsgRW51bUZvcm1CYXNlQ29udG9sVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bUZvcm1CYXNlQ29udG9sVHlwZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlUGFnZUVkaXRNb2RlIH0gZnJvbSAnLi9FbnVtQ29yZVBhZ2VFZGl0TW9kZSc7XHJcbmltcG9ydCB7IElDb3JlUGFnZUVkaXRDUlVEIH0gZnJvbSAnLi9JQ29yZVBhZ2VFZGl0Q1JVRCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBGdWxsc2NyZWVuTW9kYWxMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9mdWxsc2NyZWVuLW1vZGFsLWxvYWRlci9mdWxsc2NyZWVuLW1vZGFsLWxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3BvbnNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3BvbnNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wYWdlLWVkaXQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZUZvcm1Db21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgRnVsbHNjcmVlbk1vZGFsTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgc3RheUFmdGVyU3VibWl0ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB3aWR0aCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBlbnRpdHlUYWJsZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBoYXNJZE9mU3RyaW5nVHlwZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2FwdGlvbkNvZGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnMhOiBJQ29yZUZvcm1TZWN0aW9uW107XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBub3JtYWxNb2RlITogYm9vbGVhbjsgLy8gdGhpcyBhbGxvd3MgdG8gb3BlbiB0aGUgZWRpdCBmb3JtIGFzIHVzdWFsIG1vZGVcclxuICBASW5wdXQoKSBib3R0b21UZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgYXV0b0dldEJ5SWRPZmYhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGF1dG9TdWJtaXRMb2dpY09mZiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYXV0b0NhbmNlbExvZ2ljT2ZmITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21Gb3JtQnV0dG9uSXRlbXMhOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGVbXTtcclxuICBASW5wdXQoKSBtaXhlZE1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNoZWNrRXJyb3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgQElucHV0KCkgc2hvd1NhdmVCdXR0b24hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTYXZlQnV0dG9uITogYm9vbGVhbjtcclxuXHJcblxyXG4gIEBPdXRwdXQoKSBzdWJtaXRMb2dpYyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Gb3JtQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TdWJtaXRTdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjYW5jZWxMb2dpYyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuXHJcbiAgQElucHV0KCkgY3J1ZCE6IElDb3JlUGFnZUVkaXRDUlVEO1xyXG4gIEBJbnB1dCgpIGVudGl0eVVuaXF1ZUluZGV4czogc3RyaW5nW11bXSA9XHJcbiAgICBbXTsgLyogRm9yIGV4OiBbWydpZCddLCBbJ3Byb3ZpbmNlSWQnLCAnZGlzdHJpY0NvZGUnXV0gIGV0Yy4uLiAqL1xyXG4gIEBPdXRwdXQoKSBvbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyQmlnZ2VyJykgY29udGFpbmVyQmlnZ2VyITogRWxlbWVudFJlZjtcclxuXHJcbiAgc2VjdGlvbnMkITogQmVoYXZpb3JTdWJqZWN0PElDb3JlRm9ybVNlY3Rpb25bXT47XHJcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVudW1Db3JlUGFnZUVkaXRNb2RlPihcclxuICAgIEVudW1Db3JlUGFnZUVkaXRNb2RlLkNSRUFURVxyXG4gICk7XHJcblxyXG4gIGN1cnJlbnRWYWx1ZTogYW55O1xyXG4gIGluaXRpYWxWYWx1ZSE6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBmcm9tVXJsITogc3RyaW5nO1xyXG4gIGxpc3RJbnN0YW5jZSE6IG51bWJlcjtcclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgc3VibWl0VGV4dCE6IEVudW1UcmFuc2xhdGVLZXk7XHJcblxyXG4gIHNob3dDYXB0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgc2Nyb2xsITogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlRWRpdFNlcnZpY2U6IENvcmVQYWdlRWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZTogQ29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbmltYXRlZFRleHRTZXJ2aWNlOiBBbmltYXRlZFRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlRm9ybVNlcnZpY2U6IENvcmVGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNlU2VydmljZTogUmVzcG9uc2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZyb21VcmwgPSB0aGlzLmNvcmVQYWdlRWRpdFNlcnZpY2UuZnJvbVVybDtcclxuICAgIHRoaXMubGlzdEluc3RhbmNlID0gTnVtYmVyKFxyXG4gICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnbGlzdEluc3RhbmNlJykhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kU2lnbmFsKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2U6IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgc2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCEsXHJcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmZ1bGxOYW1lISxcclxuICAgICAgICBhdmF0YXI6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmF2YXRhciEsXHJcbiAgICAgICAgc2lnbmFsVHlwZTogRW51bVNpZ25hbFJUeXBlLkVOVElUWV9DSEFOR0VELFxyXG4gICAgICAgIG1lc3NhZ2U6IGAke3RoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWVcclxuICAgICAgICAgID8udXNlck5hbWUhfSBoYXMgY2hhbmdlZCBlbnRpdHkgJHt0aGlzLmVudGl0eVRhYmxlfWAsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbm5lY3Rpb24uaW52b2tlKCdTZW5kTWVzc2FnZScsIG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zZWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlRm9ybVNlY3Rpb25bXT4odGhpcy5zZWN0aW9ucyk7XHJcblxyXG4gICAgaWYgKCEhIXRoaXMuZW50aXR5VGFibGUpIHtcclxuICAgICAgYWxlcnQoXHJcbiAgICAgICAgJ1Byb3BlcnR5IGVudGl0eVRhYmxlIChuYW1lKSBpcyByZXF1aXJlZCBmb3IgY29tcG9uZW50ICcgK1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbkNvZGVcclxuICAgICAgKTtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAnUHJvcGVydHkgZW50aXR5VGFibGUgKG5hbWUpIGlzIHJlcXVpcmVkIGZvciBjb21wb25lbnQgJyArXHJcbiAgICAgICAgdGhpcy5jYXB0aW9uQ29kZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5ub3JtYWxNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29udGFpbmVyKVxyXG4gICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXdpZHRoJywgJzEwMCUnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICAgJy0td2lkdGgnLFxyXG4gICAgICAgICAgdGhpcy53aWR0aCArICdweCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29udGFpbmVyQmlnZ2VyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgJy0taGVpZ2h0JyxcclxuICAgICAgICAnOTUlJ1xyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPiB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghISF0aGlzLm1peGVkTW9kZSkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZVwiLCB4KVxyXG5cclxuICAgICAgICAgICAgbGV0IGlkOiBzdHJpbmcgPSAnMCc7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0lkT2ZTdHJpbmdUeXBlKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlkID0gYXRvYih4WydpZCddKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIHsgcmV0dXJuIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWQgPSBOdW1iZXIoYXRvYih4WydpZCddKSkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIHsgcmV0dXJuIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlkICE9PSAnMCcpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGUkLm5leHQoRW51bUNvcmVQYWdlRWRpdE1vZGUuVVBEQVRFKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gRW51bVRyYW5zbGF0ZUtleS5VSV9FRElUX0ZPUk1fQlVUVE9OX1NBVkU7XHJcblxyXG4gICAgICAgICAgICAgIGlmICghISF0aGlzLmF1dG9HZXRCeUlkT2ZmKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29yZVBhZ2VFZGl0U2VydmljZS5nZXRCeUlkKGlkLCB0aGlzLmNydWQucikuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoYm9keS5zdGF0dXNDb2RlID0gMjAwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbiBFeGNsdWRlIHNlY3Rpb25zIHdpdGggZmxhZyBhZGRNb2RlT25seT10cnVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoISFib2R5LmlubmVyQm9keS5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgcmVsZXZhbnQgY29udHJvbHMgZnJvbSBmb3JtIGdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZE1vZGVPbmx5U2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoeCkgPT4gISF4LmFkZE1vZGVPbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1vZGVPbmx5U2VjdGlvbnMubWFwKChhZGRNb2RlT25seVNlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVNlY3Rpb24ucm93cy5tYXAoKGFkZE1vZGVPbmx5Um93KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVJvdy5tYXAoKGFkZE1vZGVPbmx5Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChhZGRNb2RlT25seUNvbnRyb2wuZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbGV2YW50IGNvbnRyb2xzIGZyb20gZm9ybSBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKCh4KSA9PiAhISF4LmFkZE1vZGVPbmx5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IG5ld1NlY3Rpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zJC5uZXh0KHRoaXMuc2VjdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI2VuZHJlZ2lvbiBFeGNsdWRlIHNlY3Rpb25zIHdpdGggZmxhZyBhZGRNb2RlT25seT10cnVlICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbjogQXNzaWduIHZhbHVlIHRvIGF0dGFjaG1lbnQgZmllbGRzIHdoZW4gY29udHJvbFR5cGUgPSBBVFRBQ0hNRU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnJvd3MubWFwKChyb3cpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubWFwKChjb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9sVHlwZSA9PT0gRW51bUZvcm1CYXNlQ29udG9sVHlwZS5BVFRBQ0hNRU5UKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWVUb1Nob3cgPSBib2R5LmlubmVyQm9keVtjb250cm9sLmFzc2lnblRvIV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBBc3NpZ24gdmFsdWUgdG8gYmFzaWMgZmllbGRzIHdoZW4gY29udHJvbFR5cGUgPSBBVFRBQ0hNRU5UICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbjogVXNpbmcgUGF0Y2hWYWx1ZSBpbnN0ZWFkIG9mIHNldFZhbHVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JtcyBvZnRlbiBoYXZlIGV4dHJhIGhlbHBlciBmaWVsZHNcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aHVzLCBpZiB3ZSB1c2Ugc2V0VmFsdWUgbWV0aG9kLCB0aGUgaGVscGVyIGZpZWxkcyB3aWxsIGJlIGxvc3Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmZvcm0uc2V0VmFsdWUoYm9keS5pbm5lckJvZHkpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gc28sIHdlIHVzZSBwYXRjaFZhbHVlIG1ldGhvZCA6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IGJvZHkuaW5uZXJCb2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5jdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24ucm93cy5tYXAoKHJvdykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5tYXAoKGNvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuU0VFS0VSLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISF0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkgJiYgISEhY29udHJvbC5nZXRCeUlkQXBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRyb2wuY29udHJvbFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2wubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5EUk9QRE9XTjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISEhY29udHJvbC5kcm9wZG93bk9wdGlvbnMkPy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYGdldEJ5SWRBcGkgbm90IHByb3ZpZGVkIGZvciAnJHtjb250cm9sLmZpZWxkfSdgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhIWNvbnRyb2wuY2hlY2tsaXN0T3B0aW9ucyQ/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1ha2VHZXRSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRCeUlkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmdldEJ5SWRBcGkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA/aWQ9JHt0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXX1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZm9ybSBnZXRCeUlkIHJlc3VsdDogXCIsIHRoaXMuY3VycmVudFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0QnlJZE9iamVjdCQ/Lm5leHQoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXRCeUlkT2JqZWN0JD8ubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUiAmJiBjb250cm9sLm11bHRpTW9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLm9iamVjdExpc3QkPy5uZXh0KGJvZHkuaW5uZXJCb2R5W2NvbnRyb2wuZ2V0T2JqZWN0TGlzdEZyb20hXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyQubmV4dCh0aGlzLnNlY3Rpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBVc2luZyBQYXRjaFZhbHVlIGluc3RlYWQgb2Ygc2V0VmFsdWUgKi9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZSQubmV4dChFbnVtQ29yZVBhZ2VFZGl0TW9kZS5DUkVBVEUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0VGV4dCA9IEVudW1UcmFuc2xhdGVLZXkuVUlfRURJVF9GT1JNX0JVVFRPTl9BREQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBpbnN0YW5jZXNGaWx0ZXIgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMubGlzdEluc3RhbmNlXHJcbiAgICApO1xyXG4gICAgaWYgKCEhaW5zdGFuY2VzRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc0ZpbHRlclswXTtcclxuICAgICAgaW5zdGFuY2UuaWQkLm5leHQoaWQpO1xyXG4gICAgICAvL2lmICghISF0aGlzLm5vcm1hbE1vZGUpIGluc3RhbmNlLnJlbG9hZEZsYWckPy5uZXh0KCFpbnN0YW5jZS5yZWxvYWRGbGFnJC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKGBDb3JlUGFnZUxpc3QgaW5zdGFuY2UgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9IGN1cnJlbnQgaWQgaXM6ICR7aW5zdGFuY2UuaWQkLnZhbHVlfWAsIGFsZXJ0T3B0aW9ucylcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYENvcmVQYWdlTGlzdCBpbnN0YW5jZXMgZG8gbm90IGluY2x1ZGUgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9YCwgYWxlcnRPcHRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5vdE9rMjAwUmVzcG9uc2UoeDogb2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiTm8gcmVzcG9uc2UgY29udGVudC4gSXQgd2FzIHBvc3NpYmx5IGEgQ09SUyBlcnJvci5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4LCBudWxsLCAyKSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG5cclxuICAgIC8qIElGIGlkIGlzIGZhbHN5ID0+IENSRUFULCBvdGhlcndpc2UgVVBEQVRFICovXHJcblxyXG4gICAgLyogRk9SIENPTlRST0wgT0YgVFlQRSBHUklEQlVGRkVSLCBTRVQgRVZFUlkgaWQgVE8gTlVMTCAqL1xyXG4gICAgdGhpcy5zZWN0aW9ucy5tYXAoc2VjdGlvbiA9PiB7XHJcbiAgICAgIHNlY3Rpb24ucm93cy5tYXAocm93ID0+IHtcclxuICAgICAgICByb3cubWFwKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkdSSURCVUZGRVIpIHtcclxuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWU7XHJcbiAgICAgICAgICAgIC8vIFRPIERPIDE3LzA4LzIwMjMgPT09PT09PT09PT1cclxuICAgICAgICAgICAgYWJzdHJhY3RDb250cm9sPy52YWx1ZT8ubWFwKCh4OiBhbnkpID0+IHguaWQgPSBudWxsKTtcclxuICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIGlmICghIXRoaXMubWl4ZWRNb2RlKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0TG9naWMuZW1pdChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtb2RlOiB0aGlzLmZvcm0uZ2V0KCdlZGl0TW9kZScpPy52YWx1ZSxcclxuICAgICAgICAgIGZvcm1WYWx1ZTogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKClcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLmF1dG9TdWJtaXRMb2dpY09mZikge1xyXG4gICAgICAvLyBETyB5b3VyIGxvZ2ljIGhlcmVcclxuICAgICAgdGhpcy5zdWJtaXRMb2dpYy5lbWl0KEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICghISF0aGlzLmZvcm0uZ2V0KCdpZCcpIS52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3Qgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3Q6IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCA9IHtcclxuICAgICAgICBzeXNGdW5jdGlvbkNvZGU6IHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC52YWx1ZT8uY29kZSB8fCAnVU5ERUZJTkVEJyxcclxuICAgICAgICBzeXNBY3Rpb25Db2RlOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NSRUFURSxcclxuICAgICAgICBiZWZvcmU6IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFZhbHVlKSA/PyAnXCJcIicsXHJcbiAgICAgICAgYWZ0ZXI6IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcclxuICAgICAgICB1c2VybmFtZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udXNlck5hbWUhXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX0FERElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlXHJcbiAgICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAgICdjcmVhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgICB0aGlzLmNydWQuYyEsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICBUcmFuc2ZlciBuZXdseSBjcmVhdGVkIHJlY29yZCBpZFxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwgeyAvKiBleHBlcmltZW50Ki8gcmVwbGFjZVVybDogdHJ1ZSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgc3RhdGU6IHsgaWQ6IGJvZHkuaW5uZXJCb2R5LmlkLCBpbnN0YW5jZU51bWJlcjogdGhpcy5saXN0SW5zdGFuY2UgfSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbk5vdE9rMjAwUmVzcG9uc2UoeCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3Qgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3Q6IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCA9IHtcclxuICAgICAgICBzeXNGdW5jdGlvbkNvZGU6IHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC52YWx1ZT8uY29kZSB8fCAnVU5ERUZJTkVEJyxcclxuICAgICAgICBzeXNBY3Rpb25Db2RlOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1NBVkUsXHJcbiAgICAgICAgYmVmb3JlOiBKU09OLnN0cmluZ2lmeSh0aGlzLmN1cnJlbnRWYWx1ZSkgPz8gJ1wiXCInLFxyXG4gICAgICAgIGFmdGVyOiBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSksXHJcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LnVzZXJOYW1lIVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBhMSA9IHRoaXMuY29yZUZvcm1TZXJ2aWNlLmdldEFsbEZvcm1CYXNlQ29udHJvbE5hbWVzKHRoaXMubGVmdElucHV0U2VjdGlvbnM/LmZpbHRlcih4ID0+ICF4LmhpZGRlbikpO1xyXG4gICAgICBjb25zdCBhMiA9IHRoaXMuY29yZUZvcm1TZXJ2aWNlLmdldEFsbEZvcm1CYXNlQ29udHJvbE5hbWVzKHRoaXMuc2VjdGlvbnM/LmZpbHRlcih4ID0+ICF4LmhpZGRlbikpO1xyXG4gICAgICBjb25zdCBhY3R1YWxGb3JtRGVjbGFyZWRGaWVsZHMgPSBbLi4uYTEsIC4uLmEyXTtcclxuXHJcbiAgICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX1VQREFUSU5HX1BMRUFTRV9XQUlUKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZVxyXG4gICAgICAgIC5tYWtlUG9zdFJlcXVlc3QoXHJcbiAgICAgICAgICAndXBkYXRlICcgKyB0aGlzLmVudGl0eVRhYmxlLFxyXG4gICAgICAgICAgdGhpcy5jcnVkLnUsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCxcclxuICAgICAgICAgICAgYWN0dWFsRm9ybURlY2xhcmVkRmllbGRzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keTtcclxuICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZFNpZ25hbChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0U3VjY2Vzcy5lbWl0KHRydWUpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICBUcmFuc2ZlciBjdXJyZW50IHJlY29yZCBpZFxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSA9PT0gXCJNT0JJTEVcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwgeyAvKiBleHBlcmltZW50Ki8gcmVwbGFjZVVybDogdHJ1ZSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgc3RhdGU6IHsgaWQ6IGJvZHkuaW5uZXJCb2R5LmlkLCBpbnN0YW5jZU51bWJlcjogdGhpcy5saXN0SW5zdGFuY2UgfSB9KTsgIFxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID09PSBcIldFQkFQUFwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHN0YXRlOiB7IGlkOiBib2R5LmlubmVyQm9keS5pZCwgaW5zdGFuY2VOdW1iZXI6IHRoaXMubGlzdEluc3RhbmNlIH0gfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uTm90T2syMDBSZXNwb25zZSh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBQSMavxqBORyBUSOG7qEMgTsOAWSDEkMav4buiQyBU4bqgTyBSQSBLSEkgREVWIFZOUy1QT1JUQUxcclxuICAgKi9cclxuXHJcbiAgb25TYXZlKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19BRERJTkdfUExFQVNFX1dBSVQpXHJcbiAgICApO1xyXG4gICAgaWYgKCEhdGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQpIHtcclxuICAgICAgYWxlcnQoSlNPTi5zdHJpbmdpZnkoZSwgbnVsbCwgMikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAnY3JlYXRlICcgKyB0aGlzLmVudGl0eVRhYmxlLFxyXG4gICAgICAgIHRoaXMuY3J1ZC5zISxcclxuICAgICAgICBlXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiBib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZFNpZ25hbChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBUcmFuc2ZlciBuZXdseSBjcmVhdGVkIHJlY29yZCBpZFxyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMuYXV0b0NhbmNlbExvZ2ljT2ZmKSB7XHJcbiAgICAgIHRoaXMuY2FuY2VsTG9naWMuZW1pdCh0cnVlKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICB0aGlzLm9uQnV0dG9uQ2xpY2suZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybUNyZWF0ZWRMb2NhbChlOiBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtID0gZS5mb3JtR3JvdXA7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB0aGlzLm9uRm9ybUNyZWF0ZWQuZW1pdCh0aGlzLmZvcm0pO1xyXG5cclxuICAgIC8vIE5vdyB3ZSBjYW4gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiQGlmICghIW5vcm1hbE1vZGUpIHtcclxuPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLWVkaXQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMHB4IDI0cHgnIH1cIj5cclxuICAgICAgICA8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwiY2FwdGlvbkNvZGVcIiBbaGlkZUJ1dHRvbkdyb3VwXT1cInRydWVcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoISFzZWN0aW9ucy5sZW5ndGgpIHtcclxuICAgIDxjb3JlLWZvcm0gW2Zvcm1OYW1lXT1cIidmb3JtJ1wiIFtzdWJtaXRUZXh0XT1cInN1Ym1pdFRleHRcIiBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIlxyXG4gICAgICAgIFtsZWZ0SW5wdXRTZWN0aW9uc109XCJsZWZ0SW5wdXRTZWN0aW9uc1wiIFtsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplXT1cImxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVcIlxyXG4gICAgICAgIFtpbnB1dFNlY3Rpb25zXT1cInNlY3Rpb25zXCIgW21vZGUkXT1cIm1vZGUkXCIgW2JvdHRvbVRlbXBsYXRlUmVmXT1cImJvdHRvbVRlbXBsYXRlUmVmXCJcclxuICAgICAgICBbY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXT1cImN1c3RvbUZvcm1CdXR0b25JdGVtc1wiIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgW2NoZWNrRXJyb3IkXT1cImNoZWNrRXJyb3IkXCIgKG9uRm9ybUNyZWF0ZWQpPVwib25Gb3JtQ3JlYXRlZExvY2FsKCRldmVudClcIiAob25TdWJtaXQpPVwib25TdWJtaXQoKVwiXHJcbiAgICAgICAgKG9uU2F2ZSk9XCJvblNhdmUoJGV2ZW50KVwiIChidXR0b25DbGljayk9XCJidXR0b25DbGljaygkZXZlbnQpXCIgKG9uQ2FuY2FsKT1cIm9uQ2FuY2VsKClcIj48L2NvcmUtZm9ybT5cclxuICAgIH1cclxuPC9kaXY+XHJcbn0gQGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwibW9kYWwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgIG92ZXJmbG93WTogJ3Njcm9sbCdcclxuICAgIH1cIj5cclxuICAgIDxkaXYgI2NvbnRhaW5lckJpZ2dlciBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWhlYWRlci1wb3B1cFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9pPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMHB4IDI0cHgnIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJjYXB0aW9uQ29kZVwiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLWVkaXQtY29udGFpbmVyIG5vdC1ub3JtYWwtbW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZSdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICBAaWYgKCEhc2VjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0gW2Zvcm1OYW1lXT1cIidmb3JtJ1wiIFtzdWJtaXRUZXh0XT1cInN1Ym1pdFRleHRcIiBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2xlZnRJbnB1dFNlY3Rpb25zXT1cImxlZnRJbnB1dFNlY3Rpb25zXCIgW2xlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVdPVwibGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXRTZWN0aW9uc109XCJzZWN0aW9uc1wiIFttb2RlJF09XCJtb2RlJFwiIFtjdXN0b21Gb3JtQnV0dG9uSXRlbXNdPVwiY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiIFtjaGVja0Vycm9yJF09XCJjaGVja0Vycm9yJFwiXHJcbiAgICAgICAgICAgICAgICAob25Gb3JtQ3JlYXRlZCk9XCJvbkZvcm1DcmVhdGVkTG9jYWwoJGV2ZW50KVwiIChvblN1Ym1pdCk9XCJvblN1Ym1pdCgpXCIgKG9uU2F2ZSk9XCJvblNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiYnV0dG9uQ2xpY2soJGV2ZW50KVwiIChvbkNhbmNhbCk9XCJvbkNhbmNlbCgpXCI+PC9jb3JlLWZvcm0+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG5AaWYgKGxvYWRpbmcpIHtcclxuPGFwcC1mdWxsc2NyZWVuLW1vZGFsLWxvYWRlcj48L2FwcC1mdWxsc2NyZWVuLW1vZGFsLWxvYWRlcj5cclxufSJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, input, viewChild, Output, EventEmitter } from '@angular/core';
2
2
  import { CoreShiftStickerComponent } from '../core-shift-sticker/core-shift-sticker.component';
3
- import { BehaviorSubject, debounceTime, filter, fromEvent, Subscription } from 'rxjs';
3
+ import { BehaviorSubject, fromEvent, Subscription } from 'rxjs';
4
4
  import { CoreFormControlBaseComponent } from '../core-form-control-base/core-form-control-base.component';
5
5
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
6
  import { EnumTranslateKey } from 'alpha-global-constants';
@@ -9,6 +9,11 @@ import * as i1 from "../../services/work-shift-dnd.service";
9
9
  import * as i2 from "../../services/dialog.service";
10
10
  export class CoreShiftCellComponent extends CoreFormControlBaseComponent {
11
11
  writeValue(obj) {
12
+ if (this.workShiftDndService.checkForOverlaps(obj)) {
13
+ this.dialogService.createNew(EnumTranslateKey.UI_GRID_FORM_BUTTON_INFORMATION, undefined, undefined, undefined, EnumTranslateKey.WORK_SHIFT_OVERLAP_DETECTED, [
14
+ `shiftCellId: ${this.shiftCellId}`
15
+ ]);
16
+ }
12
17
  this.value = obj;
13
18
  const newShifts = [];
14
19
  obj?.map(x => {
@@ -80,21 +85,14 @@ export class CoreShiftCellComponent extends CoreFormControlBaseComponent {
80
85
  this.dndEventSubscriptions.drop?.unsubscribe();
81
86
  this.dndEventSubscriptions.dragleave?.unsubscribe();
82
87
  }
83
- isOverlapse(shifts) {
84
- const nonDeletedShifts = shifts.filter(shift$ => !shift$.value.deleted);
85
- for (let i = 0; i < nonDeletedShifts.length; i++) {
86
- for (let j = i + 1; j < nonDeletedShifts.length; j++) {
87
- if (nonDeletedShifts[i].value.hoursStart < nonDeletedShifts[j].value.hoursStop &&
88
- nonDeletedShifts[i].value.hoursStop > nonDeletedShifts[j].value.hoursStart) {
89
- return true;
90
- }
91
- }
92
- }
93
- return false;
94
- }
95
88
  ngAfterViewInit() {
96
89
  setTimeout(() => {
97
- this.onDropStream$.pipe(filter(x => !!x.length), debounceTime(500)).subscribe(x => {
90
+ this.onDropStream$
91
+ // .pipe(
92
+ // filter(x => !!x.length),
93
+ // debounceTime(500)
94
+ // )
95
+ .subscribe(x => {
98
96
  this.onDrop.emit(true);
99
97
  });
100
98
  const containerElement = this.$container()?.nativeElement;
@@ -143,7 +141,7 @@ export class CoreShiftCellComponent extends CoreFormControlBaseComponent {
143
141
  ...newShifts,
144
142
  beingPushed
145
143
  ];
146
- if (this.isOverlapse(merged)) {
144
+ if (this.workShiftDndService.checkForOverlaps(this.workShiftDndService.transformToPlainShifts(merged))) {
147
145
  this.dialogService.createNew(EnumTranslateKey.UI_GRID_FORM_BUTTON_INFORMATION, undefined, undefined, undefined, EnumTranslateKey.WORK_SHIFT_OVERLAP_DETECTED, []);
148
146
  return;
149
147
  }
@@ -195,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
195
193
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.WorkShiftDndService }, { type: i2.DialogService }], propDecorators: { onDrop: [{
196
194
  type: Output
197
195
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXNoaWZ0LWNlbGwvY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXNoaWZ0LWNlbGwvY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQTZDLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUwsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQXdCLE1BQU0sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBMEIxRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsNEJBQTRCO0lBTTdELFVBQVUsQ0FBQyxHQUFlO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLE1BQU0sU0FBUyxHQUFnQyxFQUFFLENBQUM7UUFDbEQsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNYLFNBQVMsQ0FBQyxJQUFJLENBQ1osSUFBSSxlQUFlLENB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QUM7SUFDOUIsQ0FBQzs4R0FyTlUsc0JBQXNCO2tHQUF0QixzQkFBc0Isa1FBVnRCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztTQUNGLDBLQzlCSCxzUEFLQSxtWERpQkkseUJBQXlCOzsyRkFZaEIsc0JBQXNCO2tCQWpCbEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AseUJBQXlCO3FCQUMxQixhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsd0JBQXdCO3lCQUNwQztxQkFDRjtvSkFNUyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbnB1dCwgdmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgV3JpdGFibGVTaWduYWwsIHNpZ25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlU2hpZnRTdGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1zaGlmdC1zdGlja2VyL2NvcmUtc2hpZnQtc3RpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQXRTaGlmdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZS1tYW5hZ2VtZW50L0lBdFNoaWZ0JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFdvcmtTaGlmdERuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93b3JrLXNoaWZ0LWRuZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gJ2FscGhhLWdsb2JhbC1jb25zdGFudHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHJvcHBhYmxlRXZlbnRTdWJzY3JpcHRpb24ge1xyXG4gIGRyYWdlbnRlcjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkLFxyXG4gIGRyYWdvdmVyOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQsXHJcbiAgZHJhZ2xlYXZlOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQsXHJcbiAgZHJvcDogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1zaGlmdC1jZWxsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvcmVTaGlmdFN0aWNrZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlU2hpZnRDZWxsQ29tcG9uZW50XHJcbiAgICB9XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVNoaWZ0Q2VsbENvbXBvbmVudCBleHRlbmRzIENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBAT3V0cHV0KCkgb25Ecm9wID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBvdmVycmlkZSB2YWx1ZSE6IElBdFNoaWZ0W107XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBJQXRTaGlmdFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gICAgY29uc3QgbmV3U2hpZnRzOiBCZWhhdmlvclN1YmplY3Q8SUF0U2hpZnQ+W10gPSBbXTtcclxuICAgIG9iaj8ubWFwKHggPT4ge1xyXG4gICAgICBuZXdTaGlmdHMucHVzaChcclxuICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PElBdFNoaWZ0Pih4KVxyXG4gICAgICApXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zaGlmdHMgPSBuZXdTaGlmdHNcclxuICB9XHJcblxyXG4gICRiYWNrZ3JvdW5kQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCd3aGl0ZScpO1xyXG4gICRjb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2NvbnRhaW5lcicpO1xyXG4gIHNoaWZ0Q2VsbElkOiBzdHJpbmcgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xyXG5cclxuICBwcml2YXRlIGRyYWdFbGVtZW50czogU2V0PEV2ZW50VGFyZ2V0PiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgZG5kRXZlbnRTdWJzY3JpcHRpb25zOiBJRHJvcHBhYmxlRXZlbnRTdWJzY3JpcHRpb24gPSB7XHJcbiAgICBkcmFnZW50ZXI6IG5ldyBTdWJzY3JpcHRpb24oKCkgPT4gbnVsbCksXHJcbiAgICBkcmFnb3ZlcjogbmV3IFN1YnNjcmlwdGlvbigoKSA9PiBudWxsKSxcclxuICAgIGRyb3A6IG5ldyBTdWJzY3JpcHRpb24oKCkgPT4gbnVsbCksXHJcbiAgICBkcmFnbGVhdmU6IG5ldyBTdWJzY3JpcHRpb24oKCkgPT4gbnVsbClcclxuICB9XHJcblxyXG4gIHNoaWZ0czogQmVoYXZpb3JTdWJqZWN0PElBdFNoaWZ0PltdID0gW1xyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxJQXRTaGlmdD4oe1xyXG4gICAgICBjb2RlOiAnWCcsXHJcbiAgICAgIG5hbWU6ICdDYSBsw6BtIHZp4buHYyBuZ8OgeSB0aMaw4budbmcnLFxyXG4gICAgICBzeW1ib2w6IHtcclxuICAgICAgICBjb2RlOiAnWCcsXHJcbiAgICAgICAgbmFtZTogJ1gnLFxyXG4gICAgICAgIGlzSGF2ZVNhbDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgaG91cnNTdGFydDogbmV3IERhdGUoMjAyNCwgNywgMTMsIDgsIDAsIDApLFxyXG4gICAgICBob3Vyc1N0b3A6IG5ldyBEYXRlKDIwMjQsIDcsIDEzLCAxNywgMzAsIDApXHJcbiAgICB9KSxcclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SUF0U2hpZnQ+KHtcclxuICAgICAgY29kZTogJ09GRicsXHJcbiAgICAgIG5hbWU6ICdDYSBuZ8OgeSBuZ2jhu4knLFxyXG4gICAgICBzeW1ib2w6IHtcclxuICAgICAgICBjb2RlOiAnT0ZGJyxcclxuICAgICAgICBuYW1lOiAnT0ZGJyxcclxuICAgICAgICBpc09mZjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgaG91cnNTdGFydDogbmV3IERhdGUoMjAyNCwgNywgMTMsIDgsIDAsIDApLFxyXG4gICAgICBob3Vyc1N0b3A6IG5ldyBEYXRlKDIwMjQsIDcsIDEzLCAxNywgMzAsIDApXHJcbiAgICB9KSxcclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SUF0U2hpZnQ+KHtcclxuICAgICAgY29kZTogJ0NUJyxcclxuICAgICAgbmFtZTogJ0NhIGPDtG5nIHTDoWMnLFxyXG4gICAgICBzeW1ib2w6IHtcclxuICAgICAgICBjb2RlOiAnQ1QnLFxyXG4gICAgICAgIG5hbWU6ICdDUicsXHJcbiAgICAgICAgaXNSZWdpc3RlcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgaG91cnNTdGFydDogbmV3IERhdGUoMjAyNCwgNywgMTMsIDgsIDAsIDApLFxyXG4gICAgICBob3Vyc1N0b3A6IG5ldyBEYXRlKDIwMjQsIDcsIDEzLCAxNywgMzAsIDApXHJcbiAgICB9KVxyXG4gIF07XHJcblxyXG4gIG9uRHJvcFN0cmVhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgd29ya1NoaWZ0RG5kU2VydmljZTogV29ya1NoaWZ0RG5kU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFuVXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ2VudGVyPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ292ZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcm9wPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ2xlYXZlPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhblVwU3Vic2VxdWVudFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcmFnb3Zlcj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuZG5kRXZlbnRTdWJzY3JpcHRpb25zLmRyb3A/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcmFnbGVhdmU/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzT3ZlcmxhcHNlKHNoaWZ0czogQmVoYXZpb3JTdWJqZWN0PElBdFNoaWZ0PltdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub25EZWxldGVkU2hpZnRzID0gc2hpZnRzLmZpbHRlcihzaGlmdCQgPT4gIXNoaWZ0JC52YWx1ZS5kZWxldGVkKTtcclxuICBcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9uRGVsZXRlZFNoaWZ0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBub25EZWxldGVkU2hpZnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgbm9uRGVsZXRlZFNoaWZ0c1tpXS52YWx1ZS5ob3Vyc1N0YXJ0IDwgbm9uRGVsZXRlZFNoaWZ0c1tqXS52YWx1ZS5ob3Vyc1N0b3AgJiZcclxuICAgICAgICAgIG5vbkRlbGV0ZWRTaGlmdHNbaV0udmFsdWUuaG91cnNTdG9wID4gbm9uRGVsZXRlZFNoaWZ0c1tqXS52YWx1ZS5ob3Vyc1N0YXJ0XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5vbkRyb3BTdHJlYW0kLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKHggPT4gISF4Lmxlbmd0aCksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDUwMClcclxuICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5vbkRyb3AuZW1pdCh0cnVlKTtcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLiRjb250YWluZXIoKT8ubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuJGJhY2tncm91bmRDb2xvcigpKTtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG5cclxuICAgICAgY29uc3QgZHJhZ2VudGVyRXZlbnQgPSBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWdlbnRlcicpO1xyXG4gICAgICBjb25zdCBkcmFnb3ZlckV2ZW50ID0gZnJvbUV2ZW50KGNvbnRhaW5lckVsZW1lbnQsICdkcmFnb3ZlcicpO1xyXG4gICAgICBjb25zdCBkcm9wRXZlbnQgPSBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2Ryb3AnKTtcclxuICAgICAgY29uc3QgZHJhZ2xlYXZlRXZlbnQgPSBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWdsZWF2ZScpO1xyXG5cclxuICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ2VudGVyID0gZHJhZ2VudGVyRXZlbnQuc3Vic2NyaWJlKChldjogYW55KSA9PiB7XHJcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLmNsZWFuVXBTdWJzZXF1ZW50U3Vic2NyaXB0aW9ucygpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy53b3JrU2hpZnREbmRTZXJ2aWNlLmRyYWdnaW5nRnJvbUNlbGxJZCQudmFsdWUgPT09IHRoaXMuc2hpZnRDZWxsSWQpIHJldHVyblxyXG4gICAgICAgIHRoaXMuZHJhZ0VsZW1lbnRzLmFkZChldi50YXJnZXQgYXMgRXZlbnRUYXJnZXQpO1xyXG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndmFsaWQtZHJvcCcpO1xyXG4gICAgICAgIGlmICh0aGlzLndvcmtTaGlmdERuZFNlcnZpY2UuZHJhZ2dpbmdEYXRhJC52YWx1ZS5zcGxpdCgnOicpWzBdICE9PSB0aGlzLnNoaWZ0Q2VsbElkKSB7XHJcbiAgICAgICAgICB0aGlzLiRjb250YWluZXIoKT8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1iYWNrZ3JvdW5kLWNvbG9yJywgJyNmZmY0Y2UnKTtcclxuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIGRyYWdvdmVyIGV2ZW50IHRvIGFsbG93IGRyb3BcclxuICAgICAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcmFnb3ZlciA9IGRyYWdvdmVyRXZlbnQuc3Vic2NyaWJlKChldjogYW55KSA9PiB7XHJcbiAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgdGhpcy53b3JrU2hpZnREbmRTZXJ2aWNlLmRyYWdvdmVyQ2VsbElkJC5uZXh0KHRoaXMuc2hpZnRDZWxsSWQpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBkcm9wIGV2ZW50XHJcbiAgICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJvcCA9IGRyb3BFdmVudC5zdWJzY3JpYmUoKGV2OiBhbnkpID0+IHtcclxuICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBpZiAodGhpcy53b3JrU2hpZnREbmRTZXJ2aWNlLmRyYWdnaW5nRnJvbUNlbGxJZCQudmFsdWUgPT09IHRoaXMuc2hpZnRDZWxsSWQpIHJldHVyblxyXG4gICAgICAgICAgdGhpcy5kcmFnRWxlbWVudHMuY2xlYXIoKTsgLy8gQ2xlYXIgdGhlIHNldFxyXG4gICAgICAgICAgY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZC1kcm9wJyk7XHJcblxyXG4gICAgICAgICAgdGhpcy4kY29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuJGJhY2tncm91bmRDb2xvcigpKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gZXYuZGF0YVRyYW5zZmVyPy5nZXREYXRhKCd0ZXh0L3BsYWluJyk7IC8vIEV4YW1wbGUgZGF0YSByZXRyaWV2YWxcclxuXHJcbiAgICAgICAgICB0aGlzLm9uRHJvcFN0cmVhbSQubmV4dCh0aGlzLnNoaWZ0Q2VsbElkKVxyXG5cclxuICAgICAgICAgIC8vIEhhbmRsZSBkcm9wIGxvZ2ljIGJhc2VkIG9uIGRhdGFcclxuICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIC8vIFByb2Nlc3MgZHJvcHBlZCBkYXRhIGhlcmVcclxuICAgICAgICAgICAgY29uc3QgbmV3U2hpZnRzID0gdGhpcy5zaGlmdHM7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlaW5nUHVzaGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQXRTaGlmdD4oe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMud29ya1NoaWZ0RG5kU2VydmljZS5kcmFnZ2luZ1NoaWZ0JC52YWx1ZSEsXHJcbiAgICAgICAgICAgICAgYWRkZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZDogQmVoYXZpb3JTdWJqZWN0PElBdFNoaWZ0PltdID0gW1xyXG4gICAgICAgICAgICAgIC4uLm5ld1NoaWZ0cyxcclxuICAgICAgICAgICAgICBiZWluZ1B1c2hlZFxyXG4gICAgICAgICAgICBdOyBcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNPdmVybGFwc2UobWVyZ2VkKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jcmVhdGVOZXcoXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX0dSSURfRk9STV9CVVRUT05fSU5GT1JNQVRJT04sXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LldPUktfU0hJRlRfT1ZFUkxBUF9ERVRFQ1RFRCxcclxuICAgICAgICAgICAgICAgIFtdXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5ld1NoaWZ0cy5wdXNoKGJlaW5nUHVzaGVkKTtcclxuICAgICAgICAgICAgdGhpcy5zaGlmdHMgPSBuZXdTaGlmdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZG5kRXZlbnRTdWJzY3JpcHRpb25zLmRyYWdsZWF2ZSA9IGRyYWdsZWF2ZUV2ZW50LnN1YnNjcmliZSgoZXY6IGFueSkgPT4ge1xyXG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMud29ya1NoaWZ0RG5kU2VydmljZS5kcmFnZ2luZ0Zyb21DZWxsSWQkLnZhbHVlID09PSB0aGlzLnNoaWZ0Q2VsbElkKSByZXR1cm5cclxuICAgICAgICB0aGlzLmRyYWdFbGVtZW50cy5kZWxldGUoZXYudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0KTtcclxuICAgICAgICBpZiAodGhpcy5kcmFnRWxlbWVudHMuc2l6ZSA9PT0gMCkge1xyXG4gICAgICAgICAgY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZC1kcm9wJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuJGNvbnRhaW5lcigpPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWJhY2tncm91bmQtY29sb3InLCB0aGlzLiRiYWNrZ3JvdW5kQ29sb3IoKSk7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZG5kRXZlbnRTdWJzY3JpcHRpb25zLmRyYWdvdmVyPy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuZG5kRXZlbnRTdWJzY3JpcHRpb25zLmRyb3A/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZG5kRXZlbnRTdWJzY3JpcHRpb25zLmRyYWdvdmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuZG5kRXZlbnRTdWJzY3JpcHRpb25zLmRyb3AgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhblVwU3Vic2NyaXB0aW9ucygpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1zaGlmdC1jZWxsLWNvbnRhaW5lclwiPlxyXG4gICAgQGZvciAoc2hpZnQkIG9mIHNoaWZ0cyE7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDxjb3JlLXNoaWZ0LXN0aWNrZXIgW3NoaWZ0JF09XCJzaGlmdCRcIiBbJHNoaWZ0Q2VsbElkXT1cInNoaWZ0Q2VsbElkXCIgWyR3aWR0aF09XCIyMjhcIj48L2NvcmUtc2hpZnQtc3RpY2tlcj5cclxuICAgIH1cclxuPC9kaXY+XHJcbiJdfQ==
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXNoaWZ0LWNlbGwvY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXNoaWZ0LWNlbGwvY29yZS1zaGlmdC1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFL0YsT0FBTyxFQUFFLGVBQWUsRUFBOEMsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQTBCMUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDRCQUE0QjtJQU03RCxVQUFVLENBQUMsR0FBZTtRQUNqQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDMUIsZ0JBQWdCLENBQUMsK0JBQStCLEVBQ2hELFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULGdCQUFnQixDQUFDLDJC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ZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5wdXQsIHZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZVNoaWZ0U3RpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtc2hpZnQtc3RpY2tlci9jb3JlLXNoaWZ0LXN0aWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUF0U2hpZnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWUtbWFuYWdlbWVudC9JQXRTaGlmdCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmcm9tRXZlbnQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBXb3JrU2hpZnREbmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd29yay1zaGlmdC1kbmQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURyb3BwYWJsZUV2ZW50U3Vic2NyaXB0aW9uIHtcclxuICBkcmFnZW50ZXI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZCxcclxuICBkcmFnb3ZlcjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkLFxyXG4gIGRyYWdsZWF2ZTogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkLFxyXG4gIGRyb3A6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZFxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtc2hpZnQtY2VsbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb3JlU2hpZnRTdGlja2VyQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZVNoaWZ0Q2VsbENvbXBvbmVudFxyXG4gICAgfVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtc2hpZnQtY2VsbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvcmUtc2hpZnQtY2VsbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVTaGlmdENlbGxDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQE91dHB1dCgpIG9uRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgb3ZlcnJpZGUgdmFsdWUhOiBJQXRTaGlmdFtdO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogSUF0U2hpZnRbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud29ya1NoaWZ0RG5kU2VydmljZS5jaGVja0Zvck92ZXJsYXBzKG9iaikpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNyZWF0ZU5ldyhcclxuICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX0dSSURfRk9STV9CVVRUT05fSU5GT1JNQVRJT04sXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5XT1JLX1NISUZUX09WRVJMQVBfREVURUNURUQsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgYHNoaWZ0Q2VsbElkOiAke3RoaXMuc2hpZnRDZWxsSWR9YFxyXG4gICAgICAgIF1cclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICBjb25zdCBuZXdTaGlmdHM6IEJlaGF2aW9yU3ViamVjdDxJQXRTaGlmdD5bXSA9IFtdO1xyXG4gICAgb2JqPy5tYXAoeCA9PiB7XHJcbiAgICAgIG5ld1NoaWZ0cy5wdXNoKFxyXG4gICAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SUF0U2hpZnQ+KHgpXHJcbiAgICAgIClcclxuICAgIH0pXHJcbiAgICB0aGlzLnNoaWZ0cyA9IG5ld1NoaWZ0cztcclxuICB9XHJcblxyXG4gICRiYWNrZ3JvdW5kQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCd3aGl0ZScpO1xyXG4gICRjb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2NvbnRhaW5lcicpO1xyXG4gIHNoaWZ0Q2VsbElkOiBzdHJpbmcgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xyXG5cclxuICBwcml2YXRlIGRyYWdFbGVtZW50czogU2V0PEV2ZW50VGFyZ2V0PiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgZG5kRXZlbnRTdWJzY3JpcHRpb25zOiBJRHJvcHBhYmxlRXZlbnRTdWJzY3JpcHRpb24gPSB7XHJcbiAgICBkcmFnZW50ZXI6IG5ldyBTdWJzY3JpcHRpb24oKCkgPT4gbnVsbCksXHJcbiAgICBkcmFnb3ZlcjogbmV3IFN1YnNjcmlwdGlvbigoKSA9PiBudWxsKSxcclxuICAgIGRyb3A6IG5ldyBTdWJzY3JpcHRpb24oKCkgPT4gbnVsbCksXHJcbiAgICBkcmFnbGVhdmU6IG5ldyBTdWJzY3JpcHRpb24oKCkgPT4gbnVsbClcclxuICB9XHJcblxyXG4gIHNoaWZ0czogQmVoYXZpb3JTdWJqZWN0PElBdFNoaWZ0PltdID0gW1xyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxJQXRTaGlmdD4oe1xyXG4gICAgICBjb2RlOiAnWCcsXHJcbiAgICAgIG5hbWU6ICdDYSBsw6BtIHZp4buHYyBuZ8OgeSB0aMaw4budbmcnLFxyXG4gICAgICBzeW1ib2w6IHtcclxuICAgICAgICBjb2RlOiAnWCcsXHJcbiAgICAgICAgbmFtZTogJ1gnLFxyXG4gICAgICAgIGlzSGF2ZVNhbDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgaG91cnNTdGFydDogbmV3IERhdGUoMjAyNCwgNywgMTMsIDgsIDAsIDApLFxyXG4gICAgICBob3Vyc1N0b3A6IG5ldyBEYXRlKDIwMjQsIDcsIDEzLCAxNywgMzAsIDApXHJcbiAgICB9KSxcclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SUF0U2hpZnQ+KHtcclxuICAgICAgY29kZTogJ09GRicsXHJcbiAgICAgIG5hbWU6ICdDYSBuZ8OgeSBuZ2jhu4knLFxyXG4gICAgICBzeW1ib2w6IHtcclxuICAgICAgICBjb2RlOiAnT0ZGJyxcclxuICAgICAgICBuYW1lOiAnT0ZGJyxcclxuICAgICAgICBpc09mZjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgaG91cnNTdGFydDogbmV3IERhdGUoMjAyNCwgNywgMTMsIDgsIDAsIDApLFxyXG4gICAgICBob3Vyc1N0b3A6IG5ldyBEYXRlKDIwMjQsIDcsIDEzLCAxNywgMzAsIDApXHJcbiAgICB9KSxcclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SUF0U2hpZnQ+KHtcclxuICAgICAgY29kZTogJ0NUJyxcclxuICAgICAgbmFtZTogJ0NhIGPDtG5nIHTDoWMnLFxyXG4gICAgICBzeW1ib2w6IHtcclxuICAgICAgICBjb2RlOiAnQ1QnLFxyXG4gICAgICAgIG5hbWU6ICdDUicsXHJcbiAgICAgICAgaXNSZWdpc3RlcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgaG91cnNTdGFydDogbmV3IERhdGUoMjAyNCwgNywgMTMsIDgsIDAsIDApLFxyXG4gICAgICBob3Vyc1N0b3A6IG5ldyBEYXRlKDIwMjQsIDcsIDEzLCAxNywgMzAsIDApXHJcbiAgICB9KVxyXG4gIF07XHJcblxyXG4gIG9uRHJvcFN0cmVhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgd29ya1NoaWZ0RG5kU2VydmljZTogV29ya1NoaWZ0RG5kU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFuVXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ2VudGVyPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ292ZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcm9wPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ2xlYXZlPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhblVwU3Vic2VxdWVudFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcmFnb3Zlcj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuZG5kRXZlbnRTdWJzY3JpcHRpb25zLmRyb3A/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcmFnbGVhdmU/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMub25Ecm9wU3RyZWFtJFxyXG4gICAgICAvLyAucGlwZShcclxuICAgICAgLy8gICBmaWx0ZXIoeCA9PiAhIXgubGVuZ3RoKSxcclxuICAgICAgLy8gICBkZWJvdW5jZVRpbWUoNTAwKVxyXG4gICAgICAvLyApXHJcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5vbkRyb3AuZW1pdCh0cnVlKTtcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLiRjb250YWluZXIoKT8ubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuJGJhY2tncm91bmRDb2xvcigpKTtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG5cclxuICAgICAgY29uc3QgZHJhZ2VudGVyRXZlbnQgPSBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWdlbnRlcicpO1xyXG4gICAgICBjb25zdCBkcmFnb3ZlckV2ZW50ID0gZnJvbUV2ZW50KGNvbnRhaW5lckVsZW1lbnQsICdkcmFnb3ZlcicpO1xyXG4gICAgICBjb25zdCBkcm9wRXZlbnQgPSBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2Ryb3AnKTtcclxuICAgICAgY29uc3QgZHJhZ2xlYXZlRXZlbnQgPSBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWdsZWF2ZScpO1xyXG5cclxuICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ2VudGVyID0gZHJhZ2VudGVyRXZlbnQuc3Vic2NyaWJlKChldjogYW55KSA9PiB7XHJcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLmNsZWFuVXBTdWJzZXF1ZW50U3Vic2NyaXB0aW9ucygpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy53b3JrU2hpZnREbmRTZXJ2aWNlLmRyYWdnaW5nRnJvbUNlbGxJZCQudmFsdWUgPT09IHRoaXMuc2hpZnRDZWxsSWQpIHJldHVyblxyXG4gICAgICAgIHRoaXMuZHJhZ0VsZW1lbnRzLmFkZChldi50YXJnZXQgYXMgRXZlbnRUYXJnZXQpO1xyXG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndmFsaWQtZHJvcCcpO1xyXG4gICAgICAgIGlmICh0aGlzLndvcmtTaGlmdERuZFNlcnZpY2UuZHJhZ2dpbmdEYXRhJC52YWx1ZS5zcGxpdCgnOicpWzBdICE9PSB0aGlzLnNoaWZ0Q2VsbElkKSB7XHJcbiAgICAgICAgICB0aGlzLiRjb250YWluZXIoKT8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1iYWNrZ3JvdW5kLWNvbG9yJywgJyNmZmY0Y2UnKTtcclxuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIGRyYWdvdmVyIGV2ZW50IHRvIGFsbG93IGRyb3BcclxuICAgICAgICB0aGlzLmRuZEV2ZW50U3Vic2NyaXB0aW9ucy5kcmFnb3ZlciA9IGRyYWdvdmVyRXZlbnQuc3Vic2NyaWJlKChldjogYW55KSA9PiB7XHJcbiAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgdGhpcy53b3JrU2hpZnREbmRTZXJ2aWNlLmRyYWdvdmVyQ2VsbElkJC5uZXh0KHRoaXMuc2hpZnRDZWxsSWQpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBkcm9wIGV2ZW50XHJcbiAgICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJvcCA9IGRyb3BFdmVudC5zdWJzY3JpYmUoKGV2OiBhbnkpID0+IHtcclxuICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBpZiAodGhpcy53b3JrU2hpZnREbmRTZXJ2aWNlLmRyYWdnaW5nRnJvbUNlbGxJZCQudmFsdWUgPT09IHRoaXMuc2hpZnRDZWxsSWQpIHJldHVyblxyXG4gICAgICAgICAgdGhpcy5kcmFnRWxlbWVudHMuY2xlYXIoKTsgLy8gQ2xlYXIgdGhlIHNldFxyXG4gICAgICAgICAgY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd2YWxpZC1kcm9wJyk7XHJcblxyXG4gICAgICAgICAgdGhpcy4kY29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuJGJhY2tncm91bmRDb2xvcigpKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gZXYuZGF0YVRyYW5zZmVyPy5nZXREYXRhKCd0ZXh0L3BsYWluJyk7IC8vIEV4YW1wbGUgZGF0YSByZXRyaWV2YWxcclxuXHJcbiAgICAgICAgICB0aGlzLm9uRHJvcFN0cmVhbSQubmV4dCh0aGlzLnNoaWZ0Q2VsbElkKVxyXG5cclxuICAgICAgICAgIC8vIEhhbmRsZSBkcm9wIGxvZ2ljIGJhc2VkIG9uIGRhdGFcclxuICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIC8vIFByb2Nlc3MgZHJvcHBlZCBkYXRhIGhlcmVcclxuICAgICAgICAgICAgY29uc3QgbmV3U2hpZnRzID0gdGhpcy5zaGlmdHM7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlaW5nUHVzaGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQXRTaGlmdD4oe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMud29ya1NoaWZ0RG5kU2VydmljZS5kcmFnZ2luZ1NoaWZ0JC52YWx1ZSEsXHJcbiAgICAgICAgICAgICAgYWRkZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZDogQmVoYXZpb3JTdWJqZWN0PElBdFNoaWZ0PltdID0gW1xyXG4gICAgICAgICAgICAgIC4uLm5ld1NoaWZ0cyxcclxuICAgICAgICAgICAgICBiZWluZ1B1c2hlZFxyXG4gICAgICAgICAgICBdOyBcclxuICAgICAgICAgICAgaWYgKHRoaXMud29ya1NoaWZ0RG5kU2VydmljZS5jaGVja0Zvck92ZXJsYXBzKHRoaXMud29ya1NoaWZ0RG5kU2VydmljZS50cmFuc2Zvcm1Ub1BsYWluU2hpZnRzKG1lcmdlZCkpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNyZWF0ZU5ldyhcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfR1JJRF9GT1JNX0JVVFRPTl9JTkZPUk1BVElPTixcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuV09SS19TSElGVF9PVkVSTEFQX0RFVEVDVEVELFxyXG4gICAgICAgICAgICAgICAgW11cclxuICAgICAgICAgICAgICApXHJcbiAgICBcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV3U2hpZnRzLnB1c2goYmVpbmdQdXNoZWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNoaWZ0cyA9IG5ld1NoaWZ0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ2xlYXZlID0gZHJhZ2xlYXZlRXZlbnQuc3Vic2NyaWJlKChldjogYW55KSA9PiB7XHJcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBpZiAodGhpcy53b3JrU2hpZnREbmRTZXJ2aWNlLmRyYWdnaW5nRnJvbUNlbGxJZCQudmFsdWUgPT09IHRoaXMuc2hpZnRDZWxsSWQpIHJldHVyblxyXG4gICAgICAgIHRoaXMuZHJhZ0VsZW1lbnRzLmRlbGV0ZShldi50YXJnZXQgYXMgRXZlbnRUYXJnZXQpO1xyXG4gICAgICAgIGlmICh0aGlzLmRyYWdFbGVtZW50cy5zaXplID09PSAwKSB7XHJcbiAgICAgICAgICBjb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3ZhbGlkLWRyb3AnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy4kY29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuJGJhY2tncm91bmRDb2xvcigpKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ292ZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJvcD8udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJhZ292ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5kbmRFdmVudFN1YnNjcmlwdGlvbnMuZHJvcCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFuVXBTdWJzY3JpcHRpb25zKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLXNoaWZ0LWNlbGwtY29udGFpbmVyXCI+XHJcbiAgICBAZm9yIChzaGlmdCQgb2Ygc2hpZnRzITsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPGNvcmUtc2hpZnQtc3RpY2tlciBbc2hpZnQkXT1cInNoaWZ0JFwiIFskc2hpZnRDZWxsSWRdPVwic2hpZnRDZWxsSWRcIiBbJHdpZHRoXT1cIjIyOFwiPjwvY29yZS1zaGlmdC1zdGlja2VyPlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19