@sarasanalytics-com/design-system 0.0.161 → 0.0.162

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.
@@ -90,11 +90,11 @@ export class DialogComponent {
90
90
  this.dialogButtonClick.emit({ type: 'form-reset' });
91
91
  }
92
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DialogComponent, deps: [{ token: i1.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: DialogComponent, isStandalone: true, selector: "sa-dialog", inputs: { dialogData: "dialogData" }, outputs: { dialogButtonClick: "dialogButtonClick" }, ngImport: i0, template: "<div class=\"dialog-container\">\n <!-- top banner region -->\n <div class=\"top-container\">\n @if (!!dialogData?.topMessageBanners) {\n <div class=\"top-message-container\">\n @for (\n messageBanner of dialogData?.topMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n [style]=\"messageBanner?.style || 'width:39.438rem'\"\n >\n <div class=\"{{ messageBanner?.className }} message-content-style\">\n {{ messageBanner?.content }}\n </div>\n </sa-message-banner>\n }\n </div>\n }\n @if (!!dialogData?.closeButton || dialogData?.showCloseButton) {\n <div class=\"cross-btn\" (click)=\"onCloseButtonClick($event)\">\n <sa-icon\n [icon]=\"dialogData?.closeButton || 'closeOutlined'\"\n class=\"d-flex\"\n size=\"20\"\n ></sa-icon>\n </div>\n }\n </div>\n <!-- middle region -->\n @if (!!dialogData?.middleRegion) {\n <ng-container *ngIf=\"dialogData?.middleRegion as middleRegion\">\n <div class=\"image-description-container {{ middleRegion?.className }}\">\n <sa-message-banner-v2\n [messageType]=\"middleRegion?.messageType || 'default'\"\n [messageIcon]=\"middleRegion?.messageIcon\"\n [messageIconSize]=\"middleRegion?.messageIconSize\"\n [title]=\"middleRegion?.title\"\n [description]=\"middleRegion?.description\"\n [buttons]=\"middleRegion?.buttons\"\n [formConfig]=\"middleRegion?.content?.formConfig\"\n (onFormEvent)=\"onUnifiedFormEvent($event)\"\n (buttonClick)=\"middleRegion?.buttons ? onButtonClick($event) : ''\"\n >\n </sa-message-banner-v2>\n </div>\n </ng-container>\n }\n <!-- lower message banner region -->\n @if (!!dialogData?.lowerMessageBanners) {\n <div class=\"lower-message-container\">\n @for (\n messageBanner of dialogData?.lowerMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [buttonIcon]=\"messageBanner?.buttonIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n [style]=\"messageBanner?.style || 'width:-webkit-fill-available'\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n >\n <div\n class=\"{{ messageBanner?.className }} message-content-style\"\n ></div>\n {{ messageBanner?.content }}\n </sa-message-banner>\n }\n </div>\n }\n <!-- button region -->\n @if (!!dialogData?.buttons) {\n <div class=\"button-group-container\">\n @for (button of dialogData?.buttons; track button.text) {\n <sa-button\n [text]=\"button.text\"\n [icon]=\"button.icon\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [state]=\"button.state\"\n [iconPosition]=\"button.iconPosition\"\n [buttonIconSize]=\"button.buttonIconSize\"\n (onClickEvent)=\"onButtonClick(button, $event)\"\n role=\"button\"\n [attr.aria-label]=\"button.text\"\n >\n </sa-button>\n }\n </div>\n }\n @if (!!dialogData?.buttonsWithType) {\n <div class=\"buttonWithType-group-container\">\n @for (button of dialogData?.buttonsWithType; track button.text) {\n @if (button?.type === \"checkbox\") {\n <div class=\"checkbox-container {{ button.className }}\">\n <mat-checkbox [id]=\"button.id\" (change)=\"onButtonClick(button)\" class=\"checkbox-style\">{{\n button.text\n }}</mat-checkbox>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".dialog-container{display:flex;flex-direction:column;gap:var(--medium-28px);align-items:center;position:relative;overflow-y:auto;overflow-x:hidden}.top-message-container,.lower-message-container{display:flex;align-items:center;flex-direction:column;gap:var(--medium-28px)}.lower-message-container{width:-webkit-fill-available}::ng-deep .lower-message-container .content{justify-content:center;align-items:center;gap:var(--small-4px)}::ng-deep .image-description-container .image-container{margin-bottom:0}::ng-deep .image-description-container .content-container{gap:var(--medium-28px)}::ng-deep .image-description-container .title-class{font-size:var(--medium-22px);font-weight:500;line-height:var(--medium-28px)}::ng-deep .image-description-container .description{color:var(--text-mediumemphasis, #6D6979);font-size:var(--small-16px);line-height:var(--medium-24px);letter-spacing:.5px}.top-message-container .message-content-style{display:flex;justify-content:center;flex:1;color:var(--text-primary, #825CEE)}.lower-message-container .message-content-style{display:flex;align-items:center}::ng-deep .image-description-container .title-description{display:flex;flex-direction:column;gap:var(--small-8px)}.dialog-container .button-group-container{display:flex;gap:var(--small-12px);justify-content:center}::ng-deep .checkboxButton .mdc-checkbox__background{width:var(--small-16px);height:var(--small-16px);border:1.5px solid currentColor}::ng-deep .checkboxButton .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:#757575}::ng-deep .checkboxButton .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size) - 21px) / 2)}::ng-deep .checkboxButton .mdc-form-field{display:flex;align-items:center}::ng-deep .checkboxButton .mdc-label{color:var(--text-mediumemphasis, #6D6979);text-align:center;font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.dialog-container .cross-btn{position:absolute;top:0;right:0;cursor:pointer}::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{border-color:var(--primary-500);background-color:var(--primary-500)}.image-description-container{width:100%;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: MessageBannerComponent, selector: "sa-message-banner", inputs: ["type", "actionText", "content", "bannerIcon", "bannerIconSize", "buttonIcon", "buttonType", "buttonIconPosition", "buttonSize", "buttonIconSize", "button", "onAction"], outputs: ["actionClick"] }, { kind: "component", type: MessageBannerV2Component, selector: "sa-message-banner-v2", inputs: ["messageType", "contactUrl", "spacingBetweenImageAndDescription", "contentGap", "titleClass", "descriptionClass", "banner", "formConfig", "prebuiltFormFields", "messageIcon", "messageIconSize", "title", "description", "buttons"], outputs: ["onFormEvent", "buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "sa-button", inputs: ["id", "type", "state", "size", "text", "ImagePath", "icon", "iconPosition", "href", "hrefTarget", "width", "isSubmit", "buttonIconSize", "showSpinner"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatDialogModule }] }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: DialogComponent, isStandalone: true, selector: "sa-dialog", inputs: { dialogData: "dialogData" }, outputs: { dialogButtonClick: "dialogButtonClick" }, ngImport: i0, template: "<div class=\"dialog-container {{ dialogData?.className }}\">\n <!-- top banner region -->\n <div class=\"top-container\">\n @if (!!dialogData?.topMessageBanners) {\n <div class=\"top-message-container\">\n @for (\n messageBanner of dialogData?.topMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n [style]=\"messageBanner?.style || 'width:39.438rem'\"\n >\n <div class=\"{{ messageBanner?.className }} message-content-style\">\n {{ messageBanner?.content }}\n </div>\n </sa-message-banner>\n }\n </div>\n }\n @if(!!dialogData?.topRegionIcon){\n <div class=\"top-icon-container\">\n <sa-icon\n [icon]=\"dialogData?.topRegionIcon\"\n class=\"d-flex\"\n size=\"{{ dialogData?.topRegionIconSize }}\"\n ></sa-icon>\n </div>\n }\n @if (!!dialogData?.closeButton || dialogData?.showCloseButton) {\n <div class=\"cross-btn\" (click)=\"onCloseButtonClick($event)\">\n <sa-icon\n [icon]=\"dialogData?.closeButton || 'closeOutlined'\"\n class=\"d-flex\"\n size=\"20\"\n ></sa-icon>\n </div>\n }\n </div>\n <!-- middle region -->\n @if (!!dialogData?.middleRegion) {\n <ng-container *ngIf=\"dialogData?.middleRegion as middleRegion\">\n <div class=\"image-description-container {{ middleRegion?.className }}\">\n <sa-message-banner-v2\n [messageType]=\"middleRegion?.messageType || 'default'\"\n [messageIcon]=\"middleRegion?.messageIcon\"\n [messageIconSize]=\"middleRegion?.messageIconSize\"\n [title]=\"middleRegion?.title\"\n [description]=\"middleRegion?.description\"\n [buttons]=\"middleRegion?.buttons\"\n [formConfig]=\"middleRegion?.content?.formConfig\"\n (onFormEvent)=\"onUnifiedFormEvent($event)\"\n (buttonClick)=\"middleRegion?.buttons ? onButtonClick($event) : ''\"\n >\n </sa-message-banner-v2>\n </div>\n </ng-container>\n }\n <!-- lower message banner region -->\n @if (!!dialogData?.lowerMessageBanners) {\n <div class=\"lower-message-container\">\n @for (\n messageBanner of dialogData?.lowerMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [buttonIcon]=\"messageBanner?.buttonIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n [style]=\"messageBanner?.style || 'width:-webkit-fill-available'\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n >\n <div\n class=\"{{ messageBanner?.className }} message-content-style\"\n ></div>\n {{ messageBanner?.content }}\n </sa-message-banner>\n }\n </div>\n }\n <!-- button region -->\n @if (!!dialogData?.buttons) {\n <div class=\"button-group-container\">\n @for (button of dialogData?.buttons; track button.text) {\n <sa-button\n [text]=\"button.text\"\n [icon]=\"button.icon\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [state]=\"button.state\"\n [iconPosition]=\"button.iconPosition\"\n [buttonIconSize]=\"button.buttonIconSize\"\n (onClickEvent)=\"onButtonClick(button, $event)\"\n role=\"button\"\n [attr.aria-label]=\"button.text\"\n >\n </sa-button>\n }\n </div>\n }\n @if (!!dialogData?.buttonsWithType) {\n <div class=\"buttonWithType-group-container\">\n @for (button of dialogData?.buttonsWithType; track button.text) {\n @if (button?.type === \"checkbox\") {\n <div class=\"checkbox-container {{ button.className }}\">\n <mat-checkbox [id]=\"button.id\" (change)=\"onButtonClick(button)\" class=\"checkbox-style\">{{\n button.text\n }}</mat-checkbox>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".dialog-container{display:flex;flex-direction:column;gap:var(--medium-28px);align-items:center;position:relative;overflow-y:auto;overflow-x:hidden}.dialog-container.common-action-dialog{align-items:normal}::ng-deep .dialog-container.common-action-dialog .error-page{justify-content:flex-start}::ng-deep .dialog-container.common-action-dialog .title-description{align-items:flex-start}.dialog-container.common-action-dialog .button-group-container{justify-content:flex-end}.top-message-container,.lower-message-container{display:flex;align-items:center;flex-direction:column;gap:var(--medium-28px)}.lower-message-container{width:-webkit-fill-available}::ng-deep .lower-message-container .content{justify-content:center;align-items:center;gap:var(--small-4px)}::ng-deep .image-description-container .image-container{margin-bottom:0}::ng-deep .image-description-container .content-container{gap:var(--medium-28px)}::ng-deep .image-description-container .title-class{font-size:var(--medium-22px);font-weight:500;line-height:var(--medium-28px)}::ng-deep .image-description-container .description{color:var(--text-mediumemphasis, #6D6979);font-size:var(--small-16px);line-height:var(--medium-24px);letter-spacing:.5px}.top-message-container .message-content-style{display:flex;justify-content:center;flex:1;color:var(--text-primary, #825CEE)}.lower-message-container .message-content-style{display:flex;align-items:center}::ng-deep .image-description-container .title-description{display:flex;flex-direction:column;gap:var(--small-8px)}.button-group-container{display:flex;gap:var(--small-12px);justify-content:center}::ng-deep .checkboxButton .mdc-checkbox__background{width:var(--small-16px);height:var(--small-16px);border:1.5px solid currentColor}::ng-deep .checkboxButton .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:#757575}::ng-deep .checkboxButton .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size) - 21px) / 2)}::ng-deep .checkboxButton .mdc-form-field{display:flex;align-items:center}::ng-deep .checkboxButton .mdc-label{color:var(--text-mediumemphasis, #6D6979);text-align:center;font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.dialog-container .cross-btn{position:absolute;top:0;right:0;cursor:pointer}::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{border-color:var(--primary-500);background-color:var(--primary-500)}.image-description-container{width:100%;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: MessageBannerComponent, selector: "sa-message-banner", inputs: ["type", "actionText", "content", "bannerIcon", "bannerIconSize", "buttonIcon", "buttonType", "buttonIconPosition", "buttonSize", "buttonIconSize", "button", "onAction"], outputs: ["actionClick"] }, { kind: "component", type: MessageBannerV2Component, selector: "sa-message-banner-v2", inputs: ["messageType", "contactUrl", "spacingBetweenImageAndDescription", "contentGap", "titleClass", "descriptionClass", "banner", "formConfig", "prebuiltFormFields", "messageIcon", "messageIconSize", "title", "description", "buttons"], outputs: ["onFormEvent", "buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "sa-button", inputs: ["id", "type", "state", "size", "text", "ImagePath", "icon", "iconPosition", "href", "hrefTarget", "width", "isSubmit", "buttonIconSize", "showSpinner"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatDialogModule }] }); }
94
94
  }
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DialogComponent, decorators: [{
96
96
  type: Component,
97
- args: [{ selector: 'sa-dialog', standalone: true, imports: [MessageBannerComponent, MessageBannerV2Component, CommonModule, ButtonComponent, MatCheckboxModule, IconComponent, MatDialogModule, FormInputComponent], template: "<div class=\"dialog-container\">\n <!-- top banner region -->\n <div class=\"top-container\">\n @if (!!dialogData?.topMessageBanners) {\n <div class=\"top-message-container\">\n @for (\n messageBanner of dialogData?.topMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n [style]=\"messageBanner?.style || 'width:39.438rem'\"\n >\n <div class=\"{{ messageBanner?.className }} message-content-style\">\n {{ messageBanner?.content }}\n </div>\n </sa-message-banner>\n }\n </div>\n }\n @if (!!dialogData?.closeButton || dialogData?.showCloseButton) {\n <div class=\"cross-btn\" (click)=\"onCloseButtonClick($event)\">\n <sa-icon\n [icon]=\"dialogData?.closeButton || 'closeOutlined'\"\n class=\"d-flex\"\n size=\"20\"\n ></sa-icon>\n </div>\n }\n </div>\n <!-- middle region -->\n @if (!!dialogData?.middleRegion) {\n <ng-container *ngIf=\"dialogData?.middleRegion as middleRegion\">\n <div class=\"image-description-container {{ middleRegion?.className }}\">\n <sa-message-banner-v2\n [messageType]=\"middleRegion?.messageType || 'default'\"\n [messageIcon]=\"middleRegion?.messageIcon\"\n [messageIconSize]=\"middleRegion?.messageIconSize\"\n [title]=\"middleRegion?.title\"\n [description]=\"middleRegion?.description\"\n [buttons]=\"middleRegion?.buttons\"\n [formConfig]=\"middleRegion?.content?.formConfig\"\n (onFormEvent)=\"onUnifiedFormEvent($event)\"\n (buttonClick)=\"middleRegion?.buttons ? onButtonClick($event) : ''\"\n >\n </sa-message-banner-v2>\n </div>\n </ng-container>\n }\n <!-- lower message banner region -->\n @if (!!dialogData?.lowerMessageBanners) {\n <div class=\"lower-message-container\">\n @for (\n messageBanner of dialogData?.lowerMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [buttonIcon]=\"messageBanner?.buttonIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n [style]=\"messageBanner?.style || 'width:-webkit-fill-available'\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n >\n <div\n class=\"{{ messageBanner?.className }} message-content-style\"\n ></div>\n {{ messageBanner?.content }}\n </sa-message-banner>\n }\n </div>\n }\n <!-- button region -->\n @if (!!dialogData?.buttons) {\n <div class=\"button-group-container\">\n @for (button of dialogData?.buttons; track button.text) {\n <sa-button\n [text]=\"button.text\"\n [icon]=\"button.icon\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [state]=\"button.state\"\n [iconPosition]=\"button.iconPosition\"\n [buttonIconSize]=\"button.buttonIconSize\"\n (onClickEvent)=\"onButtonClick(button, $event)\"\n role=\"button\"\n [attr.aria-label]=\"button.text\"\n >\n </sa-button>\n }\n </div>\n }\n @if (!!dialogData?.buttonsWithType) {\n <div class=\"buttonWithType-group-container\">\n @for (button of dialogData?.buttonsWithType; track button.text) {\n @if (button?.type === \"checkbox\") {\n <div class=\"checkbox-container {{ button.className }}\">\n <mat-checkbox [id]=\"button.id\" (change)=\"onButtonClick(button)\" class=\"checkbox-style\">{{\n button.text\n }}</mat-checkbox>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".dialog-container{display:flex;flex-direction:column;gap:var(--medium-28px);align-items:center;position:relative;overflow-y:auto;overflow-x:hidden}.top-message-container,.lower-message-container{display:flex;align-items:center;flex-direction:column;gap:var(--medium-28px)}.lower-message-container{width:-webkit-fill-available}::ng-deep .lower-message-container .content{justify-content:center;align-items:center;gap:var(--small-4px)}::ng-deep .image-description-container .image-container{margin-bottom:0}::ng-deep .image-description-container .content-container{gap:var(--medium-28px)}::ng-deep .image-description-container .title-class{font-size:var(--medium-22px);font-weight:500;line-height:var(--medium-28px)}::ng-deep .image-description-container .description{color:var(--text-mediumemphasis, #6D6979);font-size:var(--small-16px);line-height:var(--medium-24px);letter-spacing:.5px}.top-message-container .message-content-style{display:flex;justify-content:center;flex:1;color:var(--text-primary, #825CEE)}.lower-message-container .message-content-style{display:flex;align-items:center}::ng-deep .image-description-container .title-description{display:flex;flex-direction:column;gap:var(--small-8px)}.dialog-container .button-group-container{display:flex;gap:var(--small-12px);justify-content:center}::ng-deep .checkboxButton .mdc-checkbox__background{width:var(--small-16px);height:var(--small-16px);border:1.5px solid currentColor}::ng-deep .checkboxButton .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:#757575}::ng-deep .checkboxButton .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size) - 21px) / 2)}::ng-deep .checkboxButton .mdc-form-field{display:flex;align-items:center}::ng-deep .checkboxButton .mdc-label{color:var(--text-mediumemphasis, #6D6979);text-align:center;font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.dialog-container .cross-btn{position:absolute;top:0;right:0;cursor:pointer}::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{border-color:var(--primary-500);background-color:var(--primary-500)}.image-description-container{width:100%;display:flex;flex-direction:column}\n"] }]
97
+ args: [{ selector: 'sa-dialog', standalone: true, imports: [MessageBannerComponent, MessageBannerV2Component, CommonModule, ButtonComponent, MatCheckboxModule, IconComponent, MatDialogModule, FormInputComponent], template: "<div class=\"dialog-container {{ dialogData?.className }}\">\n <!-- top banner region -->\n <div class=\"top-container\">\n @if (!!dialogData?.topMessageBanners) {\n <div class=\"top-message-container\">\n @for (\n messageBanner of dialogData?.topMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n [style]=\"messageBanner?.style || 'width:39.438rem'\"\n >\n <div class=\"{{ messageBanner?.className }} message-content-style\">\n {{ messageBanner?.content }}\n </div>\n </sa-message-banner>\n }\n </div>\n }\n @if(!!dialogData?.topRegionIcon){\n <div class=\"top-icon-container\">\n <sa-icon\n [icon]=\"dialogData?.topRegionIcon\"\n class=\"d-flex\"\n size=\"{{ dialogData?.topRegionIconSize }}\"\n ></sa-icon>\n </div>\n }\n @if (!!dialogData?.closeButton || dialogData?.showCloseButton) {\n <div class=\"cross-btn\" (click)=\"onCloseButtonClick($event)\">\n <sa-icon\n [icon]=\"dialogData?.closeButton || 'closeOutlined'\"\n class=\"d-flex\"\n size=\"20\"\n ></sa-icon>\n </div>\n }\n </div>\n <!-- middle region -->\n @if (!!dialogData?.middleRegion) {\n <ng-container *ngIf=\"dialogData?.middleRegion as middleRegion\">\n <div class=\"image-description-container {{ middleRegion?.className }}\">\n <sa-message-banner-v2\n [messageType]=\"middleRegion?.messageType || 'default'\"\n [messageIcon]=\"middleRegion?.messageIcon\"\n [messageIconSize]=\"middleRegion?.messageIconSize\"\n [title]=\"middleRegion?.title\"\n [description]=\"middleRegion?.description\"\n [buttons]=\"middleRegion?.buttons\"\n [formConfig]=\"middleRegion?.content?.formConfig\"\n (onFormEvent)=\"onUnifiedFormEvent($event)\"\n (buttonClick)=\"middleRegion?.buttons ? onButtonClick($event) : ''\"\n >\n </sa-message-banner-v2>\n </div>\n </ng-container>\n }\n <!-- lower message banner region -->\n @if (!!dialogData?.lowerMessageBanners) {\n <div class=\"lower-message-container\">\n @for (\n messageBanner of dialogData?.lowerMessageBanners;\n track messageBanner.content\n ) {\n <sa-message-banner\n [type]=\"messageBanner?.type\"\n [bannerIcon]=\"messageBanner?.bannerIcon\"\n [buttonIcon]=\"messageBanner?.buttonIcon\"\n [bannerIconSize]=\"messageBanner?.bannerIconSize || '24'\"\n [button]=\"messageBanner?.button\"\n [style]=\"messageBanner?.style || 'width:-webkit-fill-available'\"\n (actionClick)=\"onButtonClick(messageBanner?.button, $event)\"\n >\n <div\n class=\"{{ messageBanner?.className }} message-content-style\"\n ></div>\n {{ messageBanner?.content }}\n </sa-message-banner>\n }\n </div>\n }\n <!-- button region -->\n @if (!!dialogData?.buttons) {\n <div class=\"button-group-container\">\n @for (button of dialogData?.buttons; track button.text) {\n <sa-button\n [text]=\"button.text\"\n [icon]=\"button.icon\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [state]=\"button.state\"\n [iconPosition]=\"button.iconPosition\"\n [buttonIconSize]=\"button.buttonIconSize\"\n (onClickEvent)=\"onButtonClick(button, $event)\"\n role=\"button\"\n [attr.aria-label]=\"button.text\"\n >\n </sa-button>\n }\n </div>\n }\n @if (!!dialogData?.buttonsWithType) {\n <div class=\"buttonWithType-group-container\">\n @for (button of dialogData?.buttonsWithType; track button.text) {\n @if (button?.type === \"checkbox\") {\n <div class=\"checkbox-container {{ button.className }}\">\n <mat-checkbox [id]=\"button.id\" (change)=\"onButtonClick(button)\" class=\"checkbox-style\">{{\n button.text\n }}</mat-checkbox>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".dialog-container{display:flex;flex-direction:column;gap:var(--medium-28px);align-items:center;position:relative;overflow-y:auto;overflow-x:hidden}.dialog-container.common-action-dialog{align-items:normal}::ng-deep .dialog-container.common-action-dialog .error-page{justify-content:flex-start}::ng-deep .dialog-container.common-action-dialog .title-description{align-items:flex-start}.dialog-container.common-action-dialog .button-group-container{justify-content:flex-end}.top-message-container,.lower-message-container{display:flex;align-items:center;flex-direction:column;gap:var(--medium-28px)}.lower-message-container{width:-webkit-fill-available}::ng-deep .lower-message-container .content{justify-content:center;align-items:center;gap:var(--small-4px)}::ng-deep .image-description-container .image-container{margin-bottom:0}::ng-deep .image-description-container .content-container{gap:var(--medium-28px)}::ng-deep .image-description-container .title-class{font-size:var(--medium-22px);font-weight:500;line-height:var(--medium-28px)}::ng-deep .image-description-container .description{color:var(--text-mediumemphasis, #6D6979);font-size:var(--small-16px);line-height:var(--medium-24px);letter-spacing:.5px}.top-message-container .message-content-style{display:flex;justify-content:center;flex:1;color:var(--text-primary, #825CEE)}.lower-message-container .message-content-style{display:flex;align-items:center}::ng-deep .image-description-container .title-description{display:flex;flex-direction:column;gap:var(--small-8px)}.button-group-container{display:flex;gap:var(--small-12px);justify-content:center}::ng-deep .checkboxButton .mdc-checkbox__background{width:var(--small-16px);height:var(--small-16px);border:1.5px solid currentColor}::ng-deep .checkboxButton .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:#757575}::ng-deep .checkboxButton .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size) - 21px) / 2)}::ng-deep .checkboxButton .mdc-form-field{display:flex;align-items:center}::ng-deep .checkboxButton .mdc-label{color:var(--text-mediumemphasis, #6D6979);text-align:center;font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.dialog-container .cross-btn{position:absolute;top:0;right:0;cursor:pointer}::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:enabled:focus:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,::ng-deep .checkbox-style .mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{border-color:var(--primary-500);background-color:var(--primary-500)}.image-description-container{width:100%;display:flex;flex-direction:column}\n"] }]
98
98
  }], ctorParameters: () => [{ type: i1.MatDialogRef, decorators: [{
99
99
  type: Optional
100
100
  }] }, { type: undefined, decorators: [{
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
107
107
  }], dialogButtonClick: [{
108
108
  type: Output
109
109
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBU2pDLE1BQU0sT0FBTyxlQUFlO0lBYzFCLFlBQ3FCLFNBQXdDLEVBQ2YsSUFBUztRQURsQyxjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUNmLFNBQUksR0FBSixJQUFJLENBQUs7UUFmdkQsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFXOUIsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU0vQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFXLEVBQUUsS0FBVztRQUNwQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNmLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCx5QkFBeUIsQ0FBQyxLQUFnQztRQUN4RCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxLQUF1QjtRQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBWTtRQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNqRixLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNILDBCQUEwQjtJQUN4QixrQkFBa0IsQ0FBQyxLQUFnQztRQUNqRCxRQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLG1CQUFtQjtnQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssbUJBQW1CO2dCQUN0QiwyQ0FBMkM7Z0JBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxNQUFNO1lBQ1IsS0FBSyxxQkFBcUI7Z0JBQ3hCLG9DQUFvQztnQkFDcEMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDcEUsQ0FBQztnQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFDUjtnQkFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUNELGlCQUFpQixDQUFDLEtBQVU7UUFDMUIsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELCtEQUErRDtJQUMvRCxTQUFTO1FBQ1AsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLG9FQUFvRTtRQUNwRSw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7OEdBNUZVLGVBQWUsOERBZ0JKLGVBQWU7a0dBaEIxQixlQUFlLGdLQ25CNUIsb2xJQStHQSxvOUhEaEdZLHNCQUFzQiwyUUFBRSx3QkFBd0Isd1ZBQUUsWUFBWSxtSUFBRSxlQUFlLHVSQUFFLGlCQUFpQiw4V0FBRSxhQUFhLG9NQUFFLGVBQWU7OzJGQUlqSSxlQUFlO2tCQVAzQixTQUFTOytCQUNFLFdBQVcsY0FDVCxJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUM7OzBCQW1COUosUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlO3lDQWQ1QixVQUFVO3NCQUFsQixLQUFLO2dCQVVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9tZXNzYWdlLWJhbm5lci9tZXNzYWdlLWJhbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ2xpY2tFdmVudCwgQnV0dG9uSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9idXR0b24taW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJWMkNvbXBvbmVudCB9IGZyb20gJy4uL21lc3NhZ2UtYmFubmVyLXYyL21lc3NhZ2UtYmFubmVyLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLWRpYWxvZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNZXNzYWdlQmFubmVyQ29tcG9uZW50LCBNZXNzYWdlQmFubmVyVjJDb21wb25lbnQsIENvbW1vbk1vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBNYXRDaGVja2JveE1vZHVsZSwgSWNvbkNvbXBvbmVudCwgTWF0RGlhbG9nTW9kdWxlLCBGb3JtSW5wdXRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb21wb25lbnQge1xuICBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIEBJbnB1dCgpIGRpYWxvZ0RhdGE6IHtcbiAgICB0b3BNZXNzYWdlQmFubmVycz86IGFueVtdO1xuICAgIG1pZGRsZVJlZ2lvbj86IGFueTtcbiAgICBsb3dlck1lc3NhZ2VCYW5uZXJzPzogYW55W107XG4gICAgYnV0dG9ucz86IEJ1dHRvbkludGVyZmFjZVtdO1xuICAgIGJ1dHRvbnNXaXRoVHlwZT86IGFueVtdO1xuICAgIGNsb3NlQnV0dG9uPzogc3RyaW5nO1xuICAgIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgQE91dHB1dCgpIGRpYWxvZ0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55XG4gICkge1xuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuZGlhbG9nRGF0YSA9IHRoaXMuZGF0YTtcbiAgICB9XG4gIH1cblxuICBvbkJ1dHRvbkNsaWNrKGJ1dHRvbjogYW55LCBldmVudD86IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudD8uZXZ0KSB7XG4gICAgICBldmVudD8uZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudD8uZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoe2V2ZW50LCBidXR0b259KTtcbiAgfVxuICBvbk1pZGRsZVJlZ2lvbkJ1dHRvbkNsaWNrKGV2ZW50OiB7YnV0dG9uOiBhbnksIGRhdGE/OiBhbnl9KTogdm9pZCB7XG4gICAgLy8gUGFzcyB0aGUgZXZlbnQgdXAgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICB0aGlzLmRhdGEub25NaWRkbGVSZWdpb25CdXR0b25DbGljaz8uKGV2ZW50KTtcbiAgfVxuICBoYW5kbGVCdXR0b25DbGljayhldmVudDogQnV0dG9uQ2xpY2tFdmVudCkge1xuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7ZXZlbnR9KTtcbiAgfVxuXG4gIG9uQ2xvc2VCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ0RhdGE/Lm1pZGRsZVJlZ2lvbj8uY29udGVudD8uZm9ybUNvbmZpZz8uZmllbGRzPy5mb3JFYWNoKChpbnB1dDogYW55KSA9PiB7XG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGE/Lm1pZGRsZVJlZ2lvbj8uY29udGVudD8uZm9ybUNvbmZpZykge1xuICAgICAgdGhpcy5kaWFsb2dEYXRhLm1pZGRsZVJlZ2lvbi5jb250ZW50LmZvcm1Db25maWcuY2hpcHMgPSBbXTtcbiAgICB9ICAgIFxuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50OiBldmVudCwgdHlwZTogJ2Nsb3NlJyB9KTtcbiAgfVxuLy8gYWxsIGZvcm0gcmVsYXRlZCBldmVudHNcbiAgb25VbmlmaWVkRm9ybUV2ZW50KGV2ZW50OiB7dHlwZTogc3RyaW5nLCBkYXRhOiBhbnl9KTogdm9pZCB7XG4gICAgc3dpdGNoKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Zvcm0taW5wdXQtY2hhbmdlJzpcbiAgICAgICAgdGhpcy5vbkZvcm1JbnB1dENoYW5nZShldmVudC5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmb3JtLW1vZGVsLWNoYW5nZSc6XG4gICAgICAgIC8vIFN0b3JlIHRoZSBmb3JtIG1vZGVsIGZvciBleHRlcm5hbCBhY2Nlc3NcbiAgICAgICAgdGhpcy5mb3JtVmFsdWVzID0geyAuLi50aGlzLmZvcm1WYWx1ZXMsIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dCdXR0b25DbGljay5lbWl0KHsgZXZlbnQ6IGV2ZW50LmRhdGEsIHR5cGU6ICdmb3JtLW1vZGVsLWNoYW5nZScgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3VzdG9tLWJ1dHRvbi1jbGljayc6XG4gICAgICAgIC8vIFN0b3JlIGZvcm0gbW9kZWwgZGF0YSBpZiBwcm92aWRlZFxuICAgICAgICBpZiAoZXZlbnQuZGF0YT8uZm9ybU1vZGVsKSB7XG4gICAgICAgICAgdGhpcy5mb3JtVmFsdWVzID0geyAuLi50aGlzLmZvcm1WYWx1ZXMsIC4uLmV2ZW50LmRhdGEuZm9ybU1vZGVsIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkJ1dHRvbkNsaWNrKGV2ZW50LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NoaXAtcmVtb3ZlJzpcbiAgICAgICAgdGhpcy5vblJlbW92ZVVzZXIoZXZlbnQuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIGZvcm0gZXZlbnQgdHlwZTonLCBldmVudC50eXBlKTtcbiAgICB9XG4gIH1cbiAgb25Gb3JtSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGxldCBwcm9jZXNzZWRWYWx1ZSA9IGV2ZW50LnZhbHVlOyBcbiAgICBpZiAoaXNBcnJheShldmVudC52YWx1ZSkpIHtcbiAgICAgIHByb2Nlc3NlZFZhbHVlID0gZXZlbnQudmFsdWUubWFwKChjaGlwOiBhbnkpID0+IGNoaXAudmFsdWUgfHwgY2hpcC5sYWJlbCB8fCBjaGlwKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtVmFsdWVzW2V2ZW50LmxhYmVsXSA9IHByb2Nlc3NlZFZhbHVlO1xuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50LCB0eXBlOiAnZm9ybS1pbnB1dC1jaGFuZ2UnIH0pO1xuICB9XG5cbiAgb25SZW1vdmVVc2VyKGNoaXA6IGFueSkge1xuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50OiBjaGlwLCB0eXBlOiAnY2hpcC1yZW1vdmUnIH0pO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIHJlc2V0IHRoZSBmb3JtIHRocm91Z2ggbWVzc2FnZS1iYW5uZXItdjIgY29tcG9uZW50XG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICAvLyBFbWl0IGZvcm0gcmVzZXQgZXZlbnQgdG8gbWVzc2FnZS1iYW5uZXItdjJcbiAgICB0aGlzLmZvcm1WYWx1ZXMgPSB7fTtcbiAgICAvLyBUaGUgbWVzc2FnZS1iYW5uZXItdjIgY29tcG9uZW50IHdpbGwgaGFuZGxlIHRoZSBhY3R1YWwgZm9ybSByZXNldFxuICAgIC8vIHdoZW4gaXQgcmVjZWl2ZXMgdGhpcyBldmVudFxuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IHR5cGU6ICdmb3JtLXJlc2V0JyB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1jb250YWluZXJcIj5cbiAgPCEtLSB0b3AgYmFubmVyIHJlZ2lvbiAtLT5cbiAgPGRpdiBjbGFzcz1cInRvcC1jb250YWluZXJcIj5cbiAgICBAaWYgKCEhZGlhbG9nRGF0YT8udG9wTWVzc2FnZUJhbm5lcnMpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtbWVzc2FnZS1jb250YWluZXJcIj5cbiAgICAgICAgQGZvciAoXG4gICAgICAgICAgbWVzc2FnZUJhbm5lciBvZiBkaWFsb2dEYXRhPy50b3BNZXNzYWdlQmFubmVycztcbiAgICAgICAgICB0cmFjayBtZXNzYWdlQmFubmVyLmNvbnRlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgPHNhLW1lc3NhZ2UtYmFubmVyXG4gICAgICAgICAgICBbdHlwZV09XCJtZXNzYWdlQmFubmVyPy50eXBlXCJcbiAgICAgICAgICAgIFtiYW5uZXJJY29uXT1cIm1lc3NhZ2VCYW5uZXI/LmJhbm5lckljb25cIlxuICAgICAgICAgICAgW2Jhbm5lckljb25TaXplXT1cIm1lc3NhZ2VCYW5uZXI/LmJhbm5lckljb25TaXplIHx8ICcyNCdcIlxuICAgICAgICAgICAgW2J1dHRvbl09XCJtZXNzYWdlQmFubmVyPy5idXR0b25cIlxuICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQnV0dG9uQ2xpY2sobWVzc2FnZUJhbm5lcj8uYnV0dG9uLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJtZXNzYWdlQmFubmVyPy5zdHlsZSB8fCAnd2lkdGg6MzkuNDM4cmVtJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInt7IG1lc3NhZ2VCYW5uZXI/LmNsYXNzTmFtZSB9fSBtZXNzYWdlLWNvbnRlbnQtc3R5bGVcIj5cbiAgICAgICAgICAgICAge3sgbWVzc2FnZUJhbm5lcj8uY29udGVudCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zYS1tZXNzYWdlLWJhbm5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoISFkaWFsb2dEYXRhPy5jbG9zZUJ1dHRvbiB8fCBkaWFsb2dEYXRhPy5zaG93Q2xvc2VCdXR0b24pIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJjcm9zcy1idG5cIiAoY2xpY2spPVwib25DbG9zZUJ1dHRvbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPHNhLWljb25cbiAgICAgICAgICBbaWNvbl09XCJkaWFsb2dEYXRhPy5jbG9zZUJ1dHRvbiB8fCAnY2xvc2VPdXRsaW5lZCdcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICBzaXplPVwiMjBcIlxuICAgICAgICA+PC9zYS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgPCEtLSBtaWRkbGUgcmVnaW9uIC0tPlxuICBAaWYgKCEhZGlhbG9nRGF0YT8ubWlkZGxlUmVnaW9uKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpYWxvZ0RhdGE/Lm1pZGRsZVJlZ2lvbiBhcyBtaWRkbGVSZWdpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1kZXNjcmlwdGlvbi1jb250YWluZXIge3sgbWlkZGxlUmVnaW9uPy5jbGFzc05hbWUgfX1cIj5cbiAgICAgICAgPHNhLW1lc3NhZ2UtYmFubmVyLXYyXG4gICAgICAgIFttZXNzYWdlVHlwZV09XCJtaWRkbGVSZWdpb24/Lm1lc3NhZ2VUeXBlIHx8ICdkZWZhdWx0J1wiXG4gICAgICAgIFttZXNzYWdlSWNvbl09XCJtaWRkbGVSZWdpb24/Lm1lc3NhZ2VJY29uXCJcbiAgICAgICAgW21lc3NhZ2VJY29uU2l6ZV09XCJtaWRkbGVSZWdpb24/Lm1lc3NhZ2VJY29uU2l6ZVwiXG4gICAgICAgIFt0aXRsZV09XCJtaWRkbGVSZWdpb24/LnRpdGxlXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIm1pZGRsZVJlZ2lvbj8uZGVzY3JpcHRpb25cIlxuICAgICAgICBbYnV0dG9uc109XCJtaWRkbGVSZWdpb24/LmJ1dHRvbnNcIlxuICAgICAgICBbZm9ybUNvbmZpZ109XCJtaWRkbGVSZWdpb24/LmNvbnRlbnQ/LmZvcm1Db25maWdcIlxuICAgICAgICAob25Gb3JtRXZlbnQpPVwib25VbmlmaWVkRm9ybUV2ZW50KCRldmVudClcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwibWlkZGxlUmVnaW9uPy5idXR0b25zID8gb25CdXR0b25DbGljaygkZXZlbnQpIDogJydcIlxuICAgICAgPlxuICAgICAgPC9zYS1tZXNzYWdlLWJhbm5lci12Mj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG4gIDwhLS0gbG93ZXIgbWVzc2FnZSBiYW5uZXIgcmVnaW9uIC0tPlxuICBAaWYgKCEhZGlhbG9nRGF0YT8ubG93ZXJNZXNzYWdlQmFubmVycykge1xuICAgIDxkaXYgY2xhc3M9XCJsb3dlci1tZXNzYWdlLWNvbnRhaW5lclwiPlxuICAgICAgQGZvciAoXG4gICAgICAgIG1lc3NhZ2VCYW5uZXIgb2YgZGlhbG9nRGF0YT8ubG93ZXJNZXNzYWdlQmFubmVycztcbiAgICAgICAgdHJhY2sgbWVzc2FnZUJhbm5lci5jb250ZW50XG4gICAgICApIHtcbiAgICAgICAgPHNhLW1lc3NhZ2UtYmFubmVyXG4gICAgICAgICAgW3R5cGVdPVwibWVzc2FnZUJhbm5lcj8udHlwZVwiXG4gICAgICAgICAgW2Jhbm5lckljb25dPVwibWVzc2FnZUJhbm5lcj8uYmFubmVySWNvblwiXG4gICAgICAgICAgW2J1dHRvbkljb25dPVwibWVzc2FnZUJhbm5lcj8uYnV0dG9uSWNvblwiXG4gICAgICAgICAgW2Jhbm5lckljb25TaXplXT1cIm1lc3NhZ2VCYW5uZXI/LmJhbm5lckljb25TaXplIHx8ICcyNCdcIlxuICAgICAgICAgIFtidXR0b25dPVwibWVzc2FnZUJhbm5lcj8uYnV0dG9uXCJcbiAgICAgICAgICBbc3R5bGVdPVwibWVzc2FnZUJhbm5lcj8uc3R5bGUgfHwgJ3dpZHRoOi13ZWJraXQtZmlsbC1hdmFpbGFibGUnXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25CdXR0b25DbGljayhtZXNzYWdlQmFubmVyPy5idXR0b24sICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ7eyBtZXNzYWdlQmFubmVyPy5jbGFzc05hbWUgfX0gbWVzc2FnZS1jb250ZW50LXN0eWxlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAge3sgbWVzc2FnZUJhbm5lcj8uY29udGVudCB9fVxuICAgICAgICA8L3NhLW1lc3NhZ2UtYmFubmVyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIDwhLS0gYnV0dG9uIHJlZ2lvbiAtLT5cbiAgQGlmICghIWRpYWxvZ0RhdGE/LmJ1dHRvbnMpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwLWNvbnRhaW5lclwiPlxuICAgICAgQGZvciAoYnV0dG9uIG9mIGRpYWxvZ0RhdGE/LmJ1dHRvbnM7IHRyYWNrIGJ1dHRvbi50ZXh0KSB7XG4gICAgICAgIDxzYS1idXR0b25cbiAgICAgICAgICBbdGV4dF09XCJidXR0b24udGV4dFwiXG4gICAgICAgICAgW2ljb25dPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgIFtzaXplXT1cImJ1dHRvbi5zaXplXCJcbiAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZVwiXG4gICAgICAgICAgW3N0YXRlXT1cImJ1dHRvbi5zdGF0ZVwiXG4gICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCJidXR0b24uaWNvblBvc2l0aW9uXCJcbiAgICAgICAgICBbYnV0dG9uSWNvblNpemVdPVwiYnV0dG9uLmJ1dHRvbkljb25TaXplXCJcbiAgICAgICAgICAob25DbGlja0V2ZW50KT1cIm9uQnV0dG9uQ2xpY2soYnV0dG9uLCAkZXZlbnQpXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi50ZXh0XCJcbiAgICAgICAgPlxuICAgICAgICA8L3NhLWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKCEhZGlhbG9nRGF0YT8uYnV0dG9uc1dpdGhUeXBlKSB7XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbldpdGhUeXBlLWdyb3VwLWNvbnRhaW5lclwiPlxuICAgICAgQGZvciAoYnV0dG9uIG9mIGRpYWxvZ0RhdGE/LmJ1dHRvbnNXaXRoVHlwZTsgdHJhY2sgYnV0dG9uLnRleHQpIHtcbiAgICAgICAgQGlmIChidXR0b24/LnR5cGUgPT09IFwiY2hlY2tib3hcIikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1jb250YWluZXIge3sgYnV0dG9uLmNsYXNzTmFtZSB9fVwiPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbaWRdPVwiYnV0dG9uLmlkXCIgKGNoYW5nZSk9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbilcIiBjbGFzcz1cImNoZWNrYm94LXN0eWxlXCI+e3tcbiAgICAgICAgICAgICAgYnV0dG9uLnRleHRcbiAgICAgICAgICAgIH19PC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBU2pDLE1BQU0sT0FBTyxlQUFlO0lBaUIxQixZQUNxQixTQUF3QyxFQUNmLElBQVM7UUFEbEMsY0FBUyxHQUFULFNBQVMsQ0FBK0I7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFLO1FBbEJ2RCxlQUFVLEdBQTJCLEVBQUUsQ0FBQztRQWM5QixzQkFBaUIsR0FBRyxJ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V0FDUCxDQUFDLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQzs7MEJBc0I5SixRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBakI1QixVQUFVO3NCQUFsQixLQUFLO2dCQWFJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9tZXNzYWdlLWJhbm5lci9tZXNzYWdlLWJhbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ2xpY2tFdmVudCwgQnV0dG9uSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9idXR0b24taW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCYW5uZXJWMkNvbXBvbmVudCB9IGZyb20gJy4uL21lc3NhZ2UtYmFubmVyLXYyL21lc3NhZ2UtYmFubmVyLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLWRpYWxvZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNZXNzYWdlQmFubmVyQ29tcG9uZW50LCBNZXNzYWdlQmFubmVyVjJDb21wb25lbnQsIENvbW1vbk1vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBNYXRDaGVja2JveE1vZHVsZSwgSWNvbkNvbXBvbmVudCwgTWF0RGlhbG9nTW9kdWxlLCBGb3JtSW5wdXRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb21wb25lbnQge1xuICBmb3JtVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIEBJbnB1dCgpIGRpYWxvZ0RhdGE6IHtcbiAgICB0b3BNZXNzYWdlQmFubmVycz86IGFueVtdO1xuICAgIHRvcFJlZ2lvbkljb25TaXplPzogc3RyaW5nO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBtaWRkbGVSZWdpb24/OiBhbnk7XG4gICAgdG9wUmVnaW9uSWNvbj86IHN0cmluZztcbiAgICBsb3dlck1lc3NhZ2VCYW5uZXJzPzogYW55W107XG4gICAgYnV0dG9ucz86IEJ1dHRvbkludGVyZmFjZVtdO1xuICAgIGJ1dHRvbnNXaXRoVHlwZT86IGFueVtdO1xuICAgIGNsb3NlQnV0dG9uPzogc3RyaW5nO1xuICAgIHNob3dDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgQE91dHB1dCgpIGRpYWxvZ0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55XG4gICkge1xuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuZGlhbG9nRGF0YSA9IHRoaXMuZGF0YTtcbiAgICB9XG4gIH1cblxuICBvbkJ1dHRvbkNsaWNrKGJ1dHRvbjogYW55LCBldmVudD86IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudD8uZXZ0KSB7XG4gICAgICBldmVudD8uZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudD8uZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ0J1dHRvbkNsaWNrLmVtaXQoe2V2ZW50LCBidXR0b259KTtcbiAgfVxuICBvbk1pZGRsZVJlZ2lvbkJ1dHRvbkNsaWNrKGV2ZW50OiB7YnV0dG9uOiBhbnksIGRhdGE/OiBhbnl9KTogdm9pZCB7XG4gICAgLy8gUGFzcyB0aGUgZXZlbnQgdXAgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICB0aGlzLmRhdGEub25NaWRkbGVSZWdpb25CdXR0b25DbGljaz8uKGV2ZW50KTtcbiAgfVxuICBoYW5kbGVCdXR0b25DbGljayhldmVudDogQnV0dG9uQ2xpY2tFdmVudCkge1xuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7ZXZlbnR9KTtcbiAgfVxuXG4gIG9uQ2xvc2VCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ0RhdGE/Lm1pZGRsZVJlZ2lvbj8uY29udGVudD8uZm9ybUNvbmZpZz8uZmllbGRzPy5mb3JFYWNoKChpbnB1dDogYW55KSA9PiB7XG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGE/Lm1pZGRsZVJlZ2lvbj8uY29udGVudD8uZm9ybUNvbmZpZykge1xuICAgICAgdGhpcy5kaWFsb2dEYXRhLm1pZGRsZVJlZ2lvbi5jb250ZW50LmZvcm1Db25maWcuY2hpcHMgPSBbXTtcbiAgICB9ICAgIFxuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50OiBldmVudCwgdHlwZTogJ2Nsb3NlJyB9KTtcbiAgfVxuLy8gYWxsIGZvcm0gcmVsYXRlZCBldmVudHNcbiAgb25VbmlmaWVkRm9ybUV2ZW50KGV2ZW50OiB7dHlwZTogc3RyaW5nLCBkYXRhOiBhbnl9KTogdm9pZCB7XG4gICAgc3dpdGNoKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Zvcm0taW5wdXQtY2hhbmdlJzpcbiAgICAgICAgdGhpcy5vbkZvcm1JbnB1dENoYW5nZShldmVudC5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmb3JtLW1vZGVsLWNoYW5nZSc6XG4gICAgICAgIC8vIFN0b3JlIHRoZSBmb3JtIG1vZGVsIGZvciBleHRlcm5hbCBhY2Nlc3NcbiAgICAgICAgdGhpcy5mb3JtVmFsdWVzID0geyAuLi50aGlzLmZvcm1WYWx1ZXMsIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dCdXR0b25DbGljay5lbWl0KHsgZXZlbnQ6IGV2ZW50LmRhdGEsIHR5cGU6ICdmb3JtLW1vZGVsLWNoYW5nZScgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3VzdG9tLWJ1dHRvbi1jbGljayc6XG4gICAgICAgIC8vIFN0b3JlIGZvcm0gbW9kZWwgZGF0YSBpZiBwcm92aWRlZFxuICAgICAgICBpZiAoZXZlbnQuZGF0YT8uZm9ybU1vZGVsKSB7XG4gICAgICAgICAgdGhpcy5mb3JtVmFsdWVzID0geyAuLi50aGlzLmZvcm1WYWx1ZXMsIC4uLmV2ZW50LmRhdGEuZm9ybU1vZGVsIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkJ1dHRvbkNsaWNrKGV2ZW50LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NoaXAtcmVtb3ZlJzpcbiAgICAgICAgdGhpcy5vblJlbW92ZVVzZXIoZXZlbnQuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIGZvcm0gZXZlbnQgdHlwZTonLCBldmVudC50eXBlKTtcbiAgICB9XG4gIH1cbiAgb25Gb3JtSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGxldCBwcm9jZXNzZWRWYWx1ZSA9IGV2ZW50LnZhbHVlOyBcbiAgICBpZiAoaXNBcnJheShldmVudC52YWx1ZSkpIHtcbiAgICAgIHByb2Nlc3NlZFZhbHVlID0gZXZlbnQudmFsdWUubWFwKChjaGlwOiBhbnkpID0+IGNoaXAudmFsdWUgfHwgY2hpcC5sYWJlbCB8fCBjaGlwKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtVmFsdWVzW2V2ZW50LmxhYmVsXSA9IHByb2Nlc3NlZFZhbHVlO1xuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50LCB0eXBlOiAnZm9ybS1pbnB1dC1jaGFuZ2UnIH0pO1xuICB9XG5cbiAgb25SZW1vdmVVc2VyKGNoaXA6IGFueSkge1xuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IGV2ZW50OiBjaGlwLCB0eXBlOiAnY2hpcC1yZW1vdmUnIH0pO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIHJlc2V0IHRoZSBmb3JtIHRocm91Z2ggbWVzc2FnZS1iYW5uZXItdjIgY29tcG9uZW50XG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICAvLyBFbWl0IGZvcm0gcmVzZXQgZXZlbnQgdG8gbWVzc2FnZS1iYW5uZXItdjJcbiAgICB0aGlzLmZvcm1WYWx1ZXMgPSB7fTtcbiAgICAvLyBUaGUgbWVzc2FnZS1iYW5uZXItdjIgY29tcG9uZW50IHdpbGwgaGFuZGxlIHRoZSBhY3R1YWwgZm9ybSByZXNldFxuICAgIC8vIHdoZW4gaXQgcmVjZWl2ZXMgdGhpcyBldmVudFxuICAgIHRoaXMuZGlhbG9nQnV0dG9uQ2xpY2suZW1pdCh7IHR5cGU6ICdmb3JtLXJlc2V0JyB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1jb250YWluZXIge3sgZGlhbG9nRGF0YT8uY2xhc3NOYW1lIH19XCI+XG4gIDwhLS0gdG9wIGJhbm5lciByZWdpb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJ0b3AtY29udGFpbmVyXCI+XG4gICAgQGlmICghIWRpYWxvZ0RhdGE/LnRvcE1lc3NhZ2VCYW5uZXJzKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidG9wLW1lc3NhZ2UtY29udGFpbmVyXCI+XG4gICAgICAgIEBmb3IgKFxuICAgICAgICAgIG1lc3NhZ2VCYW5uZXIgb2YgZGlhbG9nRGF0YT8udG9wTWVzc2FnZUJhbm5lcnM7XG4gICAgICAgICAgdHJhY2sgbWVzc2FnZUJhbm5lci5jb250ZW50XG4gICAgICAgICkge1xuICAgICAgICAgIDxzYS1tZXNzYWdlLWJhbm5lclxuICAgICAgICAgICAgW3R5cGVdPVwibWVzc2FnZUJhbm5lcj8udHlwZVwiXG4gICAgICAgICAgICBbYmFubmVySWNvbl09XCJtZXNzYWdlQmFubmVyPy5iYW5uZXJJY29uXCJcbiAgICAgICAgICAgIFtiYW5uZXJJY29uU2l6ZV09XCJtZXNzYWdlQmFubmVyPy5iYW5uZXJJY29uU2l6ZSB8fCAnMjQnXCJcbiAgICAgICAgICAgIFtidXR0b25dPVwibWVzc2FnZUJhbm5lcj8uYnV0dG9uXCJcbiAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkJ1dHRvbkNsaWNrKG1lc3NhZ2VCYW5uZXI/LmJ1dHRvbiwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbc3R5bGVdPVwibWVzc2FnZUJhbm5lcj8uc3R5bGUgfHwgJ3dpZHRoOjM5LjQzOHJlbSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBtZXNzYWdlQmFubmVyPy5jbGFzc05hbWUgfX0gbWVzc2FnZS1jb250ZW50LXN0eWxlXCI+XG4gICAgICAgICAgICAgIHt7IG1lc3NhZ2VCYW5uZXI/LmNvbnRlbnQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2EtbWVzc2FnZS1iYW5uZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYoISFkaWFsb2dEYXRhPy50b3BSZWdpb25JY29uKXtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtaWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgPHNhLWljb25cbiAgICAgICAgICBbaWNvbl09XCJkaWFsb2dEYXRhPy50b3BSZWdpb25JY29uXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgc2l6ZT1cInt7IGRpYWxvZ0RhdGE/LnRvcFJlZ2lvbkljb25TaXplIH19XCJcbiAgICAgICAgPjwvc2EtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKCEhZGlhbG9nRGF0YT8uY2xvc2VCdXR0b24gfHwgZGlhbG9nRGF0YT8uc2hvd0Nsb3NlQnV0dG9uKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY3Jvc3MtYnRuXCIgKGNsaWNrKT1cIm9uQ2xvc2VCdXR0b25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxzYS1pY29uXG4gICAgICAgICAgW2ljb25dPVwiZGlhbG9nRGF0YT8uY2xvc2VCdXR0b24gfHwgJ2Nsb3NlT3V0bGluZWQnXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgPjwvc2EtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDwhLS0gbWlkZGxlIHJlZ2lvbiAtLT5cbiAgQGlmICghIWRpYWxvZ0RhdGE/Lm1pZGRsZVJlZ2lvbikge1xuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaWFsb2dEYXRhPy5taWRkbGVSZWdpb24gYXMgbWlkZGxlUmVnaW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtZGVzY3JpcHRpb24tY29udGFpbmVyIHt7IG1pZGRsZVJlZ2lvbj8uY2xhc3NOYW1lIH19XCI+XG4gICAgICAgIDxzYS1tZXNzYWdlLWJhbm5lci12MlxuICAgICAgICBbbWVzc2FnZVR5cGVdPVwibWlkZGxlUmVnaW9uPy5tZXNzYWdlVHlwZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICBbbWVzc2FnZUljb25dPVwibWlkZGxlUmVnaW9uPy5tZXNzYWdlSWNvblwiXG4gICAgICAgIFttZXNzYWdlSWNvblNpemVdPVwibWlkZGxlUmVnaW9uPy5tZXNzYWdlSWNvblNpemVcIlxuICAgICAgICBbdGl0bGVdPVwibWlkZGxlUmVnaW9uPy50aXRsZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJtaWRkbGVSZWdpb24/LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgW2J1dHRvbnNdPVwibWlkZGxlUmVnaW9uPy5idXR0b25zXCJcbiAgICAgICAgW2Zvcm1Db25maWddPVwibWlkZGxlUmVnaW9uPy5jb250ZW50Py5mb3JtQ29uZmlnXCJcbiAgICAgICAgKG9uRm9ybUV2ZW50KT1cIm9uVW5pZmllZEZvcm1FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm1pZGRsZVJlZ2lvbj8uYnV0dG9ucyA/IG9uQnV0dG9uQ2xpY2soJGV2ZW50KSA6ICcnXCJcbiAgICAgID5cbiAgICAgIDwvc2EtbWVzc2FnZS1iYW5uZXItdjI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxuICA8IS0tIGxvd2VyIG1lc3NhZ2UgYmFubmVyIHJlZ2lvbiAtLT5cbiAgQGlmICghIWRpYWxvZ0RhdGE/Lmxvd2VyTWVzc2FnZUJhbm5lcnMpIHtcbiAgICA8ZGl2IGNsYXNzPVwibG93ZXItbWVzc2FnZS1jb250YWluZXJcIj5cbiAgICAgIEBmb3IgKFxuICAgICAgICBtZXNzYWdlQmFubmVyIG9mIGRpYWxvZ0RhdGE/Lmxvd2VyTWVzc2FnZUJhbm5lcnM7XG4gICAgICAgIHRyYWNrIG1lc3NhZ2VCYW5uZXIuY29udGVudFxuICAgICAgKSB7XG4gICAgICAgIDxzYS1tZXNzYWdlLWJhbm5lclxuICAgICAgICAgIFt0eXBlXT1cIm1lc3NhZ2VCYW5uZXI/LnR5cGVcIlxuICAgICAgICAgIFtiYW5uZXJJY29uXT1cIm1lc3NhZ2VCYW5uZXI/LmJhbm5lckljb25cIlxuICAgICAgICAgIFtidXR0b25JY29uXT1cIm1lc3NhZ2VCYW5uZXI/LmJ1dHRvbkljb25cIlxuICAgICAgICAgIFtiYW5uZXJJY29uU2l6ZV09XCJtZXNzYWdlQmFubmVyPy5iYW5uZXJJY29uU2l6ZSB8fCAnMjQnXCJcbiAgICAgICAgICBbYnV0dG9uXT1cIm1lc3NhZ2VCYW5uZXI/LmJ1dHRvblwiXG4gICAgICAgICAgW3N0eWxlXT1cIm1lc3NhZ2VCYW5uZXI/LnN0eWxlIHx8ICd3aWR0aDotd2Via2l0LWZpbGwtYXZhaWxhYmxlJ1wiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQnV0dG9uQ2xpY2sobWVzc2FnZUJhbm5lcj8uYnV0dG9uLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwie3sgbWVzc2FnZUJhbm5lcj8uY2xhc3NOYW1lIH19IG1lc3NhZ2UtY29udGVudC1zdHlsZVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIHt7IG1lc3NhZ2VCYW5uZXI/LmNvbnRlbnQgfX1cbiAgICAgICAgPC9zYS1tZXNzYWdlLWJhbm5lcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICA8IS0tIGJ1dHRvbiByZWdpb24gLS0+XG4gIEBpZiAoISFkaWFsb2dEYXRhPy5idXR0b25zKSB7XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cC1jb250YWluZXJcIj5cbiAgICAgIEBmb3IgKGJ1dHRvbiBvZiBkaWFsb2dEYXRhPy5idXR0b25zOyB0cmFjayBidXR0b24udGV4dCkge1xuICAgICAgICA8c2EtYnV0dG9uXG4gICAgICAgICAgW3RleHRdPVwiYnV0dG9uLnRleHRcIlxuICAgICAgICAgIFtpY29uXT1cImJ1dHRvbi5pY29uXCJcbiAgICAgICAgICBbc2l6ZV09XCJidXR0b24uc2l6ZVwiXG4gICAgICAgICAgW3R5cGVdPVwiYnV0dG9uLnR5cGVcIlxuICAgICAgICAgIFtzdGF0ZV09XCJidXR0b24uc3RhdGVcIlxuICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiYnV0dG9uLmljb25Qb3NpdGlvblwiXG4gICAgICAgICAgW2J1dHRvbkljb25TaXplXT1cImJ1dHRvbi5idXR0b25JY29uU2l6ZVwiXG4gICAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbiwgJGV2ZW50KVwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24udGV4dFwiXG4gICAgICAgID5cbiAgICAgICAgPC9zYS1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmICghIWRpYWxvZ0RhdGE/LmJ1dHRvbnNXaXRoVHlwZSkge1xuICAgIDxkaXYgY2xhc3M9XCJidXR0b25XaXRoVHlwZS1ncm91cC1jb250YWluZXJcIj5cbiAgICAgIEBmb3IgKGJ1dHRvbiBvZiBkaWFsb2dEYXRhPy5idXR0b25zV2l0aFR5cGU7IHRyYWNrIGJ1dHRvbi50ZXh0KSB7XG4gICAgICAgIEBpZiAoYnV0dG9uPy50eXBlID09PSBcImNoZWNrYm94XCIpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyIHt7IGJ1dHRvbi5jbGFzc05hbWUgfX1cIj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2lkXT1cImJ1dHRvbi5pZFwiIChjaGFuZ2UpPVwib25CdXR0b25DbGljayhidXR0b24pXCIgY2xhc3M9XCJjaGVja2JveC1zdHlsZVwiPnt7XG4gICAgICAgICAgICAgIGJ1dHRvbi50ZXh0XG4gICAgICAgICAgICB9fTwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19