@arsedizioni/ars-utils 18.1.29 → 18.1.31

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.
Files changed (41) hide show
  1. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +3 -3
  2. package/esm2022/clipper.ui/ui/document/document.component.mjs +3 -3
  3. package/esm2022/clipper.ui/ui/last-15-days/last-15-days.component.mjs +3 -3
  4. package/esm2022/clipper.ui/ui/references/references.component.mjs +3 -3
  5. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +3 -3
  6. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +3 -3
  7. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +3 -3
  8. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +3 -3
  9. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +14 -9
  10. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +29 -19
  11. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +29 -23
  12. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +31 -20
  13. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +19 -25
  14. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +32 -35
  15. package/esm2022/ui/ui/dialogs/toast/toast.component.mjs +8 -11
  16. package/esm2022/ui/ui/services/dialog.service.mjs +3 -3
  17. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +3 -3
  18. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +3 -3
  19. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +3 -3
  20. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +3 -3
  21. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +3 -3
  22. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +3 -3
  23. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +3 -3
  24. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +3 -3
  25. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +14 -14
  26. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  27. package/fesm2022/arsedizioni-ars-utils-help.mjs +2 -2
  28. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  29. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +16 -16
  30. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
  31. package/fesm2022/arsedizioni-ars-utils-ui.mjs +135 -111
  32. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  33. package/package.json +7 -7
  34. package/styles/ui.scss +7 -12
  35. package/ui/ui/dialogs/busy/busy-dialog.component.d.ts +0 -1
  36. package/ui/ui/dialogs/confirm/confirm-dialog.component.d.ts +10 -11
  37. package/ui/ui/dialogs/credentials/credentials-dialog.component.d.ts +16 -16
  38. package/ui/ui/dialogs/info/info-dialog.component.d.ts +13 -8
  39. package/ui/ui/dialogs/recover-password/recover-password-dialog.component.d.ts +4 -8
  40. package/ui/ui/dialogs/reset-password/reset-password-dialog.component.d.ts +9 -12
  41. package/ui/ui/dialogs/toast/toast.component.d.ts +4 -5
@@ -1,28 +1,25 @@
1
- import { Component, EventEmitter, Inject, Output } from "@angular/core";
2
- import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from "@angular/material/dialog";
3
- import { SystemUtils } from '@arsedizioni/ars-utils/core';
4
- import { FlexModule } from "@ngbracket/ngx-layout/flex";
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Output, inject } from "@angular/core";
2
+ import { FormsModule } from "@angular/forms";
5
3
  import { MatButtonModule } from "@angular/material/button";
6
- import { MatInputModule } from "@angular/material/input";
4
+ import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from "@angular/material/dialog";
7
5
  import { MatFormFieldModule } from "@angular/material/form-field";
8
- import { FormsModule } from "@angular/forms";
6
+ import { MatInputModule } from "@angular/material/input";
7
+ import { SystemUtils } from '@arsedizioni/ars-utils/core';
8
+ import { FlexModule } from "@ngbracket/ngx-layout/flex";
9
9
  import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/material/dialog";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "@angular/material/form-field";
