ngx-sp-infra 0.1.21 → 0.1.23
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/message/confirm-modal/confirm-modal.component.mjs +13 -3
- package/esm2022/lib/widgets/svg-storage/svg-storage.component.mjs +3 -3
- package/fesm2022/ngx-sp-infra.mjs +14 -4
- package/fesm2022/ngx-sp-infra.mjs.map +1 -1
- package/lib/message/confirm-modal/confirm-modal.component.d.ts +4 -1
- package/lib/widgets/svg-storage/svg-storage.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,11 @@ export class ConfirmModalComponent {
|
|
|
7
7
|
// #region PRIVATE
|
|
8
8
|
this._closingModal = new EventEmitter();
|
|
9
9
|
this.genreAndPluralitySubject = 'masc singular';
|
|
10
|
+
// Estas variáveis abaixo servem para deixar o mais genérico possível o modal de confirmalçao
|
|
10
11
|
this.customMessage = '';
|
|
12
|
+
this.customTitle = '';
|
|
13
|
+
this.customButton = '';
|
|
14
|
+
this.customButtonLoading = '';
|
|
11
15
|
this.importantMessage = false;
|
|
12
16
|
this.showSpinner = false;
|
|
13
17
|
}
|
|
@@ -41,11 +45,11 @@ export class ConfirmModalComponent {
|
|
|
41
45
|
this._closingModal.emit(isExecuteAction);
|
|
42
46
|
}
|
|
43
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ConfirmModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ConfirmModalComponent, selector: "app-confirm-modal", inputs: { modalSubject: "modalSubject", modalType: "modalType", genreAndPluralitySubject: "genreAndPluralitySubject", customMessage: "customMessage", importantMessage: "importantMessage" }, outputs: { _closingModal: "_closingModal" }, ngImport: i0, template: "<div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left\"> {{ modalType
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ConfirmModalComponent, selector: "app-confirm-modal", inputs: { modalSubject: "modalSubject", modalType: "modalType", genreAndPluralitySubject: "genreAndPluralitySubject", customMessage: "customMessage", customTitle: "customTitle", customButton: "customButton", customButtonLoading: "customButtonLoading", importantMessage: "importantMessage" }, outputs: { _closingModal: "_closingModal" }, ngImport: i0, template: "<div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left\"> {{ customTitle === '' ? [modalType + ' ' + modalSubject] : customTitle }} </h4>\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\n (click)=\"closeModal()\"></button>\n</div>\n<div class=\"modal-body\">\n <div class=\"modal-message\" [class.text-danger.fw-bold]=\"importantMessage\">\n <span *ngIf=\"customMessage === ''; else showCustomMessage\"> Tem certeza que voc\u00EA quer {{ firstLetterIsLowercase(modalType) }}\n <span [ngSwitch]=\"genreAndPluralitySubject\">\n <span *ngSwitchCase=\"'masc singular'\"> este </span>\n <span *ngSwitchCase=\"'masc plural'\"> estes </span>\n <span *ngSwitchCase=\"'fem singular'\"> esta </span>\n <span *ngSwitchCase=\"'fem plural'\"> estas </span>\n </span>\n {{ firstLetterIsLowercase(modalSubject) }}?\n </span>\n\n <ng-template #showCustomMessage>\n <span> {{ customMessage }} </span>\n </ng-template>\n\n <span *ngIf=\"modalType == 'Excluir'\" class=\"text-danger fw-bold\"> (esta a\u00E7\u00E3o \u00E9 irrevers\u00EDvel) </span>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-outline-primary modal-button\"\n (click)=\"closeModal()\"> Cancelar </button>\n\n <button *ngIf=\"!showSpinner; else loadingButton\" type=\"button\" class=\"btn btn-primary modal-button\"\n (click)=\"showSpinner = true; closeModal(true)\"> {{ customButton === '' ? modalType : customButton }} </button>\n\n <ng-template #loadingButton>\n <button class=\"btn btn-primary modal-button\" type=\"button\" disabled>\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n <span> {{ customButtonLoading === '' ? [modalType == 'Excluir' ? 'Excluindo...' : [modalType == 'Ativar' ? 'Ativando...' : 'Inativando...']] : customButtonLoading }} </span>\n </button>\n </ng-template>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] }); }
|
|
45
49
|
}
|
|
46
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ConfirmModalComponent, decorators: [{
|
|
47
51
|
type: Component,
|
|
48
|
-
args: [{ selector: 'app-confirm-modal', template: "<div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left\"> {{ modalType
|
|
52
|
+
args: [{ selector: 'app-confirm-modal', template: "<div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left\"> {{ customTitle === '' ? [modalType + ' ' + modalSubject] : customTitle }} </h4>\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\n (click)=\"closeModal()\"></button>\n</div>\n<div class=\"modal-body\">\n <div class=\"modal-message\" [class.text-danger.fw-bold]=\"importantMessage\">\n <span *ngIf=\"customMessage === ''; else showCustomMessage\"> Tem certeza que voc\u00EA quer {{ firstLetterIsLowercase(modalType) }}\n <span [ngSwitch]=\"genreAndPluralitySubject\">\n <span *ngSwitchCase=\"'masc singular'\"> este </span>\n <span *ngSwitchCase=\"'masc plural'\"> estes </span>\n <span *ngSwitchCase=\"'fem singular'\"> esta </span>\n <span *ngSwitchCase=\"'fem plural'\"> estas </span>\n </span>\n {{ firstLetterIsLowercase(modalSubject) }}?\n </span>\n\n <ng-template #showCustomMessage>\n <span> {{ customMessage }} </span>\n </ng-template>\n\n <span *ngIf=\"modalType == 'Excluir'\" class=\"text-danger fw-bold\"> (esta a\u00E7\u00E3o \u00E9 irrevers\u00EDvel) </span>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-outline-primary modal-button\"\n (click)=\"closeModal()\"> Cancelar </button>\n\n <button *ngIf=\"!showSpinner; else loadingButton\" type=\"button\" class=\"btn btn-primary modal-button\"\n (click)=\"showSpinner = true; closeModal(true)\"> {{ customButton === '' ? modalType : customButton }} </button>\n\n <ng-template #loadingButton>\n <button class=\"btn btn-primary modal-button\" type=\"button\" disabled>\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n <span> {{ customButtonLoading === '' ? [modalType == 'Excluir' ? 'Excluindo...' : [modalType == 'Ativar' ? 'Ativando...' : 'Inativando...']] : customButtonLoading }} </span>\n </button>\n </ng-template>\n\n</div>\n" }]
|
|
49
53
|
}], ctorParameters: function () { return []; }, propDecorators: { _closingModal: [{
|
|
50
54
|
type: Output
|
|
51
55
|
}], modalSubject: [{
|
|
@@ -56,7 +60,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
|
|
|
56
60
|
type: Input
|
|
57
61
|
}], customMessage: [{
|
|
58
62
|
type: Input
|
|
63
|
+
}], customTitle: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], customButton: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], customButtonLoading: [{
|
|
68
|
+
type: Input
|
|
59
69
|
}], importantMessage: [{
|
|
60
70
|
type: Input
|
|
61
71
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9tZXNzYWdlL2NvbmZpcm0tbW9kYWwvY29uZmlybS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9tZXNzYWdlL2NvbmZpcm0tbW9kYWwvY29uZmlybS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPL0UsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQztRQUdBLDZDQUE2QztRQUU3QyxrQkFBa0I7UUFDRCxrQkFBYSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBTXBFLDZCQUF3QixHQUNOLGVBQWUsQ0FBQztRQUVsRCw2RkFBNkY7UUFDN0Usa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBRWpDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUUzQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQXZCcEIsQ0FBQztJQXdCakIsb0JBQW9CO0lBRXBCLGdEQUFnRDtJQUdoRCw0Q0FBNEM7SUFDNUM7Ozs7Ozs7OztPQVNHO0lBQ0ksc0JBQXNCLENBQUMsUUFBZ0I7UUFDNUMsTUFBTSxhQUFhLEdBQWEsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEY7UUFFRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELCtDQUErQztJQUcvQyx5Q0FBeUM7SUFDekM7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLGtCQUEyQixLQUFLO1FBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBN0RVLHFCQUFxQjtrR0FBckIscUJBQXFCLDBZQ1BsQyw2K0RBdUNBOzsyRkRoQ2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjswRUFZWixhQUFhO3NCQUE3QixNQUFNO2dCQUlTLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSx3QkFBd0I7c0JBQXZDLEtBQUs7Z0JBSVUsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUVVLGdCQUFnQjtzQkFBL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvbmZpcm0tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmZpcm0tbW9kYWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtTW9kYWxDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cblxuICAvLyAjcmVnaW9uIFBSSVZBVEVcbiAgQE91dHB1dCgpIHB1YmxpYyBfY2xvc2luZ01vZGFsOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8vICNlbmRyZWdpb24gUFJJVkFURVxuXG4gIC8vICNyZWdpb24gUFVCTElDXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RhbFN1YmplY3Q6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIG1vZGFsVHlwZTogJ0V4Y2x1aXInIHwgJ0luYXRpdmFyJyB8ICdBdGl2YXInO1xuICBASW5wdXQoKSBwdWJsaWMgZ2VucmVBbmRQbHVyYWxpdHlTdWJqZWN0OiAnbWFzYyBzaW5ndWxhcicgfCAnbWFzYyBwbHVyYWwnIHxcbiAgICAnZmVtIHNpbmd1bGFyJyB8ICdmZW0gcGx1cmFsJyA9ICdtYXNjIHNpbmd1bGFyJztcblxuICAvLyBFc3RhcyB2YXJpw6F2ZWlzIGFiYWl4byBzZXJ2ZW0gcGFyYSBkZWl4YXIgbyBtYWlzIGdlbsOpcmljbyBwb3Nzw612ZWwgbyBtb2RhbCBkZSBjb25maXJtYWzDp2FvXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21NZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUJ1dHRvbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21CdXR0b25Mb2FkaW5nOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBwdWJsaWMgaW1wb3J0YW50TWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93U3Bpbm5lcjogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyAjZW5kcmVnaW9uIFBVQkxJQ1xuXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBVVElMSVRJRVMgPD09PT09PT09PT1cbiAgLyoqXG4gICAqIEVzdGUgbcOpdG9kbyByZWNlYmUgdW1hIHBhbGF2cmEgKHBvZGVuZG8gc2VyIHVtYSBwYWxhdnJhIGNvbXBvc3RhKSwgdmFpXG4gICAqIHNlcGFyw6EtbGEgZW0gb3V0cmFzIHBhbGF2cmFzIGNhc28gZWxhIHNlamEgdW1hIHBhbGF2cmEgY29tcG9zdGEsIGlyw6EgcGVyY29ycmVyXG4gICAqIGFzIHBhbGF2cmFzIHNlcGFyYWRhcywgY29sb2NhbmRvIGEgaW5pY2lhbCBkZSBjYWRhIHBhbGF2cmEgZW0gbWFpw7pzY3VsbywgZVxuICAgKiBkZXBvaXMgdmFpIHVuw60tbGFzIGVtIHVtYSBub3ZhIHBhbGF2cmEsIHF1ZSB0ZXLDoSB0b2RhcyBhcyBwcmltZWlyYXMgbGV0cmFzIGVtXG4gICAqIG1hacO6c2N1bG8gcGFyYSBtb3N0cmFyIG5vIHTDrXR1bG8uXG4gICAqIEBwYXJhbSBmYXRlV29yZCBQYWxhdnJhIChwb2RlbmRvIHNlciBvdSBuw6NvIHBhbGF2cmEgY29tcG9zdGEpIHF1ZVxuICAgKiBzZXLDoSBhbHRlcmFkYSBwYXJhIHRlciBzdWFzIGluaWNpYWlzIG1hacO6c2N1bGFzLlxuICAgKiBAcmV0dXJucyBQYWxhdnJhIGNvbSBpbmljaWFpcyBtYWnDunNjdWxhLlxuICAgKi9cbiAgcHVibGljIGZpcnN0TGV0dGVySXNMb3dlcmNhc2UoZmF0ZVdvcmQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmF0ZVdvcmRTcGxpdDogc3RyaW5nW10gPSBmYXRlV29yZC5zcGxpdChcIiBcIik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZhdGVXb3JkU3BsaXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZhdGVXb3JkU3BsaXRbaV0gPSBmYXRlV29yZFNwbGl0W2ldWzBdLnRvTG93ZXJDYXNlKCkgKyBmYXRlV29yZFNwbGl0W2ldLnN1YnN0cmluZygxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmF0ZVdvcmRTcGxpdC5qb2luKFwiIFwiKTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFVUSUxJVElFUyA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBNT0RBTFMgPD09PT09PT09PT1cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIGNvbSBvIG9iamV0aXZvIGRlIG1hbmRhciB1bSBldmVudG8gcGFyYSBvIGNvbXBvbmVudGUgcGFpIHBhcmEgcXVlXG4gICAqIGVsZSBmZWNoZSBvIG1vZGFsLlxuICAgKi9cbiAgcHVibGljIGNsb3NlTW9kYWwoaXNFeGVjdXRlQWN0aW9uOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zaW5nTW9kYWwuZW1pdChpc0V4ZWN1dGVBY3Rpb24pO1xuICB9XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gTU9EQUxTIDw9PT09PT09PT09XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBtb2RhbC1zdHlsZSBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIj5cbiAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+IHt7IGN1c3RvbVRpdGxlID09PSAnJyA/IFttb2RhbFR5cGUgKyAnICcgKyBtb2RhbFN1YmplY3RdIDogY3VzdG9tVGl0bGUgfX0gPC9oND5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXG4gICAgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPjwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtbWVzc2FnZVwiIFtjbGFzcy50ZXh0LWRhbmdlci5mdy1ib2xkXT1cImltcG9ydGFudE1lc3NhZ2VcIj5cbiAgICA8c3BhbiAqbmdJZj1cImN1c3RvbU1lc3NhZ2UgPT09ICcnOyBlbHNlIHNob3dDdXN0b21NZXNzYWdlXCI+IFRlbSBjZXJ0ZXphIHF1ZSB2b2PDqiBxdWVyIHt7IGZpcnN0TGV0dGVySXNMb3dlcmNhc2UobW9kYWxUeXBlKSB9fVxuICAgICAgPHNwYW4gW25nU3dpdGNoXT1cImdlbnJlQW5kUGx1cmFsaXR5U3ViamVjdFwiPlxuICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ21hc2Mgc2luZ3VsYXInXCI+IGVzdGUgPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ21hc2MgcGx1cmFsJ1wiPiBlc3RlcyA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZmVtIHNpbmd1bGFyJ1wiPiBlc3RhIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmZW0gcGx1cmFsJ1wiPiBlc3RhcyA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICB7eyBmaXJzdExldHRlcklzTG93ZXJjYXNlKG1vZGFsU3ViamVjdCkgfX0/XG4gICAgPC9zcGFuPlxuXG4gICAgPG5nLXRlbXBsYXRlICNzaG93Q3VzdG9tTWVzc2FnZT5cbiAgICAgIDxzcGFuPiB7eyBjdXN0b21NZXNzYWdlIH19IDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPHNwYW4gKm5nSWY9XCJtb2RhbFR5cGUgPT0gJ0V4Y2x1aXInXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBmdy1ib2xkXCI+IChlc3RhIGHDp8OjbyDDqSBpcnJldmVyc8OtdmVsKSA8L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgbW9kYWwtYnV0dG9uXCJcbiAgICAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+IENhbmNlbGFyIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gKm5nSWY9XCIhc2hvd1NwaW5uZXI7IGVsc2UgbG9hZGluZ0J1dHRvblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtb2RhbC1idXR0b25cIlxuICAgIChjbGljayk9XCJzaG93U3Bpbm5lciA9IHRydWU7IGNsb3NlTW9kYWwodHJ1ZSlcIj4ge3sgY3VzdG9tQnV0dG9uID09PSAnJyA/IG1vZGFsVHlwZSA6IGN1c3RvbUJ1dHRvbiB9fSA8L2J1dHRvbj5cblxuICA8bmctdGVtcGxhdGUgI2xvYWRpbmdCdXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtb2RhbC1idXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgZGlzYWJsZWQ+XG4gICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuPiB7eyBjdXN0b21CdXR0b25Mb2FkaW5nID09PSAnJyA/IFttb2RhbFR5cGUgPT0gJ0V4Y2x1aXInID8gJ0V4Y2x1aW5kby4uLicgOiBbbW9kYWxUeXBlID09ICdBdGl2YXInID8gJ0F0aXZhbmRvLi4uJyA6ICdJbmF0aXZhbmRvLi4uJ11dIDogY3VzdG9tQnV0dG9uTG9hZGluZyB9fSA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvZGl2PlxuIl19
|