ecabs-components 1.0.69 → 1.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/base/directives/date-mask.directive.mjs +22 -6
- package/esm2022/lib/base/models/select.models.mjs +2 -0
- package/esm2022/lib/base/services/ecabs-components.service.mjs +1 -1
- package/esm2022/lib/base/utils/object-utils.mjs +27 -0
- package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.mjs +2 -2
- package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.mjs +16 -15
- package/esm2022/lib/ecabs-increment/ecabs-increment.component.mjs +2 -2
- package/esm2022/lib/ecabs-menu-items/ecabs-menu-items.component.mjs +3 -3
- package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.component.mjs +2 -2
- package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.mjs +1 -1
- package/esm2022/lib/ecabs-select/ecabs-select.component.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ecabs-components.mjs +99 -57
- package/fesm2022/ecabs-components.mjs.map +1 -1
- package/lib/base/directives/date-mask.directive.d.ts +3 -0
- package/lib/base/models/select.models.d.ts +5 -0
- package/lib/base/utils/object-utils.d.ts +6 -0
- package/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.d.ts +8 -7
- package/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.d.ts +2 -5
- package/lib/ecabs-select/ecabs-select.component.d.ts +2 -4
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/assets/styles/material/overrides/_dialog.scss +4 -0
- package/src/assets/styles/tailwind/index.scss +1 -1
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
import { Component, Inject, } from '@angular/core';
|
|
2
2
|
import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, } from '@angular/material/legacy-dialog';
|
|
3
|
-
import {
|
|
3
|
+
import { takeUntil } from 'rxjs';
|
|
4
|
+
import { UnsubscribeService } from '../base/services/unsubscribe.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/material/legacy-dialog";
|
|
6
|
-
import * as i2 from "
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "
|
|
7
|
+
import * as i2 from "../base/services/unsubscribe.service";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "../ecabs-buttons/ecabs-buttons.component";
|
|
10
|
+
import * as i5 from "@angular/material/icon";
|
|
9
11
|
export class EcabsDialogConfirmComponent {
|
|
10
12
|
dialogRef;
|
|
11
13
|
data;
|
|
12
|
-
|
|
14
|
+
unsubscribeService;
|
|
13
15
|
message;
|
|
14
16
|
color = 'primary';
|
|
15
|
-
|
|
16
|
-
constructor(dialogRef, data) {
|
|
17
|
+
constructor(dialogRef, data, unsubscribeService) {
|
|
17
18
|
this.dialogRef = dialogRef;
|
|
18
19
|
this.data = data;
|
|
20
|
+
this.unsubscribeService = unsubscribeService;
|
|
19
21
|
}
|
|
20
22
|
ngOnInit() {
|
|
21
23
|
this.dialogRef.updateSize(this.data.width || '24rem');
|
|
22
24
|
}
|
|
23
25
|
ngOnDestroy() {
|
|
24
|
-
this.destroy
|
|
25
|
-
this.destroy$.complete();
|
|
26
|
+
this.unsubscribeService.destroy();
|
|
26
27
|
}
|
|
27
28
|
closeDialog() {
|
|
28
29
|
if (this.data.loading$) {
|
|
29
30
|
this.data.loading$
|
|
30
|
-
?.pipe(takeUntil(this.
|
|
31
|
+
?.pipe(takeUntil(this.unsubscribeService.subscription()))
|
|
31
32
|
.subscribe((loading) => {
|
|
32
33
|
if (!loading) {
|
|
33
34
|
this.dialogRef.close(true);
|
|
@@ -38,14 +39,14 @@ export class EcabsDialogConfirmComponent {
|
|
|
38
39
|
this.dialogRef.close(true);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDialogConfirmComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
42
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDialogConfirmComponent, selector: "ecabs-dialog-confirm", ngImport: i0, template: "<div matDialogTitle *ngIf=\"data?.title || !!data?.isPopover\" class=\"flex flex-column\">\r\n <div *ngIf=\"!!data?.isPopover\" class=\"w-full flex justify-end\">\r\n <mat-icon\r\n
|
|
42
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDialogConfirmComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.UnsubscribeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDialogConfirmComponent, selector: "ecabs-dialog-confirm", providers: [UnsubscribeService], ngImport: i0, template: "<div matDialogTitle *ngIf=\"data?.title || !!data?.isPopover\" class=\"flex flex-column\">\r\n <div *ngIf=\"!!data?.isPopover\" class=\"w-full flex justify-end\">\r\n <mat-icon (click)=\"dialogRef.close(true)\"\r\n (keydown.enter)=\"dialogRef.close(true)\"\r\n class=\"mat-icon material-icons-outlined float-right icon--close mb-2\">\r\n close\r\n </mat-icon>\r\n </div>\r\n\r\n <div class=\"font-semibold heading--xs modal-title {{ data.titleColor }}\" *ngIf=\"data.title\">\r\n {{ data.title }}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content>\r\n <div *ngIf=\"data?.content\">{{ data?.content }}</div>\r\n <ng-container *ngTemplateOutlet=\"data?.message\"></ng-container>\r\n</div>\r\n\r\n<div class=\"pb-6\" *ngIf=\"!!data?.cancelLabel || !!data?.confirmLabel\">\r\n <div mat-dialog-actions class=\"btn__group flex justify-end w-full\" *ngIf=\"!data?.isPopover\">\r\n <ecabs-buttons (click)=\"dialogRef.close(false)\" (keydown.enter)=\"dialogRef.close(false)\" [stroked]=\"true\">\r\n {{ data?.cancelLabel }}\r\n </ecabs-buttons>\r\n\r\n <ecabs-buttons [color]=\"data?.color || color\"\r\n [loading]=\"data?.loading$ | async\"\r\n (click)=\"closeDialog()\"\r\n [disabled]=\"(data?.disableConfirm$ | async) !== true\"\r\n (keydown.enter)=\"closeDialog()\">\r\n {{ data?.confirmLabel }}\r\n </ecabs-buttons>\r\n </div>\r\n</div>\r\n", styles: [":host .mat-mdc-dialog-title .mat-icon.icon--close,:host ::ng-deep .mat-mdc-dialog-title .mat-icon.icon--close{width:20px;height:20px;line-height:20px;font-size:20px}:host app-buttons,:host ::ng-deep app-buttons{width:calc(50% - .5rem)}:host button,:host ::ng-deep button{width:100%}.modal-title.warn{color:var(--color-error)!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatLegacyDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatLegacyDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i4.ButtonsComponent, selector: "ecabs-buttons", inputs: ["label", "disabled", "loading", "size", "type", "raised", "stroked", "full", "color"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
|
|
43
44
|
}
|
|
44
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDialogConfirmComponent, decorators: [{
|
|
45
46
|
type: Component,
|
|
46
|
-
args: [{ selector: 'ecabs-dialog-confirm', template: "<div matDialogTitle *ngIf=\"data?.title || !!data?.isPopover\" class=\"flex flex-column\">\r\n <div *ngIf=\"!!data?.isPopover\" class=\"w-full flex justify-end\">\r\n <mat-icon\r\n
|
|
47
|
+
args: [{ selector: 'ecabs-dialog-confirm', providers: [UnsubscribeService], template: "<div matDialogTitle *ngIf=\"data?.title || !!data?.isPopover\" class=\"flex flex-column\">\r\n <div *ngIf=\"!!data?.isPopover\" class=\"w-full flex justify-end\">\r\n <mat-icon (click)=\"dialogRef.close(true)\"\r\n (keydown.enter)=\"dialogRef.close(true)\"\r\n class=\"mat-icon material-icons-outlined float-right icon--close mb-2\">\r\n close\r\n </mat-icon>\r\n </div>\r\n\r\n <div class=\"font-semibold heading--xs modal-title {{ data.titleColor }}\" *ngIf=\"data.title\">\r\n {{ data.title }}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content>\r\n <div *ngIf=\"data?.content\">{{ data?.content }}</div>\r\n <ng-container *ngTemplateOutlet=\"data?.message\"></ng-container>\r\n</div>\r\n\r\n<div class=\"pb-6\" *ngIf=\"!!data?.cancelLabel || !!data?.confirmLabel\">\r\n <div mat-dialog-actions class=\"btn__group flex justify-end w-full\" *ngIf=\"!data?.isPopover\">\r\n <ecabs-buttons (click)=\"dialogRef.close(false)\" (keydown.enter)=\"dialogRef.close(false)\" [stroked]=\"true\">\r\n {{ data?.cancelLabel }}\r\n </ecabs-buttons>\r\n\r\n <ecabs-buttons [color]=\"data?.color || color\"\r\n [loading]=\"data?.loading$ | async\"\r\n (click)=\"closeDialog()\"\r\n [disabled]=\"(data?.disableConfirm$ | async) !== true\"\r\n (keydown.enter)=\"closeDialog()\">\r\n {{ data?.confirmLabel }}\r\n </ecabs-buttons>\r\n </div>\r\n</div>\r\n", styles: [":host .mat-mdc-dialog-title .mat-icon.icon--close,:host ::ng-deep .mat-mdc-dialog-title .mat-icon.icon--close{width:20px;height:20px;line-height:20px;font-size:20px}:host app-buttons,:host ::ng-deep app-buttons{width:calc(50% - .5rem)}:host button,:host ::ng-deep button{width:100%}.modal-title.warn{color:var(--color-error)!important}\n"] }]
|
|
47
48
|
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
48
49
|
type: Inject,
|
|
49
50
|
args: [MAT_DIALOG_DATA]
|
|
50
|
-
}] }]; } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
}] }, { type: i2.UnsubscribeService }]; } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLWRpYWxvZy1jb25maXJtL2VjYWJzLWRpYWxvZy1jb25maXJtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kaWFsb2ctY29uZmlybS9lY2Ficy1kaWFsb2ctY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sR0FJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsc0JBQXNCLElBQUksZUFBZSxHQUUxQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFRMUUsTUFBTSxPQUFPLDJCQUEyQjtJQUs3QjtJQUN5QjtJQUNmO0lBTm5CLE9BQU8sQ0FBUztJQUNoQixLQUFLLEdBQWlCLFNBQVMsQ0FBQztJQUVoQyxZQUNTLFNBQTBELEVBQ2pDLElBQXVDLEVBQ3RELGtCQUFzQztRQUZoRCxjQUFTLEdBQVQsU0FBUyxDQUFpRDtRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFtQztRQUN0RCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQ3RELENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDaEIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2lCQUN4RCxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDWixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDNUI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7d0dBOUJVLDJCQUEyQixvREFNNUIsZUFBZTs0RkFOZCwyQkFBMkIsK0NBRjNCLENBQUMsa0JBQWtCLENBQUMsMEJDbkJqQywwOENBa0NBOzs0RkRiYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCLENBQUMsa0JBQWtCLENBQUM7OzBCQVE1QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSxcclxuICBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xyXG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVuc3Vic2NyaWJlU2VydmljZSB9IGZyb20gJy4uL2Jhc2Uvc2VydmljZXMvdW5zdWJzY3JpYmUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjYWJzLWRpYWxvZy1jb25maXJtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLWRpYWxvZy1jb25maXJtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVW5zdWJzY3JpYmVTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVjYWJzRGlhbG9nQ29uZmlybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RWNhYnNEaWFsb2dDb25maXJtQ29tcG9uZW50Q29uZmlnPixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRWNhYnNEaWFsb2dDb25maXJtQ29tcG9uZW50Q29uZmlnLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZVNlcnZpY2U6IFVuc3Vic2NyaWJlU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYudXBkYXRlU2l6ZSh0aGlzLmRhdGEud2lkdGggfHwgJzI0cmVtJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmVTZXJ2aWNlLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIGNsb3NlRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5sb2FkaW5nJCkge1xyXG4gICAgICB0aGlzLmRhdGEubG9hZGluZyRcclxuICAgICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVTZXJ2aWNlLnN1YnNjcmlwdGlvbigpKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChsb2FkaW5nKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWxvYWRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWNhYnNEaWFsb2dDb25maXJtQ29tcG9uZW50Q29uZmlnIHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBtZXNzYWdlOiBUZW1wbGF0ZVJlZjxOb25OdWxsYWJsZTx1bmtub3duPj47XHJcbiAgY29sb3I/OiBUaGVtZVBhbGV0dGU7XHJcbiAgdGl0bGVDb2xvcj86IFRoZW1lUGFsZXR0ZTtcclxuICBjb25maXJtTGFiZWw/OiBzdHJpbmc7XHJcbiAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XHJcbiAgaXNQb3BvdmVyPzogYm9vbGVhbjtcclxuICB3aWR0aD86IHN0cmluZztcclxuICBjb250ZW50Pzogc3RyaW5nO1xyXG4gIGxvYWRpbmckPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBkaXNhYmxlQ29uZmlybSQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG59XHJcbiIsIjxkaXYgbWF0RGlhbG9nVGl0bGUgKm5nSWY9XCJkYXRhPy50aXRsZSB8fCAhIWRhdGE/LmlzUG9wb3ZlclwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gIDxkaXYgKm5nSWY9XCIhIWRhdGE/LmlzUG9wb3ZlclwiIGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1lbmRcIj5cclxuICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKHRydWUpXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJkaWFsb2dSZWYuY2xvc2UodHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0LWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgZmxvYXQtcmlnaHQgaWNvbi0tY2xvc2UgbWItMlwiPlxyXG4gICAgICBjbG9zZVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgaGVhZGluZy0teHMgbW9kYWwtdGl0bGUge3sgZGF0YS50aXRsZUNvbG9yIH19XCIgKm5nSWY9XCJkYXRhLnRpdGxlXCI+XHJcbiAgICB7eyBkYXRhLnRpdGxlIH19XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGRpdiAqbmdJZj1cImRhdGE/LmNvbnRlbnRcIj57eyBkYXRhPy5jb250ZW50IH19PC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGE/Lm1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicGItNlwiICpuZ0lmPVwiISFkYXRhPy5jYW5jZWxMYWJlbCB8fCAhIWRhdGE/LmNvbmZpcm1MYWJlbFwiPlxyXG4gIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiYnRuX19ncm91cCBmbGV4IGp1c3RpZnktZW5kIHctZnVsbFwiICpuZ0lmPVwiIWRhdGE/LmlzUG9wb3ZlclwiPlxyXG4gICAgPGVjYWJzLWJ1dHRvbnMgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZShmYWxzZSlcIiAoa2V5ZG93bi5lbnRlcik9XCJkaWFsb2dSZWYuY2xvc2UoZmFsc2UpXCIgW3N0cm9rZWRdPVwidHJ1ZVwiPlxyXG4gICAgICB7eyBkYXRhPy5jYW5jZWxMYWJlbCB9fVxyXG4gICAgPC9lY2Ficy1idXR0b25zPlxyXG5cclxuICAgIDxlY2Ficy1idXR0b25zIFtjb2xvcl09XCJkYXRhPy5jb2xvciB8fCBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJkYXRhPy5sb2FkaW5nJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoZGF0YT8uZGlzYWJsZUNvbmZpcm0kIHwgYXN5bmMpICE9PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNsb3NlRGlhbG9nKClcIj5cclxuICAgICAge3sgZGF0YT8uY29uZmlybUxhYmVsIH19XHJcbiAgICA8L2VjYWJzLWJ1dHRvbnM+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|