13
- import * as i4 from "@angular/material/input";
14
- import * as i5 from "@angular/material/button";
15
- import * as i6 from "@ngbracket/ngx-layout/flex";
10
+ import * as i1 from "@angular/forms";
11
+ import * as i2 from "@angular/material/form-field";
12
+ import * as i3 from "@angular/material/input";
13
+ import * as i4 from "@angular/material/button";
14
+ import * as i5 from "@ngbracket/ngx-layout/flex";
16
15
  export class RecoverPasswordDialogComponent {
17
- constructor(dialogRef, _data) {
18
- this.dialogRef = dialogRef;
16
+ constructor() {
19
17
  this.done = new EventEmitter();
18
+ this.dialogData = inject(MAT_DIALOG_DATA) || { appearance: 'fill' };
20
19
  this.item = {
21
20
  email: "",
22
21
  recaptcha: false
23
22
  };
24
- this.recaptchaOk = false;
25
- this.data = _data || { appearance: 'fill' };
26
23
  }
27
24
  /**
28
25
  * Done
@@ -30,12 +27,12 @@ export class RecoverPasswordDialogComponent {
30
27
  ok() {
31
28
  this.done.emit(this.item);
32
29
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: RecoverPasswordDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: RecoverPasswordDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n<span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n}\r\n @if (!f.form.invalid) {\r\n<span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n}\r\n</div>\r\n<h2 mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</h2>\r\n<div mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password \u00E8 collegata. Non \u00E8 possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"data.appearance\">\r\n <mat-label >Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\"\r\n [(ngModel)]=\"item.email\" required email maxlength=\"200\" />\r\n @if (email.invalid) {\r\n<mat-error>Email non valida.</mat-error>\r\n}\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non \u00E8 corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non pu\u00F2 accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento \u00E8 stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'\u00E8 il nuovo indirizzo IP e comunicatelo ad\r\n Ars Edizioni Informatiche.\r\n </p>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill >\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">CHIUDI</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;margin:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #a80710)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:500;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important;line-height:18px!important}.small{font-size:small!important;line-height:16px!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #ff5449)}}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: RecoverPasswordDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: RecoverPasswordDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n }\r\n @if (!f.form.invalid) {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</h2>\r\n<div mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password \u00E8 collegata. Non \u00E8 possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\">\r\n <mat-label>Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\" [(ngModel)]=\"item.email\" required email\r\n maxlength=\"200\" />\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non \u00E8 corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non pu\u00F2 accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento \u00E8 stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'\u00E8 il nuovo indirizzo IP e comunicatelo ad\r\n ARS Edizioni Informatiche.\r\n </p>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">CHIUDI</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, --mat-form-field-error-text-color)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info,b{font-weight:600}}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
32
  }
36
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: RecoverPasswordDialogComponent, decorators: [{
37
34
  type: Component,
38
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, imports: [
35
+ args: [{ host: { 'Bind': SystemUtils.generateUUID() }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
39
36
  MatDialogTitle,
40
37
  MatDialogContent,
41
38
  FormsModule,
@@ -45,11 +42,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
45
42
  MatDialogActions,
46
43
  FlexModule,
47
44
  MatDialogClose,
48
- ], template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n<span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n}\r\n @if (!f.form.invalid) {\r\n<span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n}\r\n</div>\r\n<h2 mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</h2>\r\n<div mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password \u00E8 collegata. Non \u00E8 possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"data.appearance\">\r\n <mat-label >Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\"\r\n [(ngModel)]=\"item.email\" required email maxlength=\"200\" />\r\n @if (email.invalid) {\r\n<mat-error>Email non valida.</mat-error>\r\n}\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non \u00E8 corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non pu\u00F2 accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento \u00E8 stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'\u00E8 il nuovo indirizzo IP e comunicatelo ad\r\n Ars Edizioni Informatiche.\r\n </p>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill >\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">CHIUDI</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;margin:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #a80710)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:500;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important;line-height:18px!important}.small{font-size:small!important;line-height:16px!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #ff5449)}}\n"] }]
49
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
50
- type: Inject,
51
- args: [MAT_DIALOG_DATA]
52
- }] }], propDecorators: { done: [{
45
+ ], template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n }\r\n @if (!f.form.invalid) {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</h2>\r\n<div mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password \u00E8 collegata. Non \u00E8 possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\">\r\n <mat-label>Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\" [(ngModel)]=\"item.email\" required email\r\n maxlength=\"200\" />\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non \u00E8 corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non pu\u00F2 accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento \u00E8 stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'\u00E8 il nuovo indirizzo IP e comunicatelo ad\r\n ARS Edizioni Informatiche.\r\n </p>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">CHIUDI</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, --mat-form-field-error-text-color)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info,b{font-weight:600}}\n"] }]
46
+ }], propDecorators: { done: [{
53
47
  type: Output
54
48
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Zlci1wYXNzd29yZC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpL3VpL2RpYWxvZ3MvcmVjb3Zlci1wYXNzd29yZC9yZWNvdmVyLXBhc3N3b3JkLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvZGlhbG9ncy9yZWNvdmVyLXBhc3N3b3JkL3JlY292ZXItcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBeUI3QyxNQUFNLE9BQU8sOEJBQThCO0lBWXpDLFlBQ1MsU0FBdUQsRUFDckMsS0FBZ0M7UUFEbEQsY0FBUyxHQUFULFNBQVMsQ0FBOEM7UUFYdEQsU0FBSSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBSWpFLFNBQUksR0FBZ0M7WUFDbEMsS0FBSyxFQUFFLEVBQUU7WUFDVCxTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDO1FBQ0YsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFNM0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFFOUMsQ0FBQztJQUlEOztPQUVHO0lBQ0gsRUFBRTtRQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQTNCVSw4QkFBOEIsOENBYy9CLGVBQWU7a0dBZGQsOEJBQThCLHlHQWpCdkIsV0FBVyxDQUFDLFlBQVksRUFBRSw4QkNmOUMseWdGQW1ETSx3dUNEOUJFLGNBQWMsK0hBQ2QsZ0JBQWdCLHdHQUNoQixXQUFXLHNqREFDWCxrQkFBa0IsdVlBQ2xCLGNBQWMsMFdBQ2QsZUFBZSw0TkFDZixnQkFBZ0IsMkhBQ2hCLFVBQVUseTBDQUNWLGNBQWM7OzJGQUdULDhCQUE4QjtrQkFsQjFDLFNBQVM7MkJBQ0EsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxFQUFFLGNBR2hDLElBQUksV0FDUDt3QkFFTCxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFVBQVU7d0JBQ1YsY0FBYztxQkFDakI7OzBCQWdCQSxNQUFNOzJCQUFDLGVBQWU7eUNBWmYsSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1RpdGxlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSBcIkBuZ2JyYWNrZXQvbmd4LWxheW91dC9mbGV4XCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgUmVjb3ZlclBhc3N3b3JkRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNvdmVyUGFzc3dvcmREaWFsb2dEYXRhIHtcclxuICBhcHBlYXJhbmNlPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9yZWNvdmVyLXBhc3N3b3JkLWRpYWxvZy5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3JlY292ZXItcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBcclxuICAgICAgICBNYXREaWFsb2dUaXRsZSxcclxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgICAgICBGbGV4TW9kdWxlLFxyXG4gICAgICAgIE1hdERpYWxvZ0Nsb3NlLFxyXG4gICAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY292ZXJQYXNzd29yZERpYWxvZ0NvbXBvbmVudCB7XHJcblxyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvdmVyUGFzc3dvcmREaWFsb2dSZXN1bHQ+KCk7XHJcblxyXG4gIGRhdGE6IFJlY292ZXJQYXNzd29yZERpYWxvZ0RhdGE7XHJcblxyXG4gIGl0ZW06IFJlY292ZXJQYXNzd29yZERpYWxvZ1Jlc3VsdCA9IHtcclxuICAgIGVtYWlsOiBcIlwiLFxyXG4gICAgcmVjYXB0Y2hhOiBmYWxzZVxyXG4gIH07XHJcbiAgcmVjYXB0Y2hhT2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UmVjb3ZlclBhc3N3b3JkRGlhbG9nQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBfZGF0YTogUmVjb3ZlclBhc3N3b3JkRGlhbG9nRGF0YVxyXG4gICkge1xyXG4gICAgdGhpcy5kYXRhID0gX2RhdGEgfHwgeyBhcHBlYXJhbmNlOiAnZmlsbCcgfTtcclxuICAgIFxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBEb25lXHJcbiAgICovXHJcbiAgb2soKSB7XHJcbiAgICB0aGlzLmRvbmUuZW1pdCh0aGlzLml0ZW0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWluZm9cIj5cclxuICBAaWYgKGYuZm9ybS5pbnZhbGlkKSB7XHJcbjxzcGFuIGNsYXNzPVwiZGlhbG9nLWluZm8tZXJyb3JcIj5DaSBzb25vIGFuY29yYSBkZWkgY2FtcGkgb2JibGlnYXRvcmkgKCopIG5vbiBjb21waWxhdGkuPC9zcGFuPlxyXG59XHJcbiAgQGlmICghZi5mb3JtLmludmFsaWQpIHtcclxuPHNwYW4gY2xhc3M9XCJkaWFsb2ctaW5mby1va1wiPlR1dHRpIGkgY2FtcGkgb2JibGlnYXRvcmkgKCopIHNvbm8gY29tcGlsYXRpLjwvc3Bhbj5cclxufVxyXG48L2Rpdj5cclxuPGgyIG1hdC1kaWFsb2ctdGl0bGU+UGVyIHF1YWxlIHJhZ2lvbmUgbm9uIHNlaSBpbiBncmFkbyBkaSBlZmZldHR1YXJlIGwnYWNjZXNzbz88L2gyPlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiAgPGI+MS4gSG8gZGltZW50aWNhdG8gbGEgcGFzc3dvcmQ8L2I+XHJcbiAgPHA+XHJcbiAgICBQdW9pIHJlY3VwZXJhcmxhIGZhY2lsbWVudGUgaW5zZXJlbmRvIGwnZW1haWwgYSBjdWkgbGEgcGFzc3dvcmQgw6ggY29sbGVnYXRhLiBOb24gw6ggcG9zc2liaWxlIHJlY3VwZXJhcmUgcGFzc3dvcmRcclxuICAgIGF6aWVuZGFsaSAobm9uIGNvbGxlZ2F0ZSBhZCB1biBlbWFpbCkuPC9wPlxyXG4gIDxmb3JtIG5hbWU9XCJmb3JtXCIgI2Y9XCJuZ0Zvcm1cIiAoa2V5dXAuRW50ZXIpPVwiIWYuZm9ybS5pbnZhbGlkID8gb2soKSA6IG51bGxcIiBub3ZhbGlkYXRlPlxyXG5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOjEwMCVcIiBbYXBwZWFyYW5jZV09XCJkYXRhLmFwcGVhcmFuY2VcIj5cclxuICAgICAgPG1hdC1sYWJlbCA+RW1haWwgY29uIGN1aSB0aSBzZWkgcmVnaXN0cmF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgbWF0SW5wdXQgbmFtZT1cImVtYWlsXCIgI2VtYWlsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZW1haWxcIiByZXF1aXJlZCBlbWFpbCBtYXhsZW5ndGg9XCIyMDBcIiAvPlxyXG4gICAgICBAaWYgKGVtYWlsLmludmFsaWQpIHtcclxuPG1hdC1lcnJvcj5FbWFpbCBub24gdmFsaWRhLjwvbWF0LWVycm9yPlxyXG59XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MjBweDtcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJvaygpXCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImYuZm9ybS5pbnZhbGlkXCJcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVjdXBlcmEgcGFzc3dvcmRcIj5SZWN1cGVyYSBwYXNzd29yZDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9mb3JtPlxyXG4gIDxwPjwvcD5cclxuICA8Yj4yLiBJbCBzaXN0ZW1hIG1pIGRpY2UgY2hlIGxhIHBhc3N3b3JkIG5vbiDDqCBjb3JyZXR0YS48L2I+XHJcbiAgPHA+XHJcbiAgICBFJyBtb2x0byBwcm9iYWJpbGUgY2hlIGNpIHNpYSBzdGF0byB1biBkaWZldHRvIGRpIGRpZ2l0YXppb25lLiBQZXIgZmF2b3JlIGNvbnRyb2xsYSBiZW5lIGNoZSBub24gdmkgc2lhbm8gc3Bhemkgbm9uXHJcbiAgICByaWNoaWVzdGkgZSBjaGUgbGEgcGFzc3dvcmQgcmlzcGV0dGkgcGVyZmV0dGFtZW50ZSBsZSBtYWl1c2NvbGUgZSBtaW51c2NvbGUuIE5lbCBjYXNvIGluIGN1aSBsYSBkaWdpdGF6aW9uZSBmb3NzZVxyXG4gICAgY29ycmV0dGEsIHZlcmlmaWNhIGNoZSBsYSBkYXRhIGRlbCB0dW8gYWJib25hbWVudG8gbm9uIHNpYSBzY2FkdXRhLlxyXG4gIDwvcD5cclxuICA8cD48L3A+XHJcbiAgPGI+My4gSWwgc2lzdGVtYSBtaSBkaWNlIGNoZSBub24gcHXDsiBhY2NldHRhcmUgY29ubmVzc2lvbmkgZGFsIG1pbyBpbmRpcml6em8gSVA8L2I+XHJcbiAgPHA+XHJcbiAgICBJbCB0dW8gYWJib25hbWVudG8gw6ggc3RhdG8gdmluY29sYXRvIGFkIHVuIGluZGlyaXp6byBJUCAoaW5kaXJpenpvIGRhbCBxdWFsZSB0aSBjb2xsZWdoaSkuIENhcGl0YSBzb3ZlbnRlIGNoZVxyXG4gICAgcXVlc3RpIGluZGlyaXp6aSBzaWFubyBjYW1iaWF0aSBkYSBwYXJ0ZSBkZWwgcmVwYXJ0byBJVCBwZXIgcXVlc3Rpb25pIGRpIHNpY3VyZXp6YSBpbmZvcm1hdGljYS5cclxuICAgIFBlciByaXNvbHZlcmUgaWwgcHJvYmxlbWEsIGNvbnRhdHRhdGUgaWwgcmVwYXJ0byBJVCBlIGZhdGV2aSBkaXJlIHF1YWwnw6ggaWwgbnVvdm8gaW5kaXJpenpvIElQIGUgY29tdW5pY2F0ZWxvIGFkXHJcbiAgICBBcnMgRWRpemlvbmkgSW5mb3JtYXRpY2hlLlxyXG4gIDwvcD5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGaWxsID5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgY29sb3I9XCJwcmltYXJ5XCI+Q0hJVURJPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Zlci1wYXNzd29yZC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpL3VpL2RpYWxvZ3MvcmVjb3Zlci1wYXNzd29yZC9yZWNvdmVyLXBhc3N3b3JkLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvZGlhbG9ncy9yZWNvdmVyLXBhc3N3b3JkL3JlY292ZXItcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQXlCeEQsTUFBTSxPQUFPLDhCQUE4QjtJQWxCM0M7UUFvQlksU0FBSSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBR3ZELGVBQVUsR0FBK0IsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRTNGLFNBQUksR0FBZ0M7WUFDNUMsS0FBSyxFQUFFLEVBQUU7WUFDVCxTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDO0tBUUg7SUFOQzs7T0FFRztJQUNPLEVBQUU7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQzs4R0FqQlUsOEJBQThCO2tHQUE5Qiw4QkFBOEIseUdBakJ2QixXQUFXLENBQUMsWUFBWSxFQUFFLDhCQ2Y5QyxzaEZBbURNLHFqQ0Q5QkUsY0FBYywrSEFDZCxnQkFBZ0Isd0dBQ2hCLFdBQVcsc2pEQUNYLGtCQUFrQix1WUFDbEIsY0FBYywwV0FDZCxlQUFlLDROQUNmLGdCQUFnQiwySEFDaEIsVUFBVSx5MENBQ1YsY0FBYzs7MkZBR1QsOEJBQThCO2tCQWxCMUMsU0FBUzsyQkFDQSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixjQUFjO3FCQUNqQjs4QkFJTyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dUaXRsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSBcIkBuZ2JyYWNrZXQvbmd4LWxheW91dC9mbGV4XCI7XHJcbmltcG9ydCB7IFJlY292ZXJQYXNzd29yZERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uLy4uL2RlZmluaXRpb25zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3ZlclBhc3N3b3JkRGlhbG9nRGF0YSB7XHJcbiAgYXBwZWFyYW5jZT86IHN0cmluZyB8IG51bGw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3JlY292ZXItcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vcmVjb3Zlci1wYXNzd29yZC1kaWFsb2cuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbICAgICAgICBcclxuICAgICAgICBNYXREaWFsb2dUaXRsZSxcclxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgICAgICBGbGV4TW9kdWxlLFxyXG4gICAgICAgIE1hdERpYWxvZ0Nsb3NlLFxyXG4gICAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY292ZXJQYXNzd29yZERpYWxvZ0NvbXBvbmVudCB7XHJcblxyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvdmVyUGFzc3dvcmREaWFsb2dSZXN1bHQ+KCk7XHJcblxyXG5cclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YSA6IFJlY292ZXJQYXNzd29yZERpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSB8fCB7IGFwcGVhcmFuY2U6ICdmaWxsJyB9OyAgICBcclxuICBcclxuICBwcm90ZWN0ZWQgaXRlbTogUmVjb3ZlclBhc3N3b3JkRGlhbG9nUmVzdWx0ID0ge1xyXG4gICAgZW1haWw6IFwiXCIsXHJcbiAgICByZWNhcHRjaGE6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogRG9uZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvaygpIHtcclxuICAgIHRoaXMuZG9uZS5lbWl0KHRoaXMuaXRlbSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaW5mb1wiPlxyXG4gIEBpZiAoZi5mb3JtLmludmFsaWQpIHtcclxuICA8c3BhbiBjbGFzcz1cImRpYWxvZy1pbmZvLWVycm9yXCI+Q2kgc29ubyBhbmNvcmEgZGVpIGNhbXBpIG9iYmxpZ2F0b3JpICgqKSBub24gY29tcGlsYXRpLjwvc3Bhbj5cclxuICB9XHJcbiAgQGlmICghZi5mb3JtLmludmFsaWQpIHtcclxuICA8c3BhbiBjbGFzcz1cImRpYWxvZy1pbmZvLW9rXCI+VHV0dGkgaSBjYW1waSBvYmJsaWdhdG9yaSAoKikgc29ubyBjb21waWxhdGkuPC9zcGFuPlxyXG4gIH1cclxuPC9kaXY+XHJcbjxoMiBtYXQtZGlhbG9nLXRpdGxlPlBlciBxdWFsZSByYWdpb25lIG5vbiBzZWkgaW4gZ3JhZG8gZGkgZWZmZXR0dWFyZSBsJ2FjY2Vzc28/PC9oMj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG4gIDxiPjEuIEhvIGRpbWVudGljYXRvIGxhIHBhc3N3b3JkPC9iPlxyXG4gIDxwPlxyXG4gICAgUHVvaSByZWN1cGVyYXJsYSBmYWNpbG1lbnRlIGluc2VyZW5kbyBsJ2VtYWlsIGEgY3VpIGxhIHBhc3N3b3JkIMOoIGNvbGxlZ2F0YS4gTm9uIMOoIHBvc3NpYmlsZSByZWN1cGVyYXJlIHBhc3N3b3JkXHJcbiAgICBhemllbmRhbGkgKG5vbiBjb2xsZWdhdGUgYWQgdW4gZW1haWwpLjwvcD5cclxuICA8Zm9ybSBuYW1lPVwiZm9ybVwiICNmPVwibmdGb3JtXCIgKGtleXVwLkVudGVyKT1cIiFmLmZvcm0uaW52YWxpZCA/IG9rKCkgOiBudWxsXCIgbm92YWxpZGF0ZT5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoxMDAlXCIgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+RW1haWwgY29uIGN1aSB0aSBzZWkgcmVnaXN0cmF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgbWF0SW5wdXQgbmFtZT1cImVtYWlsXCIgI2VtYWlsPVwibmdNb2RlbFwiIFsobmdNb2RlbCldPVwiaXRlbS5lbWFpbFwiIHJlcXVpcmVkIGVtYWlsXHJcbiAgICAgICAgbWF4bGVuZ3RoPVwiMjAwXCIgLz5cclxuICAgICAgQGlmIChlbWFpbC5pbnZhbGlkKSB7XHJcbiAgICAgIDxtYXQtZXJyb3I+RW1haWwgbm9uIHZhbGlkYS48L21hdC1lcnJvcj5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHg7XCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwib2soKVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmLmZvcm0uaW52YWxpZFwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlJlY3VwZXJhIHBhc3N3b3JkXCI+UmVjdXBlcmEgcGFzc3dvcmQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZm9ybT5cclxuICA8cD48L3A+XHJcbiAgPGI+Mi4gSWwgc2lzdGVtYSBtaSBkaWNlIGNoZSBsYSBwYXNzd29yZCBub24gw6ggY29ycmV0dGEuPC9iPlxyXG4gIDxwPlxyXG4gICAgRScgbW9sdG8gcHJvYmFiaWxlIGNoZSBjaSBzaWEgc3RhdG8gdW4gZGlmZXR0byBkaSBkaWdpdGF6aW9uZS4gUGVyIGZhdm9yZSBjb250cm9sbGEgYmVuZSBjaGUgbm9uIHZpIHNpYW5vIHNwYXppIG5vblxyXG4gICAgcmljaGllc3RpIGUgY2hlIGxhIHBhc3N3b3JkIHJpc3BldHRpIHBlcmZldHRhbWVudGUgbGUgbWFpdXNjb2xlIGUgbWludXNjb2xlLiBOZWwgY2FzbyBpbiBjdWkgbGEgZGlnaXRhemlvbmUgZm9zc2VcclxuICAgIGNvcnJldHRhLCB2ZXJpZmljYSBjaGUgbGEgZGF0YSBkZWwgdHVvIGFiYm9uYW1lbnRvIG5vbiBzaWEgc2NhZHV0YS5cclxuICA8L3A+XHJcbiAgPHA+PC9wPlxyXG4gIDxiPjMuIElsIHNpc3RlbWEgbWkgZGljZSBjaGUgbm9uIHB1w7IgYWNjZXR0YXJlIGNvbm5lc3Npb25pIGRhbCBtaW8gaW5kaXJpenpvIElQPC9iPlxyXG4gIDxwPlxyXG4gICAgSWwgdHVvIGFiYm9uYW1lbnRvIMOoIHN0YXRvIHZpbmNvbGF0byBhZCB1biBpbmRpcml6em8gSVAgKGluZGlyaXp6byBkYWwgcXVhbGUgdGkgY29sbGVnaGkpLiBDYXBpdGEgc292ZW50ZSBjaGVcclxuICAgIHF1ZXN0aSBpbmRpcml6emkgc2lhbm8gY2FtYmlhdGkgZGEgcGFydGUgZGVsIHJlcGFydG8gSVQgcGVyIHF1ZXN0aW9uaSBkaSBzaWN1cmV6emEgaW5mb3JtYXRpY2EuXHJcbiAgICBQZXIgcmlzb2x2ZXJlIGlsIHByb2JsZW1hLCBjb250YXR0YXRlIGlsIHJlcGFydG8gSVQgZSBmYXRldmkgZGlyZSBxdWFsJ8OoIGlsIG51b3ZvIGluZGlyaXp6byBJUCBlIGNvbXVuaWNhdGVsbyBhZFxyXG4gICAgQVJTIEVkaXppb25pIEluZm9ybWF0aWNoZS5cclxuICA8L3A+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4RmlsbD5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgY29sb3I9XCJwcmltYXJ5XCI+Q0hJVURJPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -1,24 +1,24 @@
1
- import { Component, EventEmitter, Inject, Output, } from "@angular/core";
2
- import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from "@angular/material/dialog";
3
- import { EqualsValidatorDirective, PasswordValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Output, inject } from "@angular/core";
2
+ import { FormsModule } from "@angular/forms";
4
3
  import { MatButtonModule } from "@angular/material/button";
5
- import { MatInputModule } from "@angular/material/input";
4
+ import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from "@angular/material/dialog";
6
5
  import { MatFormFieldModule } from "@angular/material/form-field";
6
+ import { MatInputModule } from "@angular/material/input";
7
+ import { EqualsValidatorDirective, PasswordValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';
7
8
  import { FlexModule } from "@ngbracket/ngx-layout/flex";
8
- import { FormsModule } from "@angular/forms";
9
+ import { DialogService } from '../../services/dialog.service';
9
10
  import * as i0 from "@angular/core";
10
- import * as i1 from "../../services/dialog.service";
11
- import * as i2 from "@angular/material/dialog";
12
- import * as i3 from "@angular/forms";
13
- import * as i4 from "@ngbracket/ngx-layout/flex";
14
- import * as i5 from "@angular/material/form-field";
15
- import * as i6 from "@angular/material/input";
16
- import * as i7 from "@angular/material/button";
11
+ import * as i1 from "@angular/forms";
12
+ import * as i2 from "@ngbracket/ngx-layout/flex";
13
+ import * as i3 from "@angular/material/form-field";
14
+ import * as i4 from "@angular/material/input";
15
+ import * as i5 from "@angular/material/button";
17
16
  export class ResetPasswordDialogComponent {
18
- constructor($dialog, dialogRef, _data) {
19
- this.$dialog = $dialog;
20
- this.dialogRef = dialogRef;
17
+ constructor() {
21
18
  this.done = new EventEmitter();
19
+ this.dialogService = inject(DialogService);
20
+ this.dialogRef = inject((MatDialogRef));
21
+ this.dialogData = inject(MAT_DIALOG_DATA) || { mode: 1, appearance: 'fill' };
22
22
  this.item = {
23
23
  userId: null,
24
24
  userEmail: null,
@@ -26,27 +26,27 @@ export class ResetPasswordDialogComponent {
26
26
  password: null,
27
27
  password2: null
28
28
  };
29
- this.data = _data || { mode: 1, appearance: 'fill' };
30
- if (!this.data.mode)
31
- this.data.mode = 1;
32
29
  }
33
30
  ngOnInit() {
34
- if (this.data) {
35
- if (this.data.mode <= 2 && !this.data.userId) {
31
+ if (this.dialogData) {
32
+ if (!this.dialogData.mode) {
33
+ this.dialogData.mode = 1;
34
+ }
35
+ if (this.dialogData.mode <= 2 && !this.dialogData.userId) {
36
36
  this.dialogRef.close();
37
- this.$dialog.error("Utente non specificato.");
37
+ this.dialogService.error("Utente non specificato.");
38
38
  return;
39
39
  }
40
- else if (this.data.mode === 3 && !this.data.userEmail) {
40
+ else if (this.dialogData.mode === 3 && !this.dialogData.userEmail) {
41
41
  this.dialogRef.close();
42
- this.$dialog.error("Email utente non specificata.");
42
+ this.dialogService.error("Email utente non specificata.");
43
43
  return;
44
44
  }
45
- this.item.userEmail = this.data.userEmail;
46
- this.item.userId = this.data.userId;
45
+ this.item.userEmail = this.dialogData.userEmail;
46
+ this.item.userId = this.dialogData.userId;
47
47
  }
48
48
  else {
49
- this.$dialog.error("Modalità non riconosciuta.");
49
+ this.dialogService.error("Modalità non riconosciuta.");
50
50
  this.dialogRef.close();
51
51
  return;
52
52
  }
@@ -65,12 +65,12 @@ export class ResetPasswordDialogComponent {
65
65
  this.item.password = password;
66
66
  this.item.password2 = password;
67
67
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ResetPasswordDialogComponent, deps: [{ token: i1.DialogService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ResetPasswordDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n<span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n}\r\n @if (!f.form.invalid) {\r\n<span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n}\r\n</div>\r\n<h2 mat-dialog-title>Reimposta password</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\">\r\n @if (data.mode === 3) {\r\n<mat-form-field style=\"width: 100%;\" [appearance]=\"data.appearance\">\r\n <mat-label >Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput\r\n [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n<mat-error>Email non valida.</mat-error>\r\n}\r\n </mat-form-field>\r\n}\r\n @if (data.mode > 1) {\r\n<mat-form-field style=\"width: 100%;\" [appearance]=\"data.appearance\" >\r\n <mat-label >Vecchia password</mat-label>\r\n <input type=\"password\" matInput\r\n name=\"oldPwd\" autocomplete=\"on\"\r\n [(ngModel)]=\"item.oldPassword\" [required]=\"data.mode > 1\" maxlength=\"15\" #oldPwd=\"ngModel\">\r\n @if (oldPwd.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n}\r\n <mat-form-field style=\"width: 100%; \" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"data.appearance\">\r\n <mat-label >Nuova password</mat-label>\r\n <input type=\"password\" matInput\r\n name=\"newPwd\" [(ngModel)]=\"item.password\"\r\n required password minlength=\"8\" maxlength=\"15\" #newPwd=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"data.appearance\">\r\n <mat-label >Conferma nuova password</mat-label>\r\n <input type=\"password\" matInput\r\n name=\"newPwd2\"\r\n [(ngModel)]=\"item.password2\" [required]=\"data.mode > 1\" password minlength=\"8\" maxlength=\"15\"\r\n [equals]=\"newPwd\" #newPwd2=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd2.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (data.mode === 1) {\r\n<button mat-button color=\"primary\" (click)=\"generatePassword()\">GENERA</button>\r\n}\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\" >\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">SALVA</button>\r\n @if (data.mode !== 3) {\r\n<button mat-button [mat-dialog-close]=\"true\" color=\"primary\">ANNULLA</button>\r\n}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;margin:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #a80710)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:500;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important;line-height:18px!important}.small{font-size:small!important;line-height:16px!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #ff5449)}}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: PasswordValidatorDirective, selector: "[password]" }, { kind: "directive", type: EqualsValidatorDirective, selector: "[equals]", inputs: ["equals"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] }); }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ResetPasswordDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ResetPasswordDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n }\r\n @if (!f.form.invalid) {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Reimposta password</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\">\r\n @if (dialogData.mode === 3) {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData.appearance\">\r\n <mat-label>Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.mode > 1) {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData.appearance\">\r\n <mat-label>Vecchia password</mat-label>\r\n <input type=\"password\" matInput name=\"oldPwd\" autocomplete=\"on\" [(ngModel)]=\"item.oldPassword\"\r\n [required]=\"dialogData.mode > 1\" maxlength=\"15\" #oldPwd=\"ngModel\">\r\n @if (oldPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%; \" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData.appearance\">\r\n <mat-label>Nuova password</mat-label>\r\n <input type=\"password\" matInput name=\"newPwd\" [(ngModel)]=\"item.password\" required password minlength=\"8\"\r\n maxlength=\"15\" #newPwd=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData.appearance\">\r\n <mat-label>Conferma nuova password</mat-label>\r\n <input type=\"password\" matInput name=\"newPwd2\" [(ngModel)]=\"item.password2\" [required]=\"dialogData.mode > 1\"\r\n password minlength=\"8\" maxlength=\"15\" [equals]=\"newPwd\" #newPwd2=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd2.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData.mode === 1) {\r\n <button mat-button color=\"primary\" (click)=\"generatePassword()\">GENERA</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">SALVA</button>\r\n @if (dialogData.mode !== 3) {\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">ANNULLA</button>\r\n }\r\n </div>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, --mat-form-field-error-text-color)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info,b{font-weight:600}}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: PasswordValidatorDirective, selector: "[password]" }, { kind: "directive", type: EqualsValidatorDirective, selector: "[equals]", inputs: ["equals"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
70
  }
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ResetPasswordDialogComponent, decorators: [{
72
72
  type: Component,
73
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, imports: [
73
+ args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
74
74
  MatDialogTitle,
75
75
  MatDialogContent,
76
76
  FormsModule,
@@ -82,11 +82,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
82
82
  MatDialogActions,
83
83
  MatButtonModule,
84
84
  MatDialogClose,
85
- ], template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n<span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n}\r\n @if (!f.form.invalid) {\r\n<span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n}\r\n</div>\r\n<h2 mat-dialog-title>Reimposta password</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\">\r\n @if (data.mode === 3) {\r\n<mat-form-field style=\"width: 100%;\" [appearance]=\"data.appearance\">\r\n <mat-label >Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput\r\n [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n<mat-error>Email non valida.</mat-error>\r\n}\r\n </mat-form-field>\r\n}\r\n @if (data.mode > 1) {\r\n<mat-form-field style=\"width: 100%;\" [appearance]=\"data.appearance\" >\r\n <mat-label >Vecchia password</mat-label>\r\n <input type=\"password\" matInput\r\n name=\"oldPwd\" autocomplete=\"on\"\r\n [(ngModel)]=\"item.oldPassword\" [required]=\"data.mode > 1\" maxlength=\"15\" #oldPwd=\"ngModel\">\r\n @if (oldPwd.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n}\r\n <mat-form-field style=\"width: 100%; \" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"data.appearance\">\r\n <mat-label >Nuova password</mat-label>\r\n <input type=\"password\" matInput\r\n name=\"newPwd\" [(ngModel)]=\"item.password\"\r\n required password minlength=\"8\" maxlength=\"15\" #newPwd=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"data.appearance\">\r\n <mat-label >Conferma nuova password</mat-label>\r\n <input type=\"password\" matInput\r\n name=\"newPwd2\"\r\n [(ngModel)]=\"item.password2\" [required]=\"data.mode > 1\" password minlength=\"8\" maxlength=\"15\"\r\n [equals]=\"newPwd\" #newPwd2=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd2.invalid) {\r\n<mat-error>Non valido.</mat-error>\r\n}\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (data.mode === 1) {\r\n<button mat-button color=\"primary\" (click)=\"generatePassword()\">GENERA</button>\r\n}\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\" >\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">SALVA</button>\r\n @if (data.mode !== 3) {\r\n<button mat-button [mat-dialog-close]=\"true\" color=\"primary\">ANNULLA</button>\r\n}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;margin:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #a80710)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:500;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important;line-height:18px!important}.small{font-size:small!important;line-height:16px!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, #ff5449)}}\n"] }]
86
- }], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
87
- type: Inject,
88
- args: [MAT_DIALOG_DATA]
89
- }] }], propDecorators: { done: [{
85
+ ], template: "<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n }\r\n @if (!f.form.invalid) {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Reimposta password</h2>\r\n<div mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\">\r\n @if (dialogData.mode === 3) {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData.appearance\">\r\n <mat-label>Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData.mode > 1) {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData.appearance\">\r\n <mat-label>Vecchia password</mat-label>\r\n <input type=\"password\" matInput name=\"oldPwd\" autocomplete=\"on\" [(ngModel)]=\"item.oldPassword\"\r\n [required]=\"dialogData.mode > 1\" maxlength=\"15\" #oldPwd=\"ngModel\">\r\n @if (oldPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%; \" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData.appearance\">\r\n <mat-label>Nuova password</mat-label>\r\n <input type=\"password\" matInput name=\"newPwd\" [(ngModel)]=\"item.password\" required password minlength=\"8\"\r\n maxlength=\"15\" #newPwd=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 8 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData.appearance\">\r\n <mat-label>Conferma nuova password</mat-label>\r\n <input type=\"password\" matInput name=\"newPwd2\" [(ngModel)]=\"item.password2\" [required]=\"dialogData.mode > 1\"\r\n password minlength=\"8\" maxlength=\"15\" [equals]=\"newPwd\" #newPwd2=\"ngModel\">\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/15</mat-hint>\r\n @if (newPwd2.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData.mode === 1) {\r\n <button mat-button color=\"primary\" (click)=\"generatePassword()\">GENERA</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" [disabled]=\"f.form.invalid\" (click)=\"ok()\">SALVA</button>\r\n @if (dialogData.mode !== 3) {\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">ANNULLA</button>\r\n }\r\n </div>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-dialog-info-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--ars-dialog-info-error, --mat-form-field-error-text-color)}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}b{font-weight:700}.large{font-size:large!important}.small{font-size:small!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme: dark){.dialog-info,b{font-weight:600}}\n"] }]
86
+ }], propDecorators: { done: [{
90
87
  type: Output
91
88
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS91aS9kaWFsb2dzL3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvZGlhbG9ncy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLGVBQWUsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0ksT0FBTyxFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBK0I3QyxNQUFNLE9BQU8sNEJBQTRCO0lBWXZDLFlBQ1UsT0FBc0IsRUFDdEIsU0FBcUQsRUFDcEMsS0FBOEI7UUFGL0MsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUE0QztRQVpyRCxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFHL0QsU0FBSSxHQUE4QjtZQUNoQyxNQUFNLEVBQUUsSUFBSTtZQUNaLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO1FBTUEsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRTFDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQzlDLE9BQU87WUFDVCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQkFDcEQsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEVBQUU7UUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUNqQyxDQUFDOzhHQXhEVSw0QkFBNEIsMkVBZTdCLGVBQWU7a0dBZmQsNEJBQTRCLHlHQW5CckIsV0FBVyxDQUFDLFlBQVksRUFBRSw4QkN6QjlDLHVzR0EyRUEsd3VDRDVDUSxjQUFjLCtIQUNkLGdCQUFnQix3R0FDaEIsV0FBVyx5dERBQ1gsVUFBVSx1NkVBQ1Ysa0JBQWtCLCtkQUNsQixjQUFjLDJXQUNkLDBCQUEwQix1REFDMUIsd0JBQXdCLHlFQUN4QixnQkFBZ0IsMkhBQ2hCLGVBQWUsNE5BQ2YsY0FBYzs7MkZBR1QsNEJBQTRCO2tCQXBCeEMsU0FBUzsyQkFDQSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsY0FHaEMsSUFBSSxXQUNQO3dCQUVMLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLFVBQVU7d0JBQ1Ysa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLDBCQUEwQjt3QkFDMUIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsY0FBYztxQkFDakI7OzBCQWlCQSxNQUFNOzJCQUFDLGVBQWU7eUNBYmYsSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBPdXRwdXQsXHJcbiAgT25Jbml0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IEVxdWFsc1ZhbGlkYXRvckRpcmVjdGl2ZSwgUGFzc3dvcmRWYWxpZGF0b3JEaXJlY3RpdmUsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSBcIkBuZ2JyYWNrZXQvbmd4LWxheW91dC9mbGV4XCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFJlc2V0UGFzc3dvcmREaWFsb2dSZXN1bHQgfSBmcm9tICcuLi8uLi9kZWZpbml0aW9ucyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlc2V0UGFzc3dvcmREaWFsb2dEYXRhIHtcclxuICBtb2RlOiBudW1iZXI7XHJcbiAgdXNlcklkPzogbnVtYmVyO1xyXG4gIHVzZXJFbWFpbD86IHN0cmluZztcclxuICBhcHBlYXJhbmNlPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9yZXNldC1wYXNzd29yZC1kaWFsb2cuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9yZXNldC1wYXNzd29yZC1kaWFsb2cuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIFxyXG4gICAgICAgIE1hdERpYWxvZ1RpdGxlLFxyXG4gICAgICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgRmxleE1vZHVsZSxcclxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICAgICAgUGFzc3dvcmRWYWxpZGF0b3JEaXJlY3RpdmUsXHJcbiAgICAgICAgRXF1YWxzVmFsaWRhdG9yRGlyZWN0aXZlLFxyXG4gICAgICAgIE1hdERpYWxvZ0FjdGlvbnMsXHJcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIE1hdERpYWxvZ0Nsb3NlLFxyXG4gICAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc2V0UGFzc3dvcmREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAT3V0cHV0KCkgZG9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzZXRQYXNzd29yZERpYWxvZ1Jlc3VsdD4oKTtcclxuXHJcbiAgZGF0YTogUmVzZXRQYXNzd29yZERpYWxvZ0RhdGE7XHJcbiAgaXRlbTogUmVzZXRQYXNzd29yZERpYWxvZ1Jlc3VsdCA9IHtcclxuICAgIHVzZXJJZDogbnVsbCxcclxuICAgIHVzZXJFbWFpbDogbnVsbCxcclxuICAgIG9sZFBhc3N3b3JkOiBudWxsLFxyXG4gICAgcGFzc3dvcmQ6IG51bGwsXHJcbiAgICBwYXNzd29yZDI6IG51bGxcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSAkZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxSZXNldFBhc3N3b3JkRGlhbG9nQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBfZGF0YTogUmVzZXRQYXNzd29yZERpYWxvZ0RhdGFcclxuICApIHtcclxuICAgIHRoaXMuZGF0YSA9IF9kYXRhIHx8IHsgbW9kZTogMSwgYXBwZWFyYW5jZTogJ2ZpbGwnIH07XHJcbiAgICBpZiAoIXRoaXMuZGF0YS5tb2RlKSB0aGlzLmRhdGEubW9kZSA9IDE7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLm1vZGUgPD0gMiAmJiAhdGhpcy5kYXRhLnVzZXJJZCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy4kZGlhbG9nLmVycm9yKFwiVXRlbnRlIG5vbiBzcGVjaWZpY2F0by5cIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YS5tb2RlID09PSAzICYmICF0aGlzLmRhdGEudXNlckVtYWlsKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLiRkaWFsb2cuZXJyb3IoXCJFbWFpbCB1dGVudGUgbm9uIHNwZWNpZmljYXRhLlwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pdGVtLnVzZXJFbWFpbCA9IHRoaXMuZGF0YS51c2VyRW1haWw7XHJcbiAgICAgIHRoaXMuaXRlbS51c2VySWQgPSB0aGlzLmRhdGEudXNlcklkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy4kZGlhbG9nLmVycm9yKFwiTW9kYWxpdMOgIG5vbiByaWNvbm9zY2l1dGEuXCIpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb25lXHJcbiAgICovXHJcbiAgb2soKSB7XHJcbiAgICB0aGlzLmRvbmUuZW1pdCh0aGlzLml0ZW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgYSBwYXNzd29yZFxyXG4gICAqL1xyXG4gIGdlbmVyYXRlUGFzc3dvcmQoKSB7XHJcbiAgICBsZXQgcGFzc3dvcmQgPSBTeXN0ZW1VdGlscy5nZW5lcmF0ZVBhc3N3b3JkKCk7XHJcbiAgICB0aGlzLml0ZW0ucGFzc3dvcmQgPSBwYXNzd29yZDtcclxuICAgIHRoaXMuaXRlbS5wYXNzd29yZDIgPSBwYXNzd29yZDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWluZm9cIj5cclxuICBAaWYgKGYuZm9ybS5pbnZhbGlkKSB7XHJcbjxzcGFuIGNsYXNzPVwiZGlhbG9nLWluZm8tZXJyb3JcIj5DaSBzb25vIGFuY29yYSBkZWkgY2FtcGkgb2JibGlnYXRvcmkgKCopIG5vbiBjb21waWxhdGkuPC9zcGFuPlxyXG59XHJcbiAgQGlmICghZi5mb3JtLmludmFsaWQpIHtcclxuPHNwYW4gY2xhc3M9XCJkaWFsb2ctaW5mby1va1wiPlR1dHRpIGkgY2FtcGkgb2JibGlnYXRvcmkgKCopIHNvbm8gY29tcGlsYXRpLjwvc3Bhbj5cclxufVxyXG48L2Rpdj5cclxuPGgyIG1hdC1kaWFsb2ctdGl0bGU+UmVpbXBvc3RhIHBhc3N3b3JkPC9oMj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGZvcm0gbmFtZT1cImZvcm1cIiAjZj1cIm5nRm9ybVwiIG5vdmFsaWRhdGU+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgIEBpZiAoZGF0YS5tb2RlID09PSAzKSB7XHJcbjxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFthcHBlYXJhbmNlXT1cImRhdGEuYXBwZWFyYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgPkVtYWlsIGNoZSBoYWkgc2NlbHRvIHF1YW5kbyB0aSBzZWkgcmVnaXN0cmF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnVzZXJFbWFpbFwiIG5hbWU9XCJ1c2VyRW1haWxcIiAjdXNlckVtYWlsPVwibmdNb2RlbFwiIGVtYWlsIHJlcXVpcmVkXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidFbWFpbCBjb24gY3VpIHRpIHNlaSByZWdpc3RyYXRvJ1wiPlxyXG4gICAgICAgIEBpZiAodXNlckVtYWlsLmludmFsaWQpIHtcclxuPG1hdC1lcnJvcj5FbWFpbCBub24gdmFsaWRhLjwvbWF0LWVycm9yPlxyXG59XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbn1cclxuICAgICAgQGlmIChkYXRhLm1vZGUgPiAxKSB7XHJcbjxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFthcHBlYXJhbmNlXT1cImRhdGEuYXBwZWFyYW5jZVwiID5cclxuICAgICAgICA8bWF0LWxhYmVsID5WZWNjaGlhIHBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG1hdElucHV0XHJcbiAgICAgICAgICBuYW1lPVwib2xkUHdkXCIgYXV0b2NvbXBsZXRlPVwib25cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLm9sZFBhc3N3b3JkXCIgW3JlcXVpcmVkXT1cImRhdGEubW9kZSA+IDFcIiBtYXhsZW5ndGg9XCIxNVwiICNvbGRQd2Q9XCJuZ01vZGVsXCI+XHJcbiAgICAgICAgQGlmIChvbGRQd2QuaW52YWxpZCkge1xyXG48bWF0LWVycm9yPk5vbiB2YWxpZG8uPC9tYXQtZXJyb3I+XHJcbn1cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxufVxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTAwJTsgXCIgaGludExhYmVsPVwiTWluaW1vIDggY2FyLiBjb24gMSBzaW1ib2xvIGUgMSBtYWl1c2NvbGFcIlxyXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImRhdGEuYXBwZWFyYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgPk51b3ZhIHBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG1hdElucHV0XHJcbiAgICAgICAgIG5hbWU9XCJuZXdQd2RcIiBbKG5nTW9kZWwpXT1cIml0ZW0ucGFzc3dvcmRcIlxyXG4gICAgICAgICAgcmVxdWlyZWQgcGFzc3dvcmQgbWlubGVuZ3RoPVwiOFwiIG1heGxlbmd0aD1cIjE1XCIgI25ld1B3ZD1cIm5nTW9kZWxcIj5cclxuICAgICAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIj57e25ld1B3ZC52YWx1ZT8ubGVuZ3RoIHx8IDB9fS8xNTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgQGlmIChuZXdQd2QuaW52YWxpZCkge1xyXG48bWF0LWVycm9yPk5vbiB2YWxpZG8uPC9tYXQtZXJyb3I+XHJcbn1cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgaGludExhYmVsPVwiTWluaW1vIDggY2FyLiBjb24gMSBzaW1ib2xvIGUgMSBtYWl1c2NvbGFcIlxyXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImRhdGEuYXBwZWFyYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgPkNvbmZlcm1hIG51b3ZhIHBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG1hdElucHV0XHJcbiAgICAgICAgIG5hbWU9XCJuZXdQd2QyXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5wYXNzd29yZDJcIiBbcmVxdWlyZWRdPVwiZGF0YS5tb2RlID4gMVwiIHBhc3N3b3JkIG1pbmxlbmd0aD1cIjhcIiBtYXhsZW5ndGg9XCIxNVwiXHJcbiAgICAgICAgICBbZXF1YWxzXT1cIm5ld1B3ZFwiICNuZXdQd2QyPVwibmdNb2RlbFwiPlxyXG4gICAgICAgIDxtYXQtaGludCBhbGlnbj1cImVuZFwiPnt7bmV3UHdkMi52YWx1ZT8ubGVuZ3RoIHx8IDB9fS8xNTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgQGlmIChuZXdQd2QyLmludmFsaWQpIHtcclxuPG1hdC1lcnJvcj5Ob24gdmFsaWRvLjwvbWF0LWVycm9yPlxyXG59XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgPGRpdiBmeEZsZXg9XCIzMFwiPlxyXG4gICAgICBAaWYgKGRhdGEubW9kZSA9PT0gMSkge1xyXG48YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImdlbmVyYXRlUGFzc3dvcmQoKVwiPkdFTkVSQTwvYnV0dG9uPlxyXG59XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4PVwiNzBcIiBmeExheW91dEFsaWduPVwiZW5kXCIgPlxyXG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZi5mb3JtLmludmFsaWRcIiAoY2xpY2spPVwib2soKVwiPlNBTFZBPC9idXR0b24+XHJcbiAgICAgIEBpZiAoZGF0YS5tb2RlICE9PSAzKSB7XHJcbjxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgY29sb3I9XCJwcmltYXJ5XCI+QU5OVUxMQTwvYnV0dG9uPlxyXG59XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS91aS9kaWFsb2dzL3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvZGlhbG9ncy9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLE1BQU0sRUFDTixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0ksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBNkI5RCxNQUFNLE9BQU8sNEJBQTRCO0lBcEJ6QztRQXFCWSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFFdkQsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFlBQTBDLENBQUEsQ0FBQyxDQUFDO1FBQzdELGVBQVUsR0FBNkIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEcsU0FBSSxHQUE4QjtZQUMxQyxNQUFNLEVBQUUsSUFBSTtZQUNaLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO0tBd0NIO0lBdENDLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQ3BELE9BQU87WUFDVCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQkFDMUQsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNRLEVBQUU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ08sZ0JBQWdCO1FBQ3hCLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDakMsQ0FBQzs4R0FuRFUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIseUdBbkJyQixXQUFXLENBQUMsWUFBWSxFQUFFLDhCQzFCOUMsa3pHQXFFTSxxakNEckNFLGNBQWMsK0hBQ2QsZ0JBQWdCLHdHQUNoQixXQUFXLHl0REFDWCxVQUFVLHU2RUFDVixrQkFBa0IsK2RBQ2xCLGNBQWMsMldBQ2QsMEJBQTBCLHVEQUMxQix3QkFBd0IseUVBQ3hCLGdCQUFnQiwySEFDaEIsZUFBZSw0TkFDZixjQUFjOzsyRkFHVCw0QkFBNEI7a0JBcEJ4QyxTQUFTOzJCQUNBLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxjQUdoQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ0wsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsMEJBQTBCO3dCQUMxQix3QkFBd0I7d0JBQ3hCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixjQUFjO3FCQUNqQjs4QkFHTyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBpbmplY3RcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nVGl0bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IEVxdWFsc1ZhbGlkYXRvckRpcmVjdGl2ZSwgUGFzc3dvcmRWYWxpZGF0b3JEaXJlY3RpdmUsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gXCJAbmdicmFja2V0L25neC1sYXlvdXQvZmxleFwiO1xyXG5pbXBvcnQgeyBSZXNldFBhc3N3b3JkRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkRGlhbG9nRGF0YSB7XHJcbiAgbW9kZTogbnVtYmVyO1xyXG4gIHVzZXJJZD86IG51bWJlciB8IG51bGw7XHJcbiAgdXNlckVtYWlsPzogc3RyaW5nIHwgbnVsbDtcclxuICBhcHBlYXJhbmNlPzogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vcmVzZXQtcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vcmVzZXQtcGFzc3dvcmQtZGlhbG9nLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgaW1wb3J0czogWyAgICAgICAgXHJcbiAgICAgICAgTWF0RGlhbG9nVGl0bGUsXHJcbiAgICAgICAgTWF0RGlhbG9nQ29udGVudCxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBGbGV4TW9kdWxlLFxyXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgICAgICBQYXNzd29yZFZhbGlkYXRvckRpcmVjdGl2ZSxcclxuICAgICAgICBFcXVhbHNWYWxpZGF0b3JEaXJlY3RpdmUsXHJcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzZXRQYXNzd29yZERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIGRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2V0UGFzc3dvcmREaWFsb2dSZXN1bHQ+KCk7XHJcblxyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8UmVzZXRQYXNzd29yZERpYWxvZ0NvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhIDogUmVzZXRQYXNzd29yZERpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSB8fCB7IG1vZGU6IDEsIGFwcGVhcmFuY2U6ICdmaWxsJyB9OyAgXHJcbiAgcHJvdGVjdGVkIGl0ZW06IFJlc2V0UGFzc3dvcmREaWFsb2dSZXN1bHQgPSB7XHJcbiAgICB1c2VySWQ6IG51bGwsXHJcbiAgICB1c2VyRW1haWw6IG51bGwsXHJcbiAgICBvbGRQYXNzd29yZDogbnVsbCxcclxuICAgIHBhc3N3b3JkOiBudWxsLFxyXG4gICAgcGFzc3dvcmQyOiBudWxsXHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhKSB7XHJcbiAgICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLm1vZGUpIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ0RhdGEubW9kZSA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlIDw9IDIgJiYgIXRoaXMuZGlhbG9nRGF0YS51c2VySWQpIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIlV0ZW50ZSBub24gc3BlY2lmaWNhdG8uXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZSA9PT0gMyAmJiAhdGhpcy5kaWFsb2dEYXRhLnVzZXJFbWFpbCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFwiRW1haWwgdXRlbnRlIG5vbiBzcGVjaWZpY2F0YS5cIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXRlbS51c2VyRW1haWwgPSB0aGlzLmRpYWxvZ0RhdGEudXNlckVtYWlsO1xyXG4gICAgICB0aGlzLml0ZW0udXNlcklkID0gdGhpcy5kaWFsb2dEYXRhLnVzZXJJZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIk1vZGFsaXTDoCBub24gcmljb25vc2NpdXRhLlwiKTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG9uZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCAgb2soKSB7XHJcbiAgICB0aGlzLmRvbmUuZW1pdCh0aGlzLml0ZW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgYSBwYXNzd29yZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZW5lcmF0ZVBhc3N3b3JkKCkge1xyXG4gICAgbGV0IHBhc3N3b3JkID0gU3lzdGVtVXRpbHMuZ2VuZXJhdGVQYXNzd29yZCgpO1xyXG4gICAgdGhpcy5pdGVtLnBhc3N3b3JkID0gcGFzc3dvcmQ7XHJcbiAgICB0aGlzLml0ZW0ucGFzc3dvcmQyID0gcGFzc3dvcmQ7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1pbmZvXCI+XHJcbiAgQGlmIChmLmZvcm0uaW52YWxpZCkge1xyXG4gIDxzcGFuIGNsYXNzPVwiZGlhbG9nLWluZm8tZXJyb3JcIj5DaSBzb25vIGFuY29yYSBkZWkgY2FtcGkgb2JibGlnYXRvcmkgKCopIG5vbiBjb21waWxhdGkuPC9zcGFuPlxyXG4gIH1cclxuICBAaWYgKCFmLmZvcm0uaW52YWxpZCkge1xyXG4gIDxzcGFuIGNsYXNzPVwiZGlhbG9nLWluZm8tb2tcIj5UdXR0aSBpIGNhbXBpIG9iYmxpZ2F0b3JpICgqKSBzb25vIGNvbXBpbGF0aS48L3NwYW4+XHJcbiAgfVxyXG48L2Rpdj5cclxuPGgyIG1hdC1kaWFsb2ctdGl0bGU+UmVpbXBvc3RhIHBhc3N3b3JkPC9oMj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGZvcm0gbmFtZT1cImZvcm1cIiAjZj1cIm5nRm9ybVwiIG5vdmFsaWRhdGU+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5tb2RlID09PSAzKSB7XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFthcHBlYXJhbmNlXT1cImRpYWxvZ0RhdGEuYXBwZWFyYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+RW1haWwgY2hlIGhhaSBzY2VsdG8gcXVhbmRvIHRpIHNlaSByZWdpc3RyYXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiaXRlbS51c2VyRW1haWxcIiBuYW1lPVwidXNlckVtYWlsXCIgI3VzZXJFbWFpbD1cIm5nTW9kZWxcIiBlbWFpbCByZXF1aXJlZFxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRW1haWwgY29uIGN1aSB0aSBzZWkgcmVnaXN0cmF0bydcIj5cclxuICAgICAgICBAaWYgKHVzZXJFbWFpbC5pbnZhbGlkKSB7XHJcbiAgICAgICAgPG1hdC1lcnJvcj5FbWFpbCBub24gdmFsaWRhLjwvbWF0LWVycm9yPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGRpYWxvZ0RhdGEubW9kZSA+IDEpIHtcclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5WZWNjaGlhIHBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG1hdElucHV0IG5hbWU9XCJvbGRQd2RcIiBhdXRvY29tcGxldGU9XCJvblwiIFsobmdNb2RlbCldPVwiaXRlbS5vbGRQYXNzd29yZFwiXHJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiZGlhbG9nRGF0YS5tb2RlID4gMVwiIG1heGxlbmd0aD1cIjE1XCIgI29sZFB3ZD1cIm5nTW9kZWxcIj5cclxuICAgICAgICBAaWYgKG9sZFB3ZC5pbnZhbGlkKSB7XHJcbiAgICAgICAgPG1hdC1lcnJvcj5Ob24gdmFsaWRvLjwvbWF0LWVycm9yPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgfVxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTAwJTsgXCIgaGludExhYmVsPVwiTWluaW1vIDggY2FyLiBjb24gMSBzaW1ib2xvIGUgMSBtYWl1c2NvbGFcIlxyXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImRpYWxvZ0RhdGEuYXBwZWFyYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+TnVvdmEgcGFzc3dvcmQ8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgbWF0SW5wdXQgbmFtZT1cIm5ld1B3ZFwiIFsobmdNb2RlbCldPVwiaXRlbS5wYXNzd29yZFwiIHJlcXVpcmVkIHBhc3N3b3JkIG1pbmxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMTVcIiAjbmV3UHdkPVwibmdNb2RlbFwiPlxyXG4gICAgICAgIDxtYXQtaGludCBhbGlnbj1cImVuZFwiPnt7bmV3UHdkLnZhbHVlPy5sZW5ndGggfHwgMH19LzE1PC9tYXQtaGludD5cclxuICAgICAgICBAaWYgKG5ld1B3ZC5pbnZhbGlkKSB7XHJcbiAgICAgICAgPG1hdC1lcnJvcj5Ob24gdmFsaWRvLjwvbWF0LWVycm9yPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgaGludExhYmVsPVwiTWluaW1vIDggY2FyLiBjb24gMSBzaW1ib2xvIGUgMSBtYWl1c2NvbGFcIlxyXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImRpYWxvZ0RhdGEuYXBwZWFyYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q29uZmVybWEgbnVvdmEgcGFzc3dvcmQ8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgbWF0SW5wdXQgbmFtZT1cIm5ld1B3ZDJcIiBbKG5nTW9kZWwpXT1cIml0ZW0ucGFzc3dvcmQyXCIgW3JlcXVpcmVkXT1cImRpYWxvZ0RhdGEubW9kZSA+IDFcIlxyXG4gICAgICAgICAgcGFzc3dvcmQgbWlubGVuZ3RoPVwiOFwiIG1heGxlbmd0aD1cIjE1XCIgW2VxdWFsc109XCJuZXdQd2RcIiAjbmV3UHdkMj1cIm5nTW9kZWxcIj5cclxuICAgICAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIj57e25ld1B3ZDIudmFsdWU/Lmxlbmd0aCB8fCAwfX0vMTU8L21hdC1oaW50PlxyXG4gICAgICAgIEBpZiAobmV3UHdkMi5pbnZhbGlkKSB7XHJcbiAgICAgICAgPG1hdC1lcnJvcj5Ob24gdmFsaWRvLjwvbWF0LWVycm9yPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZm9ybT5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjMwXCI+XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5tb2RlID09PSAxKSB7XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZ2VuZXJhdGVQYXNzd29yZCgpXCI+R0VORVJBPC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXg9XCI3MFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImYuZm9ybS5pbnZhbGlkXCIgKGNsaWNrKT1cIm9rKClcIj5TQUxWQTwvYnV0dG9uPlxyXG4gICAgICBAaWYgKGRpYWxvZ0RhdGEubW9kZSAhPT0gMykge1xyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwidHJ1ZVwiIGNvbG9yPVwicHJpbWFyeVwiPkFOTlVMTEE8L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, Inject, Output, EventEmitter } from '@angular/core';
1
+ import { Component, Output, EventEmitter, ChangeDetectionStrategy, inject } from '@angular/core';
2
2
  import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
3
3
  import { SystemUtils } from '@arsedizioni/ars-utils/core';
4
4
  import { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';
@@ -10,9 +10,9 @@ import * as i1 from "@ngbracket/ngx-layout/flex";
10
10
  import * as i2 from "@angular/material/icon";
11
11
  import * as i3 from "@angular/material/button";
12
12
  export class ToastComponent {
13
- constructor(_data) {
13
+ constructor() {
14
14
  this.action = new EventEmitter();
15
- this.data = _data;
15
+ this.dialogData = inject(MAT_SNACK_BAR_DATA) || {};
16
16
  }
17
17
  /**
18
18
  * Do action
@@ -20,16 +20,13 @@ export class ToastComponent {
20
20
  do() {
21
21
  this.action.emit();
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ToastComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ToastComponent, isStandalone: true, selector: "ng-component", outputs: { action: "action" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (data.icon) {\r\n<div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{data.icon}}</mat-icon>\r\n </div>\r\n}\r\n <div fxFlex='100%' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (data.message) {\r\n<span [innerHTML]=\"data.message | safeHtml\"></span>\r\n}\r\n </div>\r\n @if (data.actionCaption) {\r\n<div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-button color='accent' (click)=\"do()\" cdkFocusInitial [innerHTML]=\"data.actionCaption\"></button>\r\n </div>\r\n}\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }] }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ToastComponent, isStandalone: true, selector: "ng-component", outputs: { action: "action" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (dialogData.icon) {\r\n<div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{dialogData.icon}}</mat-icon>\r\n </div>\r\n}\r\n <div fxFlex='100%' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (dialogData.message) {\r\n<span [innerHTML]=\"dialogData.message | safeHtml\"></span>\r\n}\r\n </div>\r\n @if (dialogData.actionCaption) {\r\n<div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-button color='accent' (click)=\"do()\" cdkFocusInitial [innerHTML]=\"dialogData.actionCaption\"></button>\r\n </div>\r\n}\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ToastComponent, decorators: [{
27
27
  type: Component,
28
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, imports: [FlexModule, MatIconModule, MatButtonModule, SafeHtmlPipe], template: "<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (data.icon) {\r\n<div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{data.icon}}</mat-icon>\r\n </div>\r\n}\r\n <div fxFlex='100%' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (data.message) {\r\n<span [innerHTML]=\"data.message | safeHtml\"></span>\r\n}\r\n </div>\r\n @if (data.actionCaption) {\r\n<div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-button color='accent' (click)=\"do()\" cdkFocusInitial [innerHTML]=\"data.actionCaption\"></button>\r\n </div>\r\n}\r\n</div>\r\n" }]
29
- }], ctorParameters: () => [{ type: undefined, decorators: [{
30
- type: Inject,
31
- args: [MAT_SNACK_BAR_DATA]
32
- }] }], propDecorators: { action: [{
28
+ args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FlexModule, MatIconModule, MatButtonModule, SafeHtmlPipe], template: "<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (dialogData.icon) {\r\n<div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{dialogData.icon}}</mat-icon>\r\n </div>\r\n}\r\n <div fxFlex='100%' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (dialogData.message) {\r\n<span [innerHTML]=\"dialogData.message | safeHtml\"></span>\r\n}\r\n </div>\r\n @if (dialogData.actionCaption) {\r\n<div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-button color='accent' (click)=\"do()\" cdkFocusInitial [innerHTML]=\"dialogData.actionCaption\"></button>\r\n </div>\r\n}\r\n</div>\r\n" }]
29
+ }], propDecorators: { action: [{
33
30
  type: Output
34
31
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpL3VpL2RpYWxvZ3MvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpL3VpL2RpYWxvZ3MvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQWV4RCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUF3QyxLQUFnQjtRQUo5QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUsxQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBR0Q7O09BRUc7SUFDSCxFQUFFO1FBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQWZVLGNBQWMsa0JBS0wsa0JBQWtCO2tHQUwzQixjQUFjLDZHQU5QLFdBQVcsQ0FBQyxZQUFZLEVBQUUsOEJDZjlDLGluQkFpQkEseURERWMsVUFBVSx3OEZBQUcsYUFBYSxtTEFBRSxlQUFlLHVOQUFFLFlBQVk7OzJGQUUxRCxjQUFjO2tCQVAxQixTQUFTOzJCQUNBLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxjQUdoQyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUcsYUFBYSxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUM7OzBCQU96RCxNQUFNOzJCQUFDLGtCQUFrQjt5Q0FKNUIsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9TTkFDS19CQVJfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgU2FmZUh0bWxQaXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUb2FzdERhdGEge1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGFjdGlvbkNhcHRpb24/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9hc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbRmxleE1vZHVsZSwgIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgU2FmZUh0bWxQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9hc3RDb21wb25lbnQgIHtcclxuICBAT3V0cHV0KCkgYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBkYXRhOiBUb2FzdERhdGE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX1NOQUNLX0JBUl9EQVRBKSBfZGF0YTogVG9hc3REYXRhKSB7XHJcbiAgICB0aGlzLmRhdGEgPSBfZGF0YTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEbyBhY3Rpb25cclxuICAgKi9cclxuICBkbygpIHtcclxuICAgIHRoaXMuYWN0aW9uLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxyXG4gIEBpZiAoZGF0YS5pY29uKSB7XHJcbjxkaXYgZnhGbGV4PSczMHB4JyBmeExheW91dEFsaWduPVwic3RhcnRcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgPG1hdC1pY29uPnt7ZGF0YS5pY29ufX08L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG59XHJcbiAgPGRpdiBmeEZsZXg9JzEwMCUnIGZ4TGF5b3V0QWxpZ249XCJzdGFydFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICBAaWYgKGRhdGEubWVzc2FnZSkge1xyXG48c3BhbiBbaW5uZXJIVE1MXT1cImRhdGEubWVzc2FnZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG59XHJcbiAgPC9kaXY+XHJcbiAgQGlmIChkYXRhLmFjdGlvbkNhcHRpb24pIHtcclxuPGRpdiAgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPSdhY2NlbnQnIChjbGljayk9XCJkbygpXCIgIGNka0ZvY3VzSW5pdGlhbCBbaW5uZXJIVE1MXT1cImRhdGEuYWN0aW9uQ2FwdGlvblwiPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG59XHJcbjwvZGl2PlxyXG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpL3VpL2RpYWxvZ3MvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpL3VpL2RpYWxvZ3MvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQWdCeEQsTUFBTSxPQUFPLGNBQWM7SUFSM0I7UUFTWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsQyxlQUFVLEdBQWUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0tBU3JFO0lBTkM7O09BRUc7SUFDTyxFQUFFO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQVhVLGNBQWM7a0dBQWQsY0FBYyw2R0FQUCxXQUFXLENBQUMsWUFBWSxFQUFFLDhCQ2Y5QyxxcEJBaUJBLHlEREdjLFVBQVUsdzhGQUFHLGFBQWEsbUxBQUUsZUFBZSx1TkFBRSxZQUFZOzsyRkFFMUQsY0FBYztrQkFSMUIsU0FBUzsyQkFDQSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsY0FHaEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsVUFBVSxFQUFHLGFBQWEsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDOzhCQUc1RCxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9TTkFDS19CQVJfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgU2FmZUh0bWxQaXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUb2FzdERhdGEge1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcclxuICBhY3Rpb25DYXB0aW9uPzogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b2FzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90b2FzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgaW1wb3J0czogW0ZsZXhNb2R1bGUsICBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIFNhZmVIdG1sUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50ICB7XHJcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGEgOiBUb2FzdERhdGEgPSBpbmplY3QoTUFUX1NOQUNLX0JBUl9EQVRBKSB8fCB7fTsgXHJcblxyXG5cclxuICAvKipcclxuICAgKiBEbyBhY3Rpb25cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG8oKSB7XHJcbiAgICB0aGlzLmFjdGlvbi5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cclxuICBAaWYgKGRpYWxvZ0RhdGEuaWNvbikge1xyXG48ZGl2IGZ4RmxleD0nMzBweCcgZnhMYXlvdXRBbGlnbj1cInN0YXJ0XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgIDxtYXQtaWNvbj57e2RpYWxvZ0RhdGEuaWNvbn19PC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxufVxyXG4gIDxkaXYgZnhGbGV4PScxMDAlJyBmeExheW91dEFsaWduPVwic3RhcnRcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgQGlmIChkaWFsb2dEYXRhLm1lc3NhZ2UpIHtcclxuPHNwYW4gW2lubmVySFRNTF09XCJkaWFsb2dEYXRhLm1lc3NhZ2UgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxufVxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoZGlhbG9nRGF0YS5hY3Rpb25DYXB0aW9uKSB7XHJcbjxkaXYgIGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj0nYWNjZW50JyAoY2xpY2spPVwiZG8oKVwiICBjZGtGb2N1c0luaXRpYWwgW2lubmVySFRNTF09XCJkaWFsb2dEYXRhLmFjdGlvbkNhcHRpb25cIj48L2J1dHRvbj5cclxuICA8L2Rpdj5cclxufVxyXG48L2Rpdj5cclxuIl19